📄 renew.m
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -