導航:首頁 > 源碼編譯 > 優化演算法測試函數

優化演算法測試函數

發布時間:2024-03-07 11:58:19

❶ 優化演算法筆記(三十)海洋捕食者演算法

(以下描述,均不是學術用語,僅供大家快樂的閱讀)
海洋捕食者演算法(Marine Predators Algorithm)見名知意,就是根據海洋中掠食者捕獲獵物的行為提出的優化演算法。該演算法發表於2020年,也演算法是一個新演算法了。
該演算法根據迭代次數分均三個階段,每個階段使用不同的隨機策略計算步長並移動獵物位置。如果獵物的位置好於捕食者的位置,那麼捕食者就移動到該獵物的位置。
海洋捕食者演算法就像一個縫合怪,縫合了布朗運動,levy飛行等隨機生成策略,在不同的階段使用不同的策略。雖然是縫合怪,但是也有著不錯的尋優能力,我們也可以學習學習其策略。

(因為是縫合怪,甚至找不到對標的動物,可能作者也沒找到,這次就算是鯊魚吧。)

海洋捕食者演算法中有兩個概念,捕食者和獵物,在每個階段,只有獵物會進行隨機移動,而捕食者則是在獵物完成移動後,移動到優於自己的獵物處。
在蟻獅演算法中也是這樣的模型,不過這里更簡單,我們可以將海洋捕食者演算法中的捕食者對標粒子群演算法中的粒子。捕食者的位置就是粒子的歷史最優位置,獵物的位置就是粒子的當前位置。獵物(粒子)不斷的移動改變位置,如果找到優於捕食者(粒子的歷史最優)的位置,那麼捕食者移動到該獵物處(粒子更新歷史最優位置)。
初始時海洋捕食者數量為N。捕食者的位置表示為 ,獵物的位置為 ,最大迭代次數為 。

迭代次數在 內。
根據如下公式計算獵物的新位置:

公式(1)用於計算步長,其中Rb為標准正態分布隨機數,公式(2)用於計算新位置,其中R為[0,1]內均勻隨機數,公式(3)是我將公式(1)代入公式(2)的到的,由於後面太多隨機數相乘,其結果可以近似為0,即該階段在當前獵物周圍小范圍搜索。

迭代次數在 內。
該階段,種群被均分為二組,第一組的獵物的位置更新公式如下:

迭代次數在 內。
該階段獵物的位置更新公式如下:

捕食者對比自己的獵物,如果獵物的位置更好,則更新自己的位置到獵物的位置。

根據魚類的聚集效應(Fish Aggregating Devices (FADs) effects),再次更新獵物的位置,其具體更新公式如下:

其中FADs取值為0.2,R,r為[0,1]內均勻分布的隨機數,U為{0,1}內隨機數,r1,r2為群體中的隨機個體編號。
從公式中可以看出,該步驟第一個公式對獵物位置的部分維度進行了「重置「,不過這樣有較大可能會超出邊界,第二個公式類似於差分進化的變異公式,讓獵物隨機移動。

適應度函數 。
實驗一

從圖中可以看出海洋捕食者演算法的初期收斂速度並不是很快,而後期則是會迅速收斂,。通過前面對公式的分析,該演算法在局部搜索方面有著較強的性能,從圖中也可以得到相似的結論。

從結果來看,演算法效果還是很不錯的,雖然是個縫合怪,但該有的步驟和性能都不差。

實驗二 :分別對階段1、2、3,進行測試,即整個演算法中只有階段1、階段2或者階段3中的一個。
階段1圖像如下:

階段二圖像如下:

階段三圖像如下:

圖像看上去好了不少,在最後群體能夠收斂到一起,集中在正解附近,結果應該不差

結果相對於原演算法好了一丟丟。不過這個測試函數十分的簡單,這個修改只能說是在該函數上較好,總體的性能還需要更全面的測試函數來測試。總的來說海洋捕食者演算法的性能不錯,但能夠改進的地方也不少。

海洋捕食者演算法是根據海洋中的捕食者搜捕獵物的行為而提出的優化演算法。該演算法分為三個階段,第一階段,進行全局搜索,第二階段,融合全局搜索和局部搜索,第三階段,進行局部搜索和levy飛行跳出局部最優。該演算法就算一個縫合怪,可以從中看出不少演算法的特點。
參考文獻
Faramarzi A , Heidarinejad M , Mirjalili S , et al. Marine Predators Algorithm: A Nature-inspired Metaheuristic[J]. Expert Systems with Applications, 2020, 152:113377.
提取碼:7wfn
以下指標純屬個人yy,僅供參考

目錄
上一篇 優化演算法筆記(二十九)禿鷹演算法
下一篇 優化演算法筆記(三十一)阿基米德演算法

❷ 想知道優化演算法是什麼

優化演算法是通過改善計算方式來最小化或最大化損失函數E(x)。模型內部有些參數是用來計算測試集中目標值Y的真實值和預測值的偏差程度的,基於這些參數就形成了損失函數E(x),比如說,權重(W)和偏差(b)就是這樣的內部參數,一般用於計算輸出值,在訓練神經網路模型時起到主要作用。

優化演算法分的分類

一階優化演算法是使用各參數的梯度值來最小化或最大化損失函數E(x),最常用的一階優化演算法是梯度下降。函數梯度導數dy/dx的多變數表達式,用來表示y相對於x的瞬時變化率。

二階優化演算法是使用了二階導數也叫做Hessian方法來最小化或最大化損失函數,由於二階導數的計算成本很高,所以這種方法並沒有廣泛使用。

❸ 優化演算法筆記(十四)水波演算法

(以下描述,均不是學術用語,僅供大家快樂的閱讀)
水波演算法(Water wave optimization)是根據水波理論提出的優化演算法。什麼是水波理論?簡單來說就是水波的寬度越小,其頻率越高,頻率與水波寬度的平方根成反比(具體細節我也不懂,物理方面的)。水波演算法也算是一種受物理現象(理論)啟發而提出的演算法,提出時間並不長,還有大量的研究和應用可以深入進行。
在水波演算法中,水波有三種形式來對空間進行搜索。1.傳播,2.折射,3.碎浪。傳播即水波向周圍擴散開來,折射是水波的高度趨近與0時改變了傳播的方向(我是真的理解不能,光可以折射,水也能折射的咯?),碎浪即水波的高度較高時,水波破碎形成浪花。可以看出水波的傳播是貫穿整個演算法流程的,而折射只會發生在水波高度減少至0時,碎浪則發生在水波過高時。
(強行解釋最為致命,作者開心就好)。

將每一個水波想像成一個獨立的個體,那麼每個水波將擁有3個屬性:位置X,波長 以及波高h。
在每一次迭代過程中,每個水波都會通過傳播的形式來對空間進行搜索同時水波的高度h會減少1。其位置更新公式如下:

其中 為該水波的波長, 為當前搜索空間的上下界。 的值會隨著迭代的進行而改變:

其中 為波長的衰減系數, 為一個較小的數以保證分母不為0。
每次傳播後,如果當前的水波優於傳播前的水波,則傳播到該位置,否則波浪的高度h會減少1,即:

上式中適應度函數值越大,表明位置越優。

在一個水波進行傳播之後,該水波有可能進行折射。每次傳播,水波的高度h會減少1,當h減少到0時,該水波將發生折射,同時其高度和波長也會改變,折射及高度波長改變公式如下:

折射後的位置正態分布在以當前水波和最優水波中點為均值,當前水波與最優水波距離為方差的位置。
在折射後水波的高度將會重新初始化為最大高度:

折射後, 會重新計算該水波的波長 :

在水波進行傳播之後,到達了一個優於當前最優水波的位置,則該水波將會進行碎浪,並將當前最優水波傳播到碎浪產生的位置。
碎浪位置的產生公式如下:

k為一個隨機數,每次碎浪將會隨機選擇k個維度來進行改變。 為一個常數。如果碎浪得到的結果優於當前最優水波,則改變當前最優水波到碎浪的位置。

是不是感覺流程圖有點復雜,其實演算法沒有那麼復雜,整個過程一共只有三個操作,一個水波在一代中最多隻會執行兩種方式。每個水波可能的搜索方式有三種:1.傳播,2.先傳播後碎浪,3.先傳播後折射。

適應度函數

由於水波演算法收斂較慢,所以最大迭代次數使用100。
實驗一

從圖像中可以看出,個體在向著中心不斷的收斂,其收斂速度不算很快。其結果也相對穩定。
從圖像可以推測出,水波演算法的核心參數其實是水波的最大高度,水波的最大高度決定了演算法的收斂速度和精度,就像人工蜂群演算法中的蜜源最大開采次數一樣。若一個個體連續多代沒有找到優於當前的位置,它將改變自己的策略。
從演算法的具體實現可以看出,傳播是一個在自身周圍的全局搜索的過程,折射則屬於一個大概率局部搜索,小概率跳出局部最優的操作,而碎浪則是進一步的局部搜索。那麼水波的最大高度越高,則水波演算法的全局搜索能力越強,但收斂速度越慢,反正,演算法的收斂速度越快。
實驗二 :減少演算法的水波最大高度至5

從圖像可以看出演算法的收斂速度明顯比實驗一要快,在第30代時已經快收斂於一個點了。從結果來看,實驗二的結果也優於實驗一,由於水波的最大高度較小,演算法進行碎浪和折射的次數增加了,即演算法的局部搜索能力增強了。
同樣之前的演算法中也提到過多次,收斂速度越快,群體越容易聚集到同一個區域,演算法也越容易陷入局部最優,而適應度函數對優化演算法來說是一個黑盒函數,無法得知其復雜程度。所以對於實驗所使用的較為簡單的測試函數,水波的最大高度越小,結果的精度越高,而面對未知的問題時,應該選取較大的水波高度以避免陷入局部最優。同樣物極必反,水波的最大高度過大可能會使演算法的局部搜索較弱,我們可以選取一個動態的水波最大高度。
實驗三 :水波最大高度隨迭代次數增加由12遞減至2

看圖像和結果感覺和實驗一差別不大,唯一的區別就是最優值要好於實驗一。在這個簡單的測試函數中無法表現出其應有的特點,由於演算法後期群體已經較為集中,也無法明顯的看出演算法的收斂速度是否隨著迭代次數增加而加快。

水波演算法也是一個新興演算法,演算法的流程較為復雜且可修改參數較多。演算法的流程和思想與蜂群演算法有點類似,但水波演算法更為復雜。水波演算法的三個搜索策略,傳播是一個全局搜索行為,也有一定的跳出局部最優能力;折射則是一個局部搜索過程,由於正態分布的原因,有較小的概率產生跳出局部最優的操作;碎浪則是一個更進一步的局部搜索,只在最優位置附近搜索。
其搜索策略使演算法在整個流程中都擁有全局搜索和局部搜索能力,全局搜索與局部搜索之間的平衡由水波的最大高度決定,最大高度約大,全局搜索能力越強,收斂速度越慢,反之,局部搜索能力越強,收斂速度越快。

以下指標純屬個人yy,僅供參考

參考文獻
Zheng, Yu-Jun. Water wave optimization: A new nature-inspired metaheuristic[J]. Computers & Operations Research, 2015, 55:1-11. 提取碼:fo70
目錄
上一篇 優化演算法筆記(十三)鯨魚演算法
下一篇 優化演算法筆記(十五)蝙蝠演算法

優化演算法matlab實現(十四)水波演算法matlab實現

閱讀全文

與優化演算法測試函數相關的資料

熱點內容
爬山演算法相關題目 瀏覽:720
vc編程大全 瀏覽:114
excel表格單列數據加密 瀏覽:646
給同事的解壓話語 瀏覽:990
linux關閉網卡命令行 瀏覽:452
史上最漂亮程序員 瀏覽:768
java實現excel的導入 瀏覽:758
光遇賬號如何轉移安卓 瀏覽:266
5分之13除以26的演算法 瀏覽:342
蘭州安寧區買解壓包子 瀏覽:641
php接收圖片代碼 瀏覽:668
hci命令 瀏覽:662
福建伺服器大區雲空間 瀏覽:840
筆桿子程序員 瀏覽:745
手機軟體易驗證加密 瀏覽:589
文檔加密只讀模式也不能看到 瀏覽:431
把jpg轉換成pdf的軟體 瀏覽:874
linuxeth0mac 瀏覽:192
windows編程知乎 瀏覽:442
壓縮工期超過40 瀏覽:249