Giter Site home page Giter Site logo

michieluithetbroek / a-mdvrp Goto Github PK

View Code? Open in Web Editor NEW
43.0 4.0 9.0 65.76 MB

Asymmetric multi-depot vehicle routing problems: valid inequalities and a branch-and-cut algorithm

License: MIT License

C++ 99.40% C 0.60%
branch-and-cut valid-inequalities tsp vrp mdvrp multi-depot cplex gurobi operations-research mixed-integer-programming

a-mdvrp's Introduction

A-MDVRP

This repository provides the latest C++ implementation of the branch-and-cut framework and the valid inequalities that we used to write "Asymmetric multi-depot vehicle routing problems: valid inequalities and a branch-and-cut algorithm". The exact version as used while writing the manuscript can be found as an online supplement to the publication, see: https://doi.org/10.1287/opre.2020.2033.

If you have any questions, comments, and/or suggestions, please do not hesistate to contact us via [email protected] and [email protected]. If you found our code useful, then you can cite the work as follows:

Uit het Broek, Michiel A. J., Albert H. Schrotenboer, Bolor Jargalsaikhan, Kees Jan Roodbergen, and Leandro C. Coelho (2020). Asymmetric multi-depot routing problems: valid inequalities and a branch-and-cut algorithm. Operations Research.

For further details we refer to our Github wiki page: https://github.com/michieluithetbroek/A-MDVRP/wiki.

a-mdvrp's People

Contributors

albert1991 avatar michieluithetbroek avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

a-mdvrp's Issues

Make the Cut base class compatible with Gurobi

The function Cut::getCuts uses the function Cut::createIloRange to translate vector<CutReturn> into vector<IloRange> such that the valid inequalities can be used by CPLEX. We should also add a function that translates our CutReturn objects into objects that can be used by Gurobi.

Do not forget to update the wiki page that describes how to use another solver as this now explains how to use Gurobi.

Generalize the function `Cut::getCuts` such that is works for multiple solvers without the need to edit the function (use templates)

The function Cut::getCuts now returns a vector of CPLEX cuts. If one wants to use Gurobi, then one has to edit the function Cut::getCuts because 1) we need another return type, and 2) we have to call Cut::createGurobiConstraint instead of Cut::createIloRange.

We may avoid this by making Cut::getCuts a template function with two specialized template values (i.e., CPLEX and Gurobi). To avoid that the new template function breaks with the current code we can set the default value of the template to CPLEX.

The function will then be called as

auto const cuts = cut_ptr->getCuts<CPLEX>(model.d_env, model.d_x, x_val, true);

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.