IBGSA 改进的二进制引力搜索算法

IBGSA:improved binary gravitational search algorithm

改进的引力搜索算法

GSA

原始算法GSA[1](引力搜索算法)在2009年被首次提出,是一种基于万有引力定律和牛顿第二定律的种群优化算法。

该算法通过种群的粒子位置移动来寻找最优解,即随着算法的循环,粒子靠它们之间的万有引力(两个粒子之间的引力与两个粒子的质量成正比,与两粒子之间的距离成反比)在搜索空间内不断运动,当粒子移动到最优位置(形成最大质量)时,最优解便找到了。

  1. 初始化各个参数和种群位置
  2. 计算适应度值
  3. 计算粒子的惯性质量、每个粒子的在每个方向的引力、加速度
  4. 更新每个粒子的位置及适应度值和全局最优值
  5. 达到终止条件就结束,输出最优解,否则就返回步骤3进入下一轮迭代

BGSA

提出了BGSA[2]算法来解决二值问题。在BGSA算法中,每个agent (particle)都有四个参数:位置、被动引力质量、主动引力质量和惯性质量。惯性质量和引力质量由适应度函数计算,而质量位置表示问题的解。在算法的连续迭代过程中,对引力和惯性质量进行了概率调整。BGSA算法的数学解释如下:假设存在一个含有N个agent(粒子)的系统,其中第i个agent的位置为:

其中n为空间维数, 为第i个agent在第d维数中的位置。每个位置 只取二进制值(1或0),第i个agent在t时刻的质量更新如下:

其中

其中 是 agent k 在 t 时刻的适应度值,对于最大化问题,分别给出了和。

第 d 维第 i 个 agent 在第 t 时刻作用的总力 F 计算方法为:

为第i个agent到第j个agent在t时刻的汉明距离:

的值是重力常数G0的初值与时间t的函数:

的值是加速度:

为了利用 BGSA 算法求解优化问题,在每次迭代t中更新每个agent的位置和速度。agent的速度限制为。
则下一刻的速度是:

第i个agent的新位置如式(11)所示。是一个在0和1之间选取的随机值:

其中,

BGSA 的停滞现象

停滞是一种agent降到局部最小值的情况。当某一刻的速度为零时就会发生这种情况。IBGSA的目标便是为了减轻停滞效应。

IBGSA 中的改进

  1. 改变公式(12)中的函数,
  2. 公式(7)中的汉明距离 除以空间维n来将其归一化,
  3. 采用精英主义策略,当新agent的适应度值高于前一个agent时,更新agent的位置,否则agent将停留在原来的位置。式(12)中的函数修改如下:

这里面的 由公式(14)得出:

agent 的新位置就成了:


  1. E. Rashedi, H. Nezamabadi-pour, and S. Saryazdi, “GSA: A Gravita-tional Search Algorithm,” Information Sciences, vol. 179, no. 13, pp. 2232–2248, 2009. ↩

  2. E. Rashedi, H. Nezamabadi-pour, and S. Saryazdi, “BGSA: binary gravitational search algorithm,” Natural Computing, vol. 9, no. 3, pp. 727–745, 2009. ↩

你可能感兴趣的:(IBGSA 改进的二进制引力搜索算法)