ricerca

[NSFW] Evolvi una macchina

Su Oggiscienza è da un po’ che nominiamo gli algoritmi genetici, cioè l’approccio darwiniano alla programmazione. Ecco una semplice dimostrazione della loro efficacia.

È poco più di un gioco, ma per vedere gli algoritmi genetici all’opera BoxCar2D è perfetto. In questo gioco scritto in flash gli algoritmi genetici devono cercare di evolvere dei veicoli bidimensionli. Tutto quello che hanno disposizione sono ruote, poligoni e ammortizzatori.

Si parte con una popolazione di “veicoli” generata totalmente a caso, per non dire a casaccio: alla generazione zero alcune macchine sono addirittura prive di ruote e non è necessaria una laurea in ingegneria per capire che non possono andare molto lontano, né farlo velocemente.

A questo punto però ci si mette la selezione naturale: per quanto poco efficienti nella popolazione iniziale alcune macchine avranno ottenuto un punteggio (dato da un rapporto tra la distanza percorsa e il tempo) più alto delle altre. Solo queste si “riprodurranno” fra loro dando origine a una progenie in cui in cui le caratteristiche dei genitori si sono mescolate grazie a una sorta di crossing-over.

A ogni nuova generazione inoltre si aggiungono delle mutazioni che arricchiscono ulteriormente la variabilità della discendenza. Ma mano che lavora il filtro della selezione, le macchine arrivano sempre più lontano prima di ribaltarsi o incastrarsi in una buca, e la loro velocità aumenta. Alcuni modelli si fanno addirittura crescere una ruota sul dorso, che spesso li rende in grado di continuare la corsa su un lato diverso quando si ribaltano. Infatti l’unico scopo dei veicoli è macinare più strada possibile: l’incolumità dei passeggeri non è tra i parametri.

BoxCar2D, che ieri è giunto alla versione 2.1, si basa sulla libreria Box2D che simula alcune leggi fisiche in un ambiente bidimensionale. La nuova versione offre al giocatore più controllo sulla “specie”: può decidere per un allevamento strettamente selettivo e modificare a tavolino gli esemplari più promettenti e creare così un “pedigree” ancora più puro. Bisogna mettere in chiaro che giochi come questo non sono di per sé prove della validità della teoria dell’evoluzione per la quale le prove, anche sperimentali, non mancano. BoxCar2D (e gli algoritmi genetici in generale) semplicemente dimostra come il principio della selezione naturale è applicabile anche all’informatica.

Attenzione però: osservare i progressi delle macchine sullo schermo, che generazione dopo generazione sperimentano una varietà di forme che difficilmente verrebbero in mente a un designer, può risultare ipnotico e assuefacente, e potreste ritrovarvi con BoxCar2D aperto per giorni in una scheda del vostro browser e a non riavviare più il computer per non perdere i progressi compiuti dai vostri pupilli.

Un altro semplice algoritmo che mostra l’efficacia del principio della selezione non casuale di mutazioni casuali è il celebre Weasel program. Ideato da Richard Dawkins, data una frase “obiettivo” (originariamente una frase del terzo atto dell’AmletoMethinks it is like a weasel“, cioè “Mi sembra una donnola”) il programma deve cercare di scriverla selezionando da sequenze di lettere generate casualmente quelle che più vi somigliano. Ecco una versione web, un po’ diversa da quella di Dawkins…

Condividi su
Stefano Dalla Casa
Giornalista e comunicatore scientifico, mi sono formato all’Università di Bologna e alla Sissa di Trieste. Scrivo abitualmente sull’Aula di Scienze Zanichelli, Wired.it, OggiScienza e collaboro con Pikaia, il portale italiano dell’evoluzione. Ho scritto col pilota di rover marziani Paolo Bellutta il libro di divulgazione "Autisti marziani" (Zanichelli, 2014). Su twitter sono @Radioprozac