机器学习:布谷鸟算法PSO
【代码名称】:机器学习:布谷鸟算法PSO【代码介绍】:01 算法背景
布谷鸟算法(Cuckoo search algorithm,CS),顾名思义,肯定是和布谷鸟有关。没错,这个算法就是英国学者 Xin-She Yang 和 Suash Deb 于2009年模仿布谷鸟育雏行为而提出的一种新兴基于自然元启发式算法。
布谷鸟这种鸟很懒,不会筑巢,自己生娃自己不会孵,直接扔到其他种类鸟的鸟巢中,但是有时候会被宿主鸟妈妈发现不是自己的蛋,然后就会被抛弃,甚至放弃这个巢。但是布谷鸟一般会比其他的鸟更早破壳,他们还有另外一种隐藏技能,幼鸟会模仿宿主鸟孩子的叫声来骗取鸟妈妈的信任,同时他们还会本能地把其他的蛋推下巢,从而获得更多的食物。
因此,我们可以这样理解:鸟巢=蛋=问题解,蛋能否成功被宿主鸟孵化并茁长成长是衡量问题解好坏的唯一标准 。布谷鸟在寻找鸟巢下蛋的过程就是在D维空间中寻找解的过程,而鸟巢的好坏象征着解的好坏。
02 算法原理
在自然界中,布谷鸟寻找适合自己产卵的鸟窝位置是随机的或是类似随机的方式,为了模拟布谷鸟寻窝的方式,首先,需要设定以下3个理想的状态
(1)布谷鸟一次只产一个卵,并随机选择鸟窝来孵化它;
(2)在随机选择的一组鸟窝中,最好的鸟窝将会被保留到下一代;
(3)可利用的鸟窝数量n是固定的,一个鸟窝的主人能发现一个外来鸟蛋的概率Pa∈
可能会有人会问,怎么随机去寻找鸟窝的位置。因为更新位置的方法十分重要,关系到后面算法收敛的速度。那这个时候,我们就不得不提到另外一个概念——“莱维飞行”。一些研究证明,使用莱维飞行(Levy Flight)的方式可以让布谷鸟更有效地去寻找全局最优解而不至于陷入局部最优解中。
作者:大山海经
链接:https://www.jianshu.com/p/b4b9264810de
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【代码截图】:
【代码下载】:
页:
[1]