0.引言
在第七期中主要介绍了基于改进Sine混沌映射的ISPSO算法,对Sine混沌映射及相关matlab代码进行分享,并根据目标函数,对改进后的SIne-PSO算法与SIne-PSO算法进行对比。最后得出改进后Sine混沌映射的PSO算法在高维度优化问题求解时具有更好的求解精度及稳定性。
通过查阅相关文献可知,采用融合混沌映射策略能够产生更加规律与均匀的初始种群。文献[1]采用logstic-sine混沌映射生成群体智能算法的初始种群,提升初始种群的均匀性及初始解的质量。因此,本文参照文献[1],利用logstic-sine融合混沌映射策略作为PSO算法的种群初始化改进策略。
1.基于logistic-sine的融合混沌映射原理及matlab代码
基于logistic-sine的融合混沌映射策略如下:
其中,x为种群粒子解,是混沌乘数,文中取0.5。
根据上述logistic-sine的融合混沌映射原理,matlab代码如下:
%基于logistic-sine的融合混沌映射的种群初始化
function x_apply =log_sin_int(dim,miu,Lb,Ub)
x=rand();%随机粒子
%根据logistic-sine的融合混沌映射函数,生成后续初始种群
for i=1:dim-1
x(i+1)=miu*x(i)*(1-x(i))+(4-miu)*sin(pi*x(i))/4;
end
%获取在粒子边界约束内的种群解
x_apply=Lb+x.*(Ub-Lb);
%粒子边界约束检查
I=x_apply<Lb;
x_apply(I)=Lb(I);
U=x_apply>Ub;
x_apply(U)=Ub(U);
end
2.基于logistic-sine融合混沌映射的改进LSPSO算法
文中第1节已对logistic-sine融合混沌映射策略原理及代码进行讲解与复现,现将logistic-sine融合混沌映射策略与传统PSO算法相结合,并基于相应目标函数进行求解,以验证改进PSO算法的可行性,具体matlab代码如下:
%% 基于logistic-sine融合混沌映射的改进粒子群算法主程序
clc;
clear all;
close all
%% 算法基本参数设置
c1=2; %学习因子1
c2=2;%学习因子2
w=0.7;%惯性权重
MaxDT=500;%最大迭代次数
D=3;%搜索空间维数(未知数个数)
N=30;%初始化群体个体数目
Lb=-100*ones(1,D);%种群解的下限
Ub=100*ones(1,D);%种群解的上限
Vmax=1*ones(1,D);%速度上限
Vmin=-1*ones(1,D);%速度下限
miu=0.5;%混沌乘数
Best_f=[];pop=[];
%% 基于logistic-sine融合混沌映射的种群初始化
for L=1:N
pop(L,:) = log_sin_int(D,miu,Lb,Ub);
Best_f(1,L)=fitness_obl(pop(L,:));
end
V=rand(N,D);
%计算各个粒子的适应度值并初始化Pi和Pg
[fitnessgbest bestindex]=min(Best_f);
gbest=pop(bestindex,:);
pbest=pop;
fitnesspbest=Best_f;
%% 粒子群算法更新迭代部分
for iter=1:MaxDT
for j=1:N
%种群更新
V(j,:)=w*V(j,:)+c1*rand*(pbest(j,:)-pop(j,:))+c2*rand*(gbest-pop(j,:));
%更新速度边界检查
I=V(j,:)<Vmin;
V(j,I)=Vmin(I);
U=V(j,:)>Vmax;
V(j,U)=Vmax(U);
pop(j,:)=pop(j,:)+V(j,:);
%粒子边界检查
PI=pop(j,:)<Lb;
pop(j,PI)=Lb(PI);
PU=pop(j,:)>Ub;
pop(j,PU)=Ub(PU);
%计算更新后种群的适应度函数值
Best_f(j)=fitness_obl(pop(j,:));
%个体极值更新
if Best_f(j)<fitnesspbest(j)
pbest(j,:)=pop(j,:);
fitnesspbest(j)=Best_f(j);
end
%全局极值更新
if Best_f(j)<fitnessgbest
gbest=pop(j,:);
fitnessgbest=Best_f(j);
end
end
%记录粒子全局最优解
Fgbest(iter)=fitnessgbest;
end
%% 结果可视化
figure
plot(Fgbest)
title(['适应度曲线 ' '终止次数=' num2str(MaxDT)]);
xlabel('进化代数');
ylabel('适应度')
为验证改进后算法的求解效果,本文将采用logistic-sine融合混沌映射改进后的PSO算法与及原始PSO算法寻优结果进行对比,采用测试函数与第1~7期测试函数相同,此处不再赘述。
根据上述目标函数,基于logistic-sine融合混沌映射改进的PSO算法适应度曲线如下:
图1 基于logistic-sine融合混沌映射改进的PSO算法适应度迭代曲线(粒子维度为3)
图2 标准粒子群算法适应度曲线(粒子维度为3)
根据上述对比可知,采用logistic-sine融合混沌映射策略后,能够获得更好的初始解,解的质量更高,有助于PSO算法更快的实现收敛,并获取更好的求解精度。为了验证基于logistic-sine融合混沌映射策略粒子群算法求解的稳定性,分别对该目标函数求解10次,并分别记录10次中目标函数最小值、最大值及均值。运行结果如下所示:
粒子维度3 | ||||
运行次数 | logistic-sine | 标准粒子群算法 | Sine-PSO | ISine-PSO |
1 | 1.59E-30 | 0.0831 | 7.43E-31 | 2.30E-30 |
2 | 1.11E-31 | 0.0547 | 5.55E-32 | 5.72E-28 |
3 | 5.48E-30 | 0.0294 | 2.23E-29 | 7.30E-31 |
4 | 6.34E-29 | 0.0119 | 1.23E-32 | 2.92E-29 |
5 | 1.32E-29 | 0.0477 | 3.18E-29 | 6.17E-27 |
6 | 6.21E-27 | 0.0399 | 1.39E-31 | 3.06E-30 |
7 | 9.81E-30 | 0.0459 | 9.76E-29 | 4.19E-31 |
8 | 9.01E-29 | 0.0235 | 2.13E-29 | 9.33E-30 |
9 | 3.97E-29 | 0.0043 | 5.18E-31 | 4.63E-30 |
10 | 8.36E-27 | 0.0532 | 7.53E-29 | 7.27E-27 |
均值 | 1.47943E-27 | 0.03936 | 2.49776E-29 | 1.40588E-27 |
最小值 | 1.10934E-31 | 0.0043 | 1.2326E-32 | 4.19082E-31 |
最大值 | 8.36352E-27 | 0.0831 | 9.76339E-29 | 7.26677E-27 |
根据上述结果能够发现,尽管采用logistic-sine融合混沌映射策略后,PSO算法能够具有较好的提升,但与Sine混沌映射相比,当粒子维度为3时,logistic-sine算法改进的PSO算法解的精度及稳定性反而有所降低。这一现象与第7期中基于改进Sine混沌映射策略的改进PSO算法相似。
在上期中通过对不同维度下算法求解能力的对比,证明改进后Sine策略在高维求解是具有更好的性能。因此,本文延续上期思路,分别对三种算法在该测试函数下进行粒子维度为5、10、50及100情况下适应度函数对比情况,具体结果如下:
粒子维度5时各算法适应度值对比情况:
粒子维度5 | |||
运行次数 | logistic-sine | Sine-PSO | ISine-PSO |
1 | 1.66E-22 | 1.62E-22 | 1.52E-21 |
2 | 6.24E-21 | 1.03E-22 | 2.01E-22 |
3 | 8.13E-24 | 7.04E-25 | 4.74E-24 |
4 | 8.88E-24 | 4.27E-21 | 1.05E-23 |
5 | 3.54E-23 | 5.66E-22 | 5.89E-23 |
6 | 1.44E-21 | 4.82E-23 | 4.93E-24 |
7 | 1.59E-23 | 7.58E-25 | 4.02E-23 |
8 | 2.67E-24 | 1.32E-25 | 9.18E-23 |
9 | 1.42E-21 | 2.91E-23 | 5.71E-22 |
10 | 1.82E-22 | 2.79E-22 | 4.15E-22 |
均值 | 9.52662E-22 | 5.46339E-22 | 2.91637E-22 |
最小值 | 2.67313E-24 | 1.31822E-25 | 4.74013E-24 |
最大值 | 6.23815E-21 | 4.27388E-21 | 1.51773E-21 |
粒子维度为10时,各算法适应度函数的对比情况:
粒子维度10 | |||
运行次数 | logistic-sine | ISine-PSO | Sine-PSO |
1 | 1.51E-05 | 2.15E-05 | 1.01E-06 |
2 | 3.35E-09 | 7.47E-07 | 3.68E-09 |
3 | 4.20E-06 | 2.25E-05 | 0.000205002 |
4 | 6.79E-07 | 1.37E-05 | 7.03E-05 |
5 | 2.73E-06 | 6.15E-06 | 2.19E-07 |
6 | 3.39E-06 | 2.84E-05 | 4.47E-10 |
7 | 6.37E-07 | 3.79E-06 | 2.93E-09 |
8 | 7.19E-06 | 2.83E-05 | 8.94E-09 |
9 | 1.11E-05 | 4.49E-09 | 2.84E-06 |
10 | 9.71E-07 | 4.29E-06 | 4.63E-06 |
均值 | 4.59961E-06 | 1.29349E-05 | 2.84036E-05 |
最小值 | 3.34589E-09 | 4.49273E-09 | 4.47233E-10 |
最大值 | 1.51037E-05 | 2.84421E-05 | 0.000205002 |
粒子维度为50时,各算法适应度函数的对比情况:
粒子维度50 | |||
运行次数 | logistic-sine | ISine-PSO | Sine-PSO |
1 | 1.48E+00 | 3.716615135 | 4.65689791 |
2 | 1.73E+00 | 3.126207275 | 4.053907075 |
3 | 1.77E+00 | 2.170533957 | 5.942409671 |
4 | 1.29E+00 | 2.263532591 | 2.69338274 |
5 | 2.40E+00 | 3.700010786 | 2.92443506 |
6 | 2.29E+00 | 2.067282683 | 3.562016503 |
7 | 2.09E+00 | 3.248771805 | 19803.65408 |
8 | 1.94E+00 | 2.37256134 | 5.317398751 |
9 | 2.29E+00 | 3.416930864 | 9907.125206 |
10 | 1.64E+00 | 4.292095684 | 5.882953292 |
均值 | 1.89178915 | 3.037454212 | 2974.581269 |
最小值 | 1.293032222 | 2.067282683 | 2.69338274 |
最大值 | 2.395977187 | 4.292095684 | 19803.65408 |
粒子维度为100时,各算法适应度函数的对比情况:
粒子维度100 | |||
运行次数 | logistic-sine | ISinePSO | Sine-PSO |
1 | 24.65014161 | 31.3088386 | 10045.23924 |
2 | 26.66894224 | 30.57659121 | 10039.88843 |
3 | 31.21040743 | 27.53145305 | 288.447776 |
4 | 39.69336492 | 35.8015407 | 183.8666929 |
5 | 33.17319037 | 44.21608253 | 19938.62958 |
6 | 30.71735217 | 30.89931467 | 10045.64049 |
7 | 29.79671498 | 34.42130675 | 10021.72415 |
8 | 28.08527042 | 33.42632033 | 738.2758468 |
9 | 24.25309264 | 29.05607031 | 355.0614265 |
10 | 30.71375243 | 30.65269607 | 10011.66353 |
均值 | 29.89622292 | 32.78902142 | 7166.843716 |
最小值 | 24.25309264 | 27.53145305 | 183.8666929 |
最大值 | 39.69336492 | 44.21608253 | 19938.62958 |
根据上述结果可知,当粒子维度为3时logistic-sine-PSO算法求解能力弱于Sine-PSO算法,与改进后Sine-PSO算法性能接近。但随着粒子维度的增加logistic-sine-PSO算法的求解稳定性及优越性更加突出。以粒子维度为100时为例,采用logistic-sine混沌映射策略的PSO算法适应度函数值明显优于Sine-PSO算法与改进的Sine-PSO算法,领先幅度较为明显。
当粒子维度为50时,logistic-sine-PSO算法在10次求解过程中均领先Sine-PSO算法与改进的Sine-PSO算法,并未出现Sine-PSO算法中某几次适应度函数值较大的现象。这证明logistic-sine-PSO算法粒子解的均匀性更好,能够更快的实现函数精确解的求解。
同时,维度50时Sine-PSO算法适应度函数值异常的问题可能与Sine混沌映射的缺点有关,导致在迭代次数500次的情况下Sine-PSO算法没能够找到较好的精确解,且该情况随着粒子维度的增加变得更加明显。
3.总结
根据第2节中的仿真结果可知,Sine-PSO算法在低纬空间中具有较好的求解性能,但随着粒子维度的逐渐提升,Sine混沌映射策略本身的缺点被逐渐放大,从而导致无法获取较好的精确解。ISine混沌映射策略能够更好的处理高维粒子优化求解问题,当粒子维度逐渐升高时,依旧能够获取较好的初始解及精确解。而logistic-sine混沌映射策略具有相比ISine混沌映射更加均匀的初始种群,因此在高维求解中logistic-sine-PSO算法的优势更加明显,且随着维度的增加,该优势更加明显。
限于作者水平有限,上述文章在复现过程中可能存在不足,欢迎大家批评指正。本文在写作过程中logistic-sine混沌映射原理参照下述文献进行,在此对该文献作者进行感谢,若有侵权,请联系我进行修改删除。参考文献如下:
[1] 夏艺瑄,贺兴时. 融合混沌映射和乘除算子的花授粉算法及应用 [J]. 智能计算机与应用, 2024, 14 (01): 76-84.
往期传送门:
【Matlab群体智能算法第七期】基于改进Sine混沌映射的ISPSO算法(含完整matlab代码)-CSDN博客
【Matlab群体智能算法第六期】基于Sine混沌映射的SPSO算法(含完整matlab代码)_二维 sine-tent 混沌映射 matlab-CSDN博客
【Matlab群体智能算法第五期】基于改进Tent混沌映射的ITPSO算法(含完整matlab代码)_基于tent混沌映射的粒子群优化算法-CSDN博客
【Matlab群体智能算法第四期】基于Tent混沌映射、自适应t分布和动态选择策略的TDPSO算法(含完整matlab代码)_自适应tent混沌映射-CSDN博客
【Matlab群体智能算法第三期】基于Tent混沌映射的TPSO算法(含完整matlab代码)_基于改进的tent混沌映射-CSDN博客
【Matlab群体智能算法第二期】基于反向学习的改进粒子群算法(含matlab代码)_改进粒子群算法matlab代码-CSDN博客