evox.algorithms.so.es_variants.cma_es

模块内容

CMAES

CMA-ES 算法,详见 "The CMA Evolution Strategy: A Tutorial" (https://arxiv.org/abs/1604.00772)。

API

class evox.algorithms.so.es_variants.cma_es.CMAES(mean_init: torch.Tensor, sigma: float, pop_size: int | None = None, weights: torch.Tensor | None = None, device: torch.device | None = None)[源代码]

基础: evox.core.Algorithm

CMA-ES 算法,详见 "The CMA Evolution Strategy: A Tutorial" (https://arxiv.org/abs/1604.00772)。

初始化

使用给定的参数初始化 CMA-ES 算法。

参数:
  • pop_size -- 种群的规模使用符号 \lambda 表示。

  • mean_init -- 种群的初始均值。必须是一个一维张量。

  • sigma -- 整体标准差,即算法的步长。

  • weights -- 种群的重组权重。默认为 None,并根据推荐值自动计算。

  • device -- 设备的使用者(设备用于存放张量的硬件)。默认为 None。

step()[源代码]

CMA-ES算法的主要步骤。

在这一步,算法生成一个新种群,评估它,并相应地更新均值、协方差矩阵和步长。

_update_mean(mean: torch.Tensor, population: torch.Tensor) torch.Tensor[源代码]
_update_covariance_matrix(C: torch.Tensor, p_c: torch.Tensor, population: torch.Tensor, old_mean: torch.Tensor, h_sigma)[源代码]
_update_path_c(path_c: torch.Tensor, h_sigma, delta_mean: torch.Tensor)[源代码]
_update_path_sigma(path_sigma: torch.Tensor, C_invsqrt: torch.Tensor, delta_mean: torch.Tensor)[源代码]
_update_step_size(step_size: torch.Tensor)[源代码]
_conditional_decomposition(iteration: torch.Tensor, C: torch.Tensor)[源代码]
_no_decomposition(C: torch.Tensor)[源代码]
_decomposition(C: torch.Tensor) Tuple[torch.Tensor, torch.Tensor, torch.Tensor][源代码]
record_step()[源代码]