• 沒有找到結果。

第二章 遺傳程式規劃

2.1 遺傳程式規劃簡介

遺傳程式規劃是Koza由遺傳演算法發展出的一套自動搜尋使用者定義問題的最佳 解的演算法則,其具有領域獨立的特性[16],在適當使用的條件下,能在解空間自動產 生幾乎完美的規則。既然遺傳程式規劃是承襲遺傳演算法而來,所以大致上運作流程 和想法概念是相同的,皆以仿生物演化機制為基礎,唯獨其所重「規劃」的部分,捨 棄遺傳演算法當中染色體長度固定、只由0、1字串所組成的單調染色體,取而代之的 是可加入元素、架構都更佳彈性的樹狀架構(genotype)[18],遺傳演算法中的染色體的 組成基因可以類比成樹狀架構的節點(node),樹的節點分為兩類:一類是終端節點;另 一類是函數節點。終端節點所能包含元素的集合稱作終端節點集合(terminal set),通常 是函數節點所需要的運算元,依需求可能是變數或常數;函數節點所能包含元素的集 合稱作函數節點集合(function set),其所包含的運算子和函數,依其應用領域的不同,

所代表的可以是邏輯運算(and, or, not)、比較運算(<、>)、算數運算(+、-、

×、÷、√)、數學函數(三角函數、指數函數、對數函數)以及根據問題特性自行定義 的函數。相較於遺傳演算法受限的二元字串,遺傳程式規劃在可表示解的架構與組成 元素具有相當程度的彈性,搜尋空間更大更完整,因此也更方便解決問題。

舉例來說,如圖2.1的算式樹(expression tree)就是一個典型在遺傳程式規劃中使用

的表示法,其中圖2.1(a)的a、b屬於終端集合的常數,x是終端集合的變數;+和×是函 數集合所能使用的算數運算運算子。圖2.1(b)則稍微複雜,m、n依然是終端集合的常 數,唯獨增加了函數集合可使用的元素sin和cos:

a x

+

b

sin cos +

m n

cos sin

m n

(a) (b)

a x

+

b

sin cos +

m n

cos sin

m n

(a) (b)

圖 2.1 算式樹:(a) ax + b(b) sin(m + n)

圖2.1(a)的算式樹可用來求線性回歸線:假設存在n筆資料(x1,y1), (x2,y2),…,(xn,yn),

我們希望求出y對x的線性回歸線y = ax + b,經由最小平方法,就可以找出一組a、b使 得式(2-1)降到最小:

(2-1)

=

+

n

i

i

i mx n

y

1

))2

( (

此題亦可藉由遺傳程式規劃求解,其適存度函數可定為誤差平方和的倒數,如(2-2)所 示:

))2

( (

1 n mx

yii + (2-2)

平方效應可用來凸顯誤差及避免回傳負的適存度,如此,能夠使得誤差平方和越小的 解就越容易被挑中。

由於遺傳程式規劃所需的計算能量相當巨大,直到1990年代只要都還是只能解決 相對解單的問題。然而近幾年來,伴隨著遺傳程式規劃技術的日漸縝密與快速計算所 需的耗費降低,遺傳程式規劃應用層面更加廣泛,也更能解決相對艱澀的問題[19]。

如同以上所討論的,要使用遺傳程式規劃來搜尋最佳解,最重要的是要預先定義 可能解的組成元素以及評估適存度的計算方式:可能解的終端及函數節點集合若其包

7

含的元素不夠豐富,自然地在搜尋空間不夠大的情況下不可能找到全域最佳解,反 之,若終端及函數節點包含的元素過於複雜,尤其是當複雜的函數或甚至其結合體會 使用相當多的節點、族群大小通常也不知該如何因應作調整時的情況發生時,龐大的 計算壓力會造成不成比例的時間及金錢上的耗費,另外,解的複雜度提高使得其可讀 性降低,我們也無法藉由解的形式來瞭解此問題的特性,在找尋交易法則的事例中,

應該也不會有人敢用自己無法理解、和自身經驗扯不上邊的交易法則[22];評估適存度 的計算方式決定了演化方向以及目標,適存度評估是一個人要能夠把他想要的結果恰 當地轉換成遺傳程式規劃能懂的程式語言的途徑,因此相當依賴使用者的領域知識和 經驗,在不同應用領域中,舉例來說,送貨員所能耗費的時間和油料、圖形辨識的準 確度,參數如何最佳化以及電路中控制器的響應,這些問題都要能夠想到一個適當的 適存度函數後才能套用遺傳程式規劃,尤其在許多可能存在的條件限制下要準確定義 是相當困難的。就實際層面考慮一個工程上的問題,當要設計合成一些類比或數位電 路,像是運算放大器、控制器或濾波器時,首先就要先將執行訊號處理的元件的數學 模型建構在函數集合中,像是積分器、微分器、相位落後控制器、相位超前控制器、

加法器、減法器或是更細節像是電容和電感的數學模型等,當要合成一個特定電路時 就必須考慮要把什麼元件和模組引進函數集合中,引進多餘元件和模組徒增等待時間 或在最終解中發現莫名的電路組合;若不足則只能落入局部最佳解,之後透過適存度 函數得到的結果,可能是所需元件的規格,市場上可能買不到或所費不貲,如此可能 又必須回頭琢磨適存度函數。

其餘要決定的還有 遺傳程式規劃所需的控制參數和終止條件:前者最重要的就是 族群數量,其中一個決定的方法就是取決於我們到底想花多少時間與金錢來求解問 題,其餘控制參數還有演化世代數、突變機率、解的最大深度(depth)和節點數以及其 他根據特定問題的領域知識來訂定的參數;後者會依問題不同而改變條件,通常要由 問題的本質來設計,並沒有一個定論什麼條件一定能用或什麼條件一定不能用。

一旦有了解的樹狀結構及組成元素、適存度函數、控制參數和終止條件,遺傳程 式規劃就可以進行其固有的操作模式,經由隨機初始族群,搭配其特有的選擇、交 配、突變操作反覆地改進演化其個體,直到全域最佳解產生。

相關文件