1. 程式人生 > >【搞搞演算法】用遺傳演算法解決多目標規劃問題_論文閱讀筆記

【搞搞演算法】用遺傳演算法解決多目標規劃問題_論文閱讀筆記

這是2014年4月在其他部落格寫的,轉帖到CSDN的部落格上。

許老師給了很多多目標GA的論文,全英文讀起來比較慢,用Google翻譯+靈格斯詞典解決了詞彙問題,理解起來並不是很難,這也是GA演算法的特點——演算法本身容易理解,演算法知識不全的人(比如我尷尬)也能比較快地運用到不同領域。其中一篇《Multi-objective optimization using genetic algorithms: A tutorial》(Abdullah Konak等,Reliability Engineering and System Safety,2006)剛剛讀完,貼上自己寫的筆記之前,先介紹一些概念。遺傳演算法的基本概念很多,看百度百科就能看懂,這裡只貼上我自己一開始沒明白的概念定義,版權歸百度百科。


小生境(Niche):來自於生物學的一個概念,是指特定環境下的一種生存環境,生物在其進化過程中,一般總是與自己相同的物種生活在一起,共同繁衍後代。例如,熱帶魚不能在較冷的地帶生存,而北極熊也不能在熱帶生存。把這種思想提煉出來,運用到優化上來的關鍵操作是:當兩個個體的海明距離小於預先指定的某個值(稱之為小生境距離)時,懲罰其中適應值較小的個體。

海明距離(Hamming Distance):在資訊編碼中,兩個合法程式碼對應位上編碼不同的位數稱為碼距,又稱海明距離。例如,10101和00110從第一位開始依次有第一位、第四、第五位不同,則海明距離為3。


如果覺得有幫助,用Google學術搜尋應該能找到這篇,在www.sciencedirect.com上也可以找到。讀書筆記如下:

===========================================華麗麗的分割線=========================================
1. Introduction
兩種比較普遍的處理多目標GA的方法:

  • 把所有目標合併成一個目標函式,或者給某個集合只分配一個目標函式,以加權法為例,缺點是很難精確地確定權重,權重分配上一點點的不同可能導致相差很大的解;
  • 確定Pareto解集或其有代表性的子集。
2. Multi-objective optimization formulation
有些問題的Pareto解集很大(可能無界),有效的方法是去找能代表Pareto解集的一系列解(the best-known Pareto set),儘可能滿足3個要求:
  • 儘可能接近真正的Pareto解集,並且理想地應當是Pareto解集的子集;
  • 均勻分佈;
  • 能捕捉到Pareto解集的邊界,也就是能到達目標函式的極端。
3. Genetic algorithms
交叉:讓種群收斂到比較好的表現型;變異:向種群中注入基因的多樣性,防止搜尋過程太快地收斂到區域性最優。
4. Multi-objective GA
通常,不同的多目標GA的差異體現在三個方面:適應度分配過程、精英主義(elitism)和多樣化方法。
5. Design issues and components of multi-objective GA
5.1 Fitness functions

5.1.1 Weighted sum approaches
MBGA:每個個體在計算目標函式值時,各目標函式的權重 w={ w1, w2, ... , wk } 都不同;
RWGA:w={ w1, w2,…, wk } 是隨機的。
優點——容易實現;缺點:如果Pareto解集是非凸的,不是所有的Pareto解都能被搜到。

5.1.2 Altering objective functions

VEGA:並列選擇法。
優點——容易實現,與單目標GA的效率差不多;缺點:種群容易很快地收斂在某一目標上特別好但在其他目標上比較差的解。

5.1.3 Pareto-ranking approaches

某一代中,依據目標函式值的排名(而不是目標函式值本身)給每個個體分配一個適應度。
NSGA-II:在目標函式空間裡,懲罰那些被高密度Pareto解集支配的個體,如:(b)個體i;
SPEA:在目標函式空間裡,給那些在不具有代表性區域內的個體分配更好的適應度,如:(c)個體a,有助於得到更加廣泛、更加全域性分佈的Pareto解集;
Accumulated ranking density strategy :懲罰種群的冗餘,即高密度區域的個體,如:(d)個體i、l、n。


5.2. Diversity: fitness assignment, fitness sharing, and niching
5.2.1 Fitness sharing
在歸一化的目標空間,計算某一代個體之間的歐幾里得距離(Euclidean distance) -> 根據歐幾里得距離,計算小生境數(niche count) -> 每個個體的修正適應度=它的適應度/小生境數。
優點:目標空間裡,密度高的區域內的個體會有較高的小生境數,適應度會因此變小,從而限制了在某個小生境內的快速繁殖;缺點:不好確定小生境的大小(niche size),計算的難度大。
MOGA(保持多樣性的同時逼近真正的Pareto解集的演算法),它計算適應度過程:用NSGA-II的方法計算每個個體的排名 -> 根據排名計算初始的適應度 -> 計算小生境數 ->每個個體的共享適應度(shared fitness value)=它的適應度/小生境數 -> 計算歸一化的適應度。
SPEA2:一個個體的密度定義為離它最近的第k個個體與它的距離的倒數,個體的密度與它的小生境相似,並且確定引數k比確定小生境的大小更直接。

5.2.2 Crowding distance
NSGA-II:為某一代的個體排序並識別非支配解集 -> 計算每個個體針對每個目標函式的擁擠距離(crowding distance) ->計算個體所有目標函式的擁擠距離和,也就是該個體的擁擠距離。
優點:不通過適應度保持多樣性,不需要自己確定引數(比如小生境的大小、k)。通常用作確定最後的選擇個體。

5.2.3 Cell-based density
目標函式空間被分為K維房間(cell),每個房間裡的個體數就是該房間裡每個個體的密度,密度被用來保持多樣性。
PESA:E是記錄非支配解的倉庫,某一代的個體都要根據是否被E中的個體支配,決定是否進入E,從而不斷更新E,然後從E中選出密度小的個體做交叉變異。
PESA-II:選擇的是房間,而不是個體。
RDGA:把目標函式空間分為許多K維房間 -> 更新每個目標函式的房間尺寸 -> 識別每個個體屬於哪個房間,計算密度 -> 按照NSGA方法計算個體的排名 -> 把排名靠前和密度低的個體放到配對池中(兩目標) -> 配對池中,被選擇的父代只與所在房間/相鄰房間中最好的個體交叉,且不允許被父代支配的個體進入房間,如果父代被自己的子代支配,就用子代代替父代。
優點:掌握了全域性的密度分佈,根據全域性的密度搜索會向著密度小的區域進行;比小生境和計算周圍密度的方法效率更高。

5.3 Elitism
精英主義(Elitism)的思想就是最好的個體應當儲存到下一代,多目標GA有兩種方法確保精英主義:

  • 在群體裡儲存精英個體;
  • 另外儲存精英個體,並且把它們重新引入到群體中。
5.3.1 Strategies to maintain elitist solutions in the population
某一代的非支配個體直接複製到下一代,對其餘個體選擇交叉變異繁殖子代,填充到下一代。
缺點:如果某一代的非支配個體和產生的子代數目和,超過了群體大小的限制,這種方法就不行了。下面這些方法中,群體大小是一個重要的引數。
解決方法一:群體中只包含非支配個體,如果群體中個體數目達到上限,就移除(上限-下限)個個體,為了保持多樣性,移除方法是對比兩個隨機選擇的個體的小生境數,將小生境數大的個體從群體中移除。
解決方法二(NSGA-II):對某一代的個體做交叉變異得到子代 -> 這一代和子代合併到一個集合中 -> 將集合中的個體分為k個等級的非支配解集 { F1, F2, …, Fk }  -> 計算每個個體的擁擠距離(按照5.2.2的方法) -> 從F1開始複製到下一代中,直到Ft加入下一代時,下一代的個體數剛好達到或者超過限制,如果超過了限制,就從Ft中選擇擁擠距離小的個體填充到下一代。

5.3.2 Elitism with external populations

用E另外儲存精英個體時,有兩個關鍵問題:
  • E中儲存哪些個體:E儲存非支配個體,且是不斷更新;
  • E有多大:通過剪枝來控制E的大小NE。
SPEA:把E中的個體分配到一個簇(cluster)ci中,所有簇構成C={ c1, c2, …, cM} -> 計算各個簇之間的距離 -> 把兩個距離最近的簇合併成一個簇,重複前述步驟直到簇的個數<=N -> 從每個簇中選擇到該簇中其他個體距離最近的個體,構成新的E,移除E中的其他個體。
SPEA2:把某一代群體Pt和Et合併 -> 計算其中每個個體的適應度 -> 把合併的集合全部複製到E(t+1)中,有兩種情況:如果| E(t+1)|>NE,從E(t+1)移除一部分個體;如果| E(t+1)|,從合併的集合中再複製最好的個體填充。

5.4 Constraint handling

現實生活中的問題通常有一些限制條件,單目標GA從四個方面處理限制條件:
  • 丟棄不可行解;
  • 用懲罰函式降低不可行解的適應度;
  • 構造運算元使得只繁殖可行解;
  • 把不可行解轉變為可行解。
上述第二種方法是最常用的,但不能直接運用到多目標GA中,因為在多目標GA中,適應度是根據一個個體的非支配排名,而不是他的目標函式值分配的。解決方法是從群體中選擇兩個個體x和y,有以下三種情況:
  • 一個可行一個不可行:可行的勝出;
  • x, y都不可行:從群體中的不可行解裡隨機選擇一組構成集合C,計算x, y以及C中所有個體的不可行性,對比x, y和C中最好個體的不可行性,如果x, y一個優於一個劣於最好個體,優於的個體勝出,如果x, y都優於/劣於最好個體,小生境數小的勝出;
  • x, y都可行:從群體中的可行解裡隨機選擇一組構成集合C,如果x, y一個支配C一個至少被C中的一個個體支配,前者勝出,否則小生境數小的勝出。
缺點:計算複雜度和增加的變數(例如,C的大小和小生境的大小),但可以通過調整減少。
Constraint-domination:個體x限制支配個體y,當滿足x可行y不可行/x, y均不可行但x違背的限制條件更少/x, y均可行且x支配y。
Constraint tournament method:按照Constraint-domination的規則,重新定義非支配解集{ F1, F2, …, Fk }為非限制支配解集,執行“選擇”步驟時,對任意兩個個體x, y,如果x所在Fi和y所在Fj滿足i,則x勝出,如果x, y在同一解集中,根據小生境數或擁擠距離決定勝者。優點:變數少,容易融合到多目標GA中。
Dominance-based tournament selection:個體x限制支配個體y,當滿足對每個限制條件x的違背少於或與y相等,且至少有一個限制條件,x的違背少於y。

5.5 Parallel and hybrid multi-objective GA

精英主義和多樣性的保持機制能提高多目標GA的效果,但是通常都會提高計算複雜度和儲存空間,並行和分散式的GA是一種解決方法。
在單目標GA中,本地搜尋演算法的複合是最近用到的一種方法,本地搜尋演算法是:從一個初始個體開始 -> 用簡單的擾動法則產生一些相鄰的解 -> 如果相鄰的解中有個體優於初始個體,替代。
優點:如果初始個體附近的解空間是凸的,查詢區域性最優的效果很好。關鍵點:選擇初始個體;有很多非支配個體時,識別相鄰解中的最優解。
6. Multi-objective GA for reliability optimization
多目標GA的運用
7. Conclusions
這篇論文關注各種多目標GA的構成要素和實現時遇到的突出問題;
Pareto解集需要被削減為一個有代表性的小集合,要使計算保持在合理的層次必須控制它的大小;
實現時必須考慮計算的複雜度,根據問題定製一些東西,例如,邊界、假設、具體的計算方法等。