matlab粒子群优化算法举例分析.docx
- 文档编号:24413931
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:56
- 大小:25.57KB
matlab粒子群优化算法举例分析.docx
《matlab粒子群优化算法举例分析.docx》由会员分享,可在线阅读,更多相关《matlab粒子群优化算法举例分析.docx(56页珍藏版)》请在冰豆网上搜索。
matlab粒子群优化算法举例分析
精品文档
10
2对于适应度函数fitness
例函数f(x)
xi
对其参数w,c1,c3做出不同
i1
方式的比较以测试其对函数结果影响。
当c11
c21
2,c12
c221.5,w
1.2。
(适应函数f(x)
10
2)
xi
i1
程序1
当c11
c21
2,c12
c22
1.5,w1.2。
a)%主函数源程序(main.m)
%------
基本粒子群算法
(particleswarmoptimization
)
%------
名称:
基本粒子群算法
%------
初始格式化
clearall;
%
清除所有变量
clc;
%
清屏
formatlong;
%
将数据显示为长整形科学计数
%------
给定初始条条件------------------
N=40;
%
3初始化群体个数
D=10;
%
初始化群体维数
T=100;
%
初始化群体最迭代次数
c11=2;
%
学习因子1
c21=2;
%
学习因子2
c12=1.5;
c22=1.5;
w=1.2;
%
惯性权重
eps=10^(-6);
%
设置精度(在已知最小值的时候用)
%------
初始化种群个体(限定位置和速度)
------------
x=zeros(N,D);
%x是位置,初始化位置空间(矩阵)
v=zeros(N,D);
%v是速度,初始化速度空间(矩阵)
fori=1:
N
forj=1:
D
x(i,j)=randn;
%
随机初始化位置,randn
返回一个随机变化的符合正态分布的
数
v(i,j)=randn;
%
随机初始化速度
end
end
%------
显示群位置----------------------
figure
(1)
。
1欢迎下载
精品文档
forj=1:
D
if(rem(D,2)>0)
subplot((D+1)/2,2,j)
else
subplot(D/2,2,j)
end
plot(x(:
j),'b*');gridon%’b*’表示颜色是绿的,用*显示在图上
xlabel('粒子')
ylabel('初始位置')
tInfo=strcat('第',char(j+48),'维');%strcat使括号里的东西连成字符串
if(j>9)
tInfo=strcat('第',char(floor(j/10)+48));%floor向负无穷方向取整
char(rem(j,10)+48,'维');%rem取余
end
title(tInfo)
end
%------显示种群速度
figure
(2)
forj=1:
D
if(rem(D,2)>0)
subplot((D+1)/2,2,j)
else
subplot(D/2,2,j)
end
plot(v(:
j),'b*');gridon%是不是应该是v(:
j)
xlabel('粒子')
ylabel('初始速度')
tInfo=strcat('第',char(j+48),'维');
if(j>9)
tInfo=strcat('第',char(floor(j/10)+48),'维');
char(rem(j,10)+48,'维);
end
title(tInfo)
end
figure(3)
%第一个图
subplot(1,2,1)
%------初始化种群个体(在此限定速度和位置)------------
x1=x;
v1=v;
%------初始化个体最优位置和最优值---
p1=x1;
pbest1=ones(N,1);
fori=1:
N
。
2欢迎下载
精品文档
pbest1(i)=fitness(x1(i,:
),D);%适应度函数
end
%------初始化全局最优位置和最优值---------------
g1=1000*ones(1,D);
gbest1=1000;
fori=1:
N
if(pbest1(i) g1=p1(i,: ); gbest1=pbest1(i); end end gb1=ones(1,T); %-----进入主循环,按照公式依次迭代直到满足精度或者迭代次数--- fori=1: T forj=1: N if(fitness(x1(j,: ),D) p1(j,: )=x1(j,: ); pbest1(j)=fitness(x1(j,: ),D); end if(pbest1(j) g1=p1(j,: ); gbest1=pbest1(j); end v1(j,: )=w*v1(j,: )+c11*rand*(p1(j,: )-x1(j,: ))+c21*rand* (g1-x1(j,: )); x1(j,: )=x1(j,: )+v1(j,: ); end gb1(i)=gbest1; end plot(gb1) TempStr=sprintf('c1=%g,c2=%g',c11,c21); title(TempStr); xlabel('迭代次数'); ylabel('适应度值'); %第二个图 subplot(1,2,2) %-----初始化种群个体(在此限定速度和位置)------------ x2=x; v2=v; %-----初始化种群个体最有位置和最优解----------- p2=x2; pbest2=ones(N,1); fori=1: N 。 3欢迎下载 精品文档 pbest2(i)=fitness(x2(i,: ),D); end %-----初始化种全局最优位置和最优解------ g2=1000*ones(1,D); gbest2=1000; fori=1: N if(pbest2(i) g2=p2(i,: );%最优位置 gbest2=pbest2(i);%最优解 end end gb2=ones(1,T);%T为迭代次数T=100 %------进入主循环,按照公式依次迭代直到满足精度或者迭代次数--- fori=1: T forj=1: N if(fitness(x2(j,: ),D) p2(j,: )=x2(j,: ); pbest2(j)=fitness(x2(j,: ),D); end if(pbest2(j) g2=p2(j,: ); gbest2=pbest2(j); end v2(j,: )=w*v2(j,: )+c12*rand*(p2(j,: )-x2(j,: ))+c22*rand* (g2-x2(j,: )); x2(j,: )=x2(j,: )+v2(j,: ); end gb2(i)=gbest2;%每一代的最优解 end plot(gb2) TempStr=sprintf('c1=%g,c2=%g',c12,c22); title(TempStr); xlabel('迭代次数'); ylabel('适应度值'); 程序2 当c11c212于c120,c222,w1.2对比 a)%主函数源程序(main.m) %------基本粒子群算法(particleswarmoptimization) %------名称: 基本粒子群算法 。 4欢迎下载 精品文档 %------ 初始格式化 clearall; % 清除所有变量 clc; % 清屏 formatlong; % 将数据显示为长整形科学计数 %------ 给定初始条条件------------------ N=40; % 3初始化群体个数 D=10; % 初始化群体维数 T=100; % 初始化群体最迭代次数 c11=2; % 学习因子1 c21=2; % 学习因子2 c12=0; c22=2; w=1.2; % 惯性权重 eps=10^(-6); % 设置精度(在已知最小值的时候用) %------ 初始化种群个体(限定位置和速度)------------ x=zeros(N,D); v=zeros(N,D); fori=1: N forj=1: D x(i,j)=randn; % 随机初始化位置 v(i,j)=randn; % 随机初始化速度 end end %------显示群位置---------------------- figure (1) forj=1: D if(rem(D,2)>0) subplot((D+1)/2,2,j) else subplot(D/2,2,j) end plot(x(: j),'b*');gridon xlabel('粒子') ylabel('初始位置') tInfo=strcat('第',char(j+48),'维'); 。 5欢迎下载 精品文档 if(j>9) tInfo=strcat('第',char(floor(j/10)+48), char(rem(j,10)+48),'维'); end title(tInfo) end %------显示种群速度 figure (2) forj=1: D if(rem(D,2)>0) subplot((D+1)/2,2,j) else subplot(D/2,2,j) end plot(x(: j),'b*');gridon xlabel('粒子') ylabel('初始速度') tInfo=strcat('第,char(j+48),'维'); if(j>9) tInfo=strcat('第',char(floor(j/10)+48), char(rem(j,10)+48),'维); end title(tInfo) end figure(3) %第一个图 subplot(1,2,1) %------初始化种群个体(在此限定速度和位置)------------ x1=x; v1=v; %------初始化个体最优位置和最优值--- p1=x1; pbest1=ones(N,1); fori=1: N pbest1(i)=fitness(x1(i,: ),D); 。 6欢迎下载 精品文档 end %------初始化全局最优位置和最优值--------------- g1=1000*ones(1,D); gbest1=1000; fori=1: N if(pbest1(i) g1=p1(i,: ); gbest1=pbest1(i); end end gb1=ones(1,T); %-----浸入主循环,按照公式依次迭代直到满足精度或者迭代次数--- fori=1: T forj=1: N if(fitness(x1(j,: ),D) p1(j,: )=x1(j,: ); pbest1(j)=fitness(x1(j,: ),D); end if(pbest1(j) g1=p1(j,: ); gbest1=pbest1(j); end v1(j,: )=w*v1(j,: )+c11*rand*(p1(j,: )-x1(j,: ))+c21*rand*(g1-x1(j,: ));x1(j,: )=x1(j,: )+v1(j,: ); end gb1(i)=gbest1; end plot(gb1) TempStr=sprintf('c1=%g,c2=%g',c11,c21); title(TempStr); xlabel('迭代次数'); ylabel('适应度值'); %第二个图 subplot(1,2,2) %-----初始化种群个体(在此限定速度和位置)------------ 。 7欢迎下载 精品文档 x2=x; v2=v; %-----初始化种群个体最有位置和最优解----------- p2=x2; pbest2=ones(N,1); fori=1: N pbest2(i)=fitness(x2(i,: ),D); end %-----初始化种全局最有位置和最优解------ g2=1000*ones(1,D); gbest2=1000; fori=1: N if(pbest2(i) g2=p2(i,: ); gbest2=pbest2(i); end end gb2=ones(1,T); %------浸入主循环,按照公式依次迭代直到满足精度或者迭代次数--- fori=1: T forj=1: N if(fitness(x2(j,: ),D) p2(j,: )=x2(j,: ); pbest2(j)=fitness(x2(j,: ),D); end if(pbest2(j) g2=p2(j,: ); gbest2=pbest2(j); end v2(j,: )=w*v2(j,: )+c12*rand*(p2(j,: )-x2(j,: ))+c22*rand*(g2-x2(j,: ));x2(j,: )=x2(j,: )+v2(j,: ); end gb2(i)=gbest2; end plot(gb2) 。 8欢迎下载 精品文档 TempStr=sprintf('c1=%g,c2=%g',c12,c22); title(TempStr); xlabel('迭代次数'); ylabel('适应度值'); b)适应度函数 %适应度函数(fitness.m) functionresult=fitness(x,D) sum=0; fori=1: D sum=sum+x(i)^2; end result=sum; %----------------------- 程序 3----------------------------------------------- 程序3 当c11 c21 2,w1.2于c122,c220,w 1.2对比 a)%主函数源程序(main.m) %------ 基本粒子群算法 (particleswarmoptimization ) %------ 名称: 基本粒子群算法 %------ 初始格式化 clearall; % 清除所有变量 clc; % 清屏 formatlong; % 将数据显示为长整形科学计数 %------ 给定初始条条件------------------ N=40; % 3初始化群体个数 D=10; % 初始化群体维数 T=100; % 初始化群体最迭代次数 c11=2; % 学习因子1 c21=2; % 学习因子2 。 9欢迎下载 精品文档 c12=2; c22=0; w=1.2;%惯性权重 eps=10^(-6);%设置精度(在已知最小值的时候用) %------初始化种群个体(限定位置和速度)------------ x=zeros(N,D); v=zeros(N,D); fori=1: N forj=1: D x(i,j)=randn;%随机初始化位置 v(i,j)=randn;%随机初始化速度 end end %------显示群位置---------------------- figure (1) forj=1: D if(rem(D,2)>0) subplot((D+1)/2,2,j) else subplot(D/2,2,j) end plot(x(: j),'b*');gridon xlabel('粒子') ylabel('初始位置') tInfo=strcat('第',char(j+48),'维'); if(j>9) tInfo=strcat('第',char(floor(j/10)+48), char(rem(j,10)+48),'维'); end title(tInfo) end %------显示种群速度 figure (2) forj=1: D if(rem(D,2)>0) 。 10欢迎下载 精品文档 subplot((D+1)/2,2,j) else subplot(D/2,2,j) end plot(x(: j),'b*');gridon xlabel('粒子') ylabel('初始速度') tInfo=strcat('第,char(j+48),'维'); if(j>9) tInfo=strcat('第',char(floor(j/10)+48), char(rem(j,10)+48),'维); end title(tInfo) end figure(3) %第一个图 subplot(1,2,1) %------初始化种群个体(在此限定速度和位置)------------ x1=x; v1=v; %------初始化个体最优位置和最优值--- p1=x1; pbest1=ones(N,1); fori=1: N pbest1(i)=fitness(x1(i,: ),D); end %------初始化全局最优位置和最优值--------------- g1=1000*ones(1,D); gbest1=1000; fori=1: N if(pbest1(i) g1=p1(i,: ); gbest1=pbest1(i); end end 。 11欢迎下载 精品文档 gb1=ones(1,T); %-----浸入主循环,按照公式依次迭代直到满足精度或者迭代次数--- fori=1: T forj=1: N if(fitness(x1(j,: ),D) p1(j,: )=x1(j,: ); pbest1(j)=fitness(x1(j,: ),D); end if(pbest1(j) g1=p1(j,: ); gbest1=pbest1(j); end v1(j,: )=w*v1(j,: )+c11*rand*(p1(j,: )-x1(j,: ))+c21*rand*(g1-x1(j,: ));x1(j,: )=x1(j,: )+v1(j,: ); end gb1(i)=gbest1; end plot(gb1) TempStr=sprintf('c1=%g,c2=%g',c11,c21); title(TempStr); xlabel('迭代次数'); ylabel('适应度值'); %第二个图 subplot(1,2,2) %-----初始化种群个体(在此限定速度和位置)------------ x2=x; v2=v; %-----初始化种群个体最有位置和最优解----------- p2=x2; pbest2=ones(N,1); fori=1: N pbest2(i)=fitness(x2(i,: ),D); end %-----初始化种全局最有位置和最优解------ 。 12欢迎下载 精品文档 g2=1000*ones(1,D); gbest2=1000; fori=1: N if(pbest2(i) g2=p2(i,: ); gbest2=pbest2(i); end end gb2=ones(1,T); %------浸入主循环,按照公式依次迭代直到满足精度或者迭代次数--- fori=1: T forj=1: N if(fitness(x2(j,: ),D) p2(j,: )=x2(j,: ); pbest2(j)=fitness(x2(j,: ),D); end if(pbest2(j) g2=p2(j,: ); gbest2=pbest2(j); end v2(j,: )=w*v2(j,: )+c12*rand*(p2(j,: )-x2(j,: ))+c22*rand*(g2-x2(j,: ));x2(j,: )=x2(j,: )+v2(j,: ); end gb2(i)=gbest2; end plot(gb2) TempStr=sprintf('c1=%g,c2=%g',c12,c22); title(TempStr); xlabel('迭代次数'); ylabel('适应度值'); b)适应度函数 %适应度函数(fitness.m) functionresult=fitness(x,D) sum=0; fori=1: D 。 13欢迎下载 精品文档 sum=sum+x(i)^2; en
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 粒子 优化 算法 举例 分析