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

#|帝国竞争算法(ICA)(Matlab代码实现)
文章图片

目录
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代码实现)
文章图片

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:nEmpNewPos = 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代码实现)】#|帝国竞争算法(ICA)(Matlab代码实现)
文章图片

    推荐阅读