{"id":16960187,"url":"https://github.com/markkvdb/mdsdhvrp-solver","last_synced_at":"2025-04-11T22:10:34.896Z","repository":{"id":113964240,"uuid":"82831774","full_name":"markkvdb/MDSDHVRP-Solver","owner":"markkvdb","description":"Large neighbourhood solver for the multi-depot split-delivery vehicle routing problem with inventory constraints and heterogeneous fleet.","archived":false,"fork":false,"pushed_at":"2020-02-27T13:31:00.000Z","size":1832,"stargazers_count":18,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-25T18:07:16.357Z","etag":null,"topics":["heuristic","mdsdhvrp","metaheuristic","operational-research","tsp","vehicle-routing-problem","vrp"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/markkvdb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-02-22T17:14:38.000Z","updated_at":"2024-03-11T07:57:09.000Z","dependencies_parsed_at":null,"dependency_job_id":"ccec8331-54b6-4b99-8792-aa5db1cb3467","html_url":"https://github.com/markkvdb/MDSDHVRP-Solver","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markkvdb%2FMDSDHVRP-Solver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markkvdb%2FMDSDHVRP-Solver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markkvdb%2FMDSDHVRP-Solver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/markkvdb%2FMDSDHVRP-Solver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/markkvdb","download_url":"https://codeload.github.com/markkvdb/MDSDHVRP-Solver/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248487696,"owners_count":21112191,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["heuristic","mdsdhvrp","metaheuristic","operational-research","tsp","vehicle-routing-problem","vrp"],"created_at":"2024-10-13T22:47:30.235Z","updated_at":"2025-04-11T22:10:34.883Z","avatar_url":"https://github.com/markkvdb.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MDSDHVRP-I Solver\n\nThis library provides a solver for the the multi-depot split-delivery vehicle routing problem with inventory constraints and heterogeneous fleet prolbem.\n\n## Overview\n\nWe apply a metaheuristic search techniques to an extension of the multi-depot vehicle routing problem. The goal of this research is to design an efficient solution approach that finds high-quality feasible solutions for the multi-depot split-delivery vehicle routing problem with inventory constraints and heterogeneous fleet. We use an extended large neighbour search algorithm, which combines destroy and repair operators with local search techniques. Our algorithm finds feasible solutions for a large number of instances in short time. The main contributions of this paper are twofold: we extend and apply an existing metaheuristic approach, and we consider a new extension of the vehicle routing problem.\n\nA link with performance details and an overview of the operators can be found [here](MDSDHVRP-I.pdf).\n\n## Installation\n\nBuilding the solver requires a recent version of `cmake` and a C++ compiler that supports the 2011 standard. After, `cmake` can be configured by running\n\n```bash\ncmake -DCMAKE_BUILD_TYPE=Release -B build\n```\n\nThe program can now be built as\n\n```bash\ncmake --build build --config Release --target all -- -j 10\n```\n\n## Usage\n\n### Input file \n\nNow that we have build our solver we can use by providing a file with our problem instance. The input file should be defined according to the following scheme\n\n```txt\n2 2 30\n\n   0   200     8    80    25\n   1    50     8   110    10\n\n   0   57.84   50.38  203    1    1\n   1  -84.84  -39.79  160    5    1\n\n   0  -64.35  -90.76    8  0.05\n   1    6.77  -84.59    5  0.09\n   2  -58.57   14.63   15  0.04\n   3   59.16   89.24    5  0.09\n   4   46.49   77.78   23  0.08\n   5   55.12   81.50   19  0.05\n   6   59.28   89.63    4  0.09\n   7   51.71   54.42   24  0.06\n   8   10.22   56.17   21  0.07\n   9   27.20  -83.00   19  0.09\n  10  -20.87   63.39    5  0.07\n  11    3.21  -68.39    4  0.03\n  12   27.90  -61.73    1  0.03\n  13   63.60  -25.71   15  0.03\n  14   32.38  -49.92    8  0.04\n  15   23.90  -75.21   13  0.02\n  16  -94.52   39.39   23  0.02\n  17  -97.87  -47.92    8  0.06\n  18  -73.88  -47.22    7  0.05\n  19  -86.10    5.76   17  0.04\n  20  -69.45    5.35    5  0.05\n  21   -9.02   95.03    4  0.02\n  22    0.87   -7.88   24  0.09\n  23  -97.95   29.66   15  0.03\n  24  -78.38  -14.60    4  0.02\n  25  -19.18  -66.77    6  0.07\n  26  -13.62  -76.94    7  0.01\n  27  -47.75  -26.75    2  0.04\n  28  -55.08  -20.71    1  0.01\n  29   46.03  -22.40    1  0.02\n```\n\nThe first line specifies the number of different vehicles, depots and customers, respectively.\n\n```txt\n2 2 30\n```\n\n The second part defines the vehicle number, capacity, maximum duration of trip, speed and cost per unit of distance.\n\n```txt\n   0   200     8    80    25\n   1    50     8   110    10\n```\n\nThe third part defines the depot id, x-coordinate, y-coordinate, total capacity of items, number of vehicles of type 1 and the number of vehicles of type 2.\n\n```txt\n   0   57.84   50.38  203    1    1\n   1  -84.84  -39.79  160    5    1\n```\n\nNote that if we have more vehicle types, then the lines above will be extended as needed. The last part concerns the customers. The numbers on the rows are: id, x-coordinate, y-coordinate, items demanded and the processing time.\n\n```txt\n   0  -64.35  -90.76    8  0.05\n   1    6.77  -84.59    5  0.09\n   2  -58.57   14.63   15  0.04\n   3   59.16   89.24    5  0.09\n   4   46.49   77.78   23  0.08\n   5   55.12   81.50   19  0.05\n   6   59.28   89.63    4  0.09\n   7   51.71   54.42   24  0.06\n   8   10.22   56.17   21  0.07\n   9   27.20  -83.00   19  0.09\n  10  -20.87   63.39    5  0.07\n  11    3.21  -68.39    4  0.03\n  12   27.90  -61.73    1  0.03\n  13   63.60  -25.71   15  0.03\n  14   32.38  -49.92    8  0.04\n  15   23.90  -75.21   13  0.02\n  16  -94.52   39.39   23  0.02\n  17  -97.87  -47.92    8  0.06\n  18  -73.88  -47.22    7  0.05\n  19  -86.10    5.76   17  0.04\n  20  -69.45    5.35    5  0.05\n  21   -9.02   95.03    4  0.02\n  22    0.87   -7.88   24  0.09\n  23  -97.95   29.66   15  0.03\n  24  -78.38  -14.60    4  0.02\n  25  -19.18  -66.77    6  0.07\n  26  -13.62  -76.94    7  0.01\n  27  -47.75  -26.75    2  0.04\n  28  -55.08  -20.71    1  0.01\n  29   46.03  -22.40    1  0.02\n```\n\nExample input files can be found in the `src/data` folder.\n\n### Obtaining solution\n\nObtaining a solution can be done by providing an input file as described above as\n\n```bash\nbuild/ORACS \u003cInput file\u003e\n```\n\nwhere `\u003cInput file\u003e` is replaced by the location of the input file according to the style as described in the same folder as the input file.\n\n### Output file\n\nThe output file of the input file in the example looks as follows\n\n```txt\n58119.35\n\n0 0     595.22  14880.60 103  0.55  7.44  7.99  0 8 1 5 2 15 3 5 4 23 5 19 6 4 7 24\n0 1     617.83   6178.27  50  0.29  5.62  5.91  8 21 9 19 10 5 11 4 12 1\n1 0     610.17  15254.28  96  0.31  7.63  7.94  13 15 14 8 15 13 16 23 17 8 18 7 19 17 20 5\n1 0     608.21  15205.18  63  0.29  7.60  7.89  21 4 22 24 23 15 24 4 25 6 26 7 27 2 28 1\n1 0     264.04   6601.02   1  0.02  3.30  3.32  29 1\n1 0       0.00      0.00   0  0.00  0.00  0.00  \n1 0       0.00      0.00   0  0.00  0.00  0.00  \n1 1       0.00      0.00   0  0.00  0.00  0.00  \n```\n\nThe first lines gives the total objective function which is the sum of the cost of all trips by the vehicles while satisfying all demand. The following lines have the following structure\n\n```txt\n\u003cdepot id\u003e \u003cvehicle type\u003e \u003c...\u003e \u003c...\u003e \u003ctotal quantity\u003e \u003cservice time\u003e \u003ctravel time\u003e \u003ctotal time\u003e \u003ccustomer id 1\u003e \u003cquantity customer id 1\u003e \u003ccustomer id 2\u003e \u003cquantity customer id 2\u003e \u003c...\u003e\n```\n\n### Visualise solution\n\nTODO","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarkkvdb%2Fmdsdhvrp-solver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarkkvdb%2Fmdsdhvrp-solver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarkkvdb%2Fmdsdhvrp-solver/lists"}