Vous êtes sur la page 1sur 13

Programmation numerique en genie chimique

Gilles Savard

La programmation lin
eaire (r
ef : V. Chv
atal, Linear
Programming, W.H. Freeman, 1983.)

Nous definissons le probl`eme de programmation lineaire dans ce chapitre. Apr`es la presentation


de deux exemples et de quelques definitions, nous presentons `a la section 4.2 les principales
idees sous-jacentes `a lalgorithme du simplexe. La section 4.3 presente de facon formelle cet
algorithme.

4.1

Introduction `
a la programmation lin
eaire

Nous considerons dans un premier temps un probl`eme dintroduction classique de la


programmation lineaire.
4.1.1

Exemple 1 : le probl`
eme de la di`
ete

1. Le probl`eme :
On desire determiner un menu quotidien de facon `a minimiser les co
uts, tout en satisfaisant `a certains besoins elementaires. En particulier, le menu doit contenir au moins :
2000 kcal
55 gr de proteine
800 mg de calcium

Programmation numerique en genie chimique


Au plus

Gilles Savard

4 portions/jour davoine
3
de poulet
2
doeufs
8
de lait
2
de tarte aux cerises
2
de porc et f`eves

On pourrait tenter de determiner un menu par essai erreur. Par exemple, choisir 8
portions de lait et 2 portions de tarte aux cerises satisfait les demandes nutritives
pour un co
ut total de $1.12. Le nombre de possibilites est eleve et il est preferable de
resoudre le probl`eme `a laide dun mod`ele.
2. Le mod`ele
Nous definissons dabord les variables de decision, cest-`a-dire linformation que lon
desire obtenir.
(a) Les variables de decision :
x1 = # de portion davoine
x2 = # de portion de poulet
x3 = # de portion doeufs
x4 = # de portion de lait
x5 = # de portion de tarte aux cerises
x6 = # de portion de porc et f`eves
Ces variables ne sont pas libres ; elles sont contraintes par les besoins nutritionnels.
Exprimees sous forme mathematique on obtient :

On decide de choisir parmi 6 aliments dont les valeurs nutritives et les co


uts sont indiques dans le tableau suivant :

(b) Les contraintes :


i. Satisfaction minimale des besoins

Portion energie (kcal) Proteine (gr) Calcium (mg) Cents/portion


Avoine
28 gr.
110
4
2
3
Poulet
100 gr.
205
32
12
24
Oeufs
2 larges
160
13
54
13
Lait
237 cl.
160
8
285
9
Tarte aux cerises 170 gr.
420
4
22
20
Porc et f`eves
260 gr.
260
14
80
19

110x1 + 205x2 + 160x3 + 160x4 + 420x5 + 260x6 2000


4x1 + 32x2 + 13x3 + 8x4 + 4x5 + 14x6 55
2x1 + 12x2 + 54x3 + 285x4 + 22x5 + 80x6 800
ii. Les bornes sur les variables de decisions
0
0
0
0
0
0

Afin deviter des situations extremes (par exemple 10 portions de porc et f`eves satisfont
`a ses exigences nutritives), on impose les limites suivantes :

x1
x2
x3
x4
x5
x6

4
3
2
8
2
2

Maintenant ces variables doivent etre dirigees vers un but, vers un objectif.

Programmation numerique en genie chimique

Gilles Savard

(c) Lobjectif :
Soit (x1 , x2 , . . . , x6 ) un menu satisfaisant aux contraintes, alors le co
ut total dun
tel menu est
3x1 + 24x2 + 13x3 + 9x4 + 20x5 + 19x6 .
Comme on veut minimiser les co
uts, lobjectif est :
min 3x1 + 24x2 + 13x3 + 9x4 + 20x5 + 19x6 .

3x1 + 24x2 + 13x3 + 9x4 + 20x5 + 19x6


110x1 + 205x2 + 160x3 + 160x4 + 420x5 + 260x6
4x1 + 32x2 + 13x3 + 8x4 + 4x5 + 14x6
2x1 + 12x2 + 54x3 + 285x4 + 22x5 + 80x6
0 x1
0 x2
0 x3
0 x4
0 x5
0 x6

4.1.2

Gilles Savard

Rendement (%)
Brut#1 Brut#2
Essence
80
44
Keros`ene
5
10
Mazout leger
10
36
Residu
5
10
Co
ut de production 0.50
1.00
$/baril

Production
maximale (baril/jour)
24000
2000
6000

2. Le mod`ele
Dans lordre, nous identifions les variables de decisions, les contraintes et lobjectif.

(d) Le mod`ele complet :


En resume, le mod`ele mathematique est
min
s.c.

Programmation numerique en genie chimique

2000
55
800
4
3
2
8
2
2

(a) Les variables de decision :


p1 = # baril/jour de brut#1 raffine
p2 = # baril/jour de brut#2 raffine
x1 = # baril/jour dessence produits
x2 = # baril/jour de keros`ene produits
x3 = # baril/jour de mazout leger produits
x4 = # baril/jour de residu produits
Ces variables ne sont pas libres ; elles sont liees par les contraintes technologiques.
Exprimees sous forme mathematique on obtient :
(b) Les contraintes :
i. Contraintes de balance :

Exemple 2 : la raffinerie

1. Le probl`eme :
On desire etablir le plan de production optimale dune raffinerie produisant quatre
produits finis (essence, keros`ene, mazout leger et residu) `a partir de deux types de
petrole brut. Les coefficients techno-economiques pertinents sont donnes dans les tables
suivantes :

Produit
Achat Brut #1
Brut #2
Vente Essence
Keros`ene
Mazout leger
Residu

$/baril
24
15
36
24
21
10

0.80p1 + 0.44p2
0.05p1 + 0.10p2
0.10p1 + 0.36p2
0.05p1 + 0.10p2

=
=
=
=

x1
x2
x3
x4

essence (# baril/jour)
keros`ene (# baril/jour)
mazout leger (# baril/jour)
residu (# baril/jour).

ii. Les bornes sur la capacite :


x1
x2
x3
p1 , p2

24000
2000
6000
0.

(c) Lobjectif :
On veut ici produire le plan de production optimale, cest-`a-dire celui qui maximise
les profits :
maximiser {profit = revenu des ventes - achat des bruts - co
ut de production}

Programmation numerique en genie chimique

Gilles Savard

Sous forme mathematique on obtient :

Programmation numerique en genie chimique

Gilles Savard

D
efinition 4.2 Si b, c1 , c2 , . . . , cn sont des constantes reelles, alors lequation

Revenu des ventes = 36x1 + 24x2 + 21x3 + 10x4


Achat des bruts = 24p1 + 15p2
Co
ut de production = 0.5p1 + 1.0p2

n
!

c j xj = b

j=1

est appelee une equation lineaire.

(d) Le mod`ele complet :


max 36x1 + 24x2 + 21x3 + 10x4
s.c.
0.80p1 + 0.44p2
0.05p1 + 0.10p2
0.10p1 + 0.36p2
0.05p1 + 0.10p2
x1
x2
x3
p1 , p2

(24p1 + 15p2 ) (0.5p1 + 1.0p2 )


=
=
=
=

x1
x2
x3
x4
24000
2000
6000
0.

n
!

j=1

et

j=1

max
s.c.

24000
2000
6000
0.

x1 x 2
x1 x2 + x3
x2 + x 3
x1

Ces deux mod`eles sont des probl`emes de programmation lineaire ou encore des programmes lineaires.
La programmation lin
eaire

D
efinition 4.1 Si c1 , c2 , . . . , cn sont des constantes reelles, la fonction f (x) definie par
f (x1 , x2 , . . . , xn ) = c1 x1 + c2 x2 + . . . + cn xn =

n
!

j=1

est une fonction lineaire.


Par exemple :
f (x1 , x2 ) = 3x1 + 4x2 est une fonction lineaire
f (x1 , x2 ) = 3x1 + 5x2 + x1 x2 nest pas une fonction lineaire.

cj xj b

x1 + 2x2 + x3

qui est equivalent au precedent.

4.1.3

n
!

Plus generalement, une contrainte lineaire est soit une equation lineaire, soit une inegalite
lineaire. Avec ces definitions, un programme lineaire (PL) consiste en la maximisation (ou la
minimisation) dune fonction lineaire soumise `a un nombre fini de contraintes lineaires. Par
exemple :

8.1p1 + 10.8p2
0.80p1 + 0.44p2
0.05p1 + 0.10p2
0.10p1 + 0.36p2
p1 , p2

c j xj b

sont appelees des inegalites lineaires.

Il est possible ici deliminer les variables x1 , . . . , x4 dans le mod`ele pour obtenir :
max
s.c.

D
efinition 4.3 Si b, c1 , c2 , . . . , cn sont des constantes reelles, alors les equations

c j xj

4
3
6
0

D
efinition 4.4 Un PL sera sous forme standard sil est de la forme :
max
s.c.

"n

j=1 cj xj

"n

j=1

aij xj bi
xj 0

i = 1, . . . , m
j = 1, . . . , n

Remarque : Il est toujours possible de ramener un programme lineaire quelconque sous forme
standard (exercice).
D
efinition 4.5 La fonction lineaire maximisee (ou minimisee) dans un programme lineaire
est appelee fonction objectif.

Programmation numerique en genie chimique

Gilles Savard

Programmation numerique en genie chimique

Gilles Savard

D
efinition 4.6 Une solution (x1 , . . . , xn ) est dite realisable si elle satisfait `a toutes les contraintes (incluant les bornes).

D
efinition 4.9 Un programme lineaire realisable qui na pas de valeur optimale finie est
appele non borne.

D
efinition 4.7 Une solution (x1 , . . . , xn ) est dite optimale si elle est realisable et si elle
maximise la fonction objectif parmi toutes les solutions realisables. La valeur correspondante
de lobjectif est appelee la valeur optimale.

Le theor`eme suivant (qui sera prouve `a la section 3) indique que nous avons couvert tous
les cas.

Remarque : La solution optimale (si elle existe) nest pas necessairement unique.

Th
eor`
eme 4.1 : Dans tout programme lineaire, une seule des eventualites suivantes peut
se presenter :
1. il existe au moins une solution optimale
2. le programme lineaire est non-realisable

On peut se demander sil existe toujours au moins une solution optimale. La reponse est
non ; deux situations peuvent se presenter.
1. Il nexiste pas de solution realisable. Par exemple,
3x1 x2

max
s.c.

x1 + x2 2
2x1 2x2 6
x1 , x 2 0

3. le programme lineaire est non borne.

4.2

La m
ethode du simplexe

Nous voyons dans cette section la methode du simplexe pour la resolution dun programme lineaire. Cette methode, due `a Dantzig, est la premi`ere qui a permis de resoudre un
programme lineaire et constitue encore aujourdhui une des deux approches efficaces pour sa
resolution (nous ne verrons pas dans ce cours les approches de points interieurs qui forment
la deuxi`eme approche). Une description informelle est faite dans cette section. La description
formelle de lalgorithme est presentee `a la section suivante.

Dans ce cas, aucun point (x1 , x2 ) ne satisfait `a toutes les contraintes.


D
efinition 4.8 Un programme lineaire qui na pas de solution realisable est appele
non realisable.

4.2.1

Lid
ee de la m
ethode du simplexe via un exemple

Considerons le programme lineaire sous forme standard suivant :

2. Il nexiste pas de valeur optimale finie. Par exemple :

max 5x1 + 4x2 + 3x3


s.c.
2x1 + 3x2 + x3
4x1 + x2 + 2x3
3x1 + 4x2 + 2x3
x1 , x 2 , x 3

x1 x2

max
s.c.

2x1 + x2 1
x1 2x2 2
x 1 , x2 0

5
11
8
0

(1)

Idee 1 :

Dans ce cas,
Il existe des solutions realisables :
x1 = 1, x2 = 1
x1 = 5, x2 = 0
etc.
Mais pour tout nombre M , il existe une solution realisable (x1 , x2 ) telle que la
fonction objectif prenne une valeur superieure `a M , cest-`a-dire x1 x2 > M .
7

Comme il est co
uteux de verifier la faisabilite dune solution donnee, la methode du simplexe travaille avec un syst`eme dequations lineaires (egalites lineaires). Pour toute solution
realisable x1 , x2 , x3 de (1), il existe un ecart non-negatif ( 0) entre le membre de gauche et
le membre de droit de chaque contrainte. Par exemple, considerons la premi`ere contrainte
2x1 + 3x2 + x3 5
et une solution realisable
(x1 , x2 , x3 ) = (1, 0, 1).
8

Programmation numerique en genie chimique

Gilles Savard

Alors, le cote gauche vaut 2(1) + 3(0) + (1) = 3 5 et lecart est 5 3 = 2.


On definit ainsi les variables decarts pour chacune des contraintes. De plus, on nomme
lobjectif z pour obtenir le syst`eme dequations lineaires suivant :
x4
x5
x6
z

(2)

2. On veut maintenant ameliorer cette solution. On voit quil est avantageux daugmenter
x1 et/ou x2 et/ou x3 . Ici, choissisons daugmenter x1 et gardons `a 0 la valeur de x2 et
x3 . La valeur de lobjectif augmentera selon :
x1 > 0.

Par exemple :
Si on pose x1 = 1 (et x2 = x3 = 0) on obtient `a partir de (2)
x4 = 3, x5 = 7, x6 = 5 et la valeur de lobjectif

Avec cette notation, le programme original peut secrire :

z = 5.

Si on pose x1 = 2 (et x2 = x3 = 0) on obtient

max z
s.c. x1 , x2 , x3 , x4 , x5 , x6 0

(3)

x4 = 1, x5 = 3, x6 = 2 et la valeur de lobjectif

z = 10

qui est mieux.


Si on pose x1 = 3 (et x2 = x3 = 0) on obtient

En effet :
pour toute solution realisable de (1) , il existe une solution realisable unique de (3)
((x1 , x2 , x3 ) restant inchanges et (x4 , x5 , x6 ) etant definis par (2)).
pour toute solution realisable de (3) (verifiant (2)), il existe une solution realisable
unique de (1).
Comme les solutions realisables de (1) et (3) sont en correspondance une `a une, les solutions optimales le sont egalement.
Idee 2 :
Dune solution realisable (x1 , . . . , x6 ), trouver une autre solution realisable (
x1 , . . . , x6 )
qui soit meilleure, cest-`a-dire :
5x1 + 4x2 + 3x3 < 5
x1 + 4
x2 + 3
x3
La methode du simplexe consiste donc en une amelioration successive de solutions realisables.
(1`
ere it
eration)
` partir du syst`eme dequation
1. On doit dabord trouver une premi`ere solution realisable. A
(2), une solution realisable est immediate.
En posant `a 0 les variables qui se trouvent du cote droit, on obtient

x4 = 1, x5 = 1, x6 = 1 et la valeur de lobjectif

et on deduit immediatement
z = 0.

z = 15

qui nest plus realisable.


Une question se pose : jusqu`a quelle valeur peut-on augmenter x1 (tout en en gardant
x2 et x3 `a la valeur 0) de facon `a conserver la faisabilite de la solution (cest-`a-dire
garder les variables x4 , x5 , x6 non negatives) ?
La condition x4 0 revient `a :
x4 = 5 2x1 3x2 x3 0
x4 = 5 2x1 0
x1 5/2.
De meme, la condition sur x5 revient `a :
x5 = 11 4x1 x2 2x3 0
x5 = 11 4x1 0
x1 11/4.
Enfin la condition sur x6 donne

x1 = x2 = x3 = 0

Gilles Savard

z = 5x1 + 4 0 + 3 0 = 5x1 > 0,

= 5 2x1 3x2 x3
= 11 4x1 x2 2x3
= 8 3x1 4x2 2x3
=
5x1 +4x2 +3x3

x4 = 5, x5 = 11, x6 = 8 et la valeur de lobjectif

Programmation numerique en genie chimique

x6 = 8 3x1 4x2 2x3 0


x6 = 8 3x1 0
x1 8/3.
10

Programmation numerique en genie chimique

Gilles Savard

De ces 3 bornes (x1 5/2, x1 11/4, x1 8/3) la premi`ere est la plus contraignante.
On peut donc augmenter x1 jusqu`a 5/2. Pour cette valeur de x1 , x4 devient egale `a 0.
On obtient ainsi une 2i`eme solution realisable qui est meilleure que la precedente :
#

x1 = 5/2, x2 = 0, x3 = 0 x4 = 0, x5 = 1, x6 = 1/2
et z = 25/2.

x4
x5
x6
z

(4)

= 5 2x1 3x2 x3
= 11 4x1 x2 2x3
= 8 3x1 4x2 2x3
=
5x1 +4x2 +3x3

La solution courante associee est alors :


x1 = 5/2, x5 = 1, x6 = 1/2 et x2 = 0, x3 = 0, x4 = 0

Donc x3 ne peut pas augmenter plus que x3 = 1 (alors que x6 prend la valeur 0). On obtient
le nouveau syst`eme `a partir de lancien :
Ancien syst`eme :
x1
x5
x6
z

x2 2x3

8 3(5/2 3/2x2 1/2x3 1/2x4 ) 4x2 2x3


1/2
+1/2x2 1/2x3 + 3/2x4

= 5/2 3/2x2 1/2x3 1/2x4


=
1
+5x2
+2x4
= 1/2 +1/2x2 1/2x3 +3/2x4
= 25/2 7/2x2 +1/2x3 5/2x4 .
11

= 5/2 3/2x2 1/2x3 1/2x4


=
1
+5x2
+2x4
= 1/2 +1/2x2 1/2x3 +3/2x4
= 25/2 7/2x2 +1/2x3 5/2x4 .

En isolant la nouvelle variable qui prend une valeur positive,

5(5/2 3/2x2 1/2x3 1/2x4 ) +4x2 +3x3


7/2x2 + 1/2x3 5/2x4 .

Plus simplement, le nouveau syst`eme secrit :


x1
x5
x6
z

x1 = 5/2 3/2x2 1/2x3 1/2x4 0


x1 = 5/2 1/2x3 0
x3 5.

x6 = 1/2 + 1/2x2 1/2x3 + 3/2x4 0


x6 = 1/2 1/2x3 0
x3 1.

et susbtituer dans les trois autres equations. On obtient :

z =
= 25/2

` partir de ce syst`eme, il est possible de voir quaugmenter la variable x3 (en gardant


A
x2 = x4 = 0) ameliorera lobjectif (on na plus avantage `a augmanter x2 ou x4 ). Jusqu`a
quelle valeur peut-on augmenter x3 ?
La condition sur x1

Enfin, la condition

x1 = 5/2 3/2x2 1/2x3 1/2x4

11 4(5/2 3/2x2 1/2x3 1/2x4 )


1
+5x2 + 2x4

(2i`
eme it
eration)

La condition x5 = 1 + 5x2 + 2x4 0 est toujours verifiee lorsque x3 augmente.

On peut exprimer x1 en fonction des variables nulles

x6 =
=

Gilles Savard

de valeur z = 25/2.

Peut-on maintenant ameliorer cette nouvelle solution realisable (4) ? Si oui, quelle
variable augmenter ? Jusqu`a quelle valeur ? Rappelons quil a ete facile de repondre
`a ces questions `a laide du syst`eme dequations (2). Pour ce syst`eme, nous avions
exprim
e les variables positives en fonction des variables nulles.
On doit donc exprimer les nouvelles variables non nulles (x1 , x5 , x6 ) en fonction des
variables nulles (x2 , x3 , x4 ).
` partir de lancien syst`eme
A

x5 =
=

Programmation numerique en genie chimique

on obtient le nouveau syst`eme :

(5)

x1
x5
x3
z

x3 = 1 + x2 + 3x4 2x6

= 2 2x2 2x4 +x6


= 1 +5x2 +2x4
= 1 +x2 +3x4 2x6
= 13 3x2 x4 x6 .
12

(6)

Programmation numerique en genie chimique

Gilles Savard

La solution courante associee est alors :

Programmation numerique en genie chimique

On introduit les variables decarts xn+1 , xn+2 , . . . , xn+m et on note lobjectif par z. On definit
ces variables par

x1 = 2, x3 = 1, x5 = 1 et x2 = 0, x4 = 0, x6 = 0

"

xn+i = bi nj=1 aij xj


"n
z =
j=1 cj xj

de valeur z = 13.
(3i`
eme it
eration)
Quelle variable peut-on augmenter ? Aucune : augmenter x2 ou x4 ou x6 fait diminuer z.
En fait, puisque lon a
z = 13 3x2 x4 x6
la solution est optimale puisque toute autre solution (x1 , x2 , . . . , x6 ) satisfait necessairement
x2 , x4 , x6 0. La valeur optimale est donc z = 13.
Exercice : Petit probl`eme de chimie... On dispose des bouteilles de boisson suivantes :
32
32
32
64

oz
oz
oz
oz

de
de
de
de

Gilles Savard

Fine Whiskey
Whiskey
Vermouth
Gin

`a
`a
`a
`a

$28.00/32
$22.00/32
$14.00/32
$24.00/32

i = 1, . . . , m

Dans le cadre de la methode du simplexe, chaque solution realisable (x1 , . . . , xn ) de (7) est
` chaque iteration, la methode du simplexe
representee par n + m variables non-negatives. A
` chaque solution realisable
fournit une solution realisable qui ameliore la fonction objectif. A
correspond un syst`eme dequations lineaires quon appelle dictionnaire.
Dans un dictionnaire :
1. Toute solution non negative des equations lineaires comprises dans le dictionnaire est
une solution de (7), et vice-versa.
2. Les equations dun dictionnaire doivent exprimer m des variables (x1 , . . . , xn+m ) et la
variable z en fonction des n autres variables.

oz
oz
oz
oz

On appelle un dictionnaire realisable, si en posant `a 0 les variables du cote droit, on obtient


une solution realisable. Ainsi
dictionnaire realisable solution realisable

`a partir desquelles on peut obtenir les melanges suivants :


Par contre
2 oz de Whiskey qui se vend $3.00
2 oz de Whiskey et 1 oz de Vermouth pour obtenir un Manhattan qui se vend $5.00
2 oz de Gin et 1 oz de Vermouth pour obtenir un Martini qui se vend $5.00
2 oz de Gin et 2 oz de Whiskey pour obtenir un Pub Special qui se vend $6.00
En supposant quil soit possible de vendre tous les melanges (cest un 5 `a 7 du . . .),
formuler sous forme de programme lineaire afin de determiner les quantites `a melanger pour
maximiser les revenus. Resoudre le programme lineaire.

4.2.2

solution realisable ' necessairement un dictionnaire realisable


Par exemple, il nexiste pas de dictionnaire pour la solution realisable x1 = 1, x2 = 0, x3 =
1, x4 = 2, x5 = 5, x6 = 3.
Une solution realisable qui peut etre decrite par un dictionnaire est appelee une solution
de base. Ainsi, la methode du simplexe ne consid`ere que les solutions de base (un nombre
fini) et ignore toutes (une infinite) les autres.
D
efinition 4.10 Les variables xj qui se trouvent du cote gauche du dictionnaire sont appelees variables de base.

Dictionnaires

Soit un programme lineaire sous forme standard :


max
s.c.

"n

D
efinition 4.11 Les variables xj qui se trouvent du cote droit du dictionnaire sont appelees
variables hors-base.

j=1 cj xj

"n

j=1

aij xj bi
xj 0
13

i = 1, . . . , m
j = 1, . . . , n.

(7)

Lensemble des variables de base constituent une base. Ainsi, `a chaque iteration la base
change : une variable entre dans la base et une variable sort de la base. Le choix de la variable
dentree est dicte par le desir dameliorer lobjectif z. Le choix de la variable de sortie est
14

Programmation numerique en genie chimique

Gilles Savard

dicte par le desir de conserver toutes les variables non-negatives.

Programmation numerique en genie chimique


Si x3 entre dans la base, alors

La variable de sortie apparat dans la ligne du pivot. On appelle pivotage le processus


permettant de passer dun dictionnaire `a un autre (ou encore, passer dune base `a une autre).

x4 = 2 3/2x3 0 x3 4/3
x5 = 3 5/2x3 0 x3 6/5
x6 =
2 3x3 0 x3 2/3

Un exemple complet :
max 5x1 + 5x2 + 3x3
s.c.
x1 + 3x2 + x3
x1
+ 3x3
2x1 x2 + 2x3
2x1 + 3x2 x3
x 1 , x2 , x3

la variable x6 sort de la base. De la ligne de pivot, on obtient

3
2
4
2
0.

Dictionnaire realisable initial :


x4
x5
x6
x7
z

=
=
=
=
=

3 x1 3x2
x3
2 +x1
3x3
4 2x1 +x2 2x3
2 2x1 3x2
+x3
5x1 +5x2 +3x3 .

Si x1 entre dans la base, alors


x4
x5
x6
x7

= 3 x1
= 2 + x1
= 4 2x1
= 2 2x1

0
0
0
0

x1
x1
x1
x1

3
2
2
1

la variable x7 sort de la base. On obtient lexpression de x1 en fonction des variables horsbases `a partir de la ligne de pivot :
x1 = 1 3/2x2 + 1/2x3 1/2x7 .
Le nouveau dictionnaire est :
x4
x5
x6
x1
z

=
=
=
=
=

2
3
2
1
5

3/2x2 3/2x3 +1/2x7


3/2x2 5/2x3 1/2x7
+4x2
3x3
+x7
3/2x2 +1/2x3 1/2x7
5/2x2 +11/2x3 5/2x7 .

15

Gilles Savard

x3 = 2/3 + 4/3x2 + 1/3x7 1/6x6


et le nouveau dictionnaire
x4
x5
x3
x1
z

=
1 7/2x2
= 4/3 29/6x2
= 2/3 +4/3x2
= 4/3 5/6x2
= 26/3 +29/6x2

+1/2x6
4/3x7
+5/6x6
+1/3x7
1/3x6
1/3x7
1/6x6
2/3x7 11/6x6 .

Si x2 entre dans la base, alors


x4 =
1 7/2x2 0 x2 2/7
x5 = 4/3 29/6x2 0 x2 8/29
x1 = 4/3 5/6x2 0 x2 24/15
la variable x5 sort de la base. De la ligne de pivot, on obtient
x2 = 8/29 8/29x7 + 5/29x6 6/29x5
et le nouveau dictionnaire
x4
x2
x3
x1
z

= 1/29 +28/29x7
= 8/29 8/29x7
= 30/29 1/29x7
= 32/29 3/29x7
=
10
2x7

3/29x6 +21/29x5
+5/29x6 6/29x5
3/29x6 8/29x5
9/29x6 +5/29x5
x6
x5 .

La solution est optimale (aucun avantage `a entrer une variable dans la base). La solution
optimale est x1 = 32/29, x2 = 8/29 et x3 = 30/29, de valeur z = 10.

16

Programmation numerique en genie chimique

4.3

Gilles Savard

Programmation numerique en genie chimique

Gilles Savard

Lalgorithme du simplexe (Partie 2)

On peut resumer lalgorithme du simplexe comme suit :

Etape
1) Initialisation :

former le dictionnaire realisable initial

Etape
2) Iterations :

- choix de la variable dentree


- choix de la variable de sortie
- pivotage

x3 = 3 x1 +x2
x4 =
4 2x1 x2
z =
x1 +x2 .

En posant les variables hors-bases x1 = x2 = 0, on obtient x4 = 4 et x3 = 3 < 0 qui


nest pas une solution realisable. Un programme lineaire sous forme standard
max
s.c.

Etape
3) Crit`ere doptimatlite : si oui, arret
sinon, aller `a letape 2.

Dans ce chapitre, nous allons repondre aux trois questions suivantes :

Considerons lexemple suivant :


x1 + x 2
x1 x 2 3
2x1 + x2 4
x1 , x2 0

"

Programme auxilliaire
Ce probl`eme a :

x1 x2 3
on aurait obtenu le dictionnaire suivant :

i = 1, . . . , m

(8)

min
s.c.

x0
"n

j=1

aij xj x0 bi
xj 0

i = 1, . . . , m
j = 0, . . . , n.

(11)

1. une solution realisable facile `a obtenir (apr`es un pivot) ;


2. le programme initial a une solution realisable si et seulement si le probl`eme auxilliaire
a comme valeur optimale 0.
Donc, pour trouver un dictionnaire realisable initial pour un probl`eme qui nest pas realisable
`a lorigine, on resoud dans un premier temps le programme auxilliaire.
Exemple : Initialisation
Soit le probl`eme :

17

(10)

i = 1, . . . , m
j = 1, . . . , n.

xn+i = bi nj=1 aij xj


"n
z =
j=1 cj xj

Il est facile de construire le dictionnaire realisable suivant :

Par contre, si la premi`ere contrainte avait plutot ete

aij xj bi
xj 0

realisable si et seulement si chaque membre de droite bi est non negatif, ou encore si et


seulement si x1 = x2 = . . . = xn = 0 est une solution realisable de (10). Un tel programme
est alors dit realisable `a lorigine.
Supposons que le programme (10) ne soit pas realisable `a lorigine, cest-`a-dire quau
moins un bi est < 0. On desire construire un dictionnaire realisable. Pour ce faire, on construit
le programme lineaire auxilliaire suivant :

Initialisation

x3 = 3 x1 +x2
x4 = 4 2x1 x2
z =
x1 +x2 .

j=1 cj xj

"n

a un dictionnaire initial

3. Le crit`ere doptimalite est-il toujours satisfait ?

max
s.c.

"n

j=1

1. Avons-nous toujours une solution initiale disponible ? (dictionnaire realisable)


` une iteration donnee, pouvons-nous toujours trouver une variable dentree et de
2. A
sortie afin dobtenir le prochain dictionnaire realisable ?

4.3.1

(9)

18

Programmation numerique en genie chimique

Gilles Savard

Programmation numerique en genie chimique

Gilles Savard

Apr`es la 2i`eme iteration :


x1 x2 + x3

max
s.c.

2x1 x2 + 2x3
2x1 3x2 + x3
x1 + x2 2x3
x1 , x 2 , x 3

4
5
1
0.

(origine non realisable)

x0
2x1 x2 + 2x3 x0
2x1 3x2 + x3 x0
x1 + x2 2x3 x0
x 0 , x1 , x2 , x3

4
5
1
0.

En definissant les variables decart et lobjectif w, on obtient le premier dictionnaire


x4
x5
x6
w

=
4 2x1 +x2 2x3 +x0
= 5 2x1 +3x2 x3 +x0
= 1 +x1 x2 +2x3 +x0
=
x0

qui est non r


ealisable. En general, le 1er dictionnaire est non realisable. Un seul pivot
retablit la realisabilite ; on entre x0 dans la base et on sort la variable la plus negative x5 .
On obtient alors le dictionnaire realisable :
x0
x4
x6
w

=
5 +2x1
=
9
=
4 +3x1
= 5 2x1

3x2 +x3 +x5


2x2 x3 +x5
4x2 +3x3 +x5
+3x2 x3 x5 .

Par la methode du simplexe, on obtient apr`es la 1`ere iteration :


x2
x0
x4
w

=
1 +0.75x1 +0.75x3 +0.25x5 0.25x6
=
2 0.25x1 1.25x3 +0.25x5 +0.75x6
=
7 +1.5x1 2.5x3 +0.5x5
+0.5x6
= 2 +0.25x1 +1.25x3 0.25x5 0.75x6 .

19

= 1.6 0.2x1 +0.2x5 +0.6x6 0.8x0


= 2.2 +0.6x1 +0.4x5 +0.2x6 0.6x0
=
3
1x1
1x6
+2x0
=
x0 .

Le probl`eme auxilliaire est optimal. De plus, la valeur optimale est 0. Donc, on a une solution
realisable au probl`eme initial. On obtient un dictionnaire realisable au probl`eme initial
en eliminant la colonne de x0 et en ecrivant lobjectif en fonction des variables hors-bases.

On ecrit le probl`eme auxilliaire :


max
s.c.

x3
x2
x4
w

z =
x1
x2
+x3
=
x1 (2.2 + 0.6x1 + 0.4x5 + 0.2x6 ) +(1.6 0.2x1 + 0.2x5 + 0.6x6 )
= 0.6 +0.2x1
0.2x5
+0.4x6
On obtient le dictionnaire realisable (pour le probl`eme initial)
x3
x2
x4
z

=
1.6 0.2x1 +0.2x5 +0.6x6
=
2.2 +0.6x1 +0.4x5 +0.2x6
=
3
1x1
1x6
= 0.6 +0.2x1 0.2x5 +0.4x6

et on continue...
Resume : INITIALISATION
1. Si le programme lineaire est realisable `a lorigine (tous les bi 0), alors aller `a letape
3.
2. PHASE 1 : Trouver une solution realisable.
(a) Construire le programme auxilliaire.
(b) Construire le 1er dictionnaire non-realisable.
(c) Entrer x0 et sortir la variable la plus negative dictionnaire realisable pour le
programme auxilliaire.
(d) Iterations du simplexe (en cas degalite, sortir x0 de la base) jusqu`a loptimalite.
(e) Si la solution optimale est 0, aller `a letape 3 ; sinon, le programme initial est non
realisable.
3. PHASE 2 :
(a) Construire le 1er dictionnaire realisable (du probl`eme initial)
(b) Iterations du simplexe.
20

Programmation numerique en genie chimique


4.3.2

Gilles Savard

It
erations

Programmation numerique en genie chimique

Gilles Savard

Si lon choisit x3 comme variable dentree, on deduit les bornes suivantes :

Etant
donne un dictionnaire realisable, on doit choisir une variable dentree qui determine
une variable de sortie afin dobtenir le prochain dictionnaire.

x4 :
x5 :
x6 :

1. Choix de la variable dentr


ee
La variable dentree est une variable hors-base xj dont le coefficient cj dans la derni`ere
ligne du dictionnaire courant est positif. Plus precisement, considerons la derni`ere ligne
du dictionnaire courant
!
z = z +
cj xj

x3 1/2
x3 1/2
x3 1/2

et les trois variables de base sont candidates pour sortir de la base. Si lon choisit
arbitrairement comme variable de sortie x4 , on obtient apr`es un pivot, le dictionnaire
suivant :

jN

o`
u N est lensemble des indices j des variables hors-base xj . La solution courante,
xj = 0 pour tout j N donne `a lobjectif la valeur z .

x3
x5
x6
z

Si

cj 0,

j N

alors la solution courante est optimale puisque tout autre solution avec xj 0, j
N donne une valeur numerique `a lobjectif inferieure ou egale `a z .
Sil existe des j N tels que cj > 0, alors les xj correspondants sont toutes des
variables candidates `a entrer dans la base.
2. Variable de sortie
La variable de sortie est une variable de base dont la non negativite impose la contrainte
la plus forte sur la borne superieure de la variable dentree. On peut obtenir lune des
situations suivantes :
(a) On trouve une seule variable de sortie et on pivote.
(b) On trouve plusieurs variables de sortie : on choisit alors une variable de sortie
parmi ces derni`eres et on pivote.
(c) On ne trouve aucune variable de sortie : alors le probl`eme est non borne, cest-`adire que lobjectif peut prendre une valeur aussi grande que desiree (z = z +t
cj o`
u
cj est le coefficient > 0 de la variable dentree dans la derni`ere ligne du dictionnaire
et t peut prendre une valeur aussi grande que voulue).
3. D
eg
en
erescence
La presence de plusieurs variables de sortie cause dinteressantes consequences. Considerons lexemple suivant :
x4
x5
x6
z

= 1
= 3 2x1 +4x2
= 2 +x1 3x2
=
2x1 x2
21

2x3
6x3
4x3
+8x3

= 0.5
0.5x4
=
2x1 +4x2
+3x4
=
+x1 3x2
+2x4
=
4 +2x1 x2
4x4

Si lon pose `a 0 les variables hors-base, les variables de base prennent les valeurs :
x3 = 0.5, x5 = x6 = 0.
Une solution de base (ou dictionnaire realisable) avec des variables de base `a 0 est dite
degeneree. En entrant x1 dans la base, la variable de sortie est x5 ; apr`es le pivot, on
obtient :
x1
x3
x6
z

=
2x2
1.5x4 0.5x5
= 0.5
0.5x4
=
x2 +3.5x4 0.5x5
=
4 +3x2
x4
x5

On remarque que la solution na pas ete modifiee. Une iteration du simplexe qui ne
change pas la solution de base (ou la valeur) est dite degeneree. Une iteration degeneree
ne peut survenir que si lon a un dictionnaire degenere. La prochaine iteration est
egalement degeneree quoique la suivante ne lest pas et m`ene `a la solution optimale.
En pratique, les probl`emes lineaires sont souvent degeneres (on obtient des solutions de
base degenerees `a certaines etapes du simplexe). Cependant, lalgorithme du simplexe
finit generalement par faire des pivots non degeneres.
4.3.3

Crit`
ere darr
et

On sait que si dans la derni`ere ligne du dictionnaire courant


z = z +

jN

22

cj xj

Programmation numerique en genie chimique

Gilles Savard

on a cj 0, j N , la solution de base courante est optimale. Peut-on ne jamais


obtenir une telle condition, cest-`a-dire generer un nombre infini de dictionnaires ? La
reponse est oui.

Programmation numerique en genie chimique


4i`eme iteration :

=
0.5x1 +5.5x2 +2.5x3 9x4
=
0.5x1 +1.5x2 +0.5x3
x4
= 1
x1
=
10x1 57x2
9x3 24x4

5i`eme iteration :
x5
x4
x7
z

Si lon adopte la r`egle suivante :


(a) On choisit comme variable dentree celle dont le coefficient dans la ligne z est le
plus grand.
(b) En cas degalite pour la variable de sortie, on choisit celle dont lindice est le plus
petit.

1`ere iteration :
=
11x2 +5x3 18x4
x5
=
4x2 2x3
+8x4
+x5
= 1 11x2 5x3 +18x4
+x5
=
53x2 +41x3 204x4 20x5

2i`eme iteration :
x2
x1
x7
z

=
0.5x3 +2x4
=
0.5x3 +4x4
= 1 +0.5x3 4x4
=
14.5x3 98x4

+0.25x5 0.25x6
+0.75x5 2.75x6
0.75x5 13.25x6
6.75x5 13.25x6

3i`eme iteration :
x3
x2
x7
z

=
8x4 +1.5x5 5.5x6 2x1
=
2x4 0.5x5 +2.5x6
+x1
= 1
x1
=
18x4 +15x5 93x6 29x1
23

=
9x6
+4x1
8x2
2x3
=
x6 0.5x1 +1.5x2 +0.5x3
= 1
x1
=
24x6 +22x1 93x2 21x3

6i`eme iteration :
x5
x6
x7
z

Les iterations du simplexe donnent :

x1
x6
x7
z

=
0.25x5 +1.25x6 +0.5x1 0.5x2
=
0.5x5 +4.5x6
+2x1
4x2
= 1
x1
=
10.5x5 70.5x6 20x1
9x2

x4
x3
x7
z

Considerons lexemple suivant ayant comme dictionnaire initial :


x5
x6
x7
z

Gilles Savard

=
0.5x1 +5.5x2 +2.5x3 9x4
=
0.5x1 +1.5x2 +0.5x3
x4
= 1
x1
=
10x1 57x2
9x3 24x4

Comme le dictionnaire construit apr`es la 6i`eme iteration est identique au dictionnaire


initial, lalgorithme va repasser indefiniment par ces 6 iterations si les memes r`egles sont
utilisees. Ce phenom`ene est appele cyclage. On dit que la methode du simplexe cycle si
un dictionnaire apparat dans deux iterations successives. Remarquons que le cyclage
ne peut apparatre que lorsque le probl`eme est degenere. Quoique la degenerescence ne
soit pas rare, le cyclage, au contraire, est rare. En theorie, deux methodes existent qui
permettent deviter le cyclage :
(a) Methode lexicographique : (Dantzig, Olchen et Wolfe (1955))
(b) R`egle du plus petit indice (Bland (1977)) (entree et sortie)
On a le theor`eme suivant :
Th
eor`
eme 4.2 Si la methode du simplexe ne se termine pas, alors elle doit cycler.
Preuve :
On sait quil ny a quun nombre fini de facons de choisir m variables de base parmi
n + m variables, soit
(

n+m
(n + m)!
)=
m
n! m!
24

Programmation numerique en genie chimique

Gilles Savard

Donc si la methode du simplexe ne se termine pas, une meme base doit apparatre dans
deux dictionnaires distincts. Il suffit de montrer que deux dictionnaires avec la meme
base sont identiques.
Considerons deux dictionnaires
"

et

xi = bi j$B aij xj
"
z = v + j$B cj xj

iB

(12)

iB

(13)

avec la meme base B. On sait que toutes solutions de (12) est aussi une solution de
(13) et vice-versa. En particulier, si xk est une variable hors-base et si t est un nombre,
alors
=
=
=
=

Exemple pathologique :

t
0
bi aik t
v + ck t

"n

j=1

"

Gilles Savard

et peuvent resoudre des probl`emes ayant plusieurs milliers de contraintes et de variables.


La taille maximale depend de lordinateur, de la difficulte du probl`eme et de la taille du
probl`eme.
Quoique la methode du simplexe fonctionne tr`es bien sur la majorite des probl`emes rencontres dans la pratique, il est possible de construire des exemples pathologiques o`
u le nombre
diteration est exponentiel. Lexemple suivant est d
u `a Murty.

max
s.c.

xi = bi j$B aij xj
"
z = v + j$B cj xj

xk
xj
xi
z

Programmation numerique en genie chimique

"i1

j=1

10nj xj

10ij xj + xi 100i1
xj 0

Si lon utilise la r`egle usuelle du plus grand coefficient pour le choix de la variable dentree,
la methode du simplexe necessitera 2n1 iterations pour determiner la solution optimale. Par
exemple, cet exemple pathologique avec 50 variables et 50 contraintes necessitera 249
1, 12 1015 iterations. Sur un ordinateur effectuant 1000000 operations/sec, cela signifie un
temps dexecution de 360 000 annees ! ! !

(j ' B, j '= k)
(i B)

constituent une solution de (12) et doit satisfaire (13). Donc


bi aik t = bi aik t
v + ck t = v + ck t

i B

Ces identites etant verifiees pour tout t, on a


bi = bi , aik = aik

i B

et

v = v , ck = ck .

Comme xk est une variable hors-base arbitraire, les deux dictionnaires sont identiques.
4.3.4

Vitesse de lalgorithme du simplexe

On peut se demander le nombre diterations que necessite la methode du simplexe pour


determiner une solution optimale (si elle existe). En pratique, on observe que le nombre
diteration requis est de lordre de 3m/2 o`
u m est le nombre de contraintes. Ainsi le nombre
diterations depend peu du nombre de variables. Aujourdhui, il est possible de resoudre
de grands probl`emes lineaires sur des stations personnelles. Ainsi les programmes CPLEX,
OSL, XPRESS, MPSX, etc. sont tous des implantations efficaces de la methode du simplexe
25

i = 1, . . . , n
j = 1, . . . , n

26