基因演算法(Genetic Algorithms:GA)是一種啟發組合式(heuristic combinatorial)的 最佳化搜尋方法,是最佳化工程計算常用的一種演算工具。於 1970 年由密西根大學 John Holland 教授及他的學生首先提出之演算法則,主要依據生物學家查理.達爾文(Charles Oarwin)在 1859 年出版的 "物種原始" 一書所提出的適者生存理論(Darwinian survival-of-the-fitness philosophy)所發展出來一套演算法則,其基本精神在於模仿生物界 物競天擇、適者生存的自然演化過程,以求得問題最終穩定且最佳的結果。故基因演算 法源自於自然界中"物競天擇"及"適者生存"的特性,模擬生物間的競爭,倖存者得 以繁衍下一代的觀念,藉著對於演化現象的觀察,John H. Holland 認為可以透過把問題 轉為基因型(Genotype),利用競爭-生存以及基因交換-突變,尋求出問題的正確解答[10]。
因此,"生存"、"競爭"、"交配"、"突變"就是整個基因演算法,也可以說是演 化的中心思想。
透過競爭-生存,擁有好基因的品種會有較高的機會生存到下一代,而與生存較無
關的基因則會隨著時間逐漸被淘汰,。在理想的狀態下,競爭-生存會迫使不具優勢的 品種逐漸消失[3][6]。
然而單單擁有一種好基因是不夠的;透過基因的交配,不同的個體可以把它們的好 基因組合起來,變成更具優勢的下一代;而若是組合出來的後代不理想,也只會加速被 淘汰。但交換基因也不能改變現有的基因狀態,還要再配合突變,才能夠產生革命性的 改變,進而對族群進步有突破性的發展[8][14]。
基因演算法與傳統搜尋法最大不同之處在於它是採多點搜尋的方式在參數空間中 同時尋求問題最佳解,在尋找過程中僅需藉由所定義的適合度函數值(Fitness)作為演 化過程中性能指標依據,再經由演化機制-複製、交配、突變,適切地調整搜尋的方向 及區域,使能逐漸搜尋到最佳解,目前基因演算法已經廣泛地被應用於不同領域,如:
物流分配、工程科學應用、人工智慧 ……等等。
基因演算法中,最開始的資料結構隨機產生一些可行的解,在根據這些解所得到的 效用,當作調整這些資料結構,使其不斷的提高效用。Holland 證明出利用基因演算法可 得到最佳解或得到趨近的最佳解[9][10],在傳統找尋最佳解的方法對於一個有很多可能 的問題上很難有進展[7],所以一些關於最佳化的做法,利用一些限制來縮小範圍做出小 範圍的搜尋方法,然而這樣的方法很難應用到實際的問題上面,由於搜尋的範圍太廣而 無法有效使用。
2.2.1 基因演算法理論
基因演算法是模仿生物進化遺傳的過程,因此基因演算法﹕,應用此基本觀念即可 完成演算法之運算。傳統之演算法往往由幾個起始點,依照一定的數學模式產生下一次 疊代值,如此反覆計算求得最佳解;而基因演算法以隨機方式產生許多的點,同時搜尋 最佳解,因為在每一次疊代過程皆是取相對最佳的點,因此只能找到最接近之最佳解。
不過因為其他演算可能也只找到局部最佳解 (Local Optimum) 而不能保證是真正的最 佳解 (Global Optimum)。基因演算法是相當不錯的最佳化運算工具。
基因演算法主要是在許多對於問題的可能的解中搜尋最好的答案[13],一般而言在
基因演算法中關於這些解的表是方式都利用一連串的 0 和 1 來表示,而在問題中用這樣 表示的解,稱之為基因,對於每個基因都會對應到一個目標函數,此目標函數稱之為適 應函數(Fitness Function)。在原來的問題上,一個好的基因會對應到一個很高或很低的 適應函數值(Fitness value),很高或很低由問題的本身需求出最大或最小值決定,對於每 一個基因的強度會顯示在適應函數值上,適應函數值代表基因被帶到下一子代的可能 性。一些基因及其適應函數值的集合稱之為族群(Population),族群將利用基因演算法的 規則產生出每一子代,產生的規則如下:
Genetic Algorithm() {
Initalize population;
While(not terminal condition) {
Selection parents from population; /*Selection*/
Construct offspring by combining parents; /*Crossover*/
Mutation offspring; /*Mutation*/
If suited(offspring) then
Replace worst fit(population) with better offspring;
} }
首先產生隨機產生一個族群,利用初始的族群開始演化,演化之前需設定停止點,在何 種狀況下取得最佳解,然後經過選取(Selection)、複製(Reproduction)、交配(Crossover)、 突變(Mutation)得到下一子代,直到符合停止的條件。
基因演算法中每代產生固定數量的族群,意指只有比較據有優勢的基因會被帶到下個子 代,直到得到最佳或趨近最佳的解才停止搜尋[9],因此在機因演算法中三個主要的運算 子:取(Selection)、交配(Crossover)、突變(Mutation)將在下一節討論。
2.2.3 選擇函式(selection function)
由於每一代的族群大小是固定的,是故只有基因有好的適應函數值,才會被留到下 一子代,這樣的方法比隨機取樣的方式更能得到較快達成目的[7]。
選擇函式(selection function);一般來說,選擇函式都會依照適應函式的分數來作為 判斷依據,但選擇有很多方式,最簡單的就是前面一半就晉級,另外也有依照得分多寡 加權計算機率的,甚至於保送到下一代的方式。選擇函式做的就是"天擇"的動作。
2.2.4 交配
交配主要有兩各動作:首先,從上面選擇函式中得到的集合中,隨機任意取得兩個 基因,第二個動作,將兩個基因利用固定的方法生成兩個新的子代,通常利用單點切割 的方法,先產生單點切割的位置 c,將兩個基因在 c 位元以後的質交換產生下一子代,
例如:假設基因的長度都為 5 個位元,目前挑選到量個基因分別為 x=11111 和 y=10101,
如此時單點切割的位置為 3,則產生新的子代為 11101 及 10111,其示意圖如下圖 6。除 此之外還有其它各種的方法,雙點切割或是平均切割…..等[1]。
1 1 1 1
1 1 1 1 1
1 1 1 1 1 1 1 0 0 1 1
1 0 1 0
1 0 1 0 1
1 1 1 0 0 1 1 1 1 1 1
圖 6:基因演算法單點切割交配
2.2.5 突變
做完前面介紹的選擇函示及交配之後,已產生下一子代,如不做突變,則容易造成 產生只針對部份問題集合的最佳解,而非全區域的最佳解。因為子代都是由前一代所產 生的,故如在隨機初始化的時候,未產生某一種還不錯的組合,則將來一定不會產生,
造成並未找到真正的最佳解。故在已產生的子代需加入突變的方法,來產生非初始集合
內的值。利用突變率來控制基因是否產生突變,例如設定突變率為 0.05,則針對每個基 因內部的位元,產生一個隨機的變數,當其小於突變率時發生突變,將此位元由 0 變 1 或 1 變 0,而突變率的大小將會影響尋找最佳解的速度。
三、問題定義
由前面所提到的目前相關研究,一般而言皆只是提出一、二個影響搬送效能的因 素,找出改善小部份狀況的方法,如此未能考慮大部份的狀況,也沒探討其他因素的影 響。如相關文獻所提出:進入 Stocker 的次數將影響搬送的旅程時間,提出利用生產機 台當做暫存區,有效減少進去 Stocker 的次數及旅程時間,但此方式未考慮機台的使用 率可能會下降的問題。另外,這些研究主要針對在 AGV(Automated Guided Vehicle)搬送 下,因此結果是針對 AGV 的特性,解決多台車單一方向繞行的問題,例如:塞車問題、
搬送遠近的問題、撞車的問題。當使用 RGV 搬送時,由於 RGV 的特性,區域中只有一 台車雙向移動,不同於 AGV,則不產生上述問題。
因此希望針對陣列製程中單一區域,導入一適用於區域特性的搬送策略來選擇搬送 命令,進而提昇區域產能。首先需建立一個盡量符合現實工廠狀況的模擬器,並提出相 關的假設,主要是每次離開此特定區域後再回到區域的時間。製作此模擬器主要目的,
是為了利用模擬器計算此特定區域的總生產時間,再利用生產時間來評估區域產能的大 小,時間愈短表區域產能越高。接著提出搬送策略為命令屬性的線性組合,則線性組合 的所有可能為搬送策略的集合。由於屬性之間的組合複雜且互相牽制,故利用基因演算 法找出較適合的權重,得到一個針對此特定區域較適合的搬送策略,如此一來就可以藉 由此搬送策略提昇區域產能。