• 沒有找到結果。

第二章 文獻探討

第三節 遺傳演算法

本節將簡單介紹遺傳演算法,及其相關的文獻,以及對本研究所引用的演化 機制能有基本的說明。

遺傳演算法(Genetic Algorithms,GA)當初發展時,主要是根據達爾文的

「物競天擇,適者生存」的想法而來,以類似自然生物界中優勝劣敗的演化法則 所建立的一種適應性的搜尋法則(Adaptive Search Procedure)。其最早的起源 要追溯到 50 年代的一群生物學家,以電腦來模擬生物系統。但是一直到 1975 年,

由密西根(Michigan)大學的 Holland 出版了「自然與人工智慧系統的適應演化」

[Holland,1975],並且完成著名的「概型定理」(Schema Theorem)之後,遺傳 演算法才逐漸的廣為人知,並開始大量的應用到各個領域。

近年來遺傳演算法已經成為許多學者經常引用來做最佳化求解的工具,尤其 適合用來處理複雜的非線性問題,且能夠求出所謂的全域最佳解(Global Optimization)或近似最佳解。在進行整個遺傳演算法的搜尋過程前,首先需要 下列的幾個準備步驟︰

1. 先針對問題的型態定義可能發生的解集合,確定解集合參數的搜尋範 圍,並建立編碼(Encoding)與解碼(Decoding)的方式。將這些解集合 編碼成為一種方便演化發生與進行的形式(例如二進位碼、數字、文字 等等)。

2. 編碼完成之後,就可以將之組成一組位元字串(Bit String),這些不同 解集合構成的一個個字串位元可以視為是每個個體本身所擁有的獨特遺 傳基因,而由不同基因所組合而成的每一個個體我們則可視之為一條染 色體(Chromosome)。不同的個體群集則合稱之為族群(Population)。

3. 將原先要解決的問題轉化成對應的函數,這也就是所謂的適應度函數

(Fitness Function),代表族群對其所生存的環境適應能力之績效指 標,不同的個體因各自的基因相異而會有不同的表現,遺傳演算法的目 的就是要找出適應度函數表現最好的基因組合。

4. 產生初始族群,先以隨機或其他方式產生第零代的染色體,稱之為原始 族群,其數量大小視問題的複雜度而決定。

在適應度函數和編碼方式決定以後,遺傳演化的部分則是靠三種類型的運算 子來進行演算法的部分︰複製、交換、突變,依此反覆的運作來達到演化及篩選 的目的,詳細說明如下。

1.複製(Reproduction)

複製類似生物的無性生殖,意即新的子代(Offspring)其基因直接由其 上一代複製,至於應該從親代(Parent)保留多少數目的基因,則是根據 每個個體所得到的適應度函數高低來決定。若某一個體其適應度函數越 高,代表他所擁有的基因組合比較能夠達成我們想要解決的問題,因此其 子代理所當然的應複製多一點與其相同的遺傳基因(即 Bit String 個 數),反之若某個體的適應度函數表現不佳,則我們應限制其基因在族群 中存留下來的個數,甚至將之完全淘汰,這樣才能類似自然界的物競天 擇,並達到整個族群逐漸進化的結果。

2.交配(Crossover)

交配運算子提供了一種新的訊息交換機制,使得族群中的不同個體可以藉 由隨機交配,互換基因並產生新的子代。交配的過程,簡單的說,便是隨 機地或適當地選擇一對交配親代,並彼此交換染色體中的部份基因(Bit String 中的部分 Bits),以其能夠產生比上一代更具適應性的子代。而交 配的演算法一般常用的有下列三種︰

(1)單點交配(One-Point Crossover)

在選出的兩條染色體中,隨機在其中選擇一個切點,然後將兩親代成

對的基因從切點開始的位置全部彼此交換。

(2)雙點交配(Two-Points Crossover)

雖然單點交配的原理是依據生物演化過程而來,但是在邏輯上卻有一 些缺點,例如有時候無法有效的組合染色體中的一些編碼特性。為了 克服這個缺點,因此產生了雙點交配運算法。基本上雙點交配和單點 交配的原理以及操作方式均相同,只是以兩個切點來代替原來的一個 切點。

(3)均勻交配(Uniform Crossover)

均勻交配的運作方式為選擇兩個親代染色體做交配之前,先隨機產生 一和染色體相同長度的位元遮罩(Mask)K,當作交配選擇的指標。當 產生新的子代時,端視 K 中相同位置的位元為 0 或 1,若為 0 則該位置 基因由親代一提供,若為 1 位則由親代二提供。

均勻交配與單、雙點交配運算大致上有下列兩點差異︰一、均勻交配 的作用與染色體在編碼特性上的位置無關。二、單點與雙點交配比均 勻交配具有區域性,產生的子代會比較一致性的保留親代的部分特性。

3.突變(Mutation)

經由複製和交配的運算作用之後,已經可以達到個體演進最佳化的目的,

然而為了防止染色體在複製與交配的過程中,可能遺漏了重要的訊息而落 入區域最佳解(Local Optimal),並避免物種演進的僵化,因此突變的發 生成為了新染色體來源的另一種途徑。然而,突變雖有上述的功能,但也 破壞了正常的繁殖程序,因此突變率通常並不高,但有時候在實際應用 上,為了能較快速地產生適應性強的個體,則有可能將突變率加以提高。

突變的演算法在實作上都是針對個別的基因所發生的,通常是先設定好突 變機率的高低,然後在演化的進行中針對每個基因,隨機選取一個介於 0 與 1 之間的突變指標。若此指標小於預設的突變率,則發生突變;若指標 大於預設突變率,則維持基因型態之原狀。

遺傳演算法具有下列幾個特性[Goldberg,1989]︰

1. 遺傳演算法直接針對變數的基因型態去做運算,意即複製、交配、突變 等運算都是直接作用於編碼過的 Bit String,而不是在原始的變數本身 上操作。

2. 一次搜尋整個群組的變數,為多點搜尋而不是單點搜尋法,其他的搜尋 方法大多一次只搜尋一個解。

3. 遺傳演算法所需要的資訊只有適應性函數的值,不需要其他輔助資訊。

所以可以使用各種型態的適應性函數,例如多目標或非線性函數。

4. 具備盲目搜尋(Blind Search)的特色,因此即使不具備該領域的專業知 識(Domain Knowledge),仍然可以使用遺傳演算法找出效果不錯的可行 解。

5. 遺傳演算法使用機率規則來引導求解,而非使用明確的規格,因此可以 較有效率的得到最佳解。

因遺傳演算法具有迥異於其他演算法的特性,因此當我們應用遺傳演算法作 最佳化設計時,對於如何決定(1)編碼範圍(2)位元長度(3)族群大小(4)

交配機率(5)突變機率(6)適應度函數等部分,都應該要做仔細的考量與取捨,

才能獲得較好的結果。

近幾年來,遺傳演算法這一新興學科已經被應用在許多問題上,例如最佳化 問題、設計、控制和機器學習上。且由於其具有速度快、可靠性高、具彈性等特 性,所以也廣泛地被應用在金融證券市場等複雜系統的模擬方面。Arthur 與 Holland 等人在 1996 年所提出的研究報告中,更是利用聖塔菲研究院(Santa Fe Institute)的 SWARM[Stefansson,1997]模型,以人工生命(Artificial Life)

的 Agent 方式來模擬投資人之間的互動行為,以及據以建構出來的複雜證券市 場。希望藉由這種模擬生態的研究,能對複雜適應性系統的行為模式有更深入的 了解。以下,則探討智慧型代理與人工生命。