📄 pso1.txt
字号:
format long;
a=-10;%搜索空间
b=10;
n=0;
m=1;
c1=2; %学习因子1
c2=2; %学习因子2
% w1=1;
% w2=0.4
w=0.5;%惯性权重
MaxDT=4000; %最大迭代次数
D=2; %搜索空间维数(未知数个数)
N=50;
pg=[];%初始化群体个体数目
%------初始化种群的个体(可以在这里限定位置和速度的范围)------------
for i=1:N
for j=1:D
x(i,j)=rand*(b-a)+a; %随机初始化位置
v(i,j)=rand*(b-a)+a; %随机初始化速度
end
end
%XX=x(1,1:D)
%------先计算各个粒子的适应度,并初始化Pi和Pg----------------------
for i=1:N
p(i)=fitness1(x(i,1:D));
y(i,1:D)=x(i,1:D);
end
pg=x(1,1:D); %Pg为全局最优
for i=2:N
if fitness1(x(i,1:D))<fitness1(pg) %求极小值
pg=x(i,1:D);
end
end
%进入主要循环,按照公式依次迭代
t=1;
while(t<MaxDT )
% while 1
for i=1:N
% w=(w1-t)*(w1-w2)/MaxDT;
v(i,1:D)=w*v(i,1:D)+c1*rand*(y(i,1:D)-x(i,1:D))+c2*rand*(pg-x(i,1:D));
x(i,1:D)=x(i,1:D)+v(i,1:D);
if fitness1(x(i,1:D))<p(i)
p(i)=fitness1(x(i,1:D));
y(i,1:D)=x(i,1:D);
end
if p(i)<fitness1(pg)
pg=y(i,1:D);
end
end
gg= 0;
abs(gg-fitness1(pg))
if abs(gg-fitness1(pg))<10^(-10)
break;
end
t=t+1;
end
%计算结果
%pgg=pg
t
Result=fitness1(pg)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -