以多目標與限制最佳化觀點求解競賽旅程問題
73
0
0
全文
(2) 誌謝 首先我要感謝指導教授. 蔣宗哲老師這兩年來的幫助,不管是在研究上或者. 在做人處事上都讓我學到了很多,再來要感謝我的家人對於我求學之路上的支持, 有這些人的支持與鼓勵才讓我順利的完成我的論文。再來特別感謝兩位口試委員, 海洋大學資訊工程學系 許為元老師以及海洋大學電機工程學系 鄭慕德老師,兩 位老師在百忙之中抽空來參加我的口試,並給予建議以及鼓勵,讓本篇論文能夠 更加完善。 另外我要感謝實驗室中的同學,少文、冠廷兩年來在課業與研究上的陪伴以 及幫助,還有實驗室的學弟泳陖、仁一、麒安在口試時的幫助。 最後再次感謝實驗室中的同學們,有各位的陪伴才讓我這兩年的求學過程多 采多姿。. i.
(3) 中文摘要 運動時間表問題 (Sport Timetabling Problem) 一直以來都是一個相當困難的 問題,其影響的因素五花八門,像是運動員的需求、場館間的距離、商業和廣告 的考量等等。其中針對球隊旅行產生了競賽旅程問題 (Traveling Tournament Problem),本論文針對這樣的問題做研究。該問題原本為一個單目標最佳化問題, 本論文將此問題發展為多目標最佳化問題,藉由此方式讓使用者能夠有多元的選 擇,例如選擇一個總距離並非最短,但是能讓所有的隊伍移動距離較為平均的 解。 本論文提出群體式多鄰域模擬退火法 (Population-based Multi Neighborhood Simulated Annealing, PMNSA) ,其中使用變動鄰域搜尋法 (Variable Neighborhood Search) 與隨機選擇鄰域函式做比較,希望能找到一種效能較好的做法,接著使 用模擬退火法 (Simulated Annealing) 以及群體式的 (population-based) 概念去搜 尋,另外也改良過去競賽旅程問題所使用的鄰域函式,並比較其改良前後搜尋解 空間的能力,藉由此方式提高搜尋的效能。在限制處理機制的部分採用原先單目 標常用的懲罰函數 (penalty function) 以及 ϵ-constraint 做比較,並找到一個最適合 此多目標最佳化問題的限制處理機制。最後本論文列出目前找到的多目標最佳解, 以供之後做比較。. 關鍵字:競賽旅程問題、變動鄰域、模擬退火法、限制處理機制、多目標最佳化. ii.
(4) 目錄 誌謝.................................................................................................................................. i 中文摘要......................................................................................................................... ii 目錄................................................................................................................................ iii 附表目錄....................................................................................................................... vii 附圖目錄........................................................................................................................ ix 第一章 緒論................................................................................................................... 1 研究動機................................................................................................. 1. 1.1 1.1.1. 競賽旅程問題................................................................................. 1. 1.1.2. 鏡像競賽旅程問題......................................................................... 3 背景知識................................................................................................. 4. 1.2 1.2.1. 啟發式演算法................................................................................. 4. 1.2.2. 多目標最佳化問題......................................................................... 5. 1.2.3. 限制處理機制................................................................................. 6 研究目的與貢獻..................................................................................... 7. 1.3. 第二章 文獻探討........................................................................................................... 9 2.1. 常見鄰域函式......................................................................................... 9. 2.2. 區域搜尋法........................................................................................... 14 2.2.1. 模擬退火法 [5] [7] [8]................................................................. 14. iii.
(5) 2.2.2. 禁忌搜尋法 [9] ............................................................................ 18. 2.2.3. 螞蟻演算法 [10] .......................................................................... 18. 2.2.4. 迭代區域搜尋法 [11] .................................................................. 19. 2.2.5. 混和式區域搜尋演算法 [12] ...................................................... 23. 群體式搜尋法....................................................................................... 24. 2.3 2.3.1. 基因演算法 [13] .......................................................................... 24. 2.3.2. 文化基因演算法 [14] .................................................................. 25. 第三章 群體式多鄰域模擬退火法............................................................................. 27 3.1. 產生初始化 (Initialize solution) .......................................................... 29. 3.2. 適應度評估 (Fitness function) ............................................................ 29 3.2.1. 多目標處理機制........................................................................... 29. 3.2.2. 限制處理機制............................................................................... 31 3.2.2.1. 懲罰函數............................................................................... 31. 3.2.2.2. ε-constraint ............................................................................. 32. 迭代改良 (Iterative Improvement) ...................................................... 32. 3.3. 3.4. 3.3.1. 迭代改良....................................................................................... 32. 3.3.2. 解評估方式................................................................................... 33. 3.3.3. 鄰域函式....................................................................................... 33 變動鄰域模擬退火法 (Variable Neighborhood Simulated Annealing, VNSA) ...... 33. iv.
(6) 3.5. 更新候選解集合 (Update candidate solution set) ............................... 38. 3.6. 代數改變 (Generation change) ............................................................ 39. 3.7. 終止條件 (Stopping criterion) ............................................................. 39. 第四章 實驗與分析..................................................................................................... 41. 4.1. 測試問題............................................................................................... 41. 4.2. 效能指標............................................................................................... 41. 4.3. 測試環境............................................................................................... 41. 4.4. 參數設定............................................................................................... 42. 4.5. 單目標最佳化實驗............................................................................... 43 4.5.1. 迭代改良與模擬退火法比較....................................................... 43. 4.5.2. 變動鄰域函式與隨機鄰域函式比較........................................... 45. 4.5.3. 改良後鄰域函式與改良前鄰域函式比較................................... 46. 4.5.4. 變動鄰域函式順序比較............................................................... 47. 4.5.5. 策略震盪與無策略震盪比較....................................................... 50. 4.5.6. 懲罰值實驗................................................................................... 50. 4.5.7. 與現有最佳解比較....................................................................... 51. 4.6. 多目標最佳化實驗............................................................................... 52. 4.7. ϵ-constraint 實驗 ................................................................................... 56. 第五章 結論與未來展望............................................................................................. 59. v.
(7) 參考文獻....................................................................................................................... 61. vi.
(8) 附表目錄 圖 1:凌越關係.............................................................................................................. 5 圖 2:SwapHomes 轉換前範例 [5].............................................................................. 9 圖 3:SwapHomes 轉換後範例 [5].............................................................................. 9 圖 4:SwapRounds 轉換前範例 [5] ........................................................................... 10 圖 5:SwapRounds 轉換後範例 [5] ........................................................................... 10 圖 6:SwapTeams 轉換前範例 [5] ............................................................................. 11 圖 7:SwapTeams 轉換後範例 [5] ............................................................................. 11 圖 8:PartialSwapRounds 轉換前範例 [5] ................................................................ 11 圖 9:PartialSwapRounds 轉換後範例[5] .................................................................. 12 圖 10:PartialSwapTeams 轉換前範例 [5] ................................................................ 12 圖 11:PartialSwapTeams 轉換後範例 [5] ................................................................ 13 圖 12:PartialSwapTeams 交換順序範例(修改自 [6] ) ............................................ 13 圖 13:PartialSwapTeams 改良後交換順序範例(修改自 [6] ) ................................ 13 圖 14:初始解選擇範例 [7] ....................................................................................... 16 圖 15:circ4 範例......................................................................................................... 16 圖 16:群體式模擬退火法範例 [8] ........................................................................... 17 圖 17:多邊形法範例 [11] ......................................................................................... 19 圖 18:連續場館矩陣範例 (修改自 [11]) ................................................................ 20. vii.
(9) 圖 19:Game rotation 轉換範例 [11] ......................................................................... 22 圖 20:染色體編碼範例 (修改自 [13]) .................................................................... 24 圖 21:解碼後賽程範例 (修改自 [13]) .................................................................... 24 圖 22:Crossover operator 和 Mutation operator 範例 (修改自[13]) ........................ 25 圖 23:基因範例 [14] ................................................................................................. 25 圖 24:基因解碼範例[14] ........................................................................................... 26 圖 25:BOX Crossover 範例 [14] .............................................................................. 26 圖 26:PMNSA 流程圖 ............................................................................................... 27 圖 27:權重搜尋範圍範例.......................................................................................... 30 圖 28:溫度變化示意圖.............................................................................................. 38 圖 29:PartialSwapRounds 改進範例......................................................................... 40 圖 30:galaxy8 最佳解 ................................................................................................ 55 圖 31:Super6 最佳解 ................................................................................................. 55 圖 32:Super8 最佳解 ................................................................................................. 56. viii.
(10) 附圖目錄 表 1:競賽旅程問題範例.............................................................................................. 2 表 2:鏡像競賽旅程問題範例...................................................................................... 3 表 3:編碼範例............................................................................................................ 28 表 4:初始溫度設定.................................................................................................... 42 表 5:參數設定............................................................................................................ 43 表 6:Gstop 參數設定.................................................................................................... 43 表 7:迭代改良與模擬退火法實驗結果.................................................................... 44 表 8:變動鄰域函式與隨機鄰域函式實驗................................................................ 45 表 9:隨機鄰域函式使用改良鄰域實驗.................................................................... 46 表 10:變動鄰域函式使用改良鄰域實驗.................................................................. 46 表 11:變動鄰域函式鄰域順序實驗 I ....................................................................... 48 表 12:變動鄰域函式鄰域順序實驗 II ...................................................................... 49 表 13:變動鄰域函式鄰域順序實驗 III..................................................................... 49 表 14:策略震盪與無策略震盪實驗.......................................................................... 50 表 15:懲罰值比較表.................................................................................................. 51 表 16:與部分文獻比較表.......................................................................................... 52 表 17:多目標最佳化實驗.......................................................................................... 53 表 18:隨機鄰域函式策略最佳解.............................................................................. 54. ix.
(11) 表 19:ϵ-constraint 實驗 .............................................................................................. 57 表 20:ϵ 係數比較表 ................................................................................................... 57. x.
(12) 第一章. 緒論. 1.1 研究動機 1.1.1. 競賽旅程問題. 在職業運動聯盟中,像是美國大聯盟 (MLB)、美國國家籃球協會 (NBA) 等 等,每年都必須要排出當年的新賽程,而因為地點、廣告、運動員個人需求、贊 助商等等原因,安排賽程變成一件相當複雜的事情,進而衍生出了運動時間表問 題,而競賽旅程問題 [1] 為一種針對旅程總距離最佳化的排程問題。 競賽旅程問題表述如下:n 個隊伍 (teams) 集合為{T1,…,Tn},其中 n 必定為 一個偶數,在一個賽程中每一個隊伍會跟另一個隊伍比賽兩次,一場在主場 (home) 而另一場在另一個隊伍的主場也就是客場 (away),所以總共需要 2(n1) 回合 (rounds) 集合為{R1,…,R2(n1)}來表示所有的比賽,這樣的比賽又稱為雙循環 賽 (double round-robin tournament)。此外會有一個對稱的 n × n 陣列 D,此陣列代 表各隊主場之間的距離,例如:dij 代表隊伍 i 主場到隊伍 j 主場的距離。此問題 的目標在於希望能找到一個最短的旅行總距離 (total travel distance),並且滿足以 下兩個限制: (1) 連續限制 (Atmost Constraint):一個隊伍不能有連續四場以上的主場或 客場比賽。 (2) 重複限制 (NoRepeaters Constraint):隊伍 i 與隊伍 j 不能夠連續對戰。. 1.
(13) 競賽旅程問題範例如表 1 所示: 表 1:競賽旅程問題範例. T1 T2 T3 T4. R1 T3 T4 -T1 -T2. R2 T2 -T1 T4 -T3. R3 -T4 T3 -T2 T1. R4 -T2 T1 -T4 T3. R5 -T3 -T4 T1 T2. R6 -T4 -T3 T2 -T1. 表 1 中列為隊伍,行為回合,表格內的數字代表要跟哪隻隊伍比賽,負號代 表在客場比賽,例如在 R1 中 T1 在主場跟對手 T3 進行比賽,而 T3 則必須到 T1 的 主場比賽,此時 R1 中 T1 的賽程會標記 T3、T3 的賽程則會標記-T1。 競賽旅程問題最主要的目標函數 (objective function) 為旅行總距離,旅行總 距離為各隊伍的旅行距離總和,以表 1 的 T1 為例,其旅行距離如式(1)所示: d14 + d42 + d23 + d31. (1). 用 dij 代表 Ti 移動到 Tj 的移動距離,前兩回合 T1 都在主場所以不用移動,在 R3 時 T1 要到 T4 的主場去比賽所以移動距離為 d14;接著在 R4 時要到 T2 去比賽, 因為先前已經移動到了 T4 的主場,所以是由 T4 的主場移動到 T2 的主場,而不是 從 T1 的主場開始計算,所以第二個移動距離為 d42,之後的回合以此類推。如果 最後一個回合在客場比賽,則須要額外加上回到主場的距離,例如 T2 在最後一個 回合 R6 時在 T3 的主場比賽,則 T2 的旅行距離最後會加上 d32 用來回到 T2 的主場。 本論文將此問題發展為多目標問題,除了原本的旅行總距離外,額外考慮到 所有隊伍的最長距離 (longest distance),讓使用者能夠在兩個目標中找到合適的 解,而不會因為希望旅行總距離短而讓某個隊伍需要移動很長的距離,造成不太 公平的結果。. 2.
(14) 1.1.2. 鏡像競賽旅程問題. 因為競賽旅程問題求解所需要的時間相當長,為了縮小搜尋範圍進而衍生出 了鏡像競賽旅程問題 (Mirrored Traveling Tournament Problem),問題的表述幾乎 完全相同,有 n 個隊伍,並且希望將他們排在一個 2(n1)回合的賽程當中,隊伍 距離的表示方法如同競賽旅程問題中使用一個 n × n 陣列 D,此問題跟競賽旅程 問題差異最大的點在於鏡像競賽旅程問題希望在 n1 回合之內就讓所有隊伍都跟 另外的隊伍比賽一次,換句話說另外的 n1 回合會再一次的對上所有的隊伍,但 是不需要去重新安排一次賽程,只要複製前面 n1 回合的賽程,並且相反主客場 的關係就可以順利的完成整個賽程。 在此問題中重複限制絕對不會違反,所以只需要滿足連續限制即可,並且因 為只需要安排前 n1 回合的賽程,解空間也就比原先競賽旅程問題小,這也就達 到了鏡像競賽旅程問題所希望達到的目的。 鏡像競賽旅程問題範例如表 2 所示: 表 2:鏡像競賽旅程問題範例. T1 T2 T3 T4. R1 T3 T4 -T1 -T2. R2 T2 -T1 T4 -T3. R3 -T4 T3 -T2 T1. R4 -T3 -T4 T1 T2. R5 -T2 T1 -T4 T3. R6 T4 -T3 T2 -T1. 鏡像競賽旅程問題的目標函數與競賽旅程問題相同,算法也相同,但在搜尋 複雜度上較低,因此本論文將目標放在搜尋複雜度較高的競賽旅程問題上,但是 本論文會參考解鏡像競賽旅程問題的文獻,混和解兩種問題的技術來達到本論文 想要得到的結果。. 3.
(15) 1.2 背景知識 1.2.1. 啟發式演算法. 啟發式演算法 (Metaheuristic) 為一個迭代 (iterative) 過程,該過程藉由智能 地結合不同的概念引導其他經驗法則去探索 (exploration)、開發 (exploitation) 搜 索空間。本篇論文使用啟發式演算法來解競賽旅程問題,其中會使用模擬退火法 與變動鄰域搜尋法。 模擬退火法的目的是希望能夠跳脫區域最佳解,當搜尋到適應函數 (fitness value) 更好時,會將原先的解替換成搜尋到的解;但是當搜尋到的解 j 適應函數 較解 i 差時,則使用以下式子當作機率去選擇: exp(. f(i)-f(j) T. ) > rand [0,1). (2). f(i)為解 i 的適應函數,T 為溫度,利用迭代的方式將溫度降低,溫度越低會 讓適應函數差距較大的解不容易被選擇,藉由此方式迭代搜尋,另外在模擬退火 法中有升溫的機制,溫度提升能讓適應函數較差的解被選到的機率上升。 變動鄰域搜尋法利用依序改變鄰域函式的方式去搜尋,因為某個鄰域函式搜 尋到的區域最佳解未必為其他鄰域函式的區域最佳解,因此當某個鄰域函式卡在 其區域最佳解時,會替換成另外一種鄰域函式去搜尋。. 4.
(16) 1.2.2. 多目標最佳化問題. 多目標最佳化問題如下: Minimize/Maximize F(x) = (f1(x), ..., fm(x))T Subject to x . (3) (4). Ω 為決策空間 (decision variable space),Rm 為目標空間域 (objective space ), F:Ω → Rm 由 m 個實數目標函式所組成。要如何決定解的好壞?在此以最小化 的問題為例,兩個屬於 Rm 的向量 u = (u1, u2, ..., um) 和 v = (v1, v2, ..., vm),如果對 所有的 i = 1, ... , m 使得 ui ≤ v, i 並且至少存在一個 j 屬於 {1, ... , m} 使得 uj < vj, 那麼我們可以說 u 凌越 (dominate) v。以圖 1 為例,解 x 凌越虛線區域中所有的 解。. 圖 1:凌越關係. 求解多目標問題大致可分為三種方法,合併函式法1 (aggregation function)、 階層法2 (lexicographical) 和柏拉圖最佳化 (pareto optimal),目前以柏拉圖最佳最 化常被使用。如果找不到一個 x 使得 F(x)凌越 F(x*),則點 x* 為柏拉圖. 1 2. 合併函式法:需要給定一個明確的函式將多個目標值合併成單一目標。 階層法:需要指定目標間的優先權,並依照優先次序最佳化每個目標。 5.
(17) 最佳。令 PS 為所有柏拉圖最佳解的集合,PF 為所有柏拉圖最佳化之目標向量集 合,則 PS 與 PF 之定義式如下: PS = {x* | ! x , F(x) dominates F(x*)}. (5). PF = {(x) Rm | x PS}. (6). 演化式演算法為一種群體式搜尋演算法,而柏拉圖最佳化是期望找到多個最 佳解,因此演化式演算法成為柏拉圖最佳求解多目標問題的一種有效方法。近年 來著名多目標演化式演算法有:NSGA II [2]、SPEA2 [3]、MOEA/D [4] 等等。 本問題在絕大部分的文獻中只討論單目標,然而在本論文中將此問題發展為 多目標問題,並且使用多目標演化式演算法來做搜尋,本論文考慮以下兩個目 標:. 1.2.3. f1 = Total Traveling Distance (旅行總距離). (7). f2 = Longest Distance Traveled (最長旅行距離). (8). 限制處理機制. 限制處理的目的在於找到解 (𝑥⃗) 能夠最佳化目標函式 f(𝑥⃗),並滿足競賽旅程 問題的兩個限制。 競賽旅程問題常見的作法是使用懲罰函數的方式,將懲罰值(本論文以 ρ 代表) 乘上兩種限制的違反量後加上旅行總距離,因為不合法解加上懲罰函數後,其適 應函數可能會大於合法解的適應函數,如此一來合法解適應函數會優於不合法解,. 6.
(18) 合法解就會被選到。另外本論文也會利用策略震盪 (strategic oscillation) 的方法 來調整 ρ,如此一來可能會對搜尋效能有所幫助。 除了懲罰函數的做法,另外本論文也使用 ϵ-constraint 的方式,用此種方式與 使用懲罰函數的方式比較,並找到一種較為適合此問題的機制。此種方法會將違 反兩種限制的違反量限定在可接受的範圍,在一開始的搜尋中會因為可接受的範 圍廣而搜尋到許多適應函數很好的不合法解,但可接受的違反量因為代數上升而 降低,如此一來能將違反量過多的不合法解去除,慢慢地搜尋到合法解。. 1.3 研究目的與貢獻 本論文利用啟發式演算法來解競賽旅程問題,跟過去的方法不同的是,本論 文將此問題發展為多目標最佳化問題,其目標函式分為以下兩者: (1) 旅行總距離:所有隊伍旅行距離總和。 (2) 最長旅行距離:所有隊伍中旅行距離最長的距離。 將此問題發展為多目標最佳化問題後,可以讓使用者依照自己的需求去選擇 較合適的解,如此一來能讓此問題更加生活化。 本論文藉由群體式搜尋以及改良現有的鄰域函式,讓搜尋的效能不會因為從 單目標最佳化問題轉換為多目標最佳化問題而下降。 本論文研究範疇: (1) 比較變動鄰域函式與隨機鄰域函式在競賽旅程問題上的優劣。 (2) 測試鄰域函式順序是否影響變動鄰域函式效能。. 7.
(19) (3) 改良文獻中提出的鄰域函式。 (4) 將競賽旅程問題發展為多目標最佳化問題。 (5) 比較懲罰函數與 ϵ-constraint 用於競賽旅程問題的優劣。 本論文提出了兩種新的鄰域,在搜尋的時間與效能上有所提升,但是並沒有 更新現有的單目標最佳解。此外本論文將此問題發展為多目標最佳化問題,讓使 用者在使用上不會侷限於旅行總距離,而是能夠考慮到各個隊伍的公平性,並且 提出了目前找到的多目標最佳化解,讓此問題能夠往多目標最佳化的方向繼續發 展。. 8.
(20) 第二章 文獻探討 在競賽旅程問題中最常使用區域搜尋法如:模擬退火法 [5][6]、禁忌搜尋法 (Tabu Search) [7]…等方法來排賽程,而在區域搜尋法中最重要的即為鄰域,以下 幾種鄰域最常被使用:. 2.1. 常見鄰域函式. (1) SwapHomes [5] 選擇兩個隊伍 Ti 和 Tj 交換賽程中兩個隊伍比賽的主客場關係,例如選擇隊伍 2 和 4,在 R5 時兩隊要到 T2 的主場去比賽,而在 R8 時則是要到 T4 主場比賽,做 完 SwapHomes 之後 R5 會到 T4 主場,而 R8 則會到 T2 主場比賽,如圖 2 和圖 3 所 示,灰色標記表示要替換的場次,負號代表客場比賽。. 圖 2:SwapHomes 轉換前範例 [5]. 圖 3:SwapHomes 轉換後範例 [5]. 9.
(21) (2) SwapRounds [5] 選擇兩回合 Rk 和 Rl 交換賽程中兩回合的所有比賽,如圖 4 和圖 5 所示,灰 色標記表示要替換的場次。. 圖 4:SwapRounds 轉換前範例 [5]. 圖 5:SwapRounds 轉換後範例 [5]. (3) SwapTeams [5] 選擇兩個隊伍 Ti 和 Tj 交換賽程中除了彼此隊伍以外的所有比賽,例如選擇隊 伍 2 和 5,則會把 T2 中除了 5 和-5 以外的所有比賽跟 T5 中除了 2 和-2 的所有 比賽交換,交換之後要去修改賽程中其他的比賽,因為替換之後的對手也會不同, 所以對手也必須要調整賽程,如圖 7 中第 2 回合,隊伍 2 和隊伍 5 的賽程交換後, 會導致隊伍 1 跟隊伍 3 的賽程衝突,因此要將此兩場比賽做調整,讓整個回合的 隊伍都不會衝突。SwapTeams 範例如圖 6 和圖 7 所示,灰色標記表示要替換的場 次。. 10.
(22) 圖 6:SwapTeams 轉換前範例 [5]. 圖 7:SwapTeams 轉換後範例 [5]. (4) PartialSwapRounds [5] 選擇一支隊伍 Ti 以及兩回合 Rk 和 Rl,交換隊伍 Ti 中在 Rk 和 Rl 的比賽,之後 動態的去修改,如圖 9 中第 2 回合,當隊伍 2 的兩個回合比賽交換後,因為交換 過來的-6 會與隊伍 4 的 6 衝突,因此要將隊伍 4 的兩個回合 6 與-4 交換,當交換 後再有衝突時再去其他隊伍做交換,直到沒有衝突為止。PartialSwapRounds 範例 如圖 8 和圖 9 所示,灰色標記表示要替換的場次。. 圖 8:PartialSwapRounds 轉換前範例 [5]. 11.
(23) 圖 9:PartialSwapRounds 轉換後範例[5]. (5) PartialSwapTeams [5] 選擇兩支隊伍 Ti 和 Tj 以及某一回合 Rk,交換隊伍 Ti 和 Tj 在 Rk 中的比賽,如 圖 10 中選擇隊伍 2 和隊伍 4,交換在回合 9 中兩個隊伍的比賽,首先將這兩場比 賽互換後,修改因為此互換而衝突的所有回合,此步驟需要依序的去搜尋。如圖 10 中第 3 回合在第 9 回合交換後,隊伍 4 中到隊伍 1 的主場(-1)會出現兩次,那 麼就會將衝突的第 3 回合中隊伍 2 和隊伍 4 的比賽去做交換,其餘衝突的比賽以 此類推,最後再將有交換過的回合修改成正確的賽程,如圖 11 除了隊伍 2 和隊 伍 4 以外的賽程,灰色標記表示全部要替換的場次。. 圖 10:PartialSwapTeams 轉換前範例 [5]. 12.
(24) 圖 11:PartialSwapTeams 轉換後範例 [5]. (6) Lookahead PartialSwapTeams [6] 此種方法會先偵測在 PartialSwapTeams [5]的過程中是否會重複使用到相同 的隊伍但場館相反,如圖 12 中隊伍 2 在第 5 回合與第 9 回合會將隊伍 5 重複使 用:. 圖 12:PartialSwapTeams 交換順序範例(修改自 [6] ). seq 為 PartialSwapTeams [5] 交換的順序,此次 PartialSwapTeams [5] 需要交 換十次,此方法會依照順序找最快重複使用的隊伍,如圖 12 中第 5 與第 9 回合 交換的隊伍 5,接著對隊伍 2 中的這兩場比賽作 SwapHomes [5],之後再做 PartialSwapTeams [5],如此一來將會對替換次數有所改善,如圖 13 所示:. 圖 13:PartialSwapTeams 改良後交換順序範例(修改自 [6] ). 13.
(25) 使用此作法可以省下五個交換的步驟,對於時間和效能上能有所提升,但因 為這樣的改良方式必須要先判斷交換之間是否有重複使用到的解。因為每一次搜 尋都需要偵測,所以會導致搜尋的時間加長,雖然成功的話替換次數會減少,但 如果沒有搜尋到就會浪費時間,為了避免掉這樣的浪費,本論文採用其他方式作 改良,而不會以事先偵測的方式改良。. 2.2 區域搜尋法 2.2.1. 模擬退火法 [5] [7] [8]. 模擬退火法的特性是試圖跳脫區域最佳解,在該篇文獻中對於目標函式並非 單純的加總,如式(9)所示:. 𝐶(S)= {. cost(S). S is feasible. √cost(S)2 +[ρ×f(nbv(S))]2. Sis infeasible. (9). C 為新的目標函式,S 為賽程,cost 為原本的目標函式(旅行總距離),ρ 為懲 罰值,nbv 為限制違反的數量,f 為一個次線性函式 (sublinear function),在文獻 中的 f(v)為1 + (√𝑣 ln 𝑣)⁄2,該文獻認為在違反量多的不合法解中,多違反一次並 沒有很大的差別,因此利用此函式讓違反量不會因為違反次數上升而讓 ρ 成長過 快。 另外 ρ 的部分用策略震盪的方式去調整,依照當下找到解的合法性去調整 ρ, 如果是合法則會降低 ρ,如此一來可以往不合法的解去搜尋;如果解為不合法, 則會調高 ρ,如此一來可以往合法的解去搜尋。本論文將學習這種方式來做策略 震盪,並比較策略震盪是否真的能有效的提升效能。. 14.
(26) 升溫 (reheat) 則是在搜尋一段時間後增加溫度,如此一來可以跳脫區域最佳 解,因為當溫度很低時模擬退火法會因為其特性而較難跳脫區域最佳解。 文獻 [5] 提出五個相當有用的鄰域,並且也因為利用策略震盪和升溫的機制 找到相當好的解,但是在時間上花費相當的久,這是本篇論文值得改善的地方。 本篇論文將採用文獻 [5] 提出的模擬退火法方式,但是對於搜尋的方式將有所改 變,將原先使用 First-improving 的方式改成使用 Best-improving,另外也針對該文 獻所提出的五個鄰域做改良,藉由以上方式讓效能有所提升。 文獻 [7] 分析模擬退火法的初始解去做分析,提出了如式(10)的式子: ITD. Eval =TTD+ ∑di=1 i+1i. (10). Eval 為評估成本,TTD 為旅行距離總和,ITDi 代表第 i 回合到 i+1 回合的旅行 距離,該文獻的目的是希望能夠在每一回合都找到評估成本最低的解,因此會使 用前瞻程序(look-ahead procedure)的方式搜尋 Eval,如圖 14 所示,首先從回合 0 產生了回合 1 的兩個可行賽程之後,對回合 1 去作搜尋並產生四個可能的解,接 著對這四個解作前瞻程序,評估他們之後找到解的成本,藉由此方式在安排的過 程中就能找到一個旅行總距離較短的解:. 15.
(27) 圖 14:初始解選擇範例 [7]. 圖 15:circ4 範例. 依照圖 15 circ4 問題的距離能算出如圖 14 的 Eval 結果,以最左為範例:Round0 到 Round1 時距離總和為 2,接著在 Round1 時產生子代,並算出到子代後的總距 離為 4,此時使用前瞻程序來模擬另外兩個會找到的子代,接著藉由式(10)算出到 模擬結束時的 Eval 為 7。藉由此方法算完所有子代的 Eval 後,會選擇第一與第三的 子代來繼續往下一回合搜尋,最終能夠找到一個最佳的初始解,如此一來可以提 升模擬退火法的效能,另外在該文中也使用了攀登演算法 (Hill climbing) 來提升 搜尋的效能。. 16.
(28) 此方式對於問題集小的問題能夠很有效率地找到最佳解,但是只要問題集稍 微大一點,就會因為變異度過低的問題而導致沒有辦法有效率的搜尋,經過實驗 後在本論文中並沒有採納這樣子的方式來產生初始解。 另外針對問題集較大、搜尋範圍更廣的問題則有群體式的 [8] 方式做搜尋, 藉由一次搜尋很多個解,在搜尋一定時間後將現有的最佳解去替換掉較差的解, 並且保留一些次等的解來避免收斂,如圖 16 所示:. 圖 16:群體式模擬退火法範例 [8]. Sij 代表賽程,i 代表解編號,j 代表代數,圖中粗圓圈選出來的解代表在 t 時 間內比現有最佳解都好的解,剩餘的三個圓圈則為此回合中剩下三個較好的解。 在此範例選擇四個好的解留到下一代,在 t 時間時所有較差的解會換成 t 時間內 的最佳解 S8,而另外三個解 S1、S5、S9保留到下一代,藉由此方式可以避免所有 的解都收斂到相同的解。. 17.
(29) 此種作法能夠找快速的找到較好的解,而本論文也將採用類似的方式,但是 由於該文獻的做法會讓變異度變低,很可能在替換幾次之後所有的解都相同。為 了避免此問題,本論文將採用競爭法 (tournament) 的方式從一群的解中選擇指定 目標方向上較好的解來當作下一代的初始解。. 2.2.2. 禁忌搜尋法 [9]. 使用禁忌搜尋法可以避免替換重複的鄰域,如此一來可以避免重複的搜尋, 而在文獻中也針對鄰域有所改進,SwapMatches 與 SwapMatchRound 與先前在 2.1 鄰域函式提過的 PartialSwapRounds [5] 和 PartialSwapTeams [5] 類似,只是在該 文獻中對於替換的順序以及如何替換才會有較好的效能有所分析。 該文獻實驗的結果並沒有顯著的比 [5] 的方式求到的解佳,因此該文獻的鄰 域改進並沒有在本論文中被使用,但是卻給了本論文改善 PartialSwapRounds [5] 和 PartialSwapTeams [5]的想法。. 2.2.3. 螞蟻演算法 [10]. 螞蟻演算法 (Ant Algorithms) 利用費洛蒙 (pheromone) 來搜尋最佳化問題, 文獻中使用五種鄰域來讓十隻螞蟻移動,並且利用以下函式來增加費洛蒙: 𝑘 ∆𝜏𝑖𝑗. Ik. = {Lk. +Q 0. If 𝐼𝐾 > 0 Otherwise. (11). 𝑘 ∆𝜏𝑖𝑗 代表 k 螞蟻走路線 i 到 j 的費洛蒙增加值,𝐼𝑘 代表利用鄰域搜尋後改善. 量,𝐿𝑘 代表螞蟻 k 旅行的距離,Q 代表一個抵抗蒸發值的函數,藉由此方法來增 加費洛蒙,達到廣泛搜尋並且跳脫極值的效果。. 18.
(30) 該篇文獻在效能的部分沒有非常突出,大部分的解都沒有達到最佳解,不過 在時間上卻有著相當大幅度的改善,比起原先需要跑好幾天的程式,該篇文獻只 需要幾分鐘。. 2.2.4. 迭代區域搜尋法 [11]. 迭代區域搜尋法 (Iterated local search) 是在每一次搜尋到區域最佳解時,去 做隨機擾動 (perturbation) 並且再一次作區域搜尋,直到解有比現有最佳解好時 才會跳脫此迴圈,該篇文獻使用了貪婪禁忌搜尋 (Greedy Randomized Adaptive Search Procedure) 與迭代區域搜尋法,藉由產生較好的合法初始解後再去作迭代 區域搜尋。 該篇文獻中針對初始解的部分提出了以下三個步驟: (1) Build a 1-factorization 依 照 多 邊 形 法 (polygon method) 可 以 建 立 一 個 簡 單 循 環 賽 程 (simple round-robin tournament),而建立的方法如圖 17 所示:. 圖 17:多邊形法範例 [11]. 19.
(31) 圖 17 中數字代表虛擬隊伍{1,…, n},此範例 n 為 6,首先會把 1 到 n1 的虛 擬隊伍依照順時針方式放入 n1 邊形的點中,每一回合在點 l (2≤l≤n/2)的虛擬隊 伍會對上在點 n+1l 的隊伍,例如 n 為 6 時在第一回合點 3(l = 3)上的隊伍會跟點 4(6+13)的隊伍比賽,並且在每一回合中點 1 的位子會對上虛擬隊伍 n,在下一 回合時會去將 n1 邊形中的虛擬隊伍做順時針的旋轉,例如圖 17 中原先虛擬隊 伍 1 在最上面的點,但在旋轉過後會跑到圖 17 中虛擬隊伍 2 的位子。將所有虛 擬隊伍都對上其他虛擬隊伍後,就可以迅速地建立好循環賽程。 接下來會複製 1 到 n1 的比賽使得整個變成一個雙循環賽,之後依照整個賽 程各隊伍的場館連續關係,例如依照此方法隊伍 1 的賽程為 64253,雙循環賽變 成 6425364253,藉由此連續場館關係可以建立一個矩陣如圖 18 的連續場館關係 圖。. 圖 18:連續場館矩陣範例 (修改自 [11]). 圖 18 中(i,j)代表隊伍 i 與隊伍 j 在賽程中場館連續次數,例如隊伍 1 的賽程 安排為 64253-6-4-2-5-3,那麼從隊伍 2 移動到隊伍 5 的次數為 2,藉由此方法可 以發現隊伍 2 與隊伍 5 場館連續次數為最多的 6 次,之後安排真正的隊伍到虛擬 隊伍時,根據矩陣中的次數來判斷,真正隊伍中兩隊距離較短者就應該分配到矩. 20.
(32) 陣中次數最多的隊伍,如此可以減少總距離。 (2) Assign real teams to abstract teams 根據連續場館矩陣與真正各隊伍之間的距離去指派,隊伍之間距離近的會去 指派到連續對手矩陣中次數多的虛擬隊伍;相反的距離遠的就會去指派到連續場 館矩陣中次數少的虛擬隊伍,藉由此方式可以輕易地分配好各個隊伍。 (3) Assign stadiums to games 最後會去分配主客場的關係,首先第一回合會是用隨機的方式產生,而 2 到 n2 回合中會根據比賽隊伍 i 和 j 的連續主客場關係 ni 去決定,如果隊伍 i 連續 打了兩場主場,則 ni 為 2;如果隊伍 j 連續打了三場客場,則 nj 為 3,其決定方 式如下: [1]. ni > nj 隊伍 i 如果上一回合在客場比賽,則此場比賽則會在主場;如果上一場比賽. 在主場,則此場比賽則會在客場。 [2]. ni < nj 隊伍 j 如果上一回合在客場比賽,則此場比賽則會在主場;如果上一場比賽. 在主場,則此場比賽則會在客場。 [3]. ni = nj 如果上一回合隊伍 j 在主場比賽、隊伍 i 在客場比賽,那麼此回合會到 i 的主. 場比賽;如果上一回合隊伍 j 在客場比賽、隊伍 i 在主場比賽,那麼此回合會到 j. 21.
(33) 的主場比賽。 如果非以上兩者則會隨機的到 i 或者 j 的主場比賽。 如此一來能夠相當快速的找到一個鏡像競賽旅程問題的初始解,而另外對於 鄰域的部分也提出了 Game rotation [11] 的方法,如圖 19 所示:. 圖 19:Game rotation 轉換範例 [11]. 首先選擇某一回合中的兩場比賽如圖 19,選擇第 1 回合隊伍 8 對上隊伍 2 和隊伍 7 對上隊伍 3, 此時我們交換這兩場比賽的關係變成隊伍 8 對上隊伍 3、 隊伍 7 對上隊伍 2。首先我們會先把第 1 回合的比賽關係改變為如圖 19 左下的關 係圖,接著到別回合中(在此範例為第 2 回合)找尋剛才被消去掉的兩場比賽,如 果順利的話可以在某一回合中找到這兩場比賽,並且替換掉原本的比賽如圖 19 右下的關係圖,完成 Game rotation [11];不順利的話,則在別的回合中補上消失 的一場比賽,然而此回合的比賽會有衝突,所以必須要消掉某個因為補上而衝突. 22.
(34) 的比賽,接著再去另外的回合中找被消掉的比賽,如此反覆下去最後就能排完整 個賽程。 該文獻初始解快速產生的方法在之後解鏡像競賽旅程問題的文獻大量被使 用,也因為這樣的方法能夠產生出好的初始解,如此一來能夠大幅度的增進區域 搜尋後的結果,這樣的方式對於鏡像競賽旅程問題能夠快速的找到好的初始解。 但沒有任何文獻將這樣的作法應用在競賽旅程問題,或許未來能夠深入研究該如 何學習這樣的方法創造一個好的競賽旅程問題初始解,這部分在本論文並沒有做 更深入的研究,但是這樣產生初始解的方式對於鏡像競賽旅程問題提供很有效率 的幫助。. 2.2.5. 混和式區域搜尋演算法 [12]. 該篇文獻混和了貪婪隨機調適搜尋程序、變動鄰域搜尋法以及禁忌搜尋法, 變動鄰域搜尋法的目的是讓區域搜尋能夠使用相同的鄰域函式搜尋到停止條件 後再改變鄰域,如此一來能夠確保搜尋到某鄰域的區域最佳解,而不會因為每一 次鄰域都用隨機選擇而無法順利找到區域最佳解。 變動鄰域搜尋法被本篇論文所採用,但是為了比較其是否真的有所幫助,在 本論文實驗的部分會針對此方法跟隨機鄰域選擇的方式做比較,希望能找到一種 效能最佳的搜尋法。. 23.
(35) 2.3 群體式搜尋法 2.3.1. 基因演算法 [13]. 該文獻採用基因演算法 (Genetic Algorithm) 解競賽旅程問題,染色體編碼的 方式是將所有的比賽排成一條編碼,計算目標函式時,在根據編碼的順序安排到 各回合當中,以 CIRC4 問題當範例,此種方式編碼如圖 20:. 圖 20:染色體編碼範例 (修改自 [13]). 解碼方式如圖 20 中數字的順序兩個一組,前者代表此比賽中主場的隊伍, 後者代表要到主場比賽的隊伍,如果解碼的過程中要在已經填過的回合填入隊伍, 則會往後一回合填入,下一場比賽再從一開始有空缺的回合搜尋,解碼後賽程如 圖 21 所示:. 圖 21:解碼後賽程範例 (修改自 [13]). 而 Crossover operator 使用 two point crossover 和 internal swapping;Mutation operator 使用 Bit-swap mutation,如圖 22 所示:. 24.
(36) 圖 22:Crossover operator 和 Mutation operator 範例 (修改自[13]). 該篇文獻在大部分的問題中都能找到最佳解,但是實驗部分只有測試問題集 小的問題(最多 8),這是在實驗上比較不足的部分,另外針對這種 Crossover 的方 法去做實驗,實際上交換的隊伍非常多,導致子代沒有辦法繼承親代的好處,這 個部分是相當大的問題,因此在本論文並沒有使用基因演算法來求解。. 2.3.2. 文化基因演算法 [14]. 本篇論文使用基因演算法加上模擬退火法解鏡像競賽旅程問題,因為後半部 的賽程如同前半部,其基因編碼方式只放前半部,如圖 23 所示:. 圖 23:基因範例 [14]. 25.
(37) 解碼方式利用多邊形法(圖 17)的方式產生賽程,如圖 24 所示:. 圖 24:基因解碼範例[14]. Crossover operator 使用 BOX Crossover,如圖 25 所示:. 圖 25:BOX Crossover 範例 [14]. 首先隨機的挑選兩個解,並隨機的從這兩個解中挑選區塊放到新的個體,藉 由此方式來產生子代,如圖 25 中解 1 會挑選 5 和 32 這兩個區塊,而解 2 就會挑 選剩下的區塊來放入。 該文獻在某些解中能夠找到最佳解,並且在時間上的部分也相當的快速,實 驗的部分也從小的問題集比較到最大的問題集,針對鏡像競賽旅程問題的發展有 了另外的技術,而不局限於採用區域搜尋的方法。但如同上一篇文獻所說, Crossover 會影響的隊伍過多,使得子代無法擁有親代的優點,這個問題是接下來 用此方法所需要再改進的部分,此外該文獻的方法只適用在解鏡像競賽旅程問題, 因此在本論文沒有採用此方式求解。. 26.
(38) 第三章 群體式多鄰域模擬退火法 本論文提出群體式多鄰域模擬退火法來解此問題,其中採用兩種選擇鄰域的 方法作區域搜尋,流程圖如圖 26 所示,pseudo-code 如演算法 1 所示:. Start. Initialize solutions. Iterative Improvement. MNSA Decrease T. Update candidate solution set Generation change. No. Stopping criterion?. Yes End 圖 26:PMNSA 流程圖. 27.
(39) 演算法 1 Function PMNSA(T0) 1: Generation ← 0, countSame ← 0, T ← T0; 2: Initialize(Sp); 3: II(Sp); 4: SLS ← Selection(SP);. /* use tournament selection */. 5: Fbest ← F(SPs best solution); 6: while Generation < Gstop do 7: MNSA(SLS, T);. /* F() : refer to (12) */ /* use vn or rand to select neighborhood */. 8: 9: 10: 11: 12:. Update(SP); if countSame % Gupdate == 0 and countSame != 0 then T ← T × β; /* decrease T */ SLS ← Selection(SP); /* use tournament selection */ end if. 13: 14: 15:. if Fbest > F(SPs best solution) then Fbest ← F(SPs best solution); countSame ← 0;. 16: 17:. else countSame ←countSame + 1;. 18: 19:. end if Generation ← Generation + 1;. 20:end while end Function 演算法 1:群體式變動鄰域搜尋模擬退火演算法. 本論文利用二維矩陣作編碼,行為第 1 回合到最後 1 回合所要對上的隊伍, 列代表隊伍的順序,負號代表客場比賽,如表 3 所示: 表 3:編碼範例 T/R 1 2 3 4 5 6. 1 -2 1 -6 -5 4 3. 2 3 -4 -1 2 6 -5. 3 5 3 -2 6 -1 -4. 4 -6 5 4 -3 -2 1. 5 4 -3 2 -1 -6 5. 6 6 4 -5 -2 3 -1. 28. 7 -5 6 -4 3 1 -2. 8 -4 -5 6 1 2 -3. 9 -3 -6 1 5 -4 2. 10 2 -1 5 -6 -3 4.
(40) 3.1 產生初始化 (Initialize solution) 本論文一開始隨機產生初始解後放入候選解集合(SP),這些解必須要合乎雙 循環賽規則,不過可以違反兩個限制,之後再從 SP 中挑選解去做演化。隨機產生 的方式從第一回合的第一個隊伍開始作隨機生成,被選擇到的隊伍也填入相對應 的值,如果在同隊伍中產生的值與先前回合重複,則再隨機產生其他的值嘗試, 但因為這樣的方式越後面的回合選擇性越少,有可能最後此回合會無法順利的生 成,那麼就會把此回合中的賽程重新隨機產生,另外如果嘗試很多次後還是無法 順利的生成此回合的解,那麼就會把此賽程全部重新產生,本論文將嘗試的次數 設為嘗試 n (隊伍數、問題集大小)×20 則此回合重新產生,嘗試 n×200 則此賽程 全部重新產生。. 3.2 適應度評估 (Fitness function) 適應度評估在此篇論文中,試著混和以下兩種方式:. 3.2.1. 多目標處理機制. 多目標最佳化問題中,目標之間通常存在著衝突的關聯,本論文將競賽旅程 問題原本為單一目標的問題衍伸成為類似 [15] 提出的兩個模型,藉由多目標最 佳化的方式讓使用者能夠不侷限於旅行總距離這個目標,將原本最佳化旅行總距 離的單目標問題變成最佳化旅行總距離和最佳化最長旅行距離的雙目標問題。 本論文將用權重 (weight vector) 的方式去搜尋,適應函數 F 如式(12)所示: 𝑓 ′ (𝑠)−𝑓 ′𝑚𝑖𝑛. 𝑓 ′ (𝑠)−𝑓′𝑚𝑖𝑛. 1 1 2 2 𝐹(𝑠) = 𝑤 × (𝜅−1)×𝑓 ′𝑚𝑖𝑛 + (1 − 𝑤) × (𝜅−1)×𝑓 ′𝑚𝑖𝑛 1. 2. 29. (12).
(41) w 代表目標 1 的權重,(1−w)則為目標 2 的權重,藉由權重的不同能搜尋到 在權重方向上較好的解,如圖 27 中,點 x 因為 w 為 0,所以目標 2 的權重為 1, 此點將會偏向最小化目標 2 作搜尋,灰色線代表搜尋的方向:. 圖 27:權重搜尋範圍範例. 目標函式如式(13)所示: 𝑓𝑖′ (𝑠) = √𝑓𝑖 (𝑠)2 + (𝜌 × 𝑣𝑖𝑜𝑙𝑎𝑡𝑖𝑜𝑛𝑠(𝑠))2, i = 1,2. (13). 𝑓𝑖′ 為目標 i 的目標函式,fi 分別為兩個目標的值,𝑣𝑖𝑜𝑙𝑎𝑡𝑖𝑜𝑛𝑠為賽程 s 違反兩 個限制的次數加總,式(13)所算出的目標函式比單純用加總的方式算出的目標函 式低,如此一來能讓懲罰函數不會影響過大而導致無法從合法解區域跳脫到不合 法解區域。 然而因為兩個目標的值相差頗大,適應函數如果只用以上的方法,那麼目標 會全部朝向數字較大的目標,因此在本論文中會將兩個目標函數𝑓𝑖′ 去做極值正規 化 (min-max normalization) 後才乘上 w,本論文正規化中旅行總距離與最長旅行 距離的最小值是用動態的方式去改變,兩者的最大值則是將最小值乘上κ,如此 一來讓兩者的影響力不會因為數值的差距過大而無法比較,之後再將兩個目標函. 30.
(42) 數乘上權重,算出適應函數。ε-constraint 中則沒有將目標值加上懲罰函數,只將 兩個目標去做極值正規化。. 3.2.2. 限制處理機制. 3.2.2.1. 懲罰函數. 將賽程計算出競賽旅程問題中兩個條件的違反次數加總後乘上 ρ,因為文獻 中提到 ρ 對於找到解的好壞有著相當大的影響,也會因為 ρ 的關係影響搜尋解的 範圍,所以在本論文中對於 ρ 的設定將會依照問題集中各隊距離去算出起始的 ρ, 其函式如下:. 𝜌=. 𝐷𝑖𝑠𝑡𝑎𝑛𝑐𝑒𝑇𝑜𝑡𝑎𝑙 𝑛×𝑛−𝑛. × (𝑛 − 1). (14). 式(14)中 𝐷𝑖𝑠𝑡𝑎𝑛𝑐𝑒𝑇𝑜𝑡𝑎𝑙 為問題集中陣列 D 所有的值相加,除上 n×n 之後 就會是總平均的距離,然而因為從主場到自己的主場距離會是 0,所以在算平均 時會將𝑛相乘之後減掉𝑛,如此能算出正確總平均的距離,之後再將總平均的距離 去乘上(𝑛 − 1),減 1 的目的是去掉自己的主場,如此能讓違反的值不會因為過小 而無法選擇到合法解,此函式可以化簡為𝜌 = . 𝐷𝑖𝑠𝑡𝑎𝑛𝑐𝑒𝑇𝑜𝑡𝑎𝑙 𝑛. 。藉由這樣的𝜌能夠讓. 不合法解在違反一次時,目標函式加上總平均距離,如此一來才能夠比合法解的 懲罰函數高,以避免因為懲罰函數過低而無法搜尋到合法解的問題。 ρ 的算法除了跟問題的大小有相對應的關係之外,也會採用 [5] 所提到的策 略震盪的方式在每一代中調整 ρ,調整的方式為在前一代中找到合法解時將 ρ 除 上 θ (θ > 0),如此一來可以在下一代中能搜尋到不合法解的區域,在前一代中找. 31.
(43) 到不合法解時將 ρ 乘以 θ,如此一來可以在下一代中搜尋到合法解的區域,藉由 此方法來增加搜尋和跳脫搜尋的區域。 3.2.2.2. ε-constraint. 另外一種限制處理機制使用 ε-constraint,本論文可接受違反量會起始設定為 ε,接著依照 generation 的代數增加讓可接受的違反量每一代下降 εrate。在 generation 較低時能接受違反量較大的不合法解,之後因為 generation 上升而降低可接受違 反條件的量,如此一來會往違反量較低的不合法解去搜尋,藉由此方式慢慢的找 到柏拉圖最佳解的前緣。. 3.3 迭代改良 (Iterative Improvement) 本論文首先將 SP 中所有的解都做一次迭代改良,以增加區域搜尋法的效能。. 3.3.1. 迭代改良. 迭代改良法是一種經由代數的增加,讓解往適應函數低的解移動的方法,搜 尋的做法通常有兩種: (1) First-improving:搜尋過程中看到比目前解還要好的解時,將此解替換原先的 解,並且從此解開始繼續搜尋。 (2) Best-improving:搜尋目前解中附近的解,並且比較哪個解是這一群中最好的, 再將最好的解替換掉目前的解,並從此解開始繼續搜尋。 因為只是要找到一個比較好的初始解,所以本論文在迭代搜尋中採用 First-improving 的方式,次數會依照 n 乘上 1000。. 32.
(44) 3.3.2. 解評估方式. 解評估的方式會依照 3.2 中所提出的適應函數,此時因為想要找到一個兩個 目標都好的解,因此將 w 設為 0.5,如此一來能夠往兩者都最佳化的方向搜尋。. 3.3.3. 鄰域函式. 鄰域函式的部分採用 [5] 所提出的五個鄰域函式,並使用隨機的方式挑選, 而在改良 PartialSwapRounds 與 PartialSwapTeams 之後將原先的這兩種方法替換 成改良後的版本,詳細改良的方法在之後作介紹。. 3.4 變 動 鄰 域 模 擬 退 火 法. (Variable Neighborhood. Simulated Annealing, VNSA) 選擇鄰域函式的方法在本論文中有兩種做法,隨機選擇的部分較為直觀,在 每次要做區域搜尋時隨機的從鄰域函式中選擇一個鄰域做搜尋,因此在這部分本 論文不多做說明,只列出一些與變動鄰域不同的點。 區域搜尋的過程中,每一次搜尋總共有|SLS|個,每次會從 SP 中挑選出兩個候 選解,接著由於每次 w 的不同算出適應函數,再利用競爭法選擇這兩個候選解中 較好的解,最後將每個解作區域搜尋。然而為了避免搜尋次數不夠多而無法找到 區域最佳解,所以這樣的選擇方式並不會每一代都作,在實驗一開始時會先做一 次,之後替換的次數設定會採取最佳解有無更新的方式,當沒有更新時,變數 countSame 會加 1,當 countSame 除以 Gupdate 的餘數為 0 以及 countSame 不為 0 時 會去做替換。因為搜尋許多代之後目標函式會跟著降低,為了不讓模擬退火法因. 33.
(45) 為目標函式降低但還使用高的溫度而亂跳動,在此時也會將模擬退火法中的初始 溫度降低 (β),藉由此方式調整初始溫度而不會從頭到尾都用同樣的起始溫度。 區域搜尋法的部分採用變動鄰域搜尋法以及模擬退火法的方式去搜尋,藉由 w 將兩個目標分成|SLS|個權重,接著對每個方向用鄰域去做模擬退火法搜尋,本 論文採用變動鄰域搜尋法的方式,將一種鄰域搜尋到區域最佳解後,才會替換成 另外一種鄰域函式,如果在搜尋的過程中有搜尋到更好的解,那麼會馬上換回第 一種鄰域做搜尋。本論文在模擬退火法的終止條件使用次數限制的方式,而不同 於以往用溫度來當作終止條件。 本論文模擬退火法採用 [5] 提出的架構,將找到的解分成合法與不合法,如 果找到的為合法並且比最佳合法解好,會把現有解替換成找到的解,並將此解存 為最佳合法解;如果找到的解為不合法解且比最佳不合法解好,也會將現有解換 成最佳不合法解,並且將此解記錄成最佳不合法解 。不同的是本論文使用 Best-improving 的 方 式 搜 尋 , 而 不 同 於 文 獻 中 使 用 First-improving , 使 用 Best-improving 是希望看過較多的解之後再選擇一個最好的去做模擬退火法,藉 由這樣的方式來提升效能。模擬退火法中的升溫會在找到的解比最佳合法解和最 佳不合法解好時做紀錄,當要做升溫時會用此溫度乘上 Treheat 做為初始溫度,而 策略震盪也會在此時去將懲罰函數做改變,模擬退火法會在搜尋次數等於設定的 總共搜尋次數 (maxE) 後停止。 變動鄰域模擬退火法 pseudo-code 如演算法 2 所示:. 34.
(46) 演算法 2 Function MNSA(SLS, 𝑇0′ ) 1: for i = 0 to |SLS|-1 do. /* search each SLS */. 2: 3:. nb ← 0, searchTime ← 0; w ← ((|SLS|-1)-i)/(|SLS|-1);. 4:. Fbest ← F(SLS(i)) ;. 5: 6: 7: 8: 9: 10:. while searchTime < maxE do {SLS(i),searchTime} ← SA(SLS(i), searchTime, nb, 𝑇0′ , maxE, w); if F(SLS(i)) < Fbest then nb ← 0; /* use neighborhood 0 */ Fbest ← F(SLS(i)); else nb ← nb + 1;. /* nb is neighborhoods number */ /* i is the number of SLS */. 11: end while 12:end for end Function 演算法 2:變動鄰域模擬退火法. 在變動鄰域模擬退火法中如果找到比原先的解還要好的合法解,那麼會直接 跳出模擬退火法的迴圈,直接將控制鄰域函式的變數設回 0,如演算法 2 中第 8 行,藉由此方式讓鄰域函式中搜尋效能較佳的鄰域函式放在較前面的順序,讓鄰 域函式中搜尋能力較好者使用的次數較多,來讓搜尋的效能增加,其中模擬退火 法的部分參考 [5] 提出的模擬退火法演算法,並且將使用 First-improving 的方法 改成 Best-improving 去做搜尋,如演算法 3 中第 6 到 11 行;其中會用 maxR 控制 升溫的次數,maxP 控制溫度降低的次數,maxC 控制 Best-improving 在同個溫度 下搜尋的數量,使用的鄰域函式會用到. [5] 提出的五個鄰域函式,以及額外改. 進的兩個鄰域函式,另外針對鄰域函式的使用在之後也會做相關的實驗,模擬退 火法 pseudo-code 如演算法 3 所式:. 35.
(47) 演算法 3 Function SA(SLS(i), searchTime, nb, 𝑇0′ , maxE, w) 1: goodT ← 0,bestF ←∞,bestIF ←∞,T ← 𝑇0′ ; 2: s ← SLS(i) ; 3: for i = 0 to i < maxR do 4: for j = 0 to j < maxP do 5: Fbest ← ∞; 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:. for k = 0 to k < maxC do. /* find the best neighbor */. s ←NBnb(s); /* use nb’s neighborhood to search s */ searchTime ← searchTime + 1; if F(s) < Fbest then best ← s; Fbest ← F(s); end for Accept(s ,best , goodT, bestF, bestIF ,T , w); if Fbest < F(SLS(i)) then SLS(i) ← best; return; /* end SA , use another n */. 17: end if 18: T ← T× α; 19: if searchTime ≥ maxE then retrun; 20: end for 21: T ← goodT× 𝑇𝑟𝑒ℎ𝑒𝑎𝑡 ; 22:end for end Function 演算法 3:模擬退火法. 在演算法 3 第 14 行到第 17 行中,如果找到的解比原先開始搜尋的解好,也 就是比目前的最佳解好,那麼會將此解存成最佳解,並且馬上跳出模擬退火法, 如此一來能馬上換回第一個鄰域函式,讓搜尋能力強的鄰域函式馬上從此解開始 搜尋,然而此時溫度會因為重新使用模擬退火法而回到原先初始的溫度,藉由這 樣的做法讓換到的鄰域函式能夠從高溫度開始做起,進而跳脫區域最佳解,而不 會因為使用原先過低的溫度,導致無法達到跳脫區域最佳解的效果。. 36.
(48) 接受準則 (Accept) 的 pseudo-code 如演算法 4 所式: 演算法 4 Function Accept(s ,best , goodT, bestF, bestIF ,T , w) 1: if F(best) < F(s) or 2: isFeasible(best) and F(best) < bestF or 3: not isFeasible(best) and F(best) < bestIF then 4: accept ← true; -(|(𝑓1′ (𝑏𝑒𝑠𝑡)-(𝑓1′ (𝑠))|×𝑤+|(𝑓2′ (𝑏𝑒𝑠𝑡)-(𝑓2′ (𝑠))|×(1−𝑤)). 5: else if exp(. ) > rand[0,1) then. 𝑇. 6: accept ← true; 7: else accept ←false; 8: if accept is true then 9: s ←𝑏𝑒𝑠𝑡; 10: if isFeasible(s) and F(s) < bestF or 11: not isFeasible(s) and F(s) < bestIF then 12: if isFeasible(s) then 13: bestF ← F(s); 14: 15: 16: 17: 18:. ρ ←ρ× 𝜃; else bestIF ← F(s); ρ ←𝜌⁄𝜃;. /* strategic oscillation */. /* strategic oscillation */. goodT ← T;. 19: end if 20: end if end Function 演算法 4:接受準則. 在模擬退火法中最重要的機率函式,如果使用適應函數來計算,因為做了極 值正規化的關係,此時的值會是一個 0 到 2 之間的小數(兩個目標適應函數的加總), 這樣的話溫度會相當難設定,因為差距不管再大都還是在此範圍之間,影響的效 果會變得非常低,讓差距很大的解也會有相當高的機率被選擇,因此在此部分本 論文採用將兩個目標函式相減之後再乘上 w 的做法,如演算法 4 中第 5 行。演算 法 4 中第 14 行與第 17 行為策略震盪的部分,此做法會依照實驗的需求增加,並 37.
(49) 不會每一個實驗都有策略震盪的機制。 若實驗採取隨機鄰域函式的方式,則會將演算法 2 中第 8 與第 10 行中設定 鄰域函式參數取消,並在演算法 3 中第 7 行的部分採取隨機選擇鄰域的方式,另 外如果選到較好的解也不會直接跳出模擬退火法,會把整個模擬退火法做完才結 束。 在本論文中使用 α 與 β 來控制溫度的降溫,並且在模擬退火法中有一次的升 溫機制,其溫度變化如圖 28 所示:. 圖 28:溫度變化示意圖. 在搜尋 SLS 的過程中,會使用 T0 來當作每個解的初始溫度,當作了一定的時 間(用 Gupdate 控制)後,利用 β 將初始溫度降溫,而在使用模擬退火法搜尋的過程 中,會將溫度用 α 來降溫,並且會有一次升溫的機制,然而因為升溫的溫度是採 用搜尋過程中最佳解的溫度,因此升溫時無法明確的知道溫度升的高度。. 3.5 更新候選解集合 (Update candidate solution set) 對所有 SLS 做區域搜尋法後,會將找到的所有解與 SP 中所有的解用 NSGA2 做選擇,留下較好的解並將不好的解替換掉,因為區域搜尋後的解會為最佳合法. 38.
(50) 解,所以除了起始的不合法解外,皆會被換成合法解;但是如果在區域搜尋的過 程中找不到合法解,那麼就會使用找到的最佳不合法解去做更新。此外為了不降 低變異度,目標函式重複的解也不會被放入 SP 中。. 3.6 代數改變 (Generation change) 在每次做完區域搜尋後,代數都會增加一。. 3.7 終止條件 (Stopping criterion) 本論文終止的代數(Gstop)依照問題集大小設定,用 n 的大小來當作合適的停 止次數,因為 n 小的問題搜尋時間較短,很快就能搜尋到最佳解,如果使用的終 止代數跟 n 大的問題一樣,則會浪費掉許多沒用的時間作搜尋;而 n 大的問題則 相反,搜尋次數過少很可能沒辦法搜尋到最佳解。. 3.8 鄰域函式改良 因為變動鄰域搜尋法中鄰域函式順序與搜尋能力影響其效能,所以本論文從 鄰域函式中找到最有用的鄰域函式,以避免在搜尋上浪費過多的搜尋時間,因此 做了針對鄰域的實驗,因為 SwapRounds 與 PartialSwapRounds 概念相同,不同的 只在於前者會將同回合中的所有解去做替換,而後者會對部分被影響到的隊伍去 做替換,如此一來可以避免過多的替換而使得解變成完全不同的樣子,所以本論 文認為後者的效能會比前者來的有用,替換的次數也會比較少;SwapTeams 與 PartialSwapTeams 的觀念也類似如此。 為了增加搜尋的效能與減少搜尋的時間,對於這兩個鄰域函式本論文做了些. 39.
(51) 改進,PartialSwapRounds 改進方法如圖 29 所示(負號代表客場):. 圖 29:PartialSwapRounds 改進範例. PartialSwapRounds 首先會選擇一個隊伍和兩個回合,圖 29 選擇隊伍 2 第 6 與第 9 回合來做交換,原先 PartialSwapRounds 的選擇機制是隨機選擇,然而這 樣會使得原本三個同地點的安排被打斷,例如前者原本三場比賽都在主場,但如 果換成-6 則會變成需要移動到客場再移動回主場,如此會增加此隊伍的旅行總距 離,為了避免此問題的產生,本論文將對於選擇到的回合做判斷,如果前後的隊 伍都與中間同樣的主客場關係,則不會挑選這樣的關係去做交換,但是如果兩個 回合的選擇都做這樣的判斷,那麼選擇的可能性會變得相當少,所以這樣的判斷 只對於第一回合的選擇做判斷,藉由此方式來增加 PartialSwapRounds 的效能; PartialSwapTeams 的機制類似以上所使用的機制。. 40.
(52) 第四章 實驗與分析 本章會先介紹測試問題、效能指標、測試環境,接著從單目標最佳化問題開 始實驗,確定改良過的鄰域函式是否有較好的效能,並將單目標最佳化問題發展 為多目標最佳化問題,利用兩種限制條件處理來做比較。. 4.1 測試問題 本 論 文 採 用 競 賽 旅 程 問 題 創 始 者 所 提 供 的 網 站 (Challenge Traveling Tournament Instances [16])中的以下幾組問題來驗證結果: (1) NL Instances 包含 3 個測試問題。 (2) Super Instances 包含 3 個測試問題。 (3) Galaxy Instances 包含 3 個測試問題。 (4) Circular Distance Instances 包含 3 個測試問題。. 4.2 效能指標 為了驗證效能,旅行總距離採用目前找到的最佳解當作效能指標,然而最長 旅行距離目前並沒有任何文獻能夠當作效能指標,因此將列出與自己的做法的比 較,並且列出所有找到的最佳解。. 4.3 測試環境 本論文演算法程式語言使用 C++來實作,作業系統為 Windows 7,CPU 為 Intel Core i7-3370,記憶體大小為 4GB,編譯環境為 Microsoft Visual Studio 2010。. 41.
(53) 4.4 參數設定 本論文首先針對演算法去做效能的檢測,各個實驗對問題集跑 10 次。 首先在區域搜尋法的部分使用迭代改良與模擬退火法做比較,模擬退火法溫 度設定方式採用以下式子: 𝑇0 = −. 𝑓. (15). ln(𝑝). f 代表兩個解適應函數的差距(∆𝑆 − ∆𝑆),p 代表當差距為 f 時模擬退火法能 跳動的機率,藉由這樣的式子去推算起始溫度,差距則是經過實驗之後預估的值, 初始溫度設定如表 4 所示: 表 4:初始溫度設定. Instance circ6 circ8 circ10 NL6 NL8 NL10 galaxy6 galaxy8 galaxy10 Super6 Super8 Super10. T0 2 2 4 400 500 600 40 40 50 400 400 600. 以下實驗的已知最佳解 (Best Known)採用 [16] 網頁中 May 10, 2013 更新時 的資料。各實驗為了實驗的公平性,將全部實驗採用相同的參數設定,而使用的 鄰域在各實驗會做說明,參數如表 5 所示:. 42.
(54) 表 5:參數設定. 參數名稱 |SP| |SLS| maxC maxP maxR maxE Gupdate α β θ κ Treheat εrate. 設定值 50 21 10 1200 2 500000 3 0.999 0.95 1.04 1.5 1.5 1. 每個問題的搜尋次數(Gstop)會依照問題集的大小來做設定,如表 6 所示: 表 6:Gstop 參數設定. 設定值 6 16 30. n 6 8 10. 如此一來每個實驗的解生成數會相同,成為一個公平的實驗,而時間上的差 距為使用的鄰域不同而導致的差距。. 4.5 單目標最佳化實驗 首先對於此問題是否會在搜尋的過程中卡在區域最佳解,而需要使用到能夠 跳脫區域最佳解的搜尋方法,因此做了迭代改良與模擬退火法的實驗:. 4.5.1. 迭代改良與模擬退火法比較. 本實驗利用迭代改良法與模擬退火法做比較,以確定使用基本的迭代改良無 法達到區域搜尋的效能,而是需要使用能夠跳脫區域最佳解的方法來提升效能。 其中迭代改良的部分是將演算法 2 中第 6 行使用模擬退火法改成使用迭代改良法,. 43.
(55) 此實驗採用隨機變動鄰域搜尋法來當作鄰域的選擇方式,採用 SwapHomes、 SwapRounds、SwapTeams、PartialSwapRounds、PartialSwapTeams 五種鄰域函式。 此實驗結果如表 7 所示: 表 7:迭代改良與模擬退火法實驗結果 Instance circ6 circ8 circ10 NL6 NL8 NL10 galaxy6 galaxy8 galaxy10 Super6 Super8 Super10. Best known 64 132 242 23916 39721 59436 1365 2373 4535 130365 182409 316329. II(Min/Avg). Time(Sec). feasible. SA(Min/Avg). Time(Sec). 64/66 150/155.75 308/308 24073/24781.40 42061/44817.29 70576/72842 1365/1395.90 2573/2708.10 5284/5386 130365/137241.70 196243/213947 365432/388393.44. 44.80 184.62 486.58 45.25 184.41 482.22 44.68 186.53 491.32 44.66 184.98 489.75. 10 8 1 10 7 4 10 10 5 10 10 9. 64/64 132/132 248/256.80 23916/23916 39721/39721 59583/60130.50 1365/1365 2373/2373 4548/4611.10 130365/130365 182409/182487.50 320701/322663.40. 52.36 197.26 519.80 51.98 198.08 508.95 53.49 201.44 522.67 50.16 196.64 513.50. 在表 7 中 feasible 代表在迭代改良中找到合法解的數量,Min 為搜尋到的合 法最佳解,Avg 為搜尋到的解平均,Time 為搜尋所花的平均時間,因為迭代改良 無法跳脫區域最佳解,所以很有可能會被困在不合法解中,因此在迭代改良最小 值與平均的部分,只有使用搜尋到的合法解來做計算。由結果可看出使用模擬退 火法找到的結果比迭代搜尋好,這意味著在迭代搜尋時,可能卡在區域最佳解而 無法降到全域最佳解,反之,使用模擬退火法能夠跳脫區域最佳解,因此在本論 文採用模擬退火法當作區域搜尋法的方法。然而在兩個實驗的時間上有所差距, 且會在沒有進步固定的代數之後終止,因此迭代搜尋法很快速地卡在區域最佳解, 所以花費的時間會比使用模擬退火法少很多。. 44.
(56) 4.5.2. 變動鄰域函式與隨機鄰域函式比較. 因為在文獻中有使用到變動鄰域函式,因此本實驗利用變動鄰域函式與隨機 鄰域函式做比較,以幫助我們選擇效能較好的鄰域函式。此實驗採用模擬退火法 當 作 區 搜 尋 法 , 鄰 域 函 式 採 用 SwapHomes 、 SwapRounds 、 SwapTeams 、 PartialSwapRounds、PartialSwapTeams 五種鄰域函式,並依照以上順序當作變動 鄰域函式的順序,此實驗結果如表 8 所示: 表 8:變動鄰域函式與隨機鄰域函式實驗 Instance circ6 circ8 circ10 NL6 NL8 NL10 galaxy6 galaxy8 galaxy10 Super6 Super8 Super10. Best known 64 132 242 23916 39721 59436 1365 2373 4535 130365 182409 316329. VNSA(Min/Avg). Time(Sec). randSA(Min/Avg). Time(Sec). 64/64 134/135.80 262/270.80 23916/23944 39721/39968 60075/62300.20 1365/1365 2373/2378.20 4711/4757.00 130365/131540.70 184738/186076.20 328344/331195.30. 44.03 175.58 476.99 43.47 174.79 468.48 44.84 177.88 477.91 41.97 172.72 470.33. 64/64 132/132 248/256.80 23916/23916 39721/39721 59583/60130.50 1365/1365 2373/2373 4548/4611.10 130365/130365 182409/182487.50 320701/322663.40. 52.36 197.26 519.80 51.98 198.08 508.95 53.49 201.44 522.67 50.16 196.64 513.50. 由表 8 可以發現使用變動鄰域函式後,反而使效能變差,本論文認為鄰域函 式的順序可能會決定變動鄰域函式搜尋的效能,因為在搜尋的過程中,如果找到 更好的解,會馬上回到順序第一的鄰域函式去作搜尋;如果搜尋能力較差的鄰域 函式放在較前面,會讓此鄰域函式把大部分搜尋的時間都佔據,導致搜尋的效能 輸給隨機選擇的方式。另外,使用五個鄰域函式對搜尋競賽旅程問題的搜尋效能 還有待改進,因此本論文為了改進變動鄰域函式的效能作了鄰域函式效能改良實 驗。. 45.
(57) 4.5.3. 改良後鄰域函式與改良前鄰域函式比較. 在此實驗中利用改良的 PartialSwapRounds 和 PartialSwapTeams 替換掉原先 的版本,比較隨機鄰域函式與變動鄰域函式使用改良鄰域前後的差別,隨機鄰域 函式結果如表 9 所示,new 代表使用改良鄰域函式: 表 9:隨機鄰域函式使用改良鄰域實驗 Instance circ6 circ8 circ10 NL6 NL8 NL10 galaxy6 galaxy8 galaxy10 Super6 Super8 Super10. Best known 64 132 242 23916 39721 59436 1365 2373 4535 130365 182409 316329. randSA(Min/Avg). Time(Sec). randSA_new(Min/Avg). Time(Sec). 64/64 132/132 248/256.80 23916/23916 39721/39721 59583/60130.50 1365/1365 2373/2373 4548/4611.10 130365/130365 182409/182487.50 320701/322663.40. 52.36 197.26 519.80 51.98 198.08 508.95 53.49 201.44 522.67 50.16 196.64 513.50. 64/64 132/132 254/257.8 23916/23916 39721/39721 59583/60067.80 1365/1365 2373/2373 4584/4614 130365/130365 182409/182425 318767/322599.40. 48.83 186.42 498.76 48.37 186.91 488.48 49.78 189.15 498.49 46.86 185.98 487.13. 變動鄰域函式實驗結果如表 10 所示,new 代表使用改良鄰域函式: 表 10:變動鄰域函式使用改良鄰域實驗 Instance circ6 circ8 circ10 NL6 NL8 NL10 galaxy6 galaxy8 galaxy10 Super6 Super8 Super10. Best known 64 132 242 23916 39721 59436 1365 2373 4535 130365 182409 316329. VNSA(Min/Avg). Time(Sec). VNSA_new(Min/Avg). Time(Sec). 64/64 134/135.80 262/270.80 23916/23944 39721/39968 60075/62300.20 1365/1365 2373/2378.20 4711/4757.00 130365/131540.70 184738/186076.20 328344/331195.30. 44.03 175.58 476.99 43.47 174.79 468.48 44.84 177.88 477.91 41.97 172.72 470.33. 64/64 132/133.60 260/267.60 23916/23916 39721/39854.30 60642/61521 1365/1365 2373/2373.80 4619/4711.50 130365/130365.50 182480/184096.20 325653/327001.60. 41.14 165.32 457.23 40.60 166.55 450.46 42.25 168.99 457.65 39.52 165.66 449.82. 由以上兩個實驗可以看出改良後的鄰域函式能夠有效的去做搜尋,比原先使 用的 PartialSwapRounds 和 PartialSwapTeams 的搜尋更適合競賽旅程問題。. 46.
(58) 4.5.4. 變動鄰域函式順序比較. 此實驗先針對鄰域函式的順序列出幾個方式,並依照這些順序去做變動鄰域 函式,鄰域函式順序在本實驗中有以下幾種 (SH 代表 SwapHome、SR 代表 SwapRounds、ST 代表 SwapTeams、PSR 代表 PartialSwapRounds、PST 代表 PartialSwapTeams,此實驗目的是測試鄰域順序是否影響效能,因此 PSR 與 PST 只用 [5] 提出的版本): (1) SH SR ST PSR PST (原先的版本) (2) SR ST SH PSR PST (3) SR ST PSR PST SH (4) PSR PST SH SR ST (5) PSR PST SR ST SH 實驗結果如表 11 所示,第一行數字代表 Min,第二行代表 Avg:. 47.
相關文件
現在多半使用改良的 電水壺或快煮壺,能縮
俁病」 ,銅等 含鎘…. SH
2-1 化學實驗操作程序的認識 探究能力-問題解決 計劃與執行 2-2 化學實驗數據的解釋 探究能力-問題解決 分析與發現 2-3 化學實驗結果的推論與分析
推理論證 批判思辨 探究能力-問題解決 分析與發現 4-3 分析文本、數據等資料以解決問題 探究能力-問題解決 分析與發現 4-4
應用閉合電路原理解決生活問題 (常識) 應用設計循環進行設計及改良作品 (常識) 以小數加法及乘法計算成本 (數學).
健康及道德議題 (3 小時) • 辨別使用資訊及通訊科技對健康造成的 威脅;建議在使用資訊及通訊科技時,實
COBOL 語言發表於西元 1960 年,經 過不斷修改、豐富完善和標準化,被廣 泛應用在財經、會計、統計、人事等商
表 3-2 昇井鑽機(Raise Boring Machine)主要用途表 【7】. 應用領域