15 marzo 2010
Incremental evolution
Negli ultimi giorni ho lavorato in maniera abbastanza intensa sul codice del mio simulatore di MAVs, con l’intento di implementare una forma, seppur basilare, di evoluzione incrementale per i diversi scenari studiati finora con il modello 3D. La necessita’ nasce dal fatto che ancora faticano ad evolvere comportamenti di navigazione cooperativa all’interno di un’ambiente tridimensionale, con i MAVs dotati della possibilita’ di ruotare su tutte e tre le loro assi (yaw, pitch e roll).
Finalmente sono riuscito a rendere il mio codice funzionante. I grafici che trovate qui sotto mostrano le differenze in termini di performance tra una popolazione evoluta da zero (primo grafico) ed una invece gia’ evoluta (secondo grafico) nello scenario di base (navigazione 3D in un ambiente sgombro di ostacoli per il raggiungimento di un’area target statica), entrambe alle prese con un task cooperativo (ancora target statico ed ambiente privo di ostruzioni, ma necessita’ di raggiungere il target con almeno due MAVs contemporaneamente).


Come si puo’ vedere (e come, d’altronde, era facilmente intuibile), la seconda popolazione parte da subito su ottimi livelli di fitness, nonostante vi sia anche una differenza architetturale tra le reti neurali all’opera nei due setup. Nel nuovo scenario, infatti, i MAVs hanno alcuni neuroni di input aggiuntivi rispetto a quello di base, con le conseguenti connessioni che vengono impostate a zero nel momento in cui l’evoluzione incrementale prende le mosse.
Come di consueto, vi lascio con qualche lettura sull’argomento. Si tratta di tre articoli ben fatti e che, sebbene non siano tarati sull’approccio che ho seguito io, possono comunque risultare interessanti da addocchiare.


