智能优化算法:猫群优化算法-附代码

智能优化算法:猫群优化算法


摘要:猫群算法 ( Cat Swarm Optimization,缩写为CSO)是由 Shu - An Chu 等人在 2006 年首次提出来的一种基于猫的行为的全局优化算法具有收敛快,寻优能力强的特点。

1.算法原理

在猫群算法中,猫即待求优化问题的可行解。猫群算法将猫的行为分为两种模式,一种就是猫在懒散、环顾四周状态时的模式称之为搜寻模式;另一种是在跟踪动态目标时的状态称之为跟踪模式。猫群算法中,一部分猫执行搜寻模式,剩下的则执行跟踪模式,两种模式通过结合率 MR(Mixture Ratio)进行交互,MR 表示执行跟踪模式下的猫的数量在整个猫群中所占的比例,在程序中 MR应为一个较小的值。利用猫群算法解决优化问题,首先需要确定参与优化计算的个体数,即猫的数量。每只猫的属性(包括由M维组成的自身位置)、每一维的速度、对基准函数的适应值及表示猫是处于搜寻模式或者跟踪模式的标识值。当猫进行完搜寻模式和跟踪模式后,根据适应度函数计算它们的适应度并保留当前群体中最好的解。之后再根据结合率随机地将猫群分为搜寻部分和跟踪部分的猫,以此方法进行迭代计算直到达到预设的迭代次数。

1.1 数学描述

搜寻模式用来模拟猫的当前状态,分别为休息、四处查看、搜寻下一个移动位置。在搜寻模式中,定义了 4 个基本要素:记忆池(SMP)、变化域(SRD)、变化数(CDC)、自身位置判断(SPC)。SMP 定义了每一只猫的搜寻记忆大小,表示猫所搜寻到的位置点,猫将根据适应度大小从记忆池中选择一个最好的位置点。SRD 表示选择域的变异率,搜寻模式中,每一维的改变范围由变化域决定,根据经验一般取值为0.2。CDC 指每一只猫将要变异的维数的个数,其值是一个从 0 到总维数之间的随机值。SPC 是一个布尔值,表示猫是否将已经过的位置作为将要移动到的候选位置之一,其值不影响 SMP 的取值。

1.1.1 搜寻模式过程描述

(1)将当前位置复制 j j j份副本放在记忆池中, j = S M P j= SMP j=SMP,即记忆池的大小为 j j j;如果 SPC 的值为真,令 j = ( S M P − 1 ) j = (SMP-1) j=(SMP1),将当前位置保留为候选解。
(2)对记忆池中的每个个体副本,根据 C D C CDC CDC的大小,随机地对当前值加上或者减去 S R D SRD% SRD (变化域由百分率表示),并用更新后的值来代替原来的值。
(3)分别计算记忆池中所有候选解的适应度值。
(4)从记忆池中选择适应度值最高的候选点来代替当前猫的位置,完成猫的位置更新。

1.1.2 跟踪模式过程描述

跟踪模式用来模拟猫跟踪目标时的情况。通过改变猫的每一维的速度(即特征值)来更新猫的位置,速度的改变是通过增加一个随机的扰动来实现的。

(1)速度更新。整个猫群经历过的最好位置,即目前搜索到的最优解,记做 X b e s t X_{best} Xbest 。每只猫的速度记做 v i = v i 1 , v i 1 , . . . , v i d v_i = {v_{i1},v_{i1},...,v_{id}} vi=vi1,vi1,...,vid,每只猫根据公式(1)来更新自己的速度。
v i , d ( t + 1 ) = v i , d ( t ) + r ∗ c ∗ ( X b e s t , d ( t ) − x i , d ( t ) ) ,   d = 1 , 2 , . . . , M (1) v_{i,d}(t+1)=v_{i,d}(t) + r*c*(X_{best,d}(t)-x_{i,d}(t)),\,d =1,2,...,M \tag{1} vi,d(t+1)=vi,d(t)+rc(Xbest,d(t)xi,d(t)),d=1,2,...,M(1)
v i , d ( t + 1 ) v_{i,d}(t+1) vi,d(t+1)表示更新后第 i i i 只猫在第 d d d 维的速度值, M M M为维数大小; X b e s t , d ( t ) X_{best,d}(t) Xbest,d(t)表示猫群中当前具有最好适应度值的猫的位置; x i , d x_{i,d} xi,d指当前第 i i i 只猫在第 d d d维的位置, c c c是个常量,其值需要根据不同的问题而定。 r r r 是一个[0,1]之间的随机值。

(2)判断每一维的速度变化是否都在SRD内。给每一维的变异加一个限制范围,是为了防止其变化过大,造成算法在解空间的盲目随机搜索。SRD 在算法执行之前给定,如果每一维改变后的值超出了 SRD 的限制范围,则将其设定为给定的边界值。

(3)位置更新。根据公式(2)利用更新后的速度来更新猫的位置。
x i , d ( t + 1 ) = x i , d ( t ) + v i , d ( t + 1 ) ,   d = 1 , 2 , . . . , M (2) x_{i,d}(t+1)=x_{i,d}(t)+v_{i,d}(t+1),\, d=1,2,...,M \tag{2} xi,d(t+1)=xi,d(t)+vi,d(t+1),d=1,2,...,M(2)
式中, x i , d ( t + 1 ) x_{i,d}(t+1) xi,d(t+1)表示第 i i i 只猫更新后的位置。

2.算法流程

算法流程图如下:
在这里插入图片描述

3.算法结果

在这里插入图片描述

4.参考文献

[1]马知也,施秋红.猫群算法研究综述[J].甘肃广播电视大学学报,2014,24(02):41-45.

5.Matlab代码

https://mianbaoduo.com/o/bread/aJWcl5s=

猜你喜欢

转载自blog.csdn.net/u011835903/article/details/108339671