粒子群算法matlab算法已经调试.docx
- 文档编号:12372194
- 上传时间:2023-04-18
- 格式:DOCX
- 页数:37
- 大小:19.50KB
粒子群算法matlab算法已经调试.docx
《粒子群算法matlab算法已经调试.docx》由会员分享,可在线阅读,更多相关《粒子群算法matlab算法已经调试.docx(37页珍藏版)》请在冰豆网上搜索。
粒子群算法matlab算法已经调试
程序1
当c11c212,c12
c221.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=10A(-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)
endplot(x(:
j),'b*');gridonxlabel(粒子')
ylabel('初始位置')
tInfo=strcat('第:
char(j+48),'维');if(j>9)
tInfo=strcat(第',char(floor(j/10)+48),char(rem(j,10)+48),'维');
endtitle(tInfo)end
%显示种群速度
figure
(2)
forj=1:
Dif(rem(D,2)>0)subplot((D+1)/2,2,j)
else
subplot(D/2,2,j)
endplot(x(:
j),'b*');gridonxlabel(粒子')ylabel('初始速度')tInfo=strcat(第,char(j+48),'维');if(j>9)
tinfo=strcat(第:
char(floor(j/10)+48),char(rem(j,10)+48),'维);
endtitle(tInfo)endfigure(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 gb1=ones(1,T); %浸入主循环,按照公式依次迭代直到满足精度或者迭代次数-- fori=1: T forj=1: N if(fitness(x1(j,: ),D) )=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; endplot(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 %初始化种全局最有位置和最优解 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); endv2(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 sum=sum+x(i)A2; end result=sum; 程序2 当c11c212于c120,c222,w1.2对比 a)%主函数源程序(main.m) %基本粒子群算法(particleswarmoptimization) %名称: 基本粒子群算法 %初始格式化 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: Dif(rem(D,2)>0)subplot((D+1)/2,2,j) else subplot(D/2,2,j) endplot(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),'维'); endtitle(tInfo)end %显示种群速度 figure (2) forj=1: D if(rem(D,2)>0) subplot((D+1)/2,2,j) elsesubplot(D/2,2,j)endplot(x(: j),'b*');gridonxlabel(粒子') ylabel('初始速度') tInfo=strcat('第,char(j+48),'维'); if(j>9) tinfo=strcat(第: char(floor(j/10)+48),char(rem(j,10)+48),'维); endtitle(tinfo) end figure(3) %第一个图 subplot(1,2,1) %初始化种群个体(在此限定速度和位置) x1=x; v1=v; %初始化个体最优位置和最优值--- p1=x1; pbest1=ones(N,1); fori=1: Npbest1(i)=fitness(x1(i,: ),D); end %初始化全局最优位置和最优值 g1=1000*ones(1,D);gbest1=1000; fori=1: N if(pbest1(i) );gbest1=pbest1(i); endendgb1=ones(1,T); %浸入主循环,按照公式依次迭代直到满足精度或者迭代次数 fori=1: T forj=1: N if(fitness(x1(j,: ),D) )=x1(j,: );pbest1(j)=fitness(x1(j,: ),D); end if(pbest1(j) );gbest1=pbest1(j); endv1(j,: )=w*v1(j,: )+c11*rand*(p1(j,: )-x1(j,: ))+c21*rand*(g1-x1(j,: )); x1(j,: )=x1(j,: )+v1(j,: ); endgb1(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: Npbest2(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 endgb2=ones(1,T); %浸入主循环,按照公式依次迭代直到满足精度或者迭代次数 fori=1: T forj=1: N if(fitness(x2(j,: ),D) )=x2(j,: );pbest2(j)=fitness(x2(j,: ),D); end if(pbest2(j) );gbest2=pbest2(j); endv2(j,: )=w*v2(j,: )+c12*rand*(p2(j,: )-x2(j,: ))+c22*rand*(g2-x2(j,: )); x2(j,: )=x2(j,: )+v2(j,: ); endgb2(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 sum=sum+x(i)A2; endresult=sum; 程序3 当c11c212,w1.2于c122,c220,w1.2对比 a)%主函数源程序(main.m) %基本粒子群算法(particleswarmoptimization) %名称: 基本粒子群算法 %初始格式化 clearall;%清除所有变量 clc;%清屏 formatlong;%将数据显示为长整形科学计数 %给定初始条条件 N=40;%3初始化群体个数 D=10;%初始化群体维数 T=100;%初始化群体最迭代次数 c11=2;%学习因子1 c21=2;%学习因子2 c22=0; w=1.2; eps=10A(-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) c12=2; subplot((D+1)/2,2,j) else subplot(D/2,2,j) endplot(x(: j),'b*');gridonxlabel(粒子') ylabel('初始位置') tInfo=strcat('第: char(j+48),'维');if(j>9) tInfo=strcat(第',char(floor(j/10)+48),char(rem(j,10)+48),'维'); endtitle(tInfo)end %显示种群速度 figure (2) forj=1: Dif(rem(D,2)>0)subplot((D+1)/2,2,j) else subplot(D/2,2,j) endplot(x(: j),'b*');gridonxlabel(粒子')ylabel('初始速度')tInfo=strcat(第,char(j+48),'维');if(j>9) tinfo=strcat(第: char(floor(j/10)+48),char(rem(j,10)+48),'维); endtitle(tInfo)endfigure(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 gb1=ones(1,T); %浸入主循环,按照公式依次迭代直到满足精度或者迭代次数-- fori=1: T forj=1: N if(fitness(x1(j,: ),D) )=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; endplot(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 %初始化种全局最有位置和最优解 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); endv2(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 sum=sum+x(i)A2; end result=sum; 程序4 1.5测试函 对CiC2,WiW2分别对其取值Ci1.1,C22,W11.2,W2 数。 a)%主函数源程序(main.m) %基本粒子群算法(partiClesWarmoptimization) %名称: 基本粒子群算法 %初始格式化 Clearall;%清除所有变量 ClC;%清屏 formatlong;%将数据显示为长整形科学计数 %给定初始条条件 N=40;%3初始化群体个数 D=10;%初始化群体维数 T=100;%初始化群体最迭代次数 c1=1.1;%学习因子1 c2=2;%学习因子2 w1=1.2;%惯性权重 w2=1.5;%惯性权重 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: Dif(rem(D,2)>0)subplot((D+1)/2,2,j) else subplot(D/2,2,j)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),'维'); endtitle(tInfo) end %显示种群速度 figure (2) forj=1: Dif(rem(D,2)>0) subplot((D+1)/2,2,j) elsesubplot(D/2,2,j)endplot(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),'维); endtitle(tinfo) end figure(3) subplot(1,2,1) %初始化种群个体(在此限定速度和位置) x1=x; v1=v; %初始化个体最优位置和最优值--- p1=x1;pbest1=ones(N,1); fori=1: Npbest1(i)=fitness(x1(i,: ),D); end %初始化全局最优位置和最优值 g1=1000*ones(1,D);gbest1=1000; fori=1: Nif(pbest1(i) );gbest1=pbest1(i); end end gb1=ones(1,T); %浸入主循环,按照公式依次迭代直到满足精度或者迭代次数 fori=1: T forj=1: N if(fitness(x1(j,: ),D) )=x1(j,: );pbest1(j)=fitness(x1(j,: ),D); end if(pbest1(j) );gbest1=pbest1(j); endv1(j,: )=w1*v1(j,: )+c1*rand*(p1(j,: )-x1(j,: ))+c2*rand*(g1-x1(j,: ));x1(j,: )=x1(j,: )+v1(j,: ); endgb1(i)=gbest1; endplot(gb1)TempStr=sprintf('w=%g',w1);title(TempStr); xlabel('迭代次数'); ylabel('适应度值'); subplot(1,2,2) %初始化种群个体(在此限定速度和位置) x2=x; v2=v; %初始化种群个体最有位置和最优解 p2=x2; pbest2=ones(N,1); fori=1: Npbest2(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 endgb2=ones(1,T); %浸入主循环,按照公式依次迭代直到满足精度或者迭代次数- fori=1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 粒子 算法 matlab 已经 调试
![提示](https://static.bdocx.com/images/bang_tan.gif)