1、本质

寻找最值的算法

2、算法的基本思想

此算法结合莱维飞行寻找函数最小值。其中莱维飞行简单来说就是产生一种随机步长的算法,以短步长为主,偶尔产生长步长,避免函数新解取到被求解方程式的局部最小值。

求解最小值的过程中出现最优解的迭代过程主要有两种迭代思路(结合自然界布谷鸟的借巢育子的行为):(1)采用莱维飞行的路径来寻找较优解(布谷鸟首先采用莱维飞行找窝下蛋);(2)找到的较优解有一定的概率Pa被替换,替换后的解最为新的较优解(宿主鸟发现假蛋,将假蛋移除损坏或者重新建立新的巢穴)。两种迭代公式如下:




java布谷鸟过滤器实现有哪些 布谷鸟算法_边缘计算


java布谷鸟过滤器实现有哪些 布谷鸟算法_算法_02


3、运用CS算法求解函数最优解的操作步骤:

  1. 目标函数
  2. 产生n个解的初始集合-------(产生n个寄主的初始群落)
  3. While(t<最大步长)
  4. 随机通过莱维飞行产生一个解
  5. 评估解的质量或者目标函数的值
  6. 从n个解中随机选取一个
  7. 比较两个解,找出一个较优解,作为新解。
  8. 一部分的解会存在一定的概率(Pa)被抛弃,由(2)式产生新解

保留最优解

4、Matlab仿真程序的设计

(1)莱维飞行程序func_levy.m

normrnd函数:生成服从正态分布的随机数;R=normrnd(MU,SIGMA):生成服从正态分布(MU参数代表均值,SIGMA参数代表标准差)的随机数。R=normrnd(MU,SIGMA,m,n):生成m×n形式的正态分布的随机数矩阵。

Mantegna方法,生成服从萊维分布的随机步长的方法如下:


java布谷鸟过滤器实现有哪些 布谷鸟算法_人工智能_03


(2)主函数Csmain.m

参数设置;

初始化寄主的鸟巢,随机产生一个解;

通过levy飞行产生一个解;

与上一代比较,更新适应度较优的鸟巢;

根据发现概率舍弃一个鸟巢并建立一个新鸟巢;

列出当前最佳的鸟巢;

更新当代最优鸟巢的位置;

输出这个鸟巢里的每个鸟蛋,即是每个解。