多策略黑猩猩优化算法-附代码
多策略黑猩猩優(yōu)化算法
文章目錄
- 多策略黑猩猩優(yōu)化算法
- 1.黑猩猩優(yōu)化算法
- 2. 改進黑猩猩優(yōu)化算法
- 2.1 混沌反向學習策略初始化種群
- 2.2 單純形法
- 2.3 群個體記憶機制
- 3.實驗結果
- 4.參考文獻
- 5.Matlab代碼
- 6.Python代碼
摘要:針對基本黑猩猩優(yōu)化算法存在的依賴初始種群、易陷入局部最優(yōu)和收斂精度低等問題,提出一種多策略黑猩猩優(yōu)化算法(Chaotic Elite Opposition-Based Simple Method Improved COA,EOSMICOA)。在EOSMICOA算法中,利用混沌精英反向學習策略對黑猩猩個體位置進行初始化,提高種群的多樣性和質量,同時在位置更新過程中利用單純形法和群個體記憶機制對較差個體進行改進,進一步提高算法的局部開發(fā)能力和勘探能力,提高算法的尋優(yōu)精度。
1.黑猩猩優(yōu)化算法
基礎黑猩猩優(yōu)化算法的具體原理參考,我的博客:https://blog.csdn.net/u011835903/article/details/119649041
2. 改進黑猩猩優(yōu)化算法
2.1 混沌反向學習策略初始化種群
本文采用 Iteration 混沌映射。Iteration 映射數(shù)學表達式如下:
xn+1=sin?(bπ/xn)(6)x_{n+1}=\sin \left(b \pi / x_n\right) \tag{6} xn+1?=sin(bπ/xn?)(6)
其中, bbb 為控制參數(shù), b∈(0,1b \in(0,1b∈(0,1, 文中設定 b=0.7b=0.7b=0.7
首先, 通過 Iteration 映射生成 NNN 個 ddd 維初始解 Xi,j,(i=1,2,…,N;j=1,2,…,d)X_{i, j},(i=1,2, \ldots, N ; j=1,2, \ldots, d)Xi,j?,(i=1,2,…,N;j=1,2,…,d), 其次, 對當前種 群中個體初始解進行排序, 選擇對應的自身極值點作 為精英個體 Xi,je=(Xi,1e,Xi,2e,…,Xi,de)X_{i, j}^e=\left(X_{i, 1}^e, X_{i, 2}^e, \ldots, X_{i, d}^e\right)Xi,je?=(Xi,1e?,Xi,2e?,…,Xi,de?), 按照公式 (6) 生成混沌精英反向解 Xi,je ̄=(Xi,1e ̄,Xi,2e ̄,…,Xi,de ̄)\overline{X_{i, j}^e}=\left(\overline{X_{i, 1}^e}, \overline{X_{i, 2}^e}, \ldots, \overline{X_{i, d}^e}\right)Xi,je??=(Xi,1e??,Xi,2e??,…,Xi,de??), 并按照公式 ( 7) 設置動態(tài)邊界以規(guī)范越界的位置點。
Xi,je ̄=k?(αj+βj)?Xi,je(7)\overline{X_{i, j}^e}=k^*\left(\alpha_j+\beta_j\right)-X_{i, j}^e \tag{7} Xi,je??=k?(αj?+βj?)?Xi,je?(7)
Xi,je ̄=rand?(αj,βj),Xi,je ̄<αj,Xi,je ̄<βj(8)\overline{X_{i, j}^e}=\operatorname{rand}\left(\alpha_{\mathrm{j}}, \beta_j\right), \overline{X_{i, j}^e}<\alpha_j,\overline{X_{i, j}^e}<\beta_j \tag{8} Xi,je??=rand(αj?,βj?),Xi,je??<αj?,Xi,je??<βj?(8)
其中精英反向系數(shù) k∈(0,1),αj=min?(Xi,je)k \in(0,1), \alpha_j=\min \left(X_{i, j}^e\right)k∈(0,1),αj?=min(Xi,je?) 和 βj=max?(Xi,je)\beta_j=\max \left(X_{i, j}^e\right)βj?=max(Xi,je?) 。
最后將混沌生成的所有初始解和混沌精英反向解 合并進行排序, 選取前 NNN 個較優(yōu)的解作為初始種群。
2.2 單純形法
單純形法是一種不受目標函數(shù)連續(xù)性和可導性影 響的直接搜索算法, 其主要通過迭代判斷最差頂點 XsX_sXs? 向優(yōu)運動的方向向量 ggg 是否正確, 并通過對最差 頂點進行反射、擴張、外收縮和內(nèi)收縮操作來控制其 運動。
具體流程如下:
I 計算種群的適應度值, 并將最優(yōu)的 4 個位置分別 適應度值為 f(XAttacker?)、f(XBarrier?)、f(XChaser?)f\left(X_{\text {Attacker }}\right) 、 f\left(X_{\text {Barrier }}\right) 、 f\left(X_{\text {Chaser }}\right)f(XAttacker??)、f(XBarrier??)、f(XChaser??) 和 f(XDriver?)f\left(X_{\text {Driver }}\right)f(XDriver??), 設 中 心 位 置 為 Xc=(XAttacker+X)X_c=\left(\quad X_{Attacker}+\quad X\right)Xc?=(XAttacker?+X)
II 將剩下黑猩猩個體的適應度值進行排序, 選擇 適應度值最差的個體作為較差點 XsX_sXs?
對較差點 XsX_sXs? 進行反射操作,
Xr=Xc+α(Xc?Xs)X_r=X_c+\alpha\left(X_c-\mathrm{X}_s\right) Xr?=Xc?+α(Xc??Xs?)
得到反射點 XrX_rXr?, 反射系數(shù) α\alphaα 取 1 。
III 若 f(Xr)<f(XAttacker?)f\left(X_r\right)<f\left(X_{\text {Attacker }}\right)f(Xr?)<f(XAttacker??), 則反射方向正確, 繼續(xù)執(zhí)行擴張操作,
Xe=Xc+β(Xr?Xc)X_e=X_c+\beta\left(X_r-X_c\right) Xe?=Xc?+β(Xr??Xc?)
得到擴張點 XeX_eXe?, 擴張系數(shù) β\betaβ 取 2。
若 f(Xe)<f(XAttacker?)f\left(X_e\right)<f\left(X_{\text {Attacker }}\right)f(Xe?)<f(XAttacker??), 則用 XeX_eXe? 代替 XsX_sXs?; 否 則, 用 XrX_rXr? 代替 XsX_sXs? 。
IV 若 f(Xs)<f(Xr)f\left(X_s\right)<f\left(X_r\right)f(Xs?)<f(Xr?), 則反射方向錯誤, 執(zhí)行 外收縮操作,
Xt=Xc+γ(Xs?Xc)X_t=X_c+\gamma\left(X_s-X_c\right) Xt?=Xc?+γ(Xs??Xc?)
得到外收縮點 XtX_tXt?, 外收縮系數(shù) γ\gammaγ 取 0.50.50.5 。
若 f(Xt)<f(Xs)f\left(X_t\right)<f\left(X_s\right)f(Xt?)<f(Xs?), 則用 XtX_tXt? 代替較差點 XsX_sXs? 。
V\mathrm{V}V 若 f(XAttacker?)<f(Xr)<f(Xs)f\left(X_{\text {Attacker }}\right)<f\left(X_r\right)<f\left(X_s\right)f(XAttacker??)<f(Xr?)<f(Xs?), 則執(zhí)行內(nèi) 收縮操作,
Xw=Xc?γ(Xs?Xc)X_w=X_c-\gamma\left(X_s-X_c\right) Xw?=Xc??γ(Xs??Xc?)
得到內(nèi)收縮點 XwX_wXw?, 內(nèi)收縮系數(shù) γ\gammaγ 取 0.50.50.5 。
若 f(Xw)<f(Xs)f\left(X_w\right)<f\left(X_s\right)f(Xw?)<f(Xs?), 則用 XwX_wXw? 代替較差點 XsX_sXs?; 否則, 用 XrX_rXr? 代替較差點 XsX_sXs? 。
通過運用單純形法的 4 種操作,可以讓最差點在 反射操作下搜索到所有可行的解, 內(nèi)外收縮操作可以 使最差點擺脫當前位置, 而在擴張操作下可以讓最優(yōu) 解跳出局部最小值, 向距離最差點更遠的反方向繼續(xù) 搜索,從而提高了算法整體的局部開發(fā)能力和尋優(yōu)能 力。由于單純形法針對的是種群中最差的個體, 對于 種群中其他個體仍然執(zhí)行黑猩猩原始算法中的隨機搜 索, 故而在提高算法的局部搜索能力的同時, 不會降 低種群的多樣性。
2.3 群個體記憶機制
在原始 COA 算法中, 通過對群體歷史前四個最 優(yōu)位置的加權記憶, 實現(xiàn)了黑猩猩種群間信息交流, 最終促使個體在搜索空間快速移動尋優(yōu), 但這一做法 并末考慮到每個黑猩猩個體自身的搜索經(jīng)驗, 因而, 在結合 COA算法群體信息交流表達式( 5 )的基礎上, 引人粒子群算法的個體記憶策略, 具體表達式變?yōu)?
X(t+1)=b1?(X1+X2+X3+X3)/4+b2?rand?1?[Xbest??X(t)]+rand?2?[Xj(t)?Xi(t)](9)\begin{aligned} &X(t+1)=b_1^*\left(X_1+X_2+X_3+X_3\right) / 4 \\ &+b_2^* \operatorname{rand}_1 *\left[X_{\text {best }}-X(t)\right]+\operatorname{rand}_2 *\left[X_j(t)-X_i(t)\right] \end{aligned} \tag{9} ?X(t+1)=b1??(X1?+X2?+X3?+X3?)/4+b2??rand1??[Xbest???X(t)]+rand2??[Xj?(t)?Xi?(t)]?(9)
其中, b1b_1b1? 和 b2b_2b2? 是 [0,1][0,1][0,1] 間的常數(shù), 分別表示群體交 流和個體經(jīng)驗記憶的系數(shù); rand 表示 [0,1][0,1][0,1] 間的隨機 變量; XbestX_{b e s t}Xbest? 表示第 iii 只黑猩猩所經(jīng)歷過的最佳位置, Xj,Xi,(j≠i)X_j, X_i,(j \neq i)Xj?,Xi?,(j=i) 是記憶過程中記下的隨機個體位置。
通過對 b1b_1b1? 和 b2b_2b2? 的調(diào)節(jié)來平衡群體交流和個體記憶對 位置更新的影響。
對比原始位置更新方程式(5), 式(9)增加了兩個部 分, 第一個是引人的個體自身記憶信息, 進一步提高 了算法在局部的開發(fā)能力和收斂速度, 第二個是隨機 記憶的個體位置, 從而起到增強算法種群多樣性和全 局勘探的能力。
綜上所述, 本文提出 EOSMICOA 算法的運算步 驟如下:
步驟 1: 設置相關參數(shù), 種群規(guī)模 NNN 、最大迭代 次數(shù) tmax?t_{\text {max }}tmax?? 、收斂因子 fff 、影響系數(shù) A、CA 、 CA、C 、混沌因子 mmm 等。
步驟 2: 利用 Iteration 混沌映射和精英反向學習 生成初始種群 Xi,i=1,2,…,NX_i, i=1,2, \ldots, NXi?,i=1,2,…,N 。
步驟 3: 計算個體的適應度值, 并確定歷史前四
步驟 4:利用單純形法改變較差個體 XsX_sXs? 的位置。
步驟 5: 更新 A、CA 、 CA、C, 按照公式 (5) 計算其他 黑猩猩的位置。
步驟 6: 通過粒子群算法改進的群個體記憶機制, 按照公式 (9) 進一步更新黑猩猩位置。
步驟 7: 判斷算法是否達到最大迭代次數(shù), 若達 到, 則算法結束, 輸出最優(yōu)位置 XAttacker?X_{\text {Attacker }}XAttacker??; 否則, 執(zhí) 行步驟 3。
3.實驗結果
4.參考文獻
[1]黃倩,劉升,李萌萌,郭雨鑫.多策略黑猩猩優(yōu)化算法研究及其工程應用[J/OL].計算機工程與應用:1-12[2021-10-25].http://kns.cnki.net/kcms/detail/11.2127.TP.20210806.1055.011.html.
5.Matlab代碼
6.Python代碼
總結
以上是生活随笔為你收集整理的多策略黑猩猩优化算法-附代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: webuploader 实现图片批量上传
- 下一篇: 乖离率背离公式_乖离率多少才合理 BIA