nsga2演算法 NSGA2 遺傳演算法解決多目標優化

2021-10-11 16:55:23 字數 2407 閱讀 9762

進行多目標優化時,通常面臨多個目標函式無法同時達到最優的情況,為了解決這一矛盾,引入pareto-optimality的概念

通常,多目標優化的一般形式為:

經過處理,可以化為以下形式:

其中f1(x),f2(x),...,fn(x)

為目標函式,其全部都是求最小值的形式

以下針對兩個目標函式進行討論:

有幾個目標函式便為幾維空間,有兩個目標函式time(f1(x)),cost(f2(x)),

可以畫出影象:

隨後引入幾個概念:

非支配解:假設任何二解s1 及s2 對所有目標而言,s1均優於s2,則我們稱s1 支配s2,若s1 的解沒有被其他解所支配,則s1 稱為非支配解(不受支配解),也稱pareto解

支配解:若解s2的所有目標均劣於s1,則稱s1優於s2,也稱s1支配s2

,s2為受支配解。

因此現在的首要任務是尋找解空間裡面所有的pareto解,找到所有pareto解之後,這些解組成的平面叫做pareto前沿面(non-dominated front)。在目標函式較多時,前沿面通常為超曲面。

1. 設所有解的集合為s,現從中找出非支配解集合,記為f1

2. 令s=s-f1,從s中再找出非支配解集合,記為f2

3. 重複第二步,直到s為空集

將每次找出的非支配解進行排序如下:

在途中畫出fi集合中對應點,並連線,則構成了n個pareto曲面,分別編號為non-dominated front 1,non-dominated front 2…

以上述**中資料為例:f1=, f2=, f3=

畫出相應圖形:

在第乙個前沿面上的解具有最大的適應度,序數越大則適應度越小。序號小的前沿面上的解可以支配序號大的前沿面上的解。

針對第乙個前沿面來說,其中包含了a,b,d,f四個解,如何評判這四個解的適應度大小呢?由此引入了擁擠度的概念。

擁擠度的計算:

1. 只考慮同一前沿面上的解,設定位於前沿面兩端邊界點的擁擠度為∞。

2. 對於不在兩端的點,其擁擠度主要與其相鄰兩個點有關

擁擠度越小則對應該解越重要

比較通俗的理解:擁擠度越小就說明該解與其他解相似程度不高,保留擁擠度較小的點相當於儲存了解的多樣性

所以說,確定解的適應度大小順序應該先判斷該解在哪個前沿面上,如果在同乙個前沿面上,則再計算擁擠度進行判斷

與普通遺傳演算法步驟大概相同,初始化隨機取幾個解,進行編碼,交叉互換,突變

生成子代

但是,在生成子代後,需要與父代混合,從中挑選出適應度較高的解重新形成子代,再進行新的一輪迭代。

舉例說明:

1.針對乙個兩目標優化問題,初始化隨機取出10個解記為f,經過計算得到子一代為p

此時將p,f混合,形成新的解集s

2.針對s,進行上面所介紹的非支配解排序,計算擁擠度,最終得出這12個解的適應度大小順序,從中取適應度較大的10個點生成新的子代(維持和父代個數相同),帶入演算法進行新一輪迭代

子代父代混合篩選生成新的子代,好像叫做精英策略

任何啟發式演算法均有兩個方面組成:加快收斂的操作和在收斂過程中保持解的多樣性的操作,兩種操作相互作用,以至於找到乙個合適的收斂速度,減少計算時間,同時避免陷入區域性最優

對於nsga來說,其規則仍然符合這兩個準則:

1. 本演算法並不是只取最優的前沿面,而是將所有前沿面均納入考慮範圍內,是為了體現解的多樣性,防止陷入區域性最優

2. 計算擁擠度是為了儲存下來相似程度較低的解,保持解空間的多樣性

3. 使用精英策略是為了加速收斂,更快的除去劣解

NSGA2演算法一

pop size 200 max gen 300 solution company 0,118.719989,32.208781 for n in range pop size location 1,118.77089,32.242341 2,118.77116,32.242325 3,118.75...

NSGA 2學習筆記

分類 演算法 2010 04 17 21 05 341人閱讀收藏 舉報 nsga2主要是對nsga演算法的改進。nsga是n.srinivas 和 k.deb在1995年發表的一篇名為 multiobjective function optimization using nondominated s...

NSGA 2學習筆記

nsga2主要是對nsga演算法的改進。nsga是n.srinivas 和 k.deb在1995年發表的一篇名為 multiobjective function optimization using nondominated sorting genetic algorithms 的 中提出的。該演算...