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、迭代次數