• 沒有找到結果。

前一節 5.2 已敘述了 GA 的整個基本流程,本節將更進一步詳述其中的三個重要運算 子的運算技巧:複製(reproduction)、交配(crossover)與突變(mutation)。然而,GA 即 是一個搜尋法則,在面對不同的問題時,其基本流程大致上改變不大,但其中的技巧卻因 題目而異,而有所創新或改變。

首先談到複製,複製的目的即在篩選基因世代(population)中的染色體(chromosome), 使較優良的染色體得以繼續留存,以重組優良的後代。目前應用較為廣泛的為輪盤法

(roulette wheel)[18,9]。顧名思義,輪盤法猶如賭輪中珠子的移動,而珠子最後流得號碼 區數值,就決定了孰勝、孰敗;不同的是,此一輪盤並不是等分格的輪盤,而是根據每個 基因世代中的染色體的評分函數之百分比例設定,即評分函數越高者所佔據的盤面比例越 大,其分格比例可以以下式求得:

=

= s

i i i i

f f

0

Pr (1)

其中fi為第 個染色體由評分函數所評分出來的值, s 為基因世代中染色體的個數,Pri i為第 個染色體被選中的機率。以下舉一實例說明之。

i

範例:假設基因世代大小為 4 個 5 位元字串及其相對應的評分函數值如表 5-1 所示:

編號 染色體 評分值 百分比率 1 01101 169 14.4%

2 11000 576 49.2%

3 01000 64 5.5%

4 10011 361 30.9%

表 5-1 染色體的評分函數與比例值表

表 5-1 中第一個染色體的評分函數值為 169,其佔基因世代適應值總和的百分比為 4

.

1170169 =14 ,其它染色體的百分比以此類推。

那麼要如何選擇輪盤中的分格呢?一般採用均等分佈(uniform distribution)的亂

1 14.4%

3 5.5%

4 30.9%

2 49.2%

圖 5-3 染色體之輪盤各槽大小

數產生器即可以選擇,如上例中首先隨機產生 0 到 100 之間的任意實數,若該數落在圖 4.3 中 0 到 14.4 的區間內,則 1 號的染色體被選中,若介於 14.4 到 63.6 間則表示 2 號染色體 被選中,若介於 63.3 到 69.1 則 3 號染色體被選中,如果是 69.1 到 100 則選擇 4 號染色體。

由此觀點思考,越切合評分函數者,其被選出的機率相對變大,在精神上符合適應者較易 生存的原則。

所謂的交配,簡單來說就是將經由複製完成的染色體,以兩兩配對的方式作部分內容 的交換,以達到訊息交換的目的。其基本理念在於優良的親代會將好的基因遺傳給下一代,

以致於可以創造出適應性更高的物種。交配運算子設計的良莠與否在整個基因演算法中佔 了舉足輕重的地位;交配頻率過高,將造成物種基因的劇烈變化而無法適度保存上一代的 優良基因,但頻率過低也會有停滯在部最佳解上的問題。過去國內外的學者對染色體的交 配方式均多有探討[18,26],以下便就最常見的三者做一簡介。

(1) 單點互換運算子(one-point crossover operator):

一般來說,從生物的觀點上,交配即發生在兩個染色體互相交換(exchange)其部 分之染色體組合。如 John Holland 所提出的單點互換(one-point crossover),乃是經由一 隨機選取的一“切點"(cut point),將染色體分成兩部分,而做兩部分的互換。如圖 5-4 所示,兩個母染色體之最後兩位元互換,而產生子染色體。

對單點互換運算來說,一個重要的特徵即是它可以製造出與母染色體完全不同的下 一代。其次,還有一個重要的特性,即是它無法辨識出在兩母染色體

圖 5-4:單點互換運算子之範例

中相同位置的單一位元之異同。如圖 5-5 所示,兩母染色體組合中,第 2、3、4、5 位元 都有相同的值,即使在發生交配後,兩個染色體的 2、3、4、5 位元的值依然沒有任何改 變。因此,在一個極端的例子下,如兩母染色體完全相同,則單點互換運算子將無任何 作用。

圖 5-5:單點互換運算子特例說明 (2) 雙點互換運算子(two-point crossover operator):

其原理與單點運算子極為相似,但為了增加組合上的多樣性,以兩個分點來取代單 一分點。此運算子最大的優點為可創造單點互換機制下無法創造的基因組合。以下以圖 5-6 說明之:兩個母色體彼此將雙分點之間的基因 00 與 11 互換,而產生子染色體。

圖 5-6 中的的母染色體,若僅由單點運算子進行交配,則會因兩端點的不一致而永遠無 法達成如圖所示的基因組合。理論上而言,雙點運算子已可以含括任

圖 5-6:雙點互換運算子之範例 意的基因組合。

(3) 均一化互換運算子(uniform crossover operator):

許多基因演算法的相關研究者,急欲尋找能有更多切點的運算子,以符合各類的問 題。1989 年,Syswerda 提出均一化交配運算子,允許兩條染色體在單一交配過程中組合 各種基因。均一化交配運算子仍是以兩個親代染色體產生兩個子代染色體,而兩個子染 色體中的位元取決於由隨機亂數的方式產生一個與染色體上基因個數相同的交換基準

(tempate),如圖 5-7 所示,若基準為“1"時,表示第一個子染色體之位元由第一個母 染色體提供,若為“0"時,即表示由第二個母染色體提供,而第二個子染色體則由第一 個子染色體選擇完後的另一個母染色體提供。

圖 5-7:均一化互換運算子範例

均一化交配運算子與前面所提之單、雙點交換運算子最大的不同在於以下兩點:第 一、均一化交配運算子之作用與染色體在編碼特性上的位置無關,不向單、雙切點互換 運算子,有越多的固定位元在切割出的染色體中,則越容易造成子染色體的不完整;相 反的,對於均一化交配運算子來說,在有些狀況下,亦可能造成一個好的染色體組合遭 到大量的破壞。其次,單點與雙點互換運算子較均一化交配運算子具區域性(localalize), 較能一致性的傳承保留住原染色體的特性。

所謂的突變,其意義在擷取一種不可預測的訊息,以防止物種在一連串的複製與交 配的過程中,侷限在一個區域最佳化(local optimial)的環境中無法跳脫。在自然界中,

突變的機率極低,通常只有在百萬分之一左右,雖然是一個很小的機率,卻會帶給物種 革命性的改變,因此善定基因演算法中的突變率,將有助於收斂到最佳解的速度提高及 物種適應力的增強[17]。在實際的運用中,往往都提高突變率,以期望加快產生適應性強 的物種。

圖 5-8:突變運算子範例說明

突變的做法是就母色體的每個基因逐一產生對應的隨機亂數,並依系統突變率

(mutation rate)來控制,若定系統突變門檻值為 0.0001,則當隨機值大於 0.001 時不發

生突變,反之則引導突變發生,如圖 48 之第四個基因發生突變,則子染色體的第四個基 因由原本的 1 轉變成為 0。

相關文件