资源简介
完整的PSO代码,其中包括标准函数的测试。
代码片段和文件信息
function PSOstandard_benchmarks_Test
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
[PositionVelocity]=initial_Position_Velocity(dimensionSizeXmaxXminVmaxVmin);%重新初始化位置和速度
N_dismissed=N_dismissed+1;
N_dismissed
warning(‘粒子过分集中!重新初始化……‘); % 给出信息
itrtn
end
end
end
Weight=0.4+0.5*(Tmax-itrtn)/Tmax;
% Weight=1;
r1=rand(1);r2=rand(1);
for i=1:Size
Velocity(:i)=Weight*
- 上一篇:CVX工具箱使用说明
- 下一篇:格基约减LLL算法
相关资源
- 粒子群算法优化pid源码 matlab仿真.ra
- pso解决单目标优化问题
- 基本粒子群算法,MATLAB文件的M文件编
- matlab粒子群算法PSO实现函数极值优化
- PSO负载均衡算法-matlab实现
- l粒子群算法工具箱psot
- PSO_LSSVM程序代码及LSSVM工具箱
- libsvm-3.1-[FarutoUltimate3.1
- PSO优化模糊控制器进行电动汽车能量
- 多目标粒子群社团检测算法MODPSO
- PSO优化SVM参数matlab
- 蜂群SVMABC-SVM遗传算法SVMGA-SVM粒子群
- 遗传粒子群优化算法-GAPSO.rar
- pso优化bp神经网络代码
- MATLAB 多目标粒子群算法源代码
- 粒子群算法应用在路径规划matlab
- MOPSO+
- 粒子群算法matlab含注释
- pso-bp代码
- 基于权重改进的PSO
- PSO优化PID参数
- pso工具箱 matlab
- 智能优化算法及其MATLAB第2版-书中的
- MOPSO多目标优化程序MATLAB代码.zip
- 基于粒子群算法的优化模型matlab程序
- psot工具箱及使用说明.zip
- matlab 2D椭圆和3D椭球拟合
- 灰狼算法GWO和粒子群算法PSO的matlab源
- PSO_GD.m粒子群求解多目标优化
- 粒子群优化CLPSO的MATLAB源代码
评论
共有 条评论