
本發明屬于物流調度與優化技術,特別是一種o2o外賣平臺訂單智能調度與路線優化方法。
背景技術:
:當前有很多o2o外賣平臺,如百度外賣、餓了么、美團等,而外賣調度與配送作為餐飲o2o的重要支撐環節,其優劣直接影響互聯網餐飲外賣的進一步擴張與發展。然而,由于區域性限制、時效性要求高、利潤點相對較低等諸多原因,外賣配送物流成本居高不下,外賣調度與配送優化是外賣平臺最大的難題。目前專門針對o2o外賣平臺外賣調度與配送路線的公開文獻較少,多數仍然采用傳統物流配送優化模型及其變形,如設施選址-分配問題(lap)、路徑優化問題(vrp)和同時送取貨vrp問題(vrpspd)。lap重點是確定配送中心最佳位置,不允許路線巡回訪問;vrp雖允許路線巡回訪問,但要求開始與結束位置都必須為同一配送中心,且二者都為先從配送中心取貨,后向客戶配送的過程;vrpspd為同時送取貨的車輛路徑問題,所有配送貨物都要從配送中心裝車送至客戶,所有從客戶裝車的貨物都要送至配送中心。但這些方法應用于o2o外賣平臺訂單調度與配送路線選取時效果都不理想:1)由于外賣配送一般會劃分合理的區域范圍且距離不會太遠,同時為了避免影響餐品質量與口味,一般要求出餐后30分鐘送達客戶,有嚴格的配送時間約束;2)傳統物流配送優化問題都有固定的配送中心(一般中心較少)且車輛都從中心出發最終回到中心的閉環結構,而外賣配送路線優化問題,必須保證先去訂單的商家取餐、后配送到客戶,商家、客戶不能同等對待,訂單的商家、客戶位置為動態需求且調度時配送員位置也不固定;3)傳統物流配送優化問題調度之后轉化為旅行商問題(tsp),尋找最優路線屬于np問題,多采用啟發式算法求解,算法效率普遍較低,而o2o外賣平臺訂單非常多且比較集中,需要快速指派配送員并給出推薦路線。這些因素共同影響,使得o2o外賣平臺外賣調度與配送優化問題的處理更為復雜。技術實現要素:為解決現有技術存在的上述問題,本發明要提出一種同時考慮配送時間約束、商家與客戶位置依據訂單需求動態變化且快速高效的o2o外賣平臺智能調度與路線優化方法。為了實現上述目的,本發明的技術方案如下:一種o2o外賣平臺智能調度與路線優化方法,包括以下步驟:a、對外賣訂單數據進行預處理a1、依據當前未配送外賣訂單記錄,令k為已指派尚未完成配送的外賣訂單數,k’為未指派配送員的外賣訂單數,則lsk或lsk’分別為第k或k’個訂單的商家位置,lck或lck’分別為第k或k’個訂單的客戶位置,由于位置主要用于計算距離,而外賣配送的區域范圍非常小,用直線距離取代地理空間距離對結果不產生影響;k=1,2,…,k,k’=1,2,…,k’;a2、令該配送區域內配送員數為n,xki=1或xk’i=1分別表示訂單k或k’指派給配送員i,xki=0或xk’i=0分別表示訂單k或k’未指派給配送員i;xi(s,t)表示配送員i是否需要走邊(s,t),即從s位置直接沿著邊(s,t)去t位置,其中是為1,否為0,邊長記為l(s,t);訂單k生效時刻為tk0,訂單k的客戶希望最遲送達時刻為ltk,配送員到訂單k的商家取餐的時刻為tks,配送員把訂單k送達客戶的時刻為tkt;s,t∈{(k+k’)個訂單的商家或客戶位置},i=1,2,…,n;a3、給定配送員平均配送速度為v,單位時間配送成本為uc,超出指定配送時間的延遲單位時間成本為dc,通過當前配送員的手機gps獲取位置數據。計算當前所有k’+k個外賣訂單的所有商家lsk、客戶位置lck的邊長,邊長矩陣l=(l(s,t))2k×2k,邊長實際為兩點s(s1,s2)、t(t1,t2)的歐氏距離,如式(1)所示:b、快速生成外賣訂單智能指派模型b1、給定配送員已指派未配送的訂單容量約束為q;b2、判斷:如果k’+k≤n×q,則全部指派,否則只取k’中先下訂單的(n×q-k)作為本次要指派的訂單,其他(k’+k-n×q)個訂單下次調度時指派,同時將本次需要指派的訂單作為k’。b3、將當前所有未指派訂單按照訂單生成的先后順序排序,訂單序號i越小,表示訂單生成越早,應該更優先被指派;設定當前未指派訂單序號k’=1;b4、判斷:當前是否有空閑配送員i,i=1,2,…,n,有則將訂單k’指派給配送員i,即xk’i=1,轉到步驟b7,否則轉到步驟b5;b5、計算當前訂單k’到所有已指派未完成訂單的距離,如式(2)所示:d(k’,k)=l(lsk’,lsk)+l(lck’,lck),k=1,2,…,k(2)b6、將d(k’,k)按照距離由小到大的順序排列,對應排序后的訂單序號kmin=1,2,…,k,之后為訂單k’指派配送員:b61、設定當前排序后的訂單序號kmin=1;b62、訂單kmin已指派的配送員為imin,判斷:如果配送員imin已指派未完成數:則轉到步驟b63;否則轉到步驟b64。b63、令kmin=kmin+1,判斷:如果kmin≤k,轉到步驟b62;否則轉到步驟b8。b64、將k’指定給配送員imin,即xk’imin=1。b7、令當前商品節點序號k’=k’+1,k=k+1;判斷:如果k’≤k’,則轉到步驟b4;否則轉到步驟b8;b8、所有訂單指派完畢,停止指派。c、確定配送路線,估算配送成本c1、設定當前配送員序號i=1,已指派未完成訂單的配送成本z=0;c2、判斷:如果配送員序號i≤n,則轉到步驟c3,否則轉到步驟c5;c3、判斷:如果配送員i沒有已指派尚未完成的訂單,則令zi=0,轉到步驟c4,否則估算配送員i的配送成本zi:c31、假定指派給配送員i的訂單為ki=1,2,…,ki,令di={配送員i要配送訂單的所有商家位置}={lski|ki=1,2,…,ki},di’=φ,φ為空集,位置變量li為配送員i的當前位置,zi=0,當前時刻為t;c32、計算di中距離li最近的位置dmin,令int()表示上取整,t=t+ti,li=dmin;c33、判斷:如果dmin為某訂單ki的商家位置lski,則令同時用訂單ki對應的客戶位置lcki取代di中的dmin,tkis=t,zi=zi+ti×uc;否則dmin為某訂單的客戶位置,則同時將dmin從di中移除,即di=di-{dmin},tkit=t,zi=zi+ti×uc+max{tkit-ltk,0}×dc;c34、判斷:如果di≠φ(空集),則轉到步驟c32;否則di’中元素的順序即為配送順序,轉到步驟c4;c4、令z=z+zi,i=i+1,轉到步驟c2;c5、停止計算,輸出每個配送員i的最優配送路線di’和總的配送成本z。與現有技術相比,本發明具有以下有益效果:1、本發明對外賣訂單數據進行預處理時考慮了配送時間、延遲成本等因素外賣訂單數據包含商家、客戶位置、訂單時刻、訂單期望配送時間要求等多指標因素,為了完成對配送員的智能快速指派和配送路線快速生成,本發明預處理過程中綜合考慮配送員的當前位置、配送員到達商家及客戶的時刻,預估配送員的平均配送速度、單位時間配送成本、超出指定配送時間的延遲單位時間成本等因素,并計算獲得所有商家、客戶的距離,減少指派、路線選取環節的計算量。2、本發明對外賣訂單進行智能快速指派提高外賣訂單的指派效率為避免出現個別配送員訂單特別多而其他配送員空閑的情況,本發明為配送員設置訂單容量約束,同時訂單指派時優先指派空閑配送員;并依據訂單生成時間的順序指派配送員,避免出現個別訂單由于與其他訂單距離較遠而長時間未被配送的情況。依據單一商家或客戶位置進行指派,易于出現先到達客戶但尚未到商家取貨的情況,鑒于此,本發明為訂單指派配送員時,同時考慮商家和客戶的位置,只有二者距離都很近的訂單才會指派給同一個配送員。3、本發明利用外賣配送需先去商家取貨后去客戶送貨的思想快速選取配送路線傳統路線優化問題應用于外賣配送時會受以下三個方面的制約:1)多數路線優化求解算法都需要給定配送中心,車輛從配送中心出發最終回到配送中心的閉環配送路線,而外賣配送的商家位置和數量都是動態需求,且配送路線不是閉環結構;2)多數路線優化求解算法由于是np問題,都采用啟發式算法求解,耗費時間長,而o2o外賣平臺的訂單數據量非常大,要求快速給出建議路線,無法完成多次訪問訂單數據的任務;3)傳統算法即使能實現同時送取貨的任務,但所有送的貨都來自于固定配送中心,所有取得貨都要送到固定配送中心,而外賣配送所有的外賣都需要從隨機、動態的商家取貨、配送給動態、隨機的客戶。因此,本發明利用先到商家、后到客戶的思想選取路線可以消除外賣配送的條件制約,直接依據配送員到待取餐商家和已取餐客戶的距離進行判斷,無須固定配送中心或商家位置、無須多次訪問數據、無須建立復雜模型即可快速完成配送路線選取過程。4、本發明的方法包括三個過程:一個外賣訂單數據預處理過程、一個快速生成外賣訂單智能指派過程和依據已指派訂單確定配送路線的過程;利用外賣訂單預處理完成對動態時間、配送員位置與容量約束及配送與延遲單位成本等參數的初始化,對待指派訂單按照其與已指派訂單的距離智能選擇配送員,利用外賣配送必先到商家取貨、后向客戶配送的思想為每個配送員快速選擇配送路線,并估算配送成本,為調度員提供調度依據。附圖說明本發明共有附圖3張,其中:圖1是o2o外賣平臺智能調度與路線優化流程圖。圖2是訂單初始關系結構圖。圖3是訂單最終配送路線圖。具體實施方式下面參考附圖,詳細描述本發明提出的o2o外賣平臺智能調度與路線優化方法。如圖1所示,本發明包括三個階段:1、對外賣訂單數據進行預處理;2、快速生成外賣訂單智能指派模型;3、確定配送路線,估算配送成本。下面以具體例子來說明本發明的實施過程。假設現有待指派訂單5個,配送員3個,已指派未完成訂單3個,各訂單通過gps獲取商家和客戶的位置,詳見表1,表1中訂單的初始結構如圖2所示。表1訂單情況具體步驟如下:a、對外賣訂單數據進行預處理a1、依據當前未配送外賣訂單記錄,令k=3為已指派尚未完成配送的外賣訂單數,k’=5為未指派配送員的外賣訂單數,則lsk(或lsk’)為第k(或k’)個訂單的商家位置,lck(或lck’)為第k(或k’)個訂單的客戶位置,由于位置主要用于計算距離,而外賣配送的區域范圍非常小,用直線距離取代地理空間距離對結果不產生影響;k=1,2,…,k,k’=1,2,…,k’;a2、令該配送區域內配送員數為n=3,xki=1(或xk’i=1)表示訂單k(或k’)指派給配送員i,為0表示未指派給配送員i;xi(s,t)表示配送員i是否需要走邊(s,t)(從s位置直接沿著邊(s,t)去t位置),其中是為1,否為0,邊長記為l(s,t);訂單k生效時刻為tk0,訂單k的客戶希望最遲送達時刻為ltk,配送員到訂單k的商家取餐的時刻為tks,配送員把訂單k送達客戶的時刻為tkt;s,t∈{(k+k’)個訂單的商家或客戶位置},i=1,2,…,n;a3、給定配送員平均配送速度為v=30km/h(0.5km/m),單位時間配送成本為uc=0.2元/m,超出指定配送時間的延遲單位時間成本為dc=0.2元/m,通過當前配送員的手機gps獲取位置數據。計算當前所有k’+k(即11)個外賣訂單的所有商家lsk、客戶位置lck的邊長,邊長矩陣l=(l(s,t))2k×2k,邊長實際為兩點s(s1,s2)、t(t1,t2)的歐氏距離,如式(1):由定義可知l(s,t)=l(t,s),邊長矩陣l為對稱矩陣,可表示為上三角或下三角矩陣,具體見表2。b、快速生成外賣訂單智能指派模型b1、給定配送員已指派未配送的訂單容量約束為q=5;b2、判斷:k’+k=8<n×q=3×5,則可以全部指派。b3、將當前所有未指派訂單按照訂單生成的先后順序排序,訂單序號i越小,表示訂單生成越早,應該更優先被指派,假定當前訂單已經按照生成順序排列;設定當前未指派訂單序號k’=1(即訂單1’);k’=1b4、判斷:當前是否有空閑配送員i(i=1,2,…,n),當前有空閑配送員3,則將訂單k’指派給配送員3,即xk’i=x1’3=1,轉到b7;b7、當前商品節點序號k’=k’+1=2,k=k+1=4,k=4對應訂單為訂單1’,當前各訂單狀態下表所示;判斷:k’=2≤k’=5,則轉到步驟b4;訂單1231’->42’3’4’5’訂單狀態配送員1配送員2配送員2配送員3未指派未指派未指派未指派k’=2b4、判斷:當前是否有空閑配送員i(i=1,2,…,n),當前沒有空閑配送員,則轉到b5;b5、計算當前訂單k’到所有已指派未完成訂單的距離,如式(2)d(k’,k)=l(lsk’,lsk)+l(lck’,lck),k=1,2,…,k=4(2)如d(k’,1)=l(lsk’,ls1)+l(lck’,lc1)=1.68+8.91=10.59;同樣,得到d(k’,2)=11.92,d(k’,3)=14.23,d(k’,4)=5.54b6、將d(k’,k)按照距離由小到大的順序排列,分別為:d(k’,4)=5.54≤d(k’,1)=10.59≤d(k’,2)=11.92≤d(k’,3)=14.23,對應排序后的訂單序號kmin=1,2,…,k,kmin=1對應的訂單為訂單4,kmin=2對應的訂單為訂單1,kmin=3對應的訂單為訂單2,kmin=4對應的訂單為訂單3,之后為訂單k’指派配送員:b61:設定當前排序后的訂單序號kmin=1(對應訂單4);b62:訂單kmin已指派的配送員為imin(配送員3),判斷:如果配送員imin已指派未完成數轉到步驟b64。b64:將k’指定給配送員imin=3,即xk’3=1(訂單2’指派給了配送員3)。b7、當前商品節點序號k’=k’+1=3,k=k+1=5,當前各訂單狀態下表所示;判斷:如果k’=3≤k’=5,則轉到步驟b4;k’=3b4、判斷:當前是否有空閑配送員i(i=1,2,…,n),當前沒有空閑配送員,則轉到b5;b5、計算當前訂單k’到所有已指派未完成訂單的距離,如式(2)d(k’,k)=l(lsk’,lsk)+l(lck’,lck),k=1,2,…,k=5(2)得到d(k’,1)=17.75,d(k’,2)=7.13,d(k’,3)=15.53,d(k’,4)=13.87,d(k’,5)=11.3b6、將d(k’,k)按照距離由小到大的順序排列,分別為:d(k’,2)=7.13≤d(k’,5)=11.3≤d(k’,4)=13.87≤d(k’,3)=15.53≤d(k’,1)=17.75,對應排序后的訂單序號kmin=1,2,…,k,kmin=1對應的訂單為訂單2,kmin=2對應的訂單為訂單5,kmin=3對應的訂單為訂單4,kmin=4對應的訂單為訂單3,kmin=5對應的訂單為訂單1,之后為訂單k’指派配送員:b61:設定當前排序后的訂單序號kmin=1(對應訂單2);b62:訂單kmin已指派的配送員為imin(配送員2),判斷:如果配送員imin已指派未完成數轉到b64。b64:將k’指定給配送員imin=2,即xk’2=1(訂單3’指派給了配送員2)。b7、當前商品節點序號k’=k’+1=4,k=k+1=6,當前各訂單狀態下表所示;判斷:如果k’=4≤k’=5,則轉到步驟b4;訂單1231’->42’->53’->64’5’訂單狀態配送員1配送員2配送員2配送員3配送員3配送員2未指派未指派k’=4b4、判斷:當前是否有空閑配送員i(i=1,2,…,n),當前沒有空閑配送員,則轉到b5;b5、計算當前訂單k’到所有已指派未完成訂單的距離,如式(2)d(k’,k)=l(lsk’,lsk)+l(lck’,lck),k=1,2,…,k=6(2)得到d(k’,1)=11.95,d(k’,2)=9.85,d(k’,3)=7.5,d(k’,4)=5.75,d(k’,5)=9.21,d(k’,6)=10.75b6、將d(k’,k)按照距離由小到大的順序排列,分別為:d(k’,4)=5.75≤d(k’,3)=7.5≤d(k’,5)=9.21≤d(k’,2)=9.85≤d(k’,6)=10.75≤d(k’,1)=11.95,對應排序后的訂單序號kmin=1,2,…,k,kmin=1對應的訂單為訂單4,kmin=2對應的訂單為訂單3,kmin=3對應的訂單為訂單5,kmin=4對應的訂單為訂單2,kmin=5對應的訂單為訂單6,kmin=6對應的訂單為訂單1,之后為訂單k’指派配送員:b61:設定當前排序后的訂單序號kmin=1(對應訂單4);b62:訂單kmin已指派的配送員為imin(配送員3),判斷:如果配送員imin已指派未完成數轉到步驟b64。b64:將k’指定給配送員imin=3,即xk’3=1(訂單4’指派給了配送員3)。b7、當前商品節點序號k’=k’+1=5,k=k+1=7,當前各訂單狀態下表所示;判斷:如果k’=5≤k’=5,則轉到步驟b4;訂單1231’->42’->53’->64’->75’訂單狀態配送員1配送員2配送員2配送員3配送員3配送員2配送員3未指派k’=5b4、判斷:當前是否有空閑配送員i(i=1,2,…,n),當前沒有空閑配送員,則轉到步驟b5;b5、計算當前訂單k’到所有已指派未完成訂單的距離,如式(2)d(k’,k)=l(lsk’,lsk)+l(lck’,lck),k=1,2,…,k=7(2)得到d(k’,1)=9.14,d(k’,2)=6.28,d(k’,3)=9.8,d(k’,4)=8.48,d(k’,5)=7.56,d(k’,6)=12.3,d(k’,7)=11.03b6、將d(k’,k)按照距離由小到大的順序排列,分別為:d(k’,2)=6.28≤d(k’,5)=7.56≤d(k’,4)=8.48≤d(k’,1)=9.14≤d(k’,3)=9.8≤d(k’,7)=11.03≤d(k’,6)=12.3,對應排序后的訂單序號kmin=1,2,…,k,kmin=1對應的訂單為訂單2,kmin=2對應的訂單為訂單5,kmin=3對應的訂單為訂單4,kmin=4對應的訂單為訂單1,kmin=5對應的訂單為訂單3,kmin=6對應的訂單為訂單7,kmin=7對應的訂單為訂單6,之后為訂單k’指派配送員:b61:設定當前排序后的訂單序號kmin=1(對應訂單2);b62:訂單kmin已指派的配送員為imin(配送員2),判斷:如果配送員imin已指派未完成數轉到步驟b64。b64:將k’指定給配送員imin=2,即xk’2=1(訂單5’指派給了配送員2)。b7、當前商品節點序號k’=k’+1=6,k=k+1=8,當前各訂單狀態下表所示;判斷:如果k’=6>k’=5,則轉到步驟b8;訂單1231’->42’->53’->64’->75’->8訂單狀態配送員1配送員2配送員2配送員3配送員3配送員2配送員3配送員2b8、所有訂單指派完畢,停止指派。c、確定配送路線,估算配送成本zc1、設定當前配送員序號i=1,已指派未完成訂單的配送成本z=0;i=1c2、判斷:如果配送員序號i=1≤n,則轉到步驟c3c3、判斷:如果配送員i有已指派尚未完成的訂單,則估算配送員i的配送成本zi:c31、假定指派給配送員i的訂單為ki=1,2,…,ki,令di={配送員i要配送訂單的所有商家位置}={lski|ki=1,2,…,ki},由于只有訂單1指派給配送員1,所以di={訂單1的商家位置ls1},di’=φ(空集),位置變量li為配送員i的當前位置,不失一般性,假定當前位置為(0,0),zi=0,當前時刻為t=12:10;c32、計算di中距離li最近的位置dmin,由于di中只有一個元素,即dmin=ls1,令(分鐘),t=t+ti=12:20,li=dmin=ls1;c33、判斷:dmin(即ls1)為訂單1的商家位置lski,則令同時用訂單1對應的客戶位置lcki取代di中的dmin,即di={lc1},tkis=t=12:20,zi=zi+ti×uc=0+10×0.2=2元;c34、判斷:如果di={lc1}≠φ(空集),則轉到步驟c32;c32、計算di中距離li(即ls1)最近的位置dmin,由于di中只有一個元素,即dmin=lc1,令(分鐘),t=t+ti=12:20+14=12:34,li=dmin=lc1;c33、判斷:dmin為訂單1的客戶位置lc1,則同時將dmin從di中移除,即di=di-{dmin}=φ,tkit=t=12:34,zi=zi+ti×uc+max{tkit-ltk,0}×dc=2+14×0.2+max{12:34-12:40,0}×0.2=4.8;c34、判斷:由于di=φ,則di’={ls1,lc1}中元素的順序即為配送順序,轉到步驟c4;c4、令z=z+zi=4.8,i=i+1=2,轉到步驟c2;i=2c2、判斷:如果配送員序號i=2≤n,則轉到步驟c3;c3、判斷:如果配送員i有已指派尚未完成的訂單,則估算配送員i的配送成本zi:c31、假定指派給配送員i的訂單為ki=1,2,…,ki,令di={配送員i要配送訂單的所有商家位置}={lski|ki=1,2,…,ki},由于訂單2、3、6、8都指派給配送員2,所以di={ls2,ls3,ls6,ls8},di’=φ,位置變量li為配送員i的當前位置,不失一般性,假定當前位置為(0,0),zi=0,當前時刻為t=12:10;c32、計算di中距離li最近的位置dmin=ls8,令(分鐘),t=t+ti=12:19,li=dmin=ls8;c33、判斷:dmin(即ls8)為訂單8的商家位置lski,則令同時用訂單8對應的客戶位置lc8取代di中的dmin,即di={ls2,ls3,ls6,lc8},tkis=t=12:19,zi=zi+ti×uc=0+9×0.2=1.8元;c34、判斷:由于di={ls2,ls3,ls6,lc8}≠φ(空集),則轉到步驟c32;c32、查表2獲得di中距離li(即ls8)最近的位置dmin,即dmin=lc8,令(分鐘),t=t+ti=12:19+5=12:24,li=dmin=lc8;c33、判斷:dmin為訂單8的客戶位置lc8,則同時將dmin從di中移除,即di=di-{dmin}={ls2,ls3,ls6},tkit=t=12:24,zi=zi+ti×uc+max{tkit-ltk,0}×dc=1.8+5×0.2+max{12:24-12:50,0}×0.2=2.8;c34、判斷:由于di={ls2,ls3,ls6}≠φ(空集),則轉到步驟c32;c32、查表2獲得di中距離li(即lc8)最近的位置dmin,即dmin=ls2,令(分鐘),t=t+ti=12:24+13=12:37,li=dmin=ls2;c33、判斷:dmin(即ls2)為訂單2的商家位置lski,則令同時用訂單2對應的客戶位置lc2取代di中的dmin,即di={lc2,ls3,ls6},tkis=t=12:37,zi=zi+ti×uc=2.8+13×0.2=5.4元;c34、判斷:由于di={lc2,ls3,ls6}≠φ(空集),則轉到步驟c32;c32、查表2獲得di中距離li(即ls2)最近的位置dmin,即dmin=ls6,令(分鐘),t=t+ti=12:37+4=12:41,li=dmin=ls6;c33、判斷:dmin(即ls6)為訂單6的商家位置lski,則令lc8,ls2,ls6},同時用訂單6對應的客戶位置lc6取代di中的dmin,即di={lc2,ls3,lc6},tkis=t=12:41,zi=zi+ti×uc=5.4+4×0.2=6.2元;c34、判斷:由于di={lc2,ls3,lc6}≠φ(空集),則轉到步驟c32;c32、查表2獲得di中距離li(即ls6)最近的位置dmin,即dmin=lc6,令(分鐘),t=t+ti=12:41+11=12:52,li=dmin=lc6;c33、判斷:dmin為訂單6的客戶位置lc6,則同時將dmin從di中移除,即di=di-{dmin}={lc2,ls3},tkit=t=12:52,zi=zi+ti×uc+max{tkit-ltk,0}×dc=6.2+11×0.2+max{12:52-12:50,0}×0.2=8.8;c34、判斷:由于di={lc2,ls3}≠φ(空集),則轉到步驟c32;c32、查表2獲得di中距離li(即lc6)最近的位置dmin,即dmin=lc2,令(分鐘),t=t+ti=12:52+11=13:03,li=dmin=lc2;c33、判斷:dmin為訂單2的客戶位置lc2,則同時將dmin從di中移除,即di=di-{dmin}={ls3},tkit=t=13:03,zi=zi+ti×uc+max{tkit-ltk,0}×dc=8.8+11×0.2+max{13:03-12:40,0}×0.2=15.6;c34、判斷:由于di={ls3}≠φ(空集),則轉到步驟c32;c32、查表2獲得di中距離li(即lc2)最近的位置dmin,由于di中只有一個元素,即dmin=ls3,令(分鐘),t=t+ti=13:21,li=dmin=ls3;c33、判斷:dmin(即ls3)為訂單3的商家位置lski,則令同時用訂單3對應的客戶位置lc3取代di中的dmin,即di={lc3},tkis=t=13:21,zi=zi+ti×uc=15.6+18×0.2=19.2元;c34、判斷:如果di={lc3}≠φ(空集),則轉到步驟c32;c32、計算di中距離li(即ls3)最近的位置dmin,由于di中只有一個元素,即dmin=lc3,令(分鐘),t=t+ti=13:21+15=13:36,li=dmin=lc3;c33、判斷:dmin為訂單3的客戶位置lc3,則同時將dmin從di中移除,即di=di-{dmin}=φ,tkit=t=13:36,zi=zi+ti×uc+max{tkit-ltk,0}×dc=19.2+15×0.2+max{13:36-12:40,0}×0.2=33.4;c34、判斷:由于di=φ,則di’={ls8,lc8,ls2,ls6,lc6,lc2,ls3,lc3}中元素的順序即為配送順序,轉到步驟c4;c4、令z=z+zi=4.8+33.4=38.2,i=i+1=3,轉到步驟c2;i=3c2、判斷:如果配送員序號i=3≤n,則轉到步驟c3;c3、判斷:如果配送員i有已指派尚未完成的訂單,則估算配送員i的配送成本zi:c31、假定指派給配送員i的訂單為ki=1,2,…,ki,令di={配送員i要配送訂單的所有商家位置}={lski|ki=1,2,…,ki},由于訂單4、5、7都指派給配送員3,所以di={ls4,ls5,ls7},di’=φ,位置變量li為配送員i的當前位置,不失一般性,假定當前位置為(0,0),zi=0,當前時刻為t=12:10;c32、計算di中距離li最近的位置dmin=ls5,令(分鐘),t=t+ti=12:17,li=dmin=ls5;c33、判斷:dmin(即ls5)為訂單5的商家位置lski,則令同時用訂單5對應的客戶位置lc5取代di中的dmin,即di={ls4,lc5,ls7},tkis=t=12:17,zi=zi+ti×uc=0+7×0.2=1.4元;c34、判斷:由于di={ls4,lc5,ls7}≠φ(空集),則轉到步驟c32;c32、查表2獲得di中距離li(即ls5)最近的位置dmin,即dmin=ls4,令(分鐘),t=t+ti=12:17+6=12:23,li=dmin=ls4;c33、判斷:dmin(即ls4)為訂單4的商家位置lski,則令同時用訂單4對應的客戶位置lc4取代di中的dmin,即di={lc4,lc5,ls7},tkis=t=12:23,zi=zi+ti×uc=1.4+6×0.2=2.6元;c34、判斷:由于di={lc4,lc5,ls7}≠φ(空集),則轉到步驟c32;c32、查表2獲得di中距離li(即ls4)最近的位置dmin,即dmin=lc4,令(分鐘),t=t+ti=12:23+11=12:34,li=dmin=lc4c33、判斷:dmin為訂單4的客戶位置lc4,則同時將dmin從di中移除,即di=di-{dmin}={lc5,ls7},tkit=t=12:34,zi=zi+ti×uc+max{tkit-ltk,0}×dc=2.6+11×0.2+max{12:34-12:40,0}×0.2=4.8;c34、判斷:由于di={lc5,ls7}≠φ(空集),則轉到步驟c32;c32、查表2獲得di中距離li(即lc4)最近的位置dmin,即dmin=lc5,令(分鐘),t=t+ti=12:34+6=12:40,li=dmin=lc5;c33、判斷:dmin為訂單5的客戶位置lc5,則同時將dmin從di中移除,即di=di-{dmin}={ls7},tkit=t=12:40,zi=zi+ti×uc+max{tkit-ltk,0}×dc=4.8+6×0.2+max{12:40-12:40,0}×0.2=6;c34、判斷:由于di={ls7}≠φ(空集),則轉到步驟c32;c32、查表2獲得di中距離li(即lc5)最近的位置dmin,由于di中只有一個元素,即dmin=ls7,令(分鐘),t=t+ti=12:40+12=12:52,li=dmin=ls7;c33、判斷:dmin(即ls7)為訂單7的商家位置lski,則令di’=di’∪{dmin}={ls5,ls4,lc4,lc5,ls7},同時用訂單對7應的客戶位置lc7取代di中的dmin,即di={lc7},tkis=t=12:52,zi=zi+ti×uc=6+12×0.2=8.4元;c34、判斷:如果di={lc7}≠φ(空集),則轉到步驟c32;c32、計算di中距離li(即ls7)最近的位置dmin,由于di中只有一個元素,即dmin=lc7,令(分鐘),t=t+ti=12:52+8=13:00,li=dmin=lc7;c33、判斷:dmin為訂單7的客戶位置lc7,則同時將dmin從di中移除,即di=di-{dmin}=φ,tkit=t=13:00,zi=zi+ti×uc+max{tkit-ltk,0}×dc=8.4+8×0.2+max{13:00-12:50,0}×0.2=12;c34、判斷:由于di=φ,則di’={ls5,ls4,lc4,lc5,ls7,lc7}中元素的順序即為配送順序,轉到步驟c4;c4、令z=z+zi=38.2+12=50.2,i=i+1=4,轉到步驟c2;c2、判斷:如果配送員序號i=4>n,則轉到步驟c5;c5、停止計算,輸出每個配送員i的最優配送路線di’和總的配送成本z:每個配送員i的最優配送路線為di’,分別為:d1’={ls1,lc1},d2’={ls8,lc8,ls2,ls6,lc6,lc2,ls3,lc3},d3’={ls5,ls4,lc4,lc5,ls7,lc7};總的配送成本z=50.2元,配送路線如圖3所示。上面是本發明提出的方法的一種實施方式,但在某些步驟上,可以進行適當改變,以適應具體情況的要求。例如,在第一階段的步驟a3利用兩點位置求邊長,可以根據實際條件需要適當調整為空間距離。例如,在第三階段估算配送成本時,配送員的配送路線選取策略可以適當調整。本發明不局限于本實施例,任何在本發明披露的技術范圍內的等同構思或者改變,均列為本發明的保護范圍。當前第1頁12