第四章 演算法設計
4.1 演算法架構
本研究使用模擬退火法為基礎,並因題目特性再作改良。模擬退火演算法 在產生一組鄰近解時,運用的是行駛順序交換,此部分將於 4.2 節說明,而本 研究靜態配置最佳化問題為收送貨車輛途程問題,當行駛順序不同時,將連帶 影響各站可搬運量,在兩項變數皆會受影響的情況下,若鄰近解為較佳的行駛 路線,卻有可能因隨機搬運量的不同而產生不同的成本,因此,本研究將改善 鄰近解只能運算其行駛路線中可行的一組搬運數量,增加同一行駛路線下不同 搬運量之可行解,使其更為有效的找出最佳解。
本研究所使用演算法流程如圖 3 所示。第一步設定各項參數,所使用的參 數:I 為嘗試次數,其初始值為 0,最大嘗試次數為 Iiteration;N 為未改善次數,
其初始值為 0,Nnon-improving為最大未改善次數;T 為溫度,T0為最初溫度,
Tfinal 為最終結束溫度;α為冷卻率;X
best為目前最佳解、Fbest為最終最佳解、K 值為 Boltzmann 常數。完成參數設定後,產生初始解,嘗試次數 I=I+1,累計
未改善次數 N=N+1,其後抽取一 0 到 1 之間的隨機數 r1,以累計未改良次數 N 作為判斷,判斷目前是否已許久未找到新的最佳解,若 r1<N/Nnon-improving則取得 目前 Fbest的行駛路線計算新一組鄰近解,當越久未出現新的最佳解時,N 數值 越大,再次使用 Fbest的行駛路線機率越高,進而有更多機會找到較佳行駛路線 下的不同搬運量之可行解;否則重新產生新路線,並計算總成本後,判斷是否 小於目前的解,即判斷 Obj(Y) - Obj(X)≦0,是則使 X=Xbest以 Y 取代 X;否則產
23
生一個在 0 到 1 之間的隨機數 r2,判定 r2是否小於𝑒(−𝐾𝑇∆),是則以 Y 取代 X;否 則重新產生新解,由嘗試次數 I=I+1 開始。以 Y 取代 X 後得到新的目標解
Obj(X),檢查 Obj(X)是否小於目前的最佳解 F
best,是則更新目前的最佳解 Fbest以及將未改善次數 N 歸零,並檢視嘗試次數 I 是否達到最大嘗試次數 Iiteration; 否則直接檢視嘗試次數 I 是否達到最大嘗試次數 Iiteration,是則改變溫度;否則 重新產生新解,最後判斷溫度 T 是否小於等於最終溫度 Tfinal或未改善次數 N 是 否等於最大未改善次數 NNon-improving,是則結束;否則重新產生新解。
為了得知增加同一行駛路線下不同搬運量之可行解,是否能更為有效的找 出最佳解,因此比較加入𝑟1<N/NNon-improving此步驟前後的差異。表 3 為 2016 年 8 月 16 日題組加入𝑟1<N/NNon-improving此步驟前後的差異,經過比較,得出加入這 個步驟能有效找出更低成本之解。
表 3 改良前後之模擬退火法比較 參數設定值
原始成本 改良後成本 改良百分比
T
0T
final αI
iterationN
Non-improving100 0.01 0.965 10000 80 1876.11 1536.68 18.09%
24
開始
T =T0, I =0, α, Fbest=Obj(X), N=0 隨機產生初始解X;Xbest=X
Δ=Obj(Y)–Obj(X)≦0 Generate of r2 ~ U(0,1)
r2 < e(-Δ/KT) Xbest=X ; Let X=Y
Obj(X)<Fbest Fbest=Obj(X) ; N=0
I=Iiteration
T=αT
T≦Tfinal or N=NNon-improving
Y
r1<N/NNon-improving
產生新路線
25 4.2 路線順序規劃型態
一個好的路徑可以有效降低成本,因此,有關路線規劃問題中,常見的做 法多為在上一組路徑中選出兩站進行交換、插入或反轉得到新路線。以下為交 換、插入和反轉的規則說明:
1.
交換(Swap):由卡車的配送路線中隨機選出兩站,將這兩站的順序位置互換,得到一 條新的路線。如圖 4,若原路線為:1-2-3-4-5-6-7-8-9-10,隨機選出第 4 站與 第 9 站,將兩站互換,得到新的路線為:1-2-3-9-5-6-7-8-4-10。
圖 4 交換型態圖示
2.
插入(Insert):由卡車的配送路線中隨機選出兩站,將順序較後的站插入順序較前的另 一站之前,得到一條新的路線。如圖 5,若原路線為:1-2-3-4-5-6-7-8-9-10,
隨機選出第 5 站和第 7 站後,將第 7 站插入原路線中第 5 站之前,得到新路 線為:1-2-3-4-7-5-6-8-9-10。
圖 5 插入型態圖示
3.
反轉(Reverse):由卡車的配送路線中隨機選出兩站,將這兩站之間的所有站之順序倒置,
26
在放置回該路線上的同一位置,得到一條新的路線。如圖 6,若原路線為:
1-2-3-4-5-6-7-8-9-10,隨機選出第 2 站與第 7 站,將兩站之間的所有站(2-3-4-5-6-7) 順序倒置,得到新路線為:1-7-6-5-4-3-2-8-9-10。
圖 6 反轉型態圖示
27
徑,將無法有效的解決問題,因此本研究只保留選擇選取兩站的方法,從路線中 選出兩站後,同初始解各區內考慮前站需求情況進行排列的方式,於選出的這兩 站之間進行排列。
4.2.1 搬運量演算方式
本節分別說明全部隨機、全部滿足、有限制之隨機、部分隨機不搬運及部
分不搬運五種搬運量演算方式之定義,下列敘述中,「此站」定義為卡車欲前
往搬運的站,其他相關要件如圖 8 所示。
前站
此站距離此站
下站距離下一站
圖 8 搬運量相關要件說明圖 1. 全部隨機
各站搬運時,若行駛至缺車站,決定此站需求上限為
min (卡車上自行車數量, 此站缺車數量);
若行駛至缺位站時,需求上限則為
min (卡車可放容量, 此站缺位數量),
再隨機抽取 0 至需求上限之數量做為此站搬運量。另外,若為該台卡車的最 後一站,搬運量則是取能使卡車上自行車為零的搬運數量。
28
2. 全部滿足
各站搬運時,直接滿足需求上限(同全部隨機方式之計算)之數量做為 各站搬運量。另外,若為該台卡車的最後一站,搬運量則是取能使卡車上自 行車為零的搬運數量。
3. 有限制之隨機
各站搬運時,先判斷此站與下一將行駛站需求狀況,若兩站需求狀況相 同,皆為缺車站或皆為缺位站,且此站需求上限(同全部隨機方式之計算)
大於設定數量,即為目前卡車上自行車數量(或可放容量)有較佳之能力可 連續滿足兩站需求,則此站搬運量隨機範圍將因下站需求量多寡按機率減少,
意指若下一站需求量越大,則此站減少能滿足之上限,使需求量較大的下一 站更為滿足;反之,若此站需求量大於下一站,則提高此站搬運下限。另外 一情況為此站與下一站需求情況相反,一為缺車站一為缺位站時,相加此兩 站需求量,加總需求量越高則此站將有越高機率提高搬運下限,使此站完成 更多需求量,便能同時讓下站滿足更多所需數量。再於調整後搬運下限至搬 運上限隨機抽取做為此站搬運量。其餘不需調整搬運限制狀況時,做法與全 部隨機相同。同樣,若為該台卡車的最後一站,搬運量則是取能使卡車上自 行車為零的搬運數量。完整流程圖如圖 9 所示。
29
30
31
32
33
34
稱 a 站)周邊的 2 倍平均區域大小,即周邊 30 站的範圍。a 站及 b 站選擇 規則,首先判斷 a 站是否為路線中的起始站或終點站,若是,則 b 站由路線 中隨機選擇(b 站不等於 a 站),否則判斷 a 站的位置。根據 a 站的位子,b 站有一半的機率從全部站點中隨機選取,另一半的機率是從 a 站往前 30 站 或往後 30 站的範圍中選取,例如:隨機取出的 a 站是第 20 站,位於起始站 到 30 站之間,所以 b 站有 1/2 的機率由路線中隨機選擇(但 b 站不等於 a 站),有 1/4 的機率從第 21 站到第 50 站之間隨機選取,有 1/4 的機率由第 1 站到第 19 站之間隨機選取,如圖 12 所示。完整流程圖於圖 13 呈現。
圖 12 a 站為第 20 站之 b 站選擇範圍
3. 全部兩區域
與部分兩區域內選擇方式大致相同,不同的是,皆由 a 站的前後 30 站 範圍內選取 b 站,藉由重新排列 a、b 兩站之間的路線,產生鄰近解。
4. 兩行政區內
與卡車所負責兩區域內 30 站點選取方式相似,但改為由行政區做為劃 分,以台北市為例,行政區共分為 12 區,按相鄰順序分別是北投區、士林 區、內湖區、南港區、信義區、松山區、中山區、大同區、萬華區、中正區、
大安區及文山區。作法為隨機抽取其中一區,再選擇此區鄰近一區,從此兩 區內抽取 a 站及 b 站,重新排列 a、b 兩站之間的路線,產生鄰近解。
35
r2=random(1,4) r2=random(1,4) r2=random(1,4)
r2=1,r2=2
36 4.2.3 分析
將前兩小節所提到的搬運量及路線範圍演算方式組合搭配,使用 2016 年 8 月 16 日資料,以行政區做分區,分別測試一區(20 站)、兩區(43 站)、六區(125 站)及十二區(255 站)題目,藉以分析各類演算法解題效能。(使用參數:T0: 100;Tfinal:0.1;α:0.965;Iiteration:100000;NNon-improving:80。)測試結果顯 示,搬運方式的部分,「全部滿足」、「部分隨機不搬運」和「部分不搬運」這三 種方式求解會得到較好的結果,彼此間差異不大,若測試的區域增加,可以發 現「部分不搬運」能得到最好的結果。而在路線選區方式的部分,這四種方式 的差異並不明顯,其中十二區(255 站)的測試結果,可以發現「部分不搬運」的 搬運方式搭配「全部兩區域內」的路線選取方式所得到的結果最佳,因此本研 究將採用「部分不搬運」的搬運方式搭配「全部兩區域內」的路線選取方式解 題。
表 8 至表 11 分別為一區(20 站)、兩區(43 站)、六區(125 站)及十二區(255 站)測試結果,其中粗體字表示的結果為該區域測試組合中最低的結果。
表 8 一區(20 站)測試結果 搬運方式
路線 選取方式
全部隨機 全部滿足 有限制之 隨機
部分隨機 不搬運
部分
不搬運 平均
全部區域 66.0106 49.0305 55.6754
48.3463 48.3463
53.48173237
平均 960.2685 617.70725 885.8835 640.9755 615.5498 744.0769表 11 十二區(255 站)測試結果 平均 2104.1275 1555.69 2008.2175 1683.8875 1541.8975 1778.764
38
第五章 實驗結果與分析
本研究以 C++程式語言編譯 SA 演算法,並於處理器 Intel Core i7-6700,記 憶體 4 GB,作業系統為 Windows 7 旗艦版的個人電腦上進行實驗。選擇流動率 較低而趨近於靜態之晚上十一點即時資訊,運用台北市 YouBike 系統線上公開 資訊建立題組進行測試。
5.1 題組說明
本 研 究 之 運 算 題 組 根 據 YouBike 台 北 市 公 共 自 行 車 官 方 網 站 (http://taipei.youbike.com.tw/cht/index.php)台北市各租借站及時資訊,並藉由參訪 微笑單車公司取得更多相關資料,建立 2016 年 8 月 12 日至 2016 年 8 月 18 日 一週間每晚 11 點題組。表 12 為題組相關資訊,其中每站最佳數量訂為該站容量 一半,而總需求量為加總每站目前站上數量與最佳數量之差,未滿足最佳數量的 懲罰成本為平均各行政區內行駛時間的三分之一,每台卡車行駛時間限制則是以 參訪時取得資訊:一台卡車負責十五站,以平均各行政區內行駛時間乘以十五站 作為限制。(註:行駛時間以時速五十公里計算)
表 12 題組相關資訊
題組 總站數 卡車數量 總需求數量 懲罰成本 行駛時間限 制(分鐘) 20160812-10 10 1 66 0.9265 41.6912 20160816-20 20 1 157 0.9290 41.8053 20160816-28 28 2 205 0.9290 41.8053 20160812-254 254 16 2578 0.9265 41.6912 20160813-254 254 16 2638 0.9265 41.6912 20160814-254 254 16 2702 0.9265 41.6912 20160815-254 254 16 2824 0.9265 41.6912 20160816-255 255 17 2462 0.9290 41.8053 20160817-255 255 17 2708 0.9290 41.8053 20160818-255 255 17 2669 0.9290 41.8053
39
數(NNon-improving)和冷卻率(α)。藉由實驗找出解題效率最高的參數組合,以下將
分別說明單因子實驗設計、績效衡量標準以及實驗結果。
40 5.3.1 績效衡量標準
求得最低成本為最終目標,因此將演算法求得之最終解,即「演算解」,訂 為衡量績效的因子,演算解越低表示績效越高。
5.3.2 單因子實驗設計
使用單因子實驗進行參數設定分析,欲找到模擬退火法中的五個參數的最佳
使用單因子實驗進行參數設定分析,欲找到模擬退火法中的五個參數的最佳