From 2b90894db35f7ef34994eb73824f433eef0ccacd Mon Sep 17 00:00:00 2001 From: Davide Paro Date: Tue, 19 Oct 2021 16:22:38 +0200 Subject: [PATCH] Updated readme. --- README.md | 118 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 67 insertions(+), 51 deletions(-) diff --git a/README.md b/README.md index 63bbb4b..1fe1d3c 100644 --- a/README.md +++ b/README.md @@ -1,58 +1,74 @@ -## README Template +![License](https://img.shields.io/github/license/dparo/master-thesis) +![CI](https://img.shields.io/github/workflow/status/dparo/master-thesis/CI) +![Release](https://img.shields.io/github/v/release/dparo/master-thesis) +![Downloads](https://img.shields.io/github/downloads/dparo/master-thesis/total) -Clear documentation is critical to the success of your project. This checklist is meant to help you cover all your bases. Not every section/subsection will be relevant to your project; pick and choose what is. Inspired by READMEs of very successful projects like etcd. -Please copy-paste this into a new document and save as you build your READMEs. For alternative formats, you might create a [Structured README](https://github.com/shaloo/structuredreadme), which offers a thorough breakdown of optional README ingredients for you to consider. You might also take a look at [this similar checklist](https://github.com/cfpb/open-source-project-template); or check out [art-of-readme](https://github.com/noffle/art-of-readme). +# CPTP: Capacitated Profitable Tour Problem -### Project Name/Intro +A Mixed Integer Programming (MIP) based solution for the CPTP. + +This project studies and compares various MIP formulations and cuts separation techniques for the CPTP. -- Describe very briefly but clearly what the project does. -- State if it is out-of-the-box user-friendly, so it’s clear to the user. -- List its most useful/innovative/noteworthy features. -- State its goals/what problem(s) it solves. -- Note and briefly describe any key concepts (technical, philosophical, or both) important to the user’s understanding. -- Link to any supplementary blog posts or project main pages. -- Note its development status. -- Include badges. -- If possible, include screenshots and demo videos. ### Core Technical Concepts/Inspiration -- Why does it exist? -- Frame your project for the potential user. -- Compare/contrast your project with other, similar projects so the user knows how it is different from those projects. -- Highlight the technical concepts that your project demonstrates or supports. Keep it very brief. -- Keep it useful. - -### Getting Started/Requirements/Prerequisites/Dependencies -Include any essential instructions for: -- Getting it -- Installing It -- Configuring It -- Running it - -### More Specific Topics (+ sample sub-categories) -- Versioning: Services, APIs, Systems -- Common Error Messages/related details -- Tests -- Is it a Swift project? Please take a look at Mattt Thompson & Nate Cook's [Swift documentation](http://nshipster.com/swift-documentation/) guide - -### Contributing -- Contributor Guidelines -- Code Style/Requirements -- Format for commit messages -- Thank you (name contributors) - -### TODO -- Next steps -- Features planned -- Known bugs (shortlist) - -### Contact -- Email address -- Google Group/mailing list (if applicable) -- IRC or Slack (if applicable) - -### References - -### License +The CPTP is a subproblem that appears in the column generation procedure of the commonly known [Vehicle Routing Problem](https://en.wikipedia.org/wiki/Vehicle_routing_problem) (**VRP**). +Current state-of-the art solution for CPTP are based on dynamic programming paradigms. +Substantial literature was devoted as studying the use of a MIP solver for solving the pricing problem in VRP [[1]](#Jepsen2014) [[2]](#baldacci2008exact) [[3]](#baldacci2011new). + +In particular, in 2014, Jepsen [[1]](#Jepsen2014) studied extensively this problem by employing a MIP solver. +Almost ten years have passed, and commercial MIP solvers have made extensive progress. + +This work tries to revisit, and if possible improve, the original work of Jepsen in 2014 [[1]](#Jepsen2014). + + +## Getting Started +- Requirements: + - A working `C` compiler + - `cmake` + - `git` + - `CPLEX v>=12.10`: A free academic license can be downloaded at this [URL](https://www.ibm.com/academic/topic/data-science) +- Getting the source code: + ```bash + git clone --recursive github.com/dparo/master-thesis + ``` +- Building it: + ``` + cd master-thesis + mkdir -p build + cd build + cmake -DCMAKE_BUILD_TYPE=Release ../ + cmake --build ./ --config Release + ``` +- Running the tests: + ``` + ctest --progress --force-new-ctest-process --output-on-failure -C Release + ``` +- Running the main solver: + ``` + ./src/cptp --help + ``` + +## TODO +The project is currently under heavy-development. + +## Contact +- Insitutional EMAIL address: `davide.paro@studenti.unipd.it` +- Personal EMAIL address: `dparo@outlook.it` + +## References +- [1] +Jepsen, M. K., Petersen, B., Spoorendonk, S., & Pisinger, D. (2014). A branch-and-cut algorithm for the capacitated profitable tour problem. Discrete Optimization, 14, 78–96. https://doi.org/10.1016/j.disopt.2014.08.001 +- [2] +Baldacci, R., Christofides, N., & Mingozzi, A. (2008). An exact algorithm for the vehicle routing problem based on the set partitioning formulation with additional cuts. Mathematical Programming, 115(2), 351–385. +- [3] +Baldacci, R., Mingozzi, A., & Roberti, R. (2011). New route relaxation and pricing strategies for the vehicle routing problem. Operations Research, 59(5), 1269–1283. + +## License +This project is licensed under the **MIT** license. Check the [LICENSE file](LICENSE). + +This project makes use of thirdy party projects (located under `deps`) licensed respectively in their corresponding licenses: +1. [rxi/log.c](github.com/rxi/log.c) [**MIT license**](https://github.com/rxi/log.c/blob/master/LICENSE) +2. [argtable3/argtable3](github.com/argtable3/argtable3) [**BSD license**](https://github.com/argtable/argtable3/blob/master/LICENSE) +3. [ThrowTheSwitch/Unity](github.com/ThrowTheSwitch/Unity) [**MIT license**](https://github.com/ThrowTheSwitch/Unity/blob/master/LICENSE.txt)