Elitism
The GA literature advocates many different rules for the passage of parent individuals into subsequent generations. In GAUL, a selection of common rules may be specified by the third parameter to the "ga_population_set_parameters()" function. Alternatively, "ga_population_set_elitism()" may be used to modify this parameter alone. With GAUL, it is even safe to change the elitism rule during evolution!
The available elitism modes are:
Elitism Parameter |
Comments |
GA_ELITISM_PARENTS_SURVIVE |
All parents that rank sufficiently highly will pass to the next generation. |
GA_ELITISM_ONE_PARENT_SURVIVES |
The single fittest parent will pass to the next generation if it ranks sufficiently well. |
GA_ELITISM_PARENTS_DIE |
No parents pass to next generation, regardless of their fitness. |
GA_ELITISM_RESCORE_PARENTS |
All parents are re-evalutated, and those that subsequently rank sufficiently highly will pass to the next generation. |
Examples:
ga_population_set_parameters(
popd, /* population *pop */
GA_SCHEME_DARWIN, /* const ga_scheme_type scheme */
GA_ELITISM_PARENTS_SURVIVE, /* const ga_elitism_type elitism */
0.9, /* double crossover */
0.1, /* double mutation */
0.0 /* double migration */
);
ga_population_set_elitism( GA_ELITISM_PARENTS_DIE );
Note that some elitism options make little sense when coupled to certian evolutionary schemes. For example, using Lamarckian or Baldwinian evolution and applying that to the parent individuals is pointless when none of those parents will ever pass into subsequent generations.
|