Transcript Document

Evolutionary Computation
Genetic Algorithm (GA)
最佳化的設計法則

演化式計算是用來做什麼的?

解決最佳化問題

為什麼要解決最佳化問題?

人的每一天都在做最佳化
每天的行程活動安排…
在有限的伙食費內讓自己吃到最好的…
兼顧課業、愛情與社團的時間分配…
最佳化的設計法則

最佳化的設計法則可分為兩類:



特定型最佳化法則: 由於是針對某些特定的函數特
性所發展出來,因此目標函數 (object function) 必須
滿足某些特性,如線性、非時變、可微分等,微分
法及梯度法屬於此類。
廣義型最佳化法則: 不論目標函數的特性為何,皆
不用修改設計法則,隨機搜尋及基因演算法則皆屬
此類。
就系統效能而言,特定型最佳化法則效率較高
但僅能處理特定問題;廣義型最佳化法則的應
用範圍較廣但效率較低。
最佳化的設計法則

特定型最佳化:
Min (X-1)*(X-2)*(X-3)
利用微分即可找出最小值

廣義型最佳化:
Ex1:Min (X-1)*(X-2)*…*(X-100)
特定型方式無法(或很難)找到最佳解
Ex2:TSP(旅行推銷員)問題
無特定最佳化方式可以求解
TSP問題的例圖
最佳化的設計法則

特定型最佳化:



可以精準的對於適應的題目快速求解
但對於不適應的題目則無法求解
廣義型最佳化:



對於精準的求解可能需要花費較長的時間。
可以在短時間內求出次佳的近似解。
一般應用於不需要極精準的應用問題,如公車排班,
基地台架設,投資組合等等…
基因演算法


基因演算法的基本理論是由 John Holland 於
1975 年首先提出,是基於自然選擇過程的一種
最佳化搜尋機構。
其基本精神在於仿效生物界中物競天擇、優勝
劣敗的自然進化法則。


達爾文進化論:適者生存;不適者淘汰
基因演算法內三個主要的機制



複製 (reproduction)
交配 (crossover)
突變 (mutation)。
基因演算法
應用基因演算法來解最佳化問題的基本精神為:
將 所 要 搜 尋 的 所 有 參 數 編 碼 成 染 色 體
(chromosome)來代表參數的值。
重覆的隨機產生N個染色體,然後依據求解之條
件來設計適應函數 (fitness function)
適 應 函 數 值 高 的 染 色 體 將 被 挑 選 至 交 配 池
(mating pool) 中,此即複製過程,
再依交配及突變過程的運算,即完成一個世代
的演化。如此重覆做下去將能產生適應性最強的
染色體 。
基因演算法



離散(discrete):
二元(binary):
0.3
2.9
3.1
1.5
6.8
…
0
1
1
0
1
…
Ex:f = (X1-1)*(X2-2)*(X3-3)*(X4-4)
其中Xi ∈ [-i , i], 求max(f)
編碼1: 0.3 -1.8 0.4 1.5 fitness:17.29
編碼2: 0.9 0.8 -2.4 -3.5 fitness:4.86
編碼1的適應值比編碼2好
基因演算
法流程圖
複製 (reproduction)-輪盤式選擇

在每一代的演化過程中,首先依每個染色體的
適應值函數大小來分割輪盤上的面積

適應函數值越大則在輪盤上佔有的面積也越大

每個染色體在輪盤上所佔有的面積比例也就代
表其被挑選至交配池的機率

隨機地選取輪盤上的一點,其所對應的物種即
被選中送至交配池中。
複製 (reproduction)-輪盤式選擇
假設在一個適應值越大越好的題目中,有8條染色體,其適應值為:
[3.5 6.4 2.9 8.8 5.4 0.1 9.8 7.3]
正規化後:
[0.079 0.145 0.066 0.199 0.122 0.003 0.221 0.165]
1
2
3
4
5
6
7
8
交配 (crossover)

交配過程是將交配池中的兩個母代染色體彼此
交換資訊,進而組成另外兩個新的物種

交配過程發生的機率由交配率(Crossover rate)所
控制

而交配過程有三種型式



單點交配
兩點交配
遮罩交配
交配
染色體 1
0
1
0
11
11 1
母代
染色體 2
新染色體
11 0
00
1
0
0
子代
單點交配

在所選出的兩染色體中,隨機地選取一
交配點,並交換此交配點後的所有位元。
兩點交配

在所選出的兩染色體中,隨機地選取兩
個交配點,並交換兩個交配點間的所有
位元。
遮罩交配

首先產生與染色體長度相同的遮罩(Mask)當作交
配時的位元指標器,其中字罩是隨機地由 0 與 1
所組成,字罩中為 1 的位元即是彼此交換資訊
的位置。
突變 (mutation)



突變過程是隨機地選取一染色體並且隨機地選取突變
點(基因),然後改變染色體裡的資訊。
突變過程發生的機率由突變率(Mutation rate)所控制。
對於二進編碼的染色體而言就是將字串中的 0 變成 1,
1 變成 0。
突變
染色體 1
新染色體
0
1
0
0
1
1 1
母代
子代
範例:手算範例 (1)





假設所處理的函數是 f(x)=x2,
為了縮小搜尋範圍,將變數 x 的範圍限
制在[0, 32],希望能找到在限制範圍內的
函數最大值
我們選定以五個位元來編碼變數 x
交配機率設定為 1.0
突變機率設定為 0.1
範例:手算範例 (2)

步驟一、產生初始族群:我們設定族群
數目(Population)的大小為 4,隨機地產生
如下表所示四個染色體:
染色體編號
染色體內容
對應之數字
1
2
3
4
01110
11000
10001
00111
14
24
17
7
範例:手算範例 (3)

步驟二、複製:直接以此函數當做為適
應函數
x
f(x)
fi /  f
複製個數
14
196
0.18
1
24
576
0.52
2
17
289
0.26
1
7
49
0.04
0
範例9.1:手算範例 (4)
步驟三、交配 :
第一個染色體被複製一個至交配池中
第二個染色體被複製二個至交配池中
第三個染色體被複製一個至交配池中
第四個染色體被淘汰。

範例:手算範例 (5)


投擲兩枚硬幣,以決定交配池中字串的配對
交配池中的第一個字串與第二個字串交配,第
三個字串與第四個字串交配
交配池
配對
交配點
下一子代
x
f(x)
01110
11000
11000
10001
2
1
4
3
2~5
2~5
4~5
4~5
01000
11110
11001
10000
8
30
25
16
64
900
625
256
範例:手算範例 (6)



步驟四、突變:突變過程的作法是將染色體中
的基因隨機的由 0 變 1 或由 1 變 0。
由於設定的突變率為 0.1,而族群中的基因總
數為族群大小乘上每個染色體的編碼位元數,
也就是 4  5 = 20
因此,族群中將被突變的基因總數為 20  0.1 =
2,亦即,有兩個基因將被突變。我們隨機地
挑選一個字串中的一個基因來作突變,舉例來
說,我們突變第一個字串中的第三個基因,則:
突變前:01000 突變後:01100
範例:手算範例 (7)



步驟五、終止搜尋 :判斷目前的最佳適應涵數
值是否已達所須要的標準
若是,則終止搜尋
若否,則回到步驟二,以進行下一代的演化。
基因演算法之主要特性


基因演算法是以參數集合之編碼進行運算而不
是參數本身,因此可以跳脫搜尋空間分析上的
限制。
基因演算法同時考慮搜尋空間上多個點而不是
單一個點,因此可以較快地獲得整體最佳解
(global optimum),同時也可以避免陷入區域最
佳值 (local optimum)的機會,此項特性是基因
演算法的最大優點。
基因演算法之主要特性

基因演算法只使用適應函數的資訊而不
需要其它輔助的資訊(例如梯度),因此可
以使用各種型態的適應函數,並可節省
計算機資源避免繁複的數學運算

基因演算法使用機率規則方式去引導搜
尋方向,而不是用明確的規則,因此較
能符合各種不同類型的最佳化問題。
基因演算法之細部探討







編碼範圍
字串長度
族群大小
交配機率
突變機率
適應函數之設計
菁英政策
基因演算法之細部探討

編碼及解碼過程 :假設受控系統中有三個參數要編碼,
三個參數值均界於 [0,1] 之間,且每個參數使用五個位
元加以編碼,則二進制字串編碼流程如下:
隨機設定三個變數值於 [0,1] ,假設:
x
1
2
4
, y  5
,z 5
2 1
2 1
2 1
5
則編碼為:  x  00001 


 y  00010 
 z  00100 


最後的字串為: 00001 00010 00100. 而解碼流程則以反
對順序即可完成。
基因演算法之細部探討

字串長度 : 長度越長則精準度越高,但所須的
編碼、解碼運算也相對增加

交配機率 : 交配率越高,則新物種進入族群的
速度越快,整個搜尋最佳值的速度也越快

突變機率 : 突變是一項必須的運算過程,因為
在複製及交配過程中可能使得整個族群裡,所
有染色體中的某一特定位元皆一樣。
基因演算法之細部探討

避免陷入區域最佳值 : 須視所搜尋空間的維度
及參數範圍大小與編碼時所採用的精確度(字串
長度)一起考量

適應函數之設計原則 : 原則上,適應函數須能
反應出不同物種間適應程度的差異即可

搜尋終止之條件 : 對於某些線上即時系統而言;
為了結省時間,當適應函數值到達系統要求後
即可終止搜尋程序。
基因演算法則之細部探討

菁英政策: 在某些特殊情況下,交配後的結果
可能會讓子代比父代差。
例如:11100(父1)
fitness:282
00001(父2)
fitness:12
10001(子1) fitness:172
01101(子2) fitness:132
如果子代完全取代父代,則演化結果反而是退
步的,所以目前大部分的基因演算法會將菁英
政策列為必要步驟。
實數型基因演算法則 (1)

基因演算法則在編碼及解碼的運算上相當地耗
時,尤其是當目標函數參數增多時,編碼及解
碼所需的浮點數運算將嚴重地減緩搜尋程式的
執行速度

而且編碼時所使用的字串長度若不夠,將可能
使基因演算法則雖然搜尋到系統整體最佳值出
現的區域,但由於準確度不足的關係,只能搜
尋到整體最佳值的附近而無法真正搜尋到整體
最佳值。
實數型基因演算法則 (2)

大部份自然界中的最佳化問題的參數型式皆為
實數參數,因此最好是直接以實數參數來運算,
而不是透過離散式的編碼型式

直接以實數運算的好處是,不但可以免去做編
碼及解碼運算,而且可以提高系統準確度。

二元編碼:01001
實數編碼:9
實數型基因演算法則 (3)

實數型的交配過程 : 交配的過程會使得
兩個物種之間的距離變得更近或更遠。
 x 1  x 1   ( x 1  x 2 )

 x 2  x 2   ( x 1  x 2 )
 x 1  x 1   ( x 2  x 1 )

 x 2  x 2   ( x 2  x 1 )
 是隨機選取的微量正實數。
9.7 實數型基因演算法則 (4)

實數型的突變過程 : 突變過程為隨機選取一個
基因,並且加入微量或較大量的雜訊即可;但
加入雜訊後必須確保新的數值仍然保留在所定
的參數範圍中。
x  x  s  random _ noise
其中 s 控制所加入雜訊之大小。
實數型基因演算法的優點



不用作編碼與解碼的繁複動作
克服精確度不足的問題
提高搜尋到整體最佳解(Global best)的機
率
簡化的基地台問題範例


在一個9x9大小的區域架設基地台,每個
基地台能提供所在位置以及周圍8格位置
訊號,基地台使用數量不限。
基地台數量=A,涵蓋範圍=B,適應值計
算方式為B/A + B/81,適應值越大越好。
簡化的基地台問題範例
★
★
★
★
B/A + B/81
A = 4 , B = 29,適應值 = 7.6
適應值設計的意義:
希望基地台數量少(減少成本),但
涵蓋範圍大。
且需要考慮到總涵蓋範圍。
簡化的基地台問題範例(編解碼)
一條染色體有81個基因,每個基因非0即1(二元)。
每一個基因代表區域上的每一個位置(1表示有基地台)。
假設某染色體為[1 0 0 0 1 0 0 0 1 0 0 0 1 …]
★
★
★
解碼完後可以匯出最後的基地分布圖,並可以
★
計算出適應值。
簡化的基地台問題範例(複製)
假設初始染色體有6條,適應值分別為[2.5 4 8.5 3 1 7]
則利用輪盤式選擇挑選染色體進交配池。
PS:在此問題中適應值越大代表解越優良,在解越小越優良的題目
中需設計額外挑選染色體的機制,否則會造成越差的解(適應值越
大)反而越容易被挑選進交配池。
簡化的基地台問題範例(交配)
從交配池挑選父代,並用單點(或兩點或遮罩)交配的方式交配出子
代。
PS:在此題目中對基地台的數量並不設限(至少有一個),所以子代
的基地台數量與父代的基地台數量不一定會一樣。在特殊有設限類
型的題目下,必須設計其他的機制來確保編碼是合理並可以解碼的。
簡化的基地台問題範例(突變與菁英政策)
依照突變率隨機將子代的基因由0變1或1變0。
最後做菁英政策,從N個父代與N個子代中挑出前N個適應值最好的
染色體坐為下一代演化的父代。
演算法結束條件:在一般的題目中,因為最佳解未知,所以會設定
演化3000(自訂)代或300000(自定)個FES為結束條件…
FES:fitness evaluations。
作業(利用GA解8 queen problem)
作業(利用GA解8 queen problem)
不需寫程式,繳交構想即可。
1.如何編碼與解碼?
2.如何設計一個皇后相撞越少則適應值越大的適應值計算方式?
3.染色體的交配方法應該如何設計?
如何確保交配後的染色體可以正常解碼?
4.子代的突變方法應該如何設計?
如何確保突變後的染色體可以正常解碼?