IBGSA:improved binary gravitational search algorithm
改进的引力搜索算法
GSA
原始算法GSA[1](引力搜索算法)在2009年被首次提出,是一种基于万有引力定律和牛顿第二定律的种群优化算法。
该算法通过种群的粒子位置移动来寻找最优解,即随着算法的循环,粒子靠它们之间的万有引力(两个粒子之间的引力与两个粒子的质量成正比,与两粒子之间的距离成反比)在搜索空间内不断运动,当粒子移动到最优位置(形成最大质量)时,最优解便找到了。
- 初始化各个参数和种群位置
- 计算适应度值
- 计算粒子的惯性质量、每个粒子的在每个方向的引力、加速度
- 更新每个粒子的位置及适应度值和全局最优值
- 达到终止条件就结束,输出最优解,否则就返回步骤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 中的改进
- 改变
公式(12)
中的函数, - 把
公式(7)
中的汉明距离 除以空间维n来将其归一化, - 采用精英主义策略,当新agent的适应度值高于前一个agent时,更新agent的位置,否则agent将停留在原来的位置。式(12)中的函数修改如下:
这里面的 由公式(14)
得出:
agent 的新位置就成了:
-
E. Rashedi, H. Nezamabadi-pour, and S. Saryazdi, “GSA: A Gravita-tional Search Algorithm,” Information Sciences, vol. 179, no. 13, pp. 2232–2248, 2009. ↩
-
E. Rashedi, H. Nezamabadi-pour, and S. Saryazdi, “BGSA: binary gravitational search algorithm,” Natural Computing, vol. 9, no. 3, pp. 727–745, 2009. ↩
网友评论