Problème de flot à coût minimum

66
Problème de flot à coût minimum Énoncé du problème Exemples d’application aptation de l’algorithme du simplexe

description

Problème de flot à coût minimum. Énoncé du problème. Exemples d’application. Adaptation de l’algorithme du simplexe. Énoncé du problème de flot à coût minimal. Soit un réseau R = ( N , A ) où N représente les sommets du réseau et A l’ensemble des arcs. On désigne aussi par - PowerPoint PPT Presentation

Transcript of Problème de flot à coût minimum

Page 1: Problème de flot à coût minimum

Problème de flotà

coût minimumÉnoncé du problème

Exemples d’application

Adaptation de l’algorithme du simplexe

Page 2: Problème de flot à coût minimum

2

Énoncé du problème de flot à coût minimal

Soit un réseau R = (N, A) où N représente les sommets du réseau etA l’ensemble des arcs.

On désigne aussi parK(x, y) : capacité maximale de l’arc (x, y), (x, y) A,

f(x, y) : quantité de flot passant par l’arc (x, y), (x, y) A,

S : {s N | s est une source avec une disponibilité de vs unités},

P : {p N | p est un puits avec une demande de vp unités},

c(x, y) : coût unitaire du flot dans l’arc (x, y), (x, y) A.

Le problème consiste à déterminer la valeur du flot n’excédant pas lacapacité dans chaque arc pour satisfaire la demande à P à partir de ladisponibilité à S tout en minimisant le coût total.

Page 3: Problème de flot à coût minimum

3

Le problème s’énonce alors comme suit :

Min c(x, y) f(x, y) (x, y) A

f(x, y)

{y N | (x, y) A}

- f(y, x)

{y N | (y, x) A}

=

vx si x S

0 si x SP-vx si x P

0 f(x, y) K(x, y), (x, y) A.

Note :

Pour l'instant, nous supposerons que la somme des disponibilitéségale la somme des demandes. Cette hypothèse sera relâchée parla suite.

Page 4: Problème de flot à coût minimum

4

Exemple d’application

Tiré de B. T. Smith, "Introduction à la théorie des graphes et des réseaux". Tome II,

Département de Génie industriel, École Polytechnique de Montréal, Sept. 1983.

Réseau de transbordement d’un bien

S = {2, 3} : des usines de production avec une capacité de production de 6 et 8 unités resp. pendant une période fixe de temps.

P = {5, 6} : des entrepôts locaux ayant des demandes de 9 et 5 resp.

Page 5: Problème de flot à coût minimum

5

Les sommets 1 et 4 représentent des points de transbordement(sommets intermédiaires), par exemple des entrepôts régionaux.

Le problème consiste à faire passer 8 + 6 = 14 unités de flot dessources jusqu'aux puits tel que(1) toutes les demandes soient satisfaites;(2) la conservation de flot soit satisfaite à chaque sommet

intermédiaire;(3) le coût total de transport soit minimum.

Il n’y a aucune contrainte sur la quantité de flot qui peut traverser unarc dans cet exemple. De façon générale, il en est autrement.

Les unités ne restent pas à ces endroits mais sont acheminéesdirectement vers d'autres destinations (sources, puits ou sommetsintermédiaires).

À côté de chaque voie de transport (arc), on indique le coût detransporter une unité à travers l'arc.

Page 6: Problème de flot à coût minimum

6

Contrairement au problème de flot maximal, nous ne voulons pasmaximiser un flot (car cette valeur est fixée d'office à la somme desdisponibilités) mais nous cherchons le vecteur de flot le moins cherqui satisfasse les demandes.

Voici un flot réalisable dont le coût total est: 8x7 + 6x8 + 1x1 = 105(les arcs en gras portent un flot positif, les autres arcs un flot nul) :

Page 7: Problème de flot à coût minimum

7

Voyons maintenant un autre exemple de flot réalisable moins cherque le précédent.

Le coût total est: 8x3 +8x3 + 6x5 + 5x1 = 83.

Page 8: Problème de flot à coût minimum

8

Exemple d’applicationTiré de B. T. Smith, "Introduction à la théorie des graphes et des réseaux". Tome II, Département de Génie industriel,

École Polytechnique de Montréal, Sept. 1983.

10 étudiants inscrits dans un cours,

12 projets de fin d’études disponibles,

1 projet par étudiant,

les projets de 1 à 4 sont assignés à au plus 1 étudiant,les projets de 5 à 8 sont assignés à au plus 2 étudiants,les projets de 9 à 12 sont assignés à au plus 3 étudiants,

les projets sont éliminés s’il n’y a pas d’étudiants qui leur sont affectés,

6 professeurs au total sont disponibles pour diriger les projets.

Page 9: Problème de flot à coût minimum

9

un sous-ensemble de professeurs peuvent diriger chaque projet :

Chaque étudiant travaillant sur un projet doit être dirigé par unprofesseur dans le sous-ensemble de ceux affectés au projet.

Page 10: Problème de flot à coût minimum

10

Chaque professeur peut diriger un nombre maximum d’étudiants :

Chaque étudiant choisit un sous-ensemble des projets sur lesquels ilaimerait travailler et il classe les projets dans ce sous-ensemble enordre décroissant de préférence comme dans le tableau suivant :

Page 11: Problème de flot à coût minimum

11

Objectif collectif :

Affecter les étudiantsaux projets et

aux professeursafin de minimiser

la sommedes classements

des projetssur lesquelstravaillerontles étudiants.

Il s’agit d’un problèmede flot à coût minimum:

Page 12: Problème de flot à coût minimum

capacité

coût

Note :Certains arcs seulementSont indiqués pouréviter la confusion.

Numérode

classement

(10) (12) (6)

Limite le # d’étudiantsaffectés au projet i.

Si un professeur jpeut diriger le projet i

Un arc entre chaqueétudiant et chaque projetqu’il préfère.

Limite le # d’étudiantsaffectés au professeur j.

Demande de 10étudiants au puits

Page 13: Problème de flot à coût minimum

13

Propriétés de la matrice des contraintes de conservation du flot

f(x, y)

{y N | (x, y) A}

- f(y, x)

{y N | (y, x) A}

=

vx si x S

0 si x SP-vx si x P

Portons notre attention sur les contraintes suivantes :

ou sur une forme succincte :

A f = b où A est la matrice d’incidence du réseau orienté, f est le vecteur de flot, b est le vecteur colonne des disponibilités et des demandes.

Théorème :

La matrice d’incidence A d’un graphe orienté simple et connexecomposé de m sommets et n arcs est de rang m – 1.

Page 14: Problème de flot à coût minimum

14

Théorème :

Soit la matrice d’incidence A d’un graphe orienté simple et connexecomposé de m sommets et n arcs,

une sous-matrice de A carré d’ordre m – 1 est non singulière(forme une base)

les arcs associés aux colonnes de cette sous-matrice sont ceux d’unarbre partiel du graphe orienté.

N'importe quel flot réalisable dans un réseau peut être transformé enun flot réalisable tel que les arcs portant un flot positif fasse partied'un arbre partiel du graphe orienté.

Théorème :

Page 15: Problème de flot à coût minimum

15

Preuve du théorème précédent :

Page 16: Problème de flot à coût minimum

16

Exemple de transformation d’un flot réalisable en un autre tel que lesarcs portant un flot positif fasse partie d’un arbre partiel du graphe :

Réseau de transbordement d’un bien

Par la suite, seulement les arcs portant un flot positif sont illustrés,avec la valeur du flot indiqué à côté de chaque arc; les autres arcs duréseau portent un flot nul.

Page 17: Problème de flot à coût minimum

17

Considérons le flot réalisable suivant :

But : Rechercher un flot réalisable avec au plus m – 1 = 5 arcsportant un flot positif où ceux-ci ne forment pas de circuit.

Or, pour ce flot réalisable, il y a 9 arcs portant un flot positif.

Page 18: Problème de flot à coût minimum

18

Choisissons comme premier circuit 1, 2, 4, 3, 1 avec l'orientation dansle sens de l'arc (1,2).Le seul arc inverse du circuit est (3,4) avec le flot f34 = 3.

On ajoute 3 unités de flot aux arcs (1, 2), (2,4) et (3,1) et on soustrait 3unités de flot de l'arc(3,4), on a alors:

Page 19: Problème de flot à coût minimum

19Le circuit 2, 5, 6, 2 permet de transformer le flot comme suit :

Page 20: Problème de flot à coût minimum

20

Enfin, le circuit 2, 4, 6, 2 donne lieu à un flot positif dans un arbrepartiel comme suit:

Page 21: Problème de flot à coût minimum

21

Page 22: Problème de flot à coût minimum

22

On aurait pu arriver au flot indiqué par les arcs en gras de la figureci-dessous, où 4 arcs portent un flot positif et un arc (2,4) porte un flotnul, mais fait partie de l'arbre partiel de G.

Ce flot réalisable est dégénéré.

Page 23: Problème de flot à coût minimum

23

BREF

Tout arbre partiel du graphe G correspondà une soln de base du programme linéaire

et inversement,toute soln de base du programme linéaire peut se ramener

à une soln réalisable n'utilisant que les arcs d'un arbre partiel du graphe.

Pour résoudre le problème de flot à coût minimum,il s’agit donc de ne s’occuper que des arbres partiels du graphe

(les solutions de base).

S’il existe une solution optimale au problème de flot à coût minimum,il en existe une qui correspond au flot dans un arbre partiel de G.

Page 24: Problème de flot à coût minimum

24

Adaptation de la méthode du simplexe

Il s’agit d’exploiter le fait que A est la matrice d’incidence du graphe.

Note : Considérons d’abord le cas où le flot est sans borne supérieure.

Illustrons à travers un exemple. coût flot réalisable

source

destination

Page 25: Problème de flot à coût minimum

25

La valeur du flot sur chacun des arcs correspond à une solution de baseréalisable dont la base associée correspond à un arbre partiel T :

Cette solution de base est dégénérée puisque le flot à l’arc (s,1) est nul.

Page 26: Problème de flot à coût minimum

26

Cette adaptation du simplexe repose sur l'utilisation des multiplicateursdu simplexe.

Dénotons par πi le multiplicateur associé à la iième ligne de la matriced'incidence A, i.e. associé au iième sommet du réseau orienté.

Se référant à la définition d’un vecteur de coût relatif, on peut écrire:

c(x,y) = c(x,y) – x + y (x, y) A.

Pour évaluer ces multiplicateurs, il suffit de trouver une solution ausystème :

c(x,y) = c(x,y) – x + y = 0 (x, y) T.

Puisqu’un arbre comporte exactement un nombre d’arcs égal aunombre de sommets –1, ce système comporte un nombre d’inconnussupérieur de 1 au nombre d’équations.

Il suffit de fixer la valeur d’un des multiplicateurs et d’évaluerfacilement les autres à l’aide du système.

Page 27: Problème de flot à coût minimum

27

Si on pose t = 0, alors 3 = c(3,t) + t = 2 + 0 = 2,2 = c(2,3) + 3 = 3 + 2 = 5,s = c(s,2) + 2 = 5 + 1 = 6,1 = s - c(s,1) = 6 - 4 = 2.

Évaluons maintenant le coût relatif des variables hors-base :

c(2,1) = c(2,1) - 2 + 1 = 2 – 5 + 2 = -1

c(1,t) = c(1,t) - 1 + t = 1 – 2 + 0 = -1.

Page 28: Problème de flot à coût minimum

28

Puisque c(2,1) = c(1,t) = -1, les 2 variables sont admissibles commevariable d’entrée. Choisissons l’arc (2,1) comme variable d’entrée.

Critère de sortie : déterminer le cycle fondamental p/r à l'arbre partielcorrespondant à la variable d'entrée puisque seul le flot dans les arcsde ce cycle est influencé par une variation du flot dans l'arc associé àla variable d'entrée.

Si f(2,1) augmente, f(s,1) doit diminuer et f(s,2) augmenter.

Or, f(s,1) = 0 (solution dégénérée) f(2,1) reste égale à 0.

Page 29: Problème de flot à coût minimum

29

Cette solution réalisable demeure inchangée :

L’arbre correspondant à cette solution de base réalisable est :

Page 30: Problème de flot à coût minimum

30

Si on pose t = 0, alors 3 = c(3,t) + t = 2 + 0 = 2,2 = c(2,3) + 3 = 3 + 2 = 5,s = c(s,2) + 2 = 1 + 5 = 6,1 = 2 - c(2,1) = 5 - 2 = 3.

Évaluons maintenant le coût relatif des variables hors-base :

c(s,1) = c(s,1) - s + 1 = 4 – 6 + 3 = 1

c(1,t) = c(1,t) - 1 + t = 1 – 3 + 0 = -2.

L’arc (1,t) devient variable d’entrée avec comme cycle fondamental :

+

-

-

+

Page 31: Problème de flot à coût minimum

31

On peut donc augmenter le flot à l’arc (1,t) de 4 et mettre à jour lesautres arcs du cycle en conséquence.

On considère l’arc (3,t) comme étant la variable de sortie pourretrouver la base suivante :

Si on pose t = 0, alors1 = c(1,t) + t = 1, 2 = c(2,1) + 1 = 2 + 1 = 3,s = c(s,2) + 2 = 1 + 3 = 4, 3 = 2 - c(2,3) = 3 – 3 = 0.

Page 32: Problème de flot à coût minimum

32

Évaluons maintenant le coût relatif des variables hors-base :

c(s,1) = c(s,1) - s + 1 = 4 – 4 + 1 = 1

c(3,t) = c(3,t) - 3 + t = 2 - 0 = 2.

Donc, la solution est optimale.

Remarques :

La méthode du simplexe est grandement simplifiée grâce à lastructure particulière du problème.

Il y a beaucoup de dégénérescences dans les problèmes de flotsdans les réseaux. À cause de cela, il est parfois nécessaire de changerde base sans changer les valeurs des variables d’une itération à l’autre.

Cunningham (1976) :Des résultats existent pour guider le choix des solutionsde base réalisables dans le but d’éviter de telles itérationsdégénérées.

Page 33: Problème de flot à coût minimum

33

Énoncé de l’algorithme du simplexe adapté(absence de bornes supérieures sur les arcs)

0. Générer un flot réalisable de base où T est l’arbre partiel du grapheG associé à cette base.

1. Calculer les valeurs des variables duales i, i=1, 2, …, n en posantn = 0 et en résolvant c(i,j) - i + j = 0 (i,j) T.

2. Test d’optimalité

Si c(i,j) - i + j 0 (i,j) T, alors terminer.

La soln

couranteest

optimale.3. Choix de l’arc d’entrée

(i*, j*) = arg Min {c(i,j) - i + j} (i,j) T

Ajouter cet arc à l’arbre partiel T pour former un circuitfondamental C dans T {(i*, j*)}.

Page 34: Problème de flot à coût minimum

34

4. Choix de l’arc de sortie

Choisir l’arc de sortie (i', j') inverse par rapport à (i*, j*) dans C :

(i', j') = arg Min f(i,j)(i,j) C(i, j) est l’inverse de (i*, j*)

5. Pivot

Effectuer un pivot pour passer de l’arbre T à l’arbreT {(i*, j*)} – {(i', j')} avec comme flot :

f(i, j) si (i, j) C

f(i, j) + f (i', j') si (i, j) C et direct p/r à (i*, j*)

f(i, j) - f (i', j') si (i, j) C et inverse p/r à (i*, j*).

Mettre T T {(i*, j*)} – {(i', j')} et passer à l’étape 1.

Page 35: Problème de flot à coût minimum

35

Méthode "GRAND M"Calcul d’un flot réalisable de base initial

1. Ajouter un sommet fictif n + 1 au réseau, des arcs (i, n + 1) avec un flot f(i, n+1) = vi i S, des arcs (n + 1, i) avec un flot f(n+1, i) = vi i P, des arcs (n + 1, i) avec un flot f(n+1, i) = 0 i S P.

Tous ces nouveaux arcs sont appelés artificiels etle flot dans ces arcs y compris un flot de zéro dans tous les arcsoriginaux du réseau constituent un flot réalisable dans un arbrepartiel du graphe G augmenté.

2. Affecter le coût M >> 0 (une valeur beaucoup plus grande quecelle des c(i,j) du problème original) aux arcs artificiels du réseauaugmenté.

Page 36: Problème de flot à coût minimum

36

3. Résoudre le problème de flot à coût minimum sur le réseauaugmenté par l'algorithme du simplexe en éliminant les arcsartificiels au fur et à mesure qu'ils sortent des arbres partiels.

4.

si l'arbre partiel obtenu contient des arcs artificiels portantun flot positif

alors le problème original n'a pas de flot réalisable.

Lorsque l'algorithme du simplexe termine, deux cas sont possibles:

si l'arbre partiel obtenu ne contient pas d'arcs artificiels oucontient des arcs artificiels à flot nul,

alors c’est un flot optimal du problème original.

Page 37: Problème de flot à coût minimum

37

Exemple : v = 4, s est la source et t la destination.À chaque arc (i, j) est associé le coût cij.

Supposons qu’aucun flot réalisable initial n’est disponible.

Appliquons la méthode M.

Page 38: Problème de flot à coût minimum

38

Considérons donc le réseau augmenté suivant où à chaque arc (i, j) estassocié le couple cij, fij:

Page 39: Problème de flot à coût minimum

39

La valeur du flot sur chacun des arcs correspond à une solution de baseréalisable dont la base associée correspond à un arbre partiel T :

Cette soln de base est dégénérée puisque fA2 = fA1 = fA3 = 0.

Page 40: Problème de flot à coût minimum

40

Calcul des multiplicateurs du simplexe :

Page 41: Problème de flot à coût minimum

41

Calcul du coût relatif des variables hors-base

Nous choisissons donc la variable fs2 comme variable d’entrée aveccomme cycle fondamental :

Coût négatif

Page 42: Problème de flot à coût minimum

42

+

--

On peut donc augmenter le flot à l’arc (s,2) de 0 car la soln estdégénérée (fA2 = 0). fA2 est la variable de sortie.

Page 43: Problème de flot à coût minimum

43

L’arbre correspondant à cette solution de base réalisable est :

Page 44: Problème de flot à coût minimum

44

Coûtnégatif

f21 devient variable d’entrée avec comme cycle fondamental :

Page 45: Problème de flot à coût minimum

45

+

--

+

On peut donc augmenter le flot à l’arc (2,1) de 0 car la soln estencore dégénérée (fA1 = 0). fA1 est la variable de sortie.

Page 46: Problème de flot à coût minimum

46

Page 47: Problème de flot à coût minimum

47

Coûtnégatif

f1t est choisie arbitrairement comme variable d’entrée avec commecycle fondamental :

Page 48: Problème de flot à coût minimum

48

+

-

-

+ +

On peut donc augmenter le flot à l’arc (1, t) de 4; ceci est accompagnéd’une augmentation à fs2 et f21 et d’une diminution à fsA et fAt.

Page 49: Problème de flot à coût minimum

49

fAt est la variable de sortie.

Page 50: Problème de flot à coût minimum

50

Coûtnégatif

f23

Page 51: Problème de flot à coût minimum

51

Le cycle fondamental obtenu en ajoutant la variable d’entrée f23 est :

+

-

-

+

Augmentation de f23 de 0.

Page 52: Problème de flot à coût minimum

52

On choisit fA3 comme étant la variable de sortie.

Page 53: Problème de flot à coût minimum

53

Les multiplicateurs sont obtenus en posant :

Page 54: Problème de flot à coût minimum

54

Extensions possibles :

1. vi > vi

i S i P

Rajouter un puits fictif n + 1 avec une demandevn+1 = vi - vi

i S i P

et des arcs (i, n+ 1) i S avec comme borne supérieure etun coût nul.

Lorsque l’algorithme du simplexe termine, enlever le sommetfictif n + 1 ainsi que le flot dans les arcs (i, n + 1), i S.

Page 55: Problème de flot à coût minimum

55

2. vi < vi

i S i P

Rajouter une source fictive n + 1 avec une disponibilitévn+1 = vi - vi

i P i S

et des arcs (n+ 1, i) i P avec comme borne supérieure etun coût nul.

Lorsque l’algorithme du simplexe termine, enlever le sommetfictif n + 1 ainsi que le flot dans les arcs (n + 1, i), i P.

Page 56: Problème de flot à coût minimum

56

3. Présence d’une borne supérieure finie sur le flot dans un arc

Rappel :

à chaque itération du simplexe, le flot positif est restreint aux arcsd’un arbre partiel T (solution de base);

fij = 0 (i, j) T

un arc (i,j) T est candidat pour entrer dans la base si cij -i +j < 0

un arc (k, l) C est candidat pour sortir de la base si :

(i) (k, l) est un arc inverse dans C.

(ii) fkl devient nul le premier lorsque le flot fij augmente.

Lorsqu’il y a des bornes supérieures sur le flot de certains arcs,la méthode du simplexe conserve toujours le vecteur de flot dans unarbre T, mais (i, j) T, ou bien fij = 0 ou bien fij = Kij.

Page 57: Problème de flot à coût minimum

57

Théorème :

Soit une solution de base réalisable f* = (f*ij) et l’arbre partiel Tqui lui est associé tel que (i, j) T, on a :

(i) f*ij = Kij si cij -i +j < 0

(ii) f*ij = 0 si cij -i +j > 0

alors f* est un flot optimal.

Nouveau critère d’entrée :

Choisir l’arc (i, j) T qui satisfait :

Min {| cij -i +j |}(i, j) T

Page 58: Problème de flot à coût minimum

58

Nouveau critère de sortie :

(1) Si (i, j) est l’arc d’entrée et fij = Kij, alors le changement au flotde l’arc (i, j) est une diminution de t unités où

t = min {fij | (i, j) est direct, Kij – fij | (i, j) est inverse}

L’arc de sortie est celui de C dont le flot atteint le premier soit 0soit sa borne supérieure.

Page 59: Problème de flot à coût minimum

59

(2) Si (i, j) est l’arc d’entrée et fij = 0, alors le changement au flotde l’arc (i, j) est une augmentation de t unités où

t = min {fij | (i, j) est inverse, Kij – fij | (i, j) est direct}.

t unités sont ajoutées à tout arc direct de C etsoustraites à tout arc inverse de C.

L’arc de sortie est celui de C dont le flot atteint le premier soit 0soit sa borne supérieure.

Note : Pour trouver l’arbre initial de flot réalisable, utiliser laméthode « grand M » en remarquant que les arcs artificielsont une borne supérieure infinie.

Dans l’exemple suivant, on associe à chaque arc le triplet Kij, cij

fij

Page 60: Problème de flot à coût minimum

60

Exemple : v = 4

Le vecteur de flot correspond à une solution de base réalisabledont la base associée correspond à un arbre partiel T :

Page 61: Problème de flot à coût minimum

61

Cette solution de base est dégénérée puisque fs1 = f1t = 0.Les multiplicateurs du simplexe sont évalués :

Page 62: Problème de flot à coût minimum

62

Les coûts relatifs des variables hors-base sont :

Puisque f21 = 0 et f3t = 4 = K3t, les deux variables sont admissiblescomme variable d'entrée.

Nous choisissons de diminuer la valeur de la variable f3t avec commecycle fondamental :

-

++

-

-

Page 63: Problème de flot à coût minimum

63

On peut donc diminuer la valeur de f3t de 2 et alors f23 = fs2 = f3t = 2et fsl = flt = 2. C'est la plus grande modification possible puisque flt

atteint sa borne supérieure Klt = 2.

Cette solution réalisable est :

Page 64: Problème de flot à coût minimum

64

L’arbre correspondant à cette solution de base réalisable est :

non admissible commevariable d’entrée : f1t = 2 = K1t.

admissible comme variabled’entrée : f21 = 0.

Le cycle fondamental correspondant à la variable f21 est :

Page 65: Problème de flot à coût minimum

65

++

-

On peut augmenter la valeur de f21 de 2, et alors f21 = 2, fs2 = 4, fsl = 0.L'augmentation de f21 est limitée à la fois par la variable fsl qui devientégale à 0 et par la variable d'entrée qui atteint sa borne supérieure.

On pourrait donc conserver la même base et entreprendre une nouvelleitération. On préfère considérer fsl comme étant la variable de sortiepour retrouver la base dont l'arbre partiel est illustré ci-dessous :

Page 66: Problème de flot à coût minimum

66

Les coûts relatifs des variables hors-base sont donc

csl = csl - πs + πl = 4 - 6 + 3 = 1clt = clt - πl + πt = 1 - 3 = -2.

Donc la solution de base est optimale puisque fsl = 0 et flt = 2 = Klt.