400 likes | 1.02k Views
Recherche Opérationnelle Flots. Recherche Opérationnelle Théorie des graphes: Flots dans les réseaux. Recherche Opérationnelle Flots. Le problème des flots dans les réseaux concerne la circulation de matière sur les
E N D
Recherche Opérationnelle Flots Recherche Opérationnelle Théorie des graphes: Flots dans les réseaux
Recherche Opérationnelle Flots • Le problème des flots dans les réseaux concerne la circulation de matière sur les • arcs d’un graphe. Parmi les nombreuses applications qui relèvent de ce problème, on trouve: • les réseaux de transport de marchandises (urbains, ferroviaires ou aériens) de différents points distributeurs à différents points consommateurs ; • l’écoulement de liquides à l’intérieur de tuyaux ; • le courant dans les réseaux électriques ; • l’informatique à travers les réseaux de communication ; • le coût de réalisation d’un projet en ordonnancement ; • etc.
Recherche Opérationnelle Flots 1. Définitions et propriétés On considère des réseaux, i.e., des graphes connexes, sans boucle et asymétriques, possédant une entrée et une sortie. Soit S = {sij}, la matrice d’incidence sommets-arcs de G(X,U), u = 1, 2, . . . , m. 1.1 Flot dans un réseau: Définition Un flot sur un graphe G(X,U) est un vecteur ligne ϕ= [ϕ1, ϕ2, . . . , ϕm] Rmà m composantes et tel que : – – en tout sommet i X, la 1ère loi de Kirchhoff est vérifiée (loi de conservation aux noeuds) : ϕj est la quantité de flot ou fluxsur l’arc j. La 2ème condition peut également s’écrire (pour i = 1 à n) : S.ϕt=0
Recherche Opérationnelle Flots • 1.2 Flot : Propriétés • - Opérations : • Soient ϕ, ϕ1 et ϕ2 des flots sur G(X,U) et k R+ • k. ϕ est un flot. • ϕ1 + ϕ2 est un flot. • ϕ1 - ϕ2 est un flot si ϕ1 ≥ ϕ2. - Flot élémentaire: Soit un circuit élémentaire sur G (i.e., il passe au plus une fois par un sommet) et v le vecteur tel que: vi = 1 si ui vi = 0 sinon v est un flot cyclique élémentaire sur G. - Théorème (Flot élémentaire) Tout flot ϕ se décompose en une somme de flots cycliques élémentaires linéairement indépendants. ϕ = 1.V1 + … + k .Vki ≥ 0, Viest le vecteur flot du circuit élémentaire i
Recherche Opérationnelle Flots Exemple: Deux Possibilités de décomposition: La première La deuxième
Recherche Opérationnelle Flots • Réseau de transport: Capacité • Un réseau de transport est un réseau où à chaque arc u sont associés une capacité (i.e débit, tonnage,…)cu ≥ 0 ( limite supérieur pour un flux sur u: flux admissible) et éventuellement un coût du. Un flot ϕ est admissible sur un réseau de transport si et seulement si ses flux sont admissibles, i.e.
Recherche Opérationnelle Flots 1.3 Graphe d’écart : définition Soit ϕ un flot admissible sur G. Le graphe d’écart associé à ϕ est Ge(ϕ ) = (X,Ue(ϕ )) avec Ue tel que pour tout u U, on associe deux arcs dans Ge : u+ de même sens et de capacité résiduelle c+u= cu − ϕu u− de sens opposé et de capacité résiduelle c−u = ϕu Le graphe d’écart représente la modification que l’on peut faire subir au flot ϕ en lui conservant la propriété d’admissibilité. Par convention, les arcs de capacité nulle ne sont pas représentés sur le graphe. Exemple G(ϕ ) Ge(ϕ )
Recherche Opérationnelle Flots 2. Problème du flot maximum dans un réseau de transport - Définition Soient deux sommets fictifs source (s) et puits (t) permettant de modéliser des entrées et des sorties de matières à différents sommets du graphe. G0(X,U0) est déduit de G en rajoutant l’arc (t, s) appelé arc de retour du flot, noté u0 ( U0=U {u0}): où ϕ0 est appelé valeur du flot. Le problème du flot maximum de s à t dans G consiste à déterminer un flot ϕdans G0 vérifiant les contraintes de capacité et maximisant ϕ0.
Recherche Opérationnelle Flots • Circuit d’incrémentation: définition • Un circuit d’incrémentation sur Ge(ϕ ) un circuit traversant u+0 et pas u−0 et dont tous les arcs ont une capacité résultante non nulle. • - Théorème (Circuit d’incrémentation) • ϕ est maximum si et seulement si Ge(ϕ ) ne contient pas de circuit d’incrémentation. • Coupe: • Soit (X′,X′′) une partition de X. On appelle coupe l’ensemble des arcs (x′, x′′) (X′ x X′′) U tels que si on les enlève il n’y aura plus de chemin menant de s(origine) à t (puits). • La capacité de la coupe est X’ X’’ La coupe ci-contre est définie par la partition X’={ s, a, b, c } et X’’={ d, e, t }.Elle comporte les arcs (a,d)(b,d) et (c,e). Sa capacité est de 6, • Théorème (Ford-Fulkerson) • La valeur d’un flot maximum est égale à la plus petite capacité des coupes séparant s et t.
Recherche Opérationnelle Flots Algorithme (Ford-Fulkerson, 1956) 1 Constitution d’un flot initial admissible ϕ k ← 0 2 - Construire Ge (ϕ ) - Cherche un circuit d’incrémentation - Si n’existe pas, • ϕ est maximum • FIN 3 Soit la plus petite capacité de Pour u+ , augmenter ϕu de Pour u− , diminuer ϕu de k ← k + 1 Retour en 2
Recherche Opérationnelle Flots Exemple
Recherche Opérationnelle Flots 3 Problème du flot maximum à coût minimum • On associe sur le graphe d’écart Ge un coût à chaque arc : • du pour un arc u+ • -du pour un arc u− • Le coût total d’un flot sur G est alors • On recherche un flot maximum de coût minimum.
Recherche Opérationnelle Flots Algorithme de construction d’un flot maximum à coût minimum On présente ici une méthode par augmentation de flot, à partir d’un flot initial nul. Une autre approche consiste à appliquer une méthode par diminution du coût, à partir d’un flot initial complet (Ford-Fulkerson 1962). ϕ est un flot à coût minimum de G, un circuit d’incrémentation à coût minimum sur Ge(ϕ) et δ sa plus petite capacité. Comme dans l’algorithme de Ford-Fulkerson, on introduit un vecteur ϕ défini par ϕ’ = – ϕ + δ si u+ ; – ϕ − δ si u− ; – ϕ si u+, u− . ϕ’ est un flot à coût minimum sur G de valeur plus grande de δ, que celle de ϕ. L’algorithme est identique à celui de Ford-Fulkerson pour la recherche d’un flot maximum aux différences suivantes près :
Recherche Opérationnelle Flots Algorithme de Busacker-Gowen (1961) Etape 1. Construction d’un flot initial à coût minimum (flot nul). Etape 2. Chercher un circuit d’incrémentation à coût minimum z. Etape 3. La valeur du coût total est incrémentée par δ.z. Complexité : suivant les implémentations O(n4), O(n3) (Edmonds & Karp), O(n2,5)(Hopcroft & Karp).
Recherche Opérationnelle Flots Exemple : z=5 z=5
Recherche Opérationnelle Flots Exemple : z=6 z=6
Recherche Opérationnelle Flots Exemple : Flot maximum à coût minimum: flot max = 11 ; coût total = 5x5 + 2x5 + 3x6 + 1x6 = 59.
a [0,10] [0,20] [0,30] 1 [0,15] [0,45] [0,5] [0,10] b [0,25] S 2 T [0,20] [0,5] [0,25] c [0,10] 3 [0,20] [0,30] [0,10] d Exemple : FLOTFlot dans un réseau de transport • On veut acheminer un produit à partir de 3 entrepôts (1,2,3) vers 4 clients (a,b,c,d) • Quantités en stock : 45, 25, 25 • Demande des clients : 30,10, 20, 30 • Limitations en matière de transport d’un entrepôt à un client
a [10,10] 1 [15,20] [25,30] [5,15] [35,45] [10,10] b [5,5] [25,25] S 2 T [15,20] [5,5] [20,25] c [10,10] 3 [20,20] [30,30] [10,10] d Exemple de flot Valeur du flot = 80 Ce flot est un flot complet, c-à-d, tout chemin de S à T comporte au moins un arc saturé
Détermination d’un flot maximum Améliorer itérativement ce flot • Graphe d’écart : Soit un flot admissible sur G. Le graphe d’écart Ge()=(X, Üe()) est tel que • Pour tout arc jU on associe deux arcs dans Üe() • j+ de même sens que j et de capacité résiduelle c+(j)=c(j)- j • j- de sens opposé que j et de capacité c-(j)=j
a [0,10], 10 [0,30], 25 [0,20], 15 1 [0,45], 35 [0,15], 5 [0,10], 10 [0,5], 5 b [0,25], 25 S 2 T [0,5], 5 c [0,20], 15 [0,10], 10 [0,25], 20 3 [0,20], 20 [0,30], 30 [0,10], 10 d
a [10,10] 1 [15,20] [25,30] [5,15] [35,45] [10,10] b [5,5] [25,25] S 2 T 25 10 a [15,20] [5,5] [20,25] c 15 5 5 10 [10,10] 1 10 3 [20,20] [30,30] 35 5 b 10 [10,10] 25 5 5 S 2 T d 5 15 5 c 10 20 20 3 30 10 d Un flot complet Graphe d’écart
Détermination d’un flot maximum Améliorer itérativement ce flot • Théorème : Un flot compatible est maximal ssi il n’existe pas de chemin de E à S dans Ge(). • Principe de l’amélioration • Chercher un chemin de E à S dans Ge() • Soit la plus petite capacité de • Pour j+ de , augmenter j de • Pour j- de , diminuer j de
30 20 5 5 0 0 40 10 0 5 Détermination d’un flot maximum 25 10 a 15 5 5 10 1 10 35 5 b 10 25 5 5 S 2 T 5 15 5 c 10 20 20 3 30 10 d Valeur du flot = 85 Capacité minimale = 5
5 5 30 5 10 a 20 1 40 10 b 10 25 0 S 2 T 5 15 c 10 20 20 3 30 10 d a [10,10] [20,20] [30,30] 1 [40,45] [10,15] Un flot complet [10,10] [0,5] b [25,25] S 2 T [5,5] c [10,10] [15,20] [20,25] 3 [20,20] [10,10] [30,30] d Graphe d’écart 5 PLUS DE CHEMIN entre S et T
Recherche Opérationnelle Flots Exercice 1 Soit le réseau de la figure ci-dessous, pour chaque chiffre entouré correspond la capacité max. de l’arc, l »autre indique le flux max trouvé par un étudiant pour aller de s à p: 1- Le flux trouvé par cet étudiant est-il réalisable ? 2- Donner le flux maximal entre s et p selon l’algorithme vu en cours. Vous explorez les sommets selon l’ordre alphabétique à chaque fois que cela sera nécessaire.
Recherche Opérationnelle Flots Exercice 2