第二章、 研究方法及系統架構
2.2 基因演算法系統
2.2.2 產生
此部分給它起始的 個父代評估函數,產生成 個不同的子 代,其中 。
由於產生新子代的方式有很多,我們把它分成參數變化方式、參 數量、變化量三大項來說明。
參數變化方式有兩種,交配(Crossover)和突變(Mutation)。交 配是選兩個父代產生新的子代,以圖 2-4 為例子箭頭左邊兩個是父代 參數組合,箭頭右邊是產生的子代參數組合,子代的 V1 和 V2 從第二 個父代來,子代的 V3 從第一個父代來。突變是選一個父代變異出新 的子代,以圖 2-5 為例,子代的 V1 和 V3 自己變異,V2 則保持不變。
在基因演算法中,交配的機率較高,突變的機率較低,我們先假 設交配的機率是 70%,突變的機率是 30%,則假設我們要新產生出 100 個參數組合,約有 70 個是交配產生的,約有 30 個是突變產生的。這
n b n
gb
g
n
n
個交配和突變的機率要設定多少較好,在第三章將會有實驗說明和比 較。
圖 2-4 交配(Crossover)
圖 2-5 突變(Mutation)
參數組合中有相當多的參數,一次要修改多少個參數呢?所以我 們把要修改的參數量粗略分成兩大類,SP(Smaller Parameters)一次 修改較少個參數,LP(Larger Parameters)一次修改較多個參數。以 圖 2-6 為例,Initial 中,參數組合有 V1 到 V8 共 8 個參數,修改的 參數量是 SP,則有 V2 和 V7 共 2 個參數改變,參數量較少;修改的參 數量是 LP,則有 V1、V2、V4、V5、V6、V7 共 6 個參數改變,參數量 較多。
當決定好要修改某個參數時,該參數的調整範圍要多少呢?所以 我們把要修改參數的調整範圍粗略分成兩大類,SV(Smaller
Variation)參數調整範圍較小和 LV(Larger Variation)參數調整範 圍較大。以圖 2-7 為例,Initial 中,我們欲修改的參數是 V1,數值 是 50,參數調整為 SV,則可能調整到 48 跟 52 之間的範圍,變化量 較小;參數調整為 LV,則可能調整到 25 跟 75 之間的範圍,變化量較 大。
圖 2-6 SP 和 LP
圖 2-7 SV 和 LV
根據參數量和變化量的選擇,我們現在有 4 種參數的修改方式:
1. SPSV(Smaller-Parameters-Smaller-Variation) 2. SPLV(Smaller-Parameters-Larger-Variation) 3. LPSV(Larger-Parameters-Smaller-Variation) 4. LPLV(Larger-Parameters-Larger-Variation)
參數組合中的大量參數,不論是交配還是突變,都要決定要修改 多少參數和每個參數修改多少,到底參數量和變化量要如何選擇呢?
我們首先考慮到,不適合一次改變太多,因為這樣整個參數組合變化 太大,失去遺傳的作用,好的父代的基因留下的太少,不容易找到更 好的參數組合。也不適合一次改變太少,因為這樣會使整個演化的搜 索過程緩慢,也可能僅找到局部最優就找不到更好的了,整個演化會 很久。
根據以上邏輯,我們選擇用 SPLV 和 LPSV。SPLV 是一次修改較少 個參數,參數調整範圍較大,如圖 2-8 為例,此例子暫時不考慮交配 還是突變,箭頭左邊是父代參數組合,右邊是可能產生的子代參數組 合,可以看到右邊的三個參數組合,改變的參數不多,都約 2、3 個,
而參數調整的範圍很大,從 25 到 75 都有;LPSV 是一次修改較多參數,
參數調整範圍較小,如圖 2-9 為例,可以看到右邊的三個參數組合,
改變的參數很多,都約 5.6 個,而參數調整的範圍很小,只看到從 46 到 53。
SPLV 和 LPSV 是否真的會比 SPSV 和 LPLV 好,我們將會在第三章 做實驗,來驗證這四種方式的好壞。
圖 2-8 SPLV
圖 2-9 LPSV
現在來分別介紹交配和突變的實際情形。首先來講交配,以圖 2-10 為例子,A 是欲改變的參數組合,B 是要往哪個目標參數組合改 變,LPSV 的 A 中參數有 50%的機率會往 B 的方向調整,SPLV 則是 20%
的機率調整,不過圖 2-10 中的調整是完全調整成 B 的參數值,事實 上並不一定是這樣,因為我們不希望參數值只有 A 和 B 兩種,要各種 可能的參數值都有,即使可能性很低還是都要有機會調整到,這樣才 能做到微調的部分。
參數調整範圍以圖 2-11 為例子,A 值、B 值和改變後的值成線性 關係,A 的值欲往 B 方向調整,最正常的調整就是直接變成 B 的值,
不過我們也有可能調整到 A 和 B 之間的值,甚至也有可能會往 B 右邊 改變或直接反向往 A 左邊改變,這種情形比較奇怪,算是交配中的突 變,由於值調整的範圍的合理性不同,我們對每個調整範圍都給一個 機率,在 B 附近和 A 到 B 之間的調整範圍的機率較高,其他調整範圍 的機率較低。而 SPLV 的調整範圍較大,LPSV 的範圍較小。
至於突變,以圖 2-12 為例子,A 是欲調整的參數組合,LPSV 的 A 中參數有 50%的機率會自我變異,SPLV 則是 20%的機率自我變異。自 我變異的方式以圖 2-13 為例子,A 值和改變後的值成倍數關係,比 較正常的變異是放大 1.1 倍、縮小 0.9 倍之類,然而也有可能直接放 大 2 倍、縮小 0.5 倍之類,我們也是對各種調整範圍給不同的機率,
在 A 附近的機率較高,遠離 A 的機率較低。而 SPLV 的調整範圍較大,
LPSV 的範圍較小。
圖 2-10 交配-參數量
圖 2-11 交配-變化量
圖 2-12 突變-參數量
圖 2-13 突變-變化量
先前有提到會一次修改多個參數,在一般情況下,利用機率隨機 挑選參數做改變就可以了,然而我們發現子力位置表的參數間其實有 些關係,隨機挑選的方式可以做些改變。我們看圖 2-14,車的中局 子力位置表,車在上方數來第 4 列、第 6 列,或是從左右數來第 3 行、
第 4 行,車的分數相對其他位置較高,這些位置都是人類棋手認為的 好位置,那些好位置如果要加分,我們會認為那些區塊分數設定應該 同時增加或減少,而不是在同一區塊會有分數加分有分數減分。同樣
地,馬和卒在接近對方帥,容易攻擊到的位置也應該比較高分,棋盤 邊緣位置會比較低分。因此,我們在選擇子力位置表的參數時,並不 使用隨機挑幾個的方式,而想要用隨機挑選區塊的方式。挑選區塊有 個地方要注意,就是雖然同一個區塊,分數的增減要同時,但是區塊 應該呈現交錯的情形,也就是說每個參數的分數增減還是會跟別的參 數不同,不會永遠跟著某個參數變動。
圖 2-14 子力位置表
我們選擇區塊的方式,是先隨機選一點,然後把該點的可走範圍 也包含進去,最後並做左右對稱處理,那些位置就形成一個區塊,如 圖 2-15,有著色的地方就是一個區塊。這個選取區塊的方法是否比 隨機選幾個參數好,將在第三章做實驗比較。
圖 2-15 子力位置表選取方式
選取區塊的方式,會因為兵種不同,而選取改變的參數量不同,