📄 getleader.m
字号:
function [leaderInd] = getLeader(particle, gBestFun);
% particle: 要选指导元的粒子,只包含两个函数值
% gBest: 当前的全局最优解集,只包含两个函数值
% fInd: 函数值存储的位置
% 只适用于2个目标函数
s = size(gBestFun);
gBestSize = s(1, 1); % 全局最优解的个数
funNum = s(1, 2); % 目标的个数
minInd = 1; % 最近的全局最优个体在gBest中的位置,初始为第一个
minf1dij = abs(particle(1, 1) - gBestFun(minInd, 1));
minf2dij = abs(gBestFun(1, 2) - gBestFun(minInd, 2));
minDis = (minf1dij^2 + minf2dij^2)^0.5; % 最近的距离
for (gbInd = 2 : gBestSize)
newf1dij = abs(particle(1, 1) - gBestFun(gbInd, 1));
newf2dij = abs(gBestFun(1, 2) - gBestFun(gbInd, 2));
newDis = (newf1dij^2 + newf2dij^2)^0.5; % 新的距离
if (newDis < minDis) ...
|| ( (newDis == minDis) && (newf1dij < minf1dij)) % 相同距离下取在同一垂直线上的。
minInd = gbInd;
minf1dij = newf1dij;
minf2dij = newf2dij;
end
end
leaderInd = minInd;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -