正弦余弦算法的樽海鞘群算法
正弦余弦算法的樽海鞘群算法
文章目录
- 正弦余弦算法的樽海鞘群算法
- 1.樽海鞘群算法
- 2.正弦余弦算法的樽海鞘群算法
- 2.1 Logistics 映射的种群初始化
- 2.2 正弦余弦算法(SCA)
- 2.3差分演化变异策略
- 3.实验结果
- 4.参考文献
- 5.Matlab代码
- 6.python代码
摘要:针对樽海鞘群算法求解精度不高和收敛速度慢等缺点,提出一种正弦余弦算法的樽海鞘群算法(SCS-SA)。引入 Logistics 混沌序列生成初始种群,增加初始个体的多样性;将正弦余弦算法作为局部因子嵌入到樽海鞘群算法中,对樽海鞘个体进行正弦和余弦优化;对最优樽海鞘的领域空间进行差分演化变异策略,增强局部搜索能力。
1.樽海鞘群算法
基础樽海鞘群优化算法算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107767869
2.正弦余弦算法的樽海鞘群算法
2.1 Logistics 映射的种群初始化
樽海鞘群体的初始化对 SSA 的收敛速度和寻优精度至关重要。在樽海鞘群初始时,由于没有任何先验知识可使用,基本上大部分群智能算法的初始位置都是随机生成的。初始种群均匀分布在搜索空间,对提高算法寻优有很大帮助。混沌序列具有随机性、遍历性和规律性,通过其产生的樽海鞘群体有较好的多样性。其基本思路是:通过映射关系在[0,1]区间产生混沌序列,然后将其转化到个体的搜索空间。产生混沌序列的模型有许多,本文采用 Logistics 映射生成的混沌序列来初始化樽海鞘群算法群体。Logistics 映射的数学表达式为:
yj+1i=μyji(1−yji)yji<0.5(6)y_{j+1}^{i}=\mu y_{j}^{i}\left(1-y_{j}^{i}\right) \quad y_{j}^{i}<0.5 \tag{6} yj+1i=μyji(1−yji)yji<0.5(6)
式中: μ∈[0,4]μ ∈[0,4]μ∈[0,4]是混沌参数,μμμ 越大,混沌性越好,本文取μ=4;i=1,2,…,Nμ = 4;i = 1,2,…,Nμ=4;i=1,2,…,N表示种群规模;j=1,2,…,dj = 1,2,…,dj=1,2,…,d 表示混沌变量序号。
Logistics 混沌映射对初始值的选取非常敏感,给式(6)选取 ddd 个具有微小差异的初始值,则可得到 ddd 个混沌序列 yjiy^i_jyji 。然后再将ddd个混沌序列 yjiy^i_jyji 作逆映射到相应的个体搜索空间变量 xjix^i_jxji 。
xji=lbi+(ubi−lbi)yji(7)x_{j}^{i}=l b_{i}+\left(u b_{i}-l b_{i}\right) y_{j}^{i} \tag{7} xji=lbi+(ubi−lbi)yji(7)
[lbi,ubi][lb_i ,ub_i ][lbi,ubi]为 xjix^i_jxji 的搜索范围。
2.2 正弦余弦算法(SCA)
由式(5)追随者位置更新公式可知,第 i 只樽海鞘位置会根据第 i 和 i - 1 只樽海鞘位置坐标中点进行更新。在此过程中并没有判别x i 是否优于原来位置,这种单方向根据第 i 只樽海鞘的位置信息机制,樽海鞘个体之间缺少交流,信息利用率较低。为使群体之间拥有更多的交流机会,进一步优化樽海鞘群算法的探索和开发能力,本文引入正弦余弦算法作为局部优化算子嵌入到樽海鞘群算法中,即在更迭后期对全部樽海鞘个体采用正弦余弦操作,指导樽海鞘个体更新樽海鞘位置,更新公式如下:
Xit+1={Xit+r1×sin(r2)×∣r3Fit−Xit∣r4<0.5Xit+r1×cos(r2)×∣r3Fit−Xit∣r4⩾0.5(8)\boldsymbol{X}_{i}^{t+1}=\left\{\begin{array}{ll} \boldsymbol{X}_{i}^{t}+r_{1} \times \sin \left(r_{2}\right) \times\left|r_{3} \boldsymbol{F}_{i}^{t}-\boldsymbol{X}_{i}^{t}\right| & r_{4}<0.5 \\ \boldsymbol{X}_{i}^{t}+r_{1} \times \cos \left(r_{2}\right) \times\left|r_{3} \boldsymbol{F}_{i}^{t}-\boldsymbol{X}_{i}^{t}\right| & r_{4} \geqslant 0.5 \end{array}\right. \tag{8} Xit+1={Xit+r1×sin(r2)×∣∣r3Fit−Xit∣∣Xit+r1×cos(r2)×∣∣r3Fit−Xit∣∣r4<0.5r4⩾0.5(8)
式中: Xit+1=(x1i,x2i,…,xdi)TX^{t+1}_i= (x^i_1 ,x^i_2 ,…,x^i_d )^TXit+1=(x1i,x2i,…,xdi)T表示ddd 维个体iii的空间位置;Pit=(F1,F2,…,Fd)TP ^t_i= (F_1 ,F_2 ,…,F_d )^TPit=(F1,F2,…,Fd)T表示每一代最有个体的位置,即食物源位置;$r _1 = a - t × a/T max ,其指导第i个个体的下一代位置区域(或移动方向),该区域可以位于解决方案和目标之间,a为常数,本文取,其指导第 i 个个体的下一代位置区域(或移动方向),该区域可以位于解决方案和目标之间,a 为常数,本文取,其指导第i个个体的下一代位置区域(或移动方向),该区域可以位于解决方案和目标之间,a为常数,本文取a = 2;;;r_2$属于区间[0,2π]之间的一个随机数,其决定了应朝向或远离目标的移动距离。
2.3差分演化变异策略
在 SSA 中,樽海鞘链的领导者位置 xj1x^1_jxj1至关重要,指引群体朝着最优解方向移动,但如果 xj1x ^1_jxj1陷入局部最优,则容易使群体整体搜索出现停滞,对其进行变异操作,搜索邻域空间,可增强算法跳出局部最优的能力。本文采用一种差分演化变异策略(Differential Evolu-tionary Mutation,DEM) 。该策略采用差分演化对领导者位置 xj1x ^1_jxj1进行扰动。更新公式如下:
mj=xj1+F×(xjR1−xjR2)+F×(xjR3−xjR4)(9)m_{j}=x_{j}^{1}+F \times\left(x_{j}^{R_{1}}-x_{j}^{R_{2}}\right)+F \times\left(x_{j}^{R_{3}}-x_{j}^{R_{4}}\right) \tag{9} mj=xj1+F×(xjR1−xjR2)+F×(xjR3−xjR4)(9)
式中: FFF 是缩放因子;R1、R2、R3、R4R_1 、R_2 、R_3、R_4R1、R2、R3、R4 是区间[1,N]上互不相同的随机整数,代表不同樽海鞘个体;j 是维度;mjm_jmj为扰动后的食物源位置。使用式(10)交叉操作选择新的食物源位置。
xj1∗={mjrand ⩽CR×jrand =jxj1其他 (10)x_{j}^{1^{*}}=\left\{\begin{array}{ll} m_{j} & \text { rand } \leqslant C R \times j_{\text {rand }}=j \\ x_{j}^{1} & \text { 其他 } \end{array}\right. \tag{10} xj1∗={mjxj1 rand ⩽CR×jrand =j 其他 (10)
式中: rand 是[0,1]区间均匀分布的随机数,对每一个维度都要重新产生;CRCRCR 为交叉概率;jrandj_{rand}jrand 是区间[1,D]上随机生成的一个整数,确保 xj1∗x ^{1*}_jxj1∗至少有一维不同于 x1x_1x1 。本文实验中,F=1,CR=0.1F = 1,CR = 0. 1F=1,CR=0.1 。
正弦余弦算法的樽海鞘群算法步骤如下:
Step 1 初始化个体位置。使用 Logistics 映射生成混沌序列,根据搜索空间的上下限,把混沌序列逆映射为一个 N × d 维的矩阵。
Step 2 计算初始适应度值。根据测试函数计算N 个樽海鞘的适应度值。
Step 3 选定食物源。将 Step2 中计算后的适应度值升序(或降序)排列,适应度值最好的樽海鞘位置选定为食物源位置。
Step 4 更新领导者和追随者位置。确定食物源位置之后,选取种群中一个的樽海鞘个体根据式(2)更新领导者位置,其余的樽海鞘根据式(5)更新追随者位置。
Step 5 正弦余弦指引策略。利用式(8)对 Step4所生成的樽海鞘个体进行正弦或余弦操作,以更新到新的樽海鞘位置。
Step 6 计算适应值。计算更新后种群的适应度值,引入差分演化变异策略,根据式(9)和式(10)更新食物源位置。
Step 7 重复 Step4 - Step6,如果达到设置的精度要求或规定的最大迭代次数,则终止算法,输出全局最优解。
3.实验结果
4.参考文献
[1]陈忠云,张达敏,辛梓芸.正弦余弦算法的樽海鞘群算法[J].计算机应用与软件,2020,37(09):209-214.
5.Matlab代码
6.python代码
正弦余弦算法的樽海鞘群算法相关推荐
- MATLAB算法实战应用案例精讲-【优化算法】樽海鞘群算法(SSA)及其算法变种(附matlab代码实现)
目录 前言 算法原理 算法思想 数学模型 (1)种群初始化
- 【单目标优化算法】樽海鞘群算法(Matlab代码实现)
- 面向全局搜索的自适应领导者樽海鞘群算法-附代码
面向全局搜索的自适应领导者樽海鞘群算法 文章目录 面向全局搜索的自适应领导者樽海鞘群算法 1.樽海鞘群算法 2.改进樽海鞘群算法 2.1 改进领导者位置更新公式 2.2 引入领导者-跟随者自适应调整策 ...
- 混沌映射与动态学习的自适应樽海鞘群算法-附代码
混沌映射与动态学习的自适应樽海鞘群算法 文章目录 混沌映射与动态学习的自适应樽海鞘群算法 1.樽海鞘群算法 2.改进樽海鞘群算法 2.1 基于改进 Tent 映射的种群初始化 2.2 基于 Logis ...
- 基于混沌映射的自适应樽海鞘群算法-附代码
基于混沌映射的自适应樽海鞘群算法 文章目录 基于混沌映射的自适应樽海鞘群算法 1.樽海鞘群算法 2.改进樽海鞘群算法 2.1 混沌映射 2.2 自适应权重变化 2.3 追随者机制变化 3.实验结果 4 ...
- 基于疯狂自适应的樽海鞘群算法
基于疯狂自适应的樽海鞘群算法 文章目录 基于疯狂自适应的樽海鞘群算法 1.樽海鞘群算法 2.基于疯狂自适应樽海鞘群算法 2.1 Tent映射的种群初始化 2.2 疯狂算子 2.3自适应惯性权重 3.实 ...
- 基于混沌映射的自适应樽海鞘群算法
文章目录 一.理论基础 1.基本樽海鞘群算法 2.改进的樽海鞘群算法 (1)混沌映射 (2)自适应权重变化 (3)追随者机制变化 (4)算法伪代码 二.实验仿真及结果分析 三.参考文献 一.理论基础 ...
- 基于正交设计的折射反向学习樽海鞘群算法
文章目录 一.理论基础 1.樽海鞘群算法 2.正交反向学习樽海鞘群算法OOSSA (1)正交反向学习策略 (2)惯性权重策略 (3)OOSSA算法 二.仿真实验与结果分析 三.参考文献 一.理论基础 ...
- 基于差异演化的寄生樽海鞘群算法
文章目录 一.理论基础 1.标准SSA算法 2.PDESSA算法 2.1 改进领导者全局搜索方式 2.1.1 上代领导者位置信息的影响 2.1.2 非线性惯性权重 2.2 寄生和宿主双种群 2.3 P ...
- 【WSN】基于樽海鞘群算法实现无线传感器网络WSN节点的部署优化matlab源码
1 算法介绍 一种基于樽海鞘群算法的无线传感器网络节点定位方法,包括初始化樽海鞘群个体节点,判断节点位置,将节点位置作为食物源对周围环境进行链式搜索,找到其余节点进行确认,并转为食物源变量进行迭代搜索 ...
最新文章
- 剑指 Offer 05. 替换空格 简单
- 八数码(康拓展开标记)及类似题
- python编程计算前30项的和_Python 程序员需要知道的 30 个技巧
- vue中v-for指令的使用之Vue知识点归纳(八)
- ubuntu安装软件
- 刷面经笔记2019.01.30
- 七月算法机器学习1 机器学习初识
- 如何设置二进制某一位的值_mysql参数设置--max_allowed_packet 值如何调整?
- topcoder srm 440 div1
- 解除网页百度云自动关联客户端,可通过迅雷或浏览者下载
- 计算机网络为什么要分层?
- vim command line quick edit
- ES9,ES10,ES11知识点
- Python Flask,Jinja2模板,模板中使用特殊变量及函数,闪现信息,get_flashed_messages()
- FM模型及其在推荐系统中的应用
- 黑客入门常用的8种工具
- 初学Python之math模块在哪里?
- 机器学习笔记(十)——这样推导SMO算法才易理解
- 泛微实物档案数字化管理方案,全面优化组织档案管理
- Linux连接外网(方式一)