资源简介
完整的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算法
相关资源
- matlab利用复化梯形公式,复化simpson公
- PSO工具箱使用简介\\test_func.mmatlab程序
- Matlab写的粒子群优化算法,很好用!
- pso_lssvm回归预测
- 粒子群算法源代码
- 基于pso的测试函数Griewank得MATLAB算法代
- 基于粒子群PSO算法系统辨识matlab程序
- 优化算法——粒子群算法(PSO)原理
- 粒子群算法求解BP神经网络参数
- PSO优化PID参数的matlab程序
- 粒子群算法PSOmatlab工具箱toolbox
- matlab——PSO算法以及两种适应度函数
- MATLAB智能算法超级学习手册
- 基于粒子群优化的极限学习机
- pso算法无功优化
- MOPSO多目标粒子群优化算法MATLAB实现可
- PSO优化RBFNN的MATLAB源代码
- 基于matlab的粒子群算法PSO工具箱
- pso-SVM的MATLAB程序
- my_CLPSO.m
- 带时间窗的车辆路径规划问题的粒子
- dpso算法matlab实现
- 带有约束条件的粒子群算法代码pso.
- pso优化BP的MATLAB代码
- matlab可用粒子群工具箱 - PSOt
- 复化Simpson公式
- 基于MATLAB的PSO算法.pdf
- 使用PSO算法进行PID控制器的整定matl
- MATLAB-PSO区域覆盖
- PSO-RBF的MATLAB程序实现
评论
共有 条评论