Large Neighborhood Search for solving large-scale multi-attribute Inventory Routing Problems.
This package tackles large-scale multi-attribute inventory routing problems, as defined in our paper
Solving a Continent-Scale Inventory Routing Problem at Renault
In our setting, routes last several days, and the instances have 15 depots, 600 customers, 30 commodities and a 21-day horizon on average.
For any question on a specific function, check out the package documentation.
- To create an IRP instance from a folder architecture, we call
read_instance_CSV
. This function is designed to browse multiple CSV files and combine them into anInstance
object.. - A lower bound can be computed on the given instance using a flow relaxation, with
lower_bound
. - The initialization + local search algorithm is implemented as
initialization_plus_ls!
. It can be applied with two passes, re-estimating the transport costs on the arcs of the commodity flow graphs with a call tomodified_capa_initialization_plus_ls!
. - The large neighborhood search can then used applied to improve the initial solution with
LNS!
.
The complete pipeline is encapsulated in the paper_matheuristic!
function.
The algorithm called "route-based matheuristic" in the paper is implemented as route_based_matheuristic!
.
Note that what we call "LNS" in our paper corresponds to the combination of initialization_plus_ls!
and LNS!
in our code.
First, you need to clone the repository and open a Julia REPL at its root. Then, run the following commands:
using Pkg
Pkg.activate(".")
Pkg.instantiate()
include("test/main.jl")
This will solve the 71 instances used for the numerical experiments in our paper. Beware that this process is extremely time-consuming, that is why we included a shorter test version which you can try with
include("test/run_example.jl")
The Renault problem instances will be automatically downloaded from https://zenodo.org/record/8177237 and placed in a folder called .julia/datadeps/
.
You can then compare the solutions you obtain with the ones available at https://zenodo.org/record/8177271.