Source code for metaheuristic_designer.parameter_schedules.strided_schedule
"""Strided schedule that applies a subschedule making the parameter updates in long intervals."""
import logging
from ..schedulable_parameter import SchedulableParameter
logger = logging.getLogger(__name__)
[docs]
class StridedSchedule(SchedulableParameter):
"""Schedule that applies a subschedule when a number of iterations have passed, keeping the previous
value between updates.
Parameters
----------
subschedule: SchedulableParameter
Parameter schedule to modify the parameter each `iterations` iterations.
iterations : int, optional
iterations to keep the current value unchanged, by default 100
"""
def __init__(self, subschedule: SchedulableParameter, iterations: int = 100):
super().__init__(random_state=None)
self.subschedule = subschedule
self.iterations = iterations
self.iteration_counter = 0
self.current_value = None
[docs]
def evaluate(self, progress: float) -> float:
if self.current_value is None or self.iteration_counter > self.iterations:
self.current_value = self.subschedule.evaluate(progress)
self.iteration_counter = 0
else:
self.iteration_counter += 1
return self.current_value