pso优化算法matlab程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%------初始格式化-------------------------------------------------
clear all;
clc;
format long;
%------给定初始化条件---------------------------------------------
c1=1.4962; %学习因子1
c2=1.4962; %学习因子2
w=0.7298; %惯性权重
MaxDT=1000; %最大迭代次数
D=10; %搜索空间维数(未知数个数)
N=40; %初始化群体个体数目
eps=10^(-6); %设置精度(在已知最小值时候用)
%------初始化种群的个体(可以在这里限定位置和速度的范围)-----------
for i=1:N
for j=1:D x(i,j)=randn; %随机初始化位置
v(i,j)=randn; %随机初始化速度
end
end
%------先计算各个粒子的适应度,并初始化Pi 和Pg---------------------
for i=1:N
p(i)=fitness(x(i,:),D);
y(i,:)=x(i,:);
end pg=x(1,:);
for i=2:N
if fitness(x(i,:),D)
end
end
%------进入主要循环,按照公式依次迭代,直到满足精度要求-----------
for t=1:MaxDT for i=1:N
v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:));
x(i,:)=x(i,:)+v(i,:);
if fitness(x(i,:),D)
p(i)=fitness(x(i,:),D);
y(i,:)=x(i,:); %Pg 为全局最优
end
if p(i)
pg=y(i,:);
end
end
Pbest(t)=fitness(pg,D);
end
%------最后给出计算结果disp('*************************************************************')
disp('函数的全局最优位置为:')
Solution=pg' disp('最后得到的优化极值为:')
Result=fitness(pg,D)
disp('*************************************************************') %------算法结束---DreamSun GL & HF-----------------------------------
适应度函数源程序(fitness.m)
function result=fitness(x,D) sum=0;
for i=1:D sum=sum+x(i)^2;
end
result=sum;