一區算法MPA|海洋捕食者算法原理及其代碼實現(Matlab/Python))

Matlab/Python:
在這里插入圖片描述
在這里插入圖片描述

本文KAU將介紹一個2020年發表在1區期刊ESWA上的優化算法——海洋捕食者算法 (Marine Predators Algorithm,MPA)[1]

在這里插入圖片描述

該算法由Faramarzi等于2020年提出,其靈感來源于海洋捕食者之間不同的覓食策略、最佳相遇概率策略、海洋記憶存儲與海洋漩渦以及魚類聚集效應影響。

算法性能上,在通風和建筑能源性能領域的29個測試函數、CEC2017及3個工程基準和2個工程實際問題等上進行評估,對比算法包含3類:

(1)GA、PSO-研究最充分的啟發式算法;

(2)GSA、CS、SSA-最近開發的算法;

(3)CMA-ES、SHADE、LSHADE-高性能與CEC優勝算法

MPA性能排名第二!
在這里插入圖片描述

MPA算法共分為三個階段,設計的挺有意思,如果有想做算法改進的朋友也可以看下去,本文將介紹該算法的相關原理并給出其MATLAB和Python實現。

00 目錄

1 海洋捕食者算法(MPA)原理

2 代碼目錄

3 算法性能

4 源碼獲取

01 海洋捕食者算法(MPA)原理

在這里插入圖片描述

MPA算法的靈感來自海洋生物的捕食行為和捕食策略,MPA 算法中海洋生物以萊維運動(Lévy flight/walk)和布朗(Brownian)運動兩種捕食策略進行捕食。在海洋捕食者算法的優化過程中,算法針對不同的階段,通過平衡萊維運動和布朗運動增加海洋捕食者和獵物之間相遇的可能性(做算法改進時,這點可以作參考!)。

在介紹算法步驟前,KAU先介紹海洋捕食者的覓食策略,即萊維飛行與布朗運動,再對MPA的算法原理進行介紹:

1.1 布朗運動

海洋捕食者在在獵物豐富的區域使用布朗運動策略。MPA 使用的是標準布朗運動,其隨機生成的步長由零均值((u=0)和單位方差(σ2=1)的高斯分布定義的概率函數得出。在點 x 的可能概率函數:

在這里插入圖片描述

1.2 萊維飛行

海洋捕食者在獵物數量稀少的海洋環境中采用萊維飛行策略。萊維飛行本質上是一種隨機游走策略,其步長遵循萊維分布。為了生成穩定的萊維分布,通常根據 Mantegna 算法生成服從萊維分布的隨機數。步長 S 的計算方式如下:

在這里插入圖片描述

式中:α表示在0到2范圍內的指數分布,x和y是兩個正態分布變量:
在這里插入圖片描述

標準差σx和σy定義如下:

在這里插入圖片描述

式中:Γ是伽瑪函數,整數z的函數定義為:

在這里插入圖片描述

兩種分布的軌跡如下:
在這里插入圖片描述

1.3 MPA算法步驟

海洋捕食者算法尋優主要通過三個主要階段來執行;其中,包括初始化、優化和FADs效應三個階段。

1.3.1 初始化

MPA 是一種基于種群的方法,其初始解與其他元啟發式算法一樣,均勻分布在搜索空間中:

在這里插入圖片描述

其中,Xmin和Xmax分別表示求解問題中變量的最小值和最大值,rand 表示(0,1)中的均勻隨機數。

捕食者在尋找食物時,獵物也在尋找食物,因此,需要定義兩個矩陣。選取最優解作為頂端捕食者,構造一個名為 Elite 矩陣,該矩陣數組監視搜索過程,并根據獵物的位置信息搜索獵物。第二個矩陣是 Prey 矩陣,它的維數與 Elite 相同,捕食者基于這個矩陣進行更新。在每次迭代結束時,如果出現適應度值更高的捕食者,當前頂端的捕食者會被替換,精英矩陣隨之更新。Elite 矩陣和 Prey 矩陣定義如下:
在這里插入圖片描述

其中,n為種群數量,d為問題維度。

1.3.2 優化

MPA 考慮了捕食者和獵物的速度比例,定義了三個階段的位置更新公式。v 表示了獵物和捕食者的速度比例,并明確了三個階段及其對應的公式,每種方式都

有一個預設的迭代周期,具體如下:

階段 1:高速度比

該階段處于算法迭代次數的前三分之一,在這期間執行算法的勘探。獵物比捕食者游得更快(v>10 ),捕食者因自身速度遠低于獵物而放棄捕獵,不移動,獵物執行布朗運動,該階段數學模型為:
在這里插入圖片描述

在公式(2.4)中,RB表示布朗運動,該向量是服從正態分布的隨機向量。RB與獵物點乘表示模擬獵物的布朗運動;P 表示一個常數通常取 P =0.5,R表示服從[0,1]均勻分布的隨機向量。 Iter為當前的迭代次數, Max_ Iter為最大迭代次數。

階段 2:相同速度比

該階段處于算法迭代次數的三分之一到三分之二,在這期間算法從勘探向開發的過渡。獵物和捕食者的速度基本相同(v≈1),此時捕食者和獵物都在尋找各自的獵物,整個種群被分為兩個部分,其中一部分代表捕食者用于勘探(布朗運動),另一部分代表獵物用于開發(萊維飛行)。該階段的數學模型可用如下公式表示:

在這里插入圖片描述

前一半種群,獵物開發:

在這里插入圖片描述

其中,RL表示模擬萊維運動的隨機數向量,通過RL 與 Prey 相乘模擬獵物進行萊維運動。

后一半種群,捕食者勘探:

在這里插入圖片描述

通過RB與 Elite 相乘模擬捕食者進行布朗運動,獵物根據捕食者的運動來更新自己位置,CF 是控制捕食者移動步長的自適應參數,更新公式如下.
在這里插入圖片描述

階段 3:低速度比

該階段處于算法總迭代次數的最后三分之一,主要是提高算法的開發能力。在這個時段,獵物的移動速度比捕食者慢(v=0.1),捕食者的策略是萊維運動:

在這里插入圖片描述

1.3.3 FADs效應

導致海洋捕食者行為改變的還有環境因素,如渦流形成或魚群聚集裝置(FADs)效應。在這些因素的影響下,它們可能需要在不同的維度上進行更長時間的跳躍,以尋找另一個獵物分布的環境。FADs 可以表示探索區域的局部最優。通過在算法優化過程中設置更長的跳躍可以避免陷入局部最優。

在這里插入圖片描述

其中,FADs 表示影響算法優化過程的概率,通常情況下取 0.2;U是隨機生成的0或1的二進制向量序列;R為[0,1]之間的隨機數;r1和r2為獵物矩陣的隨機索引。當 r ≤FADs 時,捕食者會在不同的維度上進行更長時間的跳躍,以此來尋找其他最優解分布空間,從而達到跳出局部最優的效果。當 r >FADs時,捕食者會在當前的捕食者空間內隨機移動。

1.4 算法流程圖

MPA算法核心在于萊維飛行與布朗運動的轉換應用,其在不同階段的更新思路都可以作為算法改進的學習之處,同時,MPA算法還設計了一種跳出局部最優的策略,同樣也可作為參考。MPA算法的流程圖如下:

在這里插入圖片描述

02 代碼目錄

在這里插入圖片描述

包含Matlab、Python文件以及MPA算法源文獻

代碼都經過作者重新注釋,代碼更清爽,可讀性強,其中Readme給出了一些注意:
在這里插入圖片描述

部分代碼:

在這里插入圖片描述

03 算法性能

采用CEC測試函數初步檢驗其尋優性能

在MATLAB中,執行程序結果如下:

在這里插入圖片描述

在PYTHON中,執行程序結果如下:

在這里插入圖片描述

04 源碼獲取

在公眾號(KAU的云實驗臺)后臺回復 MPA 即可~?

參考文獻

[1] FARAMARZI A,HEIDARINEJAD M,MIRJALILI S,et al.Marine predators algorithm:a nature-inspired metaheuristic[J].Expert Systems with Applications,2020,152:113377.

另:如果有伙伴有待解決的優化問題(各種領域都可),可以發我,我會選擇性的更新利用優化算法解決這些問題的文章。

如果這篇文章對你有幫助或啟發,可以點擊右下角的贊/在看(? ??_??)?(不點也行),你們的鼓勵就是我堅持的動力!若有定制需求,可私信作者。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/37211.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/37211.shtml
英文地址,請注明出處:http://en.pswp.cn/web/37211.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Linux】IO多路復用——select,poll,epoll的概念和使用,三種模型的特點和優缺點,epoll的工作模式

文章目錄 Linux多路復用1. select1.1 select的概念1.2 select的函數使用1.3 select的優缺點 2. poll2.1 poll的概念2.2 poll的函數使用2.3 poll的優缺點 3. epoll3.1 epoll的概念3.2 epoll的函數使用3.3 epoll的優點3.4 epoll工作模式 Linux多路復用 IO多路復用是一種操作系統的…

MCU復位時GPIO是什么狀態?

大家一定遇到過上電或者復位時外部的MOS電路或者芯片使能信號意外開啟,至此有經驗的工程師就會經常關心一個問題,MCU復位時GPIO是什么狀態?什么電路需要外部加上下拉? MCU從上電到啟動,實際可分為復位前和復位后、初始…

【WPF】Windows系統桌面應用程序編程開發新手入門-打造自己的小工具

電腦Windows系統上的桌面程序通常是用Visual Studio 開發工具編寫出來的,有兩種開發方式供選擇,一種是WindowForm,簡稱WinForm,另一種是Windows Presentation Foundation,簡稱WPF,這里將學習WPF項目。 文章…

大物3錯題整理

平衡位置:在O點上的位置 相位: 當N很大的時候,wxwywz。因此,平均平動動能除以3,就是能量均分定理。 W F在x上的積分 Π時無單位 180,就是單位 1rad,rad就是單位 左手定則、右手定則、安培定…

C++模板類與繼承

1)模板類繼承普通類(常見)。 2)普通類繼承模板類的實例化版本。 3)普通類繼承模板類。(常見) 4)模板類繼承模板類。 5)模板類繼承模板參數給出的基類(不能是模板類)。 示…

【抽代復習筆記】24-群(十八):循環群的兩道例題

例1:證明: (1)三次交錯群A3是循環群,它與(Z3,)同構,其中Z3 {[0],[1],[2]}; (2)G {1,i,-1,-i},G上的代數運算是數的乘法,則G是一個循環群&…

如何解決三菱軟件提示 起動MELSOFT Mediative Server失敗

前言: 注意,這篇文章僅針對如何解決 起動MELSOFT Mediative Server失敗 的問題。對于其他相關的問題,請搜索其他相應的解決辦法。 本人是在重裝三菱GX Works軟件時遇到此問題的。后來搜索發現無人能妥善的關閉這個提示。因此本文介紹如何關…

【Web3項目案例】Ethers.js極簡入門+實戰案例:實現ERC20協議代幣查詢、交易

蘇澤 大家好 這里是蘇澤 一個鐘愛區塊鏈技術的后端開發者 本篇專欄 ←持續記錄本人自學智能合約學習筆記和經驗總結 如果喜歡拜托三連支持~ 目錄 簡介 前景科普-ERC20 Ethers極簡入門教程:HelloVitalik(非小白可跳) 教程概覽 開發工具 V…

魔行觀察-烤匠麻辣烤魚-開關店監測-時間段:2011年1月 至 2024年6月

今日監測對象:烤匠麻辣烤魚,監測時間段:2011年1月 至 2024年6月 本文用到數據源獲取地址 魔行觀察http://www.wmomo.com/ 品牌介紹: 2013年,第一家烤匠在成都藍色加勒比廣場開業,隨后幾年成都國金中心店…

超詳細的tomcat安裝以及簡略項目的部署

一、安裝包 安裝路徑: 鏈接:https://pan.baidu.com/s/1JzPQQ2zUdnXi_FaTTG0pvg?pwdriht 提取碼:riht 安裝完之后我們打開,可看見以下目錄結構 二、環境變量配置 首先打開我們電腦的高級環境變量配置 我們先配置一個系統變量…

Variables Reference for vscode

Predefined variables Visual Studio Code 支持在調試、任務配置文件以及一些特定的設置中使用變量替換。這些變量可以使用 ${variableName} 語法在 launch.json 和 tasks.json 文件的某些鍵和值字符串中使用。 Predefined variables Visual Studio Code 支持以下預定義變量…

Zookeeper:Zookeeper JavaAPI操作與分布式鎖

文章目錄 一、Zookeeper JavaAPI操作1、Curator介紹2、創建、查詢、修改、刪除節點3、Watch事件監聽 二、Zookeeper分布式鎖原理 一、Zookeeper JavaAPI操作 1、Curator介紹 Curator是Apache Zookeeper的Java客戶端。常見的Zookeeper Java API: 原生Java API。ZkC…

天氣網站爬蟲及可視化

摘要:隨著互聯網的快速發展,人們對天氣信息的需求也越來越高。本論文基于Python語言,設計并實現了一個天氣網站爬蟲及可視化系統。該系統通過網絡爬蟲技術從多個天氣網站上獲取實時的天氣數據,并將數據進行清洗和存儲。同時&#…

數據倉庫面試題(二)

1. 簡述星型模型和雪花模型的區別?應用場景 ? 星型模型(Star Schema)和雪花模型(Snowflake Schema)是數據倉庫中常用的兩種維度建模方法,它們在數據組織和設計上有所不同。 星型模型&#xff…

【簡易版tinySTL】 哈希表與移動語義

基本概念 哈希表(HashTable)是一個重要的底層數據結構, 無序關聯容器包括unordered_set, unordered_map內部都是基于哈希表實現。 哈希表是一種通過哈希函數將鍵映射到索引的數據結構,存儲在內存空間中。哈希函數負責將任意大小的輸入映射到…

【C++】內存分區

目錄 內存分區代碼運行前后區別各分區詳細解釋C內存申請和釋放 內存分區 不同的操作系統對程序內存的管理和劃分會有所不同。 此處是C內存區域劃分主要是針對通用的情況,并不限定在某個特定操作系統上 一般分為4個區(有時把全局區拆分成數據區未初始化…

git 命令學習之branch 和 tag 操作

引言 在項目一個迭代過程結束之時,或是一個版本發布之后,我們要進行 新版本的開發,這時就需要對原來的項目代碼進行封存,以及新項目代碼的開始,這時就需要用到 branch 和 tag 操作。下面簡單說說對這兩個操作的理解。…

微服務之服務保護策略【持續更新】

文章目錄 線程隔離一、滑動窗口算法二、漏桶算法三、令牌桶算法 面試題1、Sentinel 限流和Gateway限流的區別 線程隔離 兩種實現方式 線程池隔離(Hystix隔離),每個被隔離的業務都要創建一個獨立的線程池,線程過多會帶來額外的CPU…

【C語言】C語言-體育彩票的模擬生成和兌獎(源碼+論文)【獨一無二】

👉博__主👈:米碼收割機 👉技__能👈:C/Python語言 👉公眾號👈:測試開發自動化【獲取源碼商業合作】 👉榮__譽👈:阿里云博客專家博主、5…

【涵子來信科技潮流】——WWDC24回顧與暑假更新說明

期末大關,即將來襲。在期末之前,我想發一篇文章,介紹有關WWDC24的內容和暑假中更新的說明。本篇文章僅為個人看法和分享,如需了解更多詳細內容,請通過官方渠道或者巨佬文章進行進一步了解。 OK, Lets go. 一、WWDC24 …