智能优化算法:群居蜘蛛优化算法-附代码

智能优化算法:群居蜘蛛优化算法-附代码


摘要:群居蜘蛛优化(Social Spider Optimization,SSO) 算法是一种群体智能进化算法,该算法基于群居蜘蛛中个体与群体协作行为的模拟,考虑两个不同的搜索动因:雄性和雌性。按照性别,个体分属于两种不同的进化算子,并在群体内模仿不同的协作行为。该算法具有较好的收敛速度和全局搜索能力。

1.算法原理

群居蜘蛛(Social Spider)是一类倾向群居的蜘蛛物种,个体间保持有复杂的协作行为准则,根据雌雄执行多种任务,如捕食,交配,蜘蛛网设计及群体协作等。群居蜘蛛由个体和蜘蛛网络组成,个体分为雄性和雌性两种类别。种群依据个体雌雄分配不同的任务,个体之间通过直接或间接的协作将有用信息通过蜘蛛网络传递给群居中的其他个体,并将此信息编码成振动的强弱在个体间进行协作。振动的强弱可被群居中个体解码成不同的信息,如猎物的大小,相邻个体特征等,而振动的强度取决于蜘蛛的重量和距离。SSO 算法在真实模拟群居蜘蛛群体内不同协作行为的基础上,引入新的计算机制,有效避免了目前常规群算法中存在的早熟收敛和局部极值问题在解决连续变量优化问题时,SSO 算法是以迭代的方式不断地寻找最优值,最重个体蜘蛛所处的位置即优化问题的解。假设整个搜索空间为蜘蛛网络,每个潜在解即为搜索空间中蜘蛛所处的位置。依据雄性和雌性的搜索机制,每个个体分属于两种不同的进化算子,并在群体内模仿不同的协作行为。
SSO 算法步骤可归纳如下:

Step1 设搜索空间的维度 n n n,雌性蜘蛛 N f N_f Nf ,雄性蜘蛛 N m N_m Nm 以及总种群数量 N N N。定义 N f N_f Nf N m N_m Nm 为:
N f = f l o o r [ ( 0.9 − r a n d ⋅ 0.25 ) ⋅ N ] (1) N_f = floor[(0.9 - rand\cdot 0.25)\cdot N] \tag{1} Nf=floor[(0.9rand0.25)N](1)

N m = N − N f (2) N_m=N-N_f \tag{2} Nm=NNf(2)

式中: r a n d rand rand 为[0,1]上的随机数; f l o o r ( ⋅ ) floor(·) floor()为实数到整数的映射。

Step2 设种群 S S S N N N个蜘蛛个体组成, N N N由两个子群的 F F F M M M 组成。随机初始化雌性蜘蛛 ( F = { f 1 , . . . , f N f } ) (F=\{f_1,...,f_{N_f}\}) (F={f1,...,fNf}) 和雄性蜘蛛,则 ( M = m 1 , m 2 , . . . , m N m ) (M = {m_1,m_2,...,m_{N_m}}) (M=m1,m2,...,mNm),定义交配半径 r 由下式表示:
r = ∑ j = 1 n ( p j h i g h − p j l o w ) 2 n (3) r = \frac{\sum_{j=1}^{n} (p_{jhigh} - p_{jlow})}{2n}\tag{3} r=2nj=1n(pjhighpjlow)(3)
式中: p j h i g h p_{jhigh} pjhigh p j l o w p_{jlow} pjlow分别为第 j j j 个变量雌性蜘蛛上下限值。

Step3 计算每一个蜘蛛的重量 w i w_i wi :
w i = J ( s i ) − w o r s t s b e s t s − w o r s t s (4) w_i = \frac{J(s_i)-worst_s}{best_s - worst_s}\tag{4} wi=bestsworstsJ(si)worsts(4)
式中: J ( s i ) J(s_i) J(si)是蜘蛛 i 所在位置对应的目标函数适应度值;
b e s t s = m a x k ∈ 1 , 2 , . . . , N ( J ( s k ) ) best_s = max_{k\in{1,2,...,N}}(J(sk)) bests=maxk1,2,...,N(J(sk))

w o r s t s = m i n k ∈ 1 , 2 , . . . , N ( J ( s k ) ) worst_s =min_{k\in{1,2,...,N}}(J(sk)) worsts=mink1,2,...,N(J(sk))

Step4 根据协作机制按式(11) 移动雌性蜘蛛:
{ f i k + 1 = f i k + α ⋅ V i b c ⋅ ( s c − f i k ) β ⋅ V i b b i ⋅ ( s b − f i k ) + δ ⋅ ( r a n d − 0.5 ) , i f   r m < P F f i k + 1 = f i k − α ⋅ V i b c ⋅ ( s c − f i k ) − β ⋅ V i b b i ⋅ ( s b − f i k ) + δ ⋅ ( r a n d − 0.5 ) , e l s e (5) \begin{cases} f_i^{k+1} = f_i^k + \alpha \cdot Vibc \cdot(s_c-f_i^k)\\ \beta\cdot Vibb_i \cdot(s_b-f_i^k) + \delta \cdot(rand-0.5),if \, r_m<PF\\ f_i^{k+1} = f_i^{k} - \alpha \cdot Vibc \cdot (s_c -f_i^k) - \beta \cdot Vibb_i \cdot (s_b - f_i^k)+ \delta \cdot (rand - 0.5) , else \end{cases} \tag{5} fik+1=fik+αVibc(scfik)βVibbi(sbfik)+δ(rand0.5),ifrm<PFfik+1=fikαVibc(scfik)βVibbi(sbfik)+δ(rand0.5),else(5)
式中: α 、 β 、 δ α、β 、δ αβδ r a n d rand rand 均为[0,1]上的随机数; k 为当前迭代次数; s c 、 s b s_c 、s_b scsb 分别为最近个体 i 的较好重量和最佳重量;振动因子 V i b c i 、 B i b b i Vibc_i 、Bibb_i VibciBibbi 分别由式(6)、式(7) 表示:
V i b c i = w c ⋅ e − d i , c 2 (6) Vibc_i = w_c\cdot e^{-d_{i,c}^2} \tag{6} Vibci=wcedi,c2(6)

V i b b i = w b ⋅ e − d t , b 2 (7) Vibb_i = w_b\cdot e^{-d_{t,b}^2} \tag{7} Vibbi=wbedt,b2(7)

式中: w c > w i ; w b = m a x k ∈ 1 , 2 , . . . , N ( w k ) ; d i , j = ∣ ∣ s i − s j ∣ ∣ w_c >w_i;w_b = max_{k\in {1,2,...,N}(w_k)};d_{i,j}=||s_i - s_j|| wc>wi;wb=maxk1,2,...,N(wk);di,j=sisj

Step5 根据协作机制按式(8) 移动雄性蜘蛛:
{ m i k + 1 = m i k + α ⋅ V i b f i ⋅ ( s f − m i k ) + δ ⋅ ( r a n d − 0.5 ) , i f   w N f + i > w N f + m m i k + 1 = m i k + α ⋅ ( ∑ h = 1 N m m h k ⋅ w N f + h ∑ h = 1 N m w N f + h − m i k ) , e l s e (8) \begin{cases} m_i^{k+1}=m_i^k + \alpha \cdot Vibf_i \cdot(s_f - m_i^k)+\delta \cdot (rand-0.5),if \, w_{N_{f+i}}>w_{N_{f+m}} \\ m_i^{k+1}=m_i^k + \alpha \cdot (\frac{\sum_{h=1}^{N_m}m_h^k \cdot w_{N_{f+h}}}{\sum_{h=1}^{N_m} w_{N_{f+h}}}-m_i^k),else \end{cases} \tag{8} mik+1=mik+αVibfi(sfmik)+δ(rand0.5),ifwNf+i>wNf+mmik+1=mik+α(h=1NmwNf+hh=1NmmhkwNf+hmik),else(8)
式中: s f s_f sf 为最近雌蜘蛛个体重量;振动因子 V i b f i Vibf_i Vibfi可由式(9) 表示:
V i b f i = w f ⋅ e − d i , f 2 (9) Vibf_i = w_f \cdot e^{-d_{i,f}^2} \tag{9} Vibfi=wfedi,f2(9)
式中: w f w_f wf 为常量。

Step6 在交配过程中,以每个个体重量定义交配概率,越重的蜘蛛个体具有获得繁育后代更大的概率。本文按轮盘赌法确定概率 p s i ps_i psi :
p s i = w i ∑ j ∈ T g w j (10) ps_i = \frac{w_i}{\sum_{j\in Tg}w_j} \tag{10} psi=jTgwjwi(10)
Step7 判断是否满足停止条件,若满足则算法结
束;否则,返回 step3。

2.算法结果

在这里插入图片描述

3.参考文献

[1] Cuevas E,Cienfuegos M,Zaldívar D,et al. A swarm optimization algorithm inspired in the behavior of the social-spider[J].Expert Systems with Applications,2013,40(16):6374 -6384.

4.Matlab代码

个人资料介绍

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

智能算法研学社(Jack旭)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值