最后一公里极速配送
Another url: https://bulihanjie.github.io/2016/09/22/最后一公里极速配送/
题目描述
##成绩
第一赛季:第一名
第二赛季:第五名(前三名使用了作弊…)
总纲
题目中有两种包裹,分别是电商包裹和O2O包裹:
- 电商包裹:数量多,包裹数目大,路程较近,由124个网点配送;
- O2O包裹:数量较少,包裹数目小,路程较远,有时间窗口。
由于两种包裹的特性差异较大,如果对所有包裹一起考虑,很难得到一个满意的策略来对问题全局优化。所以在本方案中,两种包裹进行分开考虑,再对每种包裹的方案进行合并。总的方案流程图如下:
O2O包裹之费用流
在问题中,O2O包裹有配送时间和送达时间的限制,为了简化问题,使得问题更容易求解,有以下假设:
- 快递员在商家取一个O2O包裹后,下一个动作必定是把包裹送达用户手中。即快递员身上不同时存在两个O2O包裹;
- 快递员抵达商家的时间,不大于商家要求的取件的时间或超过的时间有个上限值。
基于假设,可以认为快递员在商家要求的区间时间收取O2O包裹,并且立即运送到相应的用户,与原问题相比少了时间窗口限制和容量的限制,容易得到的数学模型表达如下:
设n是O2O包裹数量,m是配送的快递员数量, 表示第i个O2O包裹, 表示第i个O2O包裹的取件时间。
相关二进制变量如下:
g i j = { 1 派 送 包 裹 i 后 派 送 包 裹 j 0 其 它 情 况 g_{ij}=\begin{cases}1& 派送包裹i后派送包裹j\\0& 其它情况\end{cases} gij={
10派送包裹i后派送包裹j其它情况
最小化目标函数:
min f = ∑ i = 0 n ∑ j = 0 n g i j ∗ c o s t ( x i , x j ) + ∑ i = 0 n h a n d l e ( x i ) \mathop {\min }f=\sum_{i=0}^n\sum_{j=0}^ng_{ij}*cost(x_i,x_j)+\sum_{i=0}^nhandle(x_i) minf=i=0∑nj=0∑ngij∗cost(xi,xj)+i=0∑nhandle(xi)
s.t.
∣ { j ∣ ∑ i = 0 n g i j = 0 } ∣ = m \left|\left\{j \left.\right| \sum_{i=0}^ng_{ij}=0 \right\}\right|=m ∣∣∣∣∣{
j∣i=0∑ngij=0}∣∣∣∣∣=m
∑ j = 0 n g i j ≤ 1 a n d g i j = 0 i ∈ [ 0 , n ) \sum_{j=0}^ng_{ij}\leq1\ and\ g_{ij}=0\ i\in[0,n) j=0∑ngij≤1 and gij=0 i∈[0,n)
c o s t cost cost是根据题目计算的两个O2O包裹间路程的耗时, h a n d l e handle handle是配送O2O包裹的耗时,容易得出公式的第二项是一个常数。
对于问题的求解,容易得出一个费用流的求解方法,有两个参数分别是派送的快递员数量 m m m和时间差 t l tl