第三章 車輛人員排班問題與求解演算法
3.4 區域搜尋
3.4.2 班次間插入
本研究提出區域搜尋之班次間插入法係參考車輛排程問題之鄰域搜尋中的 Reduction 所加以改良而成,將執行班次數量最少之勤務工作內容打散後儲存於插 入暫存區,爾後針對其他勤務進行探索搜尋之動作,尋找適當插入空間,將暫存 區之班次分別插入其他勤務內;而此方式包含兩部分之動作,其一為暫存區班次 取代其他勤務內之空駛班次後,插入適當勤務中;另一方式為搜尋其他勤務之執 行工作內容是否仍有插入班次之空間,若滿足插入條件則將暫存區班次插入適當 勤務中。班次間插入法之演算方式如圖3.10 所示,其詳細步驟如下:
(一) 首先找尋出單組勤務解內之最短勤務,將該勤務工作內容放置插入暫存 區,以待後續逐一進行插入空間之搜尋,並將該勤務自原勤務解中刪除。
(二) 搜尋暫存班次是否得以取代其他勤務內之空駛班次,若為是則將暫存班 次取代該勤務內之空駛班次,並刪除插入暫存區之暫存班次;若判斷為 否,則進行下一步驟。
(三) 搜尋其他勤務內是否具有暫存班次插入之空間,若判斷為否,則進行下 一暫存班次之搜尋,直至所有暫存班次皆進行過尋找動作後,進行下一 步驟;若判斷為是,則判斷可插入之空間是否具有空駛班次,若判斷結 果為是則先將原空駛班次移除後插入暫存班次;若判斷為否,則新增一 空駛班次後插入暫存班次,然後移除已插入勤務之暫存班次,回到步驟 二。
(四) 所有暫存班次皆進行過尋找動作後,仍有剩餘班次存在於插入暫存區 時,則將暫存區之班次進行重組後加入原勤務解當中。
搜尋單組勤務解 之最短勤務 插入法開始
將最短勤務內之班次 存放於插入暫存區
暫存區內之班次是否 皆搜尋過插入空間
暫存班次 取代空駛班次 刪除暫存區內
已插入勤務之班次
是 將插入暫存區之秤 於班次進行重組 加入原勤務解中 否
對其他勤務 逐一進行搜尋
暫存班次是否可取代 勤務內之空駛班次 是
否
暫存班次是否可插入 勤務內之班次間
勤務內之插入空間 是否含有空駛班次
刪除原空駛班次 暫存班次 插入可插入之空間
添加空駛班次 是
否
是 否
結束插入法
圖3.10 區域搜尋之班次間插入法
以下簡單說明進行班次間插入法所遇到的情況:
一、暫存班次取代空駛班次
如圖3.11 所示,當發現插入暫存區內的班次可取代其他勤務內之空駛班 次時,如圖3.11 將勤務內的空駛班次移除後,插入暫存區班次。
圖3.11 暫存班次取代空駛班次 二、暫存班次插入前無空駛班次位置
如圖3.12 所示,當發現暫存區有可插入勤務之班次,而原勤務內無空駛 班次,則將暫存班次插入後在插入班次之前增加一個空駛班次以維持班次銜 接起迄同站之限制。
時間
A B
勤務Run[0]
B C C A
A B B C
插入 暫 存區
時間
A B B C C A
B C
A B
B A
插入班次
時間
A B A A B C C A
勤務Run[0]
勤務Run[0]* 插 入暫 存 區
(1)
(2)
(3)
圖3.12 暫存班次插入前無空駛班次位置 三、暫存班次插入前有空駛班次位置
如圖3.13 所示,當發現暫存區有可插入勤務之班次,但原勤務內有空駛 班次,則先將原勤務內之空駛班次移除,後把暫存班次插入,同樣的在插入 班次之前增加一個空駛班次以維持班次銜接起迄同站之限制。
時間
A B
勤務Run[0]
A C
A B
C 插入
暫 存 區
時間
A B C A
待插入班次
時間
A B A C C A
勤務Run[0]
勤務Run[0]* 插 入 暫存 區
C B
A B
C B
B C
(1)
(2)
(3)
圖3.13 暫存班次插入前有空駛班次位置