evox.algorithms.so.es_variants.asebo

模块内容

ASEBO

ASEBO 算法的实现。

API

class evox.algorithms.so.es_variants.asebo.ASEBO(pop_size: int, center_init: torch.Tensor, optimizer: Literal[adam] | None = None, lr: float = 0.05, lr_decay: float = 1.0, lr_limit: float = 0.001, sigma: float = 0.03, sigma_decay: float = 1.0, sigma_limit: float = 0.01, subspace_dims: int | None = None, device: torch.device | None = None)[源代码]

基础: evox.core.Algorithm

ASEBO 算法的实现。

参考文献: From Complexity to Simplicity: Adaptive ES-Active Subspaces for Blackbox Optimization (https://arxiv.org/abs/1903.04268)

这段代码受到了 evosax 中算法实现的启发或使用了其实现。有关 evosax 的更多信息,请访问以下网址:GitHub 链接:https://github.com/RobertTLange/evosax

初始化

使用给定参数初始化ARS算法。

参数:
  • pop_size -- 种群大小。

  • center_init -- 种群的初始中心。必须是一个一维张量。

  • optimizer -- 使用的优化器(optimizer)。 默认情况下为 None。 仅 support "adam" 或 None。

  • lr -- 优化器的学习率。默认值为 0.05。

  • lr_decay -- 学习率的衰减因子。默认为 1.0。

  • lr_limit -- 学习率的最小值。默认为 0.001。

  • sigma -- 噪声的标准差。默认为 0.03。

  • sigma_decay -- 标准差的衰减因子。默认为 1.0。

  • sigma_limit -- 标准差的最小值。默认值为 0.01。

  • subspace_dims -- 子空间的维度。默认为 None。

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

step()[源代码]

ASEBO 算法的主要步骤。

此函数首先计算由适应度函数的梯度所张成的子空间,然后将梯度投影到该子空间。接着,它使用投影后的梯度计算步长方向,并更新搜索分布的中心和标准差。

record_step()[源代码]