Updated on the 28th of April 2022
This project was started on the 1st of March 2022 by students of the Ecole Centrale de Lille, in France.
It aims to optimize the resolution of the VRP, using different algorithms and finding their best parameters.
It is a school project for the class "Intelligence Collaborative (ICO)", therefore it is not intended to be used in production.
A quick introduction to how to set up the project.
switch your python interpreter to pipenv
git pull
git checkout main (for the production branch)
git checkout develop (for the development branch)
git checkout [branch name] (for any feature branch)
Then to run the different algorithms.
Go to an algorithm file
Run it in your IDE console
Create an instance of an algorithm class
Call its main method
Access any of its properties to dig into it
Example :
ga = GeneticAlgorithm()
ga.main()
print(ga.solution)
What can you do with this project ?
- use different metaheuristics algorithms to solve the VRP :
- tabou
- simulated annealing
- genetic
- use a multi-agent system to combine the metaheuristics
- use Q-Learning to improve the parameters of the SMA and the metaheuristics
It simply contains all the files storing the data used in the project.
It gathers csv and xlsx files storing the information about the customers, the vehicles, the depots.
It contains the implementation of the 3 metaheuristics studied (genetic algorithm, tabou algorithm, simulated annealing), as well as all functions used in specific metaheuristics code.
It contains all files related to the multi-agent system implementation.
- sma.py : define the agent and model classes for the SMA
- interactions.py : define the scenarios of interactions between the agent within the SMA
It contains all files related to the q-learning part.
It contains all classes and functions used through the whole project.
- database.py : read the dataset files and store them in a pandas dataframe
- validator.py : check that all constraints are matched by a solution generated by the algorithm
- common.py : all functions used several times and common in all algorithms
- pool.py : manage the pool of solution used in the SMA
- plotter.py : manage the plotting of graph and chart, to display the solutions
-
Project homepage : https://github.com/k0raty/Fil_rouge
-
Repository : https://github.com/k0raty/Fil_rouge
-
Issue tracker : https://github.com/k0raty/Fil_rouge/issues
-
Git documentation : https://git-scm.com/docs/git
-
PyCharm documentation : https://www.jetbrains.com/help/pycharm/quick-start-guide.html#code-assistance
If you want to contribute, feel free to create your own branch :
git branch [your branch name]
Once you finished your work, you can check the modified files :
git status
And then you can add them to a commit :
git add [file name]
After that you can create the commit :
git commit
Finally, you can push on your remote branch :
git push
By Florianne, Alexandre, Antony, Flavian, Hugo, Julien