Source code for metaheuristic_designer.strategies.static_population
"""
Strategy where the population size remains constant, no explicit parent selection.
"""
from __future__ import annotations
from typing import Optional
from ..initializer import Initializer
from ..parent_selection_base import ParentSelection
from ..survivor_selection_base import SurvivorSelection
from ..search_strategy import SearchStrategy
from ..operator import Operator
from ..utils import RNGLike
[docs]
class StaticPopulation(SearchStrategy):
"""
Population-based strategy with constant size and no parent selection.
The entire population is perturbed each generation. By default,
parent selection is the identity (all individuals are used) and
survivor selection is generational (offspring replace parents).
Parameters
----------
initializer : Initializer
Population initializer.
operator : Operator
Perturbation operator.
parent_sel : ParentSelection, optional
Parent selection; defaults to identity (keep all).
survivor_sel : SurvivorSelection, optional
Survivor selection; defaults to generational replacement.
name : str, optional
Display name (default ``"Static Population Evolution"``).
random_state : RNGLike, optional
Random number generator.
**kwargs
Forwarded to :class:`SearchStrategy`.
"""
def __init__(
self,
initializer: Initializer,
operator: Operator,
parent_sel: Optional[ParentSelection] = None,
survivor_sel: Optional[SurvivorSelection] = None,
name: str = "Static Population Evolution",
random_state: Optional[RNGLike] = None,
**kwargs,
):
super().__init__(
initializer, operator=operator, parent_sel=parent_sel, survivor_sel=survivor_sel, name=name, random_state=random_state, **kwargs
)