---
# System prepended metadata

title: CROWDDELIVER
tags: ['package delivery path planning ', ' Urban areas', graph theory]

---

## CROWDDELIVER: Planning City-Wide Package Delivery Paths Leveraging the Crowd of Taxis

[crowddeliver: Planning City-Wide Package Delivery Paths Leveraging the Crowd of Taxis ](https://ieeexplore.ieee.org/abstract/document/7575702)


## Abstract
快遞需求量提升，本文提出經濟的快遞服務: **CROWDDELIVER** 。
設計分為兩階段，第一階段:透過**歷史計程車軌跡數據**來識別給定起終點的最短包裹傳遞路徑並估計時間。第二階段:開發**即時調度算法**，根據實時請求找出最佳路徑。


## Introduction
隨著快遞需求量提升，__減少遞送時間__、__降低遞送成本__，為首要目標，透過 **包裹與計程車乘客共乘** 的方式，在不提升成本的前提下，最大化計程車載客與送貨效益。

透過以上方法將有以下優點:
1. 	**遞送機會豐富**:計程車為目前城市主流的交通方式。
1. 	**全時段營業**:計程車在深夜等非尖峰時段仍會營業，因此這項遞送服務可以全天候不間斷運行。
1. 	**符合環保效益**:只需透過原在城市中的計程車進行遞送，不須額外指派車輛，造成跟多污染排放以及更多環境負擔。
	
**問題與挑戰** : 因為計程車載客的距離有限，無法達成遠距離的包裹遞送，因此需要多輛計程車進行多輛中繼傳遞，因此產生以下兩項問題與挑戰。
1. 	中繼遞送的**時間估計**問題。
1. 	乘客起始目的路線與包裹遞送的**路徑規劃調度**。
	
本文主要貢獻 : 
1. 	利用計程車之間 **非刻意** 合作達成遞送目標POI減少建設包裹儲存站之需求。註:(POI)熱門景點，如餐廳、商場、體育館等。
1. 	透過 __CROWDDELIVER兩階段__ 路線規劃找出最佳路徑
*    **階段一**:透過歷史計程車路線以及(NHPP)模型預測最短路徑與估計時間
*    **階段二**:透過實時的叫車需求演算法(AdaPlan)所預估時間來與第一階段之時間做比較和優化。

## Assumptions
* **Assumptions 1**
計程車以載送乘客為主要目標，計程車尖峰時段不能被用以遞送包裹需求。

* **Assumptions 2**
假定在某種適當的激勵下，計程車司機都會願意接下遞送需求的訂單。
	
* **Assumptions 3**
所有包裹都經過追蹤與管理確保包裹損壞或遺失之問題能夠被解決。

## Problem Statement
**給定條件**
1. 	道路網路 G(N,E) 和 包裹寄放站集合CS
1. 	計程車歷史軌跡集合 Tr
1. 	即時計程車訂單TOR、即時包裹訂單PR
	
==**目標 : 最小化包裹交付時間**==

**限制條件**
1. tor.tt > pr.tp 包裹訂單請求時間需早於計程車訂單請求時間。
2. 計程車須在完成當下包裹遞送任務後才能繼續接受遞送請求。


## Overview of CROWDDELIVER System
1.  **Data Pre-processing**
對POIs進行篩選，先選擇**靠近道路兩側的POI**，並對於路網上的邊**每一個行駛方向只選擇一個POI**。將行駛軌跡轉換為一系列邊，並定義起始與目標邊以及行程開始結束之時間。
1. **Offline Trajectory Data Mining**
分析過去數據，乘客乘坐計程車的時段以及路徑來規劃包裹形成。選擇**適當的POI**作為中繼站最小化包裹遞送時程。
1. **Online Package Routing1**
透過**歷史資訊**與**即時數據**相互比較計算得出最佳路徑與時間。


## TWO-PHASE APPROACH
### **Phase I** : Offline Tragectory Data Mining
    
根據**歷史軌跡**做遞送路線規劃，首先先將一整天24h分成不同的time-slot，再根據不同的時段進行計算。

* **Step1 : 過濾出可遞送的歷史乘客軌跡**
 			
    <font color=#800000>*Ddist(Tri.o, loc(csi)) < δ (1)*
                                                   *Ddist(Tri.d, loc(csj)) < δ (2)*</font>
    
    找出所有Csi-Csj之間的軌跡透過以上兩個方程式來**確保Csi、Csj和乘客的起終點不會過遠**。
		
* **Step2 : 計算Csi、Csj之間的權重(等待時間+寄送時間)**
		    篩選出可遞送的乘客軌跡後透過軌跡計算各Cs間權重。
            
    <font color=#800000>*tc = WaitingTime + DrivingTime*</font>
            
    WaitingTime由 **頻率倒數(1/λ)** 來表示平均等待時間。另外DrivingTime由**每一次兩站遞送時間做平均**來計算得。
    
    將WaitingTime 和 DrivingTime 分開維度做圖表觀察，**等待時間低於一小時的行程只占總形成的7%**，然而**行車時間低於一小時的行程約佔總行程的70%**。
    表示每段行程很大的比例花在**等待時間**。
		
    #### Time-Dependent Routing Table Building:
    有些車流量小甚至沒有車流量的區域可能會有Cs之間邊界權值有無限大的可能，因此可能需要透過其他 **熱門路線(hot-line)** 來達成，形成 **Virtual hot-line** 。
    
 
:::success
⛳**形成 Virtual hot-line 條件** 
1. **Spatially Close**
 若需要中繼站來進行轉送，兩個中繼站之間的距離要小於β。
1. **Move forward**
 中繼站必須更接近目的地點。
1. **Limited number of transshipment**
 中繼站的轉寄次數不能超過某常數C。
1. **Minimum time cost on virtual hot-line**
 必須從所有virtual hot-line中選出邊界權值最小的一條。找到所有hot-line or Virtual hot-line之後透過 **Simple Top-K Algo**. 來規畫路徑。
:::
 
 
接著需要透過演算法(B. C. Dean, Continuous-time dynamic shortest path algorithms, M.S.thesis, Dept. Comput. Sci., MIT,     Cambridge, MA, USA, 1999.) 製作 **Time-Dependent Routing Table** 來紀錄每一個包裹中繼站之間的**最短距離**，


因為並不是每條包裹遞送路徑都靠近Cs且能在**Time-Dependent Routing Table**查詢，因此需要**Simple Top-K Algo**。

**Simple Top-K Algo**
* **Step1** : 找出與包裹寄送點與目的點最近的K個中繼站。並將與**寄送點最近的前K個中繼站設為Set1**，與**目的點最近的前K個中繼站設為Set2**。
* **Step2** : 透過**All-Pairs Shortest path**最短路徑算法找到兩set中每個元素之間路徑，形成集合Path。
* **Step3** : 若path屬於空集合，則無路徑，若有**擇其最短路徑**。
 
### **Phase ll : Online Package Routing**

根據歷史行車軌跡以及上述演算法，我們可以依照路徑並等待叫車機會對貨物進行遞送，然而這樣的方法是**根據統計資料所得出的結果**，需要搭配**即時的叫車計畫來提高效率**。

**AdaPlan**
* **Step1**:在開始前會先依據PhaseI所安排的路線進行等待，若出現某即時行程之 **DrivingTime + 此行程目的地到包裹目的的RoutingTable預估時間** < **包裹從出發地到目的地之RoutingTable預估時間**，則將包裹安排於此行程。

* **Step2**:當此行程結束後，將包裹安置於**行程目的地附近的中繼站**，並將**包裹請求時間設為安置時間**，另外包裹之**出發地設為該中繼站**。
* **Step3**:最後重新**計算並更新RoutingTable**。

總結來說此演算法透過**過去乘客軌跡資訊**來建立基礎的路徑規劃及時間預測演算法，**根據基本預測動態的調整路徑規劃**來指引報果遞送路徑並達到更好的效果

## EVALUATION
為了評估Crowddeliver算法之效率，對案例進行研究並展示。

### Experimental Setup
1. **實驗數據**

    對真實世界數據進行統計，統計中國杭州市7614台計程車的軌跡數據，以及確立POI包裹交換站與道路網絡等訊息。將資料分為測試集和訓練集以模擬實際計程車請求，測試AdaPlan效能。

3. **模擬**

    在上述所蒐集的數據中並不包含**包裹交付訂單**和**計程車訂單請求**的資訊，因此本文透過一些方式來進行模擬。

    在**包裹交付**的部分，透**過隨機生成起始與目的點的方式**來模擬訂單，此外產生後的模擬定待會替除掉**短距離訂單( short-distance OD pairs)**，因為這比較少出現也不符合效益。

    另外在**即時叫車訂單**部分，因為所掌握的資料只有軌跡路徑，沒有實際叫車訂單資訊，因此透過*replay-and-sample*來做模擬。
    
    Replay : 在測試時間內 Replay 所有計程車軌跡。
    Sample : 以固定比例採樣認其軌跡為線上叫車訂單。
    


7. **測試指標**
本文設定兩個指標來評估AdaPlan algorithm
    *    **Success Rate**
    Formula : 
    <font color=#800000>AdaPlan完成的包裹訂單中 (**運送時間<要求遞送時間** 之**訂單數量**) / (總包裹數量)。</font>
        當 Success Rate 數值越高  AdaPlan效能越好。
    * **Number of Transshipments**
    表包裹中繼轉運的次數，越低的次數可能可以帶來較低的成本與風險。
    Formula : 
    <font color=#800000>Numtrans = Numrelays = Nump_taxis − 1.</font>
    (計程車載送次數 - 1)
    
    
### Baseline Algorithms
透過與 **FCFS** 以及 **DesCloser**兩種算法來比較並呈現CROWDDELIVER的性能表現。
* **FCFS**
    如出現靠近包裹的計程車叫車訂單，就立刻把包裹分派過去。(未考慮靠近或遠離包裹目的地)
* **DesCloser**
如出現靠近包裹的計程車叫車訂單且**叫車目的能夠更加靠近包裹遞送目的**，則將包裹分派過去。
    
### Experimental Objectives
* Q1 : 遞送一個包裹需要多少運算資源(Computational Resource)?
* Q2 : 成功遞送率(**Success Rate**)為多少?
* Q3 : 轉送次數(**Number of Transshipments**)為多少?
* Q4 : CROWDDELIVER 和最佳解 (**optimal Sol.**)差距為多少?
* Q5 : 此系統一小時能夠遞送多少包裹 (Per Hours)
    
###  Experimental Results
#### Results of Response Time
對於三種方法(FCFS、DesCloser、AdaPlan)之響應時間計算做以下分別討論。
*    **FCFS** : 只需要符合 Ddist(tor.o, pr.o) < δ和Ddist(tor.d, {CS}) < δ 的 **第一輛** 車即可，因此運算較簡易。
*    **DesCloser** : 除符合 Ddist(tor.o, pr.o) < δ和Ddist(tor.d, {CS}) < δ 外，還須計算 CS 是否**更加接近目的地**。
*    **AdaPlan** : 需要在每個CS做**反覆的比較、查找並更新**，因此運算最為複雜。
    ![](https://hackmd.io/_uploads/rJcGCQ8sh.png)
    ▲在**不同採樣率**下不同演算法包裹遞送過程之**累計響應時間**統計圖。
由圖可簡單觀察，**Sampling Rate越高，Response Time越大**，原因很直觀，採樣率越高表越多計程車是透過叫車系統來載客，系統需花費更多時間來計算並篩選計程車是否符合條件，因此花費時間越多。
    另一方面來看，在不同演算法的響應時間比較中可以觀察到FCFS雖看似計算最為基礎但所花費的總響應時間最多，作者猜測很可能是因為**FCFS需要更多的轉遞送次數(transshipments)**造成**計算次數增加**，進而**累積更長的響應時間**。

#### Results of Success Rate
    
* **Success Rate w.r.t Sampling Rate**
    
![](https://hackmd.io/_uploads/BJyWPHLs2.png)
▲ **Success Rate  在 DesCloser 和 AdaPlan 算法下和Sampling Rate呈正相關**。FCFS則和Sampling Rate較無關聯。由此現象可推測原因為，**越多的叫車訂單能使等待時間降低**，進而提高 Success Rate，然而在**FCFS情況下，包裹可能會被遞送至遠離目的CS，造成更多轉運次數**而影響Success Rate。
    
##### **Success Rate w.r.t Region**
![](https://hackmd.io/_uploads/Bky9wrPsn.png)
實驗前首先根據包裹**起始地區**與**目的地區**將不同訂單分為三大類別 : 


    
![](https://hackmd.io/_uploads/HyQPABDih.png)
**▲ Category I :** 由**熱門地區**送至**熱門地區**
![](https://hackmd.io/_uploads/rk3YCBvo3.png)
**▲ Category II :** 由**非熱門地區**送至**熱門地區** or 由**熱門地區**送至**非熱門地區**
![](https://hackmd.io/_uploads/BktcCHDsh.png)
**▲ Category III:** 由**非熱門地區**送至**非熱門地區**

AdaPlan無論是任何Category下都表現最好的，即便是CategoryIII，都有六成的貨物能在六小時內送達。

* **Success Rate w.r.t Time**
![](https://hackmd.io/_uploads/Bkl83wwih.png)
▲在 **:sunny:DayTime** **Work Day相較於Rest Day有更短的平均遞送時間和更高的成功率**
相反的**在 :first_quarter_moon_with_face: NightTime Rest Day相較於Work Day有更短的平均遞送時間和更高的成功率**。
* **Number of Transshipments**
![](https://hackmd.io/_uploads/BJzdfuDo3.png)
實驗結果顯示AdaPlan在不同地區條件下遞送貨物**皆有著最少的轉運次數**。另外在**夜晚遞送的轉運次數稍微較白天多一些**，平均皆在**四次**左右。
*  **AdaPlan v.s. Optimal**
![](https://hackmd.io/_uploads/HkaF1Ywjh.png)
**Optimal 比較**
假設所有計程車與乘客資訊都是已知，計算所有包裹可到達路線從中選出最優解。
最優解的計算選擇過程平均需要**花費14280.9秒**，計算出可送達時間為**1.164小時**，相比之下**AdaPlan**只**需要0.8秒**即可計算完成，所規畫出來的平均遞送時間為**2.337小時**。
雖然使用AdaPlan所花費的**平均遞送時間為最佳規劃的兩倍**，但相比Optimal Sol.，AdaPlan計算所花的**響應時間非常微小**。
* **Transport Capacity**
系統的運輸能力(運輸量)是實際執行時的必要考量因素。
![](https://hackmd.io/_uploads/H1aNDYPi3.png)
▲ 每小時產生包裹數量**小於1000**時，成功投遞的包裹數量和產生數量**呈正比**(約成功投遞9成)，然而每小時產生包裹超過1000時，能夠成功投遞的數量**逐漸趨緩**，**不再成正比增加**，說明了此系統一小時內在實驗假設情況下的運輸能力約為**每小時985個包裹**。
![](https://hackmd.io/_uploads/HyrbiYPo2.png)
▲ **包裹轉運站數量**也相當程度的**影響著系統的運輸能力**。實驗將每小時包裹請求遞送數量設為定量**1200**可觀察到在**轉運站數量為50**的情況下，**運輸能力十分低落**，在大約700個轉運站能夠讓每小時運輸容量提升到約900個包裹。
實驗中隨機選取轉運站地點，雖然**轉運站地點的選擇也會影響運輸容量**，但無論如何選取，趨勢皆為 : **轉運站越多運輸容量越大。**
##  Discussion
尚未解決的問題。
*    **Package Delivery Request**
    此研究專注於在**任何包裹遞送路徑**的情況下，尋求近似最佳路徑規劃，因此透過**隨機模擬**的方式產生遞送包裹來做實驗，可能會與現實有偏差，未來需要透過更多**實際數據來計算實際的包裹流向分布**且須透過更多**真實的包裹遞送請求數據**整合到整個系統架構中。
    
*    **Real-time Taxi Ordering Request**

1.    關於計程車**訂單問題**，此研究並沒有收集到**手機叫車應用程式的相關資訊**，此資訊對於此系統極為重要，未來將蒐集更多關於**應用程式叫車訂單**相關的資訊。
2.    此外，未來可朝著**不須事先知道目的地**也可達成遞送任務的目標演算法前進。
3.    最後，由實驗可得知**AdaPlan和Optimal sol.的遞送時間仍有一段差距**，應可更優化算法來達成更好的效率。
    
    
*    **Issues Regarding Data Sources**
系統所蒐集的數據包含**POI**、**道路網絡**、**車輛軌跡**都需要不斷**更新**，才能應對當下的遞送規劃。
*    **Others**
**包裹大小**，**司機的獎勵機制**、**包裹容器**等都是其他需要考量的因素。