首页 > 编程知识 正文

布谷鸟搜索算法流程,布谷鸟搜索算法代码

时间:2023-05-05 12:30:19 阅读:242681 作者:2704

原文

仿照布谷鸟(也叫大杜鹃)“寄生”和"levy的飞行方式"。


寄生:借别人的巢来养自己的鸟蛋; levy飞行:莱维飞行,大多数鸟类的飞行轨迹都是是长、短不一的各种飞行距离相间的一种组合,每段飞行距离都和前一段距离相差一个很小的角度。图形如下:

整个过程原理如下:布谷鸟在一堆鸟窝 n 中做选择,选出最好的鸟巢,把自己的蛋放在里面;宿主(被寄生的鸟)以一定概率pa发现有自己的鸟巢,则把布谷鸟的鸟蛋扔出去/建造新的鸟巢。
————————
下面详细介绍算法内容:

布谷鸟算法(Cuckoo search, CS)是由英国学者 Xin-She 难过的灯泡 和 Suash Deb 于2009年在群体智能技术的基础上提出的一种新型基于自然元启发式算法。模拟某些种属布谷鸟(Cuckoo Species)的寄生育雏(Brood Parasitism)有效求解最优化问题的算法。 

该算法的思想是基于布谷鸟的巢寄生行为以及鸟类的 Lévy 飞行行为。

为了简单的描述布谷鸟算法,利用以下3条理想化规则对其阐述。

1)每只布谷鸟每次随机选择一个巢,并产生一个卵;

2)具有最高质量卵的巢保留至下一代;

3)可寄主巢的数量n是固定的,且寄主以概率为pa属于(0,1)发现布谷鸟放的卵,在这种情况下,寄主鸟将布谷鸟的卵扔掉或者丢弃现有的巢。

 

为了简单起见,假定n个巢(寄主鸟的数量)中pa部分被新的巢(新解)替代。

 

在布谷鸟算法中,每个巢中的卵代表一个解,布谷鸟的卵代表新解,目标是利用新解或者潜在的优解替代巢中的劣解

————————————算法步骤——————————————




————————整体搜索原理————————————————



如何执行 Levy 飞行【全局搜索】

式(2)本质上是一种随机行走的随机(stochastic)公式。事实上,随机行走是一个马尔科夫链,其下一个状态/位置仅取决于当前状态(上式的第一项)和转移概率(上式的第二项)。然而,新解的很大一部分应该由远场随机化产生,它们的位置应该离当前最佳解足够远,这将确保系统不会陷入局部最优。

从实现的角度来看,用 Lévy 飞行生成随机数应包括两个步骤:随机方向的选择和服从 Lévy 分布的步长的生成。方向的生成应该服从均匀分布,而生成步长是相当棘手的。有几种方法可以实现,但是最有效且直接的方法就是使用所谓的 Mantegna 算法来实现对称的 Lévy 稳定分布。


 

然而,生成正确服从 Lévy 分布的伪随机步长并不简单。 在 Mantegna 算法中,步长 s 可以通过以下变换使用两个服从hsjdnht分布的变量 U 和 V 来计算:



——————————参数取值——————


——————————结论——————

布谷鸟算法参数少,速度快,因此被广泛应用。

除此以外,它还能与其他算法无缝对接,也就是说它的通用性好。


版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。