Introduction au Compressed sensing.
M´ethode du simplexe
Guillaume Lecu´e1
R´esum´e
Dans les deux chapitres qui se suivent, nous pr´esentons deux types d’algorithmes pour r´esoudre des probl`emes de programmation lin´eaires. Le premier, pr´esent´e dans ce chapitre, est l’algorithme du simplexe qui est un algorithme it´eratif de marche sur les sommets du polytope des contraintes. Le deuxi`eme, pr´esent´e dans le chapitre suivant, est une m´ethode de barri`ere qui s’autorise `a traverser le polytope de l’int´erieur pour atteindre la solution.
1 Introduction
La proc´edure de Basis Pursuit peut ˆetre r´e´ecrite comme un probl`eme de programmation lin´eaire :
´
etant donn´esA∈Rm×N ety∈Rm, on consid`ere le probl`eme d’optimisation (ˆz+,zˆ−)∈ argmin
(z+,z−)∈R2N N
X
j=1
zj++zj− tel que [A| −A]
z+ z−
=y et z+
z−
≥0. (LP) On rappelle que pour tout x ∈ RN, on note x+ ∈ RN et x− ∈ RN les vecteurs dont les coordonn´ees sont donn´ees pour toutj = 1, . . . , N par
(x+)j = max(0, xj) et (x−)j = max(0,−xj).
L’´equivalence entre le Basis Pursuit et (LP) est `a comprendre de la mani`ere suivante.
Proposition 1.1. Il y a ´equivalence entre le probl`eme d’optimisation du Basis Pursuit et (LP) : 1. Si xˆ est solution du basis pursuit alors (ˆx+,xˆ−) est solution de (LP)
2. Si (ˆz+,zˆ−) est solution de (LP) alors zˆ+−zˆ− est solution du basis pursuit.
L’objectif des deux chapitres suivants du cours est de proposer des algorithmes solutionnant le probl`eme (LP). Pour cela, on introduit les formes g´en´erales et standard des probl`eme de program- mation lin´eaire. Ensuite, on pr´esente deux types d’algorithmes pour solutionner les probl`emes de programmation lin´eaire.
2 Programmation lin´ eaire
Un probl`eme de programmation lin´eaire est un probl`eme d’optimisation sous contraintes o`u la fonction objectif est lin´eaire et les contraintes sont elles aussi lin´eaires. C’est donc un probl`eme de la forme
x∈minRp
c1x1+· · ·+cpxp tel que
ai1x1+ai2x2+· · ·+aipxp ≤bi, i= 1, . . . , m1
ai1x1+ai2x2+· · ·+aipxp =bi, i=m1+ 1, . . . , m2. (2.1)
1. CNRS, CREST, ENSAE. Bureau E31, 3 avenue Pierre Larousse. 92 245 Malakof. Email : guillaume.lecue@ensae.fr.
La fonction objectif
(x1, . . . , xn)> ∈Rn7−→c1x1+· · ·+cnxn
est bien lin´eaire. Il y a m1+m2 contraintes lin´eaires dont m1 sont des in´egalit´es et m2 sont des
´ egalit´es.
Le probl`eme2.1est laforme g´en´eraleouforme canoniquedes probl`emes de programma- tion lin´eaire. Il est courant de r´e´ecrire ce probl`eme sous laforme standard:
x∈minRn
c, x
tel queAx=b, x≥0. (2.2)
Proposition 2.1. Il est toujours possible de transformer un probl`eme de programmation lin´eaire
´
ecrit sous forme g´en´eral en un probl`eme de programmation lin´eaire sous forme standard.
D´emonstration. Etant donn´´ e un probl`eme sous la forme g´en´erale (2.1). On consid`ere deux trans- formations :
1. les contraintes d’in´egalit´e ”ai1x1 +ai2x2+· · ·+aipxp ≤bi” peuvent ˆetre transform´ee en contraintes d’´egalit´e par l’ajout d’une ”slack variable” (variable molle)ui par :
ai1x1+ai2x2+· · ·+aipxp+ui =bi etui ≥0 2. on transforme toutes les variables xi par
x+−x−=x, x+ ≥0 et x−≥0.
On r´e´ecrit alors (2.1) sous la forme (2.2) o`u
x→
x+ x− u
, c→ c+
−c−
, A→
A1 −A1 Im1
A2 −A2 0m2
etb→b (2.3)
o`u A1 = (aij : 1≤i≤m1,1≤j≤p) et A2= (aij :m1+ 1≤i≤m2,1≤j≤p)
De la mˆeme mani`ere que dans la preuve de Proposition1.1, on v´erifie l’´equivalence des deux programmes :
1. Si ˆxest solution de (2.1) alors il existe ˆu≥0 tel que (ˆx+,xˆ−,u) est solution de (2.2) pourˆ c, A, bd´efinis dans (2.3).
2. Si (ˆx+,xˆ−,u) est solution de (2.2) pourˆ c, A, bd´efinis dans (2.3) alors ˆx+−xˆ−est solution de (2.1).
Remarque 2.2. En pratique, la transformation d’un probl`eme de programmation lin´eaire sous forme canonique en un probl`eme standard s’effectue par une suite d’op´eration du style :
1. x1+ 2x3 ≤3 −→ x1+ 2x3+s1= 3, s1 ≥0
2. −2x1+x2 ≥5 −→ −2x1+x2−s2 = 5, s2 ≥0 et s1, s2 sont appel´ees les slack variables.
Quand une slack variable est nulle la contrainte associ´ee est ditesatur´ee; c`ad la solution est sur le bord de la contrainte.
3. ”x1≥5” : ici on pourrait introduire une slack variable mais plutˆot que d’augmenter inuti- lement le nombre de variables, on pr´ef´erera poser y1 =x1 −5 et remplacer x1 → y1+ 5 poury1 ≥0 partout o`u x1 apparaˆıt.
4. Le variables qui ne sont pas contraintes `a ˆetre positives sont remplac´ees par deux variables : x1 =x+1 −x−1 o`u x+1, x−1 ≥0.
On s’int´eresse dans la suite aux probl`emes de programmation lin´eaire ´ecrits sous forme stan- dard. On remarque que le probl`eme (LP) qu’on souhaite r´esoudre est directement ´ecrit sous forme standard. Un probl`eme de programmation lin´eaire se d´efinit alors `a partir dec∈Rn,A∈Rm×n etb∈Rm.
3 M´ ethode du simplexe
On consid`ere un probl`eme de programmation lin´eaire sous forme standard
x∈minRn
c, x
tel queAx=b, x≥0 o`u c∈Rn,A∈Rm×n etb∈Rm.
L’ensemble des contraintes aussi appel´e ensemble de faisabilit´edu probl`eme est C ={x∈Rn:x≥0 et Ax=b}.
C’est l’intersection de l’octant sup´erieur (R+)n et de l’espace affine {x : Ax = b}. Soit cet ensemble est vide (en particulier, il n’y a pas de solution au probl`eme d’optimisation), soit il n’est pas compact, soit c’est l’enveloppe convexe d’un nombre fini de points. Dans le troisi`eme cas, C est, par d´efinition, appel´e polytope ou simplexe. Les points d’un polytope dont il est l’enveloppe convexe et qui ne peuvent pas ˆetre ´ecrits comme combinaison convexe des autres points sont appel´essommetsou points extrˆemes.
x1+ 3x3 = 6
3x1+ 2x2+x3= 10
3x1+ 2x2+x3= 10 x1+ 3x3 = 6
Figure 1 – Exemples d’espaces de contraintes non vides 3.1 Deux r´esultats pr´eliminaires
Proposition 3.1. Soit A ∈ Rm×n et b ∈ Rm. On note C = (Rn+)∩ {x ∈ Rn : Ax = b}. On suppose que C est non vide et compact. Dans ce cas, au moins un des sommets de l’ensemble des contraintes C est solution du probl`eme (2.2).
D´emonstration. L’ensemble C des contraintes de (2.2) est un polytope, on peut donc ´ecrire C= conv(x1, . . . , xp) =nXp
j=1
λjxj :λ∈Λ(p)o o`u x1, . . . , xp sont les points extrˆemes de C et
Λ(p)=n
λ= (λ1, . . . , λp)> ∈Rp:λi ≥0, i= 1, . . . , pet
p
X
i=1
λi= 1o .
La fonction objectif est continue. Elle atteint donc son minimum sur l’ensemble compact C.
En particulier, (2.2) admet au moins une solution. Soit ˆx ∈ C tel que c,xˆ
≤ c, x
pour tout x∈ C. On a donc pour toutλ∈Λ(p),
c,xˆ
≤ c,X
λixi
=X λi
c, xi
.
En prenant le minimum surλ∈Λ(p)dans la derni`ere in´egalit´e, on voit que c,xˆ
≤min1≤i≤p c, xi
. Par ailleurs, ˆx∈ C. Il existe alors ˆλ∈Λ(p) tel que ˆx=Pˆλixi. Ainsi, par lin´earit´e,
c,xˆ
=X
i
λˆi
c, xi
≥ min
1≤i≤p
c, xi
.
On en d´eduit que min1≤i≤p
c, xi
= c,xˆ
et donc le probl`eme (2.2) admet au moins une solution en un des points extrˆemes de C.
Une solution au probl`eme (2.2) peut donc ˆetre trouv´ee en identifiant tous les points extrˆemes de C et en testant leur optimalit´e les uns `a la suite des autres. En g´en´eral, cet algorithme n’est pas r´ealisable en grande dimension car le nombre de sommets deC peut ˆetre grand.
N´eanmoins, le fait que (2.2) admette une solution en un des sommets de C est central pour l’algorithme du simplexe. En effet, la base de cet algorithme est de trouver un chemin parmi tous les sommets de C qui m`ene `a une solution de (2.2).
Id´ee : L’algorithme du simplexe est une m´ethode it´erative qui explore les sommets de C= (Rn+)∩ {x ∈ Rn : Ax = b} de proche en proche et qui assure la d´ecroissance de la fonction objectif x→
c, x
`
a chaque it´eration. A la fin de l’algorithme du simplexe, un sommet deC solutionnant (2.2) est rendu.
A chaque ´etape de l’algorithme du simplexe, c`ad `a un sommet deC, la question centrale est de d´eterminer quel sommet voisin doit ˆetre explor´e – id´ealement, pour arriver `a une solution de (2.2) (cette solution, rendue par l’algorithme du simplexe, est n´ecessairement un sommet) le plus rapidement possible. C’est pr´ecis´ement `a cette question que r´epond (partiellement) l’algorithme du simplexe.
Remarque 3.2. Il n’y a pas forc´ement unicit´e de la solution de (2.2). Si C est non vide et compact alors il peut tr`es bien arriver qu’une face enti`ere du polytope C soit solution. Quand C est non vide et non compact, il se peut que la solution soit `a l’infini et donc le minimum de (2.2) est−∞. On verra dans la suite comment l’algorithme du simplexe se comporte dans ces deux cas.
La premi`ere chose qu’on doit s’assurer est qu’´etant donn´e une ´etape de l’algorithme du sim- plexe, c`ad ´etant donn´e un sommet de C, si la fonction objectivex→
c, x
n’est pas minimale en ce sommet alors n´ecessairement un des sommets voisins aura une valeur de la fonction objectif strictement plus petite.
Proposition 3.3. Soit x1 un point extrˆeme de C (qu’on suppose non-vide et compact). Si x1 n’est pas solution de (2.2) alors pour au moins un des sommets voisins de x1 la fonction objectif x→
c, x
prend une valeur strictement plus petite qu’enx1.
D´emonstration. Pour cela, il suffit de montrer que si x1 est un sommet de C tel que sur tous les sommets voisins la fonction ϕ:x→
c, x
est plus grande qu’en x1 alorsϕest minimal en x1. On ´ecrit C = conv(x1, . . . , xp) o`u x1, . . . , xp sont les sommets de C. On d´efinit l’ensemble S1 ⊂ {x1, . . . , xp}des sommets voisins de x1 comme ´etant le plus petit ensemble de{x1, . . . , xp} tel que le cˆone de sommetx1 engendr´e par conv(S1) contienne C.
x1
Par hypoth`ese, on a pour tout x ∈ S1, ϕ(x) ≥ ϕ(x1). On en d´eduit, par lin´earit´e, de ϕ que sur toute demie-droite issue dex1 et contenue dans le cˆone de sommetx1 engendr´e par conv(S1) la fonction ϕ est croissante (x1 ´etant vu comme l’origine de la demie-droite). En particulier, si x ∈ {x2, . . . , xp} alors le segment [x1, x] est un sous-ensemble d’une telle demie-droite. Donc ϕ croˆıt sur ce segment dex1 `a x et donc ϕ(x)≥ϕ(x1). Ceci ´etant vrai pour tout sommet x de C, on en d´eduit le r´esultat `a l’aide de Proposition3.1.
Proposition 3.3 assure donc que le sommet explor´e par l’algorithme du simplexe est soit solution du probl`eme (2.2), soit il y a parmi ces sommets voisins un sommet pour lequel la fonction `a minimiser sera strictement plus petite.
3.2 Pr´esentation de l’algorithme du simplexe
L’algorithme du simplexe est un algorithme it´eratif d’exploration de sommets du polytope des contraintes C = (R+)n ∩ {x : Ax = b} qui assure la d´ecroissance de la fonction objectif ϕ:x∈Rn→
c, x
le long de son chemin.
Figure 2 – Exploration des sommets du polytope des contraintes par l’algorithme du simplexe.
Il est bas´e sur deux r`egles :
1. la premi`ere r`egle est un crit`ere d’arrˆet
2. la deuxi`eme r`egle ´enonce le principe pourpasser d’un sommet `a un de ses sommets voisinsassurant la d´ecroissance de ϕ.
Chaque it´eration s’effectue par une ´etape du pivot de Gauss (aussi appel´e ´elimination Gaussienne ou m´ethode de Gauss-Jordan). En effet, en introduisant la variables z =
c, x , on voit qu’une solution de (2.2) sera aussi solution du syst`eme d’´equations lin´eaires
z− c, x
= 0
Ax =b. (3.1)
On va donc `a chaque ´etape trouver une solution positive au syst`eme (3.1) par la m´ethode du pivot de Gauss.
A l’´etape suivante, on sera amen´e `a r´esoudre un autre syst`eme d’´equations lin´eaires semblable
`
a celui de (3.1) mais pour d’autres coefficients c→ c0, A→ A0, b → b0 obtenus par une ´etape de pivot de Gauss. Ce syst`eme est de la forme
z− c0, x
=b00
A0x =b0. (3.2)
Ce syst`eme apparaˆıt `a chaque it´eration de l’algorithme du simplexe. Il est utile de le repr´esenter sous forme de tableau.
z x> b 1 −(c0)> b00
0 A0 b0
nom des variables ligne 0
lignes d’indices 1, . . . , m
Figure3 – Repr´esentation sous forme de tableau de chaque it´eration de l’algorithme du simplexe Si, pour une certaine it´eration, le vecteur c0 n’a que des coefficients positifs ou nuls alors, comme x ≥0, on ne pourra plus faire d´ecroˆıtre z et alors la solution au probl`eme sera z =b00. Ceci correspond au crit`ere d’arrˆet de l’algorithme du simplexe et donc `a la premi`ere r`egle.
Premi`ere r`egle :Si toutes les coordonn´ees du vecteur−(c0)> de la ligne0 sont n´egatifs ou nuls alors une solution `a coordonn´ees positives ou nulles au syst`eme (3.2) minimisant z est solution au probl`eme. Dans ce cas, l’algorithme du simplexe s’arrˆete et renvoie une telle solution. Sinon, une variable associ´ee `a un coefficient strictement positif de −(c0)> est choisie comme nouvelle variable `a pivoter.
L’algorithme du simplexe va donc d´erouler ses it´erations jusqu’`a obtenir la premi`ere ligne du tableau n’ayant que des coefficients n´egatifs ou nuls (sauf pourb00).
Comme annonc´e pr´ec´edemment, les it´erations de l’algorithme du simplexe sont obtenues par r´esolution d’un syst`eme d’´equations lin´eaires par la m´ethode du pivot de Gauss. Le choix de la ligne `a pivoter d´efini la deuxi`eme r`egle. Nous la pr´esentons maintenant sur un exemple.
Exemple 1 : On souhaite r´esoudre le probl`eme de programmation lin´eaire suivant :
min
−x1−x2:
2x1+x2 ≤4 x1+ 2x2 ≤3 x1, x2≥0
(Ex1)
La premi`ere ´etape consiste `a ´ecrire ce probl`eme sous la forme standard. Ici il suffit d’introduire deux slack variables :x3 etx4. Le probl`eme est ´equivalent au probl`eme suivant
min
−x1−x2:
2x1+x2+x3 = 4 x1+ 2x2+x4 = 3 x1, x2, x3, x4≥0
On ´ecrit le probl`eme standard sous forme de tableau : z x1 x2 x3 x4 b
1 1 1 0 0 0
0 2 1 1 0 4
0 1 2 0 1 3
Une solution positive minimisant z `a ce syst`eme d’´equation est donn´ee par x1 = 0, x2 = 0, x3 = 4 etx4 = 3
pour laquelle on obtient une valeur de la fonction objective z = 0. Les solutions positives mini- misant z aux tableaux de l’algorithme sont appel´eessolution de base faisable (SBF). Cette solution est-elle solution du probl`eme (Ex1) ? Non, car il y a des coefficients strictement positifs (associ´es auxxi) dans laligne 0 et donc d’apr`es laPremi`ere r`egle, on peut encore faire d´ecroˆıtre z.
L’´etape suivante se d´ecompose en deux phases :
1. choix d’une variable `a pivoter : on prend n’importe quelle variable xi associ´ee `a un coef- ficient strictement positif dans la ligne 0. Par exemple, ici, on choisi x1 comme variable pivot. Cette variable est appel´eevariable entrante.
2. choix d’une ligne `a pivoter : on peut faire pivoterx1 soit dans la ligne 1 soit dans la ligne 2. Ici, dans l’exemple introductif, on va essayer les deux possibilit´es pour en d´eduire une r`egle (la deuxi`eme r`egle de la m´ethode de simplexe) sur le choix de la ligne `a pivoter.
Premi`ere possibilit´e : faire pivoterx1 dans la ligne 1. On applique la m´ethode du pivot de Gauss sur la variablex1 dans la premi`ere ligne. On obtient alors le tableau suivant :
z x1 x2 x3 x4 b
1 0 1/2 −1/2 0 −2
0 1 1/2 1/2 0 2
0 0 3/2 −1/2 1 1
Ce tableau a pour solution de base faisable (SBF)
x2= 0, x3= 0, x1 = 2 etx4= 1.
Id´ee : Les SBF sont trouv´ees rapidement, en prenant xi = 0 quand xi est associ´e `a un coefficient non nul dans la ligne0. Ensuite, les valeurs des autres variables sont obtenues grˆace aux ´equations des lignes suivantes A0x=b0.
La SBF est-elle une solution au probl`eme (Ex1) ? Non, car il reste encore un coefficient stric- tement positif dans la ligne 0 (celui de x2). On relance une it´eration de l’algorithme. Mais avant
¸ca, on regarde ce qui se passe si on choisit la deuxi`eme ligne comme ligne `a pivoter pour x1. Deuxi`eme possibilit´e : faire pivoterx1 dans la ligne 2. On applique la m´ethode du pivot de Gauss sur la variablex1 dans la deuxi`eme ligne. On obtient alors le tableau suivant :
z x1 x2 x3 x4 b
1 0 −1 0 −1 −3
0 0 −3 1 −2 −2
0 1 2 0 1 3
Ce tableau a pour solution de base faisable (SBF)
x2 = 0, x4 = 0, x3 =−2 et x1 = 3.
Cette solution n’est pas faisable : elle n’est pas dans l’ensemble de contrainte imposantx≥0 (ici x3 =−2). Donc, faire pivoterx1 dans la deuxi`eme ligne n’est pas la bonne strat´egie. On va donc choisir de faire pivoterx1 dans la premi`ere ligne.
Comment pourrions-nous savoir quelle ligne choisir pour faire pivoter la variable entrante avant mˆeme d’appliquer la m´ethode du pivot de Gauss ? Pour cela, on va faire en sorte de ne pas introduire de coefficients n´egatifs dans le vecteur b0 de la derni`ere colonne du tableau grˆace au test du ratio minimum. Ce qui constitue la deuxi`eme r`egle de l’algorithme du simplexe.
Deuxi`eme r`egle : Etant donn´´ e une variable entrante xi. On choisi de faire pivoter xi dans la ligne `∈ {1, . . . , m} du tableau pour l’indice ` ayant le plus petit ratio :
b0`
a0`i = valeur du coefficient de droite
coefficient de la variable entrante de la ligne quand le ”coefficient de la variable entrante de la ligne” est strictement positif.
Pour le probl`eme (Ex1), ce ratio est pour la ligne 1 :ratio= 4
2 pour la ligne 2 :ratio= 3 1.
La ligne qui a donc le plus petit ratio est la ligne 1, c’est donc elle qui est choisie pour faire pivoter la variable entrantex1.
On reprend l’exemple (Ex1) apr`es avoir fait pivoter x1 dans la ligne 1. On sait d’apr`es la premi`ere r`egle que la SBF obtenue n’est pas solution de (Ex1) car il y a un coefficient non nul dans la ligne 0. La derni`ere variable `a avoir un coefficient non nul dans la ligne 0 est x2. C’est cette variable qui est choisie comme variable `a pivoter.
Dans quelle ligne faire pivoter la variable entrante x2? Pour cela, on applique la deuxi`eme r`egle en calculant le ratio pour chaque ligne :
pour la ligne 1 :ratio= 2
1/2 pour la ligne 2 :ratio= 1 3/2.
C’est la deuxi`eme ligne qui a le plus petit ratio. C’est donc cette ligne qui est choisie pour faire pivoterx2. On obtient finalement le tableau suivant pour l’algorithme du simplexe :
z x1 x2 x3 x4 b
1 1 1 0 0 0
0 2 1 1 0 4
0 1 2 0 1 3
1 0 1/2 −1/2 0 −2
0 1 1/2 1/2 0 2
0 0 3/2 −1/2 1 1
1 0 0 −1/3 −1/3 −7/3
0 1 0 2/3 −1/3 5/3
0 0 1 −1/3 2/3 2/3
pivot variable :x1 pivot ligne : 1
(ratio test : ligne 1→4/2, ligne 2 →3/1) pivot variable :x2
pivot ligne : 2
(ratio test : ligne 2→2/(1/2), ligne 2→1/(3/2)) les coefficients desxi sont tous n´egatifs ou nuls SBF : x3 =x4 = 0, x1 = 5/3, x2 = 2/3
On s’arrˆete `a la deuxi`eme it´eration car tous les coefficients des xi sont n´egatifs dans la ligne 0. La SBF de cette derni`ere ´etape est solution du probl`eme (Ex1) : une solution `a (Ex1) est donc z =−7/3 atteinte pour x1 = 5/3 et x2 = 2/3. On remarque aussi que les slack variables valent x3 =x4 = 0. Ce qui signifie que les deux conditions associ´ees sont satur´ees : c`ad la solution est atteinte au sommet du polytope des contraintes (du probl`eme (Ex1) et non de sa forme standard) solution du syst`eme
2x1+x2 = 4 x1+ 2x2 = 3.
Le sommet de l’ensemble des contraintes du probl`eme standard associ´e `a (Ex1) o`u est atteint la solution du probl`eme est (5/3,2/3,0,0). On ne peut pas repr´esenter ce polytope qui vit en dimension 4 n´eanmoins on peut repr´esenter celui du probl`eme original (Ex1) (qui est sous forme non standard) et pour lequel l’espace des contraintes est un polytope de R2 (pour lequel les propositions3.3 et3.1sont aussi valides).
z= 0 z=−2 z=−7/3
x1+ 2x2 = 3 2x1+x2= 4
Id´ee : Le choix des variables pivots s’effectue parmi toutes les variables affect´ees d’un coefficient strictement positif dans la ligne0. En g´en´eral, ce choix n’est pas tr`es important (on pourra v´erifier que si x2 est choisi en premier pivot dans l’exemple pr´ec´edent, l’algorithme prendra un autre chemin sur les sommets mais le nombre d’it´erations reste le mˆeme ici). Cependant, dans certains cas, bien choisir son pivot peut ´eviter des ph´enom`enes de cycle. Pour cela certaines r`egles ont
´et´e propos´ees ; comme par exemple, la r`egle de Bland qui consiste `a choisir la variable entrante d’indice minimal.
D´efinition 3.4. Les variables qui apparaissent dans une seule ´equation, c`ad dont la colonne associ`ee est une colonne de la matrice identit´e sont appel´ees variables de base. Les autres variables sont appel´ees variables non-basique.
En particulier, `a chaque ´etape, la variable entrante (c`ad la variable qui va ˆetre pivot´ee) est une variable non-basique qui sera transform´ee en variable basique par le pivot de Gauss. Au cours de ce processus, il y a, en g´en´erale, une variable de base qui sera transform´ee en variable non-basique ; cette variable est appel´eevariable sortante.
Exemple 2 (solutions multiples) : Dans l’exemple pr´ec´edent, il n’y avait qu’un unique sommet solution. Cependant dans certain cas, il se peut qu’une face enti`ere du polytope des contraintes soit solution. Dans ce cas, l’algorithme du simplexe renvoie bien une solution mais choisir diff´erentes variables pivot lors des it´erations peut retourner diff´erentes solutions.
Pour illustrer ce ph´enom`ene, on reprend l’exemple pr´ec´edent en modifiant l´eg`erement la fonc- tion objectif tout en gardant le mˆeme espace des contraintes.
On souhaite r´esoudre le probl`eme de programmation lin´eaire suivant :
min
−x1−x2
2 :
2x1+x2 ≤4 x1+ 2x2 ≤3 x1, x2≥0
(Ex2)
qu’on r´e´ecrit sous forme standard directement au format d’un tableau : On ´ecrit le probl`eme standard sous forme de tableau.
z x1 x2 x3 x4 b
1 1 1/2 0 0 0
0 2 1 1 0 4
0 1 2 0 1 3
On choisit x1 comme variable pivot et la ligne 1 comme ligne pivot (test du ratio donne ligne 1 : 4/2 et ligne 2 : 3/2). On obtient le tableau suivant :
z x1 x2 x3 x4 b
1 0 0 −1/2 0 −2
0 1 1/2 1/2 0 2
0 0 3/2 −1/2 1 1
Tous les coefficients associ´es auxxide la ligne 0 sont n´egatifs ou nuls alors, d’apr`es la premi`ere r`egle, l’algorithme s’arrˆete et une SBF fournit une solution au probl`eme. Ici z =−2 est atteint pour x3 = 0 et pourx1, x2, x4 v´erifiant le syst`eme d’´equations :
x1+ (1/2)x2= 2 (3/2)x2+x4 = 1.
En fait la valeurz=−2 est atteinte en tout points de n5
3 +x4
3 ,2 3−2x4
3
∈(R+)2:x4≥0 o
qui d´ecrit une face du polytope des contraintes de (Ex2).
z= 0 z=−2
x1+ 2x2 = 3 2x1+x2= 4
Face solution
Figure 4 – Algorithme du simplexe pour un probl`eme avec solutions multiples.
Exemple 3 (variable d´eg´en´er´ee) : Dans certain cas, une variable de base vaut 0 pour la SBF. Dans ce cas, la fonction objectif stagne. En g´en´eral, cela ne fait que retarder l’algorithme du simplexe. Cependant, dans certain cas, un ph´enom`ene de cycle se produit ; c`ad l’algorithme alterne entre deux ou plus tableau identique sans jamais sortir de cette boucle. On peut ´eviter ces cycles par exemple en utilisant la r`egle de Bland.
L’apparition d’une variable d´eg´en´er´ee peut ˆetre due `a la pr´esence d’une contrainte redondante c`ad qu’elle peut ˆetre retir´ee de la liste des contraintes sans changer le probl`eme.
Pour illustrer ce ph´enom`ene, on consid`ere le probl`eme de programmation lin´eaire suivant :
min
−2x1−x2:
3x1+x2 ≤6 x1−x2 ≤2
x2 ≤3 x1, x2 ≥0
(Ex3)
On ´ecrit ce probl`eme sous forme standard et on lance l’algorithme du simplexe (sous forme de tableaux) :
z x1 x2 x3 x4 x5 b
1 2 1 0 0 0 0
0 3 1 1 0 0 6
0 1 −1 0 1 0 2
0 0 1 0 0 1 3
1 0 3 0 −2 0 −4
0 0 4 1 −3 0 0
0 1 −1 0 1 0 2
0 0 1 0 0 1 3
1 0 0 −3/4 1/4 0 −4
0 0 1 1/4 −3/4 0 0
0 1 0 1/4 1/4 0 2
0 0 0 −1/4 3/4 1 3
1 0 0 −2/3 0 −1/3 −5
0 0 1 0 0 1 3
0 1 0 1/3 0 −1/3 1
0 0 0 −1/3 1 4/3 4
pivot variable :x1 pivot ligne : 2
(ratio test : ligne 1→6/3, ligne 2 →2/1) pivot variable :x2
pivot ligne : 1
(ratio test : ligne 1→0/4, ligne 3 →3/1) pivot variable :x4
pivot ligne : 3
(ratio test : ligne 2→2/(1/4), ligne 3→3/(3/4))
les coefficients des xi sont tous n´egatifs ou nuls dans la ligne 0
SBF : x3 =x5= 0, x2 = 3 , x1 = 1,x4 = 4
On obtient donc la solution z = −5 atteinte en x1 = 1, x2 = 3. Il y a deux slack variables
´
egales `a z´ero :x3 =x5 = 0 donc les contraintes associ´ees sont satur´ees en la solution : 3x1+x2= 6 etx2 = 3.
En d´etaillant les SBF `a chaque ´etape, on se rend compte que la fonction objectif a stagn´e en z=−4 entre l’´etape 1 et 2 :
1. Etape 0 : SBFx1= 0, x2 = 0, x3 = 6, x4= 2, x5 = 3 etz= 0 2. Etape 1 : SBFx1= 2, x2 = 0, x3 = 0, x4= 0, x5 = 3 etz=−4 3. Etape 2 : SBFx1= 2, x2 = 0, x3 = 0, x4= 0, x5 = 3 etz=−4 4. Etape 3 : SBFx1= 1, x2 = 3, x3 = 0, x4= 4, x5 = 0 etz=−5.
Cela est due `a la pr´esence d’une variable d´eg´en´er´ee :x2= 0 alors quex2 est une variable de base.
Cela n’a fait que retarder l’algorithme sans l’empˆecher de converger vers la solution. Dans ce cas, la d´eg´en´erescence dex2 est due `a une contrainte redondante : ”x1−x2 ≤3” est impliqu´ee par les autres contraintes.
z= 0 z=−4 z=−5
x2= 3 3x1+x2= 6
x1−x2 = 2
Figure 5 – Algorithme du simplexe pour un probl`eme avec une variable d´eg´en´er´ee.
Dans cet exemple, la contrainte ”x1−x2 ≤2” est d´eg´en´er´ee. Elle ne fait que ralentir l’algorithme du simplexe dans notre cas. Dans d’autres cas, elle peut ˆetre responsable d’un comportement cyclique.
Id´ee : L’algorithme du simplexe n’assure pas une d´ecroissance stricte de la fonction objectif mais seulement sa d´ecroissance. Il se peut alors que si une variable est d´eg´en´er´ee ou si la fonction objectif est constante sur une face (non r´eduite `a un point) de l’ensemble des contraintes alors l’algorithme va s’enfermer dans un cycle infini. Il existe plusieurs tactiques pour ´eviter ces ph´e- nom`enes ; la r`egle de Bland en est une.
Exemple 4 (solution non born´ee) : Dans certain cas, l’ensemble des contraintes est non born´e et la fonction objectif peut alors d´ecroˆıtre jusqu’`a l’infini. Ces situations sont tr`es facilement identifiable par l’algorithme du simplexe.
Pour illustrer ce ph´enom`ene, on consid`ere le probl`eme de programmation lin´eaire suivant :
min
−2x1−x2:
−x1+x2 ≤1 x1−2x2 ≤2 x1, x2 ≥0
(Ex4)
On ´ecrit ce probl`eme sous forme standard et on lance l’algorithme du simplexe (sous forme de tableaux) :
z x1 x2 x3 x4 b
1 2 1 0 0 0
0 −1 1 1 0 1
0 1 −2 0 1 2
1 0 5 0 −2 −4
0 0 -1 1 1 3
0 1 -2 0 1 2
Figure6 – Comportement de l’algorithme du simplexe pour une solution non born´ee A la premi`ere ´etape,x1 a ´et´e choisi comme variable pivot et la ligne pivot est la deuxi`eme. A l’´etape suivante, la seule variable pivot `a choisir est x2 (c’est la seule avec un coefficient positif
`
a la ligne 0). La deuxi`eme r`egle nous dit alors de choisir la ligne selon le test du ratio. Mais ici tous les coefficients dex2 sont n´egatifs dans les lignes 1 et 2. Il n’y a donc pas de ratio `a calculer.
L’id´ee est que pour ce tableau on peut faire croˆıtrex2`a l’infini tout en restant dans l’ensemble des contraintes et avoir une fonction objective qui tend vers −∞. On est dans le cas d’une solution non-born´ee et l’algorithme du simplexe le d´etecte quand le seul pivot possible est associ´e `a des coefficients tous n´egatifs dans la colonne du pivot autres que la ligne 0.
En regardant l’ensemble des contraintes pour ce probl`eme, on voit en effet qu’il n’est pas born´e.
−x1+x2= 1
x1−2x2 = 2
Figure7 – Algorithme du simplexe pour un probl`eme `a ensemble de contraintes non born´ee.
Id´ee : Il y a trois situations possibles :
1. l’ensemble des contraintes est vide, alors il n’y a pas de SBF.
2. l’ensemble des contraintes est non born´e et il existe une solution non born´ee. Alors la fonction objectif tend vers −∞.
3. Il y a une solution finie et dans ce cas soit elle est unique, soit il y a une face enti`ere du polytope des contraintes qui est solution.
Dans tous les cas, l’algorithme du simplexe identifie la situation et renvoie une solution au pro- bl`eme. Les seuls cas probl´ematiques sont dus aux cycles et dans certains cas pathologiques le nombre d’it´eration peut ˆetre tr`es grand. Mais en pratique, l’algorithme du simplexe est tr`es per- formant.
3.3 Deux autres exemples pour s’entraˆıner
Exemple 5 : R´esoudre le probl`eme de programmation lin´eaire suivant par la m´ethode du simplexe sous forme de tableaux :
min
−4x1−x2+x3 :
x1+ 3x3 ≤6 3x1+x2+ 3x3 ≤9
x1, x2, x3 ≥0
z x1 x2 x3 x4 x5 b
1 4 1 1 0 0 0
0 1 0 3 1 0 6
0 3 1 3 0 1 9
1 0 −1/3 −3 0 −4/3 −12
0 0 −1/3 2 1 −1/3 3
0 1 1/3 1 0 1/3 3
Donc la solution estz=−12 atteinte enx1= 3, x2 = 0 etx3 = 0.
3x1+x2+ 3x3 = 9
x1+ 3x3 = 6
Figure8 – Simplexe des contraintes du probl`eme sous forme non-standard.
Exemple 6 : R´esoudre le probl`eme de programmation lin´eaire suivant par la m´ethode du simplexe sous forme de tableaux :
min
−2x1−3x2−4x3 :
3x1+ 2x2+x3 ≤10 2x1+ 5x2+ 3x3 ≤15
x1, x2, x3 ≥0
z x1 x2 x3 x4 x5 b
1 2 3 4 0 0 0
0 3 2 1 1 0 10
0 2 5 3 0 1 15
1 −2/3 −11/3 0 0 −4/3 −20
0 7/3 1/3 0 1 −1/3 5
0 2/3 5/3 1 0 1/3 5
Donc la solution estz=−20 atteinte enx1= 0, x2 = 0 etx3 = 5.
3x1+ 2x2+x3= 10
2x1+ 5x2+ 3x3 = 15
Figure9 – Simplexe des contraintes du probl`eme sous forme non-standard.