• 沒有找到結果。

3. 研究方法

3.4 遺傳演算法

為了探究模型組合的最佳化,本研究採用了由 Holland [31]所提出的遺傳演 算法,並同時應用在 Huang and Li [3]中所提出的方法,以選出最適當的權重及各 項閾值並對這些參數進行最佳化。遺傳演算法為一種模擬物種生存模式的演算法,

其主要核心概念為達爾文所提出的「物競天擇,適者生存」的演化與淘汰的觀念。

此演算法模擬生物繁殖後代的過程中,具有較強適應性的個體將比較有機會產生 後代並進行交配及突變來修改基因的組成,促使親代及子代之間產生差異性,而 透過這些差異的特性所產生的生存者在新的環境中較具競爭性以利繼續繁殖,並 將優良的基因延續給下一代。

其中演算法是否滿足終止條件一般可透過以下三種方法來判斷:

[1] 判斷是否收斂:設定收斂值門檻,一旦到達門檻即可停止執行演算法。

[2] 制定終止世代:設定系統執行到特定世代便停止進行演算法。

[3] 時間決定:預先設定演算法可執行時間,時間到達便停止運算。

如不符合中止條件,則將繼續執行演化步驟,直到中止條件滿足為止。

遺傳演算法的主要組成元素有親代、子代及交配與突變方法,及適應性函數 以驅動物種演化的方向,該演算法演化流程如下圖所示:

21

圖二、 基因演算法演化流程圖

3.4.1 基因編碼

本實驗的遺傳演算法編碼採用二進制的位元字串 Huang and Li [3] 來表示,

我們同時也將 Huang and Li [3]所使用的權重編碼也設計進本研究之染色體,該 染色體長度總共為 89 組基因,其中我們將各法則的啟動開關也同時編入了染色 體之中,而每個法則各需 1 組基因來做使用與否的判別,在最後為了讓 GA 理解 量價的大小比較,我們另外編入了一組判斷大小的基因,其詳細說明如下及圖 3 所示:

隨機產生 初始族群

適應性函數計算

檢查是否滿 足終止條件

近似最佳解 選擇與淘汰 否

交配與突變

22

R1: 於基因編碼中使用 1bit 作為此法則的啟動開關。

R2: 於基因編碼中用了 1bit 作為法則開關,及 1bit 作為大於或小於的判別,

並使用 80 個 bits 作為買賣最佳五檔做多及做空之權重編碼。

R3、R4 及 R5 皆使用了相同的編碼:

於基因編碼中用了 1bit 作為法則開關,及 1bit 作為大於或小於的判別。

圖三、 自動演化模型之基因編碼示意圖

3.4.2 解碼

在進行解碼的步驟時,染色體須先從 genotype(基因型)轉換至 phenotype(表 現型),其步驟為將染色體依其長度進行二進位轉換為十進位的比例換算步驟,

經比例換算後即可完成解碼該參數的作業,其中𝑝𝑝値為單個基因對應的 phenotype 參數, 𝑚𝑚𝑎𝑎𝑚𝑚𝑝𝑝 與 𝑚𝑚𝑀𝑀𝑛𝑛𝑝𝑝 表示參數的最大與最小數値,𝑀𝑀表示所對應的十進位數 値,𝑏𝑏表示對單一變數編碼時所用的長度(即位元的數量),其公式如下所示。

𝑝𝑝 = 𝑚𝑚𝑀𝑀𝑛𝑛𝑝𝑝+�2𝑙𝑙𝑚𝑚−1�× �𝑚𝑚𝑎𝑎𝑚𝑚𝑝𝑝− 𝑚𝑚𝑀𝑀𝑛𝑛𝑝𝑝�. (11)

23

3.4.3 選擇及淘汰方法

本 實 驗 採 用 由 Goldberg and Deb [38] 提 出 的 競 賽 選 擇 法 (Tournament Selection) ,使用此方法的原因為此方法產生下一代個體的計算成本較低,由於 高頻交易資料量大,以 GA 尋找最佳解的計算量將大幅提高,因此採用競賽選擇 法對本實驗的效益非常的大。

競賽選擇法的做法是從族群中隨機挑選出 2 條染色體,互相比較之後將此 2 條染色體中適應函數數値較高者保存到下一代族群中,持續這個步驟直到新 的子代之染色體個數達到預定數量,即完成這一代的選擇及淘汰步驟。

3.4.4 交配與突變

本實驗選用的交配法為 De Jong and Spears [39]所提出的單點交配法,交配 發生的機率由交配機率所控制,其作法是經由上個步驟選擇出來的染色體,每 2 條一組進行交配,在交配前先依染色體長度亂數產生一個整數 c,該整數值介於 染色體的長度 n 到 1 之間,之後開始交換位元資訊步驟,進而生成另外兩個新的 染色體而成為子代。

假定 2 條染色體設為父代個體以 𝐺𝐺𝑃𝑃𝑛𝑛𝑥𝑥 與 𝐺𝐺𝑃𝑃𝑛𝑛𝑦𝑦 表示,隨機產生交配點𝑃𝑃,

將兩個父代 𝐺𝐺𝑃𝑃𝑛𝑛𝑥𝑥 與 𝐺𝐺𝑃𝑃𝑛𝑛𝑦𝑦 做交換位元資訊步驟以產生全新染色體 𝐺𝐺𝑃𝑃𝑛𝑛𝑥𝑥 與 𝐺𝐺𝑃𝑃𝑛𝑛𝑦𝑦,這 2 條染色體就是交配後產生的子代,定義公式如下,交配方式如圖四所 示:

𝐺𝐺𝑃𝑃𝑛𝑛𝑥𝑥 = {𝑔𝑔1𝑥𝑥, 𝑔𝑔2𝑥𝑥, ⋯ 𝑔𝑔𝑛𝑛−1𝑥𝑥 , 𝑔𝑔𝑛𝑛𝑥𝑥}, 𝑔𝑔𝑛𝑛𝑥𝑥∈ {0,1}, 𝑛𝑛 ∈ 𝑁𝑁;

𝐺𝐺𝑃𝑃𝑛𝑛𝑦𝑦 = �𝑔𝑔1𝑦𝑦, 𝑔𝑔2𝑦𝑦, ⋯ 𝑔𝑔𝑛𝑛−1𝑦𝑦 , 𝑔𝑔𝑛𝑛𝑦𝑦�, 𝑔𝑔𝑛𝑛𝑦𝑦 ∈ {0,1}, 𝑛𝑛 ∈ 𝑁𝑁;

𝐺𝐺𝑃𝑃𝑛𝑛𝑥𝑥 = �𝑔𝑔1𝑥𝑥, 𝑔𝑔2𝑥𝑥, ⋯ , 𝑔𝑔𝑧𝑧𝑥𝑥, 𝑔𝑔𝑧𝑧+1𝑦𝑦 , … 𝑔𝑔𝑛𝑛−1𝑦𝑦 , 𝑔𝑔𝑛𝑛𝑦𝑦�;

𝐺𝐺𝑃𝑃𝑛𝑛𝑦𝑦 = �𝑔𝑔1𝑦𝑦, 𝑔𝑔2𝑦𝑦, ⋯ , 𝑔𝑔𝑧𝑧𝑦𝑦, 𝑔𝑔𝑧𝑧+1𝑥𝑥 , … 𝑔𝑔𝑛𝑛−1𝑥𝑥 , 𝑔𝑔𝑛𝑛𝑥𝑥�.

24

𝐺𝐺𝑃𝑃𝑛𝑛𝑥𝑥 1 1 0 1 1 0 0 1 𝐺𝐺𝑃𝑃𝑛𝑛𝑦𝑦 1 0 1 0 0 1 1 0

𝐺𝐺𝑃𝑃𝑛𝑛𝑥𝑥 1 1 0 0 0 1 1 0 𝐺𝐺𝑃𝑃𝑛𝑛𝑦𝑦 1 0 1 1 1 0 0 1

𝑃𝑃交配點

圖四、 遺傳演算法交配示意圖

突變過程為隨機選取一條染色體字串,並亂數選取突變點,然後進行改變染 色體字串的位元資訊。突變過程發生的機率由(mutation rate)來決定是否發生,針 對二進制的位元字串而言就是將字串中的 0 變成 1 或者 1 變成 0,突變主要 的目的是為了防止染色體於演化過程中落入局部最佳解的現象,相對於交配的機 率,突變機率通常設定為相對較低的值以避免產生隨機搜尋的現象,如圖五所示:

突變點

𝐺𝐺𝑃𝑃𝑛𝑛′𝑥𝑥 1 1 0 0 0 1 1 0

突變後

𝐺𝐺𝑃𝑃𝑛𝑛′𝑥𝑥 1 1 1 0 0 1 1 0 突變點

圖五、 遺傳演算法突變示意圖

25 們的適應性數值(chromosome fitness)後如表十五:

表十五、 隨機染色體族群之適應值

26

因此,本小節的遺傳演算法範例流程可以用圖六表示:

圖六、 遺傳演算法範例流程圖

在第 i 個世代中,我們利用競賽法從表十五的染色體族群中選出 3 對親代染 色體進行單點交配。其中第一對親代染色體𝑃𝑃1𝑖𝑖與𝑃𝑃4𝑖𝑖,我們假設他們並未通過預 設之交配機率,因此不做交配,僅複製雙方的染色體至突變階段。突變階段中,

我們假設僅𝑃𝑃4′𝑖𝑖與𝑃𝑃1′𝑖𝑖的第三個位元有通過突變機率的檢驗,因此將這兩個位元 翻轉後形成新的染色體𝑃𝑃4′′𝑖𝑖與𝑃𝑃1′′𝑖𝑖,最後由這些染色體形成第 i+1 個世代的新族 群,繼續進行往後之適應性演化。

27

相關文件