Algorithme du simplexe: Énoncé et guidegaubert/RO/map557-pc7-corr-2017.pdf · 7.5 Algorithme du...

9
Algorithme du simplexe: Énoncé et guide Cours MAP 557, «Recherche Opérationnelle : Aspects Mathématiques et Applications» Séance 7, 10 Novembre 2017 * Acquisition du cours Signalons quelques résultats clés: - La condition d’optimalité pour la minimisation d’un critère différentiable sous contraintes linéaires. - La notion de gradient réduit. - Le pivotage dans la méthode du gradient réduit. - La notion de base dans l’algorithme du simplexe. - L’estimation du multiplicateur et l’argument de con- vergence dans l’algorithme du simplexe. - L’algorithme du simplexe dual et son lien avec la pro- grammation linéaire en nombres entiers. 7.1 Pratiquer l’algorithme du simplexe Nous reprenons l’exemple sur lequel Dantzig, dans son livre “Linear Programming and extensions” (page 95), il- lustre la méthode du simplexe : Min x0 x 1 +6x 2 - 7x 3 + x 4 +5x 5 ; 5x 1 - 4x 2 + 13x 3 - 2x 4 + x 5 = 20 x 1 - x 2 +5x 3 - x 4 + x 5 =8 Dantzig propose la base initiale (1, 5). Mettre en œuvre l’algorithme du simplexe sur cet exemple (au moins pour la première itération). 7.2 Pratiquer l’algorithme du simplexe (bis) Soit le problème linéaire: Max x0 5x 1 +4x 2 +3x 3 ; 2x 1 +3x 2 + x 3 5 4x 1 + x 2 +2x 3 11 3x 1 +4x 2 +2x 3 8 . Résoudre ce problème à l’aide de l’algorithme du simplexe. On partira de la solution réalisable x 1 = x 2 = x 3 =0. 7.3 Résoudre par le simplexe la relaxation du sac à dos On considère la relaxation suivante d’un problème de sac à dos Max x0 n X i=1 u i x i ; n X i=1 p j x i b (1) * On rappelle qu’une copie des feuilles de PC, transpar- ents d’amphi, etc., peut être trouvée sur http://www.cmap. polytechnique.fr/~gaubert/RO (avec p i > 0, u i > 0 pour tout i). Etudier sa résolution par l’algorithme du simplexe. On pourra introduire une variable d’écart pour se ramener à une contrainte d’égalité, et choisir comme point initial de ne mettre aucun objet dans le sac. On notera w i = u i /p i les ratios utilité/poids. 7.4 Appliquer le simplexe dual à la relaxation du sac à dos Résoudre le problème du sac à dos relaxé (avec p i > 0, u i > 0 pour tout i) Max x[0,1] n n X i=1 u i x i ; n X i=1 p j x i b (2) par l’algorithme du simplexe dual, initialisé en prenant la solution du problème sans la contrainte linéaire. 7.5 Algorithme du simplexe pour les flots Cet exercice montre que dans le cas des problèmes de flots, l’algorithme du simplexe peut s’implémenter de manière particulièrement efficace. L’énoncé est agrémenté de rappels et d’exemples. 7.5.1 Énoncé du problème Soit G =(N , A) un graphe orienté sans boucles. On considère le problème général de transport min c · x (3) x 0 Mx = b M est la matrice d’incidence nœuds arcs de G, c R A , et b R N représente le vecteur des flots entrants (al- gébriques). On rappelle que l’équation Mx = b est une écriture synthétique de la loi des nœuds de Kirchhoff: b i + X j∈N , (j,i)∈N x ji = X j∈N , (i,j)∈N x ij , i ∈N . On supposera dans la suite que la somme des flots al- gébriques entrants est nulle: X i b i =0 . Le problème (3) est donc un cas particulier du problème de flot à coût minimum vu en cours: on suppose ici qu’il n’y a pas de contraintes de capacité (soit avec les notations du polycopié, u +). 1

Transcript of Algorithme du simplexe: Énoncé et guidegaubert/RO/map557-pc7-corr-2017.pdf · 7.5 Algorithme du...

Page 1: Algorithme du simplexe: Énoncé et guidegaubert/RO/map557-pc7-corr-2017.pdf · 7.5 Algorithme du simplexe pour les flots Cet exercice montre que dans le cas des problèmes de flots,

Algorithme du simplexe: Énoncé et guide

Cours MAP 557, «Recherche Opérationnelle : Aspects Mathématiques et Applications»

Séance 7, 10 Novembre 2017∗

Acquisition du cours

Signalons quelques résultats clés:

- La condition d’optimalité pour la minimisation d’uncritère différentiable sous contraintes linéaires.

- La notion de gradient réduit.

- Le pivotage dans la méthode du gradient réduit.

- La notion de base dans l’algorithme du simplexe.

- L’estimation du multiplicateur et l’argument de con-vergence dans l’algorithme du simplexe.

- L’algorithme du simplexe dual et son lien avec la pro-grammation linéaire en nombres entiers.

7.1 Pratiquer l’algorithme du simplexe

Nous reprenons l’exemple sur lequel Dantzig, dans sonlivre “Linear Programming and extensions” (page 95), il-lustre la méthode du simplexe :

Minx≥0

x1 + 6x2 − 7x3 + x4 + 5x5;

5x1 − 4x2 + 13x3 − 2x4 + x5 = 20x1 − x2 + 5x3 − x4 + x5 = 8

Dantzig propose la base initiale (1, 5). Mettre en œuvrel’algorithme du simplexe sur cet exemple (au moins pourla première itération).

7.2 Pratiquer l’algorithme du simplexe (bis)

Soit le problème linéaire:

Maxx≥0

5x1 + 4x2 + 3x3;

2x1 + 3x2 + x3 ≤ 54x1 + x2 + 2x3 ≤ 113x1 + 4x2 + 2x3 ≤ 8 .

Résoudre ce problème à l’aide de l’algorithme du simplexe.On partira de la solution réalisable x1 = x2 = x3 = 0.

7.3 Résoudre par le simplexe la relaxation dusac à dos

On considère la relaxation suivante d’un problème de sacà dos

Maxx≥0

n∑i=1

uixi;

n∑i=1

pjxi ≤ b (1)

∗On rappelle qu’une copie des feuilles de PC, transpar-ents d’amphi, etc., peut être trouvée sur http://www.cmap.polytechnique.fr/~gaubert/RO

(avec pi > 0, ui > 0 pour tout i). Etudier sa résolutionpar l’algorithme du simplexe. On pourra introduire unevariable d’écart pour se ramener à une contrainte d’égalité,et choisir comme point initial de ne mettre aucun objetdans le sac.On notera wi = ui/pi les ratios utilité/poids.

7.4 Appliquer le simplexe dual à la relaxationdu sac à dos

Résoudre le problème du sac à dos relaxé (avec pi > 0,ui > 0 pour tout i)

Maxx∈[0,1]n

n∑i=1

uixi;

n∑i=1

pjxi ≤ b (2)

par l’algorithme du simplexe dual, initialisé en prenant lasolution du problème sans la contrainte linéaire.

7.5 Algorithme du simplexe pour les flots

Cet exercice montre que dans le cas des problèmesde flots, l’algorithme du simplexe peut s’implémenter demanière particulièrement efficace. L’énoncé est agrémentéde rappels et d’exemples.

7.5.1 Énoncé du problème

Soit G = (N ,A) un graphe orienté sans boucles. Onconsidère le problème général de transport

min c · x (3)x ≥ 0

Mx = b

où M est la matrice d’incidence nœuds arcs de G, c ∈ RA,et b ∈ RN représente le vecteur des flots entrants (al-gébriques). On rappelle que l’équation Mx = b est uneécriture synthétique de la loi des nœuds de Kirchhoff:

bi +∑

j∈N , (j,i)∈N

xji =∑

j∈N , (i,j)∈N

xij , ∀i ∈ N .

On supposera dans la suite que la somme des flots al-gébriques entrants est nulle:∑

i

bi = 0 .

Le problème (3) est donc un cas particulier du problème deflot à coût minimum vu en cours: on suppose ici qu’il n’ya pas de contraintes de capacité (soit avec les notations dupolycopié, u ≡ +∞).

1

Page 2: Algorithme du simplexe: Énoncé et guidegaubert/RO/map557-pc7-corr-2017.pdf · 7.5 Algorithme du simplexe pour les flots Cet exercice montre que dans le cas des problèmes de flots,

Exemple Voici un exemple de graphe, où les valeurs duvecteur b sont indiquées par des flèches sortantes ou en-trantes, de sorte que

b1 = 2, b2 = −4, b5 = −3, b6 = 5, b3 = b4 = 0 .

-

3

2

- -

5

4

@@@R �

���

• •

��� @

@@I

-

5

1

6

2

3 4

Les coûts sont indiqués sur la copie suivante du graphe:

-

@@@R

���

����

@@@I1 2

85

0

3

18

�•

• •

Soit

c12 = 18, c13 = 0, c35 = 1, c43 = 5, ; c64 = 2, c65 = 3 .

7.5.2 Rappels: quelques définitions de théorie des graphes

Dans un problème de flot, le graphe est orienté. Cepen-dant, nous aurons besoin de manipuler certaines notionsrelatives au graphe non-orienté sous-jacent, aussi précisonsnous le vocabulaire (le lecteur à l’aise avec la théorie desgraphes peut sauter cette section).Nous appellerons sous-graphe de (N ,A) un graphe

(N ′,A′) avec N ′ ⊂ N et A′ ⊂ (N ′ ×N ′) ∩ A. Un chemin(élémentaire) non orienté dans G entre les nœuds i et j estun sous graphe de sommets i1, . . . , ik et d’arcs e1, . . . , ek−1tel que i1 = i, ik = j, et l’ensemble des extrémités de ei est{ir, ir+1}. Autrement dit, le chemin va de i à j en suivantdes arcs de G à l’endroit ou à l’envers.Nous appelons cycle le sous-graphe obtenu en rajoutant

un arc d’ensemble d’extrémités {j, i} à un tel chemin.Le lecteur prendra garde à ne pas confondre la notion de

cycle (non-orienté) et celle de circuit (notion orientée, danslaquelle les arcs qui se suivent ont la même orientation).Rappelons qu’un graphe est connexe si deux nœuds peu-

vent être reliés par un chemin non-orienté. Un sous-graphede G connexe sans cycles est un arbre. On dit que cet ar-bre est couvrant si tout nœud de G appartient à un arc. Demanière équivalente, un arbre couvrant est un arbre dontl’ensemble des sommets est N . Une forêt est un graphesans cycle, mais éventuellement non connexe (c’est doncune union d’arbres dont les ensemble de sommets sont deuxà deux disjoints).

7.5.3 Flot associé à un arbre couvrant

Si x est un flot, on définit son support comme

Ax = {(i, j) | xij > 0}.

Si un sous-graphe (N ,A′) vérifie Ax ⊂ A′, on dit que(N ,A′) contient le support du flot x.Dans toute la suite, on supposera le graphe G connexe.

7.5.3.1 Question

Montrer que si le critère z 7→ c · z est minoré sur F := {z |Mz = b, z ≥ 0}, alors il existe un flot optimal x tel que Axest sans cycle. En déduire que le support de ce flot x estcontenu dans un arbre couvrant.

7.5.3.2 Question

Montrer que si le support d’un flot x est contenu dans unarbre couvrant, alors les coordonnées xij peuvent être cal-culées très simplement à partir de b, en commençant parles arcs (i, j) tels que i ou j soit une feuille (i.e. n’ait qu’unseul voisin), et sans jamais effectuer de multiplication oudivision. En déduire que x est entier si b l’est.

7.5.4 Prix associé à un arbre couvrant

On dit que y = (yi)i∈N est un système de prix associé àun arbre couvrant (N , T ) si

yi = cij + yj , ∀(i, j) ∈ T

(noter que y n’est défini qu’à une constante additive près).

7.5.4.1 Question

Donner un algorithme pour calculer un système de prix yassocié à un arbre couvrant (N , T ).

7.5.5 Vérification de l’optimalité d’un flot supporté parun arbre couvrant à l’aide du système de prix

Nous dirons qu’un système de prix est cohérent si

yi ≤ cij + yj ∀(i, j) ∈ A.

Une interprétation économique intuitive est la suivante.Imaginons qu’un prestataire de service nous offre de trans-porter de i vers j au prix unitaire de yi− yj . Si le systèmede prix est cohérent, i.e. si yi−yj ≤ cij , il est moins cher defaire appel au prestataire que de faire le travail soi même.

7.5.5.1 Question

Montrer que si (N , T ) est un arbre couvrant contenant lesupport d’un flot x, et tel qu’un système de prix y associéà cet arbre est cohérent, alors le flot x est optimal.

Indication Calculer le problème dual du problème detransport, et interpréter le système de prix y à l’aide duproblème dual.

2

Page 3: Algorithme du simplexe: Énoncé et guidegaubert/RO/map557-pc7-corr-2017.pdf · 7.5 Algorithme du simplexe pour les flots Cet exercice montre que dans le cas des problèmes de flots,

7.5.6 Amélioration du flot

On suppose maintenant que le système de prix associé àun arbre (N , T ) est incohérent, soit

yi > cij + yj , (4)

pour un certain (i, j) ∈ A\T .

7.5.6.1 Question

Soit γ l’unique cycle obtenu en rajoutant l’arc (i, j) àl’arbre couvrant. On oriente le cycle γ dans le sens del’arc (i, j), On note γ+ l’ensemble des arcs de γ parcouruen sens positif, et γ− l’ensemble des arcs de γ parcouru ensens négatif.Vérifier qu’il existe au plus un flot xt supporté par le

sous-graphe formé de l’ensemble d’arcs T ∪ {(i, j)}, et telque xtij = t, et qu’il est donné par:

xtkl =

xkl si (k, l) 6∈ γxkl + t si (k, l) ∈ γ+ ,

xkl − t si (k, l) ∈ γ− .

(5)

Vérifier que le vecteur xt ainsi défini est bien un flot siet seulement

0 ≤ t ≤ t∗ := inf{xkl | (k, l) ∈ γ−}, (6)

avec la convention inf ∅ = +∞.Montrer enfin que

c · xt − c · x = t(cij + yj − yi) . (7)

On notera que hors du cycle créé par la variable entrante(i, j), les valeurs du flot reste identique.

7.5.7 Énoncé de l’algorithme du simplexe pour les flots

Les questions qui précèdent motivent l’algorithme suiv-ant:

1. Initialisation. On part d’un arbre couvrant T . Oncalcule le flot x associé.

2. On calcule le système de prix y associé à l’arbre cou-vrant T .

3. Si le système de prix y est compatible, le flot x estoptimal. Fin.

4. Sinon, on trouve un arc (i, j) tel que l’inégalité (4) soitsatisfaite, et l’on calcule t∗ dans (6).

5. Si t∗ = +∞ (i.e., si γ− = ∅), la valeur du problème deflot est −∞. Fin.

6. Si t∗ est fini, on observe que le flot xt∗est supporté

par un arbre T ∗, on remplace T par T ∗, on remplacex par xt

∗, et on itére en retournant au point (2) de

l’algorithme.

Une itération est dite dégénérée si t∗ = 0.

7.5.7.1 Question

Montrer que si on ne rencontre pas d’itération dégénérée,l’algorithme termine.

7.5.7.2 Question

Montrer que l’algorithme du simplexe pour les flots est bienun cas particulier de l’algorithme du simplexe (quel objetcombinatoire représentent la base?)

3

Page 4: Algorithme du simplexe: Énoncé et guidegaubert/RO/map557-pc7-corr-2017.pdf · 7.5 Algorithme du simplexe pour les flots Cet exercice montre que dans le cas des problèmes de flots,

Guide pour la résolution des exos de laSéance 7

Corrigé: Pratiquer l’algorithme du simplexe

Avec le choix de la base B = (1, 5), la matrice de base

est AB =

(5 11 1

), et les variables de base valent x1 = 3,

x5 = 5. Ce point initial est donc admissible.Itération 1. L’estimation du multiplicateur A>Bλ = −cBs’écrit (bien noter la nécessité de transposer, et le fait quela matrice de base est symétrique dans notre cas)(

5 11 1

)λ =

(−1−5

),

de solution λ = (1 − 6)>. Le gradient réduit vaut

g2 = 6 + (−4 − 1)λ = 8,g3 = −7 + (13 5)λ = −24,g4 = 1 + (−2 − 1)λ = 5.

La variable entrante est donc nécessairement 3. La direc-tion de déplacement des variables de base est solution de(

5 11 1

)(d1d5

)=

(−13−5

)La solution est d = (−2,−3). Le pas ρ doit vérifier

3− 2ρ ≥ 0; 5− 3ρ ≥ 0.

Le pas maximum vaut donc 3/2. Donc l’indice 1 sort de labase et 3 y rentre. La nouvelle base est (3, 5) et les variablesde base valent

x3 = 3/2; x5 = 5− 3× 3/2 = 1/2.

Itération 2. Le multiplicateur solution de(13 15 1

)>λ =

(7−5

),

et vaut (4 − 9).Le gradient réduit vaut

g1 = 1 + (5 1)λ = 12,g2 = 6 + (−4 − 1)λ = −1,g4 = 1 + (−2 − 1)λ = −2.

La variable entrante (de coût réduit le plus négatif) est2. La direction de déplacement des variables de base estsolution de (

13 15 1

)(d3d5

)=

(41

).

Il vient (d3, d5) = (0.375,−0.875) = (3/8,−7/8). Le pasvaut donc ρ = −x5/d5 = (1/2)/(7/8) = 4/7. Les variablesde base valent

x2 = 4/7; x3 = 3/2 + (4/7) ∗ (3/8) = 12/7.

Corrigé: Pratiquer l’algorithme du simplexe(bis)

Ce corrigé montre une autre manière de présenter lescalculs de la méthode du simplexe.(Cet exemple est emprunté à Chvatal, op cit.) Intro-

duisant les variables d’écart x4 à x6, on peut réécrire leproblème sous la forme

Maxx≥0 z = 5x1 + 4x2 + 3x3;x4 = 5− 2x1 − 3x2 − x3x5 = 11− 4x1 − x2 − 2x3x6 = 8− 3x1 − 4x2 − 2x3 .

Cette expression est exactement une écriture de la formexB = A−1B (b−ANxN ) où la base est

B = {4, 5, 6}

et où donc N = {1, 2, 3}. La solution basique correspon-dante est obtenue en faisant xN = 0: c’est le point x0 = 0initial. On notera que la matrice AB est ici l’identité.L’algorithme du simplexe demande de faire croître l’unedes variables hors base x1, x2, x3 de coût réduit stricte-ment positif1 autant que possible (i.e. tant que les vari-ables en base restent positives). Le coût réduit coïncideavec le coût initial, i.e., avec la notation du poly (puisqueles coûts basiques sont nuls),

(g1, g2, g3) = cN = (5, 4, 3) ,

où l’on a indiqué les variables hors base correspondant auxdifférentes coordonnées du coût réduit. Comme x1, x2, x3ont toutes un coût réduit strictement positif, on peut en-visager de faire rentrer en base l’une quelconque de cesvariables. Une règle parfois employée (et qui ne garantitpas l’absence de cyclage) est de choisir la variable de coûtréduit maximal. Ici, c’est x1 qui a le plus grand coût réduit,on choisit donc x1. La contrainte x4 ≥ 0 donne x1 ≤ 5/2, lacontrainte x5 ≥ 0 donne x1 ≤ 11/4, et enfin, x6 ≥ 0 donnex1 ≤ 8/3. On pose donc x11 = min(5/2, 11/4, 8/3) = 5/2,donc

x1 = (5/2, 0, 0, 0, 17/2, 13/2). (8)

Tirant la variable entrante de l’équation de la variable sor-tante, on voit que pour tout point réalisable, on obtientun expression de x1 fonction des nouvelles variables horsbase :

x1 =5

2− 1

2x4 −

3

2x2 −

1

2x3 . (9a)

En substituant x1 dans les autres équations, on obtientl’expression des autres variables de base et du critère enfonction des nouvelles variables hors base :

x5 = 1 + 5x2 + 2x4 (9b)

x6 =1

2+

1

2x2 −

1

2x3 +

3

2x4 (9c)

z =25

2− 7

2x2 +

1

2x3 −

5

2x4 . (9d)

1Noter le renversement de signe par rapport au cours écrit, ici onmaximise, alors que le polycopié de cours traite le cas de minimisation.On devrait en fait parler ici de gain plutôt que de coût.

4

Page 5: Algorithme du simplexe: Énoncé et guidegaubert/RO/map557-pc7-corr-2017.pdf · 7.5 Algorithme du simplexe pour les flots Cet exercice montre que dans le cas des problèmes de flots,

On vérifie que l’écriture (9) correspond à la nouvelle base

B = {1, 5, 6} ,

la solution basique associée (notée x1(ε1) dans le poly)étant obtenue en posant x2 = x3 = x4 = 0, et ayantpour valeur 25

2 . Le fait d’avoir substitué x1 dans les équa-tions comme on l’a fait n’est qu’une manière économiquede calculer x1(ε1), sans inverser explicitement de matrice.L’expression de z dans (9d) donne le nouveau coût réduit:

(g2, g3, g4) =(− 7

212 − 5

2

).

Au vu de l’expression de z dans (9d) on voit que l’on peutà nouveau augmenter le critère, à condition de faire croîtremaintenant x3, qui est l’unique variable hors base de coûtréduit strictement positif. La valeur maximale x3 = 1 estdéterminée par l’expression de x6 dans (9c), on pose doncen inversant cette dernière équation:

x3 = 1 + x2 + 3x4 − 2x6 (10)

et en subsituant x3 dans les autres équations, il vient

x1 = 2− 2x2 − 2x4 + x6x5 = 1 + 5x2 + 2x4z = 13− 3x2 − x4 − x6 .

(11)

Comme le vecteur des coût réduits qui se lit sur l’expressionde z est maintenant à coefficients strictements négatifs, ondéduit que x2 = x4 = x6 = 0, x3 = 1, x1 = 2, x5 = 1, estl’unique solution du problème, et qu’elle a pour valeur 13.

Corrigé: Résoudre par le simplexe la relaxationdu sac à dos

Introduisant une variable d’écart x0, on se ramène à laformulation (où u0 = 0 et p0 = 1)

Min−n∑i=0

uixi

n∑i=0

pixi = b;

xi ≥ 0, i = 0, . . . , n.

(12)

Le point initial consiste à ne mettre aucun objet dans lesac, ce qui se traduit par x0 = (b, 0, . . . , 0)>. Ce point estadmissible, et on a B0 = {0}, N0 = {1, . . . , n}, PB0 = 1,cB0 = 0, donc λ0 = 0 et le gradient réduit est g0 = −p.On choisit comme variable entrante celle de gradient ré-

duit le plus négatif. Comme g0 = −uN0 , l’indice entrant i1sera dans argmaxi ui. Le pas maximal est ρ0 = b/pi1 . Lanouvelle partition est

B1 = i1, N = {0, . . . , n} \ {i1}. (13)

On a AB1 = pi1 , λ1 = ui1/pi1 , et donc pour tout j ∈ N ,

gj = −uj + pjui1/pi1 = pj

(ui1pi1− ujpj

). (14)

Ce point est donc optimal ssi i1 ∈ argmax{ui/pi}. Sinonon fait rentrer dans la base un indice de coût réduit négatif,donc tel que i2 tel que

ui2pi2

>ui1pi1

. (15)

L’algorithme s’arrêtera donc quand l’indice j de la variablede base sera tel que j ∈ argmax{ui/pi}.

Remarque On voit bien sur cet exemple que le che-minement du simplexe dépend de la mise à l’échelle desvariables. Si on prend comme variables yi = pixi, dont levecteur de coût associé est ui/pi, on obtient la solution dèsla première itération du simplexe.

Complément A titre d’exercice on pourra étudier le casoù on impose de plus xi ≤ 1, i = 1 à n, en introduisant lesvariables yi = 1− xi.

Corrigé: Appliquer le simplexe dual à larelaxation du sac à dos

Problème sans la contrainte linéaire. Ce problèmes’écrit (avec ici x ∈ Rn)

Min0≤x≤u

−n∑i=1

uixi, (16)

et a pour solution unique x = u.La partition optimale est, puisqu’il n’y a pas de con-

traintes linéaires,

B = ∅, N1 = ∅, N2 = {1, . . . , n}. (17)

Notons s et z les multiplicateurs associés aux bornes sur x.Le lagrangien est

−p · x− s · x+ z · (x− u) = −z · u+ (z − s− p) · x (18)

et le dual est donc

Maxs≥0,z≥0

−z · u; z = p+ s. (19)

La solution duale est unique, et c’est s = 0, z = p.

Problème complet : calcul du dual. Le problème àrésoudre peut s’écrire, introduisant la variable d’écart x0et posant u0 = 0, p0 = 1, et u0 = b :

Min0≤x≤u

−p · x; a · x = b. (20)

Notons encore s et z les multiplicateurs associés aux bornessur x, et λ celui associé à la contrainte linéaire. Le lagran-gien est

−p · x+ λ(a · x− b)− s · x+ z · (x− u), (21)

ou encore factorisant en x

−λb− z · u+ (λa− p− s+ z) · x.

Le problème dual s’écrit donc

Maxλ,s≥0,z≥0

−λb−n∑i=1

uizi; s+ p = λa+ z.

5

Page 6: Algorithme du simplexe: Énoncé et guidegaubert/RO/map557-pc7-corr-2017.pdf · 7.5 Algorithme du simplexe pour les flots Cet exercice montre que dans le cas des problèmes de flots,

Point de départ. On part de la solution duale du prob-lème sans la contrainte linéaire. A la contrainte linéaire estassocié un un multiplicateur nul. Le point de départ dualest donc

λ = 0, s = 0, z = p. (22)

La variable de base ’au sens primal) associée à la satisfac-tion de la contrainte linéaire est la variable d’écart x0. Onobtient donc bien un point dual réalisable et basique, avecla partition

B = {0}, N1 = ∅, N2 = {1, . . . , n}. (23)

Rappelons que (N1, N2) et λ forment la base duale, tan-dis que B est l’ensemble des variables hors base pour ledual. Le point x0 vaut donc b−

∑i piui, quantité supposée

strictement négative (sinon le problème a pour solution u).On prend donc B = {0}, de sorte que s0 est “hors baseduale” et vaut donc 0.Le système

s = λa− p+ z (24)

puisque B = {0}, donc s0 = z0 = 0, donc λ = 0, et commeN1 = ∅, N2 = {1, . . . , n}, a pour solution λ = 0 (obtenu enprenant i = 0) puis zi = ui pour i ≥ 1 (on retrouve et c’estlogique la solution précédente).Le gradient réduit s’interprètant comme la dérivée par-

tielle du lagrangien par rapport aux variables hors base(duale), il vient gs0 −x0 =

∑i pi− b > 0. Comme on max-

imise, le seule candidat pour rentrer dans la base duale ests0.La direction de déplacement est donnée par A>Bd

λ = ei,soit

dsi = dλpi + dzi , i = 0, . . . , n. (25)

Comme ds0 = 1, l’indice i = 0 donne dλ = 1, puis dsi = 0,i = 1 à n (car N1 = ∅) et finalement dzi = −pi, i = 1 à n(car N2 = {1, . . . , n}.Le plus grand pas ρ est tel que ui − ρpi = 0 soit ρ =

mini wi (où wi := ui/pi). Soit i0 ∈ argmini wi. On a doncz = p− wi0a et zi0 = 0.La mise à jour de la partition estB = {i0}, N1 = {0} (car

s0 vient de rentrer dans la base duale). N2 = {1, . . . , n} \{i0}.

Iération k quelconque Si B = {ik}, le “multiplicateur”xk est solution de

xN1 = 0; xN2 = uN2 ; pikxik = b−∑i∈N2

piui.

Comme sik et zik seront hors de N , l’estimation λk de λsera déterminée par λk = uik/pik . Ensuite on aura

si = λkpi − ui, ∀i ∈ N1; zi = ui − λkpi, ∀i ∈ N2.

Le gradient réduit sera si la variable hors base (duale) estde type “s” −xik , et si la variable hors base (duale) est detype “z”, xik − uik . S’il est négatif (ce qui correspond bienà une réalisabilité primale) l’optimum est trouvé, sinon lavariable jk rentre dans la base duale, d’où

dλ = 1/pik (type “s”), ou dλ = −1/pik (type “z”).

Alors

dsi = dλpi, i ∈ N1; dzi = −dλpi, i ∈ N2.

7.1 Algorithme du simplexe pour les flots

7.1.0.4 Réponse

D’après le Corollaire 2.24, la forme linéaire z 7→ c · z admetun point de minimum x sur le polyèdre F .Supposons tout d’abord que Ax contienne un cycle.

Choisissons un arc sur ce cycle arbitrairement, et orien-tons le cycle selon cet arc. Décroissons le flot de t sur lesarcs dans le sens de parcours, et accroissons le flot de t surles arcs en sens opposé, comme suit:

���*@

@@I

�����

@@@I

����

�−t

−t

+t

+t

−t

Le nouveau flot, x′, ainsi obtenu vérifie encore la loi desnœuds de Kirchoff. En outre, si |t| est assez petit, x′ estencore admissible. On a

c · x′ − c · x =

∑(i,j)

parcourru ensens négatif

cij −∑(i,j)

parcourru ensens positif

cij

t .

Comme x est supposé point de minimum, cette expressionest ≥ 0, quel que soit t tel que |t| soit assez petit. Le termeen facteur est donc nécessairement nul:∑

(i,j)parcourru ensens positif

cij −∑(i,j)

parcourru ensens négatif

cij = 0.

En choisissantt = min

(i,j)parcourru ensens positif

xi,j ,

on obtient donc un flot x′ tel que Ax′ ( Ax, et c ·x′ = c ·x.Par récurrence sur nombre d’arcs de Ax, on conclut qu’ilexiste un flot optimal x tel que Ax soit sans cycle.Le groupe (N ,Ax) est alors une forêt (union d’arbres).

En rajoutant des arcs (i, j) tels que xij = 0, on parvientà un ensemble A′ tel que A ⊃ A′ ⊃ Ax et tel que (N ,A′)soit un arbre couvrant.

7.1.0.5 Réponse

On observe tout d’abord que le flot sur tout arc dont uneextrémité est une feuille i de l’arbre vaut ±bi (le signe ±est choisi selon l’orientation de l’arbre). On se ramène alorsau calcul d’un flot supporté par le sous-arbre, obtenu en

6

Page 7: Algorithme du simplexe: Énoncé et guidegaubert/RO/map557-pc7-corr-2017.pdf · 7.5 Algorithme du simplexe pour les flots Cet exercice montre que dans le cas des problèmes de flots,

supprimant l’arc ayant pour extrémité la feuille i, et l’onapplique le même procédé à ce sous-arbre.Illustrons cet algorithme, en calculant le flot x supporté

par l’arbre suivant

-

3

2

-

5

4

��� @

@@I

@@@R �

���

5

1

6

2

• •3 4

Par exemple, 2 = x13. On se ramène au nouveau graphe:

3

2

5

4

•1

• •

2- -

� �

@@@R

���

@@@I

����

On raisonne maintenant sur le sous-arbre formé des arcs oùle flot n’est pas connu (en gras). Une feuille de ce nouvelarbre est 5, et comme b5 = −3, on a x35 = 3, soit:

3

2

5

4

3•

• •

2-

� �

@@@R

���

@@@I

����

De même, de la relation x43+x13 = x35, on déduit x43 = 1.En poursuivant ainsi, de proche en proche, on détermine leflot sur tout le graphe:

-

3

2

-

5

4

��� @

@@I

@@@R �

���

3•

5

4

• •

21

Montrons maintenant que l’algorithme que l’on vient despécifier et d’illustrer est correct. Remarquons toutd’abord qu’un arbre couvrant a n − 1 arcs, où n = |N |est le nombre de sommets (ce qui se vérifie immédiatementpar récurrence sur le nombre de sommets). Pour trouverun flot x supporté par un arbre, on a donc n− 1 inconnues

et n équations. Or quand on somme les relations

bi =∑j

xij =∑j

xji, ∀i

sur i ∈ N , on obtient

∑i

bi +∑ij

xij =∑ij

xij , soit 0 = 0.

Les n lois des nœuds de Kirchoff sont donc des relationsdépendantes. Ceci garantit la correction de l’algorithme:on calcule le flot de proche en proche, la loi des nœuds deKirchoff est donc vérifiée par construction en tout nœudvisité par l’algorithme, et quand l’algorithme termine, ilreste un nœud non visité, en lequel la loi des nœuds estautommatiquement vérifiée.Enfin, l’algorithme calculant les flots x = (xij) à partir

des flots exogènes b = (bk) ne fait que des additions etdes soustractions. Le vecteur x est donc entier dès que levecteur b est entier.

7.1.0.5 Réponse

On choisit un nœud quelconque j de l’arbre. On pose yj =0. On pose

yi =∑

(k,`)∈uniquechemin reliant i à j

±ck,`

avec + si l’arc (k, `) est parcourru en sens positif, et −sinon. On note que yi peut être calculé de proche en proche(d’abord pour les voisins de j, puis pour les voisins desvoisins).Illonstrons cette méthode dans le cas des coûts suivants:

��� @

@@I

@@@R �

���

1 2

8

• •

05

Les prix sont indiqués sur les nœuds.

1 22

05

3

10

0

��� @

@@I

@@@R �

���8

3 8

7

Page 8: Algorithme du simplexe: Énoncé et guidegaubert/RO/map557-pc7-corr-2017.pdf · 7.5 Algorithme du simplexe pour les flots Cet exercice montre que dans le cas des problèmes de flots,

7.1.0.6 Réponse

Le problème primal s’écrit:

Min∑i,j

cijxij (26a)

∀(i, j) ∈ A, xij ≥ 0 (26b)

∀i ∈ N , bi +∑j

xji =∑j

xij (26c)

Notons λij ≥ 0 le multiplicateur de Lagrange associé à lacontrainte inégalité (26b), et yi ∈ R le multiplicateur deLagrange associé à la contrainte égalité (26c), et formonsle Lagrangien

L(x;λ, y) =∑i,j

cijxij +∑i

yi

bi +∑j

xji −∑j

xij

−∑i,j

λijxij

de sorte que

infx∈RA

supλ∈RA+y∈RN

L(x;λ, y) = valeur du problème de transport .

Le problème dual est obtenu par définition en commutantle sup et l’inf, soit

supλ∈RA+y∈RN

infx∈RA

∑i,j

xij (cij − yi + yj − λij) +∑i

yibi

= supy∈RN

yi≤cij+yj

∑i

yibi.

Un système de prix cohérent n’est rien d’autre qu’un pointadmissible du problème dual.L’intégalité de dualité faible montre que Val (Dual) ≤

Val (Primal), soit ∑i

yibi ≤∑i,j

cijxij ,

pour tous points admissibles y et x du problème dual et duproblème primal, respectivement.Si le flot x est supporté par (N , T ), on a cij = −yi + yj ,

lorsque xij 6= 0, et donc

∑i,j

cijxij =∑i,j

(−yi + yj)xij =∑ij

yi

∑j

xij −∑j

xji

=∑i

yibi

ce qui montre que x est optimal. �

7.1.0.7 Réponse

Calculer le flot xt revient à déterminer xtkl pour (k, l) ∈ T ,on se ramène au problème traité dans la Question 7.5.3.2.Il y a donc unicité du flot xt, pour toute valeur de t ≥ 0: le

vecteur xt calculé par la méthode de cette section vérifieraautomatiquement la loi des nœuds de Kirchoff, le seul pointest de voir pour quelles valeurs de t on a xt ≥ 0.Avant de traiter ce point, illustrons le calcul de xt par

l’exemple suivant, les coûts étant indiqués sur les arcs, lesystème de prix étant celui déjà calculé, et l’arc (i, j) véri-fiant (4) étant indiqué en trait gras, soit (i, j) = (6, 5).

-

@@@R

���

����

@@@I1 2

805

2

3

10

0

38

3

18

jm mi�

Dans l’exemple qui précède, on obtient (les arcs du cycleγ étant en gras):

-

3

2

-

5

4

@@@R �

���

•2

jm mi

4

• •

t

1− t

5− t3− t�

��� @

@@I�

Compte tenu de (5), on a xt ≥ 0 si et seulement si

xkl − t ≥ 0 , pour tout (k, l) ∈ γ−

ou encore

0 ≤ t ≤ t∗ := inf{xkl | (k, l) ∈ γ−}, (27)

avec la convention inf ∅ = +∞. Pour l’exemple qui précède,on obtient

0 ≤ t ≤ min(3, 1, 5) = 1 .

Enfin, par définition de xt, et compte tenu de ce queyk − yl = ckl pour tout arc (k, l) du cycle γ, on a

c · xt − c · x =∑

(k,l)∈γ−−tckl +

∑(k,l)∈γ+

tckl

=∑

(k,l)∈γ−−t(−yk + yl) (28a)

+∑

(k,l)∈γ+\{(i,j)}

t(−yk + yl) (28b)

+ cijt (28c)= (cij + yj − yi)t ,

car en vertu du choix des signes, chaque terme tyk, pourk ∈ γ \ {i, j}, apparaît une fois positivement et une foisnégativement dans les sommes (28a),(28b), il ne reste doncque les termes “extrêmes”, tyj et −tyi, ainsi que le termecijt issu de (28c).

8

Page 9: Algorithme du simplexe: Énoncé et guidegaubert/RO/map557-pc7-corr-2017.pdf · 7.5 Algorithme du simplexe pour les flots Cet exercice montre que dans le cas des problèmes de flots,

7.1.0.8 Reponse

Par définition de t∗, si t∗ < ∞, il existe un arc (k, l) ∈ γtel que t∗ = xkl. On a donc xt

kl = 0, et donc, le nouveauflot xt

∗produit par l’algorithme à partir de l’arbre T et de

l’arc (i, j) est supporté par T ∗ := (T ∪ {(i, j)}) \ {(k, l)},qui est encore un arbre couvrant. Ainsi, chaque flot produitpar l’algorithme est associé à un arbre couvrant. Si on nerencontre pas d’itérations dégénérées, il résulte de (7) quele coût du flot décroit strictement à chaque itération. Lenombre d’arbres couvrants étant fini, l’algorithme termine.

7.1.0.9 Reponse

Une base correspond exactement à un arbre couvrant.

7.1.1 Illustration

En appliquant l’algorithme à l’exemple initial (sec-tion 7.5.1), avec l’arbre T et l’arc (i, j) de la section 7.5.6,on parvient au nouveau flot

-

3

2

-

5

4

��� @

@@I

@@@R �

���

•2

•4

• •

1

42

Le nouveau système de prix associé vaut :

-

@@@R

��� @

@@I

����

1 2

805

7

8

10

0

88

3

18

Ce système est cohérent. Donc le flot trouvé est optimal.Fin.Afin de s’assurer que nous n’avons pas fait d’erreur de

calcul, vérifions que la valeur du point admissible x duproblème primal et la valeur du point admissible y du prob-lème dual coïncident:

valeur primale = 2× 0 + 2× 1 + 1× 3 + 4× 8 + 4× 2

= 45

valeur duale = 8× 2 + 5× 10− 4× 0− 3× 7

= 45.

L’égalité de ces valeurs assure que x et y sont optimaux.

Remarque Une itération (bien programmée) prend untemps O(n+m) où n est le nombre de nœuds et m est lenombre d’arcs. Comme l’algorithme du simplexe général,

l’algorithme du simplexe pour les flots ne termine pasnécessairement (en présence d’itérations dégénérées).

Comment initialiser l’algorithme L’algorithme exigede connaître un flot initial admissible x ≥ 0 supporté parun arbre couvrant. Remarquons qu’un flot initial admissi-ble s’obtient très facilement s’il y a assez d’arcs, par exem-ple si chaque entrée est reliée à chaque sortie. Ceci suggèrede résoudre le problème auxiliaire suivant. On rajoute augraphe des arcs artificiels, de coût 1, et ont donne aux arcsdéjà existants le coût 0. On calcule le coût minimal d’unflot dans ce nouveau graphe, à l’aide de l’algorithme du sim-plexe pour les flots (sachant que dans ce cas l’initialisationest triviale). Si le coût optimal de ce problème auxiliaireest strictement positif, il ne peut exister de flot admissiblepour le problème principal, Fin. Sinon, le flot obtenu àpartir du problème auxiliaire est nécessairement supportépar un arbre couvrant formé d’arcs du graphe initial, cetarbre et sont flot associé conviennent donc pour initialiserl’algorithme du simplexe pour le problème principal.

9