智能优化算法:混合蛙跳算法-附代码

智能优化算法:混合蛙跳算法


摘要:混合蛙跳算法(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(FbFw)(DmaxDDmax)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(FgFw)(DmaxDDmax)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=mn 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代码

个人资料介绍

在自然界的池塘中常常生活着一群青蛙,并且分布着许多石头,青蛙通过在不同的石头间进行跳跃去寻找食物较多的地方。每只青蛙通过跳跃到不同的石头来提高自己寻找食物的能力,而青蛙个体之间通过思想的交流与共享,实现信息的交互。混合蛙跳算法(Shuffled Frog Leaping Algorithm, SFLA)是模拟青蛙觅食过程中群体信息共享和交流机制而产生的一种群体智能算法,是一种全新的启发式群体智能进化算法。该算法由Eusuff和Lansey在2003年首次提出,并成功解决管道网络扩充中管道尺寸的最小化问题。关于蛙跳算法的研究目前还比较少,近年来国内外一些学者多将混合蛙跳算法用于优化问题、旅行商问题、模糊控制器设计等方面。 混合蛙跳算法的实现机理是通过模拟现实自然环境中青蛙群体在觅食过程中所体现出的协同合作和信息交互行为,来完成对问题的求解过程。每只青蛙被定义为问题的一个解。整个青蛙群体采用模因分组方法分为不同的子群体,来模拟青蛙的聚群行为,每个子群体称为模因分组。模因组中的每只青蛙都有为了靠近目标而努力的想法,具有对食物源远近的判断能力,并且受其他青蛙影响,这里称为文化。每个模因组都有自己的文化,影响着其他个体,并随着模因组的进化而进化。在模因组的每一次进化过程中,在每个模因组中找到组内位置最好和最差的青蛙。组内最差青蛙采用类似于粒子群算法中的速度位移模型操作算子,执行局部位置更新,对最差青蛙位置进行调整。模因组内经过一定次数的模因进化后,不同模因组间的青蛙重新混合成整个群体,实现各个模因组间的信息交流与共享,直到算法执行完预定的种群进化次数结束。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能算法研学社(Jack旭)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值