This project implements a strategy to solve the Inventory Routing Problem (IRP) based on the instances provided for the ROADEF/EURO Challenge 2016. The implementation is done using MATLAB.
The instances of the IRP for the ROADEF/EURO Challenge 2016 are available at this webpage. In this project, we use the instances from Version 1.1 - Set A. A brief description of each instance is available in the file InstancesDescription.txt.
Each instance is represented as an XML file, structured hierarchically with the following information:
- Optimization horizon
- Time matrices between nodes
- Drivers: index, maximum driving duration, time windows, assigned trailers, time cost
- Trailers: index, capacity, initial quantity, distance cost
- Bases: index, setup time
- Sources: index, setup time
- Customers: index, setup time, allowed trailers, forecast demand, inventory capacity, safety level, initial tank quantity
- Distance matrices between nodes
The solution is expected as a list of shifts, each including:
- Shift index
- Driver index
- Trailer index
- Start time
- An operation list, with:
- Arrival point
- Arrival time
- Loaded quantity
Ensure the following toolboxes and features are installed in your MATLAB environment:
- Optimization Toolbox
- xml2struct
-
Reading the XML file
Run theXmlReader.mscript, specifying the name of the XML file corresponding to the desired instance. This script loads and parses the data into MATLAB Workspace. -
Data extraction
RunDataExtraction.mto extract and structure the instance's information into MATLAB workspace variables. -
Define problem parameters
UseDefineParameters.mto read the workspace data and set up the initial problem parameters required for the optimization process. -
Define decision variables
ExecuteDefineDecisionVariables.mto establish the decision variables and the objective function using theoptimvarfunctionality from the Optimization Toolbox. -
Define constraints
RunDefineConstraints.mto encode the main constraints of the problem, also utilizing theoptimvarlibrary. -
Solve the problem
UseDefineSolution.mto configure the solver, define its options, and compute the solution using the defined parameters, variables, and constraints.
This project was developed to explore real-world optimization problems as part of the academic exam Industrial Automation during Master's degree in Computer Engineering at the University of Genova. The instances and problem formulation are based on the official ROADEF/EURO Challenge 2016.