智能优化算法:混合蛙跳算法
摘要:混合蛙跳算法(SFLA)是Eusuff等人 [1] 于2003年提出的一种基于群体的亚启发式协同搜索群智能算法. 该算法是建立在群中个体具有的模因进化和利用模因实现全局信息交换基础上的.具有概念简单、参数少、计算速度快、全局寻优能力强、易于实现等特点。
1.算法原理
混合蛙跳优化算法是模仿青蛙觅食过程中的群体信息交互机制而建立的一类智能计算优化算法。 该优化算法结合了模因(Meme)演算法和粒子群优化算法各自的优点,具有概念简单、控制参数少、计算量小、全局寻优能力强、鲁棒性好、易于实现等特点。 为此,选取该优化算法来求取相机模型的参数初始值。 其基本原理可描述为:
假设 L = F 1 , F 2 , … , F N L={F_1 ,F_2 ,…,F_N } L=F1,F2,…,FN为 N N N只青蛙组成的初始种群;其中, F i = x i 1 , x i 2 , … , x i S F_i = {x_{i1} ,x_{i2} ,…,x_{iS} } Fi=xi1,xi2,…,xiS为所求问题的 S S S维解空间中的第 i i i 只青蛙。 并且,将该种群内的青蛙个体按适应值降序排列。 接着把整个种群划分为 m m m个模因组,第 1 只青蛙划入第 1 个模因组,第 2 只青蛙划入第 2 个模因组,第 m m m只青蛙划入第 m m m个模因组,第 m + 1 m +1 m+1 只青蛙划入第 m + 1 m +1 m+1个模因组,依此类推,直至种群内所有青蛙分配完毕。
同时,把每一个模因组内具有最好适应值和最差适应值的青蛙分别标记为
F
b
F_b
Fb 和
F
w
F_w
Fw ,而该种群中具有最优适应值的青蛙标记为
F
g
F_g
Fg 。 然后,对模因组内的每一个青蛙执行局部位置更新操作,具体更新公
式为:
{
D
=
r
(
F
b
−
F
w
)
(
−
D
m
a
x
≤
D
≤
D
m
a
x
)
F
w
=
F
w
+
D
(1)
\begin{cases} D = r(F_b-F_w) \\ \quad \quad \quad \quad \quad \quad \quad (-D_{max}\leq D \leq D_{max})\\ F_w =F_w +D \tag{1} \end{cases}
⎩⎪⎨⎪⎧D=r(Fb−Fw)(−Dmax≤D≤Dmax)Fw=Fw+D(1)
式中,
r
r
r为0 ~1 之间的随机数;
D
D
D为青蛙移动的距离;
F
w
F_w
Fw为青蛙位置;
D
m
a
x
D_{max}
Dmax青蛙所允许移动的最大距离。
如果更新后得到的青蛙优于原来的青蛙,则可替代原模因组内的青蛙
F
w
F_w
Fw ;否则,用
F
g
F_g
Fg 代替
F
b
F_b
Fb ,执行局部位置更新操作:
{
D
=
r
(
F
g
−
F
w
)
(
−
D
m
a
x
≤
D
≤
D
m
a
x
)
F
w
=
F
w
+
D
(2)
\begin{cases} D = r(F_g-F_w) \\ \quad \quad \quad \quad \quad \quad \quad (-D_{max}\leq D \leq D_{max})\\ F_w =F_w +D \tag{2} \end{cases}
⎩⎪⎨⎪⎧D=r(Fg−Fw)(−Dmax≤D≤Dmax)Fw=Fw+D(2)
如果式(2)操作仍然不能获得更好适应值的青蛙或移动过程中超过了青蛙所允许的最大移动距离,那么就随机生成一个新的青蛙直接替代原来的
F
w
F_w
Fw 。 重复数次以上局部位置更新操作,并将所有模因组内的青蛙重新混合排序和划分模因组,再执行下一轮的数次局部位置更新操作,直到满足预先设定的收敛条件或者达到混合最大迭代次数为止。
2.算法流程
(1)初始化相关参数,在所求问题的定义域内随机产生 N N N 只青蛙,构成一个初始种群,并置模因组数为 m m m,模因组内的青蛙个数为 n n n,使其满足 N = m ∗ n N =m*n N=m∗n n;置混合最大迭代次数为 G G G。
(2)计算每只青蛙的适应值,并按照其适应值的大小降序排列、选出该种群中具有最优适应值的 F g F_g Fg 和划分模因组。
(3) 选出每个模因组的 F b F_b Fb , 依据式 (3) 和式(4),执行局部位置更新操作,更新每个模因组的 F w F_w Fw 。
(4)判断混合迭代次数是否达到 G G G 或者是否符合预先设定的收敛条件,如果不满足,则返回步骤(2)继续执行;如果满足,则结束算法,输出 F g F_g Fg,即所求问题的解。
3.算法结果
4.参考文献
[1]陈科尹,邹湘军,关卓怀,王刚,彭红星,吴崇友.基于混合蛙跳优化的采摘机器人相机标定方法[J].农业机械学报,2019,50(01):23-34.
[2]崔文华,刘晓冰,王伟,王介生.混合蛙跳算法研究综述[J].控制与决策,2012,27(04):481-486+493.
5.Matlab代码
个人资料介绍