今天为各位讲解萤火虫算法,推文内容来源于《MATLAB智能优化算法:从写代码到算法思想》8章——萤火虫算法求解订单分批问题。
▎萤火虫算法基本思想
萤火虫算法通过模拟自然界中萤火虫个体之间的相互吸引从而达到寻优的目的。其中,萤火虫的发光机制和行为方式较为独特:
- 萤火虫的发光强度与距离光源的距离的平方成反比;
- 发光强度弱的萤火虫会被发光强度强的萤火虫所吸引;
- 两只萤火虫之间的吸引力会随着两只萤火虫之间的距离增大而降低;
- 光会被空气所吸收,即萤火虫发出的光只会在一定范围内被其它萤火虫所感知。
▎萤火虫算法数学公式推导
对于用FA求解一个维连续优化问题而言,有4个值得注意的要素:1)发光强度;2)两只萤火虫之间的距离;3)吸引力;4)萤火虫位置的更新。
(1)发光强度
如果求解的连续优化问题是求最小值问题,则处于空间位置为 的萤火虫的发光强度
如果求解的连续优化问题是求最大值问题,则第 只萤火虫 的发光强度
其中, 表示当变量为
(2)两只萤火虫之间的距离
第 只萤火虫和第 只萤火虫之间的距离
其中 是第 只萤火虫空间坐标 的第 个分量,
(3)吸引力
一只萤火虫的吸引力计算公式如下:
其中 表示这只萤火虫与另外一点的距离, 为一个常数,表示最大吸引力,
(4)萤火虫位置的更新
如果第 只萤火虫的光强度大于第只萤火虫的光强度,那么第 只萤火虫会被第只萤火虫所吸引,即第 只萤火虫所在的空间位置 会发生变化。
其中 是随机项系数,
▎萤火虫算法流程图

▎萤火虫算法伪代码
通过上述流程图可以清晰地了解到萤火虫算法求解问题的关键在于对萤火虫位置及发光强度的更新,为了进一步展示如何使用上述公式求解连续优化问题,现将上述公式体现在下表的伪代码中。

OK,今天就到这里啦,各位可点击下方图片留言。

















