多目标优化-NSGAII算法
NSGA-II學習筆記
閱讀文獻:A Fast and Elitist Multiobjective Genetic Algorithm:
NSGA-II
有興趣的話可以閱讀中文翻譯版本:https://wenku.baidu.com/view/61daf00d0508763230121235.html
簡介
從學長那里得知,NSGA-II和MOEAD是多目標優化算法的經典算法,不了解這兩個講點算法,相當于白學了多目標優化算法,很多算法也是基于NSGA-II和MOEAD來進行改進和拓展,從而衍生出一系列算法。
下面我先介紹一下NSGA-II
NSGA-II 是由Deb跟他的學生在2000年提出了NSGA的改進版本。NSGA2采用快速非支配排序以及擁擠距離的策略,時間復雜度在O(MN2)。由于其速度及效果上的優勢,許多年來NSGA2都被作為對比算法。
下面來說一下,NSGA-II相比于NSGA有以下三點改進:
1.提出快速非支配排序算法,是計算復雜度由計算復雜度O(MN^3 )降低為O(MN^2 )
2.引入精英策略,擴大采樣空間。將父代種群與其產生的子代種群組合,共同競爭產生下一代種群,有利于保持父代中的優良個體進入下一代,保證某些優良的種群個體在進化過程中不會被丟棄,從而提高了優化結果的精度。并通過對種群中所有個體的分層存放,使得最佳個體不會丟失,有效提高種群水平。
3.采用擁擠度和擁擠度比較算子,不但克服了NSGA中需要人為指定共享參數的缺陷,而且將其作為種群中個體間的比較標準,使得準Pareto域中的個體能均勻地擴展到整個Pareto域,保證了種群的多樣性。
具體
1.大體算法流程
確定種群大小 n,交叉概率 t,迭代次數 g? 隨機產生 n 個個體,它們整體視為種群 P? for i = 1 to gP’ = ? for j = 1 to n? 產生一個 [0,1] 的隨機數 a? if (a<t)? 從 P 中隨機選出兩個個體作為父母,交叉產生一個新的個體并放入 P’ 中? else? 從 P 中隨機選出一個個體,變異產生一個新的個體并放入 P’ 中? endend利用非支配排序和擁擠距離,從 P∪P’ 中選出 n 個個體, 代替 Pend 輸出最終種群 P 中的**非支配個體**2.快速非支配排序
傳統的NSGA排序方法:計算復雜度O(MN3) ,M為目標個數,N為種群大小。計算第一帕累托前沿時,每個解都要與其他N-1個解比較M次,即比較次數為M*(N-1)*N,則計算的復雜度為O(MN2),
如果按照最壞的打算來看的話,即每個解占一個前沿,每個前沿中只有一個解的時候,則計算的復雜度是O(MN3)。
在經過改進的NSGA-II的快速非支配算法中,計算的復雜度為O(MN2).
在上篇博客已經寫到支配和非支配之間的關系以及表示形式,不熟悉的可以看上一篇博客。
符號含義:
?種群:P(大寫)
?個體:p,q
?NP:支配個體p的個體數量
?SP:被個體p支配的個體集合
根據上圖我們可以分析到對于每個種群P而言,p是屬于P中的,SP所支配的集合不為空,NP一開始為0,如果p支配于q,那么個體q將并入Sp集合中,如果p被q支配,那么NP自動加一,如果NP為0,那么將是帕累托第一前沿,將p并入F1(第一帕累托前沿)。接著,訪問帕累托最優解中S的集合中的解,對每個個體p被訪問后,則所支配的個體q,Nq減一,Qrank=i+1。其中若有解對應n值為0,則保存至下一前沿面Frank+1 ,重復上一步驟,直到所有解都劃分到對應的前沿面中。
同理可得出以下的4.5.6.7.8.9各個點支配情況
我們可以看出1,2,3號點并沒有被支配,所以為第一帕累托前沿Np為0,同理可得,4號點被1,2號支配,Np為2,以此類推,N5=3,N6=2,N7=5,N8=6,N9=5。通過下面這張圖,通過這張可以非常直觀的看到NP和SP的具體情況。
對于4號點,當1號點進行確定后,則1號多支配的4,5,7,8,9的NP-1
以此類推,則可以看到下圖,以及Frank的情況
3.擁擠比較算子
擁擠度
?目的 同一層非支配個體集合中,為了保證解的個體能均勻分配在Pareto前沿,就需要使同一層中的非支配個體具有多樣性,否則,個體都在某一處“扎堆”。NSGA—II采用了擁擠度策略,即計算同一非支配層級中某給定個體周圍其他個體的密度。
?計算 每個個體的擁擠距離是通過計算與其相鄰的兩個個體在每個子目標函數上的距離差之和來求取
就是在目標變量空間,兩個個體在每個子目標函數上的距離差之和來求取擁擠距離。
經過快速非支配排序和擁擠度計算之后,種群中每個個體擁有兩個屬性:非支配等級?rank和擁擠度id
定義偏序<n如下:
4.精英策略
在父代種群p和t代產生的新種群Q中,通過非支配排序可以選擇出帕累托最優解靠前的前沿面Z1,Z2,對于Z3來說,整體數量已經超過N,可以通過擁擠度比較算子來選擇比較優越的個體,從而淘汰不夠優越的個體,最終使得父代獲得一個整體為N 的個體數量。
總結
這是我個人理解的NSGA-II算法大概思想,希望能夠幫到大家,也是初學多目標優化算法,如果有一些不對的地方還請大佬們進行批評指正,同時也借鑒了https://blog.csdn.net/qq_35414569/article/details/79639848 這篇博客,使我受益匪淺。
總結
以上是生活随笔為你收集整理的多目标优化-NSGAII算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 淘宝客推广思维模式(转载)
- 下一篇: 电话号码的写法