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

📄 unitesimilarempires.m

📁 Colonial Competitive Algorithm
💻 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 + -