Interface SelectionPolicy
- All Known Subinterfaces:
MultiTournaments<T>
,ProportionalTournament<T>
- All Known Implementing Classes:
DoubleTournament
,ImmutableDoubleTournament
,ImmutableMultiSelections
,ImmutableMultiTournaments
,ImmutableNeatSelection
,ImmutableNSGA2Selection
,ImmutableProportionalTournament
,ImmutableRandomSelection
,ImmutableRouletteWheel
,ImmutableSelectAll
,ImmutableTournament
,ImmutableTournamentNSGA2Selection
,MultiSelections
,NeatSelection
,NSGA2Selection
,RandomSelection
,RouletteWheel
,SelectAll
,Tournament
,TournamentNSGA2Selection
public interface SelectionPolicy
Marker interface for selection policy specifications in evolutionary algorithms.
SelectionPolicy defines the contract for specifying selection strategies and their parameters. Selection policies determine how individuals are chosen from the population for reproduction, directly influencing the evolutionary pressure and convergence characteristics of the algorithm.
Selection policies are used by:
- EA Configuration: To specify the parent selection strategy
- Selection handlers: To create appropriate selector implementations
- Strategy resolution: To match policies with their corresponding handlers
- Parameter configuration: To define selection pressure and tournament sizes
The framework provides several concrete selection policy implementations:
Tournament
: Tournament selection with configurable tournament sizeRouletteWheel
: Fitness-proportionate selection (roulette wheel)RandomSelection
: Uniform random selection without fitness biasDoubleTournament
: Two-stage tournament for multi-objective optimizationProportionalTournament
: Tournament with proportional selection pressureMultiSelections
: Combination of multiple selection strategiesSelectAll
: Selects all individuals (useful for specific algorithms)
Selection strategies vary in their characteristics:
- Selection pressure: How strongly the algorithm favors high-fitness individuals
- Diversity preservation: How well the strategy maintains population diversity
- Computational complexity: Efficiency of the selection process
- Scalability: Performance with different population sizes
Common selection patterns:
- Exploitative strategies: High selection pressure (large tournaments, elitism)
- Explorative strategies: Low selection pressure (small tournaments, random)
- Balanced strategies: Moderate pressure with diversity preservation
- Adaptive strategies: Selection pressure that changes during evolution
Selection policy design considerations:
- Problem characteristics: Multimodal vs unimodal, deceptive problems
- Population size: Small populations may need lower selection pressure
- Fitness landscape: Rugged landscapes benefit from diversity preservation
- Convergence requirements: Balance between speed and solution quality
Example usage in genetic algorithm configuration:
// Tournament selection with moderate pressure
SelectionPolicy tournament = Tournament.of(3);
// Roulette wheel for fitness-proportionate selection
SelectionPolicy roulette = RouletteWheel.build();
// Multi-objective selection with double tournament
SelectionPolicy doubleTournament = DoubleTournament.of(
firstCriteria: 3,
secondCriteria: 2
);
// Combined selection strategies
SelectionPolicy multiSelection = MultiSelections.of(
Tuple.of(0.7, tournament),
Tuple.of(0.3, roulette)
);
// Use in EA configuration
EAConfiguration<Double> config = EAConfigurationBuilder.<Double>builder()
.chromosomeSpecs(chromosomeSpec)
.parentSelectionPolicy(tournament)
.build();
- See Also: