Source code for metaheuristic_designer.strategies.hill_climb

"""
Hill Climbing strategy (single-solution, greedy local improvement).
"""

from __future__ import annotations
from typing import Optional
from ..initializer import Initializer
from ..survivor_selection_base import SurvivorSelection
from ..search_strategy import SearchStrategy
from ..operator import Operator
from ..survivor_selection import create_survivor_selection
from ..utils import check_random_state, RNGLike


[docs] class HillClimb(SearchStrategy): """ Hill Climbing algorithm. A single solution is perturbed each iteration. If the new solution is better, it replaces the current one. By default, the survivor selection is set to one-to-one competition (``"hill_climb"`` in the survivor registry). Parameters ---------- initializer : Initializer Population initializer (typically creates a single individual). operator : Operator, optional Perturbation operator. Defaults to :class:`NullOperator`. survivor_sel : SurvivorSelection, optional Survivor selection method; defaults to ``"hill_climb"``. params : dict, optional Additional parameters stored as schedulable values. name : str, optional Display name (default ``"HillClimb"``). random_state : RNGLike, optional Random number generator. **kwargs Forwarded to :class:`SearchStrategy`. """ def __init__( self, initializer: Initializer, operator: Optional[Operator] = None, survivor_sel: Optional[SurvivorSelection] = None, params: Optional[dict] = None, name: str = "HillClimb", random_state: Optional[RNGLike] = None, **kwargs, ): if survivor_sel is None: survivor_sel = create_survivor_selection("hill_climb") super().__init__(initializer, operator=operator, survivor_sel=survivor_sel, params=params, name=name, random_state=random_state, **kwargs)