• Aucun résultat trouvé

M´ethode du simplexe

N/A
N/A
Protected

Academic year: 2022

Partager "M´ethode du simplexe"

Copied!
16
0
0

Texte intégral

(1)

Introduction au Compressed sensing.

M´ethode du simplexe

Guillaume Lecu´e1

esum´e

Dans les deux chapitres qui se suivent, nous pr´esentons deux types d’algorithmes pour 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.

(2)

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.

(3)

4. Le variables qui ne sont pas contraintes `a ˆetre positives sont remplac´ees par deux variables : x1 =x+1 −x1 o`u x+1, x1 ≥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).

(4)

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)> ∈Rpi ≥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.

(5)

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.

(6)

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.

(7)

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.

(8)

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.

(9)

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).

(10)

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.

(11)

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.

(12)

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.

(13)

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) :

(14)

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.

(15)

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

(16)

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.

Références

Documents relatifs

Proposez des implantations des algorithmes de Kruskal et de Prim permettant de r´esoudre le probl`eme de l’arbre de poids minimum dans cette classe de graphes et analysez-en

Ecrire le processus it´ eratif de Newton pour cette ´ equation.. quel est dans ce cas l’ordre de convergence de la

La trisection de l’angle, qui consiste ` a partager un angle donn´ e en trois angles ´ egaux, est l’un des trois grands probl` emes de la g´ eom´ etrie grecque antique (avec

Dans le contexte d’enquˆ ete sur la pˆ eche sportive, la s´ election par la m´ ethode du cube semble ˆ etre une excellente alternative d’´ echantillonnage... R´

Si le vecteur des prix marginaux pour cette base r´ealisable n’a que des composantes n´egatives, la solution de base r´ealisable correspondant `a la base r´ealisable courante est

Depuis sa formulation de 1930 ` a 1940, et le d´ eveloppement de la m´ ethode de simplexe par Danzig en 1940, des chercheurs dans diff´ erents do- maines : ´ economie, finance,

Le syst` eme admet un d´ eterminant diff´ erent de 0 (il vaut − 34), il admet donc une unique solution qui est la solution nulle (et on n’a pas besoin des formules de Cramer

Examen d’analyse num´ erique.. Aucun document n’est