【智能优化算法】鸡群算法 (Chicken Swarm Optimization, CSO),2014

前言

鸡群算法 (Chicken Swarm Optimization,CSO) 是一种新颖的仿生学算法,充分继承群智能优化特点,创新采用个体分类、协作优化,最大程度挖掘最优解,又能很好避免早熟现象。具有收敛快,寻优能力强的特点。

截止到 2023 年,算法引用趋势

1. 鸡群的生物行为

新型的仿生学算法—鸡群优化算法,它模拟群的等级制度和鸡群的群体活动行为。鸡群可分为几组,每组由一只公鸡和许多母鸡和小鸡组成,在特殊的等级制度下鸡群中不同鸡种搜寻食物时存在着竞争。公鸡搜索食物能力强,适应值小;母鸡其次;小鸡搜索食物能力最弱,适应值最大。

为了简化,文中通过下列规则理想化鸡群算法:

  1. 鸡群按公鸡个数来分组,每组由一只公鸡、一些母鸡和小鸡组成,有几只公鸡就有几组。
  2. 分组中,公鸡搜索能力最强,处于统治地位,适应值最小;搜索能力稍差的母鸡紧跟在公鸡周围搜索食物,适应度值稍大;其中一些母鸡还带领小鸡,小鸡搜索能力最差,只在母鸡周围搜索食物,适应度值最大,实现局部搜索功能。
  3. 在等级制度下,分组中公鸡的统治关系和母鸡—小鸡的母子关系将会改变。(每几代更新一次)
  4. 通过适应度值来建立这种等级秩序,并随机分组建立公鸡与母鸡的关系,随机建立母鸡—小鸡的母子关系。鸡群中,适应度值越小的个体越占有优势,可以优先获得食物,并且统领适应度值大的个体。 适应度值最小的个体对应鸡群中的公鸡,稍大的对应于母鸡,最大的对应于小鸡,在这种等级秩序下它们以组为单位合作,并按照各自的运动规律更新位置,进行搜索,最终搜索到最佳的觅食位置,即得到最优解。

2. 算法仿生设计

因为不同的鸡种有不同的运动规律, 因此,以下 3 种个体的位置更新策略各不相同。

2.1 公鸡的位置更新策略

适应度好的公鸡能够在更大的范围内搜索食物,而且比适应度差的公鸡能够优先获得食物实现全局搜索,它的位置更新受随机选取的其他公鸡位置的影响,则更新策略见下式:

式中:第 i i i 只公鸡位置的第 j j j 维的值表示为, k k k 表示当前的迭代次数,表示服从期望值为 0 ,方差值为 2 的正态分布随机数, 第 i i i 只公鸡的适应度为 f i f_i fi,随机选取公鸡 k k k 的适应度为 f k f_k fk, 分母中加上无穷小数 ε ε ε ,避免除数为零。

2.2 母鸡的位置更新策略

母鸡跟随伙伴公鸡搜索食物,位置更新受伙伴公鸡位置影响。由于母鸡的偷食行为,位置更新又与其它公鸡和母鸡有关系,则更新策略见式:

式中: Rand 是一个服从 [0,1] 均匀分布的随机数,该母鸡的伙伴公鸡 r 1 r_1 r1 的适应度值为 f r 1 f_{r1} fr1, S 1 S_1 S1 表示其伙伴公鸡对其的影响因子,其他公鸡和母鸡中随机选取个体 r 2 r_2 r2 的适应度值为 f r 2 f_{r2} fr2, S 2 S_2 S2 为其他鸡对其的影响因子。

2.3 小鸡的位置更新策略

小鸡在其母亲周围搜寻食物,它的搜索能力最差,位置受到母亲公鸡的影响,则更新策略见式 (6) 。

式中:母亲母鸡 m m m 位置的第 j j j 维数值为 x m x_m xm, j j j 母亲母鸡的位置对小鸡位置的影响因子为 P , 其为随机函数随机生成,取值范围一般为 (0,2)。

3. 算法流程

步骤如下:

  1. 初始化参数。 初始配置算法参数,主要是鸡群的大小、迭代的次数、种群关系的更新频率、个体位置的维度、公鸡母鸡小鸡在鸡群中的比例等。
  2. 初始化鸡群。 鸡群按适应度值排序分级,公鸡为前 RN 个个体,小鸡为最末 CN 个个体,其余均为母鸡。将鸡群按公鸡数分成 RN 个组,母鸡随机分配到个组中,确定公鸡和母鸡的伙伴关系。 随机选取 MN个母鸡,随机统领小鸡,确定母鸡小鸡的母子关系。
  3. 迭代开始,先判断是否需要更新分组,是否需要更新鸡群中的关系,需要则更新鸡群分组和鸡群中的关系;否则,公鸡、母鸡和小鸡的位置分别按照各自的位置更新策略, 对各自位置逐个进行更新,同时计算更新位置的适应度值。
  4. 个体位置更新。 新位置的适应度值与原位置适应度值相比,如果新的位置的适应度值小就更新个体位置,否则就保持原来的位置不变。
  5. 达到最大迭代次数后停止迭代,并输出最优解,否则回到第 3 步,循环迭代进行搜索。

4. Python 代码实现

Github: Intelligent-optimization-algorithm-Python/tree/master/鸡群算法/CSO

Reference

[1] MENG X , LIU Y , GAO X Z , et al. A new bio-inspired algorithm: chicken swarm optimization[J]. Lecture Notes in Computer Science ,2014 ,8794(1):86-94.

[2] 智能优化算法:鸡群优化算法-附代码

[3] Python实现鸡群算法

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
粒子群优化算法 (particle swarm optimization, PSO) 是一种基于群体智能优化算法,其算法原理可以概括为以下几个步骤: 1. 初始化一群粒子的位置和速度,并随机分配其初始位置和速度。 2. 计算每个粒子的适应度值,并根据适应度值更新每个粒子的最佳位置和全局最佳位置。 3. 根据每个粒子的最佳位置和全局最佳位置,更新粒子的速度和位置。 4. 判断是否满足停止条件,若满足则输出结果,否则回到第 2 步。 具体来说,PSO 算法的每个粒子都有一个位置向量和一个速度向量。在算法的每一轮迭代中,粒子的速度和位置会根据以下公式进行更新: $v_{i}(t+1)=wv_{i}(t)+c_{1}r_{1}(p_{i}-x_{i}(t))+c_{2}r_{2}(p_{g}-x_{i}(t))$ $x_{i}(t+1)=x_{i}(t)+v_{i}(t+1)$ 其中,$v_{i}(t)$ 表示粒子 $i$ 在时间 $t$ 的速度向量,$x_{i}(t)$ 表示粒子 $i$ 在时间 $t$ 的位置向量,$p_{i}$ 表示粒子 $i$ 的历史最佳位置,$p_{g}$ 表示全局最佳位置,$w$、$c_{1}$ 和 $c_{2}$ 是常数,$r_{1}$ 和 $r_{2}$ 是 $[0,1]$ 之间的随机数。 在算法的每轮迭代中,粒子的速度和位置会不断地更新,直到满足停止条件为止。通常,停止条件可以是达到最大迭代次数、适应度值达到一定阈值等。 PSO 算法通过模拟鸟群、鱼群等群体的行为,将一群粒子看作是搜索空间中的一个个潜在解,通过不断更新粒子的位置和速度,最终找到全局最优解或近似最优解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值