evox.algorithms.so.de_variants.jade

模块内容

JaDE

自适应差分进化算法 JaDE,用于优化任务。

API

class evox.algorithms.so.de_variants.jade.JaDE(pop_size: int, lb: torch.Tensor, ub: torch.Tensor, num_difference_vectors: int = 1, mean: torch.Tensor | None = None, stdev: torch.Tensor | None = None, c: float = 0.1, device: torch.device | None = None)[源代码]

基础: evox.core.Algorithm

自适应差分进化算法 JaDE,用于优化任务。

Class Methods

  • __init__:用给定的参数初始化 JaDE 算法,包括种群大小、边界、变异策略和其他超参数。

  • init_step: 执行种群适应度的初始评估,并进入第一次优化步骤。

  • step: 执行 JaDE 算法的单个优化步骤,涉及突变、交叉、选择和策略参数的适应性。

请注意,evaluate 方法在这个类中未定义。它预计由 Problem 类或其他外部组件提供。

初始化

根据给定的参数初始化 JaDE 算法。

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

  • lb -- 搜索空间的下界。必须是一个一维张量。

  • ub -- 搜索空间的上界。必须是一个一维张量。

  • num_difference_vectors -- 在变异中使用的差异向量的数量。必须至少为 1 且小于种群大小的一半。默认为 1。

  • mean -- 用于使用正态分布初始化种群的均值。默认值为 None。

  • stdev -- 用于用正态分布初始化种群的标准差。默认为 None。

  • device -- 用于张量计算的设备(例如,“cpu”或“cuda”)。默认为 None。

  • c -- 自适应参数 F_u 和 CR_u 更新的学习率。默认值为 0.1。

init_step()[源代码]

执行种群适应度的初步评估,并进入第一个优化步骤。

此方法评估初始种群的适应度,然后调用 step 方法进行第一次优化迭代。

step()[源代码]

执行JaDE算法的单次优化步骤。

这涉及以下子步骤:

  1. 变异:通过结合差异向量并调整变异因子 F 来生成突变向量。

  2. 交叉:根据交叉概率 CR 在当前种群和变异向量之间执行交叉。

  3. 选择:评估新种群的适应度,并在当前种群和新种群之间选择更优的个体。

  4. 自适应参数的更新:根据成功的突变来更新参数F_u和CR_u。

_select_rand_pbest_vectors(p: float) torch.Tensor[源代码]

从种群中选择 p-best 向量进行变异。

参数:

p -- 考虑为 top-p 最佳的群体比例。必须在 0 和 1 之间。

返回:

包含选定的 p-best 向量的张量。