智能優(yōu)化算法:蜻蜓優(yōu)化算法

智能優(yōu)化算法:蜻蜓優(yōu)化算法-附代碼

@[toc]
摘要:蜻蜓優(yōu)化算法( Dragonfly algorithm,DA)是Seyedali Mirjalili等于2016年提出的一種新型智能優(yōu)化算法[1]。其主要靈感源于自然界中蜻蜓的靜態(tài)和動(dòng)態(tài)群集行為,具有尋優(yōu)能力強(qiáng)等特點(diǎn)。

1.算法原理

蜓算法是一種新型智能群優(yōu)化算法,其原理是模擬大自然中蜻蜓尋找獵物的行為。該算法源于自然中蜻蜓動(dòng)態(tài)和靜態(tài)的智能群行為,對(duì)蜻蜓的飛行線路、躲避天敵及尋找食物等生活習(xí)性進(jìn)行數(shù)學(xué)建模。在動(dòng)態(tài)群中,為獲得更好的生存環(huán)境,大量的蜻蜓集群朝著共同的方向進(jìn)行遠(yuǎn)距離遷徙;在靜態(tài)群中,為尋找其他飛行獵物,由小部分蜻蜓組成的各個(gè)小組,在較小的范圍內(nèi)來(lái)回飛行。蜻蜓飛行過程中的局部運(yùn)動(dòng)與飛行路徑的臨時(shí)突變是靜態(tài)群的主要特征。在自然界中,蜻蜓的生活習(xí)性可以歸納為5類行為方式:分離、排隊(duì)、結(jié)盟、尋找獵物和躲避天敵。

1.1分離

分離是每個(gè)蜻蜓個(gè)體與同類分開的行為。分離行為的數(shù)學(xué)表達(dá)式為:
S_{i}=-\sum_{j=1}^{N}(X-X{j})\tag{1}
式中N^{'}為鄰近個(gè)體的個(gè)數(shù);S_{i}為第i個(gè)蜻蜓同類之間分離行為的位置向量;X為個(gè)體所在位置;X_{j}相鄰個(gè)體蜻蜓j所處的位置。

2.2 排隊(duì)

排隊(duì)是指每個(gè)蜻蜓個(gè)體在飛行時(shí)與相鄰個(gè)體之間的速度匹配。排隊(duì)行為的數(shù)學(xué)表達(dá)式為:
A_{i}=\frac{\sum_{j=1}^{N'}{V_{j}}}{N^{'}}\tag{2}
式中A_{i}為第i個(gè)蜻蜓個(gè)體排隊(duì)行為的位置向量;V_{j}為相鄰個(gè)體的飛行速度。

2.3 結(jié)盟

結(jié)盟指蜻蜓與相鄰?fù)愔g彼此聚在一起的集群行為。結(jié)盟行為的數(shù)學(xué)表達(dá)式為:
C_{i}=\frac{\sum_{j=1}^{N'}{X_{j}}}{N^{'}}-X \tag{3}
式中C_{i}為第i個(gè)蜻蜓個(gè)體結(jié)盟行為的位置向量。

2.4 尋找獵物

尋找獵物指?jìng)€(gè)體為生存搜尋獵物的行為。尋找獵物行為的數(shù)學(xué)表達(dá)式為:
F_{i}=X^{+}-X\tag{4}
式中F_{i}i個(gè)蜻蜓個(gè)體獵食行為的位置向量;X^{+}待捕食的獵物所處的位置。

2.5 躲避天敵

個(gè)體出于生存的本能,需時(shí)刻警惕天敵的行為。躲避天敵行為的數(shù)學(xué)表達(dá)式為:
E_{i}=X^{-}-X\tag{5}
式中E_{i}為第i個(gè)蜻蜓個(gè)體逃避天敵行為的位置向量;X^{-}為蜻蜓獵食所處的位置。步向量表示為蜻蜓的飛行方向以及步長(zhǎng),其數(shù)學(xué)式如下:
\Delta X_{t+1}=(sS_{i}+aA_{i}+cC_{i}+fF_{i}+eE_{i})+\omega^{'}\Delta X_{t}\tag{6}
式中:a為對(duì)齊權(quán)重;c為凝聚權(quán)重;e為天敵權(quán)重因子;f為獵物權(quán)重因子;s為分離權(quán)重;t為當(dāng)前迭代次數(shù);\omega ^{'}為慣性權(quán)重。

在自然界中,出于生存需要,大部分時(shí)間蜻蜓都是運(yùn)動(dòng)的,因此所處位置也需實(shí)時(shí)更新。更新蜻蜓個(gè)體所處位置的向量,數(shù)學(xué)表達(dá)式如下:
X_{t+1}=X_{t}+\Delta X_{t+1}\tag{7}
要達(dá)到使算法性能進(jìn)一步得到強(qiáng)化的目的,在同類個(gè)體附近無(wú)臨近解時(shí),通過使用Lévy飛行的方法繞搜索空間飛行,進(jìn)行蜻蜓位置的更新:
X_{t+1} = X_{i} +Lévy(d)\Delta X_{i} \tag{8}
其中d表示維度。Lévy函數(shù)計(jì)算如下:
Lévy(x)=0.01*\frac{r_{1}*\delta}{|r_{2}|^{\frac{1}{\beta}}}\tag{9}

\delta = ( \frac {\Gamma(1+\beta)*sin(\frac{\pi\beta}{2})}{\Gamma(\frac{1+\beta}{2})*\beta*2(\frac{\beta-1}{2})})^{\frac {1}{\beta}},\Gamma(x) = (x-1)!\tag{10}

式子中:r_{1},r_{2}為[0,1]范圍內(nèi)的隨機(jī)數(shù);\beta為常數(shù)。

為調(diào)節(jié)DA算法的搜索性能,參數(shù)值(分離權(quán)重s、對(duì)齊權(quán)重a、凝聚權(quán)重c、獵物權(quán)重因子f、天敵權(quán)重因子e)將在尋優(yōu)過程中自適應(yīng)調(diào)整。

2.算法流程

蜻蜓算法優(yōu)化相關(guān)參數(shù)步驟如下:
a.初始化蜻蜓算法參數(shù),包括最大迭代次數(shù)、種群數(shù)量。
b.初始化蜻蜓在搜索空間中的位置向量X和在搜索空間中的方向向量ΔX。各只蜻蜓優(yōu)化參數(shù)的組合設(shè)為(C,g),其中X矩陣的第1、2行分別存放C、g的值。
c.更新各權(quán)重值。根據(jù)上述步驟的數(shù)據(jù),對(duì)相關(guān)權(quán)重值進(jìn)行初始化。變量包括鄰域半徑r、慣性權(quán)重ω′、獵物權(quán)重因子f、對(duì)齊權(quán)重a、凝聚權(quán)重c、分離權(quán)重s、天敵權(quán)重因子e。
d.適應(yīng)度值的計(jì)算,蜻蜓的最大適應(yīng)度值隨著蜻蜓不斷地進(jìn)行操作而實(shí)時(shí)更新,如果蜻蜓當(dāng)前的適應(yīng)度值大于已保存的適應(yīng)度值,則更新原適應(yīng)度值,否則原適應(yīng)度值不變。因此保存的適應(yīng)度值為最優(yōu)值,并且保存當(dāng)
前最優(yōu)值對(duì)應(yīng)的參數(shù)組合(C,g)。
e.搜尋鄰域中有無(wú)蜻蜓個(gè)體存在,以歐氏距離作為鄰域中有無(wú)蜻蜓存在的根據(jù)。若存在,用式(6)、(7)更新位置與步長(zhǎng);若不存在,用式(8)更新位置。
f.用式(1)~(5)計(jì)算蜻蜓的行為度,包括f,a,c,s,e
g.更新XΔX
h.終止條件的判斷。如果滿足終止條件,則直接跳出,同時(shí)輸出最優(yōu)參數(shù)組合(C,g);如果不滿足則迭代次數(shù)加1,跳轉(zhuǎn)執(zhí)行步驟c。

3.算法結(jié)果

算法結(jié)果

4.參考文獻(xiàn)

[1]Mirjalili S. Dragonfly algorithm: a new meta-heuristic optimization technique for solving single-objective, discrete, and multi-objective problems[J]. Neural Computing and Applications, 2016, 27(4): 1053-1073.

[2]傅軍棟,陳俐,康水華,馮奕軒.基于蜻蜓算法和支持向量機(jī)的變壓器故障診斷[J].華東交通大學(xué)學(xué)報(bào),2016,33(04):103-112.

5.MATALAB代碼

https://mianbaoduo.com/o/bread/Z5iblJw=

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

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

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