Vous êtes sur la page 1sur 73

Optimisation linaire

Recherche oprationnelle
GC-SIE
Algorithme du simplexe
Algorithme du simplexe Michel Bierlaire 3
Rappel
Si un problme de programmation
linaire en forme standard possde une
solution optimale, alors il existe une
solution de base admissible qui soit
optimale.
Mthode du simplexe : passer dune
solution de base admissible lautre, en
rduisant le cot.
Algorithme du simplexe Michel Bierlaire 4
Problme
avec
A matrice m lignes n colonnes
lignes de A linairement indpendantes
On note P = {x Ax = b, x > 0}
Problme en forme standard
Algorithme du simplexe Michel Bierlaire 5
Direction admissible
Ide de lalgorithme:
Soit x
0
une solution de base admissible
Pour k=0,. faire
Trouver x
k+1
sol. de base adm. voisine
telle que c
T
x
k+1
< c
T
x
k
Jusqu ce quaucune sol. de base adm. voisine
namliore lobjectif.
On trouve alors un minimum local
En programmation linaire,
minimum local = minimum global.
Algorithme du simplexe Michel Bierlaire 6
Direction admissible
Soit x e P. On va se dplacer le long
dune direction d e IR
n
.
d doit nous maintenir dans P
Dfinition :
Soit x un lment dun polydre P. Un
vecteur d e IR
n
est appel direction
admissible en x sil existe un scalaire
positif u tel que
x + ud e P
Algorithme du simplexe Michel Bierlaire 7
Direction admissible
direction
admissible
direction
admissible
direction non
admissible
toutes les
directions sont
admissibles
Algorithme du simplexe Michel Bierlaire 8
Direction admissible
Soit x une solution de base admissible
Soient B(1),,B(m) les indices des
variables de base
Soit B=[A
B(1)
A
B(m)
] la matrice de base
associe
x
i
= 0 pour toute variable hors base
x
B
=(x
B(1)
,,x
B(m)
) = B
-1
b
Algorithme du simplexe Michel Bierlaire 9
Direction admissible
Comment dterminer x+ud ?
Choisir une variable j hors base (qui
vaut 0)
Augmenter sa valeur jusqu u, tout en
gardant les autres variables hors base
zro. Donc :
d
j
= 1
d
i
= 0, i = j, i indice hors base
Algorithme du simplexe Michel Bierlaire 10
Direction admissible
Il faut rester admissible :
A(x + u d) = b
Ax + u Ad = b
x est admissible, et donc Ax = b
Pour que x + u d soit admissible, il faut
que
Ad = 0
Algorithme du simplexe Michel Bierlaire 11
Direction admissible
Algorithme du simplexe Michel Bierlaire 12
Direction admissible
Nous obtenons:
d
B
= - B
-1
A
j
La direction d ainsi obtenue est appele j
ime

direction de base
Elle garantit que les contraintes dgalit
seront vrifies lorsque lon sloigne de x le
long de d.
Quen est-il des contraintes de non ngativit
?

Algorithme du simplexe Michel Bierlaire 13
Direction admissible
Variables hors-base:
x
j
tait nulle et devient positive
x
i
, i=j, restent zro
Variables de base.
Si x est une solution de base admissible
non dgnre, alors x
B
> 0.
Lorsque u est suffisamment petit
x
B
+ u d
B
> 0
Algorithme du simplexe Michel Bierlaire 14
Direction admissible
Variables de base.
Si x est une solution de base admissible
dgnre, alors d nest pas toujours une
direction admissible.
Cest le cas lorsque quune variable de base x
i
= 0
et que la composante correspondante d
i
de la
direction est ngative.

Si x est une solution de base admissible non
dgnre, la j
ime
direction de base en x est
admissible, pour tout j indice de base.
Algorithme du simplexe Michel Bierlaire 15
Conditions doptimalit
Quels sont les impacts sur la fonction
objectif ?
c
T
(x + u d) = c
T
x + u c
T
d
c
T
d : taux de modification du cot le
long de d

( ) ( )
1 1
n m
T T
i i B i B i j B B j
i i
c d c d c d c c d c
= =
= = + = +

Algorithme du simplexe Michel Bierlaire 16
Conditions doptimalit
Comme d
B
= - B
-1
A
j
, on obtient
c
T
d = c
j
- c
T
B
B
-1
A
j
Interprtation intuitive :
en augmentant x
j
, cela cote c
j
- c
T
B
B
-1
A
j
est le prix payer pour vrifier Ax=b.
Dfinition :
Soit x une solution de base, soit B la matrice de base
associe, et c
B
le vecteur de cot pour les variables
de base. Pour chaque j, le cout rduit est dfini par
c
j
= c
j
- c
T
B
B
-1
A
j

Algorithme du simplexe Michel Bierlaire 17
Conditions doptimalit
Note :
le cot rduit a t introduit pour les
variables hors base.
il est dfini pour toutes les variables.
que vaut-il pour les variables de base ?
Algorithme du simplexe Michel Bierlaire 18
Conditions doptimalit
Soit B(i) indice dune variable en base.
Le cot rduit est c
B(i)
- c
T
B
B
-1
A
B(i)

B = [A
B(1)
A
B(m)
]
B
-1
[A
B(1)
A
B(m)
] = I
B
-1
A
B(i)
= e
i
(i
ime
colonne de I)

c
B(i)
= c
B(i)
- c
T
B
B
-1
A
B(i)
=

c
B(i)
- c
T
B
e
i

= c
B(i)
- c
B(i)
= 0
Le cot rduit des variables de base est nul




Algorithme du simplexe Michel Bierlaire 19
Conditions doptimalit
Thorme :
Considrons une solution de base
admissible x, associe une matrice
de base B. Soit c le vecteur de cots
rduits correspondant.
1. Si c > 0, alors x est optimal
2. Si x est optimal et non dgnre,
alors c > 0.
Algorithme du simplexe Michel Bierlaire 20
Dveloppement de la
mthode du simplexe
Supposons quaucune solution de base
admissible ne soit dgnre.
Nous sommes une solution de base
admissible x
Les cots rduits c
j
ont t calculs
pour les variables hors-base.
Sils sont tous positifs, x est solution
optimale. On arrte.
Algorithme du simplexe Michel Bierlaire 21
Dveloppement de la
mthode du simplexe
Sinon, il existe une variable hors base x
j

dont le cot rduit c
j
est ngatif.
La j
ime
direction de base est donc une
direction admissible le long de laquelle
le cot diminue.
La variable j devient positive. On dit
quelle entre dans la base.
Algorithme du simplexe Michel Bierlaire 22
Dveloppement de la
mthode du simplexe
On veut aller le plus loin possible le long de
d, en restant admissible.
On cherche u* tel que
u* = max {u > 0 x+ud e P}
Comment calculer u* ?
Comme d est admissible, la seule manire de
quitter P est lorsquune variable devient
ngative.
Algorithme du simplexe Michel Bierlaire 23
Dveloppement de la
mthode du simplexe
Si d > 0, alors x + u d > 0 pour tout u.
plus u est grand, plus le cot diminue
u* = +
le problme est non born
Sil existe i tel que d
i
< 0, la contrainte
x
i
+ u d
i
> 0
devient
u s -x
i
/ d
i

u* doit vrifier toutes les contraintes
u*= min
{i d
i
<0}
(-x
i
/d
i
)

Algorithme du simplexe Michel Bierlaire 24
Dveloppement de la
mthode du simplexe
x
1
x
2
d

x

x+u
2
d
x+u
1
d
u*=u
1

Algorithme du simplexe Michel Bierlaire 25
Dveloppement de la
mthode du simplexe
Notes :
Si x
i
est une variable hors base,
d
i
> 0 (car d
i
=0 ou d
i
= 1)
Il suffit donc de regarder les variables de
base
u*= min
{i =1,,m d
B(i)
<0}
(-x
B(i)
/d
B(i)
)
Comme x est non dgnr, x
B(i)
> 0 pour
tout i=1,m. Et donc, u* > 0.

Algorithme du simplexe Michel Bierlaire 26
Exemple
Algorithme du simplexe Michel Bierlaire 27
Exemple
Base : B(1)=1 B(2)=2
Algorithme du simplexe Michel Bierlaire 28
Exemple
Calcul des cots rduits
Uniquement pour les variables hors
base (x
3
et x
4
)
Ngatif. La 3
ime
direction de base rduit
le cot.
Algorithme du simplexe Michel Bierlaire 29
Exemple
3
ime
direction de base: d
3
= 1 d
4
= 0
Algorithme du simplexe Michel Bierlaire 30
Exemple
u
1
= -x
1
/d
1
=-1/(-3/2)=2/3
Algorithme du simplexe Michel Bierlaire 31
Exemple
Notes :
Nouvelle solution de base admissible
x
3
remplace x
1
dans la base
A
2
et A
3
correspondent aux variables non
nulles
Base:
Algorithme du simplexe Michel Bierlaire 32
Dveloppement de la
mthode du simplexe
Si d est la j
ime
direction de base
Si k est lindice tel que
u*= -x
B(k)
/d
B(k)
=
min
{i =1,,m d
B(i)
<0}
(-x
B(i)
/d
B(i)
)
On dit que
x
j
entre dans la base
x
B(k)
sort de la base

Algorithme du simplexe Michel Bierlaire 33
Dveloppement de la
mthode du simplexe
Thorme :
Les colonnes A
B(i)
, i=k, et A
j
sont linairement
indpendantes, et donc B est une matrice de
base.
Le vecteur y=x+ u*d est une solution de base
admissible associe B.

Algorithme du simplexe Michel Bierlaire 34
Dveloppement de la
mthode du simplexe
Une itration de la mthode du simplexe :
1. Soit une base B=[A
B(1)
,,A
B(m)
] et x une
solution de base admissible associe B.
2. Calculer les cots rduits pour chaque
indice j hors base:
c
j
= c
j
- c
T
B
B
-1
A
j
.

Sils sont tous non ngatifs, la solution
courante est optimale. STOP.
Algorithme du simplexe Michel Bierlaire 35
Dveloppement de la
mthode du simplexe
3. Choisir j tel que c
j
< 0, et calculer
d
B
= -B
-1
A
j
.
Si aucune composante de d
B
nest
ngative, alors le cot optimal est
infini. STOP.
4. Calculer
u*= -x
B(k)
/d
B(k)
=
min
{i =1,,m d
B(i)
<0}
(-x
B(i)
/d
B(i)
)


Algorithme du simplexe Michel Bierlaire 36
Dveloppement de la
mthode du simplexe
5. Former une nouvelle base en
remplaant A
B(k)
par A
j
.
Si y est la nouvelle solution de base
admissible, les valeurs des nouvelles
variables de base sont
y
j
= u*
y
B(i)
= x
B(i)
+ u* d
B(i)
, i=k.

Algorithme du simplexe Michel Bierlaire 37
Dveloppement de la
mthode du simplexe
Thorme :
Supposons que lensemble admissible est non
vide, et que chaque solution de base
admissible est non dgnre. Alors, la
mthode du simplexe se termine aprs un
nombre fini ditrations. A la fin, on obtient
soit une solution optimale
soit une direction d telle que Ad=0, d>0 et c
T
d
< 0. Le cot optimal est alors -.
Algorithme du simplexe Michel Bierlaire 38
Dveloppement de la
mthode du simplexe
Notes :
Que se passe-t-il si lalgorithme est utilis en
prsence de solutions de base admissibles
dgnres ?
1. Si la solution de base admissible courante x est
dgnre, il se peut que u* soit gal zro. Cest
le cas si une variable de base x
i
= 0 et que la
composante correspondante d
i
< 0.
Cela nempche cependant pas de dfinir une
nouvelle base, mme si la solution de base
admissible nest pas modifie.
Algorithme du simplexe Michel Bierlaire 39
Dveloppement de la
mthode du simplexe
2. Mme si u* > 0, il se peut que plus dune
variables de base deviennent zro. La
nouvelle solution de base admissible sera
donc dgnre.
Il peut tre utile de changer de base sans
changer la solution de base admissible.
Mais il faut viter de cycler.
Algorithme du simplexe Michel Bierlaire 40
Dveloppement de la
mthode du simplexe
Exemple :
B(1)=5, B(2)=6, B(3)=7
B
-1
= B = I
x
B
=B
-1
b=b
c
B
Algorithme du simplexe Michel Bierlaire 41
Dveloppement de la
mthode du simplexe
Cot rduit pour j = 1.





La variable x
1
va rentrer en base.

Algorithme du simplexe Michel Bierlaire 42
Dveloppement de la
mthode du simplexe
Direction :
u*=0
Algorithme du simplexe Michel Bierlaire 43
Dveloppement de la
mthode du simplexe
Note :
Etape 3: Choisir j tel que c
j
< 0.
Lalgorithme ne spcifie pas quelle variable
choisir pour rentrer dans la base.
Plusieurs rgles existent.
Retenons la rgle de Bland :
Parmi les j tels que c
j
< 0, choisir lindice le plus
petit
Algorithme du simplexe Michel Bierlaire 44
Tableau du simplexe
Il y a plusieurs manires dimplmenter
lalgorithme du simplexe. La mthode du
tableau est lune des plus efficaces.
Ide :
Maintenir en permanence :
B
-1
[A b] = [B
-1
A
1
B
-1
A
n
B
-1
b]
Cette matrice sappelle le tableau du
simplexe
La dernire colonne contient les valeurs des
variables en base.
Les autres colonnes permettent de calculer c
j

et d
B

Algorithme du simplexe Michel Bierlaire 45
Tableau du simplexe
Exemple :
Algorithme du simplexe Michel Bierlaire 46
Tableau du simplexe
B(1)=4, B(2)=5, B(3)=6
B=B
-1
=I
Algorithme du simplexe Michel Bierlaire 47
Tableau du simplexe
B
-1
A
B
-1
b
Algorithme du simplexe Michel Bierlaire 48
Tableau du simplexe
Dfinitions :
Lors dune itration du simplexe :
Si j est lindice de la variable qui entre en
base, la colonne B
-1
A
j
est appele colonne du
pivot.
Si la variable de base B(k) sort de la base, la
ligne k du tableau est appele ligne du pivot.
Llment qui se trouve sur la ligne du pivot
et la colonne du pivot est appel le pivot.
Algorithme du simplexe Michel Bierlaire 49
Tableau du simplexe
Notes :
Pour les variables en base :
B
-1
A
B(i)
= e
i
Si i est lindice dune variable en base,
la colonne B(i) du tableau est e
i
. Elle
contient uniquement des zros, sauf en
ligne i dont llment est 1.
Algorithme du simplexe Michel Bierlaire 50
Tableau du simplexe
B
-1
A
B
-1
b
B(1)=4, B(2)=5, B(3)=6
Algorithme du simplexe Michel Bierlaire 51
Tableau du simplexe
Lecture du tableau :
= x
5
= x
4
= x
6
Algorithme du simplexe Michel Bierlaire 52
Tableau du simplexe
On augmente le tableau avec une ligne
relative aux cots :
[c
T
c
T
B
B
-1
A -c
T
B
B
-1
b]
-c
T
B
B
-1
b = -c
T
B
x
B
=

-c
T
x
- fonction objectif
c
T
c
T
B
B
-1
A
cots rduits
Algorithme du simplexe Michel Bierlaire 53
Tableau du simplexe
Le tableau complet sera donc

B
-1
A B
-1
b
c
T
c
T
B
B
-1
A -c
T
B
B
-1
b
Algorithme du simplexe Michel Bierlaire 54
Tableau du simplexe
B
-1
A
B
-1
b
c
T
c
T
B
B
-1
A

-c
T
B
B
-1
b
Algorithme du simplexe Michel Bierlaire 55
Tableau du simplexe
Appliquons lalgorithme
1. Solution de base admissible :
B(1)=4, B(2)=5, B(3)=6
(0,0,0,20,20,20)
2. Cots rduits:
dernire ligne du tableau
3. Choisir un cot rduit ngatif
c
1
= -10, c
2
= -12, c
3
=-12
Rgle de Bland: j = 1
-d
B
= B
-1
A
j
= colonne j = (1 2 2)
T


Algorithme du simplexe Michel Bierlaire 56
Tableau du simplexe
4. Calcul de u*
u
1
=20/1
u
2
=20/2
u
3
=20/2
-d
B
x
B
u*=10
k=2
Algorithme du simplexe Michel Bierlaire 57
Tableau du simplexe
5. Former une nouvelle base
Ancien tableau B
-1
[A b]
Nouveau tableau B
-1
[A b]
Ide : trouver une matrice Q telle que

-1 -1
QB =B
-1
QB B=I
Algorithme du simplexe Michel Bierlaire 58
Tableau du simplexe
Dfinition :
Soit une matrice C. Lopration consistant
ajouter un multiple dune ligne cette mme
ligne ou une autre ligne est appele une
opration lmentaire de ligne.
Cela revient pr-multiplier C par une
matrice carre Q, construite de manire
adquate.
Algorithme du simplexe Michel Bierlaire 59
Tableau du simplexe
Multiplier la 3ime ligne par 2 et
lajouter la premire
Algorithme du simplexe Michel Bierlaire 60
Tableau du simplexe
Dune manire gnrale,
multiplier la ligne j par |
et lajouter la ligne i = j
revient pr-multiplier par Q = I + D
ij

o D
ij
contient uniquement des 0, sauf la ligne
i, colonne j, qui contient |.
Q est inversible
Une suite doprations lmentaires de ligne
revient donc prmultiplier par une matrice
inversible.
Algorithme du simplexe Michel Bierlaire 61
Tableau du simplexe
B = [A
B(1)
,,A
B(k-1)
,A
B(k)
,A
B(k+1)
,,A
B(m)
]
B = [A
B(1)
,,A
B(k-1)
,A
j
,A
B(k+1)
,,A
B(m)
]
B
-1
A
B(i)
= e
i
B
-1
B = [e
1
,,e
k-1
,B
-1
A
j
,e
k+1
,,e
m
]
Si u = B
-1
A
j
, on a

Algorithme du simplexe Michel Bierlaire 62
Tableau du simplexe
Comment transformer cette matrice en
lidentit ?
Utilisons des oprations lmentaires de
ligne.
1. Pour tout i = k, on ajoute la k
ime
ligne
multiplie par u
i
/u
k
2. On divise la k
ime
ligne par u
k

Cela revient prmultiplier par une matrice
Q
QB
-1
B = I et donc QB
-1
=B
-1

Algorithme du simplexe Michel Bierlaire 63
Tableau du simplexe
Si on applique les oprations lmentaires de
ligne suivantes la matrice B
-1
, on obtient
la matrice B
-1
:
1. Pour tout i = k, on ajoute la k
ime
ligne multiplie
par u
i
/u
k
2. On divise la k
ime
ligne par u
k


Ces oprations sont donc appliques au
tableau du simplexe.
Cela sappelle un pivotage.

Algorithme du simplexe Michel Bierlaire 64
Tableau du simplexe
Reprenons lexemple :
B(1)=4, B(2)=5, B(3)=6
x
T
= (0, 0, 0, 20, 20, 20)
u* = 10
d
T
= (1, 0, 0, -1, -2, -2)
y
T
= (x + u*d)
T
= (10, 0, 0, 10, 0, 0)
x
1
rentre en base
x
5
sort de base
Attention : y est sol. de base adm. dgnre.
Algorithme du simplexe Michel Bierlaire 65
Tableau du simplexe
Algorithme du simplexe Michel Bierlaire 66
Tableau du simplexe
Dernire ligne du tableau
Avant pivotage
[-c
B
T
B
-1
b c
T
-c
B
T
B
-1
A]
[0 c
T
] c
B
T
B
-1
[b A]
Aprs pivotage, on peut montrer :
[0 c
T
] c
B
T
B
-1
[b A]

Algorithme du simplexe Michel Bierlaire 67
Tableau du simplexe
Algorithme
1. Soit une matrice de base B, une solution de
base admissible x et le tableau du simplexe
associs.
2. Examiner les cots rduits dans la dernire
ligne du tableau.
Sils sont tous non ngatifs, la solution de
base admissible courante est optimale.
STOP.
Sinon, choisir j tel que c
j
< 0
Algorithme du simplexe Michel Bierlaire 68
Tableau du simplexe
3. Soit u=B
-1
A
j
, la j
ime
colonne du tableau.
Si aucune composante de u nest positive,
le cot optimal est -. STOP.
4. Pour chaque i tel que u
i
> 0, calculer x
B(i)
/u
i
.
Soit k lindice de la ligne correspondant au
rapport le plus petit. La colonne A
B(k)
sort de
la base. La colonne A
j
rentre en base.
5. Effectuer des oprations lmentaires de
ligne pour que la colonne du pivot ne
contienne que des zros, sauf
lemplacement du pivot, qui doit tre 1.
Algorithme du simplexe Michel Bierlaire 69
Tableau du simplexe
u
1
=20/1
u
2
=20/2
u
3
=20/2
u
1
=10
u
2
=10
Attention : Bland nest pas respect ici
Dgn-
rescence
Algorithme du simplexe Michel Bierlaire 70
Tableau du simplexe
u
1
=20/3
u
3
=4
u
1
=10
u
2
=10
Algorithme du simplexe Michel Bierlaire 71
Tableau du simplexe
u
1
=20/3
u
3
=4
Algorithme du simplexe Michel Bierlaire 72
Tableau du simplexe
Lecture du tableau :
= x
1
= x
3
= x
2
Algorithme du simplexe Michel Bierlaire 73
Tableau du simplexe
Lorsque certaines solutions de base
admissibles sont dgnres, lalgorithme
peut cycler. Pour lempcher, rgle de Bland.
Variable entrant en base: choisir lindice j le
plus petit tel que le cot rduit est ngatif
Variable sortant de base : en cas dgalit
pour u*, choisir la variable dindice minimale.