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.子代的突變方法應該如何設計?
如何確保突變後的染色體可以正常解碼?