【Matlab群体智能算法第八期】基于logistic-sine融合混沌映射的改进LSPSO算法(含完整matlab代码)

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_{i+1}=\mu *x_{i}*(1-x_{i})+(4-\mu)*sin(\pi *x_{i})/4

        其中,x为种群粒子解,\mu是混沌乘数,文中取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_applyUb;
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,:)Vmax;
        V(j,U)=Vmax(U);
        pop(j,:)=pop(j,:)+V(j,:);

        %粒子边界检查
        PI=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算法适应度曲线如下:

【Matlab群体智能算法第八期】基于logistic-sine融合混沌映射的改进LSPSO算法(含完整matlab代码)

图1 基于logistic-sine融合混沌映射改进的PSO算法适应度迭代曲线(粒子维度为3)

【Matlab群体智能算法第八期】基于logistic-sine融合混沌映射的改进LSPSO算法(含完整matlab代码)

图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博客

【Matlab群体智能算法第一期】粒子群算法及其变体(一)_粒子群算法示意图-CSDN博客

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/db3dd9d238.html