智能优化算法:群居蜘蛛优化算法-附代码
智能优化算法:群居蜘蛛优化算法-附代码
文章目录
- 智能优化算法:群居蜘蛛优化算法-附代码
- 1.算法原理
- 2.算法结果
- 3.参考文献
- 4.Matlab代码
摘要:群居蜘蛛优化(Social Spider Optimization,SSO) 算法是一种群体智能进化算法,该算法基于群居蜘蛛中个体与群体协作行为的模拟,考虑两个不同的搜索动因:雄性和雌性。按照性别,个体分属于两种不同的进化算子,并在群体内模仿不同的协作行为。该算法具有较好的收敛速度和全局搜索能力。
1.算法原理
群居蜘蛛(Social Spider)是一类倾向群居的蜘蛛物种,个体间保持有复杂的协作行为准则,根据雌雄执行多种任务,如捕食,交配,蜘蛛网设计及群体协作等。群居蜘蛛由个体和蜘蛛网络组成,个体分为雄性和雌性两种类别。种群依据个体雌雄分配不同的任务,个体之间通过直接或间接的协作将有用信息通过蜘蛛网络传递给群居中的其他个体,并将此信息编码成振动的强弱在个体间进行协作。振动的强弱可被群居中个体解码成不同的信息,如猎物的大小,相邻个体特征等,而振动的强度取决于蜘蛛的重量和距离。SSO 算法在真实模拟群居蜘蛛群体内不同协作行为的基础上,引入新的计算机制,有效避免了目前常规群算法中存在的早熟收敛和局部极值问题在解决连续变量优化问题时,SSO 算法是以迭代的方式不断地寻找最优值,最重个体蜘蛛所处的位置即优化问题的解。假设整个搜索空间为蜘蛛网络,每个潜在解即为搜索空间中蜘蛛所处的位置。依据雄性和雌性的搜索机制,每个个体分属于两种不同的进化算子,并在群体内模仿不同的协作行为。
SSO 算法步骤可归纳如下:
Step1 设搜索空间的维度nnn,雌性蜘蛛NfN_fNf ,雄性蜘蛛NmN_mNm 以及总种群数量 NNN。定义NfN_fNf及NmN_mNm 为:
Nf=floor[(0.9−rand⋅0.25)⋅N](1)N_f = floor[(0.9 - rand\cdot 0.25)\cdot N] \tag{1} Nf=floor[(0.9−rand⋅0.25)⋅N](1)
Nm=N−Nf(2)N_m=N-N_f \tag{2} Nm=N−Nf(2)
式中: randrandrand 为[0,1]上的随机数; floor(⋅)floor(·)floor(⋅)为实数到整数的映射。
Step2 设种群 SSS由NNN个蜘蛛个体组成,NNN由两个子群的 FFF、MMM 组成。随机初始化雌性蜘蛛(F={f1,...,fNf})(F=\{f_1,...,f_{N_f}\})(F={f1,...,fNf}) 和雄性蜘蛛,则(M=m1,m2,...,mNm)(M = {m_1,m_2,...,m_{N_m}})(M=m1,m2,...,mNm),定义交配半径 r 由下式表示:
r=∑j=1n(pjhigh−pjlow)2n(3)r = \frac{\sum_{j=1}^{n} (p_{jhigh} - p_{jlow})}{2n}\tag{3} r=2n∑j=1n(pjhigh−pjlow)(3)
式中: pjhighp_{jhigh}pjhigh 和 pjlowp_{jlow}pjlow分别为第 jjj 个变量雌性蜘蛛上下限值。
Step3 计算每一个蜘蛛的重量 wiw_iwi :
wi=J(si)−worstsbests−worsts(4)w_i = \frac{J(s_i)-worst_s}{best_s - worst_s}\tag{4} wi=bests−worstsJ(si)−worsts(4)
式中: J(si)J(s_i)J(si)是蜘蛛 i 所在位置对应的目标函数适应度值;
bests=maxk∈1,2,...,N(J(sk))best_s = max_{k\in{1,2,...,N}}(J(sk)) bests=maxk∈1,2,...,N(J(sk))
worsts=mink∈1,2,...,N(J(sk))worst_s =min_{k\in{1,2,...,N}}(J(sk)) worsts=mink∈1,2,...,N(J(sk))
Step4 根据协作机制按式(11) 移动雌性蜘蛛:
{fik+1=fik+α⋅Vibc⋅(sc−fik)β⋅Vibbi⋅(sb−fik)+δ⋅(rand−0.5),ifrm<PFfik+1=fik−α⋅Vibc⋅(sc−fik)−β⋅Vibbi⋅(sb−fik)+δ⋅(rand−0.5),else(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⋅(sc−fik)β⋅Vibbi⋅(sb−fik)+δ⋅(rand−0.5),ifrm<PFfik+1=fik−α⋅Vibc⋅(sc−fik)−β⋅Vibbi⋅(sb−fik)+δ⋅(rand−0.5),else(5)
式中: α、β、δα、β 、δα、β、δ 及 randrandrand 均为[0,1]上的随机数; k 为当前迭代次数; sc、sbs_c 、s_bsc、sb 分别为最近个体 i 的较好重量和最佳重量;振动因子Vibci、BibbiVibc_i 、Bibb_iVibci、Bibbi 分别由式(6)、式(7) 表示:
Vibci=wc⋅e−di,c2(6)Vibc_i = w_c\cdot e^{-d_{i,c}^2} \tag{6} Vibci=wc⋅e−di,c2(6)
Vibbi=wb⋅e−dt,b2(7)Vibb_i = w_b\cdot e^{-d_{t,b}^2} \tag{7} Vibbi=wb⋅e−dt,b2(7)
式中:wc>wi;wb=maxk∈1,2,...,N(wk);di,j=∣∣si−sj∣∣w_c >w_i;w_b = max_{k\in {1,2,...,N}(w_k)};d_{i,j}=||s_i - s_j||wc>wi;wb=maxk∈1,2,...,N(wk);di,j=∣∣si−sj∣∣。
Step5 根据协作机制按式(8) 移动雄性蜘蛛:
{mik+1=mik+α⋅Vibfi⋅(sf−mik)+δ⋅(rand−0.5),ifwNf+i>wNf+mmik+1=mik+α⋅(∑h=1Nmmhk⋅wNf+h∑h=1NmwNf+h−mik),else(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⋅(sf−mik)+δ⋅(rand−0.5),ifwNf+i>wNf+mmik+1=mik+α⋅(∑h=1NmwNf+h∑h=1Nmmhk⋅wNf+h−mik),else(8)
式中: sfs_fsf 为最近雌蜘蛛个体重量;振动因子 VibfiVibf_iVibfi可由式(9) 表示:
Vibfi=wf⋅e−di,f2(9)Vibf_i = w_f \cdot e^{-d_{i,f}^2} \tag{9} Vibfi=wf⋅e−di,f2(9)
式中: wfw_fwf 为常量。
Step6 在交配过程中,以每个个体重量定义交配概率,越重的蜘蛛个体具有获得繁育后代更大的概率。本文按轮盘赌法确定概率 psips_ipsi :
psi=wi∑j∈Tgwj(10)ps_i = \frac{w_i}{\sum_{j\in Tg}w_j} \tag{10} psi=∑j∈Tgwjwi(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代码
个人资料介绍
智能优化算法:群居蜘蛛优化算法-附代码相关推荐
- 基于粒子群算法优化的Elman神经网络数据预测-附代码
基于粒子群算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于粒子群算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电 ...
- 基于布谷鸟算法优化的Elman神经网络数据预测-附代码
基于布谷鸟算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于布谷鸟算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电 ...
- 基于鲸鱼算法优化的Elman神经网络数据预测-附代码
基于鲸鱼算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于鲸鱼算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...
- 基于海鸥算法优化的Elman神经网络数据预测-附代码
基于海鸥算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于海鸥算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...
- 基于遗传算法优化的Elman神经网络数据预测-附代码
基于遗传算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于遗传算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...
- python 随机森林调参_Python机器学习实践:随机森林算法训练及调参-附代码
原标题:Python机器学习实践:随机森林算法训练及调参-附代码 文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 来源 | 博客园 作者 | 战争热诚 ...
- 基于蜣螂优化的Elman神经网络数据预测-附代码
基于蜣螂算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于蜣螂算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...
- 【AI超级美发师】深度学习算法打造染发特效(附代码)
[新智元导读]如今,在类似天天P图.美图秀秀等手机APP中,给指定照片或视频中的人物更换头发颜色已经是再正常不过的事情了.那么本文便介绍了该功能背后如AI头发分割模块.头发换色.颜色增强与修正模块等技 ...
- 快速排序 c++_算法浅谈——分治算法与归并、快速排序(附代码和动图演示)
本文始发于个人公众号:TechFlow 在之前的文章当中,我们通过海盗分金币问题详细讲解了递归方法. 我们可以认为在递归的过程当中,我们通过函数自己调用自己,将大问题转化成了小问题,因此简化了编码以及 ...
- Python 还能实现图片去雾?FFA 去雾算法、暗通道去雾算法用起来!(附代码)...
授权自AI科技大本营(ID:rgznai100) 本文约3600字,建议阅读7分钟. 本文为你介绍FFA去雾算法和暗通道去雾算法搭建. 在过去的几十年中,单图像去雾作为基本的低级视觉任务已引起了计算机 ...
最新文章
- R语言数据结构之向量
- 原创 几个免费下载原版图书的网站
- arraylist 初始化_第一章 C#数据结构--数组和ArrayList
- 2012-08-17
- java对xml文件的读写_java 自己做的对XML文件的读写操作
- 映射Mapper.xml文件的几种方式
- [云炬创业管理笔记]第九章为创业成败而准备测试5
- OpenShift 4 - 为Gogs构建一个Operator
- 远程桌面和云主机,可以听到云主机内部的声音
- 非double型数值-整型数据类型
- 十款大名鼎鼎的开源软件
- red_hat_enterprise_linux
- java代码生成UUID以及在线UUID生成器
- android 头像修改
- 软考-中级-网络工程师-知识点个人总结(二)
- 大学英语综合教程四 Unit 1至Unit 8 课文内容英译中 中英翻译
- 计算机单招考试零基础,单招英语零基础怎么学
- re- 正则表达操作
- Python量化交易平台开发教程系列5-底层接口对接
- pandas读取行列数据-详细介绍(连续不连续)