• 大小: 3KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-06
  • 语言: 其他
  • 标签: matlab  粒子群  pso  

资源简介

粒子群算法(pso)标准测试函数验证程序。在一个m文件中包括了目前文献中用于验证的7个标准测试函数(Ackley等)、三维动态显示,粒子过分集中时打散等功能。旨在为学习和研究者pso算法的同仁提供一个功能较为完备、简单易懂的标准版本,对于初学者可以通过此程序快速的实现入门,以便将更多的精力投入到深层次的研究中去!同时愿与所有致力于此的朋友共同探讨pso算法的改进与应用方面(如多目标、动态系统等)的经验。

资源截图

代码片段和文件信息

function PSOstandard_benchmarks_Test
%   感谢亲亲使用此代码,此代码解决您的问题了吗~(@^_^@)~
%   没解决的话告诉亲亲一个好消息,登录淘宝店铺“大成软件工作室”,可以下载(????)1分钱成品代码(′▽‘〃)哦~
%   是的,亲亲真的没有看错,挠破头皮的问题真的1分钱就可以解决了(づ??????)づ
%   小的这就把传送门给您,记得要收藏好哦(づ ̄3 ̄)づ╭?~
%   传送门:https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-15151018122.5.uwGoq5&id=538759553146
%   如果传送门失效,亲亲可以来店铺讨要,客服MM等亲亲来骚扰哦~(*/ω╲*)
web https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-15151018122.5.uwGoq5&id=538759553146 -browser
clear all;
close all;
c1=1.49445;c2=1.49445;%
global dimension  Size
dimension=40;Size=40;%种群维数 dimension、规模 Size
Tmax=1000;%%最大迭代次数 Tmax
%%选择不同测试函数的速度和位置限制范围%%
F_n=1;
switch F_n
  case 1   %%  f1_Sphere                    %%
           Vmax(1:dimension)= 30;  Vmin(1:dimension)=-30;
           Xmax(1:dimension)= 30;  Xmin(1:dimension)=-30;
  case 2   %%  f2_Quadric    [-100100]     %% 
           Vmax(1:dimension)= 100;  Vmin(1:dimension)=-100;
           Xmax(1:dimension)= 100;  Xmin(1:dimension)=-100;
  case 3   %%  f3_Ackley     [-3030]       %%
           Vmax(1:dimension)= 30;  Vmin(1:dimension)=-30;
           Xmax(1:dimension)= 30;  Xmin(1:dimension)=-30;
  case 4   %%  f4_griewank   [-600600]     %%
           Vmax(1:dimension)= 600;  Vmin(1:dimension)=-600;
           Xmax(1:dimension)= 600;  Xmin(1:dimension)=-600;
  case 5   %%  f5_Rastrigin  [-5.125.12]   %%
           Vmax(1:dimension)= 5.12;  Vmin(1:dimension)=-5.12;
           Xmax(1:dimension)= 5.12;  Xmin(1:dimension)=-5.12;
  case 6   %%  f6_Rosenbrock [-2.4082.408] %%
           Vmax(1:dimension)= 2.408;  Vmin(1:dimension)=-2.408;
           Xmax(1:dimension)= 2.408;  Xmin(1:dimension)=-2.408;
  case 7   %%  f7_Schaffer‘s f6 %%
           Vmax(1:dimension)= 2.408;  Vmin(1:dimension)=-2.408;
           Xmax(1:dimension)= 2.408;  Xmin(1:dimension)=-2.408;  
 end
%%三维显示粒子群运动变化%%
global Swarmscope; 
       Swarmscope = plot(00 ‘.‘);
       axis([Xmin(1) Xmax(1) Xmin(2) Xmax(2) Xmin(3) Xmax(3)]);   %初始轴的范围的设置
    %  axis square;
       grid on;
       set(Swarmscope‘EraseMode‘‘xor‘‘MarkerSize‘12); %设置用来显示粒子.
%%initial Position Velocity%%
Position=zeros(dimensionSize);%以后位置Position统一为此种记法:行 dimension;列 Size;
Velocity=zeros(dimensionSize);%每个粒子的位置、速度对应于一列。
[PositionVelocity]=initial_Position_Velocity(dimensionSizeXmaxXminVmaxVmin);
%%个体最优 P_p 和全局最优 globe 初始赋值%%
P_p=Position;globe=zeros(dimension1);
%%评价每个粒子适应值,寻找出 globle%%
for j=1:Size
    Pos=Position(:j);
    fz(j)=Fitness_Function(PosF_n);
end
[P_gI]=min(fz);%P_g  1*1 ?
globe=Position(:I);
%%打散参数设置%%
 N_dismiss=51;%太小,不利于初始寻优
 N_dismissed=0;%记录被打散的次数
 deltaP_gg=0.001%种群过分收敛衡量标准值(适应度变化率)
%  reset = 1;  %设置reset = 1时指示粒子群过分收敛时将被打散,如果reset=0则不打散
 reset_dismiss = 0;
%%迭代开始%%
for itrtn=1:Tmax
   time(itrtn)=itrtn;
%%过于集中时打散%%
   if reset_dismiss==1
       bit=1;
       if itrtn>N_dismiss
          bit=bit&((P_gg(itrtn-1)-P_gg(itrtn-N_dismiss))/P_gg(itrtn-1)< deltaP_gg);
          if bit==1
     

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2006-05-15 13:17  benchmarks_test_pso\
     文件        8119  2016-09-23 06:29  benchmarks_test_pso\PSOstandard_benchmarks_Test.m

评论

共有 条评论