粒子群算法matlab算法已经调试.docx

上传人:b****5 文档编号:12372194 上传时间:2023-04-18 格式:DOCX 页数:37 大小:19.50KB
下载 相关 举报
粒子群算法matlab算法已经调试.docx_第1页
第1页 / 共37页
粒子群算法matlab算法已经调试.docx_第2页
第2页 / 共37页
粒子群算法matlab算法已经调试.docx_第3页
第3页 / 共37页
粒子群算法matlab算法已经调试.docx_第4页
第4页 / 共37页
粒子群算法matlab算法已经调试.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

粒子群算法matlab算法已经调试.docx

《粒子群算法matlab算法已经调试.docx》由会员分享,可在线阅读,更多相关《粒子群算法matlab算法已经调试.docx(37页珍藏版)》请在冰豆网上搜索。

粒子群算法matlab算法已经调试.docx

粒子群算法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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 表格类模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1