Réseaux de transports Marie-Pierre Béal Université Paris-Est Marne-la-Vallée. L3 Informatique
Bibliographie V. Chávtal. Linear Programming, W.H. Freeman, 1983.
Exemple de problèmes de transport Example On considère 2 usines Michelin qui fabriquent chaque jour l une 550 pneus et l autre 350 pneus. Ces usines approvisionnent 3 magasins qui doivent recevoir chaque jour respectivement 400, 300, et 200 pneus. Le coût de transport de chaque pneu par différents types de transports ou routes est donné. Quelles voies doit-on emprunter pour acheminer toutes les marchandises à moindre coût? 400 300 200 5 6 3 3 5 4 550 350
Programmation linéaire entière Nous allons étudier un problème d optimisation particulier, dit problème de réseaux de transports. Ces problèmes sont plus compliqués que les problèmes de flots. Ils admettent une solution calculable en temps polynomial. Un réseau est modélisé sous la forme d un graphe orienté avec pour chaque flèche ij, un coût c ij, pour chaque sommet i, un offre (positive) ou demande (négative) b i. pour chaque flèche ij, la valeur, positive ou nulle, de flot passant dans l arc x ij. Elle représente la quantité (de matière) transportée à un instant donné dans l arc ij. Les valeurs x ij forment une solution si x ij 0, pour chaque sommet i, on a j x ji k x ik = b i. ( ce qui rentre moins ce qui sort )
Exemple 0 8 1 29 5 18 10 5 4 53 8 37 28 44 6 59 3 60 2 0 98 38 23 9 15 6 14 7
Exemple Un sommet i tel que b i < 0 est une source. Un sommet i tel que b i > 0 est un puits. On a i b i = 0. Formulation matricielle du problème Minimiser c ij x ij sous la contrainte Ax = b, x 0, avec A de taille n a, où n est le nombre de sommets et a le nombre d arcs et A[k,ij] = 1 si ij est un arc, k = i, A[k,ij] = 1 si ij est un arc, k = j, A[k,ij] = 0 sinon
Exemple 0 29 8 18 5 10 53 8 37 28 44 59 6 60 0 98 38 23 9 14 15
Algorithme du simplexe sur un réseau 1) On part d un arbre T recouvrant qui est une solution (lorsqu il en existe une). On dit que l on a une solution arbre. 0 8 8 1 10 9 9 6 6 0 15 9 15
Algorithme du simplexe sur un réseau 2) On définit un vecteur des prix y = (y 1,...,y n ) à une constante près par y i +c ij = y j pour tout arc ij de T. 33 0 18 29 51 10 62 8 4483 6 28 23 60 0 23 11 0 9 15
Algorithme du simplexe sur un réseau 3) On recherche un arc entrant e = uv, e / T tel que y u +c uv < y v. 3) T +e crée un cycle. On cherche un arc sortant f sur le cycle. C est un arc en sens opposé à e sur le cycle et de flot maximal. 4) T T +e f. 5) Mise à jour de T. 6) Mise à jour de x, mise à jour des prix y.
Algorithme du simplexe sur un réseau 33 0 18 29 51 10 62 8 4483 6 28 23 60 0 59 23 11 0 9 15
Algorithme du simplexe sur un réseau 33 0 18 29 51 10 62 8 4483 6 28 23 60 0 e 23 11 0 9 15
Algorithme du simplexe sur un réseau 33 0 1+t 8-t 51 10 62 8 9 83 6 6 9-t 23 0 +t 15-t 11 0 9 15
Algorithme du simplexe sur un réseau L arc (15) sort. 33 0 1+t 8-t 51 10 62 8 9 83 6 6 9-t 23 0 +t 15-t 11 0 9 15
Algorithme du simplexe sur un réseau L arc (15) sort. 33 0 9 51 10 62 8 9 83 6 6 23 1 0 8 7 11 0 9 15
Algorithme du simplexe sur un réseau Mise à jour des prix. 33 0 18 51 10 59 8 4483 6 28 23 60 0 59 23 11 0 9 15
Nouvelle itération 31 0 10 1 49 10 59 8 9 83 6 6 23 0 8 7 13 0 9 15
Théorie Formulation matricielle du problème Minimiser cx sous la contrainte Ax = b, x 0 A matrice d incidence du graphe b vecteur colonne des demandes c vecteur ligne des coûts x vecteur colonne solution y vecteur ligne des prix
Étape 1 Départ : arbre recouvrant T, solution x ij T,y i +c ij = y j Soit c = c ya, c est-à-dire c ij = c ij +y i y j. On a c ij = 0 pour ij T; x ij = 0 pour ij / T; donc cx = 0. Soit x n importe quelle autre solution. On a c x = c x +cx.
Étape 2 Soit e = uv / T tel que y u +c uv < y v. Proposition Si u tel arc n existe pas, x est une solution optimale Preuve Si ij c ij +y i y j 0, alors c 0, donc c x 0. D où c x cx pour toute solution x.
Étape 2 Sinon, on définit x ij = x ij si ij / cycle; x ij = x ij +t si ij est dans le cycle avec le même sens que e. x ij = x ij t si ij est dans le cycle avec le sens inverse de celui de e. L arc sortant f est un arc du cycle tel que x f = min{x ij ij est à l envers sur le cycle}. (S il n y avait pas d arc à l envers, on aurait des solutions non bornées). A x = Ax implique que x est une solution. Comme e est le seul arc ij tel que c ij 0 et x ij 0, on a c x = c e x e = c e t c x = cx + c e t. Comme c e < 0, on maximise t avec x 0. c e t est l amélioration du coût global à chaque itération.
Problèmes Solutions dégénérées (x f = 0). Cycles Étape 0 : trouver une solution initiale arbre.
Solutions dégénérées et cycles Une solution dégénérée correspond à x f = 0. Dans ce cas, le coût ne diminue pas. L algorithme peut cycler. La stratégie suivante permet d éviter les cycles (et garantie donc que l algorithme s arrête). On fixe un sommet appelé root. Si C est le cycle créé par l arc entrant e, on appelle join le sommet du cycle le plus proche de root. On choisit comme arc f sortant le premier arc du cycle en sens inverse de e rencontré en partant de join en parcourant le cycle dans le sens de e.
Étape 0 : trouver une solution initiale arbre Cas trivial Il existe un sommet w tel que Pour toute source s, il existe un arc sw Pour tout puit p, il existe un arc wp
Étape 0 : trouver une solution initiale arbre On pose x sw = b s pour une source s et x wp = b p pour un puit p 0 8 0 10 10 8 6 6 w 9 15 9 15 Ici b w = 0.
Étape 0 : trouver une solution initiale arbre Sinon un tel sommet w n existe pas, on définit un problème auxiliaire. On choisit w arbitraire et on ajoute des flèches (de chaque source vers w et de w vers chaque puit) manquantes. Ces flèches sont appelées arcs artificiels. On définit une nouvelle matrice de coûts avec p ij = 0 pour un arc réel, p ij = 1 pour un arc artificiel. On résout le problème auxiliaire avec l algorithme du simplexe. On note x la solution optimale. Trois cas sont possibles. 1 On trouve un arbre optimal T ne contenant pas d arc artificiel. On a alors un arbre solution pour le problème initial. 2 On trouve un arbre optimal avec un arc artificiel uv tel que x uv > 0. Le problème initial n a pas de solution. 3 On trouve un arbre optimal qui a des arcs artificiels, mais chacun d eux ij est tel que x ij = 0.
Cas 3 : on découpe en sous-problèmes Soit T l arbre optimal et uv un arc artificiel. R = {k y k y u } S = {k y k > y u } 1 u R, v S 2 k S b k = 0 3 Il n existe pas d arc ij réel avec i R, j S. Preuve 1 y u +p uv = y v et p uv = 1 car uv est artificiel. 3 y i +p ij y j et p ij = 0 pour ij réel. Donc i R j R. 2 b k = (ce qui rentre dans S) (ce qui sort de S) k S = i/ S,j S x ij i S,j/ S x ij = i S,j/ S x ij par [3] = 0 car ij tel que i S,j R n est pas dans T
Exemple de problèmes de transport Example Calculer une solution arbre initiale et une solution optimale sur l exemple suivant. 400 300 200 5 6 3 3 5 4 550 350
Théorème d intégrité Théorème On considère le problème Minimiser cx sous la contrainte Ax = b où A est la matrice d incidence d un graphe (comme ci-dessus), x 0 et tel que b a tous ses coefficients entiers. alors, s il existe une solution, il existe une solution entière. le problème a parmi ses solutions optimales (s il en existe) une solution optimale entière. Preuve : algorithme du simplexe sur les réseaux.
Application du théorème d intégrité Théorème de König On considère un ensemble E de n garçons et un ensemble F de n fille. Chaque garçon connaît exactement k filles et chaque filles connaît exactement k garçons avec k 1. On considère qu une fille ou garçon peut se marier avec quelqu un qu elle ou qu il connaît. Montrer que l on peut arranger n mariages.