智能优化算法:人工电场优化算法-附代码
智能优化算法:人工电场优化算法
文章目录
- 智能优化算法:人工电场优化算法
- 1.算法原理
- 2.实验结果
- 3.参考文献
- 4.Matlab
摘要:人工电场算法(Artificial Electric Field Algorithm,AEFA)是由 Anita 和 Anupam Yadav于 2019 年提出的元启发式优化算法。AEFA 算法是一个杰出的非线性优化算法,具有全局搜索能力强、优化精度高和适应范围广等特点。
1.算法原理
人工电场算法(AEFA)受库仑定律的启发,通过模拟带电粒子在静电场的运动,将其演化成随机搜索最优解的过程。电荷在静电力的作用下相互吸引或排斥,使电荷能在搜索空间中移动。在 AEFA 算法中,仅考虑电荷的吸引力,而忽略电荷的排斥力,因而电荷量大的带电粒子能吸引所有其他电荷量较低的粒子向其靠近。
在搜索空间中,每一个电荷代表一个可行解,其强度由他们的电荷量来衡量,电荷的电荷量越大,表明该电荷越接近理论最优解。如图1所示,电荷面积的大小表示该电荷量的大小,电荷Q1Q_1Q1分别受到其它三个电荷的吸引力,根据运动定律,形成一个合力FFF和该方向的加速度。由于电荷Q4Q_4Q4 的电荷量最大,其吸引力也越大,电荷Q1Q_1Q1 合力FFF的方向更接近Q1Q_1Q1 与Q4Q_4Q4 之间的中心连线。因此,AEFA 算法通过模拟电荷间的相互作用力,当搜索空间存在电荷量大的电荷时,其它电荷都向电荷量大的方向靠近,使算法收敛到最优解。
图1.库仑力的作用。
AEFA 算法可看作是一个遵循库仑静电力定律和运动定律孤立的电荷系统。在此基础上,定义了算法的物理性质。
设ddd维搜索空间中,第iii个电荷的位置为:
Xi=(xi1,xi2,...,xid);i=1,2,...,N(1)X_i=(x_i^1,x_i^2,...,x_i^d);i=1,2,...,N\tag{1} Xi=(xi1,xi2,...,xid);i=1,2,...,N(1)
式中, xidx_i^dxid为电荷iii在第ddd维上的位置, NNN为电荷的总数。
电荷 iii 在时刻 ttt 获得的最佳适应度值的位置由下式确定:
pid(t+1)={pid(t),iff(Pi(t))<f(Xi(t+1))xid(t+1),else(2)p_i^d(t+1)=\begin{cases}p_i^d(t),if\,f(P_i(t))<f(X_i(t+1))\\x_i^d(t+1),else \end{cases}\tag{2} pid(t+1)={pid(t),iff(Pi(t))<f(Xi(t+1))xid(t+1),else(2)
所有电荷的全局最佳适应度的位置用Pbest=XbestP_{best}=X_{best}Pbest=Xbest表示。
在时刻ttt,电荷jjj在第ddd维上受到电荷iii的库仑力如公式所示:
Fijd=K(t)Qi(t)Qj(t)(pjd(t)−Xid(t))Rij(t)+ξ(3)F_{ij}^d = K(t)\frac{Q_i(t)Q_j(t)(p_j^d(t)-X_i^d(t))}{R_{ij}(t)+\xi} \tag{3} Fijd=K(t)Rij(t)+ξQi(t)Qj(t)(pjd(t)−Xid(t))(3)
式中,QiQ_iQi和QjQ_jQj分别为作用电荷iii和被作用电荷jjj的电荷量, ξ\xiξ表示一个极小的常量。RijR_{ij}Rij为电荷iii与电荷jjj之间的欧式距离,由下式得出:
Rij(t)=∣∣Xit(t),Xj(t)∣∣2(4)R_{ij}(t)=||X_i^t(t),X_j(t)||_2\tag{4} Rij(t)=∣∣Xit(t),Xj(t)∣∣2(4)
库仑常数K(t)K(t)K(t)为当前迭代数和系统迭代数的函数,为了控制算法的搜索精度,呈指数递减。时刻ttt的库仑常数K(t)K(t)K(t)可由下式计算:
K(t)=K0∗exp(−αitermaxiter)(5)K(t)=K_0*exp(-\alpha \frac{iter}{maxiter}) \tag{5} K(t)=K0∗exp(−αmaxiteriter)(5)
式中,K0K_0K0为初值, α\alphaα为常数, iteriteriter是当前迭代的次数, maxitermaxitermaxiter是系统迭代的次数。在算法伊始,库仑常数常被初始化为一个较高的值,以便于算法的初期探索,然后逐次迭代递减以控制算法的搜索精度。
在ddd维搜索空间中,作用在电荷iii总的作用力等于来自其他所有电荷作用力的总和,其大小为:
Fid(t)=∑j=1,j≠iNrandjFijd(t)(6)F_i^d(t)=\sum_{j=1,j\ne i}^N rand_jF_{ij}^d(t)\tag{6} Fid(t)=j=1,j=i∑NrandjFijd(t)(6)
式中,randjrand_jrandj为[0,1]之间的随机数,FijdF_{ij}^dFijd为电荷jjj作用在电荷iii上的库仑力。在任意时刻ttt,电荷iii位于第ddd维时的电场强度由下式给出:
Eid(t)=Fid(t)Qj(t)(7)E_i^d(t)=\frac{F_i^d(t)}{Q_j(t)}\tag{7} Eid(t)=Qj(t)Fid(t)(7)
根据牛顿第二运动定律,得出电荷iii在时刻ttt的加速度:
aid(t)=Qi(t)Eid(t)/Mi(t)(8)a_i^d(t)=Q_i(t)E_i^d(t)/M_i(t)\tag{8} aid(t)=Qi(t)Eid(t)/Mi(t)(8)
在每一次迭代过程中,电荷iii根据计算得到的加速度来更新电荷的速度和位置,更新方式如下式所示:
Vid(t+1)=randi∗Vid(t)+aid(t)(9)V_i^d(t+1)=rand_i*V_i^d(t) + a_i^d(t) \tag{9} Vid(t+1)=randi∗Vid(t)+aid(t)(9)
Xid(t+1)=Xid(t)+Vid(t+1)(10)X_i^d(t+1)=X_i^d(t)+V_i^d(t+1)\tag{10} Xid(t+1)=Xid(t)+Vid(t+1)(10)
式中,Vid(t),Xid(t)V_i^d(t),X_i^d(t)Vid(t),Xid(t)分别为电荷iii在时刻ttt的速度和位置。
电荷的电荷量通过适应度函数计算得出,假设初始时每个电荷的电荷量相等。
Qi(t)=Qj(t);i,j=1,2,...,N(11)Q_i(t)=Q_j(t);i,j=1,2,...,N \tag{11} Qi(t)=Qj(t);i,j=1,2,...,N(11)
采取以下式子更新电荷iii的电荷量:
qi(t)=exp(fitpi(t)−worst(t)best(t)−worst(t))(12)q_i(t)=exp(\frac{fit_{pi}(t) -worst(t)}{best(t)-worst(t)})\tag{12} qi(t)=exp(best(t)−worst(t)fitpi(t)−worst(t))(12)
Qi(t)=qi(t)∑i=1Nqi(t)(13)Q_i(t)=\frac{q_i(t)}{\sum_{i=1}^Nq_i(t)}\tag{13} Qi(t)=∑i=1Nqi(t)qi(t)(13)
式中,fiti(t)fit_i(t)fiti(t)为电荷iii在时刻ttt的适应度值。best,worstbest,worstbest,worst分别为最优适应度值和最差适应度值。
人工电场算法实现的基本步骤如下:
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
个人资料介绍
智能优化算法:人工电场优化算法-附代码相关推荐
- 基于粒子群算法优化的Elman神经网络数据预测-附代码
基于粒子群算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于粒子群算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电 ...
- 基于布谷鸟算法优化的Elman神经网络数据预测-附代码
基于布谷鸟算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于布谷鸟算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电 ...
- 基于鲸鱼算法优化的Elman神经网络数据预测-附代码
基于鲸鱼算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于鲸鱼算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...
- 基于海鸥算法优化的Elman神经网络数据预测-附代码
基于海鸥算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于海鸥算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...
- 基于遗传算法优化的Elman神经网络数据预测-附代码
基于遗传算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于遗传算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...
- 基于蜣螂优化的Elman神经网络数据预测-附代码
基于蜣螂算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于蜣螂算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...
- python 随机森林调参_Python机器学习实践:随机森林算法训练及调参-附代码
原标题:Python机器学习实践:随机森林算法训练及调参-附代码 文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 来源 | 博客园 作者 | 战争热诚 ...
- 【AI超级美发师】深度学习算法打造染发特效(附代码)
[新智元导读]如今,在类似天天P图.美图秀秀等手机APP中,给指定照片或视频中的人物更换头发颜色已经是再正常不过的事情了.那么本文便介绍了该功能背后如AI头发分割模块.头发换色.颜色增强与修正模块等技 ...
- 电场 大学_人工电场优化算法
电场 大学 Artificial Electric Field Algorithm in short 'AEFA' is an artificially intelligent optimizatio ...
- 基于人工蜂群算法改进的DELM预测-附代码
人工蜂群算法改进的深度极限学习机DELM的回归预测 文章目录 人工蜂群算法改进的深度极限学习机DELM的回归预测 1.ELM原理 2.深度极限学习机(DELM)原理 3.人工蜂群算法 4.人工蜂群算法 ...
最新文章
- 人工智能的“天罗地网”
- 新的一年,努力努力!
- 【NLP】ALBERT:更轻更快的NLP预训练模型
- 《码出高效:Java 开发手册》正式发布,83行代码计划启动
- 黑客教父龚蔚演讲:钓鱼WiFi 也能照用不误
- 规则引擎:大厂营销系统资格设计全解
- 收获,不止SQL优化——抓住SQL的本质--第六章
- Maven学习总结(3)——使用Maven构建项目
- 现在自驾旅游吃住有没有问题?
- 遇到bug我会怎么做
- 子进程 已安装 pre-removal 脚本 返回了错误号 1或2 解决办法:
- 如何在JMP中快速实现报表的个性化与可视化?
- 计算机毕业设计Python+uniapp鲸落图书商城小程序LW(小程序+源码+LW)
- 告诉我常用的L波段雷达有哪些
- 最值得一看的几条简单的谷歌 Google 搜索技巧,瞬间提升你的网络搜索能力!
- 微信小程序独家秘笈之抽奖大转盘
- JavaScript实现页面倒计时效果
- 鸿蒙系统平板界面,预装鸿蒙系统,华为MatePad Pro 2界面曝光
- 三菱fx2n64mr说明书_FX2N-64MR-DS手册三菱可编程控制器FX2N-64MR-DS使用说明书 - 广州凌控...
- 其实,成功离我们并不远!
热门文章
- DbUtils组件的使用小指南
- java 字符串和整型的相互转换
- ora-30926:无法在源表中获得一组稳定的行
- excel如何删除空白行_QA|表单数据如何导入、导出?
- java序列化,看这篇就够了
- linux用户一个用户只能一个用户组,为什么linux用户可以属于多个用户组,文件只能属于一个用户组?...
- qpython 使用教程_python中spy++的使用超详细教程
- 服务器配置文件设计,IM配置服务器概要的设计文件.doc
- Python(字符编码)
- 算法笔记_面试题_数组/链表/跳表/各种数据结构复杂度对比