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!
Se
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
|
|