智能優(yōu)化算法:人工電場優(yōu)化算法

智能優(yōu)化算法:人工電場優(yōu)化算法

@[toc]
摘要:人工電場算法(Artificial Electric Field Algorithm,AEFA)是由 Anita 和 Anupam Yadav于 2019 年提出的元啟發(fā)式優(yōu)化算法。AEFA 算法是一個杰出的非線性優(yōu)化算法,具有全局搜索能力強、優(yōu)化精度高和適應(yīng)范圍廣等特點。

1.算法原理

人工電場算法(AEFA)受庫侖定律的啟發(fā),通過模擬帶電粒子在靜電場的運動,將其演化成隨機搜索最優(yōu)解的過程。電荷在靜電力的作用下相互吸引或排斥,使電荷能在搜索空間中移動。在 AEFA 算法中,僅考慮電荷的吸引力,而忽略電荷的排斥力,因而電荷量大的帶電粒子能吸引所有其他電荷量較低的粒子向其靠近。

在搜索空間中,每一個電荷代表一個可行解,其強度由他們的電荷量來衡量,電荷的電荷量越大,表明該電荷越接近理論最優(yōu)解。如圖1所示,電荷面積的大小表示該電荷量的大小,電荷Q_1分別受到其它三個電荷的吸引力,根據(jù)運動定律,形成一個合力F和該方向的加速度。由于電荷Q_4 的電荷量最大,其吸引力也越大,電荷Q_1 合力F的方向更接近Q_1Q_4 之間的中心連線。因此,AEFA 算法通過模擬電荷間的相互作用力,當(dāng)搜索空間存在電荷量大的電荷時,其它電荷都向電荷量大的方向靠近,使算法收斂到最優(yōu)解。

圖1.庫侖力的作用。

AEFA 算法可看作是一個遵循庫侖靜電力定律和運動定律孤立的電荷系統(tǒng)。在此基礎(chǔ)上,定義了算法的物理性質(zhì)。

設(shè)d維搜索空間中,第i個電荷的位置為:
X_i=(x_i^1,x_i^2,...,x_i^d);i=1,2,...,N\tag{1}
式中, x_i^d為電荷i在第d維上的位置, N為電荷的總數(shù)。

電荷 i 在時刻 t 獲得的最佳適應(yīng)度值的位置由下式確定:
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}
所有電荷的全局最佳適應(yīng)度的位置用P_{best}=X_{best}表示。

在時刻t,電荷j在第d維上受到電荷i的庫侖力如公式所示:
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}
式中,Q_iQ_j分別為作用電荷i和被作用電荷j的電荷量, \xi表示一個極小的常量。R_{ij}為電荷i與電荷j之間的歐式距離,由下式得出:
R_{ij}(t)=||X_i^t(t),X_j(t)||_2\tag{4}
庫侖常數(shù)K(t)為當(dāng)前迭代數(shù)和系統(tǒng)迭代數(shù)的函數(shù),為了控制算法的搜索精度,呈指數(shù)遞減。時刻t的庫侖常數(shù)K(t)可由下式計算:
K(t)=K_0*exp(-\alpha \frac{iter}{maxiter}) \tag{5}
式中,K_0為初值, \alpha為常數(shù), iter是當(dāng)前迭代的次數(shù), maxiter是系統(tǒng)迭代的次數(shù)。在算法伊始,庫侖常數(shù)常被初始化為一個較高的值,以便于算法的初期探索,然后逐次迭代遞減以控制算法的搜索精度。

d維搜索空間中,作用在電荷i總的作用力等于來自其他所有電荷作用力的總和,其大小為:
F_i^d(t)=\sum_{j=1,j\ne i}^N rand_jF_{ij}^d(t)\tag{6}
式中,rand_j為[0,1]之間的隨機數(shù),F_{ij}^d為電荷j作用在電荷i上的庫侖力。在任意時刻t,電荷i位于第d維時的電場強度由下式給出:
E_i^d(t)=\frac{F_i^d(t)}{Q_j(t)}\tag{7}
根據(jù)牛頓第二運動定律,得出電荷i在時刻t的加速度:
a_i^d(t)=Q_i(t)E_i^d(t)/M_i(t)\tag{8}
在每一次迭代過程中,電荷i根據(jù)計算得到的加速度來更新電荷的速度和位置,更新方式如下式所示:
V_i^d(t+1)=rand_i*V_i^d(t) + a_i^d(t) \tag{9}

X_i^d(t+1)=X_i^d(t)+V_i^d(t+1)\tag{10}

式中,V_i^d(t),X_i^d(t)分別為電荷i在時刻t的速度和位置。

電荷的電荷量通過適應(yīng)度函數(shù)計算得出,假設(shè)初始時每個電荷的電荷量相等。
Q_i(t)=Q_j(t);i,j=1,2,...,N \tag{11}
采取以下式子更新電荷i的電荷量:
q_i(t)=exp(\frac{fit_{pi}(t) -worst(t)}{best(t)-worst(t)})\tag{12}

Q_i(t)=\frac{q_i(t)}{\sum_{i=1}^Nq_i(t)}\tag{13}

式中,fit_i(t)為電荷i在時刻t的適應(yīng)度值。best,worst分別為最優(yōu)適應(yīng)度值和最差適應(yīng)度值。

人工電場算法實現(xiàn)的基本步驟如下:

Step1.在搜索空間中,隨機初始電荷種群;

Step2. 隨機初始化電荷的速度和位置,并計算每個電荷的適應(yīng)度值

Step3.計算電荷的庫侖常數(shù),全局最優(yōu)值和最差值

Step4.計算電荷的庫倫力和加速度,更新例子的速度以及位置

Step5.判斷是否滿足停止條件,如果滿足則輸出最優(yōu)值,否則重復(fù)步驟2-5;

2.實驗結(jié)果

實驗結(jié)果

3.參考文獻

[1]Anita,Anupam Yadav. AEFA: Artificial electric field algorithm for global optimization[J]. Swarm and Evolutionary Computation,2019,48{5}:

[1]葉桂旗. 基于人工電場算法的城市供水泵站優(yōu)化調(diào)度研究[D].長安大學(xué),2020.

4.Matlab

上述代碼,見個人資料

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容