renew.asv

来自「POS算法」· ASV 代码 · 共 55 行

ASV
55
字号
function pop=renew(pop,PBEST,GBEST)
global popsize
global dimsize
global a0max
global a0min
global a1max
global a1min
global gmax
global gmin
global dmax
global dmin

global va0max
global va0min
global va1max
global va1min
global vgmax
global vgmin
global vdmax
global vdmin

global c1
global c2
global wcmax
global wcmin
global generation
global maxgeneration
global dimsize
xmin=[a0min,a1min,dmin,dmin,dmin,dmin,gmin,gmin,gmin,gmin];
xmax=[a0max,a1max,dmax,dmax,dmax,dmax,gmax,gmax,gmax,gmax];
speedmin=[va0min,va1min,vdmin,vdmin,vdmin,vdmin,vgmin,vgmin,vgmin,vgmin];
speedmax=[va0max,va1max,vdmax,vdmax,vdmax,vdmax,vgmax,vgmax,vgmax,vgmax];
for t=1:popsize     %%%每个粒子逐个进化
 for dimIndex =1:dimsize   %%%个参数进行进化
 w=wcmax-(wcmax-wcmin)*3*(generation/maxgeneration);
 sub1=PBEST(t,dimIndex)-pop(t,dimIndex);
 sub2=GBEST(1,dimIndex)-pop(t,dimIndex);
 tempV =w*pop(t,dimsize+dimIndex)+c1*unifrnd(0,1)*sub1 + c2*unifrnd(0, 1)*sub2;   %%速度进化
     if tempV>speedmax(dimIndex)
     pop(t,dimsize+dimIndex)=speedmax(dimIndex);
     elseif tempV<speedmin(dimIndex)
     pop(t,dimsize+dimIndex)=speedmin(dimIndex);
     else
     pop(t,dimsize+dimIndex)=tempV;
     end
 tempposition = pop(t,dimIndex) + pop(t,dimsize+dimIndex);                        %%位置进化
     if tempposition>xmax(dimIndex)
     pop(t,dimIndex) = xmax(dimIndex);
     elseif tempposition<xmin(dimIndex)
     pop(t,dimIndex)=xmin(dimIndex);
     else
     pop(t,dimIndex)=tempposition;
     end
 end
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?