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:
RandomMutation
: Randomly changes allele values with specified probabilityCreepMutation
: Makes small incremental changes to numeric valuesSwapMutation
: Exchanges positions of alleles (useful for permutations)PartialMutation
: Applies mutation to only a subset of chromosomesMultiMutations
: Combines multiple mutation strategies
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: