人工电场算法(AEFA)(含MATLAB代码)

先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年提出的新型智能优化算法,并附MATLAB代码。

 

人工电场算法(Artificial Electric Field Algorithm, AEFA)是2019年提出的一种元启发式优化算法。作者创新地将电荷的概念扩展到种群的适应度值。AEFA是一种优秀的非线性优化算法,其原始参考文献如下:

“Yadav A. AEFA: Artificial electric field algorithm for global optimization[J]. Swarm and Evolutionary Computation, 2019, 48: 93-108.”

01
灵感来源

AEFA受库仑定理的启发,通过模拟带电粒子在静电场的运动,将其演化成随机搜索最优解的过程。电荷在静电力的作用下相互吸引或排斥,使电荷能在搜索空间中移动。在AEFA中,作者仅考虑了电荷的吸引力,而忽略电荷的排斥力,因而电荷量大的带电粒子能吸引所有其他电荷量较低的粒子向其靠近。

在搜索空间中,每一个电荷代表一个可行解,其优劣由它们的电荷量来衡量。电荷的电荷量越大,表明该电荷(可行解)越接近理论最优解。如图1所示,电荷面积的大小表示其电荷量的大小。电荷Q1分别受到其他三个电荷的吸引力。根据定律,形成一个合力F和该方向的加速度。由于电荷Q4的电荷量最大,其吸引力也越大,因此电荷Q1合力F的方向更接近Q1与Q4之间的中心联系。

人工电场算法(AEFA)(含MATLAB代码)_第1张图片

图1 作用在带电粒子上的合力

因此,AEFA通过模拟电荷间的相互作用力,当搜索空间存在电荷量大的电荷时,其他电荷都向电荷量大的方向靠近,使算法收敛到最优解。

02
算法设计

与往期推送一样,目前我还不会在公众号里编辑数学公式。因此,这部分内容在Word文档里先写好,然后做成图片,最后导入。

人工电场算法(AEFA)(含MATLAB代码)_第2张图片

人工电场算法(AEFA)(含MATLAB代码)_第3张图片


 

03
计算流程

人工电场算法实现的基本步骤如下:

Step1:在搜索空间中,随机初始电荷种群;

Step2:随机初始化电荷的速度和位置,并计算每个电荷的适应度值;

Step3:计算电荷的库仑常数,全局最优值和最差值;

Step4:计算电荷的库伦力和加速度,更新电荷的速度和位置;

Step5:判断是否满足停止条件,如果满足则输出最优值,否则重复步骤2-5。

04
实验仿真

对AEFA的性能进行简单的测试。将AEFA用于函数寻优,其MATLAB程序严格按照原始参考文献进行编写。此外,种群规模为50,最大迭代次数为1000,基准函数采用的是CEC2005测试集。

这里以CEC2005测试集中的单峰函数Sphere (f1)和多峰函数Ackley (f10)为例,展示AEFA在30维环境下的收敛效果,如图2所示,这里就不再做进一步的分析了。

人工电场算法(AEFA)(含MATLAB代码)_第4张图片

(a) f1

人工电场算法(AEFA)(含MATLAB代码)_第5张图片

(b) f10

图2 AEFA的收敛曲线

05
MATLAB代码

AEFA的MATLAB代码可通过复制下方链接进入获得。代码严格按照原始参考文献编写,附有详细注释。

(关注公众号:启发式算法讨论)

关于其他智能优化算法的MATLAB代码,可访问我的个人主页查看:

 (关注公众号:启发式算法讨论)

你可能感兴趣的:(matlab,开发语言,算法,人工智能,启发式算法)