第二章 文獻回顧
2.3 演算法之沿革
演化法最佳化,不僅可以幫助解決各種複雜問題也能協助縮短計算 時間,所以近幾年發展迅速。而許多演算法若依照類型又可以分為兩大 類:
一、 群智慧演算法(Swarm Intelligence, SI)
群智慧顧名思義就是觀察自然界群體活動的現象,主要是模擬了鳥 類、昆蟲、獸群和魚群等群體行為,而群體是利用一種合作的方式 來尋找食物,通過學習自身經驗和其他成員的經驗來不斷地改變搜 尋方向。常見之群智慧演算法有:粒子群演算法、人工魚群演算法、
人工蜂群演算法、蟻群演算法、螢火蟲演算法、重力搜索演算法、
蟑螂演算法等等。其簡述如下:
1. 粒子群演算法(Particle Swarm Optimization, PSO)
粒 子 群 演 算 法 的 概 念 來 自 社 會 群 體 的 行 為 模 擬 , 早 期 是 Kennedy 與 Eberharty(1995)在 1995 年以觀察鳥類或魚類覓 食行為所發展出來的演算法。粒子群演算法中一個粒子代表鳥 群中的一隻鳥各個粒子具有記憶性並會參考其它粒子的訊息來 決定移動的方向。
2. 人工魚群演算法(Artificial Fish Swarm Algorithm, AFSA)
人工魚群演算法最早由 Li 等人(2002)在 2002 年所提出的一 種群智慧演算法。在一片水域中,魚往往能自行或尾隨其他魚 找到營養物質多的地方,因而魚生存數目最多的地方一般就是
10
本水域中營養物質最多的地方,人工魚群演算法就是根據這一 特點,通過人工魚來模仿魚群的覓食、聚群及追尾行為。
3. 人工蜂群演算法(Artificial Bee Colony algorithm, ABC)
人工蜂群演算法是由 Karaboga(2005)於 2005 年所提出的,
其演算法的架構包含工蜂、觀察蜂及偵查蜂。工蜂負責搜索食 物來源並提供食物源的品質訊息給於蜂巢等待的觀察蜂,而觀 察蜂則是依照工蜂所提供的訊息前往搜索,當食物收益度無法 改善時,偵查蜂則是會於隨機的空間進行隨機搜索,以取得新 的食物來源。而人工蜂群也算法也是近年來熱門的演算法之 一。
4. 蟻群演算法(Ant Colony Optimization, ACO)
蟻群演算法是模仿螞蟻覓食行為的演算法,是 1992 由 Colormi 等人(1992)所提出的。螞蟻覓食的時候,若找到食物,在搬 運食物回程的途中會分泌一種特殊的賀爾蒙,告訴其他螞蟻可 以循著該路徑去搬運食物。由於這些賀爾蒙會隨時間的經過而 蒸發,但若有其他螞蟻也循該路徑回來則會繼續分泌賀爾蒙補 強之,因此這些賀爾蒙成為良好的食物指標,讓螞蟻得以同心 協力搬回最多的食物。
5. 螢火蟲演算法(Firefly Algorithm, FA)
螢火蟲演算是由Krishnanand 等人(2005)於 2005 年所提出的。
主要是模擬螢火蟲在求偶時使用亮光互相吸引,在空間中尋找
11
最亮光源的特性來尋找問題的最佳解。螢火蟲演算法包含了三 個規則,第一個規則是螢火蟲不分性別,這樣一個螢火蟲將會 吸引到所有其他的螢火蟲,第二個規則是吸引力與它們的亮度 成正比,對於任何兩個螢火蟲,不那麼明亮的螢火蟲被吸引,
因此移動到更亮的一個,然而,亮度又隨著其距離的增加而減 少,如果沒有其他螢火蟲比目前這隻螢火蟲亮,那目前這隻螢 火蟲就隨機去選擇其他螢火蟲靠近,第三個規則是螢火蟲的亮 度高低是由計算適合度的目標函數來決定,適合度越佳,則螢 火蟲的亮度越亮,越可以吸引到其他螢火蟲。
6. 重力搜索演算法(Gravitational Search Algorithm, GSA)
重力搜索演算法是由Rashedi 等人(2009)在 2009 年所提出。
是一種基於萬有引力定律和牛頓第二定律的一種優化演算法。
自然界中任何兩個粒子都是會互相吸引的,是由粒子之間它們 的引力質量而產生的相互吸引力所遵循的自然規律,利用此規 律能夠快速的找到最佳解。
二、 進化式演算法(Evolutionary Algorithms, EA)
進化式演算法是以大自然中生物的進化操作包含重組、交配、突變、
選擇等。因為在此演算法中,保持群種多樣性是很重要的。最常見 的進化式演算法包含:基因演算法、差分演算法、回溯搜索演算法 等等。其簡述如下:
12
1. 基因演算法(Genetic Algorithms, GA)
基因演算法又被稱為遺傳演算法,是由密西根大學的教授John Holland 所提出的。主要是仿效生物界中適者生存,不適者淘汰 的自然進化機制,主要利用交配、突變與複製來反覆進行世代 進化的演算,進而求解最佳化問題。
2. 差分演算法(Differential Evolution, DE)
差分演算法最早由Storn 等人於 1995 年為了求解柴比雪夫多項 式適切性問題而提出的。也是近年來熱門的最佳化演算法之一。
而差分演算法是以向量為基礎,透過母體中個體間的差異性,
以隨機搜尋的方式將差異向量加到其個體中,再以突變、交配、
選擇來進行最佳化計算。
3. 回溯搜索演算法(Backtracking Search Algorithm, BSA)
本研究所應用之回溯搜索演算法是由 Pinar Civicioglu 於 2013 年所提出,是一種較為新穎的進化式演算法。主要是以選擇I、
突變、交配、選擇II 來進行最佳化演算。有關回朔搜索演算法 之詳細介紹,另詳本研究第四章內容。
13