Introduzione agli algoritmi genetici
di Pino Navato
 

Molti problemi computazionali riguardano la ricerca di una soluzione tra un numero enorme di possibili alternative, tante che non è proponibile l'idea di valutarle una per una. Alcuni ricercatori hanno osservato che l'evoluzione biologica può essere un'ottima fonte d'ispirazione per chi si propone di risolvere questo genere di problemi. L'evoluzione, infatti, può essere vista come un metodo di ricerca in un insieme di innumerevoli soluzioni possibili: le soluzioni candidate sono tutte le possibili sequenze genetiche mentre le soluzioni desiderate sono quelle sequenze che danno luogo ad organismi particolarmente adatti al loro ambiente cioè organismi con una forte capacità di sopravvivere e di riprodursi.
Ma cos'è, dunque, un algoritmo genetico? Non esiste una definizione rigorosa, accettata da tutta la comunità scientifica, tuttavia possiamo dire che un AG è un algoritmo che genera la soluzione di un problema facendo evolvere (in senso genetico) un insieme di soluzioni candidate scelte casualmente. Vediamo di chiarire meglio questo concetto. La prima cosa da fare per implementare un AG è quella di trovare una codifica in grado di rappresentare tutte le possibili soluzioni sotto forma di una stringa di bit o di simboli con cardinalità maggiore di 2. Ciascuna stringa viene chiamata cromosoma ed è rappresentativa di un "individuo" (dotato, appunto, di un solo cromosoma). Due individui possono accoppiarsi per creare dei discendenti il cui cromosoma deriva da un incrocio dei cromosomi dei genitori. Sono stati proposti diversi tipi di incrocio ma il più comune è quello a punto singolo: i cromosomi dei due genitori vengono spezzati entrambi in uno stesso punto, scelto a caso, e poi il primo pezzo del primo cromosoma viene collegato al secondo pezzo del secondo, e lo stesso viene fatto con i due pezzi rimanenti. Si ottengono così due nuovi individui, entrambi in possesso di una parte del cromosoma di ciascun genitore. In un AG questo procedimento di incrocio viene ripetuto per parecchie generazioni a partire da una popolazione di parecchi individui, generata casualmente. Ad ogni generazione viene applicata una sorta di selezione naturale: mediante una funzione assegnata, dipendente dal problema, viene valutata l'idoneità di ciascun individuo. In pratica la funzione accetta in input un cromosoma e produce un numero che è un indice della bontà della soluzione rappresentata (o meglio, codificata) da quel cromosoma. A questo punto l'algoritmo consente a ciascun individuo di riprodursi con una probabilità che è funzione crescente della sua idoneità (alcune implementazioni, in particolare, prevedono che gli individui meno idonei vengano soppressi prima che possano riprodursi). Oltre agli operatori di selezione e di incrocio fin qui descritti è previsto anche un operatore di mutazione che, con una probabilità assegnata, di solito molto bassa (ad esempio 0.001), può alterare uno dei geni (vale a dire uno dei bit) di un cromosoma. La mutazione non deve essere vista come una cosa necessariamente negativa ma come una chance offerta all'evoluzione per esplorare nuove strade. Con questo il panorama è completo.
Probabilmente adesso starete pensando che da questo continuo rimescolamento di pezzi di cromosoma non possa mai uscire nulla di buono, eppure in numerosi esperimenti si è visto che, dopo alcune centinaia di generazioni, nella popolazione risultante erano presenti individui con altissima idoneità, ovvero ottime soluzioni del problema posto; e questo, si badi, nonostante che l'algoritmo avesse valutato l'idoneità di un numero relativamente irrisorio di soluzioni candidate!

La copertina del libroSe questo risultato vi affascina e volete sapere qualcosa di più sugli AG, la loro teoria e le ricerche più interessanti svolte finora, vi consiglio l'ottimo libro di Melanie Mitchell Introduzione agli algoritmi genetici.
Il primo capitolo del libro presenta gli AG e la loro terminologia e poi passa subito a proporre due interessanti esempi applicativi. Il primo di questi, in particolare, riguarda l'evoluzione di strategie cooperative per il famoso Dilemma dei Prigionieri (se non ne avete mai sentito parlare, niente paura: Mitchell vi spiega in maniera chiara e semplice di cosa si tratta prima di descrivervi l'esperimento di R. Axelrod, della University of Michigan, che fa uso di un AG). Il secondo capitolo propone altri esempi di uso degli AG, questa volta per la risoluzione di problemi tecnologici (predizione di sistemi dinamici, predizione della struttura tridimensionale di una proteina a partire dalla sequenza di amminoacidi che la compongono, progettazione di reti neurali, ed altro ancora). Gli AG sono stati usati anche per far luce sui meccanismi dell'evoluzione naturale per mezzo di modelli computazionali; in pratica l'informatica, dopo aver tratto ispirazione dalla biologia evolutiva per l'ideazione degli AG, le ha subito restituito il favore. Il terzo capitolo di questo libro si occupa proprio degli AG come modelli semplificati dell'evoluzione naturale proponendo, tra l'altro, un modello per lo studio dell'interazione tra apprendimento ed evoluzione. Dopo i numerosi esempi pratici, il quarto capitolo si occupa dei fondamenti teorici degli AG. Qui la lettura, per forza di cose, si fa più impegnativa ma rimane abbordabile. Il quinto capitolo passa in rassegna i problemi connessi all'implementazione di un AG, a cominciare da quello della codifica delle soluzioni candidate (di importanza fondamentale) e senza mancare di chiedersi in quali circostanze è opportuno l'uso degli AG. L'ultimo capitolo, molto breve, riassume i concetti esposti e gli indirizzi futuri della ricerca.
Il pregio maggiore di questo libro è sicuramente quello di aprire orizzonti nuovi nella mente del lettore prospettandogli una tecnica risolutiva per problemi complessi che difficilmente avrebbe potuto immaginare. Da apprezzare il fatto che i numerosi esempi d'uso degli AG precedano il capitolo dedicato alla teoria così che il lettore possa avere subito un'idea ben precisa di cosa siano gli AG e di quali tipi di problemi possano risolvere. La varietà degli esempi proposti evidenzia la natura interdisciplinare della ricerca sugli AG. L'autrice, certa che ben pochi hanno una cultura scientifica altrettanto interdisciplinare, non manca di fornire tutte le spiegazioni di base per la comprensione di questi casi di studio: quello delle reti neurali, per citarne uno, è preceduto da una breve spiegazione su cosa siano le reti neurali e di come possano essere progettate senza ricorrere agli AG. Gli esempi proposti riguardano ricerche effettuate sia dall'autrice che da altre persone e sono tutti corredati di precisi riferimenti bibliografici affinché il lettore possa approfondire quelli che ritiene più interessanti. Da notare che Melanie Mitchell, nonostante la sua giovane età, è Research Professor e direttore dell'Adaptive Computation Program al Santa Fe Institute ed ha avuto occasione di collaborare a più riprese con John Holland, il "padre" degli AG. Il libro è stato scritto con la passione e la competenza di un ricercatore ma usa la prosa semplice ed amichevole propria di un divulgatore e può essere letto da chiunque possieda una cultura scientifica di tipo universitario. Nel campo degli AG le domande senza risposta sono tuttora molto più numerose delle certezze e l'autrice non manca di farlo notare più volte proponendo esplicitamente queste domande per evidenziare le strade ancora inesplorate. In effetti il libro non si propone solo di diffondere la conoscenza e l'uso degli AG ma è stato scritto anche con la speranza, più ambiziosa, di guadagnare nuove menti alla ricerca e per questo si conclude con un'esortazione:

Ci sono molti problemi aperti, e c'è molto lavoro importante da svolgere. Lettori, datevi da fare!

 

Scheda del prodotto
 Titolo:
 Autore:
 Editore:
 Formato:
 Pagine:
 Prezzo:
 ISBN:
Introduzione agli algoritmi genetici
Melanie Mitchell
Apogeo
17x24 cm
240
40.000 lire  (20,66 euro)
88-7303-500-0