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

📄 getleader.m

📁 硕士论文三个点中的一个
💻 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 + -