帝国竞争算法(ICA)(Matlab代码实现)

帝国竞争算法(ICA)(Matlab代码实现)_第1张图片

目录

1 帝国竞争算法(ICA)

2 运行结果

3 Matlab代码及文章讲解 

4 参考文献


1 帝国竞争算法(ICA)

帝国竞争算法(ICA)是2007年]提出,具有收敛速度快和全局搜索能力强的特点。ICA已被应用于求解旅行商问题( traveling salesman problem , TSP) [ 12,13]。张鑫龙等人14提出一种新型ICA求解TSP ,帝国同化采用替换重建方式,革命过程结合自适应算子,得到了较好的优化效果。裴小兵等人[
15]为了降低帝国同化的复杂度,设计概率矩阵挖掘可行解中的优秀组合区块,能够对一定规模的TSP进行高效求解。

帝国竞争算法是基于人类社会政治进化现象提出的智能优化算法,算法中的每个国家均表示为一个可能的解空间,在模拟社会政治进化的过程中逐渐优化国家的解空间,找到最优解。 算法主要包括帝国初始化、帝国同化、帝国革命、殖民地竞争四个步骤 :

a) 帝国初始化 通过随机生成的方式产生多个国家 根据国家的强弱分为殖民国家与殖民地, 各殖民国家及其所属殖民地构成一个帝国。
b) 帝国同化 将每个帝国殖民国家的解信息传递给其殖民地, 殖民地逐步靠近殖民国家 帝国整体解质量得到逐步优化
c) 帝国革命 该阶段模拟历史进程中的革命行为 一定几率下殖民地会主动优化, 甚至超越其所属殖民国家成为帝国的殖民国家。
d) 殖民地竞争 该阶段是殖民地再分配的过程 帝国之间通过竞争机制争夺殖民地。 理想情况下只会存在一个帝国,即只有一个殖民国家,其他国家均沦为殖民地,此时算法停止,殖民国家即代表算法优化的最优解;若仍存在多个国家则转到帝国同化阶段,依次循环更新。

2 运行结果

帝国竞争算法(ICA)(Matlab代码实现)_第2张图片

3 Matlab代码及文章讲解 

本文仅展现部分代码,全部代码及文章见:

帝国竞争算法(ICA)(Matlab代码实现)



function emp = DoRevolution(emp)

    global ProblemSettings;
    CostFunction = ProblemSettings.CostFunction;
    nVar = ProblemSettings.nVar;
    VarSize = ProblemSettings.VarSize;
    VarMin = ProblemSettings.VarMin;
    VarMax = ProblemSettings.VarMax;
    
    global ICASettings;
    pRevolution = ICASettings.pRevolution;
    mu = ICASettings.mu;
    
    nmu = ceil(mu*nVar);
    
    sigma = 0.1*(VarMax-VarMin);
    
    nEmp = numel(emp);
    for k = 1:nEmp
        
        NewPos = emp(k).Imp.Position + sigma*randn(VarSize);
        
        jj = randsample(nVar, nmu)';
        NewImp = emp(k).Imp;
        NewImp.Position(jj) = NewPos(jj);
        NewImp.Cost = CostFunction(NewImp.Position);
        if NewImp.Cost

4 参考文献

[1]蔡延光,王世豪,戚远航,王福杰,林卓胜.帝国竞争算法求解CVRP[J].计算机应用研究,2021,38(03):782-786.DOI:10.19734/j.issn.1001-3695.2020.01.0006.

帝国竞争算法(ICA)(Matlab代码实现)_第3张图片

你可能感兴趣的:(#,智能算法与应用(Matlab),算法,matlab)