多目标进化算法(二)——非支配排序/NSGA-II
多目標(biāo)進(jìn)化算法(二)——非支配排序/NSGA-II
上一節(jié)闡述了多目標(biāo)優(yōu)化問(wèn)題及相關(guān)的基礎(chǔ)知識(shí)。并且舉例說(shuō)明了什么是Pareto最優(yōu)解,也叫非支配解或非劣解。如何比較哪個(gè)解優(yōu)秀是上一節(jié)拋出的話(huà)題,本節(jié)致力于解決這一問(wèn)題。
目錄
- 多目標(biāo)進(jìn)化算法(二)——非支配排序/NSGA-II
- 基礎(chǔ)知識(shí)
- pareto最優(yōu)邊界(PF)
- 舉例說(shuō)明:非支配關(guān)系和支配區(qū)域
- 如何構(gòu)造Pareto最優(yōu)解集:非支配排序
- 快速排序構(gòu)造Pareto最優(yōu)解集
- 提示
- 簡(jiǎn)單做個(gè)總結(jié)
- 舉例闡述排序流程
- 非支配層次關(guān)系
- 拓展
經(jīng)典論文NSGA-II鏈接
基礎(chǔ)知識(shí)
一個(gè)多目標(biāo)優(yōu)化問(wèn)題(MOP)可以被描述如下:
minF(x)=(f1(x),…,fm(x))TΩ=x?Rn∣hj(x)≤0,j=1,…,k設(shè)x=(x1,…,xn)是決策變量,Ω=Π[li,ui]?Rn,i=0,...,n為決策空間;n為決策變量的個(gè)數(shù),li和ui分別為第i個(gè)決策變量的下限和上限。式中有m個(gè)目標(biāo)等待優(yōu)化,表示為f(x)=(f1(x),…,fm(x));f(x)將決策空間Ω映射到目標(biāo)空間Π。min~~F(x) = (f_1 (x),…,f_m (x))^T\\Ω = {x?R^n |h_j (x)≤0,j=1,…,k} \\設(shè)x=(x_1,…,x_n)是決策變量,Ω=Π[l_i,u_i ]?R^n,i=0,...,n為決策空間;\\n為決策變量的個(gè)數(shù),l_i和u_i分別為第i個(gè)決策變量的下限和上限。\\式中有m個(gè)目標(biāo)等待優(yōu)化,表示為f(x)=(f_1 (x),…,f_m (x));f(x)將決策空間Ω映射到目標(biāo)空間Π。 min??F(x)=(f1?(x),…,fm?(x))TΩ=x?Rn∣hj?(x)≤0,j=1,…,k設(shè)x=(x1?,…,xn?)是決策變量,Ω=Π[li?,ui?]?Rn,i=0,...,n為決策空間;n為決策變量的個(gè)數(shù),li?和ui?分別為第i個(gè)決策變量的下限和上限。式中有m個(gè)目標(biāo)等待優(yōu)化,表示為f(x)=(f1?(x),…,fm?(x));f(x)將決策空間Ω映射到目標(biāo)空間Π。
pareto最優(yōu)邊界(PF)
回顧一下上一節(jié)提到的Pareto最優(yōu)解與Pareto最優(yōu)解集。若決策空間中沒(méi)有解能夠支配xa,則稱(chēng)xa是一個(gè)Pareto最優(yōu)解。所有的Pareto最優(yōu)解構(gòu)成Pareto最優(yōu)解集(Pareto-optimal set, PS)。
而Pareto最優(yōu)邊界又是什么?實(shí)際上就是上節(jié)提到的Pareto最優(yōu)前沿PF。提到這個(gè)概念是因?yàn)楹芏喽ɡ矶己推溆嘘P(guān)。多目標(biāo)優(yōu)化是從決策空間到目標(biāo)空間的一個(gè)映射。PS是決策向量空間的一個(gè)子集(也就是可行域中最優(yōu)的那部分),PF是目標(biāo)向量空間的一個(gè)子集。
定理:在目標(biāo)空間中,最優(yōu)解是目標(biāo)函數(shù)的切點(diǎn),它總是落在搜索區(qū)域的邊界上。
舉例說(shuō)明:非支配關(guān)系和支配區(qū)域
簡(jiǎn)單說(shuō)明,我們的目標(biāo)就是找到圖中的A,B,C,D,E,F這幾個(gè)最優(yōu)解,一般利用非支配排序。需要引入幾個(gè)概念輔助講解。
(1)支配區(qū)域:對(duì)于解C,它的的目標(biāo)空間向量與目標(biāo)空間的坐標(biāo)軸的所圍成的區(qū)域即為它的支配區(qū)域,此區(qū)域中的任意解都支配C,如上圖A1區(qū)域所示。同理,A2區(qū)域的所有解都被C所支配。
(2)強(qiáng)非支配和弱非支配:當(dāng)然還存在一些強(qiáng)非支配(比如解B和C)和弱非支配(比如和解C在圖中同橫或豎紅線(xiàn)的解,圖中沒(méi)有哈)的概念區(qū)別,一般用得比較少。
如何構(gòu)造Pareto最優(yōu)解集:非支配排序
構(gòu)造Pareto解集的方法有很多:莊家法,擂臺(tái)賽法,遞歸方法以及用快速排序的方法。前面三種方法都比較好理解,而快速排序的方法是目前普遍使用的算法,本節(jié)主要對(duì)其進(jìn)行分析。
快速排序構(gòu)造Pareto最優(yōu)解集
定義:個(gè)體中非支配關(guān)系用符號(hào)?表示,X支配Y,表示為Y?X。如果互不支配,則兩個(gè)個(gè)體是不相關(guān)的,用符號(hào)?d表示,X?dY。
如果不太清楚快速排序可以參考這個(gè)blog:十大排序算法及優(yōu)化 ( C++簡(jiǎn)潔實(shí)現(xiàn))
提示
特別說(shuō)明“比x小”的含義:個(gè)人喜歡這樣來(lái)理解,在目標(biāo)空間中其適應(yīng)度比x小(在進(jìn)化算法尤其是遺傳算法中,會(huì)按照適應(yīng)度優(yōu)選),當(dāng)然也可以理解成它們?cè)谀繕?biāo)空間中比x差。簡(jiǎn)單來(lái)說(shuō),就是個(gè)體處在x的支配區(qū)域中。
判斷是否存在支配關(guān)系需要從每一維目標(biāo)向量空間進(jìn)行比較。例如,在上述最小化問(wèn)題中,J點(diǎn)的f1和f2都大于x點(diǎn),因此它被x所支配。B點(diǎn)的f1x點(diǎn),但是f2小于x點(diǎn),因此兩者之前不存在支配關(guān)系,值得注意的是這并不代表它們兩個(gè)都是非支配解,是否是非支配解需要和所有的解進(jìn)行比較。
簡(jiǎn)單做個(gè)總結(jié)
(1) 第一輪比較:隨機(jī)選擇一個(gè)個(gè)體X作為基準(zhǔn)數(shù),使用快排根據(jù)支配關(guān)系(相關(guān)性,X?dY)進(jìn)行比較后,即可將種群分成支配(D集合)和非支配(non-dominant,ND集合)的兩個(gè)子種群。
**(2) 第二輪比較:在第一輪比較的基礎(chǔ)上,只用選擇非支配的子種群進(jìn)行排序。**如果X于所有個(gè)體都不相關(guān)那X必然是非支配解,而其他個(gè)體不一定是非支配解。為什么?
因?yàn)?#xff1a;從快排排序原理來(lái)看,我們僅知道經(jīng)過(guò)第一輪排序后,D集合中的個(gè)體一定是被X或者ND集合中的某些個(gè)體所支配(從上圖和支配區(qū)域也可理解)。注意:并不是ND中的所有解都支配D中的解,后面會(huì)舉例說(shuō)明。而ND集合中的元素互相之間的關(guān)系并不清楚,因此還需要進(jìn)行比較,如上圖解A就支配E和F。
(3) 如上圖經(jīng)過(guò)一整輪快速排序后即可知道解之間的支配關(guān)系。
舉例闡述排序流程
我們假設(shè)初始種群為:{X,A,E,F,B,G,H,C,I,J,K,D}。每次以集合第一個(gè)元素為基準(zhǔn)數(shù)進(jìn)行排序。基準(zhǔn)數(shù)左邊表示“小”的個(gè)體。集合中的個(gè)體并沒(méi)有順序(支配關(guān)系)。
第一輪排序:D1集合:{K,J,D} X ND1集合:{A,E,F,B,G,H,C,I}。我們僅知道{K,J,D} 這些個(gè)體被其他所支配。X {A,E,F,B,G,H,C,I}之間的支配關(guān)系并不清楚。
第二輪排序:首先可知ND1集合中的任何一個(gè)個(gè)體不被X支配,但是并不代表ND1中不存在支配X的個(gè)體(比如以I為基準(zhǔn)數(shù),只能得到J為支配解,并且可以發(fā)現(xiàn)B,C,G這些個(gè)體都是支配I的)。通過(guò)X和所有集合ND1中的個(gè)體比較后,發(fā)現(xiàn)X就是非支配解。然后,我們選取ND1集合中的第一個(gè)元素為基準(zhǔn)數(shù)排序:D2集合:{E,F} A ND2集合:{B,G,H,C,I}。
第三輪排序:和第二輪排序操作類(lèi)似,先將A和所有ND2中的個(gè)體比較。然后,選取ND2集合中的第一個(gè)元素為基準(zhǔn)數(shù)排序:D3集合:{G,H,I} B ND3集合:{C},集合中只有一個(gè)元素即可停止。
經(jīng)過(guò)三輪排序?qū)嶋H上Pareto最優(yōu)解集就找到了,即{A,B,C,X},它們?yōu)榈谝粚哟畏侵鋫€(gè)體,從圖中也可以看出。在排序的同時(shí)實(shí)際上D集合也在同時(shí)進(jìn)行排序(操作和上述流程相同),因?yàn)樽罱K我們想要得到的種群個(gè)體的非支配層次關(guān)系。
D集合排序
D1集合:{K,J,D}排序后:{J},K,{D} ;
D2集合:{E,F}排序后:E,{F} ;
D3集合:{G,H,I}排序后:{H,I},G。由于一個(gè)集合中存在兩個(gè)個(gè)體且并不知道支配關(guān)系,因此需要繼續(xù)排序:H,{I}。
對(duì)于D集合的排序是否正確?
看起來(lái)似乎沒(méi)有什么問(wèn)題,但是注意相關(guān)性并不存在數(shù)學(xué)的“傳遞性”的特征(具體可以參照《多目標(biāo)進(jìn)化優(yōu)化》一書(shū)),不能這樣簡(jiǎn)單進(jìn)行排序。
比如J是第幾層的非支配解?通過(guò)上述比較并不知道。究其原因就是因?yàn)樯鲜雠判虻幕鶞?zhǔn)數(shù)不同。因此,需要按照上面找非支配解的流程將集合進(jìn)行整合,重新排序。
注:放在基準(zhǔn)數(shù)的左邊集合為支配解,被基準(zhǔn)數(shù)所支配,但是不一定被右邊集合中的個(gè)體所支配(比如在第一輪排序中,左邊集合的K并不被右邊集合的A支配),不存在傳遞性。
非支配層次關(guān)系
由于我們選擇個(gè)體是按照非支配層次關(guān)系進(jìn)行優(yōu)選的,因此,需要按層次進(jìn)行分類(lèi)。顯而易見(jiàn),同一層中的個(gè)體互不支配。
通過(guò)上述比較可知,第一層非支配解集:P1= {A,B,C,X};
繼續(xù)比較D集合:{K,J,D,E,F,G,H,I},尋找第二層非支配解,請(qǐng)讀者自行推導(dǎo)。
第二層非支配解集:P2= {E,F,G,K,D};可以知道排除第一層次個(gè)體,它們就是非支配解;
第三層非支配解集:P3= {H,I};
第四層非支配解集:P4= {J};
拓展
下節(jié)進(jìn)行代碼實(shí)現(xiàn)。有算法基礎(chǔ)的同學(xué)可能會(huì)思考時(shí)間復(fù)雜度或者說(shuō)是否存在冗余比較。確實(shí)可以?xún)?yōu)化,田野老師團(tuán)隊(duì)提出了改進(jìn)算法,有興趣可以閱讀相關(guān)文獻(xiàn)。
一種用于進(jìn)化多目標(biāo)優(yōu)化的非支配排序的有效方法
多目標(biāo)優(yōu)化的基于樹(shù)的高效非支配排序方法的實(shí)證分析
注:本文圖片摘自《多目標(biāo)進(jìn)化優(yōu)化》一書(shū),其他的排序方法可以查閱此書(shū)。
總結(jié)
以上是生活随笔為你收集整理的多目标进化算法(二)——非支配排序/NSGA-II的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 前端追梦人Cytoscape.js教程
- 下一篇: Windows10下获取PC电脑的机器序