Cours 2 : algorithme du simplexe
Christophe Gonzales
LIP6 – Universit´
e Paris 6, France
Plan du cours
1Rappels sur l’algorithme vu la semaine derni`
ere
2D´
efinition de l’algorithme du simplexe
3Interpr´
etation g´
eom´
etrique
4Crit `
eres de choix pour les variables entrantes
Cours 2 : algorithme du simplexe 2/29
Rappels sur le cours de la semaine derni`
ere (1/10)
Forme standard
max
n
X
j=1
cjxj
s.c.
n
X
j=1
aij xjbi(i=1,2,...,m)
xj0(j=1,2,...,n)
Algorithme de r ´
esolution (1/2)
1Ajouter des variables d’´
ecart xn+1,...,xn+m:
xn+i=bi
n
X
j=1
aij xj(i=1,2,...,m)
z=
n
X
j=1
cjxj
Cours 2 : algorithme du simplexe 3/29
Rappels sur le cours de la semaine derni`
ere (2/10)
Algorithme de r ´
esolution (2/2)
2premi`
ere solution r´
ealisable : x0= (0,...,0,b1,b2,...,bm)
variables en base :xn+1,...,xn+m,hors base :x1,...,xn
3s’il existe un coefficient positif dans z, soit xila variable
correspondante, sinon aller en 8
4calculer la valeur maximale de xide mani`
ere `
a ce que les
variables en base restent positives ou nulles. Soit xjune
des variables en base qui s’annule
5faire entrer xien base, faire sortir xjde la base
6exprimer les variables en base en fonction des variables
hors base
7retourner en 3
8on est `
a l’optimum. Les variables en base d´
efinissent la
solution optimale
Cours 2 : algorithme du simplexe 4/29
Rappels sur le cours de la semaine derni`
ere (3/10)
Probl`
eme `
a r´
esoudre :
max x1+5x2+x3
s.c.x1+3x2+x33
x1+3x32
2x1+4x2x34
x1+3x2x32
x10,x20,x30
Premi`
ere ´
etape : ajouter des variables d’´
ecart :
max x1+5x2+x3
s.c.x1+3x2+x3+x4=3
x1+3x3+x5=2
2x1+4x2x3+x6=4
x1+3x2x3+x7=2
x10,x20,x30,x40,x50,x60,x70
Cours 2 : algorithme du simplexe 5/29
Rappels sur le cours de la semaine derni`
ere (4/10)
Expression de zet des variables en base en fonction des
variables hors base :
x4=3x13x2x3
x5=2+x13x3
x6=42x14x2+x3
x7=2x13x2+x3
z=x1+5x2+x3
variables en base : x4,x5,x6,x7
=solution r´
ealisable = (0,0,0,3,2,4,2)
3coefficients positifs dans z=x1,x2et x3
=choix (au hasard) de faire rentrer x1en base
Cours 2 : algorithme du simplexe 6/29
Rappels sur le cours de la semaine derni`
ere (5/10)
x4=3x13x2x3
x5=2+x13x3
x6=42x14x2+x3
x7=2x13x2+x3
z=x1+5x2+x3
4calcul de la valeur optimale de x1:
augmenter x1=augmenter z
ne pas trop augmenter x1afin que x4,x5,x6,x7, restent 0
(x4)3x10
(x5)2+x10
(x6)42x10
(x7)2x10
=x13, x1≥ −2, x12, x12=x1=2
=variable `
a sortir de la base : x6ou x7
Cours 2 : algorithme du simplexe 7/29
Rappels sur le cours de la semaine derni`
ere (6/10)
x4=3x13x2x3
x5=2+x13x3
x6=42x14x2+x3
x7=2x13x2+x3
z=x1+5x2+x3
5choix (au hasard) de faire sortir x7de la base
=x1=23x2+x3x7
6expression des variables en base en fonction des variables
hors base :
x4=12x3+x7
x5=43x22x3x7
x6=2x2x3+2x7
x1=23x2+x3x7
z=2+2x2+2x3x7
Cours 2 : algorithme du simplexe 8/29
Rappels sur le cours de la semaine derni`
ere (7/10)
x4=12x3+x7
x5=43x22x3x7
x6=2x2x3+2x7
x1=23x2+x3x7
z=2+2x2+2x3x7
3coefficients positifs dans z:x2et x3
=choix (au hasard) : rentrer x3en base
=choix de la variable `
a sortir de la base :
(x4)12x30
(x5)42x30
(x6)0x30
(x1)2+x30
=x3=min{bi/coeff de x3:coeff 6=0}
x3rentre en base, mais sa valeur est ´
egale `
a 0
=la valeur de la fonction objectif ne change pas !
Cours 2 : algorithme du simplexe 9/29
Rappels sur le cours de la semaine derni`
ere (8/10)
6expression des variables en base en fonction des variables
hors base :
x4=14x2+2x63x7
x5=47x2+2x65x7
x3=2x2x6+2x7
x1=2x2x6+x7
z=2+6x22x6+3x7
3coefficients positifs dans z:x2et x3
=choix (au hasard) : rentrer x2en base :
(x4)14x20
(x5)47x20
(x3)2x20
(x1)2x20
=x4sort de la base
Cours 2 : algorithme du simplexe 10/29
Rappels sur le cours de la semaine derni`
ere (9/10)
6expression des variables en base en fonction des variables
hors base :
x2=1
41
4x4+1
2x63
4x7
x5=9
4+7
4x43
2x6+1
4x7
x3=1
21
2x4+1
2x7
x1=7
4+1
4x43
2x6+7
4x7
z=7
23
2x4+x63
2x7
36rentrer x6en base et sortir x1:
x2=5
61
3x11
6x41
6x7
x5=1
2+x1+3
2x43
2x7
x3=1
21
2x4+1
2x7
x6=7
62
3x1+1
6x4+7
6x7
z=14
32
3x14
3x41
3x7
=z: coeffs n´
egatifs =optimum
Cours 2 : algorithme du simplexe 11/29
Rappels sur le cours de la semaine derni`
ere (10/10)
En r´
esum´
e :
plusieurs variables peuvent ˆ
etre candidates `
a entrer en base
=crit `
ere de choix `
a d´
efinir
plusieurs variables peuvent ˆ
etre candidates `
a sortir de la base
=crit `
ere de choix `
a d´
efinir
d´
eg´
en´
erescence : certaines variables entrant en base peuvent
avoir pour valeur 0 =la fonction objectif n’augmente pas
=´
eviter que l’algorithme ne boucle
Cours 2 : algorithme du simplexe 12/29
Notation en tableau (1/5)
Principe : placer toutes les variables du mˆ
eme cˆ
ot´
e
x4=3x13x2x3
x5=2+x13x3
x6=42x14x2+x3
x7=2x13x2+x3
z=x1+5x2+x3
x1+3x2+x3+x4=3
x1+3x3+x5=2
2x1+4x2x3+x6=4
x1+3x2x3+x7=2
z+x1+5x2+x3=0
Cours 2 : algorithme du simplexe 13/29
Notation en tableau (2/5)
La notation en tableau peut s’appliquer `
a toutes les ´
etapes :
Avant pivot :
dictionnaire tableau
x4=3x13x2x3
x5=2+x13x3
x6=42x14x2+x3
x7=2x13x2+x3
z=x1+5x2+x3
x1+3x2+x3+x4=3
x1+3x3+x5=2
2x1+4x2x3+x6=4
x1+3x2x3+x7=2
z+x1+5x2+x3=0
Apr`
es pivot : x1entre et x7sort
dictionnaire tableau
x4=12x3+x7
x5=43x22x3x7
x6=2x2x3+2x7
x1=23x2+x3x7
z=2+2x2+2x3x7
2x3+x4x7=1
3x2+2x3+x5+x7=4
2x2+x3+x62x7=0
x1+3x2x3+x7=2
z+2x2+2x3x7=2
Cours 2 : algorithme du simplexe 14/29
Notation en tableau (3/5)
Pivot en termes de dictionnaires
Faire entrer xiet sortir xj:
supp. que xjest d´
efini `
a gauche des «=»sur la k`
eme ligne
1exprimer xien fonction des autres variables sur la k`
eme
ligne
2sur toutes les autres lignes, remplacer les xipar cette
expression
Pivot en termes de tableaux
Faire entrer xiet sortir xj:
1diviser la seule ligne dont le coeff de xjest 6=0 (k`
eme
ligne) par le coeff associ´
e`
axisur cette ligne
=le coeff de xidevient 1
2pour toute autre ligne r6=k, soustraire ari fois la k`
eme
ligne =le coeff de xisur ces lignes devient 0
Cours 2 : algorithme du simplexe 15/29
Notation en tableau (4/5)
Application du pivot directement sur les tableaux :
x1+3x2+x3+x4=3
x1+3x3+x5=2
2x1+4x2x3+x6=4
x1+3x2x3+x7=2
z+x1+5x2+x3=0
pivot : x1entre et x7sort
2x3+x4x7=1
3x2+2x3+x5+x7=4
2x2+x3+x62x7=0
x1+3x2x3+x7=2
z+2x2+2x3x7=2
ligne o`
ux7est d´
efini : 4`
eme ligne
Cours 2 : algorithme du simplexe 16/29
Notation en tableau (5/5)
D’un point de vue informatique, stocker uniquement les
nombres, pas les chaˆ
ınes de caract`
eres xi:
2x3+x4x7=1
3x2+2x3+x5+x7=4
2x2+x3+x62x7=0
x1+3x2x3+x7=2
z+2x2+2x3x7=2
=tableau stock ´
e sous forme informatique :
0 0 2 1 0 0 1 1
0 3 2 0 1 0 1 4
02 1 0 0 1 2 0
1 3 1 0 0 0 1 2
0 2 2 0 0 0 12
Cours 2 : algorithme du simplexe 17/29
Algorithme du simplexe : 1`
ere version
1examiner s’il existe un nombre positif sur la derni`
ere ligne
(except´
e la derni`
ere colonne qui vaut z). S’il n’y en a pas,
aller en 6. sinon, soit jl’index d’une de ces colonnes
2pour chaque ligne, soit sle nombre dans la colonne la plus
`
a droite et rle nombre dans la colonne j. D´
eterminer la
ligne iayant le plus petit ratio s/r0. Si les rde toutes
les lignes sont n´
egatives ou nulles, aller en 7
3diviser la ligne ipar son coefficient r
4pour toutes les lignes 6=i, soit kle nombre stock´
e sur cette
ligne `
a la colonne j. soustraire `
a la ligne kfois la ligne i
5revenir en 1
6on est `
a l’optimum. Les nombres ´
egaux `
a 0 sur la derni`
ere
ligne (except´
e la derni`
ere colonne) d´
eterminent la solution
optimale.
7Le probl`
eme n’est pas born´
e, i.e., le max de la fonction
objectif est +.
Cours 2 : algorithme du simplexe 18/29
Interpr´
etation g´
eom´
etrique de l’algorithme (1/8)
max x1+3x2
s.c.
x24
x13x21
2x13x25
x1x23
2x1x27
x1+2x211
x10,x20
Cours 2 : algorithme du simplexe 19/29
Interpr´
etation g´
eom´
etrique de l’algorithme (2/8)
x2+x3=4
x13x2+x4=1
2x13x2+x5=5
x1x2+x6=3
2x1x2+x7=7
x1+2x2+x8=11
z+x1+3x2=0
base : x3,x4,x5,x6,x7,x8
=Pivot : on fait entrer x1et sortir x4
Cours 2 : algorithme du simplexe 20/29
1 / 8 100%