File: MDVSP.zip
The directory contains sixty instances of the MDVSP. Each instance file is named as RN-m-n-k
.dat, denoting the k’th
instance involving m
depots and n
trips.
Each instance contains following information:
m
- number of depotsn
- number of tripsl
- number of locationsv_i
- the maximum number of vehicles in depot i = {1,...,m}
s_i
), start location (p_i
), end time (e_i
), and end location (q_i
)l_i
to l_j
: d(l_i,l_j)
Note: Locations are numbered from 0 to l-1. Locations {0,...,m-1}
are depot-locations (locations of depots) and locations {m,...,l-1}
are trip-locations(where trips start/end).Format of each instance is as follows:
m\ n\ l
v_i,\ i = {1,...,m}
i^{th}
trip: s_i\ p_i\ e_i\ q_i
l_i
and l_j
, d(l_i,l_j)
.Various costs in different formulations are calculated as follows:
j = 5000 + 10 * d(l_i,p_j)
.i = 5000 + 10 * d(q_j,l_i).
s_j \ge e_i +
d(q_i,p_j),
and8 * d(q_i,p_j) + 2 * (s_j,e_i)
.The time-space network flow formulation (TSNF):
Each node j represents location (l_j) at time (t_j). Location for depot i is represented as l_i
. The start-time (t_0
) of planning horizon is zero, and end-time (t_e
) is calculated as \max(q_1,...,q_n) + 10
.
t_j = 5000 + 10 * d(l_i,l_j).
The pull-in cost from node i to node j, where node i represents depot-location i at t_e
and node j represents trip-location j at time t_j = 5000 + 10 * d(l_j,l_i).
l_j
at time t_j
and node k represents trip-location l_k at time t_k = 8 * d(l_j,l_k) + 2 * (t_k - t_j)
. Note that deadheading is possible if t_k \ge t_j + d(l_j,l_k).
t_{j+1}
, respectively = 2 * (t_{j+1} - t_j)
.l_j
) at time (t_j
). Location for depot i is represented as l_i. The start-time (t_0
) of planning horizon is zero, and end-time (t_e
) is
calculated as \max(q_1,...,q_n) + 10
.
l_i
at t_e = 5000 * 10 d(l_j,l_i).
l_i
at t_0
to end of trip j at node (q_j,e_j) = 5000 * 10 d(l_i,q_j).
(q_k,e_k) = 8 * d(l_j,p_k) + 2 * (s_k - t_j)
.
Note that the inventory arc is feasible if s_k \ge t_j + d(l_j,p_k).
t_{j+1}
, respectively = 2 * (t_{j+1} - t_j)
.Use C++ file GenerateInstances.cpp
to generate new instances.
Usage: ./GenerateInstances m n k
where m - number of depots, n - number of trips, and k - number of instances to be generated.