1. 水波算法簡介
(以下描述,均不是學(xué)術(shù)用語笆制,僅供大家快樂的閱讀)
水波算法(Water wave optimization)是根據(jù)水波理論提出的優(yōu)化算法绅这。什么是水波理論?簡單來說就是水波的寬度越小在辆,其頻率越高证薇,頻率與水波寬度的平方根成反比(具體細(xì)節(jié)我也不懂,物理方面的)匆篓。水波算法也算是一種受物理現(xiàn)象(理論)啟發(fā)而提出的算法浑度,提出時(shí)間并不長,還有大量的研究和應(yīng)用可以深入進(jìn)行鸦概。
在水波算法中箩张,水波有三種形式來對空間進(jìn)行搜索。1.傳播,2.折射先慷,3.碎浪饮笛。傳播即水波向周圍擴(kuò)散開來,折射是水波的高度趨近與0時(shí)改變了傳播的方向(我是真的理解不能论熙,光可以折射福青,水也能折射的咯?)脓诡,碎浪即水波的高度較高時(shí)无午,水波破碎形成浪花∽Q瑁可以看出水波的傳播是貫穿整個(gè)算法流程的宪迟,而折射只會發(fā)生在水波高度減少至0時(shí),碎浪則發(fā)生在水波過高時(shí)交惯。
(強(qiáng)行解釋最為致命踩验,作者開心就好)。
2. 算法流程
將每一個(gè)水波想象成一個(gè)獨(dú)立的個(gè)體商玫,那么每個(gè)水波將擁有3個(gè)屬性:位置X箕憾,波長 以及波高h(yuǎn)。
在每一次迭代過程中拳昌,每個(gè)水波都會通過傳播的形式來對空間進(jìn)行搜索同時(shí)水波的高度h會減少1袭异。其位置更新公式如下:
其中為該水波的波長,
為當(dāng)前搜索空間的上下界炬藤。
的值會隨著迭代的進(jìn)行而改變:
其中 為波長的衰減系數(shù)御铃,
為一個(gè)較小的數(shù)以保證分母不為0。
每次傳播后沈矿,如果當(dāng)前的水波優(yōu)于傳播前的水波上真,則傳播到該位置,否則波浪的高度h會減少1羹膳,即:
上式中適應(yīng)度函數(shù)值越大睡互,表明位置越優(yōu)。
2.2折射
在一個(gè)水波進(jìn)行傳播之后陵像,該水波有可能進(jìn)行折射就珠。每次傳播,水波的高度h會減少1醒颖,當(dāng)h減少到0時(shí)妻怎,該水波將發(fā)生折射,同時(shí)其高度和波長也會改變泞歉,折射及高度波長改變公式如下:
折射后的位置正態(tài)分布在以當(dāng)前水波和最優(yōu)水波中點(diǎn)為均值逼侦,當(dāng)前水波與最優(yōu)水波距離為方差的位置匿辩。
在折射后水波的高度將會重新初始化為最大高度:
折射后,會重新計(jì)算該水波的波長 :
2.3碎浪
在水波進(jìn)行傳播之后榛丢,到達(dá)了一個(gè)優(yōu)于當(dāng)前最優(yōu)水波的位置撒汉,則該水波將會進(jìn)行碎浪,并將當(dāng)前最優(yōu)水波傳播到碎浪產(chǎn)生的位置涕滋。
碎浪位置的產(chǎn)生公式如下:
k為一個(gè)隨機(jī)數(shù),每次碎浪將會隨機(jī)選擇k個(gè)維度來進(jìn)行改變挠阁。 為一個(gè)常數(shù)宾肺。如果碎浪得到的結(jié)果優(yōu)于當(dāng)前最優(yōu)水波,則改變當(dāng)前最優(yōu)水波到碎浪的位置侵俗。
是不是感覺流程圖有點(diǎn)復(fù)雜锨用,其實(shí)算法沒有那么復(fù)雜,整個(gè)過程一共只有三個(gè)操作隘谣,一個(gè)水波在一代中最多只會執(zhí)行兩種方式增拥。每個(gè)水波可能的搜索方式有三種:1.傳播,2.先傳播后碎浪寻歧,3.先傳播后折射掌栅。
3. 實(shí)驗(yàn)
適應(yīng)度函數(shù)
由于水波算法收斂較慢,所以最大迭代次數(shù)使用100码泛。
實(shí)驗(yàn)一:
參數(shù) | 值 |
---|---|
問題維度(維度) | 2 |
總?cè)簲?shù)量(種群數(shù)) | 20 |
搜索次數(shù)(最大迭代次數(shù)) | 100 |
12 | |
0.5 | |
1.0026 | |
0.25->0.001 | |
取值范圍 | (-100猾封,100) |
實(shí)驗(yàn)次數(shù) | 10 |
值 | |
---|---|
最優(yōu)值 | 0.001808651677916917 |
最差值 | 0.04375677283916835 |
平均值 | 0.015238301700866286 |
從圖像中可以看出,個(gè)體在向著中心不斷的收斂噪珊,其收斂速度不算很快晌缘。其結(jié)果也相對穩(wěn)定。
從圖像可以推測出痢站,水波算法的核心參數(shù)其實(shí)是水波的最大高度磷箕,水波的最大高度決定了算法的收斂速度和精度,就像人工蜂群算法中的蜜源最大開采次數(shù)一樣阵难。若一個(gè)個(gè)體連續(xù)多代沒有找到優(yōu)于當(dāng)前的位置岳枷,它將改變自己的策略。
從算法的具體實(shí)現(xiàn)可以看出呜叫,傳播是一個(gè)在自身周圍的全局搜索的過程嫩舟,折射則屬于一個(gè)大概率局部搜索,小概率跳出局部最優(yōu)的操作怀偷,而碎浪則是進(jìn)一步的局部搜索家厌。那么水波的最大高度越高,則水波算法的全局搜索能力越強(qiáng)椎工,但收斂速度越慢饭于,反正蜀踏,算法的收斂速度越快。
實(shí)驗(yàn)二:減少算法的水波最大高度至5
參數(shù) | 值 |
---|---|
問題維度(維度) | 2 |
總?cè)簲?shù)量(種群數(shù)) | 20 |
搜索次數(shù)(最大迭代次數(shù)) | 100 |
5 | |
0.5 | |
1.0026 | |
0.25->0.001 | |
取值范圍 | (-100掰吕,100) |
實(shí)驗(yàn)次數(shù) | 10 |
值 | |
---|---|
最優(yōu)值 | 3.6611061423558655E-4 |
最差值 | 0.0023474778938427704 |
平均值 | 0.0011350695286915448 |
從圖像可以看出算法的收斂速度明顯比實(shí)驗(yàn)一要快果覆,在第30代時(shí)已經(jīng)快收斂于一個(gè)點(diǎn)了。從結(jié)果來看殖熟,實(shí)驗(yàn)二的結(jié)果也優(yōu)于實(shí)驗(yàn)一局待,由于水波的最大高度較小,算法進(jìn)行碎浪和折射的次數(shù)增加了菱属,即算法的局部搜索能力增強(qiáng)了钳榨。
同樣之前的算法中也提到過多次,收斂速度越快纽门,群體越容易聚集到同一個(gè)區(qū)域薛耻,算法也越容易陷入局部最優(yōu),而適應(yīng)度函數(shù)對優(yōu)化算法來說是一個(gè)黑盒函數(shù)赏陵,無法得知其復(fù)雜程度饼齿。所以對于實(shí)驗(yàn)所使用的較為簡單的測試函數(shù),水波的最大高度越小蝙搔,結(jié)果的精度越高缕溉,而面對未知的問題時(shí),應(yīng)該選取較大的水波高度以避免陷入局部最優(yōu)吃型。同樣物極必反倒淫,水波的最大高度過大可能會使算法的局部搜索較弱,我們可以選取一個(gè)動態(tài)的水波最大高度败玉。
實(shí)驗(yàn)三:水波最大高度隨迭代次數(shù)增加由12遞減至2
參數(shù) | 值 |
---|---|
問題維度(維度) | 2 |
總?cè)簲?shù)量(種群數(shù)) | 20 |
搜索次數(shù)(最大迭代次數(shù)) | 100 |
12->2 | |
0.5 | |
1.0026 | |
0.25->0.001 | |
取值范圍 | (-100敌土,100) |
實(shí)驗(yàn)次數(shù) | 10 |
值 | |
---|---|
最優(yōu)值 | 6.362096569652954E-4 |
最差值 | 0.06803231857237127 |
平均值 | 0.015265574050623312 |
看圖像和結(jié)果感覺和實(shí)驗(yàn)一差別不大,唯一的區(qū)別就是最優(yōu)值要好于實(shí)驗(yàn)一运翼。在這個(gè)簡單的測試函數(shù)中無法表現(xiàn)出其應(yīng)有的特點(diǎn)返干,由于算法后期群體已經(jīng)較為集中,也無法明顯的看出算法的收斂速度是否隨著迭代次數(shù)增加而加快血淌。
4. 總結(jié)
水波算法也是一個(gè)新興算法矩欠,算法的流程較為復(fù)雜且可修改參數(shù)較多。算法的流程和思想與蜂群算法有點(diǎn)類似悠夯,但水波算法更為復(fù)雜癌淮。水波算法的三個(gè)搜索策略,傳播是一個(gè)全局搜索行為沦补,也有一定的跳出局部最優(yōu)能力乳蓄;折射則是一個(gè)局部搜索過程,由于正態(tài)分布的原因夕膀,有較小的概率產(chǎn)生跳出局部最優(yōu)的操作虚倒;碎浪則是一個(gè)更進(jìn)一步的局部搜索美侦,只在最優(yōu)位置附近搜索。
其搜索策略使算法在整個(gè)流程中都擁有全局搜索和局部搜索能力魂奥,全局搜索與局部搜索之間的平衡由水波的最大高度決定菠剩,最大高度約大,全局搜索能力越強(qiáng)耻煤,收斂速度越慢具壮,反之,局部搜索能力越強(qiáng)哈蝇,收斂速度越快棺妓。
以下指標(biāo)純屬個(gè)人yy,僅供參考
指標(biāo) | 星數(shù) |
---|---|
復(fù)雜度 | ★★★★★☆☆☆☆☆ |
收斂速度 | ★★★★★☆☆☆☆☆ |
全局搜索 | ★★★★★★☆☆☆☆ |
局部搜索 | ★★★☆☆☆☆☆☆☆ |
優(yōu)化性能 | ★★★★☆☆☆☆☆☆ |
跳出局部最優(yōu) | ★★☆☆☆☆☆☆☆☆ |
改進(jìn)點(diǎn) | ★★★★☆☆☆☆☆☆ |
參考文獻(xiàn)
Zheng, Yu-Jun. Water wave optimization: A new nature-inspired metaheuristic[J]. Computers & Operations Research, 2015, 55:1-11.提取碼:fo70
目錄
上一篇 優(yōu)化算法筆記(十三)鯨魚算法
下一篇 優(yōu)化算法筆記(十五)蝙蝠算法