智能优化算法:帝国主义竞争算法-附代码

2024-06-18 07:38

本文主要是介绍智能优化算法:帝国主义竞争算法-附代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

智能优化算法:帝国主义竞争算法-附代码

文章目录

  • 智能优化算法:帝国主义竞争算法-附代码
    • 1.算法原理
      • 1.1 帝国集团的初始化
      • 1.2 帝国集团内部调整
      • 1.3 交换帝国和殖民地的位置
      • 1.4 帝国集团竞争
    • 2.算法结果
    • 3.参考文献
    • 4.Matlab代码

摘要:帝国主义竞争算法最初是由 Atashpaz-Gargari and Lucas 于 2007 年在对基于人口数量最优化算法的著作中提出。在算法中, 每一个个体都被定义为一个国家,同时,所有的国家被分类为两类,即帝国主义国家和殖民地。帝国主义国家为最初时人口数量最有优势的国家,而剩下的国家即为殖民地。每个国家的力量被用来指明它的
健康程度。在该算法的反复使用过程中,帝国之间相互竞争以获得尽可能多的殖民地为目的。更有力量的帝国有更高的可能性去占领更多的殖民地,而力量薄弱的帝国将逐渐失去他们的殖民地。当所有的殖民地都被一个帝国占有时,该算法即为结束。在连续函数优化方面帝国主义竞争算法在效率和质量方面超过遗传算法和粒子群优化算法。

1.算法原理

1.1 帝国集团的初始化

在一个 N V A R N_{VAR} NVAR 维的最优化问题中,一个国家即为一个 1 ∗ N V A R 1*N_{VAR} 1NVAR的矩阵。该矩阵定义如下:
c o u n t r y = [ p 1 , p 2 , . . . , p N v a r ] country = [p_1,p_2,...,p_{N_{var}}] country=[p1,p2,...,pNvar]
此处, P i P_i Pi为被优化的变量。这些在国家属性中的变量为浮点数。国家中的每个变量可以被理解为这个国家的社会政治属性。在算法中几时要求我们寻找到最小的成本值。每个国家的成本由变量所组成的函数 f f f决定:
c o s t = f ( c o u n t r y ) = f ( p 1 , p 2 , . . . , p N v a r ) cost = f(country)=f(p_1,p_2,...,p_{N_{var}}) cost=f(country)=f(p1,p2,...,pNvar)
为了开始该最优化算法,必须初始化国家数量 N c o u n t r y N_{country} Ncountry . 我们选择 N i m p N _{imp} Nimp个最优力量的国家来形成帝国集团。剩下的 N c o l N_{col} Ncol个最初国家作为这些帝国集团中的殖民地。
为了形成最初的帝国集团,殖民地依据各帝国的力量情况决定。即:一个帝国集团最初拥有的殖民地数量应直接与其力量所占比例相关。为了能按比例分配殖民地,每个帝国的成本被定义为:
C n = c n − m a x { c i } C_n=c_n-max\{c_i\} Cn=cnmax{ci}
在这里, C n C_n Cn 为第 n n n个帝国的成本。计算了所有帝国的成本后,帝国的相对力量定义为:
p n = ∣ c n ∑ i = 1 N i m p c i ∣ p_n=|\frac{c_n}{\sum_{i=1}^{Nimp}}c_i| pn=i=1Nimpcnci
最初的殖民地的分配依赖于其所属的帝国集团的力量。从而最初的殖民地分配为:
N . C . n = r o u n d { p n . N c o l } N.C._n=round\{p_n.N_{col}\} N.C.n=round{pn.Ncol}
在这里, N . C . n N.C._n N.C.n 为第 n n n 个帝国所拥有的殖民地数量。如图 1 所示的初始化帝国集团,越大的帝国集团拥有更多的殖民地数量,同时,弱小的集团拥有较少的殖民地。在该图中,帝国 1 组成最有力量的帝国集团,于是它拥有最多的殖民地数量。

在这里插入图片描述

图1.初始化帝国集团:帝国拥有的殖民地越多,它所代表的五角星越大

1.2 帝国集团内部调整

为了实现吸收壮大的目的,帝国试图去吸收它们的殖民地并使其成为帝国的一部分。更准确的说,殖民地沿着坐标轴向着帝国移动。移动过程如图 2 所示。考虑一个二维最优化问题,殖民地在由文化和语言组成的坐标轴中被帝国吸收。殖民地将会不断地向帝国移动,最终将使殖民地完全被帝国吸收。
在这里插入图片描述

图2.殖民地向其相关帝国的移动

在图 2 中, x x x 为一个服从均匀分布的随机数 x ∼ U ( 0 , β × d ) x\sim U(0, β×d) xU(0,β×d), 在这里 $β 为 比 1 大 的 数 , 同 时 为比 1 大的数,同时 1d 为 殖 民 地 与 帝 国 的 距 离 。 为殖民地与帝国的距离。 b>1$将使殖民地从两边都离帝国更近。帝国对殖民地的吸收并不直接导致殖民地向帝国的移动。即是说,殖民地并不一定依照向量所示方向向帝国移动。为了更好模型化这个事实,引入一个随机的角度作为移动的方向。

革命是指在力量和组织结构的基础方面在相对短时间内发生变化。在 ICA 的术语中,革命使一个国家的社会政治特征突然产生变化。即是说,与帝国的吸收不同,殖民地是随机的在社会政治坐标轴中突然发生位置上的改变。图 2 和图 3 是在文化语言坐标轴中的革命过程。这种革命增加了该算法的搜索过程同时组织了国家形成早期的局部收敛。算法中的革命率显示的是每个殖民地随机改变它们位置的比例。一个较高的革命率会降低算法的搜索效果并降低收敛率。在我们的应用中,我们将革命率设定为 0.3. 即是指帝国集团中有 30% 的殖民地会随机改变它们的位置。

在这里插入图片描述

图3 一个国家社会政治特征的突然改变

1.3 交换帝国和殖民地的位置

当殖民地向帝国移动的过程中,殖民地可能会到达一个成本比帝国要低的点。在这种情况下,帝国和殖民地即交换它们的位置。而后,算法将由在新位置的帝国吸收新位置的殖民地过程继续下去。如图 4 所示为帝国和殖民地交换位置的过程。在改图中,最好的殖民地由深色表示,该殖民地比其帝国的成本要小。如图 5 所示为殖民地和帝国交换位置后的状态。
在这里插入图片描述

图4 交换殖民地和帝国的位置

在这里插入图片描述

图5 交换位置后的帝国和殖民地的状态

在殖民地和帝国向着目标最小值移动的过程中,一些帝国可能会移动到相似的位置,如果两帝国之间的位置要小于初始位置,它们将会合并为一个新的帝国集团。原帝国集团的殖民地将会成为新帝国集团的殖民地,同时新帝国的位置将由原帝国中二者之一的位置所决定。图 6 和图 7显示的合并过程。
在这里插入图片描述

图6 合并前的帝国集团

在这里插入图片描述

图7 两帝国合并后的状态

1.4 帝国集团竞争

一个帝国集团的总力量主要由它的帝国力量所决定。可是殖民地的力量也对帝国集团的力量有影响。一个帝国集团的总成本由下式所决定:
T . C . = C o s t ( i m p r i a l i s t n ) + ξ m e a n { C o s t ( c o l o n i e s o f e m p i r e n ) } T.C.=Cost(imprialist_n)+\xi mean\{Cost(coloniesofempire_n)\} T.C.=Cost(imprialistn)+ξmean{Cost(coloniesofempiren)}
此处, T . C . T.C. T.C. 为第 n n n 个帝国集团的总成本。 ξ ξ ξ 为一个较小的正数。 ξ ξ ξ 越大会使殖民地对帝国集团的影响越大。在大部分的情况下 ξ ξ ξ 取 0.1 被认为是最好的。

每个帝国集团都试图占领并控制其他帝国集团的殖民地。帝国竞争过程中,强国将更强,弱国将更弱。帝国竞争一般先选出最弱帝国集团,并使其他帝国集团竞争去占领该集团。图 8显示帝国竞争。在这个过程中,基于各自的力量,每个集团都有占领最弱集团的可能性。从另一个方面来说,最弱国不一定确定被最强国家占领,但是越强的集团占领弱集团的可能性越大。

在这里插入图片描述

图8 帝国竞争:帝国越有力量,越有可能占领最弱帝国集团的殖民地

为了开始这个竞争过程,首先最弱的帝国集团的一个殖民地将被选出来,并确定每个国家占领的可能性。占领可能性 P p P_p Pp 依据帝国集团的总力量所决定:
N . T . C . n = T . C . n − m a x { T . C . i } N.T.C.n = T.C.n - max\{T.C.i\} N.T.C.n=T.C.nmax{T.C.i}
此处, T . C . n T.C.n T.C.n N . C . n N.C.n N.C.n 为第 n n n 个帝国集团的总成本和相对成本。依据相对成本,每个帝国的占领可能性由下式决定:
P p n = ∣ N . T . C . n ∑ i = 1 N i m p N . T . C . i ∣ P_{pn}=|\frac{N.T.C.n}{\sum_{i=1}^{Nimp}}N.T.C.i| Ppn=i=1NimpN.T.C.nN.T.C.i
为了将在帝国集团中将上述的殖民地分类,我们引入如下向量 P P P
P = [ P p 1 , P p 2 , P p 3 , . . . , P p N i m p ] P=[P_{p1},P_{p2},P_{p3},...,P_{pNimp}] P=[Pp1,Pp2,Pp3,...,PpNimp]
向量 R R R 是与向量 P P P 具有相同规格的向量,其元素服从均匀分布:
R = [ r 1 , r 2 , . . . , r N i m p ] , r 1 , r 2 , . . . , r N i m p ∼ U ( 0 , 1 ) R=[r_1,r_2,...,r_{Nimp}],r1,r2,...,r_{Nimp}\sim U(0,1) R=[r1,r2,...,rNimp],r1,r2,...,rNimpU(0,1)
向量 D D D 由向量 P P P 减去向量 R R R 所得:
D = P − R = [ p p 1 − r 1 , . . . , p p N i m p − r N i m p ] D = P-R = [p_{p1}-r1,...,p_{p_{Nimp}}-r_{Nimp}] D=PR=[pp1r1,...,ppNimprNimp]
向量 D D D 中元素值最大的对应帝国集团即会占领上述的殖民地。这样选择帝国集团的过程与遗传算法中选择母类的轮盘赌过程相似。但是这里的选择方法比相关的轮盘赌过程要快。因为这个过程并不需要
计算累积分布函数,并且选择过程仅仅基于可能性的值。因此,帝国集团的选择过程可以完全替换遗传算法中的轮盘赌,并增加执行速度。上述步骤将会持续下去直至实现国家收敛并且达到成本最小的目标。不同标准可用来结束该算法。一种思想是设定最大迭代次数。或者当仅剩一个帝国集团时即结束该算法。

帝国主义算法流程描述如下:
1)初始化帝国主义竞争算法的参数: N p o p N_{pop} Npop , N i m p N_{imp} Nimp
2)随机生成 N p o p N_{pop} Npop 作为国家的人口数量。选择 N i m p N_{imp} Nimp 最好的国家作为帝国并根据他们的能力规定他们的殖民地数量;

3)如果终止条件未得到满足,则重复下列步骤;
4)内部位置交换;
5)帝国主义竞争;
6)淘汰弱小的帝国;
7)保留最终剩余的帝国,其适应度取值作为
最优解。

流程图如图所示:
在这里插入图片描述

2.算法结果

在这里插入图片描述

3.参考文献

[1] Esmaeil Atashpaz-Gargari,Caro Lucas.ImperialistCompetitive Algorithm: An Algorithm for OptimizationInspired by Imperialistic Competition 1-4244-1340-0/07_c 2007 IEEE.

[2]陈志楚,李聪,张超勇.基于帝国主义竞争算法的切削参数优化[J].制造业自动化,2012,34(24):10-15.

4.Matlab代码

个人资料介绍

这篇关于智能优化算法:帝国主义竞争算法-附代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1071679

相关文章

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

Deepseek使用指南与提问优化策略方式

《Deepseek使用指南与提问优化策略方式》本文介绍了DeepSeek语义搜索引擎的核心功能、集成方法及优化提问策略,通过自然语言处理和机器学习提供精准搜索结果,适用于智能客服、知识库检索等领域... 目录序言1. DeepSeek 概述2. DeepSeek 的集成与使用2.1 DeepSeek API

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

Java实现状态模式的示例代码

《Java实现状态模式的示例代码》状态模式是一种行为型设计模式,允许对象根据其内部状态改变行为,本文主要介绍了Java实现状态模式的示例代码,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来... 目录一、简介1、定义2、状态模式的结构二、Java实现案例1、电灯开关状态案例2、番茄工作法状态案例

Tomcat高效部署与性能优化方式

《Tomcat高效部署与性能优化方式》本文介绍了如何高效部署Tomcat并进行性能优化,以确保Web应用的稳定运行和高效响应,高效部署包括环境准备、安装Tomcat、配置Tomcat、部署应用和启动T... 目录Tomcat高效部署与性能优化一、引言二、Tomcat高效部署三、Tomcat性能优化总结Tom