Interface MutationPolicy

All Known Subinterfaces:
NodeReplacement, ProgramApplyRules, ProgramRandomMutate, ProgramRandomPrune, TrimTree
All Known Implementing Classes:
AddConnection, AddNode, CreepMutation, DeleteConnection, DeleteNode, ImmutableAddConnection, ImmutableAddNode, ImmutableCreepMutation, ImmutableDeleteConnection, ImmutableDeleteNode, ImmutableMultiMutations, ImmutableNeatConnectionWeight, ImmutableNodeReplacement, ImmutablePartialMutation, ImmutableProgramApplyRules, ImmutableProgramRandomMutate, ImmutableProgramRandomPrune, ImmutableRandomMutation, ImmutableSwapMutation, ImmutableSwitchStateMutation, ImmutableTrimTree, MultiMutations, NeatConnectionWeight, PartialMutation, RandomMutation, SwapMutation, SwitchStateMutation

public interface MutationPolicy
Marker interface for mutation policy specifications in evolutionary algorithms.

MutationPolicy defines the contract for specifying mutation strategies and their parameters. Mutation policies determine how genetic variation is introduced into the population by making random changes to individual genotypes. Different mutation policies implement various strategies for balancing exploration and exploitation during the evolutionary process.

Mutation policies are used by:

  • EA Configuration: To specify the mutation strategy for the algorithm
  • Mutation handlers: To create appropriate mutator implementations
  • Strategy resolution: To select chromosome-specific mutation operators
  • Parameter configuration: To define mutation rates and other parameters

The framework provides several concrete mutation policy implementations:

Mutation strategies vary by chromosome type and problem domain:

  • Binary chromosomes: Bit flip mutations
  • Numeric chromosomes: Gaussian noise, uniform perturbation, creep mutation
  • Permutation chromosomes: Swap, insert, inversion mutations
  • Tree chromosomes: Node replacement, subtree mutation, growth/pruning

Key considerations for mutation policy design:

  • Mutation rate: Balance between exploration and exploitation
  • Chromosome compatibility: Ensure mutation respects chromosome constraints
  • Problem-specific operations: Adapt mutation to problem characteristics
  • Adaptive strategies: Allow mutation parameters to evolve during the run

Example usage in genetic algorithm configuration:


 // Random mutation with 5% probability per allele
 MutationPolicy randomMutation = RandomMutation.of(0.05);
 
 // Creep mutation for numeric optimization
 MutationPolicy creepMutation = CreepMutation.of(0.1, 1.0);
 
 // Combination of multiple mutation strategies
 MutationPolicy multiMutation = MultiMutations.of(
     Tuple.of(0.7, randomMutation),
     Tuple.of(0.3, creepMutation)
 );
 
 // Use in EA configuration
 EAConfiguration<Double> config = EAConfigurationBuilder.<Double>builder()
     .chromosomeSpecs(chromosomeSpec)
     .mutationPolicy(randomMutation)
     .build();
 
See Also: