首先是論文鏈接:https://ieeexplore.ieee.org/document/6045331
中文翻譯參考:https://wenku.baidu.com/view/ca76d69033687e21ae45a915.html#
上計算智能課的英文匯報,周二晚上匯報的,這學期接下來的課就可以不用匯報了,舒服.
大概水一下論文的相關內容.
1、首先什么是遺傳算法,具體的看百度百科,以及一些博客的介紹.
遺傳算法(Genetic Algorithm, GA)是模擬達爾文生物進化論的自然選擇和遺傳學機理的生物進化過程的計算模型,是一種通過模擬自然進化過程搜索最優解的方法。
其主要特點是直接對結構對象進行操作,不存在求導和函數連續性的限定;具有內在的隱並行性和更好的全局尋優能力;采用概率化的尋優方法,不需要確定的規則就能自動獲取和指導優化的搜索空間,自適應地調整搜索方向。遺傳算法以一種群體中的所有個體為對象,並利用隨機化技術指導對一個被編碼的參數空間進行高效搜索。其中,選擇、交叉和變異構成了遺傳算法的遺傳操作;參數編碼、初始群體的設定、適應度函數的設計、遺傳操作設計、控制參數設定五個要素組成了遺傳算法的核心內容。
遺傳算法能夠自我迭代,讓它本身系統內的東西進行優勝劣汰的自然選擇,把好的保留下來,次一點的東西就排除掉。遺傳算法的本質就是是優勝劣汰,選出最優秀的個體,一般用來尋找最優解。
遺傳算法的過程(步驟):
1. Initialization(初始化)
2. Calculate Fitness(計算適應度)
3. Selection (選擇操作)
4. Crossover (交叉操作)
5. Mutation (變異操作)
6. Judge and End(終止條件判斷)
Three basic genetic operations(三個基本遺傳算子):
Selection、Crossover、Mutation
Key Operation(核心):Crossover
放兩張圖參考一下:
(1)選擇操作
Selection(選擇):Use the wheel for selection
對於選擇操作,通常使用輪盤賭選擇,就是按照貢獻率轉轉盤。
假如有5條染色體,他們的適應度分別為5、8、3、7、2。
那么總的適應度為:F = 5 + 8 + 3 + 7 + 2 = 25。
那么各個個體的被選中的概率為:
α1 = ( 5 / 25 ) * 100% = 20%
α2 = ( 8 / 25 ) * 100% = 32%
α3 = ( 3 / 25 ) * 100% = 12%
α4 = ( 7 / 25 ) * 100% = 28%
α5 = ( 2 / 25 ) * 100% = 8%
(2)交叉操作
Crossover(交叉):
(3)變異操作
Mutation(變異):
101 101 001 011 001
001 101 011 011 001
參考博客:
https://baike.baidu.com/item/%E9%81%97%E4%BC%A0%E7%AE%97%E6%B3%95/838140?fr=aladdinhttps://blog.csdn.net/u010451580/article/details/51178225
https://zhuanlan.zhihu.com/p/49055485
https://www.jianshu.com/p/ae5157c26af9
2、多目標優化之帕累托最優
Pareto Optimality for multi-objective optimization(多目標優化之帕累托最優):
Pareto Optimality(帕累托最優):also named Pareto efficiency,It is the ideal state for resource
allocation。There‘s a group of people who allocate resources,to make at least one person better
without making anyone worse。
Pareto Front(帕累托前沿) :The value corresponding to the Pareto Optimal solution is the Pareto Front。
For a problem with two targets(兩目標), the Pareto Optimal solution is usually a line(線).
For multiple targets(多目標), the Pareto Front is usually a hypersurface(超平面).
土鱉式英語,具體意思看百度百科:
https://baike.baidu.com/item/%E5%B8%95%E7%B4%AF%E6%89%98%E6%9C%80%E4%BC%98/1768788?fr=Aladdin
帕累托最優:一群人分配資源,從一個狀態到另一個轉態,在沒有人的情況變的更糟糕的情況下,至少有一個人的情況會變得更好。
帕累托前沿:帕累托最優對應的目標函數的值就是帕累托前沿。
接下來說一下,什么是支配與分支配,以及如何求解帕累托前沿
1)Dominant and non-dominant rank(支配與非支配)
舉個例子,你想買飛機票,既想機票價格便宜,又想飛行時間比較短。
如上圖所示,若表示為機票,既要考慮飛行時長也要考慮機票價格,保證出行最便捷。A與C相比,A耗時為2,花費為7.5;C耗時為3,花費也為7.5,那么方案A要比C優秀,那么A支配C。但是,縱觀全部解,沒有在耗時和花費兩者全部比A優秀的方案,那么就稱A為非支配。
A的耗時為2,花費為7.5;B的耗時為3,花費為6。那么兩者進行對比,A只能在時間上獲勝,B只能在花費上獲勝,但是兩者沒有既在時間又在花費上獲勝的情況。且縱觀全局,沒有在耗時和花費兩者全部比A、B優秀的方案,那么A、B就組成了帕累托最優前沿,D、F類似。因此,得到了下圖。
如圖所示,A、B、D、F判定為帕累托前沿后,將他們放到一邊,暫時不考慮。再在剩下的方案中,再選一組帕累托前沿,依此類推。
就是選出來A、B、D、F之后,這四個屬於rank=1,然后把A、B、D、F從所有的票里面刪掉,然后再從剩下的里面選最好的,然后選出來C、E、G,這是rank=2這一系列里面的,再把C、E、G刪掉,繼續選,無限循環這種操作,最后得到下圖。
步驟:
Non-Dominated Fronts(非支配前沿/帕累托前沿):
Process:
(1)Let i=1;
(2)For j=1,2.......n ,and j ≠ i,Compare the dominant and non-dominant relationship between individual〖 𝒙〗_𝒊 and 𝒙_𝒋(比較支配與非支配關系);
(3) If there is no individual 𝒙_𝒋 is better than 𝒙_𝒊,𝒙_𝒊 is labeled as non-dominant;
(4)Let i = i +1,and go to(2),until end。
參考博客:
https://zhuanlan.zhihu.com/p/54691447
https://blog.csdn.net/cuicanxingchen123456/article/details/88780451
https://blog.csdn.net/qq_39974201/article/details/106770152
https://blog.csdn.net/qq_40434430/article/details/82876572
3、帶精英策略的非支配排序的遺傳算法(NSGA-II)
接下來,什么是NSGA-II。
NSGA-I(非支配排序遺傳算法)、NSGA-II(帶精英策略的非支配排序的遺傳算法)
Both are multi-objective optimization algorithms based on Genetic Algorithms and Pareto Optimal solution discussion(都是基於遺傳算法和帕累托最優解的多目標優化算法).
NSGA-II is improved based on NSGA-I with three main improvements(改進了三個內容):
(1) Fast non-dominated sorting algorithm(快速非支配排序算法);
(2) Congestion and congestion comparison operator(擁擠度和擁擠度比較算子);
(3) Elitist Strategy(精英策略)。
快速非支配排序算法就是前面說的求帕累托前沿。
接下來說一下什么是擁擠度和擁擠度比較算子,以及精英策略是什么。
(1)Congestion(擁擠度)
為了得到種群中特定解周圍的解的擁擠度估計,我們根據每一目標函數計算這點兩側的兩個點的平均距離。這個數值作為以最近鄰居作為頂點的長方體周長的估計(稱為擁擠系數)。
在上圖中,第i個解在它所在前沿面的擁擠系數是它周圍長方體的長度(如虛線框所示),擁擠度的計算保證種群多樣性。
擁擠系數的計算需要根據每一目標函數值的大小的升序順序對種群進行排序(即假如得到第一級非支配層,則對其按照目標函數的大小進行排序,然后計算擁擠度)。因此,對每一目標函數,邊界解(擁有最大和最小值的解)被指定為無窮大距離的值。所有其它中間的解都被指定為等於兩個相鄰解的函數值歸一化后的絕對差值。計算方法對其它目標函數也是這樣。全部擁擠系數值是通過個體每一目標的距離值的加和計算得到的,每一目標函數在計算擁擠系數前都會進過歸一化處理。
具體步驟:
①每個點的擁擠度id置為 0;
② 針對每個目標,對種群進行非支配排序,令邊界的兩個個體擁擠度為無窮,即 od=Id=∞
③ 對其他個體進行擁擠度的計算: 公式如上圖
其中: id 表示 i 點的擁擠度, fj i+1 表示 i+1點的第 j 個目標函數值, fj i-1表示 i -1點的第 j個目標函數值。
(2)Congestion Comparison Operator(擁擠度比較算子)
Two attributes:𝒊_𝐫𝐚𝐧𝐤(級數,即第幾級)和𝒊_𝒅(擁擠度)
擁擠度比較算子就是得到的rank和d這兩個系數。
比較的規則如下:
① 𝒊_𝒓𝒂𝒏𝒌 <𝒋_𝒓𝒂𝒏𝒌
② 𝒊_𝒓𝒂𝒏𝒌 =𝒋_𝒓𝒂𝒏𝒌 and 𝒊_𝒅>𝒋_𝒅
經過前面的快速非支配排序和擁擠度計算之后,種群中的每個個體i
都擁有兩個屬性:非支配排序決定的非支配序𝑙 ̇_rank(級數,即第幾級)和擁擠度𝑖_𝑑。
根據這兩個屬性,可以定義擁擠度比較算子:
個體i與另一個個體 j 進行比較,只要下面任意一個條件成立,則個體i獲勝。
① 如果個體i所處非支配層優於個體 j 所處的非支配層,即i rank<j rank
② 如果他們有相同的等級,且個體i比個體 j 有一個更大的擁擠距離,即i rank=j rank且i d>j d
第一個條件確保被選擇的個體屬於較優的非劣等級。第二個條件根據它們的擁擠距離選擇由於在同一非劣等級而不分勝負的兩個個體中位於較不擁擠區域的個體(有較大的擁擠度i d)。勝出的個體進入下一個操作。
接下來就是精英策略。
(3)Elitist Strategy(精英策略)
首先將第t代產生的新種群Qt與父代Pt合並組成Rt,種群大小為 2N 。然后進行非支配排序,產生一系列非支配集Z1、Z2、Z3...並計算擁擠度。由於子代和父代個體都包含在其中,則經過非支配排序以后的非支配集中包含的個體是子代和父代中最好的,所以先將Z1放入新的父代種群Pt+1中。如果的大小小於 N ,則繼續向新的父代種群中填充下一級非支配集Z2,直到添加Z3時,種群的大小超出 N ,對Z3中的個體使用擁擠度比較算子,使個體數量達到N 。然后通過遺傳算子(選擇、交叉、變異)產生新的子代種群。
說人話,就是父代和子代合在一起,然后利用非支配排序算法得到Z1、Z2、Z3...,Z1是最好的,Z2是次優,依次往下,然后利用規則① 從好的開始往下一代里面加,一直加到數量為N,
如果加到某一級時,圖上是Z3級,Z3級全都加入,那么總的數量超過N,所以使用規則② ,選出來一部分好的加入,正好數量湊夠N,結束了。
參考博客:
https://zhuanlan.zhihu.com/p/57482087
https://www.cnblogs.com/bnuvincent/p/5268786.html
http://www.doc88.com/p-2864919313679.html
OK,以上就是論文中涉及到的相關知識點。
//---------------------------------------------------------我是分割線--------------------------------------------------------------//
接下來就是論文了。
論文大體意思就是使用多目標遺傳算法求解復雜網絡中的社區(廢話,題目就叫這個)
首先理解社區是什么意思,論文中給出了解釋,不解釋了。
然后論文的目的就是想讓社區內關系緊密,社區間關系稀疏。
因為對應的是兩個目標,就是社區內和社區間,這兩個是無法衡量哪一種比較好,所以是多目標問題,所以要用帕累托最優來判斷,通過一系列操作之后,最后通過一個叫模塊度的東西來綜合評價最后誰是最優的。
貼一下組友寫的東西:
如圖所示,我們有一個復雜的網絡,本篇論文所作的工作就是通過MOGA-Net算法識別出復雜網絡中的社區結構,最終得到的結果如右圖所示,左圖的復雜網絡被分成了兩個社區,分別用紅色和藍色結點表示。
(a)Network of ten nodes partitioned in two communities {1, 2, 3, 4, 5, 6} and {7, 8, 9, 10}
(b)Locus-based representation of a genotype.
(c)Graph-based structure of the genotype.
我們的算法使用[43]中提出的基於軌跡的鄰接表示,並在[28]和[38]中用於多目標聚類。在這個基於圖的表示中,一個單獨的個體由N個基因g:.... , gx組成,每個基因可以假設等位基因值j,取值范圍是{[1.....N}。基因和等位基因表示網絡N的建模—一圖G= (V,E中的節點。j值分配給第i個基因被解讀為節點i和 j之間連接。這就意味着在社區解中會發現 i 和 j 在同一個社區。然而,解碼步驟中關鍵是識別對應圖中所有的單獨部分。同一部分中的節點被分配到同一社區。
我們可以通過編碼操作將一個網絡編碼成一個基因型,基因型的長度和網絡中包含的節點個數相同。如圖所示,Position 代表網絡中的節點,Position和Genotype一一對應的關系代表網絡中的連接。比如說Position 1 對應Genotype 5 代表網絡中節點1和節點5通過一條邊互相連接。
We can encode a network into a genotype through the encoding operation. The length of the genotype is the same as the number of nodes in the network. As shown in the figure, Position represents the node in the network, and the one-to-one correspondence between Position and Genotype represents the connection in the network. For example, Position 1 corresponds to Genotype 5, which means that node 1 and node 5 are connected to each other through an edge in the network.
通過解碼操作,我們可以根據Genotype把原始的網絡分割成多個組件,上圖所示的 Genotype 通過解碼操作后就分解成了右圖所示的兩個組件。一個組件就是一個社區。
Through the decoding operation, we can divide the original network into multiple components according to Genotype. The Genotype shown in the figure above is decomposed into the two components shown in the right figure after the decoding operation. A component is a community.
(a) Genotype where the couples (3, 9) and (10, 5) are not edges of the graph reported in Fig. 1(a).
(b) Modified genotype.
初始化過程中考慮網絡中節點的有效連接。產生隨機的個體。然而,如果第 i 個位置的等位基因值是 j,但邊(i,j)不存在,個體j會被替代為與 i 相鄰的節點之一。例如,在圖2(a)在位置3和10分別對應等位基因值9和5。然而邊(3,9)和(10,5)在圖1(a)所示網絡中不存在,因此9被4替代,5被7替代。
Uniform Crossover:均勻交叉
MOGA-Net使用了一個標准均勻的交叉算子。首先,隨機產生一個交叉掩碼,長度為N即節點的數量。通過從掩碼為0對應的第一個父代的基因和掩碼為1對應的第二個父代的基因產生一個子代。利用均勻交叉的主要動機是它能保證維持子代個體中網絡節點的有效連接。事實上,因為有偏倚地初始化,對種群種每個個體,如果基因i包含值j,那么邊(i,j)存在。
突變操作是隨機改變第 I 個基因的值 j,引起搜索空間的一個無效探測,因為和節點連接的上述觀察一樣。因此,一個等為基因能夠假設的可能值被嚴格限制在基因i 的鄰近基因中。例如,考慮圖1(a)中的網絡,第三個位置的基因所允許的等位基因值是2,4,5,6。這種突變操作保證了每個節點只和它的鄰近之一相連的突變子代的后代。
然后就來貼一下偽代碼:
(1)創建一個由長度為 N 的隨機個體組成的種群
While
編碼種群中的每個個體,生成由 k 個組件組成的圖 G 的划分
(2)解碼
(3)通過這兩個公式來評價社區內和社區間
(4)交叉變異
(5)使用模塊度進行最終的綜合評價
結束,就這些內容,水完博客了,該滾去開例會了。
在下告辭 ε=ε=ε=┌(; ・_・)┘