Implementazione dell'algoritmo NEAT (Evolving Neural Networks through Augmenting Topologies, Kenneth O. Stanley, Risto Miikkulainen).
Dato:
- popolazione di N elementi
- M specie
La successiva generazione sarà generata:
- ordinando le M specie in base al miglior score
- elimino le specie anziane che non hanno avuto un miglioramento dello score migliore di almeno X %
- per ogni specie anziana, elimino gli ultimi I geni
- per ogni specie con almeno 5 membri, copio i campioni nella prossima generazione, altrimenti copio il campione mutato
- fino ad arrivare a N elementi nella nuova specie:
- seleziono in modo random un gene dal pool, con probabilità basata su f'
- lo copio, quindi:
- con probabilità p1, applico mutazioni (aggiunta nodi, aggiunta connessioni, disabilitazione connessioni)
- con probabilità p2, applico mutazioni (variazione pesi)
- con probabilità p3, offspring: seleziono in modo random un gene dal pool, con probabilità basata su f', differente da quello appena selezionato
mvn clean package
java -jar target\neat-impl-0.0.1.jar
mvn install:install-file -Dfile=target\neat-impl-0.0.1.jar -DgroupId=it.vitalegi -DartifactId=neat-impl -Dversion=0.0.1 -Dpackaging=jar