15 maggio 2009
Island Models e PaGMO
Quello delle “Island Models” e’ una sorta (dico “una sorta” perche’ non saprei esattamente come definirlo) di paradigma applicato agli algoritmi evolutivi che prende spunto da quelle che in biologia vengono definite “nicchie ecologiche“. Le nicchie, molto brutalmente, sono aree geografiche che impongono vincoli di carattere riproduttivo alle specie che le abitano, rendendo possibile nel lungo periodo l’emergere di una differenziazione genica. Esempi classici di nicchie sono ovviamente le isole.

L’aspetto interessante e’ lo studio di quanto succede nel momento in cui due specie derivanti dallo stesso “ceppo” ma sviluppatesi in nicchie diverse vengono a contatto tra loro. I processi che ne possono scaturire sono di vario tipo: colonizzazione, estinzione, prosequio dell’evoluzione con un brusco sbalzo (il che richiama la teoria di Gould sugli equilibri punteggiati).
L’idea alla base degli “Island EAs” e’ quella di ottimizzare un algoritmo evolutivo “tradizionale” cercando di replicare il fenomeno sopra descritto. Il concetto e’ molto semplice. Innanzitutto si divide una singola popolazione di numerosita’ N in S isole (o sottopopolazioni) ciascuna di una dimensione n minore di N (tale ovviamente che la somma dei singoli n sia uguale ad N). Ciascuna di queste sottopopolazioni viene evoluta indipendentemente dalle altre tramite un algoritmo evolutivo. Di tanto in tanto, pero’, le isole inviano e ricevono individui a/da altre isole. Le modalita’ per questi scambi possono essere le piu’ svariate, sia per quanto riguarda i collegamenti tra le isole, sia per quanto concerne quando lo scambio debba avere luogo. Varie ricerche effettuate negli ultimi anni, nonostante un quadro teorico di riferimento sia ancora mancante, hanno dimostrato come gli Island EAs permettano di esplorare meglio rispetto ad un algoritmo evolutivo tradizionale lo spazio delle soluzioni, limitando la stagnazione della/e popolazione/soluzioni grazie ad una maggior capacita’ di mantenere un alto livello di diversita’.
Ad ogni modo, se volete leggere qualcosa di piu’ dettagliato a riguardo, qui di seguito potete scaricare abusivamente due capitoli che trattano l’argomento inclusi nel libro di Marco Tomassini, dell’Universita’ di Losanna, dal titolo Spatially Structured Evolutionary Algorithms: Artificial Evolution in Space and Time.
Tra le varie soluzioni quasi-pronte all’uso per implementare un GA isolano, segnalo PaGMO (http://repo.or.cz/w/PaGMO.git), un framework sviluppato dai ragazzi dell’Advanced Concepts Team (ACT) dell’ESA. Documentazione assolutamente nulla, come regolarmente accade in via di sviluppo, ma un bel file di esempio che mostra come sia relativamente semplice scrivere del codice (anche multi-threading, grazie all’apporto fornito dalle librerie Boost) in grado di implementare il succitato paradigma.
Chiudo il post rimanendo sempre in tema di computer, ma saltando di palo in frasca. Gli utenti Apple sapranno che in questi giorni e’ stato rilasciato il tanto atteso update di Mac OS X alla versione 10.5.7. L’installazione sulle mie macchine client (il MacBook Air personale ed il Mac Pro che uso in ufficio) e’ andata alla perfezione. Altro non si puo’ dire invece per quanto riguarda l’upgrade effettuato sugli Xserve di P-ARTS, che mi hanno fatto letteralmente dannare l’anima. Dopo un pomeriggio passato ad imprecare, riavviare, aggiustare e ricreare account (compresi quelli di amministratore, andati dispersi durante l’update) tutte le macchine sono di nuovo in piedi. Con tanto di DokuWiki installato sul nodo principale, adibito all’occorrenza a web server. Ma se anche voi state valutando di aggiornare qualche Mac OS X Server, assicuratevi di avere un backup molto recente a disposizione. E poi, se posso darvi un consiglio, aspettate comunque qualche settimana prima di farlo…
Comments(4)


Riguardo PaGMO, la nuova versione e’ ben documentata. Lo sviluppo e’passato su sourceforge http://sourceforge.net/projects/pagmo/
Ciao Dario. Ho visto ora il link al Wiki. Ma e’ tutta qui la documentazione o mi sto perdendo qualcosa?
Fabio, abbiamo sia il doxygen su http://pagmo.sourceforge.net/doc/index.html che i tutorial python e c++ sul wiki…… so che non é molto ma migliorerá
Il progetto é attivo e stiamo proprio ora lavorando sull’integrazioni di problemi di robotica evolutiva (tipo i tuoi MAV) usando le isole di pagmo
Ciao Dario. In effetti mi ero perso il Doxygen, che non sara’ il top ma in effetti aiuta. I tutorial, si’, sono ancora quel che sono, ma ho fiducia in voi…