Ho sperimentato GA in gioventù. Ho scritto un simulatore in Python che ha funzionato come segue.
I geni codificavano i pesi di una rete neurale.
Gli ingressi della rete neurale erano "antenne" che rilevavano tocchi. Valori più alti significavano molto vicini e 0 significava non toccare.
Le uscite erano a due "ruote". Se entrambe le ruote andavano avanti, il ragazzo andava avanti. Se le ruote erano in direzioni opposte, il ragazzo si girava. La forza dell'uscita ha determinato la velocità di rotazione della ruota.
È stato generato un semplice labirinto. Era davvero semplice, persino stupido. C'è stato l'inizio nella parte inferiore dello schermo e un obiettivo in alto, con quattro pareti in mezzo. Ogni muro aveva uno spazio rimosso in modo casuale, quindi c'era sempre un percorso.
Ho iniziato ragazzi casuali (ho pensato a loro come bug) all'inizio. Non appena un ragazzo ha raggiunto l'obiettivo o è stato raggiunto un limite di tempo, è stata calcolata la forma fisica. Era inversamente proporzionale alla distanza dall'obiettivo in quel momento.
Li ho poi accoppiati e li ho "allevati" per creare la prossima generazione. La probabilità di essere scelto per essere allevato era proporzionale alla sua forma fisica. A volte questo significava che uno veniva allevato ripetutamente con se stesso se aveva una forma fisica relativa molto elevata.
Ho pensato che avrebbero sviluppato un comportamento di "abbraccio alla parete sinistra", ma sembravano sempre seguire qualcosa di meno ottimale. In ogni esperimento, i bug convergevano in uno schema a spirale. Avrebbero spirato verso l'esterno fino a toccare un muro a destra. Lo avrebbero seguito, poi quando sarebbero arrivati al buco, sarebbero precipitati a spirale (lontano dal buco) e intorno. Farebbero una rotazione di 270 gradi a sinistra, quindi di solito entrano nello spazio. Ciò li avrebbe portati attraverso la maggior parte dei muri e spesso verso l'obiettivo.
Una caratteristica che ho aggiunto è stata quella di inserire un vettore di colore nei geni per tracciare la relazione tra gli individui. Dopo alcune generazioni, sarebbero tutti dello stesso colore, il che mi dice che dovrei avere una migliore strategia di allevamento.
Ho cercato di convincerli a sviluppare una strategia migliore. Ho complicato la rete neurale aggiungendo una memoria e tutto il resto. Non ha aiutato Ho sempre visto la stessa strategia.
Ho provato varie cose come avere pool genetici separati che si sono ricombinati solo dopo 100 generazioni. Ma nulla li spingerebbe a una strategia migliore. Forse era impossibile.
Un'altra cosa interessante è rappresentare graficamente la forma fisica nel tempo. C'erano schemi definiti, come la massima forma fisica che scendeva prima che salisse. Non ho mai visto un libro di evoluzione parlare di quella possibilità.