update_velocity.m

来自「malab语言实现bspline曲线拟合」· M 代码 · 共 28 行

M
28
字号
function v = update_velocity(NIND,chrom,W,C1,C2,Max_velocity,Max_Nv,pbest_chrom,gbest_chrom,v,m)% 更新粒子的速度for i = 1:1:NIND    a = rand();    b = rand();    v(i,1:m-1) = W*a*v(i,1:m-1) + C1*rand*(pbest_chrom(i,2:m) - chrom(i,2:m)) + C2*b*(gbest_chrom(2:m) - chrom(i,2:m));    v(i,m) = W*a*v(i,m) + C1*rand*(pbest_chrom(i,m+1) - chrom(i,m+1)) + C2*b*(gbest_chrom(m+1) - chrom(i, m+1));%      v(i,1:m-1) = W*rand*v(i,1:m-1) + C1*rand*(pbest_chrom(i,2:m) - chrom(i,2:m)) + C2*rand*(gbest_chrom(2:m) - chrom(i,2:m));%      v(i,m) = W*rand*v(i,m) + C1*rand*(pbest_chrom(i,m+1) - chrom(i,m+1)) + 4*rand*(gbest_chrom(m+1) - chrom(i, m+1));        % 限制粒子的运动速度    for j = 1:m-1        if abs(v(i,j)) > Max_velocity            if v(i,j) > 0                v(i,j) = Max_velocity;            else                v(i,j) = -Max_velocity;            end        end    end    if v(i,m) > Max_Nv        v(i,m) = Max_Nv;    elseif v(i,m) < -Max_Nv        v(i,m) = -Max_Nv;    endend

⌨️ 快捷键说明

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