Newsgroup: it.scienza.biologia
Titolo: Software di vita artificiale

Ciao a tutti,
ho messo online la nuova versione del mio software di vita
artificiale, DarwinBots. Si tratta di un programma che gestisce un
ambiente in cui degli organismi devono muoversi, cercare del cibo,
mangiarlo ed eventualmente riprodursi. Ottimo per mettere alla prova
le leggi dell'evoluzione.
Ogni individuo e' dotato di un DNA che e' in effetti un vero e proprio
programma, scritto in un apposito, semplice linguaggio che viene
interpretato in tempo reale. Durante la riproduzione, il dna
dell'individuo che si sta duplicando viene mutato in modo
assolutamente casuale, permettendo alla selezione naturale (non e'
applicata nessuna fnzione di fitness) di migliorare geneticamente le
specie.
Dato che i DNA sono dei programmi, e' anche possibile scriverne di
completamente nuovi e poi metterli alla prova nell'ambiente.
Per chi ne conoscesse una versione precedente, faccio una lista di
alcune delle caratteristiche nuove:
- Molto piu' veloce e piu' stabile, corretti moltissimi bug
- Modalita' rapida e zoom
- Fisica dell'ambiente migliorata: attrito, gravita', moto browniano
configurabili.
- Possibilita' di modificare i rapporti costi/benefici dell'esecuzione
di istruzioni, delle emissioni chimiche e e dei "bocconi" di energia
(ideale per creare pressoini evolutive)
- Console per il debug dei robots
- Possibilita' di inserire specie e individui al volo durante la
simulazione.
- Finestra per evidenziare discendenze e rapporti di parentela.
- Possibilita' SPERIMENTALE di connettere il programma ad internet per
scambiare in tempo reale robots con altri utenti.
Lo potete scaricare da
http://digilander.iol.it/darwinbots
Mi piacerebbe avere vostri commenti.
Ciao,
Anders
DarwinBots
http://digilander.iol.it/darwinbots
Robottini Genetici!

cut   cut   cut
Ciao Anders, complimenti per il tuo lavoro; avevo gia' elogiato la prima
versione e devo dire che hai apportato miglioramenti utili e belli; volevo
porti due domande:
1) Come avvengono le mutazioni in termini di programma informatico? Cioe' il
robot riesce a leggere file che prima ignorava, oppure se ne aggiungono
altri al suo patrimonio genetico-informatico che lui puo' sfruttare...?
(tieni conto che non ne so niente di programmazione informatica)
2) Quando un robot subisce una mutazione, evidentemente acquista nuove
caratteristiche; ma come fai a scoprirle? Stai li' ad osservare il suo
comportamento? Sarebbe bello se si potesse fare un'analisi del genoma del
robot per vedere subito quale caratteristiche ha acquisito a seguito della
mutazione.
Spero di essere stato chiaro; ciao!

Spero di essere stato chiaro; ciao!
Anch'io :)


"Anders" <co...@ANTISPAMlibero.it> ha scritto nel messaggio
news:3c5fd25d...@news.virgilio.it...

Davvero ingegnoso, almeno per un profano della programmazione come me;
voglio provare a fare un po' di esperimenti per vedere cosa succede, poi ti
faro' sapere; quali sono i parametri, in genere, che sfrutti di piu' per
selezionare un particolare robot tra tanti?
Ciao e grazie!

selezionare un particolare robot tra tanti?
I robots in genere si selezionano da soli, nel senso che i piu' adatti
soppiantano gli altri. Puoi facilmente accorgertene facendo evolvere
dei robots per un po' di tempo (qualche ora, magari ad alta velocita')
e poi salvandone uno che ti sembra rappresentativo (ad esempio,
attraverso la funzione "trova il migliore"). Poi basta far ripartire
la simulazione dall'inizio, caricando sia la specie originale che
quella mutata e assegnandogli colori diversi, per vedere che la
seconda in genere soppianta rapidamente la prima.
Per farli evolvere in una certa direzione puoi metterli in condizioni
particolari: ad esempio modificando le impostazioni fisiche (gravita',
attrito) o i rapporti costi/benefici o ancora mettendoli in presenza
di muri (che inizialmente non sono in grado di distinguere dagli altri
robots e quindi cercano di mangiare, morendone). O ancora, puoi
inventare tu stesso un tipo di vegetale (tipo NastyVeg) che si
comporti in modo particolare, costringendo gli altri robot ad
adattarcisi.
Purtroppo per il momento non esistono per i robots necessita'
metaboliche, il che significa che sono in grado di mangiare
indifferentemente i vegetali come qualsiasi altro collega. Questo
purtroppo limita la possibilita' che si creino nicchie ecologiche.
Fammi sapere, ciao,
Carlo


"Anders" <co...@ANTISPAMlibero.it> ha scritto nel messaggio
news:3c601b68...@news.virgilio.it...

Ciao, oggi ho fatto qualche esperimento con il tuo programma; aumentando il
tasso di mutazione, sono riuscito a creare organismi modificati, di cui ho
letto il DNA per vedere che mutazioni avevano subito: qui ho capito, pero',
che se voglio capirci qualcosa devo imparare un minimo di programmazione; ad
esempio una parte del DNA di un robot era cosi' modificato:
the ancestor: cond, start, 1, .aimdx, store, stop
mutato: cond, start, 1, *.shdx, store, .hitsx, store, stop
Pur essendo la mutazione (ce ne sono anche altre) ben visibile anche nel
comportamento del robot (i cui cambiamenti non sembrano giovargli), non
riesco ad interpretare l'entita' della mutazione e i suoi effetti, perche'
non so nulla di programmazione e dunque delle modifiche che ha subito questo
robot. Ho deciso allora, dato che l'argomento mi interessa e mi appassiona
anche in virtu' dei miei studi, di imparare qualcosa nei ritagli di tempo
sulla programmazione informatica, anche partendo dal tuo tutorial sui DNA a
cui ho gia' dato un' occhiata.
Spero do riuscire ad imparare bene; se mi viene in mente qualche idea per
migliorare il tuo programma te lo faro' sapere. Ciao!

mutato: cond, start, 1, *.shdx, store, .hitsx, store, stop
Beh, questa mutazione che riporti sembra abbastanza interessante: dove
il robot originale spostava il suo mirino di 1/200 di radiante verso
destra ad ogni ciclo, incondizionatamente, il robot mutato inserisce
il valore 1 nella locazione di memoria eventualmente indicata da una
particella che lo colpisca da destra. (istruzioni fino al primo store,
quelle successive non hanno effetto in questo caso).
Di fatto, questo inserimento non ha in genere alcun effetto, visto che
gli unici tipi di particella che circolano nelle simulazioni originali
portano il valore -1 e -2, che non sono locazioni valide. Ma non sono
gli unici valori possibili, quindi questa mutazione potrebbe, in altre
situazioni, rivelarsi utile.
In pratica, se l'ambiente e' quello standard, diciamo che l'unico
effetto di questa mutazione e' quello di eliminare la piccola
rotazione continua normalmente impartita dal robot al suo mirino.
Attento comunque, perche' il linguaggio di questi robot non ha quasi
nulla a che fare con quelli normalmente usati in programmazione!
Ciao,
Anders
