• 沒有找到結果。

第二章 文獻探討

在 [2] 中針對越野競賽問題分成許多類也比較其中幾種演算法,而在 [3] 中 除了有主要的分類外還列舉出更多的衍生問題以及歷年解決此問題的演算法。首 先介紹幾種目前具時窗之團隊越野競賽問題的演算法。其次介紹不同種類越野競 賽問題所使用的演算法及其使用的技術。

2.1 具時窗之團隊越野競賽問題

首先此問題使用了兩種不同解的表示方式,我們個別介紹此兩種解的表示方 式並介紹主要使用此表示方式的演算法。

2.1.1 直接路徑表示法

第一種表示方式大部分演算法所使用。其表示方式為,如果我們需要找出 m 個路徑,則我們給予 m 個數列,每個數列第一個點和最後一個點分別代表路徑的 起點與終點,起點與終點之間的數字代表路徑行走的順序。最後我們要得到不違 反時間限制的路徑。這種解的表示方式我們在操作上需要考慮可不可以違反時間 限制。如果解違反時間限制我們稱為不可行解。對解的操作可以考慮都在時間限 制下,或者產生不可行解後再考慮修復至可行解的方法。以下介紹數種使用此表 示方式的演算法。

Vansteenwegen 等人 [4] 以未加入點找尋其最佳的加入位置選擇其一加到路 徑並以刪除連續的點來跳脫區域最佳解。此外記錄了每個點在路徑上最多可延遲

6

的時間,用這資訊快速計算加入點的位置是否違反限制。雖然此方法結果並沒有 比較好,但其執行時間快,在較簡單的問題可以短時間內找出較好的解,而且過 程中沒有隨機性質為確定性演算法。

Labadie 等人 [5] 利用上述產生解的方法加以修改,使用五種不同的程序來 產生不同效果的解,使得每次得到的初始解會不同,接著在使用區域搜尋來改善 解。區域搜尋使用 ELS (Evolutionary local search) 概念,主要為使用類似突變的 程序來擾動解,接著使用區域搜尋法找出其中最好的解。突變程序有一個控制參 數 p,針對每個路徑移除掉連續 p 個點。區域搜尋使用 VND (variable neighborhood

decent procedure) 區域搜尋法。此篇使用兩組鄰域函式,一組為常用的路徑操作 (2-Opt,Or-Opt,2-Opt*,Exchange),另一組有一個控制參數 k,決定從其中一個路徑 移除掉連續 k 個點後從還未加入點中建立出可以加入移除掉的點之間的路徑。

Gavalas 等人 [6] 使用叢集的概念,將問題點使用 global k-means clustering 分成 數個叢集,並且希望獲得的路徑中其點會屬於相同叢集中,減少叢集之間的轉換

。首先修改 Vansteenwegen 等人 [4] 提出加入點的流程,選擇加入點會傾向選擇 相同叢集的點。其次根據路徑中屬於相同叢集的子路徑在要加入點時考慮加入點 的叢集和這些子路徑的叢集關係來設定條件加入。此方法雖然效果沒有很好,但 其目的主要是將各點分區後,減少各區之間的轉換。

7

Hu 和 Lim [7] 將使用區域搜尋後各路徑記錄下來,再利用這些路徑來產生新 的解。演算法主要分為三個部分,前兩個部分是區域搜尋。一種為基本的區域搜 尋,另一種則使用模擬退火法 (simulated annealing, SA),這兩種演算法最後產生 的路經存入 Route Pool 中。最後的流程是路徑組合,從存入的路徑中組合出符合 限制且可以獲得最大的值的解。他們將此問題轉化為線性規劃的問題並使用解線 性規劃的軟體來產生結果。此方法結果雖然在解路徑數只有一個的時候效果不好

,但在路徑數多時可以有很好的效果。

2.1.2 數列表示法

第二種解的表示方式假設問題有 n 個點,則解使用 1…n 的排序數列,再根 據此數列計算出由起點開始,在不違反時間窗而且回到終點時也不違反總時間限 制下可以行經的點,並找出目標的路徑數。此表示方式的好處為在對解進行操作 不需考慮限制問題。而缺點在於即使是不同的數列可能會產生相同的路徑結果,

這會造成經過一些操作得到相同的結果,搜尋的區域因此過大。以下為數種使用 此表示的演算法。

Lin 和 Yu [8] 該論文的解碼方式是起點依照解的數列順序挑選出不違反限制 的點來獲得結果路徑。該文主要使用模擬退火法,使用三種鄰域函式,第一種為 隨機選取兩個點並交換。第二種為隨機選取一點並隨機加入到某一點之後。最後 為隨機挑選兩點將兩點間的數列反轉。此三種方法以相同機率隨機使用。根據模

8

擬退火法終止條件不同而有兩種不同的版本,一種為 FSA (fast SA) 其終止條件 根據執行時間而定。另一種為 SSA (slow SA) 其終止條件以目前最好解沒有改善 的次數。

Guibadj 和 Moulrim [9] 的解碼方式是使用 Bouly 等人 [10] 在解 TOP 所提出 的方法,解的數列依照此方式可以得到我們要求的路徑所行經的點得到的分數是 最大。該文使用文化基因演算法,其方法流程,首先產生族群後在最佳解沒改善 一定代數下中止以下流程。先使用二元競爭法選出兩個親代,接著兩個親代使用

LOX (linear order crossover)產生一個子代,子代根據一定機率會執行區域搜尋。

區域搜尋流程會使用 5 種鄰域函式,以隨機順序決定使用鄰域函式,當所有鄰域 函式無法改善解則此流程停止。各鄰域函式當可以找到更好解時就停止。最後是 環境選擇來更新族群。

2.2 越野競賽其他種類問題

Karbowska-Chilinska 和 Zabielski [11] 使用基因演算法 (Genetic algorithm, GA) 解具時窗之越野競賽問題,本篇為改良之前他們提出的方法,在交配的程序 使用路徑重劃 (path relinking, PR) 的操作。路徑重劃由 Glover [12] 提出,其概念 主要的操作為選擇兩個路徑 R_1 和 R_2,將 R_2 有且 R_1 沒有的點加入至 R_1 中,如果因限制而無法加入則移除 R_1 有且 R_2 沒有的點,移除的點依據計算

profit2/(end – arrive),end 為此點結束時間,arrive 為到達時間,挑選此值最小的

9

移除。最後執行到所有要加入的點加入。產生的子代如果比親代好則取代親代。

Souffriau 等人 [13] 使用路徑重劃解團隊越野競賽問題,雖然不是使用演化 式演算法,但會將路徑重劃後得到較好的解記錄下來,這些解會選擇出來當作與 使用 GRASP 產生的初始解以及初始解經過區域搜尋後得到解做路徑重劃的目標 解。這邊路徑重劃與上一篇操作差別在於加入點先不管時間限制,當所有要加入 的點都加入至路徑後再來修復違反限制的路徑。

10

相關文件