Skip to content

Optimizer Lexicase

Clifford Bohm edited this page May 25, 2018 · 1 revision

Lexicase Optimizer

The Lexicase Optimizer implements the lexicase algorithom deveoped by Lee Spector and Thomas Helmuth. Lexicase selection is a multi objective selection algorithom where a number of optimizing formula are defined. To select a single parent the order of the formula are randomized and then applied as filters to the population (or some subset of the population in the case of pools). If at any point all but one organism has been filtered out, then this is returned. If there is more then one organism remaining after filtering, then an organism is chosen at random from this set and returned.

In this implementation, a population is povided to the optimizer and an entirly new population is generated (no survival) usinging the algorithm defined above for each parent... which is then copied and the copy mutated to produce an offspring. In the case of multiple parnets, then for each offspring the selection process is repeated until there are a correct number of parents (there are no sexes or sexual selection in this optimizer).

the parameters avalible with this optimizer follow:

% OPTIMIZER_LEXICASE
  epsilon = 0.1                              #(double) cutoff when conducting per formula selection.
                                             #  e.g. 0.1 = organisms in the top 90% are kept. use 0.0 for classic Lexicase.
  epsilonByRange = 0                         #(bool) if true epsilon will be relative to min and max score
                                             #    i.e. keep orgs with (score > maxScore - (maxScore-minScore) * epsilon)
                                             #  if false, epsilon will be relative to organism ranks
                                             #    i.e. keep (best current keepers * epsilon) organisms
  nextPopSize = -1                           #(string) size of population after optimization(MTree). -1 indicates use current population size
  numberParents = 1                          #(int) number of parents used to produce offspring
  optimizeFormulaNames = default             #(string) column names to associate with optimize formulas in data files.
                                             #  'default' will auto generate names as optimizeValue_1, optimizeValue_2, 
  optimizeFormulas = DM_AVE[score]           #(string) values to optimize with lexicase selection (list of MTrees)
                                             #  example for BerryWorld: [DM_AVE[food1],DM_AVE[food2],(0-DM_AVE[switches])]
  poolSize = -1                              #(int) number of organisms used when selecting parent(s) in the lexicase algorithm, -1 indicates to use entire population
  recordOptimizeValues = 1                   #(bool) record optimize values to data files using optimizeFormulaNames

Clone this wiki locally