三十四 优化算法笔记 鸽群算法 (三十四优化算法是什么)
(以下形容,均不是学术用语,仅供大家快乐的浏览) 鸽群算法是依据鸽子依据磁场而领有高明识途技巧提出的优化算法。
算法提出于2014年(究竟是08年还是14年?援用显示08),也算有些年头了。
这也是一个由中国钻研者提出的优化算法,可喜可贺。
鸽群算法中的集体和粒子群算法中的粒子结构相似,都由位置和速度组成。
在鸽群算法中,鸽子的航行行为依据迭代次数分为了两个阶段。
便捷来说,阶段一贯着以后最优位置航行,阶段二向着自身周围航行。
上方将具体形容其航行步骤
本次的主角就是鸽子了。
鸽群中鸽子数量为N,每只鸽子的位置为,速度为,该位置的优劣由其顺应度函数计算得出。
在鸽群算法中,鸽子的行为依照迭代次数划分为两个阶段,阶段1占整个迭代次数的比例为NcRate,普通的NcRate取值为0.75。
阶段2为迭代次数大于的局部。
阶段2相对复杂,首先须要对集体启动排序,将集体均分为两组,较优的那组坚持位置不变,同时提供其位置、顺应度值作为参数,供较差的那组确定它们的新位置所在。
公式(3)求出了较优的那局部鸽子的重心所在,公式(4)则是让较差的局部鸽子向着较优局部鸽子的重心随机航行了一段距离。
文章没有说明鸽群算法能否须要经常使用贪心算法,上方会各自启动一次性实验看看成果。
顺应度函数。 实验一 : 无贪心步骤
从图像可以看出,算法的收敛速度和精度都不错。
然而可以显著留意到在40代左右,汇集于右下最优位置左近的集体会有一个向核心汇集的环节,数了一下,刚好是10个集体。
这应该是阶段2中较差的局部集体降级位置造成的。
本次实验阶段2时,可以以为其顺应度函数简直等于0,集体位置简直抵达90。
则Nc计算公式如下:
可知集体会向着9处行进,并最终收敛到此处。
可以看出阶段2中公式(3)设计欠妥(当然,当最优解在0处时,精度会有很大的优化)。
公式(3)应去除分母中求和前的N/2。
从结果来看,鸽群算法还不错,然而功能如同不太稳固,毕竟只用了阶段1就计算出了却果,情有可原。
上方看看减少了贪心算法的实验。
实验二:有贪心步骤
图像如同比实验一好了一些,然而并不能说明疑问。
实验一中存在的疑问在实验二中依然存在,只是因为贪心步骤的缘故,鸽群不可飞到差于自己的位置,阶段2依然没有任何作用。
实验结果如同好了一丢丢,但简直可以以为没有变动。
鸽群算法是受鸽子依据磁场识途的个性启示而提出的优化算法。
算法的结构便捷,关键分为两个阶段,其中阶段1为向着最优位置行进,阶段2则是较差集体向着较优集体核心行进(bushi)。
从实验中可以看出,原算法的公式设计有些许毛病,启动修正后应该能够获取十分不错的结果。
参考文献
Haibin, Duan, Peixin, et al. Pigeon-inspired optimization: a new swarm intelligence optimizer for air robot path planning[J]. International Journal of Intelligent Computing & Cybernetics, 2008.提取码:wjok 以下目的纯属团体yy,仅供参考
鸽巢疑问原理
鸽巢疑问是一种驰名的组合数学识题,关键触及的是如何给$n$个东西调配到$m$个容器中,使得每个容器中的东西数量平均散布,即每个容器中的东西数差距最小。
这个疑问可以用数学方法处置,其中一个关键原理是抽屉原理。
抽屉原理是指,假设将$n+1$个东西放入$n$个抽屉中,那么至少有一个抽屉中至少有两个东西。
关于鸽巢疑问来说,咱们可以将$n$个东西看成$n$个鸽子,将$m$个容器看成$m$个鸽巢,将每个容器中的东西数量看成一只鸽子。
依据抽屉原理可以得出,假设$n>m$,那么肯定存在一个鸽巢中至少有两只鸽子,也就是至少有一个容器中的东西数量超越了平均数。
因此,为了防止鸽巢疑问,咱们要使得$n \leq m$,即容器的数量不少于东西的数量。
同时,咱们须要将$n$个东西尽或者平均地散布到$m$个容器中,须要满足每个容器中的东西数量与一切容器中东西数量的平均数的差距最小。
这可以经过一些算法来成功,如贪心算法、灵活布局等。
总之,鸽巢疑问的处置原理是抽屉原理,即应用数学原理剖析疑问的实质,从而找到最优解。
在实践运行中,鸽巢疑问有着宽泛的运行,如在数据库查问优化、义务调配、货物调度等畛域中都有关键的运行。
数学标题
不能办到,要素:它要求每个笼子里装的鸽子数不同,也就可以说是恣意两个笼子的鸽子数都有差值,数目最小的两个笼子的差值越大,其和越凑近鸽子总数,能放的空间就越小,反之,差值越小,能放的空间越大。那么先取差值最小的来试试看,假设能装下,则可以成功,否则成功不了那么先取1、2、3、4、5、6、7、8、9、102-1=1,空间够大不过他们加起来大于50,比总数还大了,所以50只鸽子不能按要求来分“有人想把50只鸽子区分装进10个鸽子笼里放养”说明了每一个笼子里都有鸽子,所以有一个笼子的不放的方法不行
文章评论