Source code for metaheuristic_designer.parameter_schedules.noisy_schedule

"""
Schedule that applies gaussian noise to a subschedule.
"""

import logging
from typing import Optional
from ..schedulable_parameter import SchedulableParameter
from ..utils import RNGLike

logger = logging.getLogger(__name__)


[docs] class NoisySchedule(SchedulableParameter): """Schedule that applies gaussian noise to a subschedule. Parameters ---------- subschedule: SchedulableParameter Parameter schedule to modify the parameter each `iterations` iterations. noise_level : float, optional Standard deviation of the gaussian noise applied to the parameter value """ def __init__(self, subschedule: SchedulableParameter, noise_level: float = 1e-2, rng: Optional[RNGLike] = None): super().__init__(rng=rng) self.subschedule = subschedule self.noise_level = noise_level
[docs] def evaluate(self, progress: float) -> float: next_value = self.subschedule.evaluate(progress) return next_value + self.rng.normal(0, self.noise_level)