--- tags: labnote --- # Rooの最適化問題 (opt) ## Input - $n$ ride requests $\mathcal{T}=\langle \mathrm{tr}_1,\dots,\mathrm{tr}_n\rangle$ - $K$ vehicles (each vehicle has $C$ capacity) - OD graph $G'=(V', E')$ - $V'=V'_o\sqcup V'_d$: origin, destinations - For each $\mathrm{tr}_i$, add $i$ to $V'_o$ as $v_i=\mathrm{tr}_i.o$ and add $i+n$ to $V'_d$ as $v_{i+n}=\mathrm{tr}_i.d$. - $G'$: directed complete graph as $(i,j)$ has a wegith $D_{i,j}=\mathrm{SPDist}(v_i,v_j)$ on road network $G$. - $\langle i, j\rangle$ request in $G'$ ## Decision variables - $y_{k,i,j} = 1$ if vehicle $k$ passes edge $(i, j)$ - $\epsilon_{k,i} = 1$ if vehicle $k$ passes vertex $i$ - $u_{k,i}$ the number of passengers on vehicle $k$ when it leaves vertex $i$ - $a_i$ time at which a vehicle arrives at vertex $i$ - $z_{k,i}$ the auxiliary binary variable ## Parameters - $M$ large value - $s_c$ average speed of vehicles - $\mathrm{WT}$ max waiting time threshold ## Problem ### Objective function $$ (1) \min \frac{1}{\sum_{\langle i,j\rangle\in\mathcal{T}}} \left[\sum_{k=1}^K \sum_{(i,j)\in E'} D_{i,j} y_{k,i,j} + \sum_{\langle i, j\rangle\in\mathcal{T}} D_{i,j}\left(1 - \sum_{k=1}^K \epsilon_{k, i}\right)\right] $$ - 第一項 車両の移動コスト - 第二項 unmatch (誰も頂点$i$にこない = originにこない) ときの移動コスト ### Constraints #### (2)-(3) - ある頂点は少なくとも1度しか訪れない $$ (2) \sum_{k=1}^K \sum_{j \mid (i, j)\in E'} y_{k,i,j} \leq 1 \text{ for all }i\in V' $$ $$ (3) \sum_{k=1}^K \sum_{j \mid (i, j)\in E'} y_{k,j,i} \leq 1 \text{ for all }i\in V' $$ ### 4 頂点$i$が車両$k$によって訪れられるかどうかの補助変数 (ただしexclusive or) $$ (4) z_{k,i} = \sum_{j\mid (j, i)\in E'} y_{k,j,i} \oplus \sum_{j\mid (i, j)\in E'}\text{ for all }i\in V', k\in [K] $$ #### 5 到着して出発するならば,同じ車両でなければならない $$ (5) z_{k,i} - M\left( 2 - \sum_{k=1}^K \sum_{j\mid (j, i)\in E'} y_{k,j,i} - \sum_{k=1}^K \sum_{j\mid(i, j)\in E'} y_{k,i,j} \right) \leq 0 \text{ for all }i\in V', k\in [K] $$ #### 6 2つのdirected chainが同じ車両で担当されない (?) $$ (6) \sum_{l\mid (i, l)\in E'} y_{k,i,l} + \sum_{l\mid (j, l)\in E'} y_{k,j,l} \leq 1 + M\sum_{k=1}^K \left( \sum_{l\mid(l, i)\in E'} y_{k,l,i} + \sum_{l\mid(l, j)\in E'} y_{k,l,j} \right) \text{ for all }i\in V', j\in V', i\neq j, k\in [K] $$ #### 7-8 $\epsilon$の計算 $$ (7) \sum_{j\mid(i, j)\in E'} y_{k,i,j} = \epsilon_{k,i} \text{ for all }i\in V'_o, k\in [K] $$ $$ (8) \sum_{j\mid(j, i)\in E'} y_{k,i,j} = \epsilon_{k,i} \text{ for all }i\in V'_d, k\in [K] $$ ### 9 ある車両が場所iを通過するならばjも通過する = pickとdropを両方担当する $$ (9) \epsilon_{k,i} = \epsilon_{k,j} \text{ for all }k\in [K], \langle i, j\rangle \in\mathcal{T} $$ ### 10 number of directed chainsが最大で$K$個 (車両数) $$ (10) 0 \leq \sum_{k=1}^K \sum_{i\in V'} \epsilon_{k,i} - \sum_{k=1}^K \sum_{(i,j)\in E'} y_{k,i,j} \leq K $$ ### 11-12 O/Dを経由すると人数が+1/-1される $$ (11) u_{k,j} \geq u_{k, i} + 1 - M(1 - y_{k,i,j}) \text{ for all }(i, j)\in E', j\in V'_o, k\in [K] $$ $$ (12) u_{k,j} \geq u_{k, i} - 1 - M(1 - y_{k,i,j}) \text{ for all }(i, j)\in E', j\in V'_d, k\in [K] $$ ### 13 容量制約を満たす $$ (13) u_{k,i} \leq C \text{ for all }i\in V', k\in [K] $$ ### 14 到着時刻の計算 $$ (14) a_j \geq a_i + \frac{1}{s_c} D_{i,j} - M(1 - \sum_{k=1}^K y_{k,i,j})\text{ for all }(i, j)\in E' $$ ### 15 待ち時間を守る $$ (15) \mathrm{tr}_i.o_t - \mathrm{WT} \leq a_i \leq \mathrm{tr}_i.o_t + \mathrm{WT}\text{ for all }i\in V'_o $$ ### 16 Pickup-deliveryの時系列保存 $$ (16) a_i \leq a_j \text{ for all }\langle i, j\rangle\in\mathcal{T} $$ ### 17 変数定義 $$ y_{k,i,j}, \epsilon_{k,i}, z_{k,i} \in \{0, 1\}, u_{k, i}, a_i \geq 0 \text{ for all }i\in V', (i, j)\in E', k\in [K] $$