Académique Documents
Professionnel Documents
Culture Documents
Algorithme du simplexe
ce qui donne
xB = B −1 b + B −1 N(−xN )
Si xB ≥ 0 alors (xB , 0) est une solution admissible de P. Deux idées à retenir pour la
suite :
– une solution de base admissible est un sommet du polyhèdre d éfini par les contraintes.
– Le simplexe va faire passer d’une solution de base admissible à une autre qui améliore
la fonction objectif.
1
2 CHAPITRE 3. ALGORITHME DU SIMPLEXE
B −1 N(xN ) ≤ B −1 b
xN ≥ 0
a1 . . . am am+1 . . . an
1 0 . . 0 b1
!
0 1 0 . 0 xB .
=
. . . . . A′ xN .
. . . . 0 bm
0 . . 0 1
x1 . . . . xm xm+1 . . xn
1 0 . . 0 0 b1
′
0 1 0 . 0 0 A .
. . . . . . = .
0 0 . . 0 1 bm
−xm+1 . . −xn
x1 b1
. = . A′
. .
xm bm
Les variables x1 , . . . , xm sont les variables de bases et les variables xm+1 , . . . , xn sont les
variables hors base. Pour avoir la base admissible, on met les variables hors bases égales à
0 et la valeur des variables de base se lit sur le tableau : xi = bi . La base est admissible ssi
bi > 0. Par abus de language, on identifiera la base et ses variables de base.
Le pivotage consiste à choisir une variable xj à faire entrer dans la base (donc choisir
une colonne j) à choisir une variable à faire sortir de la base xr (donc choisir une ligne r)
ce qui correspond à un pivot ar,j qui doit être non-nul.
Le pivotage donne un tableau tel que :
4 CHAPITRE 3. ALGORITHME DU SIMPLEXE
Max z = cB xB + cN xN
xB = B −1 b + B −1 N(−xN )
Après remplacement
Max z = cB B −1 b − B −1 NxN + cN xN
Le premier terme s’écrit z0 = cB B −1 b et on écrit le second terme comme Σj6∈B (zj −cj )(−xj ).
On a la forme tableau
Exemple :
Le pivotage consiste à
1. Choisir une variable à faire rentrer dans B (une colonne j)
2. Choisir une variable à faire sortir de B (une ligne r)
3. Effectuer le pivotage
Il faut de plus
* Garder l’admissibilite de la base
* Ameliorer la fonction objectif (au moins ne pas la dégrader).
3.4. ALGORITHME DU SIMPLEXE. 5
La valeur de la fonction objectif dans la nouvelle base après pivotage sur αr,j est
On veut z0′ ≥ z0 . Pour maintenir l’admissibilité on a choisi αr,j > 0 et on sait que br ≥ 0,
donc il faut et il suffit que :
zj − cj < 0
Remarque : on ne choisit evidemment jamais de pivot sur la ligne de la fonction objectif.
Le système d’équation est vrai pour toutes les valeurs xj . Prenons xj = 0 pour
j 6= j0 . On a z = z0 + (zj0 − cj0 )(xj0 ) donc > z0 Pour une valeur xj0 quelconque
.
xi = bi + (zj0 − cj0 )(αi,j0 ) donc ≥ 0
.
positive on a une base admissible et une valeur de la fonction objectif et celle ci tend
vers +∞ quand xj0 tend vers +∞.
6 CHAPITRE 3. ALGORITHME DU SIMPLEXE
– On suppose ∀j tel que zj − cj ≥ 0 pour une base B. On considere une autre base
admissible B ′ qui donne une valeur z0′ a la fonction objectif. Le tableau obtenu pour
la base B définit une égalité valable pour toutes les valeurs des variables.
avec zj −cj > 0. Les variables xj de B’ ont une valeur positive vj car B ′ est admissible.
Par conséquent la valeur de z pour B ′ vaut z0 + Σj6∈B (zj − cj )(−vj ) ≤ z0 . Donc B
réalise l’optimum.
3.4.3 Terminaison
Règle de Bland : lors d’un pivotage, la variable qui entre est celle d’indice minimal
parmi celles qui peuvent rentrer et la variable qui sort est celle d’indice minimal parmi
celles qui peuvent sortir.
IB indices de la base B.
Pour un pivotage en r, j (xr sort, xj entre) on a :
et donc br = 0.
et si br vaut 0, la valeur des autres bi ne change pas. Donc tous les bi pour une variable i
qui sortira valent 0. On peut éliminer les équations des variables qui restent toujours dans
la base.
On suppose que tous les bi sont 0 ainsi que z0 .
Tableau
On peut choisir les valeurs de certains xi dans les équations données par les tableaux T1 , T2
de manière à obtenir des égalités interessantes. On choisit xi = ξi tel que :
* ξp = 1
* ξi = 0 pour i 6∈ IB , i 6= p
* ξi donné par le tableau T2 sinon c.a.d.
* ξi = −αi,p ≥ 0
* ξq = −αq,p < 0
D’après T1 on a :
z = (zp − cp ) (−yp )
0< = −1 > 0
contradiction.
8 CHAPITRE 3. ALGORITHME DU SIMPLEXE
−x1 −x2
z 0 −5 −8
e1 2 1 1
e2 = 0 1 −2
e3 1 −1 4
Pivotage : on peut choisir la première ou la deuxième colonne. On choisit la seconde et on
calcule min(2/1,1/4) donc pivot 4.
−x1 −e3
z 2 −7 2
e1 7/4 5/4 −1/4
e2 = 1/2 1/2 1/2
x2 1/4 −1/4 1/4
On vérifie que z a bien augmenté. Nouveau pivot obligatoirement sur colonne 1 et on
calcule min((7/4)/(5/4),(1/2)/(1/2)) d’ou ligne 2
−e2 −e3
z 9 14 9
e1 1/2 −5/2 −3/2
x1 = 1 2 1
x2 1/2 1/2 1/2
Tous les coefficients zj − cj sont positifs ou nuls, donc arret sur l’optimum donné par la
base B = {e1 , x1 , x2 }, la valeur z = 9, et les variables de base e1 = 1/2, x1 = 1, x2 = 1/2,
les variables hors base valant 0.
Optimum infini
Max z = x1 + x2
−x1 + x2 ≤ 2
x2 ≤ 3
x1 , x2 ≥ 0
3.5. EXEMPLES DE DÉROULEMENT DU SIMPLEXE 9
Tableau
−x1 −x2
z 0 −1 −1
e1 2 −1 1
e2 3 0 1
On choisit colonne 2 et min(2/1,3/1) donne la ligne 1.
−x1 −e1
z 2 −2 1
x2 2 −1 1
e2 1 1 −1
Colonne 1 et min(1/1) donne la ligne 2
−e2 −e1
z 4 2 −1
x2 3 −1 0
x1 1 1 −1
Colonne 2 obligatoirement mais pas de pivot sur cette colonne donc optimum infini (ce
qu’on voyait sur la colonne 1 dès le départ).
Cas dégénéré
Max z = 2x1 + x2
x1 + 2x2 ≤ 2
x1 + x2 ≤ 2
x1 , x2 ≥ 0
Les variables d’écart donnent une base admissible :
−x1 −x2
z 0 −2 −1
e1 2 1 2
e2 2 1 1
On choisit la colonne 1 et on calcule min(2/1,2/1) les deux lignes sont possibles, on prend
la première.
−e1 −x2
z 4 2 3
x1 2 1 1
e2 0 −1 −1
On est à l’optimum avec une base dégénérée : une des variables de base vaut 0. On pourrait
refaire un pivotage (non autorisé dans le déroulement normal car le pivot serait négatif et
le coefficient de x2 dans z est positif) pour echanger e2 et x2 : dans ce cas la valeur de x2
resterait 0 et celle de z resterait 4.