Moth Flame Optimization飞蛾扑火算法与鸟群(粒子群)算法PSO浅析

飞蛾扑火算法Moth Flame Optimization

MFO算法2015年诞生,就是固定数量的Moth(飞蛾)在解空间内游荡(游荡路线见更新公式)寻找更合适的位置(更符合目标函数的解),而Flame(火)就是目前最优秀的解(Flame数量处于变化)。

理解粒子群PSO的同学就比较好理解这类算法,相对粒子群算法,这个算法区别在:

1、更新公式中,新Moth的解变化范围更大,让MFO比传统粒子群的开发能力更强;

2、Flame个数随迭代变化。PSO始终追逐一个最优解,而MFO最初拥有n个Flame(同时n个moths),在迭代中逐步淘汰最次Flame,最终剩1个最优秀Flame。如此,迭代之初Moths(PSO的粒子)不会迅速集中,有利于MFO的开发能力;

3、更新公式中r取值的变化也是为了加强迭代末期的探索能力。后期可以让新Moth更加接近Flame,提高了探索能力。

这个算法求解优势在不需要求导,Hessian 矩阵,可以应付更多类型的函数。

但是在单峰函数unimodal中探索能力exploration不如最速下降法,牛顿法,换言之,精度不够,可以选择非常高的迭代次数来弥补。

在多峰函数multimodal中开发能力强,善于发现全局极值global minimum,避开局部极值local minimum。

本人初学,目前认为如果使用时发现每次运行结果都差别很大(精度也不够),直接加大迭代次数就可以应付。

1、 初始n个moth,位置在解空间内随机分布

2、 向量存储每个moth 的Fitness value(性能指标或求极值目标方程)

3、 将第一代moth位置排序后作为Flame坐标(最满意的解放在最上面)

4、 更新位置,每个moth的单个维度的值依据更新公式按螺旋轨迹向对应Flame飞去,当moth数量小于等于flame数量时,第i个moth追逐第i个flame;当moth数量大于flame数量时,多出来的moth追逐最末flame

5、 moth位置更新后需要检查是否越界,超过极值即重新赋极值

6、 计算所有moth的Fitness value,与之前Flame的Fitness value共同排序,将拥有n个最优秀Fitness value的解作为新的Flame,最满意的解放在首行。

7、 计算Flame数量,其随着迭代次数增长而逐渐减少,迭代结束时仅有1个Flame

在这里插入图片描述

在这里插入图片描述

引用下文论文中的两张图,介绍Moth游荡的路线:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
paper介绍moth走螺旋线,但是实际更新公式,每次更新1个元素,而不是每个Moth的所有元素一起更新。如果用Matlab画图就发现2D解空间中Moth并不是绕螺旋线。所谓螺旋线只是让Moth解中每一维的元素有更大取值空间(更强的开发能力exploitation),因为他让新Moth取值不局限于Flame和旧Moth,可以大于这两点,可以小于这两点,也可以在两点之间活动。这是圆的优势,而粒子群PSO的直线让新粒子只能选最优粒子和旧粒子之间的值。第二点,相对圆,螺旋线的w末尾让Moth有接近Flame的机会,这就代表Moth可以探索,提高解的精度,这就是螺旋线的优势了。文章末尾的Paper在最后推荐大家深入研究不同螺旋线的带来不同效果。

迭代算法步骤:

1、 随机散布n个moth位置

开始迭代

2、 根据当前迭代次数计算Flame数量fn

3、 将越界moth的位置重置为空间边界值(解为向量时,仅重置具体越界元素)

4、 计算所有moth的性能指标或者目标方程值

5、 Flame选择:第1次迭代时,将moth根据性能指标从优到劣排列,并作为flame;

第1 次之后的迭代,将flame和上一次迭代的moth共同根据性能指标排列,选前fn个优秀解(包含flame和新的moth)作为火焰,取最优解作为最优flame

6、 重新计算r值,介绍见更新公式

7、 根据更新公式,逐个更新moth中每个元素(每次产生新的随机数t)。第i个moth追逐第i个火焰,当i>火焰数量fn时,追逐第fn个火焰

本次迭代结束,重新返回第2步;

全部迭代结束后,最优flame作为最终解。
可能的应用:
在这里插入图片描述

焊缝设计优化
在这里插入图片描述
齿轮链优化设计
在这里插入图片描述
弹簧优化设计

参考文献:

Mirjalili, S. (2015). Moth-flame optimization algorithm: A novel nature-inspired heuristic paradigm. Knowledge-Based Systems, 89, pp.228–249.
https://zhuanlan.zhihu.com/p/50380893
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ry_zhao

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

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

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

打赏作者

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

抵扣说明:

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

余额充值