• 沒有找到結果。

第三章 研究架構

3.4 可準時抵達目的地之最晚出發時間之分析

3.4.3 求解步驟

步驟一:初始化並建立 Scan Eligible List。

設定上午尖峰、下午尖峰以及離峰時段之範圍,令欲到達迄點 N 之時間 為 ,其他節點出發時間 = -1,其中 i ={1,2,…,N-1},且 ,。

並將迄點N 加入至 SE list。

nt

N

nt

i

ns

2N

= N

步驟二:選擇目前節點。

判斷 SE list 是否為空集合,若是則跳至步驟五;若否,則從 list 集合中選 取第一個節點,令為節點j。

步驟三:建立暫時的標籤ϑi1及ϑi2

1. 搜尋節點 j 的所有上游點

i

∈Γ1(

j

)(即∀

i

( j

i

, )∈Α)

2. 記錄目前節點 j 為節點 i 的下游點標籤ϑi2

3. 判斷目前節點 j 所屬時段,並根據節線(i,j)在此時段所相對應的最 小旅行時間

t

1i, j,決定上游點i 之出發時間ϑi1,如式(9)所示。

ϑi1

nt

j

t

i1, j ………(9)

4. 判斷ϑi1

nt

j是否屬於同一時段,若是則跳至步驟四;若否則往下一

步驟。

1

論點 3 :若經過一節線

(i,jx)∈A

前後屬於不同時段,只有當

1

1 完整路網(complete graph),則迄點的上游點最多可能包含 v-1 個節點,因此 須將這些節點將入至SE list 中,亦即為第一個 Iteration 結束後 SE list 有 v-1

3.4.5 演算法之範例

本小節將以前述之演算法求解一簡單範例。首先,建立一具有方向性並包含 四個節點之小型網路,如圖3-2,其相關的網路資料見表 3-5。

圖3-2 Miller-Hooks and Mahmassani 演算法範例說明之網路圖[6]

表3-5 範例網路之相關資料

節線 節點 i 節點 j 時段 旅行時間1(機率) 旅行時間2(機率)

上午尖峰 15~20(0.2) 20~25(0.8)

下午尖峰 13~18(0.4) 18~23(0.6)

a 1 2

離峰時段 10~15(0.1) 15~20(0.9)

節線 節點 i 節點 j 時段 旅行時間1(機率) 旅行時間2(機率)

上午尖峰 20~25(0.3) 25~30(0.7)

下午尖峰 12~17(0.4) 17~22(0.6)

b 1 3

離峰時段 7~12(0.8) 12~17(0.2)

上午尖峰 18~23(0.9) 23~28(0.1)

下午尖峰 25~30(0.7) 30~35(0.3)

c 2 3

離峰時段 12~17(0.1) 17~22(0.9)

上午尖峰 11~16(0.7) 16~21(0.3)

下午尖峰 16~21(0.4) 21~26(0.6)

d 2 4

離峰時段 8~13(0.5) 13~18(0.5)

上午尖峰 24~29(0.8) 29~34(0.2)

下午尖峰 15~20(0.6) 20~25(0.4)

e 3 4

離峰時段 11~16(0.1) 16~21(0.9)

求解若欲在早上九點十分前到達節點4,可最晚從節點 1 出發之時間以及 相對應的路徑。此外,以下為方便計算均將時間顯示轉化成以分鐘為單位表 示。計算過程如下:

Iteration 1 步驟一:

V = {1,2,3,4}

A = {a,b,c,d,e}

定義尖離峰時間範圍

上午尖峰時段 = AM 7:30 ~ AM 9:00 = 450 ~ 540 下午尖峰時段 = PM 5:00 ~ PM 7:30 = 1020 ~ 1170 離峰時段 = 一天中尖峰時段以外的時間

迄點N = 4

預計到達迄點時間

nt

4= AM 9:10 = 550

預計到達其他節點的時間先設定為一極小值,

nt

i = -1 for i = {1,2,3}

令迄點4 的下游點為自己,故ns24 =4 將迄點加入至SE list 中,SE = {4}

步驟二: 從 SE list 取出第一個節點,設為 j = 4,則 SE = {}

步驟三: 對節點 4 而言,其上游點

i ∈ { 2 , 3 }

,依序計算所有上游點的最晚出 發時間,因此先選擇節點2,i = 2,其下游點暫時標籤為

ϑ

22 =4。

首先判斷

nt

4所屬時段,540 <

nt

4= 550 < 1020,故屬於離峰時段

節點 2 需經過節線 d 才能到達節點 4,因此根據 所屬時段尋找經過節 線d 所需花費的最小旅行時間 , = - = 550 - 8 = 542

nt

4

1 1

1

4 ,

t

2

ϑ

21

nt

4

t

2,4

判斷

nt

2所屬時段,540 <

nt

2= 542 < 1020,故屬於離峰時段

nt 和

4

nt

2屬於同時段,因此不需改變旅行時間。

i = 3

nt

3 =

nt

4

t

3,4 = 550 - 11 = 539

450 <

nt

3 = 530 < 540,故屬於上午尖峰時段

nt 和

4

nt

3屬於不同時段,因此需重新計算旅行時間,此時分段的時間點 540

Q3,4 =

18 . 11 12

539 -24 540 540

1

550

4 ,

3

= − + × =

t

537.82 12.18

-4 550

,

3 = =

t

1 步驟四:

比較出發時間的暫時標記和永久標記,若前者值較大,則需更新至永久標

籤,並將該節點加入至SE list

542 1}

- nt , 542 max{

nt2 =

ϑ

21 = 2 = = , ns2 =

ϑ

22 =4 ,故 SE = {2}

537.82 1}

-nt , 537.82 max{

nt

3

=

ϑ31

=

3

= =

ns

3

=

ϑ32

= 4

,故SE = {2,3}

依此類推,最後測試結果之路徑為節點1→2→4,在各節點可最晚出發時 間如表3-6。

表3-6 最快到達之最短路徑演算法之範例結果

節點 最晚出發時間 路徑

1 AM 8:48(528) 1→2→4 2 AM 9:02(542) 2→4 3 AM 8:57.82(537.82) 3→4

相關文件