布谷鸟搜索算法

算法定义

算法模拟布谷鸟使用别的鸟的巢穴来孵化自己的蛋的行为。

为了模拟这个过程,算法提出了三个规则进行模拟:

  1. 蛋巢数量固定,而布谷鸟的蛋被寄主发现的概率为\(p_{a} \in(0,1)\),如果发现外来鸟蛋,则鸟窝主人重新建立一个鸟窝。

  2. 布谷鸟每次只下一个蛋,并且将这个蛋放入随机选择的巢中。

  3. 最优质的蛋巢会被记录并传递给下一代。

基于以上三个假设,可以认为,鸟窝和卵用来指代待求解问题的解,卵是否能够被宿主鸟孵化并茁壮成长,是衡量解好坏的唯一标准。布谷鸟寻找鸟窝下蛋的过程就是在n维空间内寻找解的过程,鸟窝的好坏象征着解的好坏。

莱维飞行

在自然界中,动物会以随机或者准随机的方式寻找食物。一般来说,是根据当前的位置或状态和到下一个位置的转移概率而做出的下一次移动,因此动物的觅食过程实际上是随机行走,其选取的方向可以用数据建模的方式来表示。

莱维飞行是一类非高斯随机过程,其平稳增量服从莱维稳定分布。在飞行过程中,步长较小的短距离行走与偶尔较大步长的长距离行走相互交替,有利于增加种群多样性、扩大搜索范围,不至于陷入局部最优。

算法步骤

  1. 定义目标函数,对搜索函数初始化,并随机生成n个鸟窝的初始位置,设置种群规模、问题维数、最大发现概率P和最大迭代次数等参数。

  2. 选择适应度函数(目标函数)并计算每个鸟窝位置的目标函数值,并得到当前的最优函数值。

  3. 记录上一次最优函数值,利用莱维飞行对其他鸟窝的位置和状态进行更新。

  4. 现有位置函数值与上一代最优函数值进行比较,若更好,则改变最优函数值。

  5. 通过位置更新后,生成随机数r∈[0,1]与最大发现概率P进行比较,如果r<P,则对该巢的位置进行随机改变,反之则不变,最后保留最好的一组鸟窝位置。

  6. 若未达到最大迭代次数或最小误差要求,则返回步骤2,否则进行下一步。

  7. 输出全局最优位置。

改进方向

  1. 种群初始化进行优化(使用低差异序列生成在空间中均匀分布的随机点)

  2. 使用动态步长

  3. 动态调整寄主发现概率

  4. 对于越界的巢的处理(将其导航至最佳巢穴周围)

posted @ 2021-12-13 11:34  haoxuan98  阅读(632)  评论(0)    收藏  举报