當前位置:首頁 » 操作系統 » 最新優化演算法

最新優化演算法

發布時間: 2022-12-28 07:53:05

⑴ 多目標優化演算法

多目標優化演算法如下:

一、多目標進化演算法(MOEA)

1、MOEA通過對種群X(t)執行選擇、交叉和變異等操作產生下一代種群X(t+1)。

2、在每一代進化過程中 ,首先將種群X(t)中的所有非劣解個體都復制到外部集A(t)中。

2、智能優化演算法:包括進化演算法(簡稱EA)、粒子群演算法(簡稱PSO)等。

兩者的區別:傳統優化技術一般每次能得到Pareo解集中的一個,而用智能演算法來求解,可以得到更多的Pareto解,這些解構成了一個最優解集,稱為Pareto最優解(任一個目標函數值的提高都必須以犧牲其他目標函數值為代價的解集)。

⑵ 本源量子聯合中科大在量子近似優化演算法研究中取得新進展

近日,本源量子聯合中科大研究團隊在量子近似優化演算法(Quantum Approximate Optimization Algorithm,後稱「QAOA」)的研究中取得最新進展。該研究證明了S-QAOA演算法(Shortcuts to Quantum Approximate Optimization Algorithm,後稱「S-QAOA」)是利用現階段的含雜訊量子計算機求解組合優化問題的理想選擇,進一步推進了量子計算在組合優化問題上的應用。

什麼是組合優化問題?以著名的旅行商問題(TSP)為例,假設有一個旅行商人要拜訪n個城市,他必須選擇所要走的路徑,路徑的限制是每個城市只能拜訪一次,而且最後要回到原來出發的城市。路徑的選擇目標是要求得的路徑長度為所有路徑之中的最小值。這就是一個典型的組合優化問題。

從廣義上講,組合優化問題是涉及從有限的一組對象中找到「最佳」對象的問題。「最佳」是通過給定的評估函數來測量的,該函數將對象映射到某個分數或者成本,目標是找到最高評估分數和最低成本的對象。組合優化往往涉及排序、分類、篩選等問題。

組合優化問題在現實生活中具有廣泛的應用,比如交通、物流、調度、金融等領域的許多問題都是組合優化問題。並且很多組合優化問題對應的經典演算法都有較高的復雜度,在問題規模較大時,經典計算機難以快速地找到這些問題的最優解。因此,利用量子計算加速組合優化問題的求解具有重要的意義。

在含雜訊的中等規模(NISQ)的量子時代,可靠的量子操作數會受到量子雜訊的限制(目前量子雜訊包括量子退相干、旋轉誤差等)。因此,人們對量子-經典混合演算法很感興趣,這類混合演算法可以藉助經典優化器來優化量子線路中的參數,從而選擇最優的演化路徑,以降低量子線路深度。比較著名的一類量子-經典混合演算法就是量子近似優化演算法(QAOA),它有望為組合優化問題的近似解的求解帶來指數級的加速。

研究人員表示,理論上,如果量子線路足夠深,QAOA可以得到較好的近似解。但由於量子雜訊引起的誤差會隨著量子線路深度的增加而累積,當量子線路深度較大時,QAOA的性能實際上會下降。因此,在當前的量子計算機上展現QAOA演算法的優勢是一項具有挑戰性的任務,降低QAOA演算法的線路深度對於在現階段的量子計算機上展現QAOA演算法的優勢具有重要意義。

為了減少量子電路的深度,研究人員提出了一種新的思路,稱為「Shortcuts to QAOA」:(S-QAOA)。首先,在S-QAOA中考慮了額外的兩體相互作用,在量子電路中加入與YY相互作用相關的雙門以補償非絕熱效應,從而加速量子退火過程,加速QAOA的優化;其次,釋放了兩體相互作用(包括ZZ相互作用和YY相互作用)的參數自由度,增強量子電路的表示能力,從而降低量子線路的深度。數值模擬結果表明,與QAOA相比,S-QAOA在量子線路更淺的情況下可以獲得較好的結果。

研究人員通過引入更多的兩體相互作用和釋放參數自由度來改進QAOA演算法,降低QAOA演算法需要的線路深度,使得QAOA演算法更適合現階段的含雜訊的量子計算機。由於該演算法利用了STA(Shortcuts to adiabaticity)的原理,因此研究人員將其稱為「Shortcuts to QAOA」。

本源量子研究人員表示:「在S-QAOA中,參數自由度的釋放是通過對梯度較大的參數進行進一步的優化,但是是否有更好的方式挑選出最重要的參數做優化,還是值得 探索 和研究的一個方向。我們將在下一步的工作中研究更多的案例,以驗證和完善我們的想法。我們希望我們的方法可以為盡早實現量子優越性提供新的方法和思路。」

⑶ 優化演算法筆記(十八)灰狼演算法

(以下描述,均不是學術用語,僅供大家快樂的閱讀)
灰狼演算法(Grey Wolf Algorithm)是受灰狼群體捕獵行為啟發而提出的演算法。演算法提出於2013年,仍是一個較新的演算法。目前為止(2020)與之相關的論文也比較多,但多為演算法的應用,應該仍有研究和改進的餘地。
灰狼演算法中,每隻灰狼的位置代表了解空間中的一個可行解。群體中,占據最好位置的三隻灰狼為狼王及其左右護法(衛)。在捕獵過程中這三隻狼將帶領著狼群蛇皮走位,抓捕獵物,直至找到獵物(最優解)。當然狼王不會一直是狼王,左右護法也是一樣,每一輪走位後,會根據位置的優劣重新選出新的狼王和左右護法。狼群中的每一隻灰狼會向著(也可能背向)這三隻位置最優的灰狼移動一定的距離,來決定這一步自己將如何走位。簡單來說, 灰狼個體會向則群體中最優的三個個體移動

很明顯該演算法的主角就是灰狼了。

設定目標灰狼為
,當前灰狼的為 ,則該灰狼向著目標灰狼移動後的位置 可以由一下公式計算得出:

灰狼群體中位置最好的三隻灰狼編號為1,2,3,那麼當前的灰狼i通過觀察灰狼1、灰狼2和灰狼3,根據公式(1)得出的三個位置為Xi1,Xi2,Xi3。那麼灰狼i將要移動到的位置可以根據以下供述計算得出:

可以看出該灰狼的目標位置是通過觀察三隻頭狼得到的三個目標位置的所圍成的區域的質心。(質心超出邊界時,取值為邊界值)。

灰狼演算法的論文描述很多,但是其公式和流程都非常簡單,主要對其參數A和C的作用效果進行了詳細描述。
C主要決定了新位置相對於目標灰狼的方位,而A則決定新位置向目標靠近還是遠離目標灰狼。當|A|>=1時,為遠離目標,表現出更強的全局搜索能力,|A|<1時靠近目標,表現出更強的局部搜索能力。

適應度函數 。
實驗一:

看看這圖像和結果,效果好極了。每當我這么認為時,總會出現意想不到的轉折。
修改一下最優解位置試一試, 。
實驗二 : 。

其結果比上面的實驗差了不少,但我覺得這才是一個優化演算法應有的搜索圖像。其結果看上去較差只是因為迭代次數較少,收斂不夠迅速,這既是優點也是缺點,收斂慢但是搜索更細致。
仔細分析灰狼演算法的流程,它並沒有向原點靠近的趨勢,那隻能理解為演算法群體總體上向著群體的中心移動。 猜想 :當初始化群體的中心恰好是正解時,演算法的結果將會非常的好。
下面使用 ,並將灰狼的初始位置限定在(50,100)的范圍內,看看實驗圖像是否和實驗二的圖像一致。

實驗三 . ,初始種群取值范圍為(50,100)

這圖像和結果跟實驗一的不是一樣的嗎?這說明從實驗二中得出的猜想是錯誤的。

從圖像和結果上看,都和實驗二非常相似,當解在解空間的中心時但不在原點時,演算法的結果將差一些。
為什麼會這樣呢?從演算法的流程上看,灰狼演算法的各個行為都是關於頭狼對稱的,當最優解在原點且頭狼在附近時,公式(1)將變為如下:

實驗五 . ,三隻頭狼添加貪心演算法。

從圖像可以看出中心的三個點移動的頻率要比其他點的移動頻率低。從結果上可以看出其結果相對穩定了不少,不過差距非常的小,幾乎可以認為是運氣好所導致。如果所有的個體都添加貪心演算法呢?顯然,演算法的全局搜索能力將進一步減弱,並且更容易向群體中心收斂,這並不是一個好的操作。

實驗六 . ,
在實驗五的基礎上為狼群添加一個統一的步長,即每隻狼每次向著目標狼移動的距離不能大於其步長,將其最大步長設為1,看看效果。

從圖像可以看出,受到步長的約束每隻狼的移動距離較小,在結束時還沒有收斂,其搜索能力較強但收斂速度過慢且極易陷入局部最優。現在將最大步長設置為10(1/10解空間范圍)使其搜索能力和收斂速度相對平衡,在看看效果。

從圖像可以看出,演算法的收斂速度快了不少,但從結果可知,相較於實驗五,演算法的提升並不太大。
不過這個圖像有一種似曾相識的感覺,與螢火蟲演算法(FireFly Algorithm)差不多,仔細對比這兩個演算法可以發現, 灰狼演算法相當於螢火蟲演算法的一個簡化 。實驗六種對灰狼演算法添加步長的修改,讓其離螢火蟲演算法更近了一步。

實驗七 . ,
在實驗六的基礎上讓最大步長隨著迭代次數增加遞減。

從實驗七的圖像可以看出,種群的收斂速度好像快了那麼一點,結果也變好了不少。但是和改進後的螢火蟲演算法相比仍然有一定的差距。
灰狼演算法在全局搜索和局部搜索上的平衡已經比較好了,嘗試過對其進行改進,但是修改使搜索能力更強時,對於局部最優的函數求解效果很差,反之結果的精度較低,總體而言修改後的演算法與原演算法相差無幾。

灰狼演算法是根據灰狼群體的捕獵行動而提出的優化演算法,其演算法流程和步驟非常簡單,數學模型也非常的優美。灰狼演算法由於沒有貪心演算法,使得其有著較強的全局搜索能力同時參數A也控制了演算法的局部搜索范圍,演算法的全局搜索能力和局部搜索能力比較平衡。
從演算法的優化圖像可以看出,灰狼演算法和螢火蟲演算法非常的相似。可以認為,灰狼演算法是對螢火蟲演算法的一種改進。螢火蟲演算法向著由於自己的個體飛行,而灰狼演算法則的條件更為苛刻,向著群體前三強前進,螢火蟲演算法通過步長控制搜索范圍,而灰狼演算法則直接定義搜索范圍參數A,並令A線性遞減。
灰狼演算法的結構簡單,但也不容易改進,數次改進後只是改變了全局搜索能力和局部搜索能力的比例,綜合能力並沒有太大變化。
由於原點對於灰狼演算法有著隱隱的吸引力,當測試函數目標值在原點時,其結果會異常的好。因此,灰狼演算法的實際效果沒有論文中的那麼好,但也不差,算是一個中規中矩的優化演算法。
參考文獻
Mirjalili S , Mirjalili S M , Lewis A . Grey Wolf Optimizer[J]. Advances in Engineering Software, 2014, 69:46-61. 提取碼:wpff

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

目錄
上一篇 優化演算法筆記(十七)萬有引力演算法
下一篇 優化演算法筆記(十九)頭腦風暴演算法

優化演算法matlab實現(十八)灰狼演算法matlab實現

⑷ 優化演算法筆記(三十四)鴿群演算法

(以下描述,均不是學術用語,僅供大家快樂的閱讀)
鴿群演算法是根據鴿子依據磁場而擁有高超識途技巧提出的優化演算法。演算法提出於2014年(到底是08年還是14年?引用顯示08),也算有些年頭了。這也是一個由中國研究者提出的優化演算法,可喜可賀。
鴿群演算法中的個體和粒子群演算法中的粒子結構類似,都由位置和速度組成。在鴿群演算法中,鴿子的飛行行為根據迭代次數分為了兩個階段。簡單來說,階段一向著當前最優位置飛行,階段二向著自身周圍飛行。下面將詳細描述其飛行步驟

本次的主角就是鴿子了。
鴿群中鴿子數量為N,每隻鴿子的位置為 ,速度為 ,該位置的優劣由其適應度函數 計算得出。
在鴿群演算法中,鴿子的行為依照迭代次數劃分為兩個階段,階段1占整個迭代次數的比例為NcRate,一般的NcRate取值為0.75。

迭代次數在 代內為階段1。
在階段1中,需要根據鴿子的位置與目標,計算出鴿子的速度。當前位置加上速度就得到了新的位置。

階段2為迭代次數大於 的部分。
階段2相對復雜,首先需要對群體進行排序,將群體均分為兩組,較優的那組保持位置不變,同時提供其位置、適應度值作為參數,供較差的那組確定它們的新位置所在。

公式(3)求出了較優的那部分鴿子的重心所在,公式(4)則是讓較差的部分鴿子向著較優部分鴿子的重心隨機飛行了一段距離。

文章沒有說明鴿群演算法是否需要使用貪心演算法,下面會各自進行一次實驗看看效果。

適應度函數 。
實驗一 : 無貪心步驟

從圖像可以看出,演算法的收斂速度和精度都不錯。但是可以明顯注意到在40代左右,聚集於右下最優位置附近的個體會有一個向中心聚集的過程,數了一下,剛好是10個個體。這應該是階段2中較差的部分個體更新位置導致的。
本次試驗階段2時,可以認為其適應度函數幾乎等於0,個體位置幾乎到達90。則Nc計算公式如下:

可知個體會向著9處前進,並最終收斂到此處。可以看出階段2中公式(3)設計欠妥(當然,當最優解在0處時,精度會有很大的提升)。公式(3)應去除分母中求和前的N/2。

從結果來看,鴿群演算法還不錯,但是性能好像不太穩定,畢竟只用了階段1就計算出了結果,情有可原。
下面看看添加了貪心演算法的實驗。
實驗二: 有貪心步驟

圖像好像比實驗一好了一些,但是並不能說明問題。實驗一中存在的問題在實驗二中仍然存在,只是由於貪心步驟的緣故,鴿群無法飛到差於自己的位置,階段2仍然沒有任何作用。

實驗結果好像好了一丟丟,但幾乎可以認為沒有變化。

鴿群演算法是受鴿子依據磁場識途的特性啟發而提出的優化演算法。演算法的結構簡單,主要分為兩個階段,其中階段1為向著最優位置前進,階段2則是較差個體向著較優群體中心前進(bushi)。
從實驗中可以看出,原演算法的公式設計有些許缺陷,進行修改後應該能夠得到非常不錯的結果。

參考文獻

Haibin, Duan, Peixin, et al. Pigeon-inspired optimization: a new swarm intelligence optimizer for air robot path planning[J]. International Journal of Intelligent Computing & Cybernetics, 2008. 提取碼:wjok
以下指標純屬個人yy,僅供參考

目錄
上一篇 優化演算法筆記(三十三)黏菌演算法
下一篇 優化演算法筆記(三十五)天鷹演算法

⑸ 優化演算法

  SGD演算法中的一個關鍵參數是學習率。之前,我們介紹的SGD使用固定的學習率。在實踐中,有必要隨著時間的推移逐漸降低學習率,因此我們將第 k 步迭代的學習率記作 ϵ k 。
  這是因為SGD中梯度估計引入的雜訊源(m 個訓練樣本的隨機采樣)並不會在極小點處消失。相比之下,當我們使用批量梯度下降到達極小點時,整個代價函數的真實梯度會變得很小,之後為 0,因此批量梯度下降可以使用固定的學習率。保證SGD收斂的一個充分條件是

  若 ϵ 0 太大,學習曲線將會劇烈振盪,代價函數值通常會明顯增加。溫和的振盪是良好的,容易在訓練隨機代價函數(例如使用Dropout的代價函數)時出現。如果學習率太小,那麼學習過程會很緩慢。如果初始學習率太低,那麼學習可能會卡在一個相當高的代價值。通常,就總訓練時間和最終代價值而言,最優初始學習率會高於大約迭代 100 次左右後達到最佳效果的學習率。因此,通常最好是檢測最早的幾輪迭代,選擇一個比在效果上表現最佳的學習率更大的學習率,但又不能太大導致嚴重的震盪。

  雖然隨機梯度下降仍然是非常受歡迎的優化方法,但其學習過程有時會很慢。動量方法 (Polyak, 1964) 旨在加速學習,特別是處理高曲率、小但一致的梯度,或是帶雜訊的梯度。動量演算法積累了之前梯度指數級衰減的移動平均,並且繼續沿該方向移動。動量的效果如圖8.5所示

  受 Nesterov 加速梯度演算法 (Nesterov, 1983, 2004) 啟發,提出了動量演算法的一個變種。這種情況的更新規則如下:

  其中參數 α 和 ϵ 發揮了和標准動量方法中類似的作用。Nesterov 動量和標准動量之間的區別體現在梯度計算上。Nesterov 動量中,梯度計算在施加當前速度之後。因此,Nesterov 動量可以解釋為往標准動量方法中添加了一個校正因子。完整的Nesterov動量演算法如演算法3.2所示

  初始點能夠決定演算法是否收斂,有些初始點十分不穩定,使得該演算法會遭遇數值困難,並完全失敗。當學習收斂時,初始點可以決定學習收斂得多快,以及是否收斂到一個代價高或低的點。此外,差不多代價的點可以具有區別極大的泛化誤差,初始點也可以影響泛化。
  也許完全確知的唯一特性是初始參數需要在不同單元間 『『破壞對稱性』』。如果具有相同激活函數的兩個隱藏單元連接到相同的輸入,那麼這些單元必須具有不同的初始參數。如果它們具有相同的初始參數,然後應用到確定性損失和模型的確定性學習演算法將一直以相同的方式更新這兩個單元。即使模型或訓練演算法能夠使用隨機性為不同的單元計算不同的更新(例如使用Dropout的訓練),通常來說,最好還是初始化每個單元使其和其他單元計算不同的函數。這或許有助於確保沒有輸入模式
丟失在前向傳播的零空間中,沒有梯度模式丟失在反向傳播的零空間中。每個單元計算不同函數的目標促使了參數的隨機初始化。我們可以明確地搜索一大組彼此互不相同的基函數,但這經常會導致明顯的計算代價。例如,如果我們有和輸出一樣多的輸入,我們可以使用 Gram-Schmidt 正交化於初始的權重矩陣,保證每個單元計算彼此非常不同的函數。在高維空間上使用高熵分布來隨機初始化,計算代價小並且不太可能分配單元計算彼此相同的函數。
  通常情況下,我們可以為每個單元的偏置設置啟發式挑選的常數,僅隨機初始化權重。額外的參數(例如用於編碼預測條件方差的參數)通常和偏置一樣設置為啟發式選擇的常數。
  我們幾乎總是初始化模型的權重為高斯或均勻分布中隨機抽取的值。高斯或均勻分布的選擇似乎不會有很大的差別,但也沒有被詳盡地研究。然而,初始分布的大小確實對優化過程的結果和網路泛化能力都有很大的影響。
  更大的初始權重具有更強的破壞對稱性的作用,有助於避免冗餘的單元。它們也有助於避免在每層線性成分的前向或反向傳播中丟失信號——矩陣中更大的值在矩陣乘法中有更大的輸出。如果初始權重太大,那麼會在前向傳播或反向傳播中產生爆炸的值。在循環網路中,很大的權重也可能導致混沌(chaos)(對於輸入中很小的擾動非常敏感,導致確定性前向傳播過程表現隨機)。在一定程度上,梯度爆炸問題可以通過梯度截斷來緩解(執行梯度下降步驟之前設置梯度的閾值)。較大的權
重也會產生使得激活函數飽和的值,導致飽和單元的梯度完全丟失。這些競爭因素決定了權重的理想初始大小。
  也有助於避免在每層線性成分的前向或反向傳播中丟失信號——矩陣中更大的值在矩陣乘法中有更大的輸出。如果初始權重太大,那麼會在前向傳播或反向傳播中產生爆炸的值。在循環網路中,很大的權重也可能導致混沌(chaos)(對於輸入中很小的擾動非常敏感,導致確定性前向傳播過程表現隨機)。在一定程度上,梯度爆炸問題可以通過梯度截斷來緩解(執行梯度下降步驟之前設置梯度的閾值)。較大的權重也會產生使得激活函數飽和的值,導致飽和單元的梯度完全丟失。這些競爭因素決定了權重的理想初始大小。
  有些啟發式方法可用於選擇權重的初始大小。一種初始化 m 個輸入和 n 輸出的全連接層的權重的啟發式方法是從分布 U(−1/√ m ,
1/√ m ) 中采樣權重,而 Glorot and Bengio 建議使用標准初始化

  後一種啟發式方法初始化所有的層,折衷於使其具有相同激活方差和使其具有相同梯度方差之間。這假設網路是不含非線性的鏈式矩陣乘法,據此推導得出。現實的神經網路顯然會違反這個假設,但很多設計於線性模型的策略在其非線性對應中的效果也不錯。
  數值范圍准則的一個缺點是,設置所有的初始權重具有相同的標准差,例如1/√ m ,會使得層很大時每個單一權重會變得極其小。Martens (2010) 提出了一種被稱為稀疏初始化(sparse initialization)的替代方案,每個單元初始化為恰好有 k 個非零權重。這個想法保持該單元輸入的總數量獨立於輸入數目 m,而不使單一權重元素的大小隨 m 縮小。稀疏初始化有助於實現單元之間在初始化時更具多樣性。但是,獲得較大取值的權重也同時被加了很強的先驗。因為梯度下降需要很長時間縮小 『『不正確』』 的大值,這個初始化方案可能會導致某些單元出問題,例如maxout單元有幾個過濾器,互相之間必須仔細調整。

  Delta-bar-delta 演算法 (Jacobs, 1988) 是一個早期的在訓練時適應模型參數各自學習率的啟發式方法。該方法基於一個很簡單的想法,如果損失對於某個給定模型參數的偏導保持相同的符號,那麼學習率應該增加。如果對於該參數的偏導變化了符號,那麼學習率應減小。當然,這種方法只能應用於全批量優化中。

  AdaGrad 演算法,如演算法8.4所示,獨立地適應所有模型參數的學習率,縮放每個參數反比於其所有梯度歷史平方值總和的平方根 (Duchi et al., 2011)。具有損失最大偏導的參數相應地有一個快速下降的學習率,而具有小偏導的參數在學習率上有相對較小的下降。凈效果是在參數空間中更為平緩的傾斜方向會取得更大的進步。

  在凸優化背景中,AdaGrad 演算法具有一些令人滿意的理論性質。然而,經驗上已經發現,對於訓練深度神經網路模型而言,從訓練開始時積累梯度平方會導致有效學習率過早和過量的減小。AdaGrad在某些深度學習模型上效果不錯,但不是全部。

  RMSProp 演算法 (Hinton, 2012) 修改 AdaGrad 以在非凸設定下效果更好,改變梯度積累為指數加權的移動平均。AdaGrad旨在應用於凸問題時快速收斂。當應用於非凸函數訓練神經網路時,學習軌跡可能穿過了很多不同的結構,最終到達一個局部是凸碗的區域。AdaGrad 根據平方梯度的整個歷史收縮學習率,可能使得學習率在達到這樣的凸結構前就變得太小了。RMSProp 使用指數衰減平均以丟棄遙遠過去的歷史,使其能夠在找到凸碗狀結構後快速收斂,它就像一個初始化於該碗狀結構的 AdaGrad 演算法實例。
  RMSProp 的標准形式如演算法8.5所示,結合 Nesterov 動量的形式如演算法8.6所示。相比於 AdaGrad,使用移動平均引入了一個新的超參數ρ,用來控制移動平均的長度范圍。經驗上,RMSProp 已被證明是一種有效且實用的深度神經網路優化演算法。目前它是深度學習從業者經常採用的優化方法之一。

  Adam (Kingma and Ba, 2014) 是另一種學習率自適應的優化演算法,最好被看作結合 RMSProp 和具有一些重要區別的動量的變種。首先,在 Adam 中,動量直接並入了梯度一階矩(指數加權)的估計。將動量加入 RMSProp 最直觀的方法是將動量應用於縮放後的梯度。結合縮放的動量使用沒有明確的理論動機。其次,Adam 包括偏置修正,修正從原點初始化的一階矩(動量項)和(非中心的)二階矩的估計(演算法8.7)。RMSProp 也採用了(非中心的)二階矩估計,然而缺失了修正因子。因此,不像 Adam,RMSProp 二階矩估計可能在訓練初期有很高的偏置。Adam 通常被認為對超參數的選擇相當魯棒,盡管學習率有時需要從建議的默認修改。

  目前,最流行並且使用很高的優化演算法包括 SGD、具動量的 SGD、RMSProp、具動量的 RMSProp、AdaDelta 和 Adam。

⑹ 常用優化器演算法歸納介紹

優化器是神經網路訓練過程中,進行梯度下降以尋找最優解的優化方法。不同方法通過不同方式(如附加動量項,學習率自適應變化等)側重於解決不同的問題,但最終大都是為了加快訓練速度。

這里就介紹幾種常見的優化器,包括其原理、數學公式、核心思想及其性能;

核心思想: 即針對每次輸入的訓練數據,計算輸出預測與真值的Loss的梯度;

從表達式來看,網路中參數的更新,是不斷向著最小化Loss函數的方向移動的:

優點:
簡單易懂,即對於相應的最優解(這里認為是Loss的最小函數),每次變數更新都是沿著局部梯度下降最快的方向,從而最小化損失函數。

缺點:

不同於標准梯度下降法(Gradient Descent)一次計算所有數據樣本的Loss並計算相應的梯度,批量梯度下降法(BGD, Batch Gradient Descent)每次只取一個小批次的數據及其真實標簽進行訓練,稱這個批次為mini-batch;

優點:

缺點:
隨機梯度下降法的 batch size 選擇不當可能導致模型難以收斂;由於這種方法是在一次更新中,就對整個數據集計算梯度,所以計算起來非常慢,遇到很大量的數據集也會非常棘手,而且不能投入新數據實時更新模型。

我們會事先定義一個迭代次數 epoch,首先計算梯度向量 params_grad,然後沿著梯度的方向更新參數 params,learning rate 決定了我們每一步邁多大。

Batch gradient descent 對於凸函數可以收斂到全局極小值,對於非凸函數可以收斂到局部極小值。

和 BGD 的一次用所有數據計算梯度相比,SGD 每次更新時對每個樣本進行梯度更新,對於很大的數據集來說,可能會有相似的樣本,這樣 BGD 在計算梯度時會出現冗餘,而 SGD 一次只進行一次更新,就沒有冗餘,而且比較快,並且可以新增樣本。

即訓練時,每次只從一批訓練樣本中隨機選取一個樣本進行梯度下降;對隨機梯度下降來說,只需要一次關注一個訓練樣本,一點點把參數朝著全局最小值的方向進行修改了。

整體數據集是個循環,其中對每個樣本進行一次參數更新

缺點:

梯度下降速度比較慢,而且每次梯度更新時往往只專注與局部最優點,而不會恰好指向全局最優點;

單樣本梯度更新時會引入許多雜訊(跟訓練目標無關的特徵也會被歸為該樣本分類的特徵);

SGD 因為更新比較頻繁,會造成 cost function 有嚴重的震盪。

BGD 可以收斂到局部極小值,當然 SGD 的震盪可能會跳到更好的局部極小值處。

當我們稍微減小 learning rate,SGD 和 BGD 的收斂性是一樣的。

優點:

當處理大量數據時,比如SSD或者faster-rcnn等目標檢測模型,每個樣本都有大量候選框參與訓練,這時使用隨機梯度下降法能夠加快梯度的計算。

隨機梯度下降是通過每個樣本來迭代更新一次,如果樣本量很大的情況,那麼可能只用其中部分的樣本,就已經將 迭代到最優解了,對比上面的批量梯度下降,迭代一次需要用到十幾萬訓練樣本,一次迭代不可能最優,如果迭代10次的話就需要遍歷訓練樣本10次。缺點是SGD的噪音較BGD要多,使得SGD並不是每次迭代都向著整體最優化方向。所以雖然訓練速度快,但是准確度下降,並不是全局最優。雖然包含一定的隨機性,但是從期望上來看,它是等於正確的導數的。

梯度更新規則:

MBGD 每一次利用一小批樣本,即 n 個樣本進行計算,這樣它可以降低參數更新時的方差,收斂更穩定,另一方面可以充分地利用深度學習庫中高度優化的矩陣操作來進行更有效的梯度計算。

和 SGD 的區別是每一次循環不是作用於每個樣本,而是具有 n 個樣本的批次。

超參數設定值: n 一般取值在 50~256

缺點:(兩大缺點)

鞍點就是:一個光滑函數的鞍點鄰域的曲線,曲面,或超曲面,都位於這點的切線的不同邊。例如這個二維圖形,像個馬鞍:在x-軸方嚮往上曲,在y-軸方嚮往下曲,鞍點就是(0,0)。

為了應對上面的兩點挑戰就有了下面這些演算法

核心思想:

不使用動量優化時,每次訓練的梯度下降方向,都是按照當前批次訓練數據計算的,可能並不能代表整個數據集,並且會有許多雜訊,下降曲線波動較大:

添加動量項之後,能夠有效減小波動,從而加快訓練速度:

當我們將一個小球從山上滾下來時,沒有阻力的話,它的動量會越來越大,但是如果遇到了阻力,速度就會變小。
加入的這一項,可以使得梯度方向不變的維度上速度變快,梯度方向有所改變的維度上的更新速度變慢,這樣就可以加快收斂並減小震盪。

優點:

通過動量更新,參數向量會在有持續梯度的方向上增加速度;
使梯度下降時的折返情況減輕,從而加快訓練速度;

缺點:

如果數據集分類復雜,會導致 和 時刻梯度 向量方向相差較大;在進行向量求和時,得到的 會非常小,反而使訓練速度大大下降甚至模型難以收斂。

這種情況相當於小球從山上滾下來時是在盲目地沿著坡滾,如果它能具備一些先知,例如快要上坡時,就知道需要減速了的話,適應性會更好。

目前為止,我們可以做到,在更新梯度時順應 loss function 的梯度來調整速度,並且對 SGD 進行加速。

核心思想:

自適應學習率優化演算法針對於機器學習模型的學習率,採用不同的策略來調整訓練過程中的學習率,從而大大提高訓練速度。

這個演算法就可以對低頻的參數做較大的更新,對高頻的做較小的更新,也因此,對於稀疏的數據它的表現很好,很好地提高了 SGD 的魯棒性,例如識別 Youtube 視頻裡面的貓,訓練 GloVe word embeddings,因為它們都是需要在低頻的特徵上有更大的更新。

Adagrad 的優點是減少了學習率的手動調節

式中, 表示第 個分類, 表示第 迭代同時也表示分類 累計出現的次數。 表示初始的學習率取值(一般為0.01)

AdaGrad的核心思想: 縮放每個參數反比於其所有梯度歷史平均值總和的平方根。具有代價函數最大梯度的參數相應地有較大的學習率,而具有小梯度的參數又較小的學習率。

缺點:

它的缺點是分母會不斷積累,這樣學習率就會收縮並最終會變得非常小。

這個演算法是對 Adagrad 的改進,

和 Adagrad 相比,就是分母的 換成了過去的梯度平方的衰減平均值,指數衰減平均值

這個分母相當於梯度的均方根 root mean squared (RMS),在數據統計分析中,將所有值平方求和,求其均值,再開平方,就得到均方根值 ,所以可以用 RMS 簡寫:

其中 的計算公式如下, 時刻的依賴於前一時刻的平均和當前的梯度:

梯度更新規則:

此外,還將學習率 換成了 RMS[Δθ],這樣的話,我們甚至都不需要提前設定學習率了:

超參數設定值: 一般設定為 0.9

RMSprop 是 Geoff Hinton 提出的一種自適應學習率方法。

RMSprop 和 Adadelta 都是為了解決 Adagrad 學習率急劇下降問題的,

梯度更新規則:

RMSprop 與 Adadelta 的第一種形式相同:(使用的是指數加權平均,旨在消除梯度下降中的擺動,與Momentum的效果一樣,某一維度的導數比較大,則指數加權平均就大,某一維度的導數比較小,則其指數加權平均就小,這樣就保證了各維度導數都在一個量級,進而減少了擺動。允許使用一個更大的學習率η)

超參數設定值:

Hinton 建議設定 為 0.9, 學習率 為 0.001。

這個演算法是另一種計算每個參數的自適應學習率的方法。相當於 RMSprop + Momentum

除了像 Adadelta 和 RMSprop 一樣存儲了過去梯度的平方 vt 的指數衰減平均值 ,也像 momentum 一樣保持了過去梯度 mt 的指數衰減平均值:

如果 和 被初始化為 0 向量,那它們就會向 0 偏置,所以做了偏差校正,通過計算偏差校正後的 和 來抵消這些偏差:

梯度更新規則:

超參數設定值:
建議

示例一

示例二

示例三

上面情況都可以看出,Adagrad, Adadelta, RMSprop 幾乎很快就找到了正確的方向並前進,收斂速度也相當快,而其它方法要麼很慢,要麼走了很多彎路才找到。

由圖可知自適應學習率方法即 Adagrad, Adadelta, RMSprop, Adam 在這種情景下會更合適而且收斂性更好。

如果數據是稀疏的,就用自適用方法,即 Adagrad, Adadelta, RMSprop, Adam。

RMSprop, Adadelta, Adam 在很多情況下的效果是相似的。

Adam 就是在 RMSprop 的基礎上加了 bias-correction 和 momentum,

隨著梯度變的稀疏,Adam 比 RMSprop 效果會好。

整體來講,Adam 是最好的選擇。

很多論文里都會用 SGD,沒有 momentum 等。SGD 雖然能達到極小值,但是比其它演算法用的時間長,而且可能會被困在鞍點。

如果需要更快的收斂,或者是訓練更深更復雜的神經網路,需要用一種自適應的演算法。

各種優化器Optimizer原理:從SGD到AdamOptimizer

深度學習——優化器演算法Optimizer詳解(BGD、SGD、MBGD、Momentum、NAG、Adagrad、Adadelta、RMSprop、Adam)

⑺ 優化演算法是什麼

什麼是智能優化演算法 10分
智能優化演算法是一種啟發式優化演算法,包括遺傳演算法、蟻群演算法、禁忌搜索演算法、模擬退火演算法、粒子群演算法等。·智能優化演算法一般是針對具體問題設計相關的演算法,理論要求弱,技術性強。一般,我們會把智能演算法與最優化演算法進行比較,相比之下,智能算浮速度快,應用性強。
傳統優化演算法和現代優化演算法包括哪些.區別是什麼
1. 傳統優化演算法一般是針對結構化的問題,有較為明確的問題和條件描述,如線性規劃,二次規劃,整數規劃,混合規劃,帶約束和不帶約束條件等,即有清晰的結構信息;而智能優化演算法一般針對的是較為普適的問題描述,普遍比較缺乏結構信息。

2. 傳統優化演算法不少都屬於凸優化范疇,有唯一明確的全局最優點;而智能優化演算法針對的絕大多數是多極值問題,如何防止陷入局部最優而盡可能找到全局最優是採納智能優化演算法的根本原因:對於單極值問題,傳統演算法大部分時候已足夠好,而智能演算法沒有任何優勢;對多極值問題,智能優化演算法通過其有效設計可以在跳出局部最優和收斂到一個點之間有個較好的平衡,從而實現找到全局最優點,但有的時候局部最優也是可接受的,所以傳統演算法也有很大應用空間和針對特殊結構的改進可能。

3. 傳統優化演算法一般是確定性演算法,有固定的結構和參數,計算復雜度和收斂性可做理論分析;智能優化演算法大多屬於啟發性演算法,能定性分析卻難定量證明,且大多數演算法基於隨機特性,其收斂性一般是概率意義上的,實際性能不可控,往往收斂速度也比較慢,計算復雜度較高。

最新的優化演算法是什麼?
這個范圍太廣了吧?列出來一篇文獻綜述都列不完
多目標優化演算法的多目標是什麼意思
多目標優化的本質在於,大多數情況下,某目標的改善可能引起其他目標性能的降低,同時使多個目標均達到最優是不可能的,只能在各目標之間進行協調權衡和折中處理,使所有目標函數盡可能達到最優,而且問題的最優解由數量眾多,甚至無窮大的Pareto最優解組成。
編程中的優化演算法問題
1. 演算法優化的過程是學習思維的過程。學習數學實質上就是學習思維。也就是說數學教育的目的不僅僅是要讓學生掌握數學知識(包括計算技能),更重要的要讓學生學會數學地思維。演算法多樣化具有很大的教學價值,學生在探究演算法多樣化的過程中,培養了思維的靈活性,發展了學生的創造性。在認識演算法多樣化的教學價值的同時,我們也認識到不同演算法的思維價值是不相等的。要充分體現演算法多樣化的教育價值,教師就應該積極引導學生優化演算法,把優化演算法的過程看作是又一次發展學生思維、培養學生能力的機會,把優化演算法變成學生又一次主動建構的學習活動。讓學生在優化演算法的過程中,通過對各種演算法的比較和分析,進行評價,不僅評價其正確性——這樣做對嗎?而且評價其合理性——這樣做有道理嗎?還要評價其科學性——這樣做是最好的嗎?這樣的優化過程,對學生思維品質的提高無疑是十分有用的,學生在討論、交流和反思的擇優過程中逐步學會「多中擇優,優中擇簡」的數學思想方法。教師在引導學生演算法優化的過程中,幫助學生梳理思維過程,總結學習方法,養成思維習慣,形成學習能力,長此以往學生的思維品質一定能得到很大的提高。2. 在演算法優化的過程中培養學生演算法優化的意識和習慣。意識是行動的向導,有些學生因為思維的惰性而表現出演算法單一的狀態。明明自己的演算法很繁瑣,但是卻不願動腦做深入思考,僅僅滿足於能算出結果就行。要提高學生的思維水平,我們就應該有意識的激發學生思維和生活的聯系,幫助他們去除學生思維的惰性,鼓勵他們從多個角度去思考問題,然後擇優解決;鼓勵他們不能僅僅只關注於自己的演算法,還要認真傾聽他人的思考、汲取他人的長處;引導他們去感受各種不同方法的之間聯系和合理性,引導他們去感受到數學學科本身所特有的簡潔性。再演算法優化的過程中就是要讓學生感受計算方法提煉的過程,體會其中的數學思想方法,更在於讓學生思維碰撞,並形成切合學生個人實際的計算方法,從中培養學生的數學意識,使學生能自覺地運用數學思想方法來分析事物,解決問題。這樣的過程不僅是對知識技能的一種掌握和鞏固,而且可以使學生的思維更開闊、更深刻。3. 演算法優化是學生個體學習、體驗感悟、加深理解的過程。演算法多樣化是每一個學生經過自己獨立的思考和探索,各自提出的方法,從而在群體中出現了許多種演算法。因此,演算法多樣化是群體學習能力的表現,是學生集體的一題多解,而不是學生個體的多種演算法。而演算法的優化是讓學生在群體比較的過程中優化,通過交流各自得演算法,學生可以互相借鑒,互相吸收,互相補充,在個體感悟的前提下實施優化。因為優化是學生對知識結構的再構建過程,是發自學生內心的行為和自主的活動。但是,在實施演算法最優化教學時應給學生留下一定的探索空間,以及一個逐漸感悟的過程。讓學生在探索中感悟,在比較中感悟,在選擇中感悟。這樣,才利於發展學生獨立思考能力和創造能力。4. 優化演算法也是學生後繼學習的需要。小學數學是整個數學體系的基礎,是一個有著嚴密邏輯關系的子系統。演算法教學是小學數學教學的一部分,它不是一個孤立的教學點。從某一教學內容來說,也許沒有哪一種演算法是最好的、最優的,但從演算法教學的整個系統來看,必然有一種方法是最好的、最優的,是學生後繼學習所必需掌握的。在演算法多樣化的過程中,當學生提出各種演算法後,教師要及時引導學生進行比較和分析,在比較和分析的過程中感受不同策略的特點,領悟不同方法的算理,分析不同方法的優劣,做出合理的評價,從而選擇具有普遍意義的、簡捷的、並有利於後繼學習的最優方法。5. 優化也是數學學科發展的動力。數學是一門基礎學科,是一門工具學科,它的應用十分廣泛。數學之所以有如此廣泛的應用......>>
現在哪些智能優化演算法比較新
智能優化演算法是一種啟發式優化演算法,包括遺傳演算法、蟻群演算法、禁忌搜索演算法、模擬退火演算法、粒子群演算法等。·智能優化演算法一般是針對具體問題設計相關的演算法,理論要求弱,技術性強。一般,我們會把智能演算法與最優化演算法進行比較,

最新的智能優化演算法有哪些呢,論文想研究些新演算法,但是不知道哪些演算法...

答:蟻群其實還是算比較新的。 更新的也只是這些演算法的最後改進吧。演化演算法就有很多。隨便搜一篇以這些為標題,看06年以來的新文章就可以了。 各個領域都有的。否則就是到極限,也就沒有什麼研究前景了。
演算法實現函數優化是什麼意思
比如給一個函數 f(x1,x2)=x1^2+x2^2,求這個函數最小數值。。。

數學上,我們一般都是求偏導,然後一堆的,但是演算法上,我們只要使用梯度下降,幾次迭代就可以解決問題。。。
優化演算法停止條件是什麼?
適應度越大,解越優。

判斷是否已得到近似全局最優解的方法就是遺傳演算法的終止條件。 在最大迭代次數范圍內可以選擇下列條件之一作為終止條件:

1. 最大適應度值和平均適應度值變化不大、趨於穩定;

2. 相鄰GAP代種群的距離小於可接受值,參考「蔣勇,李宏.改進NSGA-II終止判斷准則[J].計算機模擬.2009. Vol.26 No.2」
智能優化演算法中cell是什麼意思
智能優化主要是用來求最優解的,通過多次迭代計算找出穩定的收斂的最優解或近似最優解,例如復雜的單模態或多模態函數的求最值問題。

⑻ 優化演算法

動量法、AdaGrad、RMSProp、AdaDelta、Adam

在7.2節(梯度下降和隨機梯度下降)中我們提到,目標函數有關自變數的梯度代表了目標函數在自變數當前位置下降最快的方向。因此,梯度下降也叫作最陡下降(steepest descent)。在每次迭代中,梯度下降根據自變數當前位置,沿著當前位置的梯度更新自變數。然而,如果自變數的迭代方向 僅僅取決於自變數當前位置,這可能會帶來一些問題

可以看到,同一位置上,目標函數在豎直方向( 軸方向)比在水平方向( 軸方向)的斜率的絕對值更大。因此,給定學習率,梯度下降迭代自變數時會使自變數在豎直方向比在水平方向移動幅度更大。那麼,我們 需要一個較小的學習率 從而避免自變數在豎直方向上越過目標函數最優解。然而,這會造成自變數在水平方向上 朝最優解移動變慢

試著將學習率調大一點,此時自變數在豎直方向不斷越過最優解並逐漸發散。

動量法的提出是為了解決梯度下降的上述問題。

其中,動量超參數 滿足 。當 時,動量法等價於小批量隨機梯度下降。

因此,在實際中,我們常常將 看作是最近 個時間步的 的值的加權平均。

現在,我們對動量法的速度變數做變形:

優化演算法中,⽬標函數⾃變數的每⼀個元素在相同時間步都使⽤同⼀個學習率來⾃我迭代。在「動量法」⾥我們看到當x1和x2的梯度值有較⼤差別時,需要選擇⾜夠小的學習率使得⾃變數在梯度值較⼤的維度上不發散。但這樣會導致⾃變數在梯度值較小的維度上迭代過慢。動量法依賴指數加權移動平均使得⾃變數的更新⽅向更加⼀致,從而降低發散的可能。 本節我們介紹AdaGrad演算法,它根據⾃變數在每個維度的梯度值的⼤小來調整各個維度上的學習率,從而避免統⼀的學習率難以適應所有維度的問題。

AdaGrad演算法會使⽤⼀個小批量隨機梯度gt按元素平⽅的累加變數st。在時間步0,AdaGrad將s0中每個元素初始化為0。在時間步t,⾸先將小批量隨機梯度gt按元素平⽅後累加到變數st:

其中⊙是按元素相乘。接著,我們將⽬標函數⾃變數中每個元素的學習率通過按元素運算重新調整⼀下:

其中η是學習率,ϵ是為了維持數值穩定性而添加的常數,如10的-6次方。這⾥開⽅、除法和乘法的運算都是按元素運算的。這些按元素運算使得⽬標函數⾃變數中 每個元素都分別擁有⾃⼰的學習率

需要強調的是,小批量隨機梯度按元素平⽅的累加變數st出現在學習率的分⺟項中。因此,

然而,由於st⼀直在累加按元素平⽅的梯度,⾃變數中每個元素的學習率在迭代過程中⼀直在降低(或不變)。 所以,當學習率在迭代早期降得較快且當前解依然不佳時,AdaGrad演算法在迭代後期由於學習率過小,可能較難找到⼀個有⽤的解

當學習率在迭代早期降得較快且當前解依然不佳時,AdaGrad演算法在迭代後期由於 學習率過小 ,可能較難找到⼀個有⽤的解。為了解決這⼀問題,RMSProp演算法對AdaGrad演算法做了⼀點小小的修改。

不同於AdaGrad演算法⾥狀態變數st是 截⾄時間步t所有小批量隨機梯度gt按元素平⽅和 ,RMSProp演算法將這些梯度 按元素平⽅做指數加權移動平均 。具體來說,給定超參數0 ≤ γ < 1,RMSProp演算法在時間步t > 0計算:

和AdaGrad演算法⼀樣,RMSProp演算法將⽬標函數⾃變數中每個元素的學習率通過按元素運算重新調整,然後更新⾃變數:

其中η是學習率,ϵ是為了維持數值穩定性而添加的常數,如10的-6次方。因為RMSProp演算法的狀態變數st是對平⽅項gt ⊙ gt的指數加權移動平均, 所以可以看作是最近1/(1 − γ)個時間步的小批量隨機梯度平⽅項的加權平均。如此⼀來,⾃變數每個元素的學習率在迭代過程中就不再⼀直降低(或不變)。

除了RMSProp演算法以外,另⼀個常⽤優化演算法AdaDelta演算法也針對AdaGrad演算法在迭代後期可能較難找到有⽤解的問題做了改進。有意思的是,AdaDelta演算法沒有學習率這⼀超參數。

AdaDelta演算法也像RMSProp演算法⼀樣,使⽤了小批量隨機梯度gt按元素平⽅的指數加權移動平均變數st。在時間步0,它的所有元素被初始化為0。給定超參數0 ≤ ρ < 1(對應RMSProp演算法中的γ),在時間步t > 0,同RMSProp演算法⼀樣計算:

與RMSProp演算法不同的是,AdaDelta演算法還維護⼀個 額外的狀態變數∆xt ,其元素同樣在時間步0時被初始化為0。我們使⽤∆xt−1來計算⾃變數的變化量:

最後,我們使⽤∆xt來記錄⾃變數變化量 按元素平⽅的指數加權移動平均:

Adam演算法在RMSProp演算法基礎上對小批量隨機梯度也做了指數加權移動平均。
Adam演算法使⽤了 動量變數vt 和RMSProp演算法中 小批量隨機梯度按元素平⽅的指數加權移動平均變數st ,並在時間步0將它們中每個元素初始化為0。給定超參數0 ≤ β1 < 1(演算法作者建議設為0.9),時間步t的動量變數vt即小批量隨機梯度gt的指數加權移動平均:

接下來,Adam演算法使⽤以上 偏差修正 後的變數 v ˆ t s ˆ t ,將模型參數中每個元素的學習率通過按元素運算重新調整:

其中 η 是學習率, ϵ 是為了維持數值穩定性而添加的常數,如10的-8次方。和AdaGrad演算法、RMSProp演算法以及AdaDelta演算法⼀樣,⽬標函數⾃變數中每個元素都分別擁有⾃⼰的學習率。最後,使⽤ 迭代⾃變數:

⑼ 智能優化演算法:蝠鱝覓食優化演算法

@[toc]
摘要:蝠鱝覓食優化 (Manta ray foraging optimization,
MRFO)是由 Zhao 等,在 2019 年提出的新型智能仿生群體演算法。具有尋優能力強,收斂快的特點。

該演算法是模仿蝠鱝在海洋中的覓食過程,針對不同捕食策略進行數學建模,對蝠鱝個體位置更新的方式進行數學描述,從而實現在復雜解空間中對最優解的搜索。由於位置更新方式的獨特性,MRFO 的求解精度與魯棒性相比於傳統群體智能仿生演算法也有顯著的提升。MRFO 可描述為 3 種覓食行為,包括鏈式覓食、螺旋覓食以及翻滾覓食。

鏈式捕食過程中,蝠鱝種群從頭到尾排成一條捕食鏈。蝠鱝個體下一位置的移動方向與步長是由當前最優解與前一個體位置共同決定。該種位置更新方式數學模型如下:

式中, 表示第 代、第 個個體在 維上的位置;r表示在[0,1]上均勻分布的隨機數; 表示第 代最優個體在第 維上的位置; 表示個體數量。

當蝠鱝個體發現某獵物之後,其會採用螺旋的方式向其靠近。MRFO 中蝠鱝個體由於鏈式捕食方式的存在,其在向當前解螺旋移動的過程中,同樣還受到前一個個體的影響。該種位置更新方式數學模型如下:

當 ,描述蝠鱝螺旋狀運動的數學方程可以定義為:

中, 為迭代總次數; 在[0,1]上均勻分布隨機數。當
,描述蝠鱝螺旋狀運動的數學方程可以定義為:

表示第 代、第 維的隨機位置。 表示變數取值上、下界。

在翻滾捕食中,蝠鱝個體以當前最優解作為翻滾支點,翻滾至與其當前位置成鏡像關系的另一側。其數學模型表達如下:

中, 和 都是在[0,1]上均勻分布的隨機數。

演算法流程

step1.設定算參數,初始化種群

step2. 計算適應度值

step3.判斷rand<0.5。如果成立,則執行螺旋覓食。如果不成立則執行鏈式覓食。

step4.計算適應度值,更新最優位置

step5.執行翻滾覓食,更新位置

step6.計算適應度值,更新最優位置

step7.判斷是否滿足結束條件,如果滿足則輸出最優值,否則重復執行step2-step7.

[1]李璟楠,樂美龍.多種群蝠鱝覓食優化求解多跑道機場航班排序[J].航空計算技術,2020,50(06):47-51.

[1]Zhao Weiguo,Zhang Zhenxing,Wang Liying. Manta Ray Foraging Optimization:An Effective Bio-inspired Optimizer for Engineering Applications[J]. Engineering Applications of Artificial Intelligence,2020,87:103300.

https://mianbaoo.com/o/bread/YZaUl5xw

熱點內容
am27系列存儲器 發布:2025-05-10 19:45:48 瀏覽:668
android支持的視頻格式 發布:2025-05-10 19:45:09 瀏覽:494
模擬器安卓版哪個好用電腦玩 發布:2025-05-10 19:41:00 瀏覽:16
浪潮伺服器配置bmc管理ip 發布:2025-05-10 19:26:31 瀏覽:469
兒童編程編 發布:2025-05-10 19:05:46 瀏覽:384
自己在電腦上怎麼搭建伺服器 發布:2025-05-10 19:05:11 瀏覽:426
沖鋒車裡面配置了什麼 發布:2025-05-10 18:55:31 瀏覽:430
c語言typedef的用法 發布:2025-05-10 18:51:35 瀏覽:893
同城網站源碼 發布:2025-05-10 18:47:36 瀏覽:643
怎麼查網易我的世界伺服器ip 發布:2025-05-10 18:46:19 瀏覽:943