|
1 | | -# Projet MAOA : Placement de centres logistiques |
| 1 | +# Logistics Center Placement Problem |
2 | 2 |
|
3 | | -## Description |
| 3 | +Projet sur le placement de centres logistiques avec deux formulations classiques : |
| 4 | +- **UFLP** (Uncapacitated Facility Location Problem) |
| 5 | +- **p‑centre** |
4 | 6 |
|
5 | | -Ce projet analyse et résout le problème de placement optimal de centres logistiques sur le territoire français en utilisant des méthodes exactes (PLNE) et heuristiques. Deux variantes classiques de problèmes NP-difficiles sont étudiées : |
6 | | -- **Uncapacitated Facility Location Problem (UFLP)** : Minimisation de la somme des coûts d'installation et de gestion. |
7 | | -- **P-centre** : Minimisation de la distance maximale entre une ville et son centre, sans prendre en compte les coûts d'installation, et on fixe un nombre maximal p de centres à ouvrir. |
| 7 | +Le dépôt contient des résolutions exactes (via **Gurobi**) et des heuristiques gloutonnes/iterative, ainsi que des notebooks de comparaison. |
8 | 8 |
|
9 | | -## Installation des dépendances |
| 9 | +## Contenu |
| 10 | +- `src/` : implémentations des modèles et heuristiques |
| 11 | + - `UFLP.py` : modèle exact UFLP (Gurobi) |
| 12 | + - `UFLP_heuristics.py` : random, greedy RCL, tabu search |
| 13 | + - `p_centre.py` : modèle exact p‑centre (Gurobi) |
| 14 | + - `p_centre_heuristics.py` : random greedy, farthest‑first, density‑based |
| 15 | + - `Instance.py`, `Solution.py`, `utils.py` : structures et utilitaires |
| 16 | +- `data/` : instances `.flp` et données CSV |
| 17 | +- `outputs/` : dessins et sorties générés |
| 18 | +- `comparison_experiments_*.ipynb` : notebooks d’expérimentation |
| 19 | +- `report.pdf`, `guidelines.pdf` : documents de projet |
| 20 | + |
| 21 | +## Pré‑requis |
| 22 | +- Python 3.x |
10 | 23 | - Une licence Gurobi peut être requise. |
11 | 24 |
|
| 25 | +Installation : |
12 | 26 | ``` |
13 | 27 | python -m venv .venv |
14 | 28 | source .venv/bin/activate |
15 | 29 | python -m pip install -r requirements.txt |
16 | 30 | ``` |
17 | 31 |
|
18 | | -## Exécution |
| 32 | +## Utilisation rapide |
| 33 | +Exécuter les scripts depuis la racine du projet. |
19 | 34 |
|
20 | | -``` |
| 35 | +### UFLP (exact) |
| 36 | +```bash |
21 | 37 | python src/UFLP.py |
| 38 | +``` |
| 39 | + |
| 40 | +### UFLP (heuristiques) |
| 41 | +```bash |
| 42 | +python src/UFLP_heuristics.py |
| 43 | +``` |
| 44 | + |
| 45 | +### p‑centre (exact) |
| 46 | +```bash |
22 | 47 | python src/p_centre.py |
23 | 48 | ``` |
24 | 49 |
|
| 50 | +### p‑centre (heuristiques) |
| 51 | +```bash |
| 52 | +python src/p_centre_heuristics.py |
| 53 | +``` |
| 54 | + |
| 55 | +Les figures sont enregistrées dans `outputs/drawings/`. |
| 56 | + |
| 57 | +## Données |
| 58 | +Les instances `.flp` sont lues via `Instance.from_file(...)`. Le format attendu est de type : |
| 59 | +- première ligne : nombre de villes `n` |
| 60 | +- lignes suivantes : informations par ville (coordonnées et coût d’ouverture) |
| 61 | + |
| 62 | +## Notebooks |
| 63 | +- `comparison_experiments_uflp.ipynb` |
| 64 | +- `comparison_experiments_p_centre.ipynb` |
| 65 | + |
| 66 | +Ces notebooks permettent de comparer les heuristiques et les solveurs sur différentes tailles d’instances. |
| 67 | + |
| 68 | +## Remarques |
| 69 | +- Les modèles exacts utilisent Gurobi et peuvent nécessiter un temps limite (`time_limit` ou `wall_time_limit`). |
| 70 | +- Les heuristiques sont paramétrables (probabilités, taille du voisinage, etc.). |
| 71 | + |
25 | 72 | --- |
26 | 73 |
|
27 | 74 | - MAMLOUK Haya |
28 | | -- PINHO FERNANDES Enzo |
| 75 | +- PINHO FERNANDES Enzo |
0 commit comments