strangedev / NEAT_PyGenetics

An implementation of neuro-evolution of augmented topologies
4 stars 0 forks source link

Genome Clustering #8

Closed yeldiRium closed 8 years ago

yeldiRium commented 8 years ago

We want to cluster our population into species to encourage inbreeding. Inbreeding is used to prevent "good ideas" from being killed befor they can develop. If a change in a genome, that will eventually lead to greatness, initially decreases the fitness, it would be discarded. Because of that, we take similar genomes and cluster them, leaving the genomes in clusters alive, even if their fitness is low. Cluster with a low overall fitness produce less offspring, so we can focus our resources on better clusters, but they continue to exists, so they may improve their "ideas".

Therefore, we need a way to cluster our genomes. After breeding for a while inside these clusters, we breed two whole clusters together, thus (probably) creating a new, third, cluster. Afterwards, we recluster everything and keep on inbreeding.

yeldiRium commented 8 years ago

k-nearest-neighbors algorithm could be what we need

strangedev commented 8 years ago

Clustering is implemented, improvements go in separate issues.