?? unitesimilarempires.m
字號:
function Empires=UniteSimilarEmpires(Empires,AlgorithmParams,ProblemParams)
TheresholdDistance = AlgorithmParams.UnitingThreshold * norm(ProblemParams.SearchSpaceSize);
NumOfEmpires = numel(Empires);
for ii = 1:NumOfEmpires-1
for jj = ii+1:NumOfEmpires
DistanceVector = Empires(ii).ImperialistPosition - Empires(jj).ImperialistPosition;
Distance = norm(DistanceVector);
if Distance<=TheresholdDistance
if Empires(ii).ImperialistCost < Empires(jj).ImperialistCost
BetterEmpireInd=ii;
WorseEmpireInd=jj;
else
BetterEmpireInd=jj;
WorseEmpireInd=ii;
end
Empires(BetterEmpireInd).ColoniesPosition = [Empires(BetterEmpireInd).ColoniesPosition
Empires(WorseEmpireInd).ImperialistPosition
Empires(WorseEmpireInd).ColoniesPosition];
Empires(BetterEmpireInd).ColoniesCost = [Empires(BetterEmpireInd).ColoniesCost
Empires(WorseEmpireInd).ImperialistCost
Empires(WorseEmpireInd).ColoniesCost];
% Update TotalCost for new United Empire
Empires(BetterEmpireInd).TotalCost = Empires(BetterEmpireInd).ImperialistCost + AlgorithmParams.Zeta * mean(Empires(BetterEmpireInd).ColoniesCost);
Empires = Empires([1:WorseEmpireInd-1 WorseEmpireInd+1:end]);
return;
end
end
end
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -