evox.algorithms.so.pso_variants.pso

模块内容

PSO

基本粒子群优化算法 (PSO)

API

class evox.algorithms.so.pso_variants.pso.PSO(pop_size: int, lb: torch.Tensor, ub: torch.Tensor, w: float = 0.6, phi_p: float = 2.5, phi_g: float = 0.8, device: torch.device | None = None)[源代码]

基础: evox.core.Algorithm

基本粒子群优化算法 (PSO)

Class Methods

  • init 初始化 PSO 算法(Particle Swarm Optimization)与给定的参数(人口大小、下限和上限、惯性权重、认知权重和社会权重)。

  • step: 执行单次粒子群优化(PSO)步骤,更新局部最佳位置和适应度值,并基于惯性、认知和社会组件调整速度和位置。

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

初始化

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

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

  • w -- 惯性权重。默认值为0.6。

  • phi_p -- 认知权重。默认为 2.5。

  • phi_g -- 社会权重。默认值为 0.8。

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

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

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

step()[源代码]

使用PSO执行常规优化步骤。

该函数用于评估当前种群的适应度,更新局部最优位置和适应度值并根据惯性、认知和社会组件调整粒子的速度和位置该函数确保在更新位置和速度后,粒子的位置和速度都在指定的范围内。

如果当前的适应度比记录的局部最佳更好,则更新局部最佳位置和适应度值。全局最佳位置和适应度通过辅助函数确定。

速度是基于以前速度的加权总和、认知成分(个人最好)和社会成分(全局最好)进行更新的。然后,使用新的速度更新种群位置。

init_step()[源代码]

执行 PSO 优化的第一步。

请查看 step 以获取更多详细信息。