• 沒有找到結果。

第四章 演算法設計

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

0

T

final α

I

iteration

N

Non-improving

100 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.481732

37

平均 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 單因子實驗設計

使用單因子實驗進行參數設定分析,欲找到模擬退火法中的五個參數的最佳

使用單因子實驗進行參數設定分析,欲找到模擬退火法中的五個參數的最佳

相關文件