• 沒有找到結果。

第三章、 研究方法

3.6 地表水地下水聯合營運

3.6.4 禁忌演算法

禁忌演算法屬於啟發式演算法(Heuristic Algorithm)之一,基本概念是由 Fred Glover 於 1977 年所提出(Glover, 1993、Glover, 1999),在 1986 年發表其具體的架 構,不同於過去處理最佳化問題時所使用之試誤法或梯度搜尋法,禁忌演算法是 運用記憶之觀念來導引搜尋,即禁忌名單(Tabu List)之設計,禁忌名單於求解問 題的過程中,可紀錄曾經走過之步驟,做為往後搜尋或移步之依據,禁忌演算法 並設計可跳脫可行解區(feasibility)或是區域最佳(local optimum)之邊界為基礎,避 免造成在求解過程中出現無效的搜尋,進而試圖尋找到全域最佳(global optimum) 的情況。

和回應性探索(responsive exploration)具體化,並以這兩個原則為基礎進行問題 的求解,記住已搜尋過之重要參考點已確定未來搜尋之行進方向,避免走回相同 之路徑,為適應性記憶功能;於搜尋過程中根據記憶環境特性,前一個不好的決 策或解可提供一個比隨機選取一個解之決策更多的訊息,增加執行過程之效率。

禁忌演算法之記憶體形式於應用上可分為短期記憶(short-term memory)與長期記 憶(long-term memory),短期記憶之功能主要為避免重複搜尋及搜尋過程落入循 環,而長期記憶則記錄過去搜尋過區域之頻率,以提供未來搜尋方向參考。

30

反之禁忌名單較短或加入長期記憶時,可較仔細地搜尋過去所經過的區域,則為 強化性的表現。

禁忌演算法中的記憶屬性可包括下列四種:新近式記憶(Recency)、頻率式 記憶(Frequency)、品質式記憶(Quality)、影響式記憶(Influence)(Glover, 1997)。

其中新近式記憶在記錄最近之變動方式,避免重複搜尋相同解;頻率性記憶在記 錄解或變動出現之頻率,為均勻搜尋可行解空間頻率小之變動應有較大機率於後 續變動中被採用;品質式記憶功能在於能夠區別與記錄搜尋過的解好與壞,如於 搜尋過程中記錄曾經找到之最好解,可應用於強化之搜尋策略,導引搜尋回到較 佳之區域進行更深入搜尋;影響式記憶則考慮在搜尋過程中所選擇變動方向對搜 尋結果之影響,對解有較佳改善效果之變動應較容易被選擇,反之對解有較差改 善效果之變動應被盡量禁止選擇。而新近式記憶及品質式記憶之形式,屬於短期 記憶,而頻率性記憶與影響式記憶則偏向長期記憶。

禁忌演算法求解問題之演算流程包括設定初始解、移步、禁忌名單、破禁原 則、停止原則,介紹如下,其演算流程圖可參考圖 3.7:

1.初始解

在已知之可行解區域內,隨機選取或直接給定一組解作為搜尋之起點,此即 為初始解。

2.移步

當初始解進行移步時,首先需決定移步量,由最佳化模式中所有決策變數中 依序選擇一決策變數移動一個單位稱為移步,而每種決策變數經移步後所形成之 解集合定義為此次移步之鄰近解集合,鄰近解數量一決策變數多寡而有所不同。

移步之單位會影響目標函數值,移步單位大小之不同代表搜尋過程解精度之 不同,移步單位較大時,可行解空間較小,搜尋效率較高,但搜尋過程中很可能 因移步步幅過大而錯失全域最佳解位置,搜尋之正確性較低;反之移步單位較小

31

時,解空間精密度較高,有較大機率搜尋至全域最佳解,其搜尋正確性較高,但 解空間的提升將使搜尋的效率較低。

一般禁忌演算法進行移步時會將所有鄰近解與目標函數比較,目標函數數值 改善最為顯著之鄰近解進行移步,若最佳鄰近解已被記憶於禁忌名單中,則選取 鄰近解集合中目標函數值次佳之鄰近解進行移步,如次佳之鄰近解也位於禁忌名 單中,則選取第三佳之鄰近解,以此推類完成移步動作。

3.禁忌名單

禁忌名單(Tabu List)為整個禁忌演算法中之核心,其內容包含名單之形式與 長度,記錄過去搜尋過之狀態,避免重複搜尋相同的解及區域。定義完善之禁忌 名單可提升搜尋之效率,但若禁忌名單定義不當,則會使禁忌演算法無法導引搜 尋路徑往較佳方向前進,使搜尋落入循環。

禁忌名單之定義視問題而定,以禁忌名單之形式來說,如決策變數可變動範 圍不大,可將禁忌名單定義為記錄整組解集合之形式;若決策變數較多,問題為 度較高時,可將名單形式設定為記憶該次移步所移動之決策變數與其變數值,避 免記憶體使用之浪費,且同時有效的達到避免搜尋落入之目的,因為面對高維度 最佳化問題時,決策變數移步至完全相同解集合發生機率不高,如記錄整組解集 合,可能造成禁忌名單無法發揮其效用。

一般維度較大之問題,其搜尋解空間較大,較容易落入區域最佳解,加上搜 尋到相同解集合之機率不高,可設定較長之禁忌名單,而維度較低之問題則適合 較短之禁忌名單長度。

4.破禁原則

破禁原則之目的為破除禁忌名單中之限制,將搜尋路徑帶入未搜尋過的區域,

希望能得到較過去搜尋到之最佳解更好的解,禁忌演算法於演算流程中,會一直

32

紀錄所搜尋過之最佳解,當某一次移步時期最佳鄰近解較所紀錄之最佳解更好,

但該最佳鄰近解卻被記錄在禁忌名單中,則該次移步將被限制無法移動,此時便 可執行破禁原則,強迫接受此一最佳鄰近解,而同時將此最佳鄰近解由禁忌名單 中移除,完成此次移步。

並非所有的禁忌演算法皆須建立破禁原則,破禁原則一般存在於當禁忌名單 之記錄形式只記錄變動之決策變數時,當禁忌名單之形式定義為記錄所有決策變 數時,便不會出現需要破禁的情形,因為當記錄所有決策變數時,不會存在一個 位於禁忌名單中,且目標函數較紀錄之最佳解更好的最佳鄰近解。

除上述之基本破禁原則外,在搜尋過程中,如果目前解落入困境時,也需要 因應產生其他破禁原則,一般搜尋落入困境是發生於目前解位在可行解空間之邊 界,且所有可移步方向皆位於禁忌名單中,使搜尋過成無法進行移步而落入困境。

針對上述狀況,可採用下列幾種不同的破禁原則:(a) 將所有的禁忌名單移除,選 取最佳鄰近解禁行移步及重新記錄禁忌名單。(b) 由鄰近解集合中選取最劣解進行 移步。 (c) 由鄰近解中選取最佳解進行移步,並將該鄰近解由禁忌名單中移除。 (d) 擴大移步單位,直接跳過禁忌名單之限制。(周俊安,2002)

5.停止原則

演算法之停止原則可視求解問題來設定,一般常用之停止原則有兩種,

一為設定最大搜尋次數,若達其次數即可停止,另一則為當目標函數達到預期之 收斂精度時,即停止搜尋。

相關文件