【Matlab群体智能算法第七期】基于改进Sine混沌映射的ISPSO算法(含完整matlab代码)

文章介绍了使用改进的Sine混沌映射策略优化粒子群优化算法(ISPSO),并通过与传统PSO和基于Sine的PSO对比,展示了其在求解精度和稳定性上的优势,尤其是在高维问题中。然而,当维度较低时,ISPSO的表现不如Sine-PSO。
摘要由CSDN通过智能技术生成

0.引言

        在第六期中作者介绍了基于Sine混沌映射的改进粒子群优化算法,对Sine混沌映射及相关matlab代码进行分享,并根据目标函数,对SIne-PSO算法与传统PSO算法进行对比,得出采用Sine混沌映射的PSO算法具有更好的求解精度及稳定性。然而尽管SIne混沌映射能够在上述对比中取得较好的结果,但其仍具有概率密度分布不均的缺点。因此,本文参照文献[1],利用改进的Sine混沌映射策略作为PSO算法的种群初始化改进策略。

1.改进SIne混沌映射策略原理及matlab代码

        由于SIne混沌映射存在概率密度分布不均的缺点,因此采用改进的Sine策略作为PSO算法种群初始化手段,使混沌映射空间遍历性更好,种群更加多样。改进后的Sine混沌映射策略如下:

a_{i+1}=sine(k\pi a_{i})

b_{i+1}=sine(k\pi b_{i})

y_{i+1}=mod((a_{i+1}+b_{i+1}),1 )

式中:a_{i}b_{i}取值范围为(0,1);k为控制参数,取值1200;y_{i+1}为迭代混沌序列值;mod(b,1)表示对b取1的余数。

        根据上述公式,matlab代码如下:

%改进sine混沌映射
function best_x=Isine_int(D,Lb,Ub)
k=1200;%控制参数
ax=rand();%随机参数
bx=rand();%随机参数
for L=2:D+1
    ax(1,L)=sin(k*pi*ax(1,L-1));
    bx(1,L)=sin(k*pi*bx(1,L-1));
    x_sine(1,L-1)=mod((ax(1,L)+bx(1,L)),1);%迭代的混沌序列值
    
end
    %将改进后的sine混沌序列映射至解空间
    best_x=Lb+x_sine.*(Ub-Lb);
end

2.基于改进Sine混沌映射策略的ISPSO优化算法

        文章第1节中已经对改进Sine混沌映射策略的原理及matlab代码进行了相应的讲解及复现,现将改进Sine混沌映射策略与传统PSO算法、基于Sine的PSO算法相结合,并基于相应目标函数进行求解,以验证改进PSO算法的可行性,具体matlab代码如下:

%% 基于ISine混沌映射的改进粒子群算法主程序
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);%速度下限
a=0.5;%Tent混沌系数,0~1之间
Best_f=[];pop=[];
%% 基于ISine混沌映射的种群初始化
for L=1:N
    pop(L,:)=Isine_int(D,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 i=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(i)=fitnessgbest;
   
end
%% 结果可视化
figure
plot(Fgbest)
title(['适应度曲线 ' '终止次数=' num2str(MaxDT)]);
xlabel('进化代数');
ylabel('适应度')

        为验证改进后算法的求解效果,本文将采用ISine策略改进前后及原始PSO算法寻优结果进行对比,采用测试函数与第1-5期测试函数相同,此处不再赘述。

        根据上述目标函数,基于ISine改进的PSO算法适应度曲线如下:

图1 基于ISine-PSO算法的适应度迭代曲线(粒子维度为3)

图2 标准粒子群算法适应度曲线(粒子维度为3)

        根据上述对比可知,采用ISIne混沌映射策略后,能够获得更好的初始解,解的质量更高,有助于PSO算法更快的实现收敛,并获取更好的求解精度。为了验证基于ISIne混沌映射粒子群算法的求解稳定性,分别对该目标函数求解10次,并分别记录10次中目标函数最小值、最大值及均值。运行结果如下所示:

粒子维度3
运行次数标准粒子群算法Sine-PSOISine-PSO
10.08317.43E-312.30E-30
20.05475.55E-325.72E-28
30.02942.23E-297.30E-31
40.01191.23E-322.92E-29
50.04773.18E-296.17E-27
60.03991.39E-313.06E-30
70.04599.76E-294.19E-31
80.02352.13E-299.33E-30
90.00435.18E-314.63E-30
100.05327.53E-297.27E-27
均值0.039362.49776E-291.40588E-27
最小值0.00431.2326E-324.19082E-31
最大值0.08319.76339E-297.26677E-27

        根据上述结果能够发现,尽管采用ISine算法后,PSO算法能够具有较好的提升,但与Sine混沌映射相比,当粒子维度为3时,ISine算法改进的PSO算法解的精度及稳定性反而有所降低。为了进一步对比二者的求解情况,分别对该测试函数进行粒子维度为5、10、50及100情况下适应度函数对比情况,具体结果如下:

        粒子维度5时二者适应度值对比情况:

粒子维度5
运行次数Sine-PSOISine-PSO
11.62E-221.52E-21
21.03E-222.01E-22
37.04E-254.74E-24
44.27E-211.05E-23
55.66E-225.89E-23
64.82E-234.93E-24
77.58E-254.02E-23
81.32E-259.18E-23
92.91E-235.71E-22
102.79E-224.15E-22
均值5.46339E-222.91637E-22
最小值1.31822E-254.74013E-24
最大值4.27388E-211.51773E-21

        粒子维度为10时,二者适应度函数的对比情况:

粒子维度10
运行次数ISine-PSOSine-PSO
12.15E-051.01E-06
27.47E-073.68E-09
32.25E-050.000205002
41.37E-057.03E-05
56.15E-062.19E-07
62.84E-054.47E-10
73.79E-062.93E-09
82.83E-058.94E-09
94.49E-092.84E-06
104.29E-064.63E-06
均值1.29349E-052.84036E-05
最小值4.49273E-094.47233E-10
最大值2.84421E-050.000205002

        粒子维度为50时,二者适应度函数的对比情况:

粒子维度50
运行次数ISine-PSOSine-PSO
13.7166151354.65689791
23.1262072754.053907075
32.1705339575.942409671
42.2635325912.69338274
53.7000107862.92443506
62.0672826833.562016503
73.24877180519803.65408
82.372561345.317398751
93.4169308649907.125206
104.2920956845.882953292
均值3.0374542122974.581269
最小值2.0672826832.69338274
最大值4.29209568419803.65408

        粒子维度为100时,二者适应度函数的对比情况:

粒子维度100
运行次数ISinePSOSine-PSO
131.308838610045.23924
230.5765912110039.88843
327.53145305288.447776
435.8015407183.8666929
544.2160825319938.62958
630.8993146710045.64049
734.4213067510021.72415
833.42632033738.2758468
929.05607031355.0614265
1030.6526960710011.66353
均值32.789021427166.843716
最小值27.53145305183.8666929
最大值44.2160825319938.62958

        根据上述结果可知,当粒子维度为3时ISine-PSO算法求解能力弱于Sine-PSO算法,但随着粒子维度的增加ISine-PSO算法的求解稳定性及优越性更加突出,以粒子维度为100时为例,采用ISine混沌映射策略的PSO算法适应度函数值明显优于Sine-PSO算法,且领先幅度较大。而当粒子维度为50时,Sine-PSO算法在多数求解过程中与ISine-PSO算法差距不打,但存在某几次时适应度函数较大的情况,这可能与上述Sine混沌光映射的缺点有关,导致在迭代次数500次的情况下Sine-PSO算法没能够找到较好的精确解,且该情况随着粒子维度的增加变得更加明显。

3.总结

        根据第2节中的仿真结果可知,Sine-PSO算法在地位空间中具有较好的求解性能,但随着粒子解维度的逐渐提升,Sine混沌映射策略本身的缺点被逐渐放大,从而导致无法获取较好的精确解。而ISine混沌映射策略能够更好的处理高维粒子优化求解问题,当粒子维度逐渐升高时,依旧能够获取较好的初始解及精确解。

        限于作者水平有限,上述文章在复现过程中可能存在不足,欢迎大家批评指正。本文在写作过程中Sine混沌映射原理参照下述文献进行,在此对该文献作者进行感谢,若有侵权,请联系我进行修改删除。参考文献如下:

[1]刘磊;姜博文;周恒扬;浦晨玮;钱鹏飞;刘波. 融合改进Sine混沌映射的新型粒子群优化算法 [J]. 西安交通大学学报, 2023, 57 (08): 182-193.

往期传送门:

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

【Matlab群体智能算法第二期】基于反向学习的改进粒子群算法(含matlab代码)-CSDN博客

【Matlab群体智能算法第三期】基于Tent混沌映射的TPSO算法(含完整matlab代码)-CSDN博客

【Matlab群体智能算法第四期】基于Tent混沌映射、自适应t分布和动态选择策略的TDPSO算法(含完整matlab代码)-CSDN博客

【Matlab群体智能算法第五期】基于改进Tent混沌映射的ITPSO算法(含完整matlab代码)-CSDN博客

【Matlab群体智能算法第六期】基于Sine混沌映射的SPSO算法(含完整matlab代码)-CSDN博客

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Sine混沌映射优化麻雀算法改进BP神经网络是一种将混沌映射和麻雀算法应用于BP神经网络训练的方法,下面将介绍其基本思想和步骤。 1. BP神经网络简介:BP神经网络是一种常用的前向反馈人工神经网络,可以用于解决分类、回归等问题。但是,BP神经网络的训练过程中容易陷入局部最优解,训练速度较慢。 2. 混沌映射简介:混沌映射是一类具有随机性和确定性的非线性动力学系统,具有高度敏感性和无周期性。Sine混沌映射是一种常见的混沌映射模型。 3. 麻雀算法简介:麻雀算法是一种基于麻雀群体行为的优化算法,模拟了麻雀觅食的过程,具有较好的全局搜索能力和收敛速度。 4. Sine混沌映射优化麻雀算法改进BP神经网络的步骤: a. 初始化BP神经网络的权重和偏置。 b. 生成初始种群:使用Sine混沌映射生成初始种群,每个个体表示一组BP神经网络的权重和偏置。 c. 麻雀算法搜索:利用麻雀算法,根据适应度函数评估个体的优劣,通过迭代搜索找到适应度较好的个体。 d. 权重和偏置更新:根据麻雀算法搜索得到的个体,更新BP神经网络的权重和偏置。 e. 训练BP神经网络:使用更新后的权重和偏置,对BP神经网络进行训练,通过反向传播算法进行权重和偏置的调整。 f. 评估性能:根据训练结果,评估BP神经网络在测试数据上的性能指标,如准确率、均方误差等。 g. 终止条件判断:根据预设的终止条件(如达到最大迭代次数或满足收敛要求),决定是否结束训练过程。 通过将Sine混沌映射和麻雀算法结合应用于BP神经网络的训练过程中,可以提高BP神经网络的全局搜索能力和收敛速度,进而改进了BP神经网络的性能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值