Skip to content

Evolution and Population

Miguel Duarte edited this page Nov 18, 2015 · 1 revision

The evolution argument allows you to choose what kind of evolutionary algorithm to use in your experiments. Below is a description of the different types of evolutionary algorithms currently implemented:

Simple generational evolution

A simple elitist evolutionary algorithm where the top X controllers copied to the next generation and mutated. The default value is 100 genomes per population and 5 elites. It can be used with any Controller that extends the FixedLengthGenomeEvolvableController (see the the wiki page on Controller. Below are the default arguments:

--population classname=MuLambdaPopulation,size=100,generations=100,samples=5,mutationrate=0.1
--evolution classname=GenerationalEvolution

NEAT

NEAT is an evolutionary algorithm that simultaneously optimizes the network's topology and weights. The NeuralNetworkController and the NEATNetwork class should be used with this evolutionary algorithm. It can be used in the following way:

--population classname=NEATPopulation,size=150,generations=100,samples=10
--evolution classname=NEATEvolution

The full argument list for NEAT can be found in the NEATEvolution class.