evox.algorithms.so.pso_variants.dms_pso_el

模块内容

DMSPSOEL

DMSPSOEL 算法。

API

class evox.algorithms.so.pso_variants.dms_pso_el.DMSPSOEL(lb: torch.Tensor, ub: torch.Tensor, dynamic_sub_swarm_size: int = 10, dynamic_sub_swarms_num: int = 5, following_sub_swarm_size: int = 10, regrouped_iteration_num: int = 50, max_iteration: int = 100, inertia_weight: float = 0.7, pbest_coefficient: float = 1.5, lbest_coefficient: float = 1.5, rbest_coefficient: float = 1.0, gbest_coefficient: float = 1.0, device: torch.device | None = None)[源代码]

基础: evox.core.Algorithm

DMSPSOEL 算法。

Class Methods

  • __init__: 通过给定的参数来初始化 DMSPSOEL 算法。

  • setup: 初始化 DMSPSOEL 算法,设置粒子位置的下限和上限,并配置初始种群、速度,以及用于跟踪最佳局部和全局位置与适应度值的缓冲区。

  • step: 使用 DMSPSOEL 执行单次优化步骤,更新本地最佳位置和适应度值,并根据惯性、认知和社会组件调整速度和位置。

请注意,evaluate方法在此类中未定义,它是由工作流设置的Problem.evaluate的代理函数;因此,它无法在除step之外的类方法中使用。

初始化

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

参数:
  • lb -- 粒子位置的下界。必须是一个一维张量。

  • ub -- 粒子位置的上界。必须是一个一维张量。

  • dynamic_sub_swarm_size -- 动态子种群的大小。默认值:10。

  • dynamic_sub_swarms_num -- 动态子种群的数量。默认为5。

  • following_sub_swarm_size -- 以下子群体的大小。默认为10。

  • regrouped_iteration_num -- 重组的迭代次数。默认为50。

  • max_iteration -- 最大迭代次数。默认为 100。

  • inertia_weight -- 惯性权重。默认值为0.7。

  • pbest_coefficient -- 认知权重。默认为 1.5。

  • lbest_coefficient -- 社会权重。默认为 1.5。

  • rbest_coefficient -- 社交权重。默认为 1.0。

  • gbest_coefficient -- 社交权重。默认为 1.0。

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

init_step()[源代码]
step()[源代码]

执行 DMSPSOEL 算法的单步操作。

此函数根据当前的适应度值更新种群、速度、个人最佳位置和个人最佳适应度。它还根据动态子群和跟随子群更新局部和全局最佳位置及适应度值。最后,它更新迭代计数。

_update_strategy_1()[源代码]
_cond_regroup(fit: torch.Tensor)[源代码]
_regroup(fit: torch.Tensor)[源代码]
_update_strategy_2()[源代码]