Ce projet propose une solution interactive au problème de routage de véhicules avec livraisons fractionnées (SD-VRP), implémentant à la fois des méthodes exactes via Gurobi et des approches métaheuristiques.
- HAMMALE MOURAD
- DOHA CHBIHI
- AYA BOUKHARI
- MOHAMED BENKIRANE
- HABBANI MOHAMMED
Le SDVRP est une variante du problème classique VRP où les demandes des clients peuvent être satisfaites par plusieurs véhicules. Le projet implémente :
- Une résolution exacte via Gurobi pour les petites instances
- Une approche métaheuristique pour les grandes instances
- Une interface utilisateur interactive via Streamlit
- Python 3.8+
- Gurobi 10.0.3 avec licence valide
- Cloner le repository :
git clone [URL_du_repo]
cd [nom_du_dossier]- Installer les dépendances :
pip install -r requirements.txt├── app.py # Interface utilisateur Streamlit
├── solve.py # Solveur exact (cas 0-6)
├── test.py # Solveur exact (cas 7-32)
├── metaheuristic.py # Solveur métaheuristique
├── requirements.txt # Dépendances
├── gurobi.lic # Licence Gurobi
└── Case*.txt # Fichiers d'instances
- Modèle mathématique :
- Variables binaires pour les arcs (x_ijk)
- Variables continues pour les quantités livrées (y_ik)
- Objectif : minimisation de la distance totale
- Contraintes principales :
- Conservation du flux
- Capacité des véhicules
- Satisfaction des demandes
- Élimination des sous-tours
- Initialisation : Solution gloutonne basée sur la distance et la demande
- Voisinage :
- Déplacement de clients entre routes
- Division de livraisons
- Fusion de routes similaires
- Critères :
- Liste tabou de taille dynamique
- Critère d'aspiration basé sur le coût
- Diversification après stagnation
- Créer un compte sur Gurobi Academic Program
- Utiliser une adresse email universitaire
- Suivre les instructions pour générer une licence
- Placer le fichier
gurobi.licdans le répertoire du projet
streamlit run app.py-
Sélectionner la méthode de résolution :
- Métaheuristique
- Solveur Exact (Gurobi)
-
Choisir le fichier d'instance (Case0.txt à Case32.txt)
-
Définir les paramètres :
- Temps maximum de résolution
- Nombre d'itérations (métaheuristique)
- Résumé de la solution
- Détails des routes
- Visualisation graphique
- Téléchargement de la solution
- Les cas 0-6 sont résolus avec solve.py
- Les cas 7-32 sont résolus avec sdvrp_solver.py
- La métaheuristique peut être utilisée pour tous les cas
- La licence académique Gurobi est nécessaire pour les méthodes exactes