Matlab粒子群算法(PSO)优化程序——调整权重、改进学习因子.pdf

Matlab粒子群算法(PSO)优化程序——调整权重、改进学习因子.pdf

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

Matlab粒⼦群算法(PSO)优化程序——调整权重、改进学习因⼦

粒⼦群算法(ParticleSarmOptimization,PSO)在应⽤的过程中主要调整权重,学习因⼦,才能对解决的问题有所针对性。下⾯有6

种调整权重和学习因⼦:

⼀、调整粒⼦群算法的权重

1.线性递减权重

2.⾃适应调整权重

3.随机权重

⼆、调整粒⼦群算法的学习因⼦

1.收缩因⼦

2.同步学习因⼦

3.异步学习因⼦

⽬标函数如下:

functiony=A11_01(x)

y=x(1)^2+x(2)^2-x(1)*x(2)-10*x(1)-4*x(2)+0;

⼀、调整粒⼦群算法的权重

1.线性递减权重

Shi.Y认为较⼤的权重惯性有利于全局有哪些信誉好的足球投注网站,较⼩的权重有利于局部有哪些信誉好的足球投注网站,他提出的线性递减权重刚好满⾜这样的需求。

⼀般⽽⾔,k为当前迭代次数,T为最⼤迭代次数。

%粒⼦群PSO线性递减权重

clear

clc

%%预设参数

n=100;

d=2;%变量个数

c1=2;

c2=2;

w=0.9;

K=100;

ws=0.9;

we=0.4;

%%分布粒⼦

x=-10+20*rand(n,d);

v=-5+10*rand(n,d);

%%计算适应度

fit=zeros(n,1);

forj=1:n

fit(j)=A11_01(x(j,:));

end

%计算个体极值

pbest=x;

ind=find(min(fit)==fit);

gbest=x(ind,:);

%%更新速度与位置

fori=1:K

form=1:n

v(m,:)=w*v(m,:)+c1*rand*(pbest(m,:)-x(m,:))+c2*rand*(gbest-x(m,:));

w=ws-(ws-we)*(i/K);

v(m,find(v(m,:)-10))=-10;

v(m,find(v(m,:)10))=10;

x(m,:)=x(m,:)+0.5*v(m,:);

x(m,find(x(m,:)-10))=-10;

x(m,find(x(m,:)10))=10;

%重新计算适应度

fit(m)=A11_01(x(m,:));

ifx(m,:)A11_01(pbest(m,:))

pbest(m,:)=x(m,:);

end

ifA11_01(pbest(m,:))A11_01(gbest)

gbest=pbest(m,:);

end

end

fitnessbest(i)=A11_01(gbest);

end

plot(fitnessbest);

xlabel(迭代次数);

ylabel(适应度值);

title(迭代优化过程);

图1线性递减权重的迭代优化过程

2.⾃适应调整权重

⾃适应权重:权重随着粒⼦适应度值的改变⽽改变。

%%⾃适应调整权重

clearall;

clc;

%%预设参数

n=100;

d=2;%变量个数

c1=2;

c2=2;

K=20;

wmax=0.9;

wmin=0.4;

%%分布粒⼦

x=-10+20*rand(n,d);

v=-5+10*rand(n,d);

%%计算适应度

fit=zeros(n,1);

forj=1:n

fit(j)=A11_01(x(j,:));

end

%计算个体极值

pbest=x;

ind=find(min(fit)==fit);

gbest=x(ind,:);

%%更新速度与位置

fori=1:K

form=1:n

f=fit(m);

favg=sum(fit)/n;

fmin=min(fit);

iff=favg

w=wmin-(wmax-wmin)*(f-fmin)/(favg-fmin);

else

w=wmax;

end

v(m,:)=

您可能关注的文档

文档评论(0)

wangtao130 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档