The Bidirectional Vehicle Routing Problem
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
This project includes code to solve the Bi-directional electric vehicle routing problem (B-EVRP).
- smart_krit.py: direct solver of BEVRP
- greedy.py: implementation of Greedy-2 heuristic
- visualizers.py: visualization tools
- gui.py: Simple GUI for visualization functionalities
- utils.py: various helper functions
- pypeline.py: automatization script for sequential solving of multiple instances via many config-files
- config.yaml: examplary config-file
- data: examplary data containing energy consumers, producers and vehicles from Kaiserslautern
- showroom: A selection of solution instances that can be viewed right away
To Use the code you require a license for the Gurobi optimization software as well as a Python distribution such as Anaconda.
- Clone the repo
git clone https://github.com/PhilippBrendel/bevrp.git
- Create Conda environmemt via provided YAML-file
conda env create -f conda_env.yaml
- Activate Conda environmemt
conda activate bevrp
- Install Gurobi licence
grbgetkey xxxxxxxx-xxxx...
Configure YAML-file for your problem. Default file used is bevrp/config.yaml if not specified otherwise via cmd-line option (see below).
Direct solver:
python smart_krit.py -c my_sk_config.yaml
Greedy-2 heuristic:
python greedy2.py -c my_greedy_config.yaml
For more examples, please refer to the TODO
The included visualization tools are executed by specifying the path to the desired solution files - both the .txt and .p need to exist at the same location:
python visualizers.py -n /path/to/my/results/name_of_the_instance
There is also a simple GUI provided that is called via:
python gui.py
- Choose the directory that contains your result files (e.g. my_results.p and my_results.txt)
- Select the respective solution files from the file-list
- The Solutions will be visualized automatically
See the open issues for a list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to be learn, inspire, and create.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Philipp Brendel - philipp.brendel@iisb.fraunhofer.de
Project Link: https://github.com/PhilippBrendel/bevrp