One Plus One#

This is a family of evolutionary algorithms that use a technique called 1+1 or One Plus One. ‘simple but sometimes powerful class of optimization algorithm. We use asynchronous updates, so that the 1+1 can actually be parallel and even performs quite well in such a context - this is naturally close to 1+lambda.’

The algorithms vary on the following parameters,

noise_handling

How re-evaluations are performed.

  • ‘random’ : a random point is reevaluated regularly

  • ‘optimistic’ : the best optimistic point is reevaluated regularly

  • a coefficient can to tune the regularity of these reevaluations

(default = (None, .05))

mutation

The strategy for producing changes / mutations.

  • ‘gaussian’ : standard mutation by adding a Gaussian random variable (with progressive widening) to the best pessimistic point

  • ‘cauchy’ : same as Gaussian but with a Cauchy distribution.

  • ‘discrete’ : discrete distribution

  • ‘fastga’ : FastGA mutations from the current best

  • ‘doublefastga’ : double-FastGA mutations from the current best (Doerr et al, Fast Genetic Algorithms, 2017)

  • ‘portfolio’ : Random number of mutated bits (called niform mixing in Dang & Lehre ‘Self-adaptation of Mutation Rates in Non-elitist Population’, 2016)

(default = ‘gaussian’)

crossover

Optional additional of genetic cross over.

  • True : Add genetic crossover step every other step.

  • False : No crossover.

(default = False)

‘OnePlusOne’#

Defaults Only

‘NoisyOnePlusOne’#

noise_handling: 'random'

‘OptimisticNoisyOnePlusOne’#

noise_handling: 'optimistic'

‘DiscreteOnePlusOne’#

mutation: 'discrete'

‘DiscreteLenglerOnePlusOne’#

mutation: 'lengler'

‘AdaptiveDiscreteOnePlusOne’#

mutation: "adaptive"

‘AnisotropicAdaptiveDiscreteOnePlusOne’#

mutation: "coordinatewise_adaptive"

‘DiscreteBSOOnePlusOne’#

mutation: "discreteBSO"

‘DiscreteDoerrOnePlusOne’#

mutation: "doerr"

‘CauchyOnePlusOne’#

mutation: "cauchy"

‘OptimisticDiscreteOnePlusOne’#

noise_handling: 'optimistic'
mutation: 'discrete'

‘NoisyDiscreteOnePlusOne’#

noise_handling: ('random', 1.0)
mutation: 'discrete'

‘DoubleFastGADiscreteOnePlusOne’#

mutation: 'doublefastga'

‘FastGADiscreteOnePlusOne’#

mutation: 'fastga'

‘RecombiningPortfolioOptimisticNoisyDiscreteOnePlusOne’#

crossover: True
mutation: 'portfolio'
noise_handling: 'optimistic'