Loading...

Survival or Evolution, what’s the goal?

Survival or Evolution, what’s the goal?

Survival or Evolution, what’s the goal?

“Manuale sulle reti neurali” is the first book I ever read on Genetic Algorithms. You can find below some initial thoughts, in Italian, which I wrote when I started my PhD in January 2007. For the English reader, my point was simple: designing with GAs implies the definition of ‘good’ genotypes to be able to get ‘good’ phenotypes as a result of the optimisation process. Architects need to focus on the parametric definition of a problem and the formulation of performance criteria. Running the GA and interpreting results is not as crucial as this, in terms of conceptual design. I am aware this might sound obvious to many readers now, but it wasn’t to me back in 2007.

L’utilizzo di tecniche evolutive è sempre più utilizzato anche nell’architettura per la generazione e soprattutto per l’ottimizzazione di forme, appunto per migliorare le prestazioni estetiche, strutturali e fisico-tecniche di elementi architettonici, come coperture e involucri in base allo specifico requisito progettuale del singolo caso. L’evoluzione naturale è il punto di partenza indispensabile per lo sviluppo di questi strumenti che migliorano e quindi ottimizzano la performance delle forme. Ma è allo stesso tempo una tecnica che differisce dalla sua simulazione al calcolatore per finalità e obiettivi. Mentre in natura l’istinto riproduttivo di una specie permette al suo codice genetico distintivo (genotipo) di trasmettersi di generazione in generazione, con obiettivo la sopravvivenza degli individui (fenotipi), o meglio ancora del loro codice genetico, nell’evoluzione simulata ogni ciclo generazionale (nuova popolazione) mira al miglioramento delle caratteristiche degli individui (in pratica le forme), disinteressandosi totalmente dell’aspetto legato alla sopravvivenza. In pratica, la compilazione di una tecnica evolutiva (algoritmo genetico) ha il fine di migliorare la performance di un individuo in base ad una specifica funzione di fitness (modalità di valutazione). Il programmatore sarà quindi completamente disinteressato al funzionamento del meccanismo evolutivo in sé nella sua scrittura, e si fisserà invece sui risultati che esso produce, agendo in particolare sulla sua efficienza. Ecco quindi che a partire dagli anni ’80, l’approfondimento di queste tematiche (soprattutto tra i biologi) è avvenuto proprio su quegli aspetti che permettono di raggiungere buoni risultati ed elevate efficienze. Tra i vari personaggi coinvolti in queste ricerche, cito Floreano e Mattiussi consigliando la lettura del loro testo sulle reti neurali (vedi Bibliografia). Di seguito ne riporto una breve descrizione critica, focalizzata al capitolo 6, che tratta nello specifico gli algoritmi genetici. Questo per introdurre le problematiche con le quali si scontra un programmatore di fronte alla compilazione di un codice (algoritmo genetico detto anche semplicemente script) volto all’ottimizzazione.

DARIO FLOREANO, CLAUDIO MATTIUSSI, Manuale sulle reti neurali
La compilazione di algoritmi genetici pone il programmatore di fronte a delle scelte di carattere genetico, perché bisogna definire i cromosomi degli organismi che si vuole evolvere, e di carattere prestazionale, in quanto bisogna valutare le caratteristiche di ogni individuo secondo dei parametri, per capire quanto questo merita di proseguire il ciclo evolutivo. Nella natura, questa fase evolutiva che si identifica col nome di sopravvivenza può essere costruita in base all’esigenza del caso nella simulazione, in modo da selezionare e far progredire organismi che rispondano a certe caratteristiche piuttosto che altre.
La vera difficoltà del processo nasce dal fatto che un buon codice genetico (genotipo) può essere verificato solo dagli effetti che produrrà nell’arco della sua vita il relativo organismo (fenotipo). Quindi la sopravvivenza (o nella simulazione ‘funzione di fitness’) verifica le prestazioni del genotipo in base al comportamento del fenotipo. Non è quindi istintivo e semplice definire, soprattutto in architettura, un genotipo e poi costruire una funzione che sottoponga a verifica le prestazioni dell’organismo derivante da esso.
Un altro momento chiave del processo evolutivo è il metodo che si adotta per l’evoluzione nelle successive generazioni di organismi. E’ logico che nella simulazione non si deve considerare la parte di realtà che porta alcune specie all’estinzione o alla stasi evolutiva per somiglianza degli individui (deriva genetica). Qui si vuole invece sempre ottenere degli individui che abbiano prestazioni crescenti generazione dopo generazione, altrimenti perde di significato l’utilizzo di algoritmi genetici (o strategie evolutive) per risolvere dei problemi concreti.
Negli anni le tecniche sperimentate per ottenere risultati soddisfacenti, anche nel minor numero possibile di generazioni, sono state molteplici. Si parte da una strategia ‘elitista”, nella quale l’individuo migliore di ogni generazione viene mantenuto tale e quale nella successiva onde evitare la possibilità di peggiorare, si passa da strategie ‘mutative’, che privilegiano il parametro della mutazione genetica anziché l’accoppiamento tra geni prestanti, e poi strategie di riproduzione ‘a regime costante’, le quali non accoppiano i diversi geni migliori tra loro ma sostituiscono solamente i peggiori con altri nuovi generati casualmente. Nel passaggio generazionale i diversi modi per facilitare il progresso genetico di una specie vanno considerati in riferimento ad un caso concreto, in modo da poter meglio scegliere quelli più adatti al problema del momento. I parametri su cui agire sono in sostanza: i cromosomi del gene, la funzione di fitness, numero di organismi, scelta degli organismi per la generazione successiva (metodi probabilistici, ruote della fortuna, ecc), metodi riproduttivi (accoppiamento con crossover, mutazioni, ecc).
Tecniche di questo tipo analizzano un campione veramente ampio di possibilità di soluzione al problema quindi è facile che lascino morire progressi verso massimi relativi (in una funzione ad esempio) per tendere nel tempo alla ricerca del massimo assoluto.

Reti-neurali-Cover-727×1024

Riferimenti e approfondimenti:

Home page di Floreano: http://lis.epfl.ch/member.php?SCIPER=111729

Tecniche di fitness per evitare fallimenti evolutivi: Baker, 1987, Goldberg, Deb, 1991

Strategie evolutive basate sulla mutazione: Rachenberg, 1973