栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

一种改进的鸡群算法 -附代码

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

一种改进的鸡群算法 -附代码

一种改进的鸡群算法

文章目录
  • 一种改进的鸡群算法
    • 1.鸡群优化算法
    • 2.改进鸡群算法
    • 3.实验结果
    • 4.参考文献
    • 5.Matlab代码
    • 6.python代码

摘要:针对鸡群算法在求解高维优化问题时易陷入局部最优和出现早熟收敛的情况,提出一种改进的鸡群算法。算法中对小鸡的位置更新公式中加入向小鸡自身所在群中的公鸡学习部分,并引入惯性权值和学习因子。

1.鸡群优化算法

基础鸡群优化的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/108333906

2.改进鸡群算法

对于式(6) 中的小鸡位置更新公式,小鸡只向自己的妈妈学习,而并没有向小鸡自身所在群中的公鸡学习。小鸡在更新自己的位置时只能获取自己妈妈的位置信息,而无法获取整个子群中公鸡的位
置信息。当妈妈母鸡陷入局部最优时,小鸡因为只向自己的妈妈学习,也会陷入局部最优。因此,鸡群算法会陷入局部最优。文中对小鸡的位置更新公式进行了改进,更新公式中加入了向小鸡自身所在群中的公鸡学习部分。改进后的位置更新公式如下:
x i , j ( t + 1 ) = w ⋅ x i , j ( t ) + F ⋅ ( x m , j ( t ) − x i , j ( t ) ) + C ⋅ ( x r , j ( t ) − x i , j ( t ) ) (7) begin{array}{c} x_{i, j}(t+1)=w cdot x_{i, j}(t)+F cdotleft(x_{m, j}(t)-right. left.x_{i, j}(t)right)+C cdotleft(x_{r, j}(t)-x_{i, j}(t)right) end{array} tag{7} xi,j​(t+1)=w⋅xi,j​(t)+F⋅(xm,j​(t)−xi,j​(t))+C⋅(xr,j​(t)−xi,j​(t))​(7)
式中:m 为小鸡对应的妈妈母鸡;r 为妈妈母鸡自身所在群中的公鸡;C 为学习因子,表示小鸡向自身所在群中公鸡学习的程度;w 为小鸡的自我学习系数,这与粒子群算法中的惯性权重很相似。

W的计算如下:
w = w min ⁡ ⋅ ( w max ⁡ / w min ⁡ ) ( 1 / ( 1 + 10 t / N g e n ) ) (8) w=w_{min } cdotleft(w_{max } / w_{min }right)^{left(1 /left(1+10 t / N_{mathrm{gen}}right)right)} tag{8} w=wmin​⋅(wmax​/wmin​)(1/(1+10t/Ngen​))(8)
在综合考虑算法的收敛精度、收敛速度和鲁棒性的情况下,F 取[0.4,1]之间的随机数,C = 0.4,w随迭代次数的增加从 0.9 到0.4指数递减。

算法的详细流程如下:

  1. 初始化鸡群 x,并定义相关参数 N R ,N H ,N C ,N M等;

  2. 计算鸡群的适应度值 fitness,初始化个体当前最好位置 P best 和鸡群全局最好位置 g best ,t = 1;

  3. 如果t%G = 1,排序fitness,建立鸡群的等级制度,将鸡群分成数个子群并确定母鸡和小鸡的对应关系;

  4. 使用式(1)、式(3) 和式(7) 分别更新公鸡、母鸡和小鸡的位置并分别计算每个个体的适应度值;

  5. 更新鸡群的个体当前最好位置和鸡群全局最好位置;
    6)t = t + 1,如果满足迭代停止条件,则停止迭代,输出最优值,否则转到 3)。

3.实验结果

4.参考文献

[1]孔飞,吴定会.一种改进的鸡群算法[J].江南大学学报(自然科学版),2015,14(06):681-688.

5.Matlab代码 6.python代码
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/965665.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号