?? iteratesapso.m
字號(hào):
%粒子的更新
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
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -