Home    About me    Publications    Blog    Undergrad memories

Fabio Ruini’s blog

Because Italians do it better! What the f**k? Ehm… the blogs, I mean… obviously! :-/

Born to Kill

E porca puttana. Era poi anche ora. I miei aeroplanini sono diventati grandi. E ora riescono a volare. Di più. Raggiungono il target e lo fanno saltare allegramente per aria. Senza tanti complimenti e con una facilità sconcertante. Ancora una volta, l’errore che mi ha fatto dannare l’anima dallo scorso inizio d’agosto era un qualcosa di stupido, che più stupido non si potrebbe. Dimenticavo di aggiornare l’hidden layer delle mie reti neurali. E così il comportamento dei MAV era sempre lo stesso, dall’inizio alla fine dei vari test. In un attimo imparavano a farsi detonare non appena iniziato il test, perchè questa era l’unica cosa sensata da fare. E gli aeroplanini così adattati si riproducevano e colonizzavano la popolazione, in quanto l’alternativa era schiantarsi contro i bordi dell’ambiente e ricevere per questo una punizione in termini di fitness. Ma ora tutti questi sono soltanto brutti ricordi. Finalmente, i miei maledetti cosi volanti sono diventati dei killer. Nati.

Born to kill

La condizione sperimentale è una delle più semplici possibili: scenario sgombro da ostacoli e target che, durante ogni test, è posizionato in un diverso punto dello spazio. I MAV, che come amebe di parisiana memoria percepiscono il bersaglio in termini di angolo (fico, tra l’altro, come alla fine ho implementato la codifica…) e distanza, partono dai quattro angoli dell’ambiente, rivolti più o meno casualmente verso il centro dello stesso. L’output della loro rete neurale è costituito da due neuroni: uno booleano legato alla detonazione (0: nessun effetto, 1: saltiamo allegramente per aria) ed uno continuo dedicato allo sterzo (valori compresi tra -1 a +1, corrispondenti rispettivamente ad una sterzata di 10° a sinistra e di 10° a destra). Lo strato intermedio è formato da 10 neuroni con funzione di attivazione tan-sigmoidale (estremi -1.0 e +1.0, slope 1.0). Pesi delle connessioni e biases (questi ultimi solo per lo strato intermedio e quello di output) sono soggetti a mutazione puntuale nel passaggio da una generazione all’altra (probabilità 0.25, mutazione random tra -1.0 e +1.0). Infine, è utilizzato un operatore di elitismo per salvaguardare lo stormo con fitness più alta.

Ecco un po’ di grafici che testimoniano l’evento. Tutti i dati, ovviamente, sono medie per i 100 stormi posti sotto evoluzione.

Distanza media e minima dal punto dell’esplosione a quello in cui si trova il target:

Distanza media e minima tra il target ed il MAV detonato più vicino

Percentuale complessiva di test che si concludono con l’eliminazione del target:

Percentuale di test conclusi con l’eliminazione del target

Fitness media e massima (date semplicemente dall’inverso della distanza media e minima):

Fitness media e massima

Autonomia media rimasta al MAV di uno stormo ad esplodere più vicino (o distruggere) il target:

Autonomia rimasta ai MAV esploso più vicino al target in ogni stormo

Condizione dei MAV a fine simulazione:

Condizione dei MAV a fine simulazioni

Commenti

  1. Mari
    settembre 24th, 2007 | 20:00

    Evvivaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!!!!!!!!!!(born to kill è un pò inquietante, però). Sono contenta per te!!! Bravo!!

  2. v.m.
    settembre 24th, 2007 | 20:06

    :-) smack

  3. settembre 24th, 2007 | 20:51

    Grazie mille a entrambe… :-)

Lascia un commento