1/32 Méthodologie de Développement Objet Quatrième partie : Présentation du projet Christine Solnon INSA de Lyon - 4IF 2014-2015
2/32 Plan du cours Optimisation de tournées de livraison Le projet Optimod Lyon 1 Optimisation de tournées de livraison Le projet Optimod Lyon Le projet DevOO 2
Optimisation de tournées de livraison Le projet Optimod Lyon Le projet Optimod Lyon Réponse à un appel à projets de l ADEME sur la mobilité urbaine Porteur : Grand Lyon 13 partenaires : 2 collectivités : Lyon et Grand Lyon 8 industriels : IBM, Renault Trucks, Orange, CityWay, Phoenix ISI, Parkeon, Autoroutes Trafic, Geoloc Systems 3 laboratoires de recherche : LIRIS, CETE, LET OPTIMIZE SUSTAINABLE MOBILITY IN THE CITY Durée : 3 ans (2012-2015) Budget : 7 M Euros 3/32
Optimisation de tournées de livraison Le projet Optimod Lyon Objectifs d Optimod Lyon New systems for collecting mobility data in real time Grand Lyon mobility portal Mobility Data warehouse Optimize the exploitation of urban networks by a 1 hour prediction of traffic conditions Provide real time and multi modal information, available at any time, every where and for every body Optimize urban deliveries by informing drivers and optimizing tours 4/32
5/32 Plan du cours Optimisation de tournées de livraison Le projet DevOO 1 Optimisation de tournées de livraison Le projet Optimod Lyon Le projet DevOO 2
Optimisation de tournées de livraison Le projet DevOO Vue générale du projet (IHM + DevOO) Sous-système Demande de livraison : Utilisé par les clients pour Demander une nouvelle livraison Suivre une livraison en cours Sous-système Préparation et supervision des livraisons : Utilisé par les sociétés de livraison pour Planifier les tournées de livraison Modifier une tournée planifiée Superviser le bon déroulement des tournées en cours Sous-système Réalisation des livraisons : Utilisé par les livreurs pour Connaître les livraisons à effectuer et l itinéraire à suivre Indiquer les livraisons effectuées Sous-système Relations clientèles : Utilisé par les sociétés de livraison pour gérer ses relations clients 6/32
Entrepot en bleu clair 7/32 Optimisation de tournées de livraison Le projet DevOO Périmètre du projet DevOO Préparation des feuilles de route : Charger un plan à partir d un fichier XML Charger une demande de livraisons à partir d un fichier XML Calculer une tournée pour une demande de livraisons Modifier interactivement une tournée Générer une feuille de route pour le livreur Points reliés par des tronçons Chaque tronçon a une longueur et une vitesse moyenne
7/32 Optimisation de tournées de livraison Le projet DevOO Périmètre du projet DevOO Préparation des feuilles de route : Charger un plan à partir d un fichier XML Charger une demande de livraisons à partir d un fichier XML Calculer une tournée pour une demande de livraisons Modifier interactivement une tournée Générer une feuille de route pour le livreur 3 plages de livraison : 8h-10h (bleu) : 4 livraisons 10h-12h (rose) : 4 livraisons 12h-14h (vert) : 5 livraisons
7/32 Optimisation de tournées de livraison Le projet DevOO Périmètre du projet DevOO Préparation des feuilles de route : Charger un plan à partir d un fichier XML Charger une demande de livraisons à partir d un fichier XML Calculer une tournée pour une demande de livraisons Modifier interactivement une tournée Générer une feuille de route pour le livreur Tournée la plus courte partant de (et revenant sur) l entrepot et passant successivement par 1 les points bleus 2 les points roses 3 les points verts
7/32 Optimisation de tournées de livraison Le projet DevOO Périmètre du projet DevOO Préparation des feuilles de route : Charger un plan à partir d un fichier XML Charger une demande de livraisons à partir d un fichier XML Calculer une tournée pour une demande de livraisons Modifier interactivement une tournée Générer une feuille de route pour le livreur Possibilité de Supprimer des livraisons Insérer des livraisons
7/32 Optimisation de tournées de livraison Le projet DevOO Périmètre du projet DevOO Préparation des feuilles de route : Charger un plan à partir d un fichier XML Charger une demande de livraisons à partir d un fichier XML Calculer une tournée pour une demande de livraisons Modifier interactivement une tournée Générer une feuille de route pour le livreur Description textuelle de la tournée indiquant l itinéraire et les horaires de passage
8/32 Optimisation de tournées de livraison Le projet DevOO Formalisation du problème de calcul de tournée Données fournies en entrée : Un graphe G = (V, A) tel que V = points et A = tronçons Un entrepôt e V Une fonction d : A R + telle que d ij = durée de l arc (i, j) Un ensemble de points de livraison L V Une fonction p : L N telle que p i est la plage de livraison de i Données à calculer en sortie : Un circuit c dans G tel que c part de e, passe par chaque point de L et revient sur e pour tout couple de points (i, j) L L, si p i < p j alors c passe par i avant de passer par j la somme des durées des arcs de c est minimale
Optimisation de tournées de livraison Le projet DevOO Reformulation du problème de calcul de tournée Calcul du graphe des plus courts chemins G : Entrée : G = (V, A), L V, e V, p : L N et d : A R + Sortie : G = (V, A ) et d : A R + tels que V = L {e} A = {(e, i) i L, p i est minimal} {(i, j) L L p i = p j p j = p i + 1} {(i, e) i L, p i est maximal} d ij = longueur du plus court chemin de i à j dans G e 1 3 2 4 6 5 7 9 8 Recherche du plus court circuit hamiltonien dans G Entrée : un graphe G = (V, A ) et une fonction coût d : A R + Sortie : un circuit c dans G tel que Chaque sommet de V apparaît exactement une fois dans c La somme des coûts des arcs de c est minimale Problème NP-difficile bien connu : le voyageur de commerce! 9/32
Optimisation de tournées de livraison Le projet DevOO Reformulation du problème de calcul de tournée Calcul du graphe des plus courts chemins G : Entrée : G = (V, A), L V, e V, p : L N et d : A R + Sortie : G = (V, A ) et d : A R + tels que V = L {e} A = {(e, i) i L, p i est minimal} {(i, j) L L p i = p j p j = p i + 1} {(i, e) i L, p i est maximal} d ij = longueur du plus court chemin de i à j dans G e 1 3 2 4 6 5 7 9 8 Recherche du plus court circuit hamiltonien dans G Entrée : un graphe G = (V, A ) et une fonction coût d : A R + Sortie : un circuit c dans G tel que Chaque sommet de V apparaît exactement une fois dans c La somme des coûts des arcs de c est minimale Problème NP-difficile bien connu : le voyageur de commerce! 9/32
10/32 Plan du cours Problèmes d optimisation sous contraintes 1 Optimisation de tournées de livraison 2 Problèmes d optimisation sous contraintes Programmation par contraintes Code Choco fourni pour le projet
11/32 Problèmes d optimisation sous contraintes Rappels (cf Aide à la décision / M. Miquel) Modèle mathématique d un problème d optimisation sous contraintes : Quadruplet (X, D, C, F) tel que X = ensemble de variables (inconnues du problème) D = fonction associant à chaque variable un ensemble de valeurs D(x i ) = domaine de x i = ensemble des valeurs que x i peut prendre C = contraintes du problème Contrainte = relation entre des variables de X Restreint les valeurs pouvant être affectées à ces variables F : X R = fonction objectif But du jeu : Affecter une valeur à chaque variable de sorte que Chaque variable soit affectée à une valeur de son domaine Toutes les contraintes de C soient satisfaites F soit maximisée (ou minimisée)
12/32 Quelques cas particuliers Problèmes d optimisation sous contraintes Pas de contraintes : C = Problème d optimisation Pas de fonction objectif : F = 0 Problème de satisfaction de contraintes (CSP) Domaines de D discrets (énumérables) Problème combinatoire F linéaire, D = R et C = ensemble d inéquations linéaires Problème d optimisation linéaire (programmation linéaire) F linéaire, D = Z et C = ensemble d inéquations linéaires Problème d optimisation linéaire en nombres entiers F linéaire, D = {0, 1} et C = ensemble d inéquations linéaires Problème de sac-à-dos multidimensionnel F quadratique, D = R et C = ensemble d inéquations linéaires Problème d optimisation quadratique (programmation quadratique)...
13/32 Très très nombreuses applications Problèmes d optimisation sous contraintes Conception d emplois du temps, affectation de ressources Ordonnancement de tâches Tournées de véhicules, voyageur de commerce Découpe de pièces, chargement de véhicules Optimisation du trafic (avions, trains, voitures, frêt,...)... et développement durable! cf Cours de M. Miquel pour des exemples...
14/32 Complexité Problèmes d optimisation sous contraintes Certains cas particuliers ont des complexités polynomiales : Programmation linéaire (domaines continus) 2-SAT Problème d affectation / couplage maximal Quelques problèmes dans les graphes : ACM, Plus courts chemins, Coupure minimale/flot maximal,...... Ils sont bien souvent NP-difficiles : Programmation linéaire en nombres entiers, Sac-à-dos SAT, 3-SAT, Planar-3-SAT,... Nombreux problèmes dans les graphes : Coloriage, Voyageur de commerce, Cliques/Stables,... CSP finis (contraintes quelconques)... Dans certains cas, ils sont indécidables : Equations diophantiennes CSP continus (contraintes quelconques)...
15/32 Problèmes d optimisation sous contraintes Difficulté des problèmes NP-difficiles? Croissance exponentielle : n 2 n Temps (si 10 9 instr/seconde) 30 10 9 1 seconde 40 10 12 16 minutes 50 10 15 11 jours 60 10 18 32 ans 70 10 21 317 siècles
16/32 Et en pratique? Problèmes d optimisation sous contraintes Certaines instances de problèmes NP-complets peuvent être faciles Notion de transition de phase Certains problèmes NP-difficiles admettent des cas particuliers qui ont des complexités polynomiales Certains problèmes NP-difficiles sont approximables en temps polynomial (avec garantie sur l erreur) Sinon, on peut explorer l espace de recherche de façon intelligente" : Contenir l explosion en structurant et filtrant l espace Contourner l explosion en faisant des impasses
17/32 Problèmes d optimisation sous contraintes Méthodes complètes : Contenir l explosion combinatoire Branch & Bound & Propagate Branch : Structurer l espace de recherche en arbre Elaguer les branches de l arbre : Bound : Calcul de bornes sur la fonction objectif Ex. : Solution sur R en prog. linéaire Propagate : Propagation des contraintes pour réduire les domaines Utiliser des heuristiques d ordre Choix de la prochaine variable à instancier Choix de la valeur à affecter à cette variable Ex : pb des 4 reines D(x3) vide => élagage D(x4) vide => élagage
18/32 Problèmes d optimisation sous contraintes Méthodes incomplètes : Contourner l explosion combinatoire Exploration guidée par des heuristiques Intensification de la recherche autour des zones prometteuses" Diversification pour découvrir de nouvelles zones Deux familles d approches incomplètes Perturbatives : modification de combinaisons existantes Ex : Recherche locale (LS), Algorithmes génétiques (GA), Optimisation par essaims de particules (PSO),... Constructives : construction de nouvelles combinaisons Ex : Optimisation par colonies de fourmis (ACO), Algorithmes par estimation de distribution (EDA),... Exemple de recherche locale pour le problème des 8 reines :
19/32 Plan du cours Programmation par contraintes 1 Optimisation de tournées de livraison 2 Problèmes d optimisation sous contraintes Programmation par contraintes Code Choco fourni pour le projet
20/32 Programmation par contraintes La programmation par Contraintes (CP) "Constraint programming represents one of the closest approaches computer science has yet made to the Holy Grail of programming : the user states the problem, the computer solves it." Eugene C. Freuder En pratique : CP = Model + Search" Model = Description du problème Déclaration des variables et de leurs domaines Déclaration des contraintes Eventuellement : Déclaration d une fonction objectif Search = Exploration de l espace de recherche Utilisation d algorithmes intégrés Possibilité de guider la recherche par des heuristiques Possibilité de définir de nouvelles stratégies Pas toujours aussi efficace qu un programme «cousu main»... mais tellement plus vite développé!
21/32 Programmation par contraintes Langages et environnements de programmation par Contraintes ALICE [Jean-Louis Laurière, 1976] Premier système à base de contraintes CHIP, Prolog V, Gnu-Prolog Extensions de Prolog CHOCO (Java), Gecode (C++), OR-Tools (C++) Bibliothèques open source OPL Development Studio (IBM) Langage de modélisation + CP + MIP Comet (Dynadec) Langage de modélisation + CP + CBLS + MIP...
22/32 Programmation par contraintes Exemple de programme linéaire en OPL
Programmation par contraintes Exemple de sac-à-dos en OPL [Programme extrait du manuel utilisateur d OPL (www.ibm.com)] 23/32
24/32 Programmation par contraintes Exemple de programme CBLS : les reines en Comet
25/32 Programmation par contraintes Le voyageur de commerce en CP Variables : X = {next i, cost i i V } de sorte que : La variable next i donne le sommet visité après le sommet i La variable cost i donne le cout de l arc (i, next i ) Domaines : D(next i ) = {j V (i, j) A } D(cost i ) = [mincost i, maxcost i ] Contraintes : Le cout associé à i est égal au coût de l arc entre i et next i : i V, cost i = d i,nexti Next doit définir un circuit : circuit(next, 0) Fonction objectif : F = min i V cost i
26/32 Plan du cours Code Choco fourni pour le projet 1 Optimisation de tournées de livraison 2 Problèmes d optimisation sous contraintes Programmation par contraintes Code Choco fourni pour le projet
27/32 Diagramme de classes Code Choco fourni pour le projet
28/32 Code Choco fourni pour le projet Code Choco : Déclaration des variables et contraintes
29/32 Code Choco : Résolution Code Choco fourni pour le projet
30/32 Code Choco fourni pour le projet Code de test : Comparaison avec Branch & Bound Résultat de l exécution du test : testbestsol: 3377 ms for Choco and 69303 ms for Branch and Bound
31/32 Code Choco fourni pour le projet Code de test : Exécution sur une instance plus grosse
32/32 Résultat de l exécution du test Code Choco fourni pour le projet