0
点赞
收藏
分享

微信扫一扫

帝国竞争算法(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代码实现)_参考文献_02

3 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<emp(k).Imp.Cost
emp(k).Imp = NewImp;
end

for i = 1:emp(k).nCol
if rand <= pRevolution

NewPos = emp(k).Col(i).Position + sigma*randn(VarSize);

jj = randsample(nVar, nmu)';
emp(k).Col(i).Position(jj) = NewPos(jj);

emp(k).Col(i).Position = max(emp(k).Col(i).Position, VarMin);
emp(k).Col(i).Position = min(emp(k).Col(i).Position, VarMax);

emp(k).Col(i).Cost = CostFunction(emp(k).Col(i).Position);

end
end
end

end

4 参考文献

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

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

举报

相关推荐

0 条评论