智能优化算法:引力搜索算法-附代码
文章目录
智能优化算法:引力搜索算法-附代码1.算法原理2.算法结果3.参考文献4.Matlab代码摘要:万 有 引 力 搜 索 算 法 (gravitational searchalgorithm,GSA) 由伊朗的 Esmat Rashedi 教授等人提出,该算法是基于牛顿万有引力定律的一种元启发式智能优化算法,能够用于解决优化问题。
1.算法原理
引力搜索算法利用物体间的万有引力定律搜索最优解,全局优化能力突出。设 nnn 维空间引力系统中有 NNN个粒子,定义第 iii 个粒子位置为 Xi=xi1,...,xid,...,xin,(i=1,2,...,N)X_i={x_i^1,...,x_i^d,...,x_i^n},(i=1,2,...,N)Xi=xi1,...,xid,...,xin,(i=1,2,...,N)。其中:xidx^d_ixid为第iii 个粒子在第 ddd 维中位置。GSA 算法流程见图 1。
图1 算法流程图
粒子 iii 在 ttt 时刻质量 Mi(t)M_i (t)Mi(t)为:
mi(t)=fiti(t)−worst(t)best(t)−worst(t)(1)m_i(t)=\frac{fit_i(t)-worst(t)}{best(t)-worst(t)}\tag{1} mi(t)=best(t)−worst(t)fiti(t)−worst(t)(1)
Mi(t)=mi(t)∑j=1Nmj(t)(2)M_i(t)=\frac{m_i(t)}{\sum_{j=1}^Nm_j(t)}\tag{2} Mi(t)=∑j=1Nmj(t)mi(t)(2)
式中:fiti(t)fit_i(t)fiti(t)为在ttt 时刻粒子iii的适应度函数值。
如求解适应度函数极小值,则
best(t)=minfitj(t)(3)best(t) = min\,fit_j(t)\tag{3} best(t)=minfitj(t)(3)
worst(t)=maxfitj(t)(4)worst(t) = max\,fit_j(t)\tag{4} worst(t)=maxfitj(t)(4)
在第 ddd 维空间上,第 iii 个粒子受第 jjj 个粒子作用力为:
Fijd(t)=G(t)Mi(t)Mj(t)∣∣Xi(t),Xj(t)∣∣2+ε[xjd(t)−xid(t)](7)F_{ij}^d(t) = G(t)\frac{M_i(t)M_j(t)}{||X_i(t),X_j(t)||_2+\varepsilon}[x_j^d(t)-x_i^d(t)]\tag{7} Fijd(t)=G(t)∣∣Xi(t),Xj(t)∣∣2+εMi(t)Mj(t)[xjd(t)−xid(t)](7)
式中:ε\varepsilonε 为接近 0 的常量;G(t)G(t)G(t)为 ttt 时刻引力常数。
G(t)=G0e−at/T(8)G(t) = G_0e^{-at/T}\tag{8} G(t)=G0e−at/T(8)
式中:G0=100;a=20G_0 =100;a =20G0=100;a=20;TTT 为迭代次数。
在第 ddd 维空间上,第iii个粒子受其它粒子引力合力作用,用各粒子引力的随机加权和表示,即:
Fid(t)=∑j=1,j≠iNrandFijd(t)(9)F_i^d(t)=\sum_{j=1,j\neq i}^N randF_{ij}^d(t)\tag{9} Fid(t)=j=1,j=i∑NrandFijd(t)(9)
式中:randrandrand 为范围在[0,1]间任意数。
基于牛顿第二定理,在第 ddd 维空间上粒子 iii 在引力合力作用下加速度为:
aid(t)=Fid(t)/Mi(t)(10)a_i^d(t) = F_i^d(t)/M_i(t)\tag{10} aid(t)=Fid(t)/Mi(t)(10)
在GSAGSAGSA 中,粒子iii 更新在第ddd维空间位置 xid(t)x^d_i (t)xid(t)及速度 vid(t)v^d_i (t)vid(t)以实现迭代过程,速度及位置更新式为:
vid(t+1)=randvid(t)+aid(t)(11)v_i^d(t+1)=randv_i^d(t)+a_i^d(t)\tag{11} vid(t+1)=randvid(t)+aid(t)(11)
xid(t+1)=xid(t)+vid(t+1)(12)x_i^d(t+1)=x_i^d(t)+v_i^d(t+1)\tag{12} xid(t+1)=xid(t)+vid(t+1)(12)
2.算法结果
3.参考文献
[1] Esmat R,Hossein N,Saeid S.GSA:A gravitational search algorithm[J].Inform Sci,,179(13):2232-2248.
[2] 刘永前, 徐强, Infield D , et al. 基于引力搜索神经网络的风电机组传动链故障识别[J]. 振动与冲击, , 34(2):134-137.
4.Matlab代码
引力搜索算法
算法相关应用
个人资料介绍