1. 程式人生 > >NSGA 和 NSGA-II 學習筆記

NSGA 和 NSGA-II 學習筆記

參考資料:

CSDN部落格:https://blog.csdn.net/kiding_k/article/details/70147299?locationNum=13&fps=1

Cnblog:https://www.cnblogs.com/bnuvincent/p/5268786.html

基於遺傳演算法的多目標尋優策略的應用研究_李莉:http://kns.cnki.net/KCMS/detail/detail.aspx?dbcode=CMFD&dbname=CMFD2009&filename=2009014373.nh&uid=WEEvREcwSlJHSldRa1FhdkJkVWI3Y2JUZGpaT2lhOTJKRURJQldYRGplMD0=$9A4hF_YAuvQ5obgVAqNKPCYcEjKensW4ggI8Fm4gTkoUKaID8j8gFw!!&v=MzI3MTNKRWJQSVI4ZVgxTHV4WVM3RGgxVDNxVHJXTTFGckNVUkxLZll1ZHJGeTdoVTd6QlYxMjdGN081R3RMTHI=

CSDN部落格:https://blog.csdn.net/u014119694/article/details/77248913?locationNum=6&fps=1

NSGA-II Python 3 參考程式碼:

https://github.com/haris989/NSGA-II/blob/master/NSGA%20II.py

一般多目標規劃問題,都可以建模為尋找Pareto最優解的問題。

NSGA:非支配排序遺傳演算法(Non-dominated Sorting Genetic Algorithm)

種群分層:

Tips:此處存在重複對比情況,即X1 與 X2 進行了兩次對比

虛擬適應度:目標函式值

共享小生境技術:

同一小生境內的種群,適應度互相減小。相似度高的、小生境內個體多的種群適應度減少程度更大。

通過這樣的方式可以保證非支配層的每個個體擁有不同的適應度值。(這個沒有懂)

NSGA-II:帶精英策略的非支配排序遺傳演算法

快速非支配排序演算法:

虛擬碼:

如圖,D點被A和C點支配,所以D點的np為2,A點支配D和E,所以A點的Sp={D,E}。

該排序演算法分級與NSGA中的結果不一樣

擁擠度和擁擠度比較運算元

密度估計:根據每一目標函式計算該點兩側的兩個點的平均距離,該值作為以最近鄰居作為頂點的長方體周長的估計(作為擁擠係數)。如下圖,第i個解的擁擠係數為他周圍長方體的長度(虛線表示)。

計算擁擠係數需要對每一目標函式進行排序。

每個非支配層的邊界的個體擁擠度為無窮。

擁擠度有多種計算方式

1.直接計算長方體邊長

2.需要除以....

擁擠度比較運算元:

主程式:

精英策略:

NSGA-II 程式流程圖

需要輸入的變數是:規模N、迭代次數