Coder Social home page Coder Social logo

tsuizealy / euroalio2018 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from gleraromero/euroalio2018

0.0 0.0 0.0 312 KB

Integer programming formulations for the time-dependent elementary shortest path problem with resource constraints

License: MIT License

CMake 0.48% C++ 97.38% C 0.24% Python 1.90%

euroalio2018's Introduction

Integer programming formulations for the time-dependent elementary shortest path problem with resource constraints

Source code to replicate the experiments from the article https://doi.org/10.1016/j.endm.2018.07.008

Abstract

The impact of congestion in transportation has become one of the main concerns regarding urban planing in large cities. Time-Dependent Vehicle Routing Problems (TDVRPs) is the name given to a broad family of VRPs that explicitly incorporate the congestion by considering variable travel times. In this paper we study the Time-Dependent Elementary Shortest Path Problem with Resource Constraints (TDESPPRC), that appears as the pricing sub-problem in column generation-based approaches for TDVRPs. We consider two integer programming formulations which exploit the characteristics of the time-dependent travel time function and are evaluated on benchmark instances. On preliminary computational experiments, the approach is able to effectively solve instances with up to 25 vertices in reasonable times, showing its potential to be used within a Branch and Price algorithm.

Getting started

The following instructions will guide you through the steps to execute the experiments from the article.

Prerequisites

Built with

  • Kaleidoscope: A tool to visualize the outputs of Optimization Problems (more info)
  • Runner: A script to ease the process of running experiments (more info)
  • GOC lib: A library that includes interfaces for using (Mixed Integer) Linear Programming solvers, and some useful resources (more info).

Running the experiments.

  1. Add environment variables with the paths to the libraries.
    1. Add two environment variables to bash with CPLEX include and library paths.
      1. export CPLEX_INCLUDE=<path_to_cplex_include_dir>
        • Usually on Linux: /opt/ibm/ILOG/CPLEX_Studio<VERSION>/cplex/include
      2. export CPLEX_BIN=<path_to_cplex_lib_binary_file>
        • Usually on Linux: /opt/ibm/ILOG/CPLEX_Studio<VERSION>/cplex/lib/x86-64_linux/static_pic/libcplex.a
    2. Add two environment variables to bash with BOOST Graph Library include and library paths.
      1. export BOOST_INCLUDE=<path_to_boost_include_dir>
        • Usually on Linux: /usr/include
      2. export BOOST_BIN=<path_to_boost_lib_binary_file>
        • Usually on Linux: /usr/lib/x86_64-linux-gnu/libboost_graph.a
  2. Go to the euroalio2018 root directory.
  3. Execute python3 runner/runner.py experiments/comparison.json
  4. The execution output will be continually saved to the output folder.

Visualizing the experiment results.

  1. Go to https://gleraromero.github.io/kaleidoscope/euroalio2018/index.html
  2. Add the output file.
  3. Select the experiments (TTBF or CTTBF).
  4. Add some attributes to visualize.
  5. Click on Refresh.
  6. If more details on an experiment are desired click on the + icon in a specific row.

Checker

We include a checker program to validate that algorithms produce valid routes. To run the checker execute: python3 checker/checker.py output/<output_file.json>

The checker will go through each instance and validate:

  • That the exact solution route is feasible (with respect to all resources).
  • That the reported duration of the route is correct.
  • If Optimum status is reported, then it should be better or equal than any solution in the solutions.json file of its dataset.

Built With

Authors

  • Gonzalo Lera-Romero
  • Juan José Miranda-Bront

License

This project is licensed under the MIT License - see the LICENSE.md file for details

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.