📄 iteratesapso.m
字号:
%粒子的更新
function [pop,V,gbest,zbest,fitnessgbest,fitnesszbest,b] = iterateSAPSO(pop,V,gbest,zbest,fitnessgbest,fitnesszbest,w,c1,c2,temperature,n,m,b);
Vmax = 6;
Vmin = -6;
for j = 1:n
V(j,:) = w*V(j,:) + c1*rand*(gbest(j,:) - pop(j,:)) + c2*rand*(zbest - pop(j,:));
for k = 1:m
if V(j,k) > Vmax
V(j,k) = Vmax;
end
if V(j,k) < Vmin
V(j,k) = Vmin;
end
end
pop(j,:) = pop(j,:) + V(j,:);
for k = 1:m
if pop(j,k) > 10
pop(j,k) = 10;
end
if pop(j,k) < -10
pop(j,k) = -10;
end
end
fitnessnew = caculate(pop,n,m);
%判断是否接受
for j = 1:n
if fitnessnew(j)<=fitnessgbest(j)
gbest(j,:) = pop(j,:);
fitnessgbest(j) = fitnessnew(j);
else
kkk = exp(-(fitnessnew(j) - fitnessgbest(j))/temperature);
if kkk>rand
b = b + 1;
gbest(j,:) = pop(j,:);
fitnessgbest(j) = fitnessnew(j);
end
end
if fitnessnew(j)<=fitnesszbest
zbest = pop(j,:);
fitnesszbest = fitnessnew(j);
else
kkk = exp(-(fitnessnew(j) - fitnesszbest)/temperature);
if kkk>rand
b = b + 1;
zbest = pop(j,:);
fitnesszbest = fitnessnew(j);
end
end
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -