智能优化算法:人工电场优化算法
@[toc]
摘要:人工电场算法(Artificial Electric Field Algorithm,AEFA)是由 Anita 和 Anupam Yadav于 2019 年提出的元启发式优化算法。AEFA 算法是一个杰出的非线性优化算法,具有全局搜索能力强、优化精度高和适应范围广等特点。
1.算法原理
人工电场算法(AEFA)受库仑定律的启发,通过模拟带电粒子在静电场的运动,将其演化成随机搜索最优解的过程。电荷在静电力的作用下相互吸引或排斥,使电荷能在搜索空间中移动。在 AEFA 算法中,仅考虑电荷的吸引力,而忽略电荷的排斥力,因而电荷量大的带电粒子能吸引所有其他电荷量较低的粒子向其靠近。
在搜索空间中,每一个电荷代表一个可行解,其强度由他们的电荷量来衡量,电荷的电荷量越大,表明该电荷越接近理论最优解。如图1所示,电荷面积的大小表示该电荷量的大小,电荷分别受到其它三个电荷的吸引力,根据运动定律,形成一个合力和该方向的加速度。由于电荷 的电荷量最大,其吸引力也越大,电荷 合力的方向更接近 与 之间的中心连线。因此,AEFA 算法通过模拟电荷间的相互作用力,当搜索空间存在电荷量大的电荷时,其它电荷都向电荷量大的方向靠近,使算法收敛到最优解。
AEFA 算法可看作是一个遵循库仑静电力定律和运动定律孤立的电荷系统。在此基础上,定义了算法的物理性质。
设维搜索空间中,第个电荷的位置为:
式中, 为电荷在第维上的位置, 为电荷的总数。
电荷 在时刻 获得的最佳适应度值的位置由下式确定:
所有电荷的全局最佳适应度的位置用表示。
在时刻,电荷在第维上受到电荷的库仑力如公式所示:
式中,和分别为作用电荷和被作用电荷的电荷量, 表示一个极小的常量。为电荷与电荷之间的欧式距离,由下式得出:
库仑常数为当前迭代数和系统迭代数的函数,为了控制算法的搜索精度,呈指数递减。时刻的库仑常数可由下式计算:
式中,为初值, 为常数, 是当前迭代的次数, 是系统迭代的次数。在算法伊始,库仑常数常被初始化为一个较高的值,以便于算法的初期探索,然后逐次迭代递减以控制算法的搜索精度。
在维搜索空间中,作用在电荷总的作用力等于来自其他所有电荷作用力的总和,其大小为:
式中,为[0,1]之间的随机数,为电荷作用在电荷上的库仑力。在任意时刻,电荷位于第维时的电场强度由下式给出:
根据牛顿第二运动定律,得出电荷在时刻的加速度:
在每一次迭代过程中,电荷根据计算得到的加速度来更新电荷的速度和位置,更新方式如下式所示:
式中,分别为电荷在时刻的速度和位置。
电荷的电荷量通过适应度函数计算得出,假设初始时每个电荷的电荷量相等。
采取以下式子更新电荷的电荷量:
式中,为电荷在时刻的适应度值。分别为最优适应度值和最差适应度值。
人工电场算法实现的基本步骤如下:
Step1.在搜索空间中,随机初始电荷种群;
Step2. 随机初始化电荷的速度和位置,并计算每个电荷的适应度值
Step3.计算电荷的库仑常数,全局最优值和最差值
Step4.计算电荷的库伦力和加速度,更新例子的速度以及位置
Step5.判断是否满足停止条件,如果满足则输出最优值,否则重复步骤2-5;
2.实验结果
3.参考文献
[1]Anita,Anupam Yadav. AEFA: Artificial electric field algorithm for global optimization[J]. Swarm and Evolutionary Computation,2019,48{5}:
[1]叶桂旗. 基于人工电场算法的城市供水泵站优化调度研究[D].长安大学,2020.
4.Matlab
上述代码,见个人资料