群体智能优化算法之猫群算法(Cat Swarm Optimization)

在这里插入图片描述

获取更多资讯,赶快关注上面的公众号吧!

第十三章 猫群算法

13.1 介绍

猫群优化算法(Cat Swarm Optimization)是基于猫科动物的捕食策略提出的一种新型的群优化算法,由Shu-An Chu等人[1]在2006年首次提出。一般来说,猫大部分时间都处于休息状态,很少去搜寻和捕捉猎物。但是猫的警觉性非常高,即使在休息的时候也处于一种高度的警惕状态,时刻保持对周围环境的警戒搜寻;它们对于活动的目标具有强烈的好奇心,一旦发现目标便进行跟踪,并且能够迅速地捕获到猎物。猫群算法正是关注了猫的搜寻和跟踪两种行为。

首先,将猫随机分布在整个搜索空间中,然后将猫细分为两种模式。第一种模式称为“搜寻模式”,该模式下的猫处于休息状态,密切注视着周围的环境;第二种模式称为“追踪模式”,是猫跟踪、追逐动态猎物时的状态。通过结合这两种模式往往能实现全局优化。

猫群算法中,一部分猫执行搜寻模式,剩下的则执行跟踪模式,两种模式通过结合率MR(Mixture Ratio)进行交互,MR表示执行跟踪模式下的猫的数量在整个猫群中所占的比例,在程序中MR应为一个较小的值,因为猫只会花一小部分时间跟踪它们的食物。

13.2 搜寻模式(Seeking Mode)

搜寻模式用来模拟猫的当前状态,分别为休息、四处查看、搜寻下一个移动位置。在搜寻模式中,定义了4个基本要素:维度变化数(counts of dimension to change,CDC)、维度变化域(seeking range of selected dimension,SRD)、搜寻记忆池(seeking memory pool,SMP)和自身位置判断(self-position consideration,SPC)。CDC指用于变异的维度个数,其值是一个从0到总维数之间的随机值;SRD声明了所选维度的变化量,对于需要进行变异的维度,新旧值之间的变化不能超出范围定义,而这个范围正是由SRD定义的;SMP定义了每一只猫的搜寻记忆大小,表示猫所搜寻到的位置点,猫将根据适应度大小从记忆池中选择一个最好的位置点;SPC是一个布尔值,表示猫是否将已经过的位置作为将要移动到的候选位置之一,其值不影响SMP的取值。
搜寻模式过程如下:

  1. 将猫catk的当前位置复制j份,即j=SMP,如果SPC为true,令j=(SMP-1),则保留当前位置为其中的一个候选解;

  2. 对于每一个副本,根据CDC,随机地对当前值加上或者减去SRD%,并替换旧值;
    X c n = ( 1 ± S R D × R ) × X c (1) {X_{cn}} = (1 \pm SRD \times R) \times {X_c}\tag 1 Xcn=(1±SRD×R)×Xc(1)
    其中Xc为当前位置,Xcn为新的位置,R为[0,1]内的任意值。

  3. 计算所有候选解的适应度值(FS);

  4. 如果所有的FS不全相等,则根据式(2)计算每个候选解的选择概率,否则设置每个候选解的选择概率为1;(该过程实际上进行了缩放归一化
    P i = ∣ F S i − F S b ∣ F S max ⁡ − F S min ⁡ , w h e r e 0 < i < j (2) {P_i} = \frac{{\left| {F{S_i} - F{S_b}} \right|}}{{F{S_{\max }} - F{S_{\min }}}},{\rm{ }}where{\rm{ }}0 < i < j\tag 2 Pi=FSmaxFSminFSiFSb,where0<i<j(2)
    其中Pi为当前解的选择概率,FSi为猫的适应度值,FSmax和FSmin分别为适应度的最大和最小值,对于最大化问题,FSb=FSmin,而对于最小化问题,FSb=FSmax

  5. 从记忆池的候选解中按照选择概率随机选择位置进行移动,并替换catk的位置。

13.3 跟踪模式(Tracing Mode)

跟踪模式对猫在跟踪目标时的情况进行建模,一旦猫进入跟踪模式,其会根据每一维上的速度进行移动。跟踪模式过程如下:

  1. 对每只catk,按照式(3)更新其当前迭代每一维的速度;
    v k , d ( t ) = v k , d ( t − 1 ) + r 1 ⋅ c 1 ⋅ [ x b e s t , d ( t − 1 ) − x k , d ( t − 1 ) ] d = 1 , 2 , … , M (3) \begin{array}{l}{v_{k, d}(t)=v_{k, d}(t-1)+r_{1} \cdot c_{1} \cdot\left[x_{\mathrm{best}, d}(t-1)-x_{k, d}(t-1)\right]} \\ {d=1,2, \ldots, M}\end{array}\tag 3 vk,d(t)=vk,d(t1)+r1c1[xbest,d(t1)xk,d(t1)]d=1,2,,M(3)
    其中xbest,d(t-1)是上一次迭代具有最优适应度值的猫的位置,xk,d(t-1)是上一次迭代catk的位置。c1为常数,r1为[0,1]之间的随机数。
  2. 判断速度是否在最大速度范围内,如果超出了边界,则取边界值;
  3. 根据式(4)更新catk的位置。
    x k , d ( t ) = x k , d ( t − 1 ) + v k , d ( t ) (4) {x_{k,d}}(t) = {x_{k,d}}(t - 1) + {v_{k,d}}(t)\tag 4 xk,d(t)=xk,d(t1)+vk,d(t)(4)

13.4 猫群优化算法

猫群算法CSO的伪代码如下:

Step1:创建N只猫;
Step2:将这些猫随机散布在M维解空间中,并为每只猫选择速度值,要求这些值位于最大速度范围内,然后根据MR随意地选择一定量的猫,将它们设置为跟踪模式,其他设置为搜寻模式;
Step3:将猫的位置代入适应度函数,从而评估每只猫的适应度值,记录最优猫。注意只需要记住最优猫的位置(xbest)即可,因为其表达了当前最优解;
Step4:根据模式标志移动猫,如果catk处于搜寻模式,则进行搜寻过程,否则进行跟踪过程;
Step5:根据MR,重新选取一定数量的猫设置其为跟踪模式,剩余的猫为搜寻模式;
Step6:判断终止条件是否满足,满足则算法终止,否则重复Step3~Step5。

参考文献

  1. Chu, S.-C., P.-w. Tsai, and J.-S. Pan. Cat Swarm Optimization. in PRICAI 2006: Trends in Artificial Intelligence. 2006. Berlin, Heidelberg: Springer Berlin Heidelberg.
  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

松间沙路hba

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值