Skip to content

Optimizers

Clifford Bohm edited this page Jan 24, 2018 · 23 revisions

Optimizers are used in conjugation with single generation worlds (or within multi-generation worlds). Optimizers take a population and use results of the evaluations performed by worlds to select parents which are used to generate a new population. Depending on the type of optimizer being used, the new generation may be all new organisms or a mix of new organisms and organisms from previous generations.

optimizeValue

Optimizers will generally define parameters which determine what values will be optimized for. Most commonly, this parameter will be called 'optimizeValue'. Optimizers may be created that optimize on more than one term (i.e. multi-objective) and these optimizers will define parameters as needed.

Optimizers will usually use an MTreefor the optimizeValue parameter. This allows the user to determine what elements from organisms DataMaps will be used and how.

For Programmers

The primary function of the optimizer is to select parents and produce offspring. Optimizers have full access to the population they are optimizing (including everything in organisms dataMaps). Optimizers add offspring to the current population. This results in a larger population which contains both new and old organisms. This is done so that the Archive process occurs after optimization (so data like the number of offspring can be archived). After the Archive process is done, the Optimizer is called again to clean up the population. The Optimizer must provide a killList which defines the organisms to clean up. In addition, organisms < one update old will not be archived (unless the Archivist is instructed to do so.)

Reproduction Asexual and Sexual

Reproduction is simply the result of calling the makeMutatedOffspringFrom or makeMutatedOffspringFromMany function. See Organisms for more on this.

Clone this wiki locally