Intelligenza e natura
La natura ha sviluppato tecniche intelligenti
per risolvere problemi di vario tipo. Per esempio, l'adattamento alle
variazioni ambientali, la difesa dell'organismo mediante il sistema
immunitario, la coordinazione tra insetti sociali (le termiti
costruiscono termitai senza un progetto, le formiche muovono oggetti
grandi senza un coordinatore, ecc.). Tra i principali sistemi a metafora naturale vi sono
Algoritmi Genetici e
Swarm Intelligence. Gli algoritmi genetici (e la computazione evolutiva in generale) traggono ispirazione dalla teoria dell'evoluzione naturale. Il principio fondamentale è che gli individui più adatti all'ambiente (con maggiore fitness) vivono più a lungo e hanno una prole più numerosa, quindi nel tempo gli individui con le loro caratteristiche saranno sempre più numerosi. Semplificando, si può dire che il meccanismo evolutivo permette di generare gli individui che meglio possono vivere in un particolare ambiente. Gli individui con più alta fitness si accoppiano e il loro patrimonio genetico viene ricombinato (crossover) e trasmesso alla prole con piccole variazioni casuali (mutazione). In questo modo le caratteristiche positive degli individui sono combinate, ma introducendo anche limitati elementi di novità nel patrimonio genetico. Un modello molto
semplice di questo processo può essere simulato mediante programmi per
computer che realizzano una forma di "apprendimento e ottimizzazione".
Gli individui rappresentano possibili soluzioni per il problema che
vogliamo risolvere. Per esempio, supponiamo di voler risolvere il problema del commesso viaggiatore:
dato un insieme di città, trovare il percorso a lunghezza minima che
parte da una città, visita tutte le città una e una sola volta e
ritorna alla città di partenza. In questo caso, una soluzione potrebbe
essere rappresentata dalla sequenza delle città. Quanto più una
soluzione ha lunghezza minore, tanto più essa è buona; quindi, la
fitness di una soluzione sarà data, per esempio, dall'inverso della sua
lunghezza. I primi esempi di algoritmi genetici sono stati sviluppati da John Holland negli anni '70. Si trattava principalmente del cosiddetto algoritmo genetico semplice. Sono poi state sviluppate numerose varianti, tra le quali una di particolare interesse è la programmazione genetica, nella quale si fanno evolvere programmi (per esempio, per coordinare una squadra di calcio di robot). La computazione evolutiva è applicata in vari settori, per esempio in robotica, nella progettazione circuitale, in problemi di ottimizzazione industriali, nell'analisi dei segnali e nella previsione finanziaria. Per saperne di più: "Chi è a governare? Chi è che dà ordini, che immagina cosa accadrà in futuro, elabora piani e mantiene l'equilibrio?
Così scrive il poeta belga Maurice Maeterlinck in riferimento al
comportamento coordinato di insetti come api, vespe, termiti e
formiche. Ogni insetto sembra comportarsi secondo un piano prestabilito
in modo che il sistema, nel suo complesso, abbia un comportamento
organizzato e finalizzato al raggiungimento di obiettivi (per esempio,
la costruzione di un termitaio). L'aspetto interessante di questi
sistemi biologici è che questi comportamenti nascono (emergono) autonomamente, senza la presenza di un coordinatore/supervisore.
Lo studio di modelli di questi sistemi porta allo sviluppo di algoritmi che appartengono alla classe chiamata swarm intelligence
("sciami intelligenti"). Questi algoritmi sono utilizzati per risolvere
problemi di ottimizzazione, di analisi di dati ed estrazione di
informazioni e sono usati in robotica per coordinare i robot. Formiche reali e artificiali Un tipico esempio di applicazioni di swarm intelligence è costituito dagli algoritmi a "formiche artificiali", cioè algoritmi sviluppati a partire da un modello del comportamento delle formiche in natura (il modello è semplificato e adattato alle esigenze del problema da risolvere). Le formiche
sono, infatti, capaci di trovare il percorso più breve tra il formicaio
e un punto del terreno in cui vi sia del cibo. L'aspetto interessante e
curioso è che sono in grado di farlo senza informazioni visive (le
formiche di molte specie sono infatti cieche), ma utilizzando segnali
"odorosi". Quando una formica ha trovato del cibo, ritorna al formicaio
depositando sul terreno una certa quantità di una sostanza chimica
detta feromone. La direzione del cammino di una formica dipende
dalla quantità di feromone che essa percepisce: dove la concentrazione
è più forte, è più probabile che la formica si diriga. Nel tempo le
tracce di feromone sul terreno evaporano ed, eventualmente, sono
rinforzate dal passaggio di altre formiche. Ora entra in gioco un
meccanismo molto importante chiamato retroazione positiva: più
formiche scelgono un percorso, più forte sarà la concentrazione di
feromone e quindi ancora più formiche saranno richiamate sullo stesso
percorso. Perciò, dopo una prima fase di transitorio in cui le formiche
scelgono direzioni diverse, si arriva ad una situazione stazionaria in
cui la maggior parte delle formiche segue uno stesso percorso. Siccome
il feromone evapora nel tempo, il percorso più breve sarà quello scelto
alla fine dal "sistema formiche". E' possibile
progettare algoritmi che, simulando il comportamento delle formiche
reali, risolvono problemi di ottimizzazione, come il problema del
commesso viaggiatore. Questi algoritmi sono chiamati
ant algorithms.
Come esempio, si provi l'applet riportato di seguito che mostra come un
ant algorithm risolva il problema del commesso viaggiatore. Applet del commesso viaggiatore.
Per saperne di più: |