【群智能算法改进】一种改进的沙丘猫群优化算法 改进沙丘猫群算法 改进SCSO[1]【Matlab代码#34】

文章介绍了对原始沙丘猫群优化算法的改进,包括使用Logistic混沌映射进行种群初始化以提高算法的收敛性和精度,应用透镜成像折射反向学习策略扩大搜索范围,引入动态因子增强种群多样性,以及利用黄金正弦策略避免陷入局部最优。通过部分代码展示了算法的实现,并给出了仿真结果。
摘要由CSDN通过智能技术生成


获取资源请见文章第5节:资源获取】


1. 原始沙丘猫群优化算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 改进沙丘猫群算法

2.1 Logistic混沌映射种群初始化

种群个体的初始位置对群体智能算法本身的优化效果起着关键作用。常用的混沌映射有Logistic映射、Tent映射、Henon映射、Chebyshev映射和组合混沌映射。本文选择Logistic映射是因为它比其他混沌映射具有更好的遍历性、自相关性和相互相关性。因此,使用Logistic混沌映射对种群进行初始化,使得种群分布更加均衡,从而提高了算法的收敛性和优化精度。Logistic公式如下:
x k + 1 = μ x k ( 1 − x k ) (1) x_{k+1}=\mu x_{k}(1-x_{k})\tag1 xk+1=μxk(1xk)(1)
其中, μ ∈ ( 0 , 4 ] \mu\in (0,4] μ(0,4] x ∈ ( 0 , 1 ) x\in(0,1) x(0,1)

2.2 透镜成像折射反向学习策略

透镜成像折射反向学习策略的思想来自于凸透镜成像的原理。通过基于当前坐标生成一个反向位置来扩展搜索范围,如图1所示。
在这里插入图片描述

图1 透镜成像折射反向学习原理图

在二维坐标中,x轴的搜索范围为(a, b), y轴表示一个凸透镜。假设物体A在x轴上的投影为x,高度为h,通过透镜成像,另一侧的图像为A*, A在x轴上的投影为x,高度为h*。通过以上分析,我们可以得到如下公式:
( a + b ) / 2 − x x ∗ − ( a + b ) / 2 = h h ∗ (2) \frac{(a+b)/2-x}{x^{*}-(a+b)/2 }=\frac{h}{h^{*}} \tag2 x(a+b)/2(a+b)/2x=hh(2)
对公式(2)进行转换,即可得到反向解x*的表达式为:
x ∗ = a + b 2 + a + b 2 k − x k (3) x^{*} =\frac{a+b}{2}+\frac{a+b}{2k}-\frac{x}{k} \tag3 x=2a+b+2ka+bkx(3)
其中, k = h / h ∗ k=h/h^{*} k=h/h a a a b b b可以视为某维度的上下限。

2.3 动态因子

在原始SCSO算法中,随着迭代过程的进行,rG从2到0线性减小,SCSO算法对复杂的多峰多元函数的适应能力较差,容易出现精度低的问题。因此,引入水波动力演化因子,利用水波动力学的不确定性,使得种群可以搜索更大的区域,减少其他个体跟随的盲目性,增强种群之间的信息交流和学习,保持种群多样性,有效避免收敛,从而提高算法跳出局部最优的能力。

2.4 黄金正弦策略

黄金正弦算法(golden sine algorithm, Golden-SA)是Tanyildizi等人在2017年基于正弦函数相关思想提出的一种新的智能算法,具有搜索速度快、参数调优简单、鲁棒性好的优点。Golden-SA算法利用正弦函数与单位圆的特殊关系结合黄金分割系数进行迭代搜索;单位圆仿真算法通过扫描正弦函数,探索搜索空间。黄金中庸线的概念最早是由古希腊数学家欧多克索斯在公元前4世纪提出的。黄金中庸线在金正弦搜索策略中不需要梯度,可以防止算法陷入局部最优。
Golden-SA策略的数学模型如式(4)所示:
X i t + 1 = X i t ⋅ ∣ s i n ( R 1 ) ∣ + R 2 ⋅ s i n ( R 1 ) ⋅ ∣ x 1 ⋅ P i t − x 2 ⋅ x i t ∣ (4) X_{i}^{t+1}=X_{i}^{t}·\left | sin(R_{1}) \right |+R_{2}·sin(R_{1})·\left | x_{1}·P_{i}^{t}- x_{2}·x_{i}^{t}\right | \tag4 Xit+1=Xitsin(R1)+R2sin(R1) x1Pitx2xit (4)
其中, t t t为迭代次数, R 1 ∈ [ 0 , 2 π ] R_{1}\in[0,2\pi] R1[0,2π] R 2 ∈ [ 0 , π ] R_{2}\in[0,\pi] R2[0,π] x 1 x_{1} x1 x 2 x_{2} x2为固定值。

3. 部分代码展示

PD_no=30;  %Number of sand cat
F_name='F9';     %Name of the test function
Max_iter=500;           %Maximum number of iterations

[LB,UB,Dim,F_obj]=Get_F(F_name); %Get details of the benchmark functions

[BestScore_SCSO,BestPos_SCSO,Curve_SCSO]=SCSO(PD_no,Max_iter,LB,UB,Dim,F_obj);
[BestScore_ISCSO,BestPos_ISCSO,Curve_ISCSO]=ISCSO(PD_no,Max_iter,LB,UB,Dim,F_obj); 

figure(1);
% Function plot
func_plot(F_name);     
title('Parameter space')
xlabel('x_1');
ylabel('x_2');
zlabel([F_name,'( x_1 , x_2 )'])
figure(2)       
% Convergence plot
semilogy(Curve_SCSO,'k','linewidth', 1.5)
hold on
semilogy(Curve_ISCSO,'r','linewidth', 1.5)
xlabel('Iteration#');
ylabel('Best fitness so far');
title(F_name);
legend('SCSO','ISCSO');

display(['The best obtained solution by SCSO is : ', num2str(BestPos_SCSO)]);  
display(['The best optimal value of the objective funciton found by SCSO is : ', num2str(BestScore_SCSO)]);  
display(['The best obtained solution by ISCSO is : ', num2str(BestPos_ISCSO)]);  
display(['The best optimal value of the objective funciton found by ISCSO is : ', num2str(BestScore_ISCSO)]); 

4. 仿真结果展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. 资源获取

可以获取完整代码资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

天`南

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

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

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

打赏作者

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

抵扣说明:

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

余额充值