智能優(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á)式為:
式中為鄰近個(gè)體的個(gè)數(shù);
為第
個(gè)蜻蜓同類之間分離行為的位置向量;
為個(gè)體所在位置;
相鄰個(gè)體蜻蜓
所處的位置。
2.2 排隊(duì)
排隊(duì)是指每個(gè)蜻蜓個(gè)體在飛行時(shí)與相鄰個(gè)體之間的速度匹配。排隊(duì)行為的數(shù)學(xué)表達(dá)式為:
式中為第
個(gè)蜻蜓個(gè)體排隊(duì)行為的位置向量;
為相鄰個(gè)體的飛行速度。
2.3 結(jié)盟
結(jié)盟指蜻蜓與相鄰?fù)愔g彼此聚在一起的集群行為。結(jié)盟行為的數(shù)學(xué)表達(dá)式為:
式中為第
個(gè)蜻蜓個(gè)體結(jié)盟行為的位置向量。
2.4 尋找獵物
尋找獵物指?jìng)€(gè)體為生存搜尋獵物的行為。尋找獵物行為的數(shù)學(xué)表達(dá)式為:
式中第
個(gè)蜻蜓個(gè)體獵食行為的位置向量;
待捕食的獵物所處的位置。
2.5 躲避天敵
個(gè)體出于生存的本能,需時(shí)刻警惕天敵的行為。躲避天敵行為的數(shù)學(xué)表達(dá)式為:
式中為第i個(gè)蜻蜓個(gè)體逃避天敵行為的位置向量;
為蜻蜓獵食所處的位置。步向量表示為蜻蜓的飛行方向以及步長(zhǎng),其數(shù)學(xué)式如下:
式中:為對(duì)齊權(quán)重;
為凝聚權(quán)重;
為天敵權(quán)重因子;
為獵物權(quán)重因子;
為分離權(quán)重;
為當(dāng)前迭代次數(shù);
為慣性權(quán)重。
在自然界中,出于生存需要,大部分時(shí)間蜻蜓都是運(yùn)動(dòng)的,因此所處位置也需實(shí)時(shí)更新。更新蜻蜓個(gè)體所處位置的向量,數(shù)學(xué)表達(dá)式如下:
要達(dá)到使算法性能進(jìn)一步得到強(qiáng)化的目的,在同類個(gè)體附近無(wú)臨近解時(shí),通過使用Lévy飛行的方法繞搜索空間飛行,進(jìn)行蜻蜓位置的更新:
其中表示維度。Lévy函數(shù)計(jì)算如下:
式子中:為[0,1]范圍內(nèi)的隨機(jī)數(shù);
為常數(shù)。
為調(diào)節(jié)DA算法的搜索性能,參數(shù)值(分離權(quán)重、對(duì)齊權(quán)重
、凝聚權(quán)重
、獵物權(quán)重因子
、天敵權(quán)重因子
)將在尋優(yōu)過程中自適應(yīng)調(diào)整。
2.算法流程
蜻蜓算法優(yōu)化相關(guān)參數(shù)步驟如下:
a.初始化蜻蜓算法參數(shù),包括最大迭代次數(shù)、種群數(shù)量。
b.初始化蜻蜓在搜索空間中的位置向量和在搜索空間中的方向向量
。各只蜻蜓優(yōu)化參數(shù)的組合設(shè)為
,其中
矩陣的第1、2行分別存放
的值。
c.更新各權(quán)重值。根據(jù)上述步驟的數(shù)據(jù),對(duì)相關(guān)權(quán)重值進(jìn)行初始化。變量包括鄰域半徑、慣性權(quán)重
、獵物權(quán)重因子
、對(duì)齊權(quán)重
、凝聚權(quán)重
、分離權(quán)重
、天敵權(quán)重因子
。
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ù)組合。
e.搜尋鄰域中有無(wú)蜻蜓個(gè)體存在,以歐氏距離作為鄰域中有無(wú)蜻蜓存在的根據(jù)。若存在,用式(6)、(7)更新位置與步長(zhǎng);若不存在,用式(8)更新位置。
f.用式(1)~(5)計(jì)算蜻蜓的行為度,包括。
g.更新與
h.終止條件的判斷。如果滿足終止條件,則直接跳出,同時(shí)輸出最優(yōu)參數(shù)組合;如果不滿足則迭代次數(shù)加1,跳轉(zhuǎn)執(zhí)行步驟c。
3.算法結(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.