第二章 文獻探討
2.5 基因演算法
基因演算法(Genetic Algorithm,簡稱 GA)是效法生物演化進程的搜尋演算 法(search algorithm),最早由 Holland 與他的研究團隊塑立了基因演算法的研究 基礎[44]。達爾文的生物演化論”物競天擇,適者生存”啟發了基因演算法,
生物透過遺傳物質-基因-將母代的性狀傳給子代,然而個體的基因可以經由交 配來互換,或是透過突變來改變基因內容,使得子代擁有與母代不同的特質與 多樣性(polymorphism),好適應地球多變的環境。基因演算法則試著抽象化生物 演化的過程-交配、突變、遺傳、天擇-應用於工程等各種領域所遇到最佳化的 難題(optimization problem)。
Goldberg 指出基因演算法具有四種特性,優於傳統搜尋演算法[42]:
GA 必須將問題的參數編碼成一串序列,這串序列的內容可以是數字或布林 值(boolean)等,但必須為有限長度。而編碼目的是將每一個可能解從解空 間(solution space)對應到 GA 可以運作的基因型空間(genotype space)。由於 這樣的編碼型式,使得 GA 不受限於傳統演算法的一些限制,例如函數是 否連續、是否可以微分等,這讓 GA 應用的領域更廣泛。
在解空間中(Solution Space),傳統的搜尋演算法只從一個點開始搜尋,若遇 到擁有多個區域最佳解的問題(Multimodal Problem)搜尋很容易侷限於這些 區域解。然而,GA 是以一個母體多點同步搜尋最佳解,如此可以同時保留 多組解,幫助搜尋脫離區域最佳解。
GA 只依賴適應函數(Fitness Function)來評估每組解的好壞,不須要額外關 於解空間的結構資訊,例如 dynamic programming 所能解決的問題,必須擁 有一種特性,那就是父問題可以拆解成數個子問題(sub-problem),此拆解的 動作可以不斷重複直到產生最小的子問題,而各個子問題的最佳解可以組 合成父問題的最佳解,如此一路反方向組合出原本問題的最佳解。然而,
問題若不具有這種可拆解的特性,dynamic programming 就無用武之地。
Holland 提出基模理論(Schema Theorem)[44]做為研究 GA 行為的基礎。基模 (schema) 也就是所謂的建構元件(building block),假設以二元字串(binary string) 來表示 GA 的基因型(genotype),以#為”don’t care”符號,基模的定義為:
k 為字串長度。若 k 等於 5,1###0 就是一個基模,10000、11110 等都是此基模 的實體(instance)。基模的長度定義為字串最前面非 don’t care 符號字元的位置與 最後面非 don’t care 符號字元的位置間的距離,以上一個基模 1###0 為例子,
簡言之,GA 從局部的最佳解(partial solution)慢慢的組合出整個問題的最佳解。
然而,這樣的邏輯會衍伸出一個問題,若一個搜尋問題的最佳解,它的局部解 並不是最好的那麼 GA 還能運作嗎?這就是所謂的 deceptive problem,而許多研 究也試著提出這個問題的解決方法。
Goldberg 依據基模理論提出若要設計成功的 GA,必須先了解幾個關鍵問題 [43]:
瞭解 GA 運作過程就是基模(或稱 Building block)的演化過程。
編碼(encoding)與解碼(decoding):編碼是將解空間(Solution Space)對應到基 因型空間(Genotype Space),也就是將搜尋問題表示成一串序列,序列內容 可以是布林值(boolean)、整數與浮點數(float)等,舉例而言,二元序列的表 示方式即為 ,bє{0,1},通常此序列稱作染色體(chromosome),
也是所謂解的基因型(Genotype),而序列字元稱作基因(gene)。當 GA 運作 完畢,染色體必須解碼回解空間相對應的解。
母體(population):因為基因演算法為多點搜尋,所以母體為運作單位,母 體包含多條染色體。一開始,母體必須初始化,通常是產生亂數的方式初
始化母體每一個基因所表示的值。
適應函數(Fitness Function):適應函數即是最佳化問題的目標函數,它是用 來評估一個染色體的好壞,也是篩選(Selection)所依據的準則。適應函數所 計算的值稱為適應值(Fitness)。
母代篩選(Parent Selection):演化過程中,會篩選適應值較高的母代來繁衍 下一代,而選中的母代則放入交配槽(mating pool)。這一個步驟與存活篩選 (survival selection)是基因演算法選擇壓力(selection pressure)的來源,常見篩 選方式有轉輪法(roulette wheel selection)、競爭法(tournament selection)等。
交配(crossover):交配是隨機從交配槽中選取兩個母代染色體,交換彼此的 基因,藉由交換演化過程中累積的優秀基因,期待產生適應值更高的子代。
而 Goldberg 認為交配是廣域性搜尋[42],簡言之每一次交配,GA 在解空間 中跳要幅度很大,如此可以幫助搜尋跳出區域最佳解(local optimal)。通常 有一個機率值 p 來決定選取的兩個母代染色體是否要進行交配。交配的方 法有單點交配(one-point crossover)、多點交配(multi-point crossover)與均勻 交配(universal crossover)等。
突變(mutation):Goldberg 認為 GA 是利用突變來做區域性搜尋[42],也就 是所謂的 hill-climbing。另外,突變也會將新的基因帶入母體中,從基模理 論的角度,突變可以提供足夠的基模好讓 GA 有機會搜尋到最佳解。突變 的機率通常不會設很大,範圍介於每一代只有一個基因突變到每一染色體 只有一個基因突變。
存活篩選(Survival Selection):經由交配與突變產生的子代,透過存活篩選 取代母體中的母代。取代的方式有整代取代法(Age-Based Replacement)、最 適者取代法(Fitness-Based Replacement)或是精英法(Elitism)。
停止條件(Termination Condition):GA 是不停重複演化過程的迴圈,所以必 須要設定停止條件。常用的停止條件分為兩類,一類是依據時間成本,另
一類是依據收斂程度。依據時間成本的方法有固定 GA 演化代數、固定 GA 適應函數的運作次數或限制 GA 運作的時間;而依據收斂程度的方法,通常 是觀察適應值(Fitness)是否已開始收斂,若收斂的話則停止 GA,或者是觀 察母體中染色體的多樣性(Diversity)是否開始下降,若染色體的基因內容趨 於一致即停止 GA。
圖 2-2 基因演算法流程圖