(R)Evolution Simulator

di Boccardo Elena, Cavedagna Emma, Gardenghi Linda, Trevisani Andrea e Villani Francesco

Classe 3^A – A.S. 2022/2023

 

Perché studiare l’evoluzione? 

La comprensione dei meccanismi alla base dell’evoluzione ci permette di integrare in un unico framework tutti i dati che la biologia produce: senza la teoria dell’evoluzione cosa sarebbe la biologia moderna? 

Charles Darwin (1808-1882) – Padre dell’Evoluzionismo

Sulle pagine del New York Times, Olivia Judson, biologa ed evoluzionista statunitense afferma:

“Senza l’evoluzione la biologia sarebbe una mera collezione di fatti sconnessi l’uno dall’altro, un insieme disorganizzato di osservazioni. (…) Grazie all’evoluzione può divenire possibile fare ipotesi e previsioni e talvolta realizzare esperimenti per verificare queste previsioni”.

 

 

Avete mai pensato a come sarebbe imparare le cause che stanno alla base dell’evoluzione della specie attraverso un semplice videogioco?

È ciò che Federico Malnati, Alessandro Sosso e Matteo Palmieri, studenti del Liceo Scientifico Galileo Ferraris di Torino, hanno realizzato attraverso il progetto (R)Evolution Simulator partecipando a una competizione scolastica  chiamata “Giornata della Scienza” nel 2017.

Dietro le quinte del progetto 

Il progetto consiste in un mondo virtuale, programmato attraverso il linguaggio di programmazione Python, in particolare utilizzando la libreria “pygame” per eseguire la parte grafica.
Al fine di osservare l’evoluzione di specie vegetali o animali è stato creato un territorio virtuale suddiviso in chunk: regioni di spazio caratterizzate da condizioni geografiche e climatiche determinate dal Rumore Semplice di Perlin, una funzione che assegna valori vicini a variabili vicine (una randomizzazione più omogenea).
Come unità di tempo viene utilizzato il tick e a ogni tick corrisponde una variazione delle caratteristiche di ogni chunk e organismo vivente.

La vita di ogni organismo è scandita dalle tre principali funzioni vitali:

1. Alimentazione 

Ad ogni tick corrisponde la ricerca, da parte di ogni organismo, di cibo (fonte di energia vitale) e la diminuzione di nutrimento all’interno del chunk 7×7.

2. Riproduzione

Nel momento in cui due individui, presenti nella stessa zona di 7×7 chunk, hanno sufficiente energia avviene la generazione di un individuo figlio, il quale possiede l’energia ceduta dai genitori mediante l’atto. Le caratteristiche di quest’ultimo saranno ereditate dai genitori e mediate da mutazioni.

3. Morte causata da tre fattori:

  • Vecchiaia (old age); la durata della vita di ogni individuo viene determinata tramite un numero casuale con andamento gaussiano di media 1000 tick e deviazione standard 200 tick.
  • Temperatura (temperature); ogni organismo ha un proprio genotipo*1 riguardante la sua capacità di resistere alla temperatura. In particolare esistono tre diversi alleli : un allele dominante (N), senza particolari caratteristiche e due alleli recessivi (l e c), rispettivamente adatti a vivere in clima freddo e caldo. A ognuno corrisponde una probabilità di morte per temperatura pari allo 0,02% .
  • Fame (starvation); se una organismo trova sufficiente cibo entro un certo numero di cicli, l’energia scende sotto un valore minimo portando la organismo alla morte. 

Le creature sono caratterizzate da diversi geni , che sono trasmessi nella riproduzione.
I geni possono essere di tre tipi distinti:

  • I geni numerici: 
  1. agility, la tendenza della organismo a muoversi; 
  2. bigness, le dimensioni della organismo;  
  3. fertility, esprime il numero di tick minimi che devono passare tra una riproduzione e l’altra ed è inversamente proporzionale all’energia minima necessaria per potersi riprodurre; 
  4. num_control, un gene numerico utilizzato come gene di controllo (non ha effetti fenotipici*⁴).
  • I geni mendeliani sono caratterizzati da un genotipo formato da una coppia di alleli, e da un fenotipo, calcolato secondo le leggi della genetica a partire dal genotipo. Nella riproduzione i due alleli di ogni gene mendeliano vengono trasmessi selezionando uno da ciascun genitore. I geni mendeliani sono:
  1. temp_resist, la capacità della organismo di resistere ad una certa temperatura; gli alleli sono c, l (recessivi) ed N (dominante);
  2. mndl_control, un gene mendeliano utilizzato come gene di controllo (non ha effetti fenotipici); gli alleli sono a (recessivo) ed A (dominante). 
  • I geni secondari sono geni numerici non più trasmessi nella riproduzione, ma calcolati a partire da altri geni numerici della organismo. I geni secondari sono:
  1. speed, definita come 2·agility/bigness.

 

Nell’interfaccia grafica, i chunk sono rappresentati come quadratini, mentre le creature come cerchi. La dimensione dei cerchi può rappresentare aspetti diversi della organismo, che possono essere impostati nel programma. Nelle immagini in figura le creature di dimensioni maggiori hanno un’energia maggiore in quell’istante perché hanno trovato una maggiore quantità di cibo nei tick precedenti. Anche il colore delle creature può rappresentare aspetti diversi, come osservabile in figura:

  1. l’abbinamento azzurro/giallo rappresenta la distinzione dei due sessi (a sinistra);
  2. l’abbinamento rosso/grigio-bianco/blu, (a destra), rappresenta il fenotipo delle creature in relazione alla loro capacità di resistere alla temperatura. In particolare, il rosso un fenotipo c (preferenza per il caldo), il blu un fenotipo l (preferenza per il freddo), il grigio un fenotipo N eterozigote e bianco un fenotipo N omozigote (preferenza per climi temperati).

 

L’avventura in prima persona

Per comprendere meglio lo svolgimento del progetto ci siamo rivolti a Federico Malnati, uno dei tre sviluppatori.

Da cosa è nata l’idea di questo progetto e quando?

<< Il progetto è nato nel 2017 quando facevamo la terza liceo per una competizione scientifica tra gli studenti del nostro liceo a Torino che si chiamava “Giornata della Scienza”>>

Quanto tempo vi ha richiesto lo sviluppo del progetto?

<< Da novembre a marzo >>

Come avete organizzato il lavoro?

<< Eravamo in tre e ci siamo divisi i pezzi di codice da scrivere >>


Conoscevate già Python o sviluppare questo progetto vi ha fornito “nuove skills”?

<< In parte già lo conoscevamo per interessi personali anche se a scuola non facevamo informatica, ma ovviamente abbiamo dovuto imparare parecchio >>

Ci sono stati dei costi per la realizzazione del progetto?

<< No, è un progetto a costo zero: non abbiamo dovuto comprare nulla; l’unica spesa è stata in tempo >>

Secondo te è difficile la comprensione del progetto?

<< Secondo me basta essere delle scuole medie per capire il funzionamento del simulatore, ovviamente purché qualcuno lo spieghi… però non ci sono particolari concetti, alla fine la grafica è come una sorta di videogioco >>

Eravate già amici prima del progetto? Questa esperienza ha contribuito alla vostra amicizia?

<< Si, ci conoscevamo già da prima e sicuramente ci ha fatto condividere molto tempo insieme. Oltretutto dopo aver vinto il concorso interno, la scuola ci ha chiesto di candidarci a una gara nazionale che si tiene a Milano “I Giovani e la Scienza” >>


Come è andata?

<< Siamo stati selezionati e nel febbraio/marzo 2018 siamo andati tre giorni là (a Milano) per presentare il progetto e abbiamo vinto anche lì. Nel settembre dello stesso anno siamo andati a EUCYS (European Union Contest for Young Scientists), a Dublino, ovvero la competizione europea, e abbiamo rappresentato l’Italia; c’erano in palio dei soldi ma, sfortunatamente, non abbiamo vinto >>

Conclusioni

Il sistema quindi si comporta come un ecosistema naturale, in cui le caratteristiche genetiche, tramite il ricambio e la mutazione genica, sono sottoposte a selezione naturale, basata sulle sue caratteristiche del territorio, in cui sussiste un ciclo di nascite e morte paragonabile a quello reale. In questo modo, con un sistema basato su leggi semplici si può fornire una simulazione di sistemi complessi come quelli naturali. Pertanto il simulatore permette di analizzare un numero di casi maggiore rispetto a quello osservabile in natura, in un arco di tempo decisamente ridotto. Con una simulazione da 20000 tick e 60×45 chunk (elaborata dal computer in circa 30 minuti), si possono osservare circa 16000 creature, cosa che risulterebbe difficile in natura per la maggior parte delle specie, se non nell’arco di numerose generazioni. Il programma, utile anche a fine didattico per visualizzare concetti apparentemente astratti, ha una notevole flessibilitá e permette numerosi ampliamenti e sviluppi: l’introduzione di una specie di predatori puó mostrare il ciclo preda/predatore descritto dalle equazioni di Lotka-Volterra*5; l’inserimento di una malattia contagiosa può evidenziare le dinamiche di diffusione di un’epidemia, permettendo di trovare il minimo numero di individui immuni al contagio affinché questa non si diffonda.

Link video illustrativo del progetto: “(R)Evolution Simulator” – YouTube

Note

*¹) genotipo:  costituzione genetica di un organismo, ovvero l’insieme dei geni localizzati sui suoi cromosomi

*²) alleli: una delle forme alternative che un gene può assumere nel medesimo sito cromosomico

*³) gene: unità di informazione ereditaria degli organismi viventi che occupa una posizione fissa su un cromosoma

*⁴) cambiamenti fenotipici: variazioni delle caratteristiche morfologiche e funzionali di un organismo dovute alla mutazione di un gene.

*5) Detto y(t) il numero di predatori presenti al tempo t e x(t) quello delle prede, le equazioni hanno la forma:

dove le derivate dx/dt e dy/dt sono i tassi di crescita nel tempo delle popolazioni di prede e predatori, mentre le lettere sono parametri positivi che descrivono l’interazione tra le due specie. Lo studio del sistema dinamico definito da tale sistema di equazioni differenziali consente di individuare tutti i tipi di evoluzione che è possibile avere a partire da una qualsiasi situazione iniziale.

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *