1. 程式人生 > 實用技巧 >【學習筆記】Multi-Objective Differential Evolution Algorithm --MODEA

【學習筆記】Multi-Objective Differential Evolution Algorithm --MODEA

【學習筆記】Multi-Objective Differential Evolution Algorithm --MODEA

正文

差分進化演算法在處理多目標問題(MOP)會遇到很多問題。例如:如何生成新的點,從而更快地收斂到最優帕累託前沿,以及如何替換這些點,以獲得儘可能多樣的解集?
**MODEA演算法是對MDE演算法(一種解決單目標問題優化的演算法)的擴充套件。**在MODEA演算法中,從演算法開始就注意保持種群的多樣性和產生潛在的候選解。除了使用反向學習機制生成潛在的初始點,我們還在變異階段使用了錦標賽最佳過程(或隨機定位過程),以防止搜尋變成純隨機搜尋或純貪婪搜尋。

(一)演算法關鍵點

  1. Opposition Based-Learning(反向學習機制)
  2. Randomized localization(隨機定位)
  3. 引入新的選擇機制----為了產生良好的pareto Font(帕累託前沿)

(二).概念定義

1.Opposition Based-Learning(反向學習機制)
反向學習機制(OBL)背後的主要思想是同時考慮一個估計及其相應的相反估計(即猜測和相反猜測),以便獲取更好的當前候選解。
假設X = (x1,x2,…xn)是n維空間中的一個點,x1,x2,...xn
在這裡插入圖片描述
定義點X的相反點X’=(x1’,x2’,…xn’)根據公式在這裡插入圖片描述
根據相反點(對立點)的定義,我們可以利用反向學習進行優化操作;具體步驟:

  1. 生成N維空間的一個點X和相反點X’
  2. 對兩點的函式適應的進行評估,即計算F(X) AND F(X’)
  3. 進行貪婪選擇,比較F(X) AND F(X’)哪一個更優,將更優的值放在X中;

因此,我們看到該點和它的相對點被同時求值,以便繼續進行更合適的一個。
2. Randomized localization(隨即定位)
從對應於目標解Xi的群體中隨機選擇三個不同的解Xr1、Xr2和Xr3。然後在三個解決方案之間舉行比賽,並探索最佳解決方案周圍的區域。也就是說,如果Xr1是具有最佳適應度函式值的解,則搜尋它周圍的區域,希望得到更好的解。為了方便起見,我們將用Xtb表示錦標賽的最佳解決方案。假設Xtb= Xr1,突變方程(1)變為:

在這裡插入圖片描述
3. Fast nondominated sorting(快速非支配排序)
對於集合S中的每個可行解i,即種群中的每個個體i,計算:

  1. ni(被支配計數):支配當前可行解i的解的個數,即可行解i被多少個解支配
  2. si(支配集):被可行解 i 所支配的解個體的集合。即個體 i 支配別的解的集合

(1) 首先,找到種群中所有 n(i)=0 的個體(種群中所有不被其他個體至配的個體 i),將它們存入當前集合F(1);(找到種群中所有未被其他解支配的個體

(2) 然後對於當前集合 F(1) 中的每個個體 j,考察它所支配的個體集 S(j),將集合 S(j) 中的每個個體 k 的 n(k) 減去1,即支配個體 k 的解個體數減1(因為支配個體 k 的個體 j 已經存入當前集 F(1) );(對其他解除去被第一層支配的數量,即減一

(3) 如 n(k)-1=0則將個體 k 存入另一個集H。最後,將 F(1) 作為第一級非支配個體集合,並賦予該集合內個體一個相同的非支配序 i(rank),然後繼續對 H 作上述分級操作並賦予相應的非支配序,直到所有的個體都被分級。(按照(1)、(2)的方法完成所有分級
4. Crowding distance metric(擁擠距離度量)
擁擠距離被用來獲得在群體中圍繞特定解i的解的密度的估計。它需要根據每個目標函式計算解i臨近的兩個解即(i+1和i-1)的平均距離。

  1. 根據每個目標函式的函式值對種群中的每個個體進行排序(升序)
  2. 對於每個目標函式,邊界解(具有最小和最大函式值的解)被分配一個無限距離值。所有其他中間解被賦予一個距離值,該距離值等於兩個相鄰解的函式值的絕對歸一化差。
  3. 繼續計算其他的目標函式
  4. 每個個體的總擁擠距離值為各個目標函式的擁擠距離值相加(在計算擁擠距離之前,對每個目標函式進行歸一化操作。)

演算法流程

step1. 種群初始化

  1. 在MODEA中,初始種群的生成方式與MDE相似。
  2. 使用均勻隨機分佈生成NP個個體,然後利用反向學習機制生成它們的相反解,共生成2NP解的總體
  3. 從中選擇NP最佳(精英)解。(基於非支配秩和擁擠距離秩來選擇NP解)

**PS.**反向學習機制的意義就是能夠生成更好的初始候選解,通常來說演算法的計算時間與這些初始解距離最優解的距離有關。我們可以通過同時檢查相反的解來提高從更接近最優解的解開始的機會。事實上,根據概率論,50%的時候一個猜想比它的反面猜想離解更遠。
step2. 變異操作
利用隨機定位來進行變異操作。這有助於提高產生的變異向量的勘探和開發能力,確保快速收斂和平衡多樣性。
例如: DE/best/1/
這種策略可以在初始階段提供快速收斂。然而,隨著搜尋過程的進行,它可能會導致種群多樣性的損失,因為它的貪婪性質導致早熟收斂。
DE/rand/1/
這種策略,由於其隨機性,有助於保持多樣性,但可能會導致較慢的收斂。

現在,如果我們看一下隨機定位方法,我們會看到,雖然突變的三個點是隨機選擇的,但基本向量總是被選為具有最佳適應度的向量。這使得它在本質上既不是純粹的貪婪,也不是純粹的隨機,而是提供了一種區域性化的效果,這有助於探索潛在候選人周圍的搜尋空間的不同區域。
step3. 選擇操作
這可能是最重要的階段,因為仔細選擇候選解有助於產生良好的帕累托最優前沿。
MODEA結合了PDEA 和 DEMO;父代個體(目標向量)存在的種群為current population (當前種群)具體步驟為:

  1. 將目標向量和試驗向量進行比較,如果試驗向量支配目標向量,試驗向量直接替換目標向量,並且將原目標向量放入另一個種群advanced population(高階種群);
  2. 如果試驗向量不支配目標向量直接將試驗向量放入高階種群;
  3. 在每個個體比較完了之後,對於高階種群以及當前種群共2NP個個體,從中選擇NP最佳(精英)解。(基於非支配秩和擁擠距離秩來選擇NP解)

演算法虛擬碼、演算法流程圖

演算法C++虛擬碼如圖1:
在這裡插入圖片描述
流程圖如圖2:
在這裡插入圖片描述