⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 renew.m

📁 POS算法
💻 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 + -