CosineAnnealingRandomDesign(
min_probability: float,
max_probability: float,
restart_iteration: int,
seed: int = 0,
)
基类:AbstractRandomDesign
根据给定的概率交织随机配置,该概率根据余弦退火计划降低。
参数
max_probability : float 初始(最大)随机配置概率。 min_probability : float 在迭代 restart_iteration
中使用的最终(最小)随机配置概率。 restart_iteration : int 每隔 restart_iteration
次迭代重启退火计划。 seed : int 用于初始化随机状态的整数。
源代码位于 smac/random_design/annealing_design.py
| def __init__(self, min_probability: float, max_probability: float, restart_iteration: int, seed: int = 0):
super().__init__(seed)
assert 0 <= min_probability <= 1
assert 0 <= max_probability <= 1
assert max_probability > min_probability
assert restart_iteration > 2
self._max_probability = max_probability
self._min_probability = min_probability
# Internally, iteration indices start at 0, so we need to decrease this
self._restart_iteration = restart_iteration - 1
self._iteration = 0
self._probability = max_probability
|
next_iteration
进入下一次迭代并设置 self._probability
。
源代码位于 smac/random_design/annealing_design.py
| def next_iteration(self) -> None: # noqa: D102
"""Moves to the next iteration and set ``self._probability``."""
self._iteration += 1
if self._iteration > self._restart_iteration:
self._iteration = 0
logger.debug("Perform a restart.")
self._probability = self._min_probability + (
0.5
* (self._max_probability - self._min_probability)
* (1 + np.cos(self._iteration * np.pi / self._restart_iteration))
)
logger.debug(f"Probability for random configs: {self._probability}")
|