Vous êtes sur la page 1sur 18

Recherche opérationnelle : programme linéaire à plusieurs

variables (simplexe)

Anne Fredet, anne@fredet.fr

Table des matières


1 Programmation linéaire à plusieurs variables 2
1.1 Dénitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Méthode du simplexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.1 Idée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.2 Système canonique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.3 Système générique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.4 Algorithme du simplexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.5 Contraintes saturées et gains marginaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.6 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3 Méthode duale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.1 Dénition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.2 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5 Solutions des exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1
Programme linéaire à plusieurs variables (simplexe)

1 Programmation linéaire à plusieurs variables


1.1 Dénitions
Dénition 1.1 Un programme linéaire est un programme consistant à trouver un extremum (maximum ou mini-
mum) d'une fonction à plusieurs variables, vériant en outre un système d'équations ou d'inéquations, ces fonctions
étant linéaires.

La méthode graphique devient dicile à réaliser lorsqu'il y a 3 variables, et impossible s'il y a plus de 3 variables. Il
faut donc trouver une autre méthode : celle du simplexe. Sous sa forme la plus générale, le modèle de programmation
linéaire est le modèle d'optimisation suivant :
n
fonction objectif
X
minimiser (ou maximiser) z(x) = cj xj
i=1

sous les contraintes


 
n
X  ≤ 
aij xj = b i = 1, · · · , m
 i


j=1

Les nombres cj , aij , bi sont les paramètres du modèle, ils sont connus avant la résolution. Les variables de décision
xj sont indéterminés à priori.
Dénition 1.2 On appelle :
 point réalisable tout point x qui satisfait aux contraintes,
 espace réalisable ou polyhèdre des contraintes l'ensemble des points réalisables,
 solution optimale un point réalisable qui optimise (maximise ou minimise) z(x)
 valeur optimale la valeur de z(x) atteinte pour toute solution optimale.

1.2 Méthode du simplexe


1.2.1 Idée
On sait que la solution, si elle existe, se trouve au moins sur un sommet du domaine des solutions réalisables, la
recherche de la solution optimale s'eectue uniquement sur ces sommets.
L'algorithme du simplexe examine comme première solution un des sommets (en général l'origine), qui constitue la
solution de base de l'algorithme. Puis il se déplace de sommet en sommet, an d'améliorer la fonction économique
à chaque étape. Après un nombre ni d'itérations, il arrive à un sommet à partir duquel tout déplacement vers un
autre sommet n'améliore plus cette valeur. On est alors au sommet optimal.

1.2.2 Système canonique


Pour appliquer la méthode du simplexe, on suppose que le système est donné sous forme canonique, c'est à dire
qu'il comprend une contrainte de positivité pour chaque variable et que les autres contraintes sont des inégalités
majorantes. On suppose de plus que la fonction objectif est à maximiser :

Dénition 1.3 On appelle programme linéaire canonique un programme du type



 x1 ≥ 0
 .




 ..

 xn ≥ 0


a11 x1 + · · · + a1n xn ≤ b1
 ..

.




a x + · · · + apn xn ≤ bp


 1p 1


max(c1 x1 + · · · + cn xn )

2 A. Fredet
Programme linéaire à plusieurs variables (simplexe)

La manipulation de systèmes d'inéquations n'est pas aisée. En eet, la multiplication par un nombre négatif change
le signe de l'inégalité et la somme de deux lignes peut être fausse.
Exemple 1.1 Regardons cela sur 2 exemples :
1. −3x + 2 ≤ 4 ⇔ 3x − 2 ≥ 4
2. Si on a
  
x+y >3 −y > −1 (L1 − L2 ) y<1
alors on devrait avoir c'est à dire
x + 2y > 4 y>1 (L2 − L1 ) y>1
Or une seule de ces inégalités peut être exacte...
C'est pourquoi, an de résoudre ce système, on commence par transformer les inéquations du sysème en équations,
en ajoutant de nouvelles variables appelés variables d'écart. On obtient le système :

x1 ≥ 0
..



.





xn ≥ 0




e1 ≥0



 ..


.


 ep ≥0
 a11 x1 + · · · + a1n xn + e1 = b1


..



.




a x + · · · + apn xn + ep = bp


 1p 1


max(c1 x1 + · · · + cn xn )
On notera Z la fonction objectif : Z = c1 x1 + · · · + cn xn .
On va considérer ce système sous forme de tableau an de le résoudre :

x1 x2 ··· xn e1 e2 ··· ep
e1 a11 a12 ··· a1n 1 0 0 0 b1
e2 a21 a22 ··· a2n 0 1 0 0 b2
.. .. ..
. . .
ep ap1 ap2 ··· apn 0 0 ··· 1 bp
−Z c1 c2 ··· cp 0 0 ··· 0 0

Les variables correspondant à des coecients non nuls de la fonction objectif sont des variables hors base. Elles ne
gurent pas dans la première colonne. La solution de base est x1 = · · · = xn = 0 et e1 = b1 , · · · , ep = bp . Dans ce
cas, la fonction économique vaut 0, les variables xi sont hors base.

1.2.3 Système générique


On peut transformer certaines contraintes an d'obtenir un système générique :
1. Toute inégalité de la forme a1 x1 + a2 x2 + · · · + an xn ≥ b peut être transformée en

−a1 x1 − a2 x2 − · · · − an xn ≤ −b

2. Toute égalité de la forme a1 x1 + a2 x2 + · · · + an xn = b peut être transformée en deux inégalités



a1 x1 + a2 x2 + · · · + an xn ≤ b
et a1 x1 + a2 x2 + · · · + an xn ≥ b.
c'est-à-dire

a1 x1 + a2 x2 + · · · + an xn ≤ b
et − a1 x1 − a2 x2 − · · · − an xn ≤ −b.

3 A. Fredet
Programme linéaire à plusieurs variables (simplexe)

1.2.4 Algorithme du simplexe


L'algorithme du simplexe consiste à parcourir le polyhèdre des points réalisables de sommet en sommet jusqu'à ce
qu'on ne puisse plus améliorer la solution. Au point de départ, la fonction objectif est nulle, et il s'agit de l'augmenter.
Si certains de ses coecients sont positifs, il apparait clairement qu'en augmentant l'une des variables correspondant
à un coecients positifs, on augmente cette fonction objectif. On a donc un critère d'obtention de l'optimum : tant
que la dernière ligne d'un tableau du simplexe contient au moins un coecient positif, la solution examinée peut
être améliorée.

Première étape : Recherche du pivot


Le pivot est un coecient du tableau qui permet, grâce à la méthode du pivot, d'annuler tous les coecients de
la colonne contenant ce pivot, excepté cet élément qui est ramené à 1 après division de la ligne le contenant par ce
nombre.
1. Choix de la colonne pivot
La colonne pivot est dénie à partir des coecients de la fonction économique.
On cherche à se focaliser sur la variable qui, en augmentant, augmentera le plus possible la fonction objectif.
Cette variable correspond au plus grand coecient positif de la fonction objectif. Considérons les coecients
c1 , · · · , cn de la fonction économique. Parmi tous les coecients positifs, on considère le plus grand. La colonne
pivot est la colonne qui le contient.
S'il existe plusieurs coecients correspondant à cette valeur positive maximale, on peut choisir celui que l'on
veut.
La variable correspondante sera la variable entrante car elle ne va plus s'annuler.
Exemple 1.2 Si on considère le programme linéaire suivant :


 x1 ≥ 0, x1 ≥ 0, x3 ≥ 0
x1 + x2 ≤ 1




x2 ≤ 2


 3x1 + 4x2 ≤ 12
x1 + x3 ≤ 3




max(3x1 − x2 + x3 )

En introduisant les variables d'écart, on obtient




 x1 ≥ 0, x1 ≥ 0, x3 ≥ 0
x1 + x2 + e1 = 1




 x2 + e2 = 2


3x1 + 4x2 + e3 = 12
x1 + x3 + e4 = 3




max(3x1 − x2 + x3 )




e1 ≥ 0, e2 ≥ 0, e3 ≥ 0, e4 ≥ 0

Le premier tableau se présente donc ainsi :

x1 x2 x3 e1 e2 e3 e4
e1 1 1 0 1 0 0 0 1
e2 0 1 0 0 1 0 0 2
e3 3 4 0 0 0 1 0 12
e4 1 0 1 0 0 0 1 3
−Z 3 −1 1 0 0 0 0 0

Le plus grand coecient positif de la fonction économique est c1 = 3. La colonne pivot est donc la première
colonne. La variable x1 est donc entrante.
2. Choix de la ligne pivot
La variable entrante va prendre la place d'une des variables de base, appelé variable sortante. Il faut maintenant
trouver quelle valeur maximum peut prendre cette variable entrante an de maximiser la fonction objectif. Pour

4 A. Fredet
Programme linéaire à plusieurs variables (simplexe)

cela, chaque coecient de la dernière colonne est divisé par le coecient correspondant de la colonne pivot : si
la colonne pivot est
 
a1i
 a2i 
 .. 
 
 . ,
 
 api 
ci
on calcule les rapports
bj
pour j = 1, · · · , p lorsque aij > 0.
aji
On obtient de cette façon, pour chaque contrainte prise séparement, la valeur maximal que peut prendre la
variable entrante. On sélectionne le plus petit rapport positif, correspondant à la contrainte la plus forte : on
cherche l'indice k tel que
bk bj
0≤ ≤ en ne considérant les j que si aij > 0.
aki aji
La k -ième ligne est la ligne pivot, et aki est le pivot : la ligne pivot est la ligne k telle que bk
aki soit positif et
minimal.
La variable correspondant à cette ligne est la variable sortante.
Exemple 1.3 Si on considère l'exemple précédent, on avait le tableau suivant :

x1 x2 x3 e1 e2 e3 e4
e1 1 1 0 1 0 0 0 1
e2 0 1 0 0 1 0 0 2
e3 3 4 0 0 0 1 0 12
e4 1 0 1 0 0 0 1 3
−Z 3 −1 1 0 0 0 0 0
La première colonne est la colonne pivot. Les seuls coecients positifs non nuls de cette colonne sont a11 = 1,
bj
a31 = 3 et a41 = 1. Calculons les rapports a1j correspondants. On a
b1 1
= =1
a11 1
b3 12
= =4
a31 3
b4 3
= =3
a41 1
Le plus petit rapport est le premier, donc la ligne pivot est la première. Le pivot associé est a11 = 1. La variable
entrante est x1 et la variable sortante est e1 .

Deuxième étape : Réduction du tableau


On divise la ligne pivot par le pivot puis on annule ensuite les coecients du tableau situés au-dessus et au-dessous
du pivot, en soustrayant la ligne pivot aux autres lignes.
x1 x2 x3 e1 e2 e3 e4
x1 1 1 0 1 0 0 0 1
e2 0 1 0 0 1 0 0 2
e3 0 1 0 −3 0 1 0 9 on eectue L3 ← L3 − 3L1
e4 0 −1 1 −1 0 0 1 2 on eectue L4 ← L4 − L1
−Z 0 −4 1 −3 0 0 0 −3 on eectue L5 ← L5 − 3L1
La solution correspondante est dénie par x1 = 1, x2 = x3 = 0, e1 = 0, e2 = 2, e3 = 9 et e4 = 2. La fonction
économique vaut 3 en ce point.

5 A. Fredet
Programme linéaire à plusieurs variables (simplexe)

Troisième étape : Itération


S'il existe un coecient ci positif dans le nouveau tableau, on retourne à la première étape (choix du pivot)
puis à la deuxième (réduction du tableau). On réitère ce processus jusqu'à ce que tous les coecients de la fonction
économique soient négatifs.
Cela se produira forcément.
Exemple 1.4 On reprend le tableau de l'exemple précédent. Il existe un coecient ci positif, à savoir c3 = 1. La
troisième colonne est donc la colonne pivot. Le seul coecient positif de cette colonne est a43 = 1, c'est donc le pivot.
On réduit le tableau et on obtient
x1 x2 x3 e1 e2 e3 e4
x1 1 1 0 1 0 0 0 1
e2 0 1 0 0 1 0 0 2
e3 0 1 0 −3 0 1 0 9
x3 0 −1 1 −1 0 0 1 2
−Z 0 −3 0 −2 0 0 −1 −5 L5 ← L5 − L4
Tous les coecients de la fonction économique sont négatifs, on a donc la solution optimale. Elle est dénie par
x1 = 1, x2 = 0, x3 = 2, e1 = 0, e2 = 2, e3 = 9 et e4 = 0. Dans ce cas, max(3x1 − x2 + x3 ) = 5.

Autre exemple
On considère le programme linéaire suivant

 x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x4 ≥ 0

 3x1 + 2x2 + 4x3 + 3x4 ≤ 70


7x1 + 8x2 + 10x3 + 12x4 ≤ 120
x1 + x2 + x3 + x4 ≤ 15




max(6x1 + 112 x2 + 7x3 + 8x4 )

La résolution de ce programme nous donnes ces tableaux successifs :


x1 x2 x3 x4 e1 e2 e3
e1 3 2 4 3 1 0 0 70
e2 7 8 10 12 0 1 0 120
e3 1 1 1 1 0 0 1 15
11
−Z 6 2 7 8 0 0 0 0
La solution correspondante est x1 = x2 = x3 = x4 = 0 et e1 = 70, e2 = 120, e3 = 15. La variable entrante est x4 et
la variable sortante est e2 .
x1 x2 x3 x4 e1 e2 e3
e1 5
4 0 3
2 0 1 0 0 40 on eectue L1 ← L1 − 14 L2
x4 7
12
2
3
5
6 1 0 1
12 0 10 on eectue L2 ← 12
1
L2
e3 5
12
1
3
1
6 0 0 1
− 12 1 5 on eectue L3 ← L3 − 12
1
L2
−Z 4
3
1
6 − 23 0 0 − 23 0 −80 on eectue L4 ← L4 − 3 L2
2

La solution correspondante est x4 = 10, e1 = 40 et e3 = 5, les autres variables étant nulles. La fonction économique
vaut 80.
On cherche le pivot, et on le trouve sur la première colonne, trosième ligne. La variable entrante est donc x1 et la
variable sortante est e3 :
x1 x2 x3 x4 e1 e2 e3
e1 0 −1 1 0 1 0 −3 25 on eectue L1 ← L1 − 3L3
x4 0 − 53
3
3
5 1 0 1
5 − 75 3 on eectue L2 ← L2 − 75 L3
x1 1 4
5
2
5 0 0 − 15 12
5 12 on eectue L3 ← 12
5 L3
−Z 0 9
− 10 − 65 0 0 − 25 − 36
15 −96 on eectue L4 ← L4 − 165 L3

Ce tableau est le dernier car tous les coecients de la dernière ligne sont négatifs. La solution optimale correspondante
est x1 = 12, x4 = 3, e1 = 25. La fonction économique vaut en ce point 96.

6 A. Fredet
Programme linéaire à plusieurs variables (simplexe)

Autre présentation
On peut ne pas garder les variables de la base dans la première colonne. La solution correspondante est alors
dénie par les coecients nuls de la fonction objectif. Les autres variables seront nulles.
On considère le programme linéaire suivant


 x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x4 ≥ 0
 3x1 + 2x2 + 4x3 + 3x4 ≤ 70


7x1 + 8x2 + 10x3 + 12x4 ≤ 120
x1 + x2 + x3 + x4 ≤ 15




max(6x1 + 11 2 x2 + 7x3 + 8x4 )

La résolution de ce programme nous donnes ces tableaux successifs :

x1 x2 x3 x4 e1 e2 e3
3 2 4 3 1 0 0 70
7 8 10 12 0 1 0 120
1 1 1 1 0 0 1 15
11
6 2 7 8 0 0 0 0

La solution correspondante est e1 = 70, e2 = 120, e3 = 15 (les coecients de la dernière ligne sont nuls) et
x1 = x2 = x3 = x4 = 0. On obtient ensuite

x1 x2 x3 x4 e1 e2 e3
5 3
4 0 2 0 1 0 0 40
7 2 5 1
12 3 6 1 0 12 0 10
5 1 1 1
12 3 6 0 0 − 12 1 5
4 1
3 6 − 23 0 0 − 32 0 −80

La solution correspondante est x4 = 10, e1 = 40 et e3 = 5, les autres variables étant nulles. La fonction économique
vaut 80.
Le dernier tableau est :
x1 x2 x3 x4 e1 e2 e3
0 −1 1 0 1 0 −3 25
0 − 53
3
3
5 1 0 1
5 − 75 3
4 2
1 5 5 0 0 − 51 12
5 12
9
0 − 10 − 65 0 0 − 52 36
− 15 −96

Ce tableau est le dernier car tous les coecients de la dernière ligne sont négatifs. La solution optimale correspondante
est x1 = 12, x4 = 3, e1 = 25. La fonction économique vaut en ce point 96.

Exercice 1.1 Résoudre le programme




 x1 , x2 , x3 ≥ 0
 2x1 − x2 + 2x3 ≤ 7


2x1 − 4x2 ≤ 12
−4x1 + 3x2 + 8x3 ≤ 10




max(2x1 + x2 + x3 )

1.2.5 Contraintes saturées et gains marginaux


Une contrainte est saturée au point solution si sa variable d'écart est nulle en ce point.
Les gains marginaux sont les nombres de la dernière ligne du tableau, situés dans les colonnes des variables d'écart.
Seuls les contraintes saturés conduisent à des gains marginaux non nuls.

7 A. Fredet
Programme linéaire à plusieurs variables (simplexe)

1.2.6 Exercices
Exercice 1.2 Résoudre le programme


 x1 , x2 , x3 ≥ 0
x1 ≤ 100




x2 ≤ 150


 x1 + x2 + 2x3 ≤ 200
2x1 + x2 + x3 ≤ 300




max(3x1 + 4x2 + 2x3 )

Exercice 1.3 Résoudre le problème suivant en utilisant l'algorithme du simplexe :


Un artisan fabrique deux articles A et B nécessitant chacun deux opérations : un usinage et un traitement thermique.
Le produit A subit un usinage d'1 heure et un traitement thermique de 3h. B subit un usinage de 2h et un traitement
thermique de 3h. De plus, 2kg de matière première entrent dans la composition de A et 1kg dans celle de B. La
fabrication de B se termine par un travail de nition qui dure 1h.
Toutes les 3 semaines, l'artisan dispose de l'atelier d'usinage pendant 80h et du four pendant 150h. De plus, pendant
cette période, il ne peut pas consacrer plus de 35h au travail de nition ni stocker plus de 80kg de matière première.
Quelles quantités de A et B l'artisan doit-il fabriquer pendant cette période si la marge bénéciaire est de 30 euros
pour l'article A et de 20 euros pour l'article B.

1.3 Méthode duale


La méthode du simplexe ne permet de résoudre que des systèmes ayant des contraintes sur les maxima et une
fonction à maximiser. Il arrive qu'on ait des contraintes sur les valeurs minimales et qu'on chercher à minimiser une
fonction (un coût par exemple). Pour cela, il nous faut considérer le dual du problème.

1.3.1 Dénition
Si on compare le problème (P1) :
Pn
maximiser z1 = j=1 cj xj
Pn
avec j=1 aij xj ≤ bi pour i = 1, · · · , m

avec le problème (P2)


Pm
minimiser z2 = i=1 bi yi
Pm
avec i=1 aij yi ≥ cj pour j = 1, · · · , n

On dit que P1 et P2 sont le primal et le dual d'un même programme linéaire.


Le programme dual d'un programme linéaire est un programme linéaire. Le nombre de variables du dual est égal au
nombre de contraintes du primal et le nombre de ses contraintes est égal au nombre de variables du primal.
Par exemple

primal dual
variables :x1 , x2 variables :y1 , y2 , y3 , y4
contraintes : contraintes :
a11 x1 + a12 x2 ≤ b1
a21 x1 + a22 x2 ≤ b2 a11 y1 + a21 y2 + a31 y3 + a41 y4 ≥ c1
a31 x1 + a32 x2 ≤ b3 a12 y1 + a22 y2 + a32 y3 + a42 y4 ≥ c2
a41 x1 + a42 x2 ≤ b4
fonction économique : fonction économique :
z1 = c1 x1 + c2 x2 z2 = b1 y1 + b2 y2 + b3 y3 + b4 y4

La résolution du primal donne la solution du dual et réciproquement.


Les données du primal sont utilisées horizontalement pour l'écriture du programme. Ces mêmes données sont utilisées
verticalement pour l'écriture du programme dual. De plus, le type d'extremum du dual est le contraire de celui du

8 A. Fredet
Programme linéaire à plusieurs variables (simplexe)

primal.
Si on considère le programme linéaire suivant :

2 variables indépendantes x1 et x2
4 contraintes :
2x1 + x2 ≤ 1 000
x1 + x2 ≤ 800
x1 ≤ 400
x2 ≤ 700
fonction économique : z1 = 20x1 + 30x2 à maximiser

La solution optimale de ce problème est x1 = 100 et x2 = 700.


Le programme dual du précédent est :

4 variables indépendantes y1 , y2 , y3 et y4
2 contraintes :
2y1 + y2 + y3 ≥ 20
y1 + y2 + y4 ≥ 30
fonction économique : z2 = 1 000y1 + 800y2 + 400y3 + 700y4 à minimiser

La valeur optimale de z2 est 23 000. On a :

état initial état optimal


x1 x2 e1 e2 e3 e4 x1 x2 e1 e2 e3 e4
2 1 1 0 0 0 1 000 0 0 1 −2 0 1 100
1 1 0 1 0 0 800 1 0 0 1 0 −1 100
1 0 0 0 1 0 400 0 0 0 −1 1 −1 300
0 1 0 0 0 1 700 0 1 0 0 0 1 700
20 30 0 0 0 0 0 0 0 0 −20 0 −10 23 000

La solution optimale qui donne z1 = 23 000 est x1 = 100, x2 = 700, e1 = 100, e2 = 0, e3 = 300 et e4 = 0.
En regardant la dernière ligne du tableau, on trouve les valeurs correspondant à la solution optimale du problème
dual : y2 = 20 et y4 = 10, qui nous donne le bon résultat : z2 = 800 × 20 + 700 × 10 = 23 000.
On remarque que le dual du dual est le problème initial.

1.3.2 Exercices
Exercice 1.4 Résoudre


 u1 ≥ 0, u1 ≥ 0, u3 ≥ 0, u4 ≥ 0
u1 + u2 + 2u3 ≥ 30

 2u1 + u2 + u3 + u4 ≥ 20
minimiser 80u1 + 50u2 + 80u3 + 35u4

1.4 Applications
Exercice 1.5 Une usine produit deux modèles de machines, l'une que l'on appellera modèle A exige 2 kg de matière
première et de 30 heures de fabrication et donne un bénéce de 7 euros. L'autre que l'on appellera B exige 4 kg de
matière première et de 15 heures de fabrication et donne un bénéce de 6 euros . On dispose de 200 kg de matière
première et de 1200 h de travail. Quelle production doit on avoir pour obtenir un bénéce maximal ?

Exercice 1.6 L'entreprise Duralumin fabrique des pièces en inox, de trois types A, B et C ; elles sont fabriquées
par lot de 50 dans un grand atelier où sont rassemblées une machine de découpe de l'inox, une emboutisseuse et
une polisseuse ; chaque machine fonctionne 120 heures par mois. Les caractéristiques de fabrication sont rassemblées

9 A. Fredet
Programme linéaire à plusieurs variables (simplexe)

dans le tableau suivant :


coût horaire lot A lot B lot C
découpe 20 euros 1h 0, 5 h 2h
emboutissage 30 euros 1, 5 h 1h
polissage 40 euros 1, 5 h 1h 1h
inox (mat. première) 40 euros 85 euros 38 euros
prix de vente (H.T.) 200 euros 180 euros 220 euros

Quel est le programme de production optimal (pour un mois) ?

Exercice 1.7 Dans une cafétéria, on sert 2 sortes de désserts glacés, à base de cocktails exotiques, de glace et de
fruits conts : la créole et la tropicale. La créole nécessite 8cl de cocktail exotique, 2dl de glace et 15g de fruits
conts. La tropicale nécessite 5cl de cocktail exotique, 2dl de glace et 25g de fruits conts. Chaque jour, l'atelier de
patisserie peut préparer 1600 cl de cocktail exotique, 520 dl de glace et 5 kg de fruits conts. Une créole est vendue
1,2 euros et une tropicale 1 euro. Maximisez le prot.

Exercice 1.8 Un agriculteur peut utiliser 2 type d'engrais E1 et E2 pour épandre sur ses cultures. Les besoins par
an et par hectare sont de 60 kg de potasse, 120 kg de calcium et 90 kg de nitrates.
Pour une même quantité, les 2 types d'engrais coutent la même chose. Leur composition pour 10 kg est de :
 produit E1 : 1 kg de potasse, 3 kg de calcium, 3 kg de nitrates et 3 kg de produit neutre
 produit E2 : 2 kg de potasse, 2 kg de calcium, 1 kg de nitrates et 5 kg de produit neutre
Question : Comment fertiliser les cultures à moindre coût ?

Exercice 1.9 La Société des Scieries Vosgienne (SSV) souhaite s'apprivisionner en bois de diérentes essences
courantes. Compte tenu de la demande actuelle en bois scié, elle souhaite acquérir au moins 200m3 de chêne, au
moins 160 m3 de hêtre et au moins 300m3 de sapin.
Les prix au m3 sur la marché traditionnel sont de 140 euros pour le chêne, 90 euros pour le hêtre et 70 euros pour
le sapin.
Mais la SSV peut aussi proter des ores de certains exploitants forestiers dont les forêts ont été dévastées par la
tempête du 26 décembre 1999 et qui proposent par lots, à moindre coût, du bois de qualité équivalente.
Trois ores ont été sélectionnées :
 ore A : lots de 15m3 de chêne, 15m3 de hêtre, 20m3 de sapin. Prix d'un lot : 3 840 euros.
 ore B : lots de 16m3 de chêne, 8m3 de hêtre, 24m3 de sapin. Prix d'un lot : 3 960 euros.
 ore C : lots de 9m3 de chêne, 24m3 de hêtre, 12m3 de sapin. Prix d'un lot : 2 880 euros.
1. Déterminez le prix et la quantité de bois que souhaite acquérir la SSV, si elle se fournit sur le marché traditionnel
et achète les quantités minimales qu'elle désire acquérir.
2. L'objectif des questions suivantes est de déterminer si la SSV a intérêt à se fournir sur la marché traditionnel
ou à proter des ores sélectionnées. On supposera dans ce qui suit qu'elle choisit d'acheter uniquement des
lots A,B et C.
(a) En notant respectivement a, b et c les quantités de lots A, B et C à acheter pour obtenir la quantité de bois
désirée, écrire la forme canonique du programme P , établissant les contraintes et la fonction économique
Z à minimiser pour satisfaire la SSV.
0
(b) Écrire, sous forme canonique puis sous forme standard, le programme P , dual du programme P . On
0
notera x, y et z les variables duales, e1 , e2 , e3 les variables d'écart du programme dual et Z la fonction
économique du programme dual.
0
(c) Établir les deux premiers tableaux permettant de résoudre le programme P par la méthode du simplexe.
Indiquez soigneusement les variables entrantes et sortantes dans le premier tableau.
(d) Le troisième tableau est le suivant :

x y z e1 e2 e3 R
5
e1 4 0 0 1 − 85 5
− 12 165
13 1 1
z 20 0 1 0 20 − 60 150
1 1 1
y 20 1 0 0 − 40 20 45
0
Z −3 0 0 0 −11 −3 −52 200

10 A. Fredet
Programme linéaire à plusieurs variables (simplexe)

i. Montrez que ce tableau correspond à l'optimum, et déterminez les nombres de lots A, B et C que la
SSV doit acheter pour minimiser ses coûts.
ii. Indiquez le prix minimum à payer par la SSV pour satisfaire ses besoins. Quel est alors, en pourcentage,
le rabais obtenu par rapport au prix du marché traditionnel ?
iii. Si la SSV désire acheter le nombre de lots A,B et C lui permettant de minimiser ses coûts, la quantité
de bois acheté correspond-elle exactement à la quantité souhaitee ?

11 A. Fredet
Programme linéaire à plusieurs variables (simplexe)

1.5 Solutions des exercices


Solution 1.1 En ajoutant les variables d'écart, on s'intéresse au système suivant :


 x1 , x2 , x3 , e1 , e2 , e3 ≥ 0
 2x1 − x2 + 2x3 + e1 = 7


2x1 − 4x2 + e2 = 12
−4x1 + 3x2 + 8x3 + e3 = 10




max(2x1 + x2 + x3 )

En appliquant l'algorithme du simplexe, on obtient les tableaux suivants (le pivot est en rouge)
x1 x2 x3 e1 e2 e3
e1 2 −1 2 1 0 0 7
e2 2 −4 0 0 1 0 12
e3 −4 3 8 0 0 1 10
−Z 2 1 1 0 0 0 0
La solution de base est alors x1 = x2 = x3 = 0, e1 = 7, e2 = 12, e3 = 10, Z = 0.
x1 x2 x3 e1 e2 e3
x1 1 − 12 1 1
2 0 0 7
2
e2 0 −3 −2 −1 1 0 5
e3 0 1 12 2 0 1 24
−Z 0 2 −1 −1 0 0 −7
La solution est alors x2 = x3 = e1 = 0, x1 = 72 , e2 = 5, e3 = 24 et Z = 7.
x1 x2 x3 e1 e2 e3
1 1 31
x1 1 0 7 2 2 2 2
e2 0 0 34 5 1 3 77
x2 0 1 12 2 0 1 24
−Z 0 0 −25 −5 0 −2 −55
La solution est alors e1 = e3 = x3 = 0, x1 = 31
2 , x2 = 24, e2 = 77 et Z = 55. C'est la solution optimale car tous les
coecients de la fonction économique sont négatifs ou nuls.
Solution 1.2 En ajoutant les variables d'écart, on s'intéresse au système suivant :


 x1 , x2 , x3 , e1 , e2 , e3 , e4 ≥ 0
x1 + e1 = 100




x2 + e2 = 150


 x1 + x2 + 2x3 + e3 = 200
2x1 + x2 + x3 + e4 = 300




max(3x1 + 4x2 + 2x3 )

En appliquant l'algorithme du simplexe, on obtient les tableaux suivants (le pivot est en rouge)
x1 x2 x3 e1 e2 e3 e4
e1 1 0 0 1 0 0 0 100
e2 0 1 0 0 1 0 0 150
e3 1 1 2 0 0 1 0 200
e4 2 1 1 0 0 0 1 300
−Z 3 4 2 0 0 0 0
La solution de base est alors x1 = x2 = x3 = 0, e1 = 100, e2 = 150, e3 = 200, e4 = 300, Z = 0.
x1 x2 x3 e1 e2 e3 e4
e1 1 0 0 1 0 0 0 100
x2 0 1 0 0 1 0 0 150
e3 1 0 2 0 −1 1 0 50
e4 2 0 1 0 −1 0 1 100
−Z 3 0 2 −3 0 0 0 −600

12 A. Fredet
Programme linéaire à plusieurs variables (simplexe)

La solution correspondante est e2 = x1 = x3 = 0, e1 = 100, x2 = 150, e3 = 50, e4 = 100, Z = 600.

x1 x2 x3 e1 e2 e3 e4
e1 0 0 −2 1 1 −1 −1 50
x2 0 1 0 0 1 0 0 150
x1 1 0 2 0 −1 1 0 50
e4 0 0 −3 0 −1 −2 1 50
−Z 0 0 −4 0 −1 −3 0 −750

La solution optimale est x1 = 50, x2 = 150, x3 = 0, Z = 750, e1 = 50, e2 = 0, e3 = 0, e4 = 50 (tous les coecients de
la fonction objectif sont nuls).

Solution 1.3 On a le tableau suivant :


article A article B dispo max
usinage 1h 2h 80h
traitement thermique 3h 3h 150h
matière première 2kg 1kg 80kg
nition 1h 35h
marge 30 20

Soit x la quantité d'articles A et y la quantité d'articles B fabriqués en trois semaines. On s'intéresse donc au
programme linéaire suivant :

 maximiser 30x + 20y




x ≥ 0, y ≥ 0




x + 2y ≤ 80

 3x + 3y ≤ 150

 2x + y ≤ 80



y ≤ 35

c'est-à-dire
maximiser 30x + 20y



x ≥ 0, y ≥ 0




x + 2y ≤ 80


 x + y ≤ 50
2x + y ≤ 80




y ≤ 35

En ajoutant les variables d'écart, cela nous donne le système suivant :

maximiser 30x + 20y





x ≥ 0, y ≥ 0, e1 ≥ 0, e2 ≥ 0, e3 ≥ 0, e4 ≥ 0




x + 2y + e1 = 80


 x + y + e2 = 50
2x + y + e3 = 80




y + e4 = 35

On obtient le tableau suivant :


x y e1 e2 e3 e4
e1 1 2 1 0 0 0 80
e2 1 1 0 1 0 0 50
e3 2 1 0 0 1 0 80
e4 0 1 0 0 0 1 35
−Z 30 20 0 0 0 0 0

13 A. Fredet
Programme linéaire à plusieurs variables (simplexe)

Le pivot est sur la première colonne, troisième ligne. x est donc la variable entrante et e3 la variable sortante :

x y e1 e2 e3 e4
3
e1 0 2 1 0 − 12 0 40
1
e2 0 2 0 1 − 12 0 10
1 1
x 1 2 0 0 2 0 40
e4 0 1 0 0 0 1 35
−Z 0 5 0 0 −15 0 −1 200

Le pivot est maintenant sur la deuxième colonne, deuxième ligne. La variable entrante est y et la variable sortante
est e2 :

x y e1 e2 e3 e4
e1 0 0 1 −3 1 0 10
y 0 1 0 2 −1 0 20
x 1 0 0 −1 1 0 30
e4 0 0 0 −2 1 1 15
−Z 0 0 0 −10 −10 0 −1 300

Les coecients de la dernière ligne étant tous négatifs, l'algorithme s'arrète. La solution optimale est donc x = 30,
y = 20, e1 = 10, e4 = 15 et e2 = e3 = 0. Les contraintes deux et trois sont donc saturées. On retrouve bien les
solutions obtenues par la méthode graphique.

Solution 1.4 il sut d'eectuer la résolution de son dual :

maximiser 30x + 20y





x ≥ 0, y ≥ 0




x + 2y ≤ 80


 x + y ≤ 50
2x + y ≤ 80




y ≤ 35

Le dernier tableau de l'algorithme du simplexe est

x y e1 e2 e3 e4
e1 0 0 1 −3 1 0 10
y 0 1 0 2 −1 0 20
x 1 0 0 −1 1 0 30
e4 0 0 0 −2 1 1 15
−Z 0 0 0 −10 −10 0 −1300

La valeur minimale du problème initial est donc 1300. Il correspond à u1 = 0, u2 = 10, u3 = 10 et u4 = 0.

Solution 1.5 Soit x le nombre d'appareils de modèle A et y le nombre d'appareils de modèle B. On s'intéresse donc
au système suivant :


 x ≥ 0, y ≥ 0
2x + 4y ≤ 200


 30x + 15y ≤ 1200
max(7x + 6y)

En introduisans les variables d'écart, on obtient



 x ≥ 0, y ≥ 0, e1 ≥ 0, e2 ≥ 0

2x + 4y + e1 = 200


 30x + 15y + e2 = 1200
max(7x + 6y)

14 A. Fredet
Programme linéaire à plusieurs variables (simplexe)

La méthode du simplexe nous donne les tableaux suivants :


x y ∗ ∗
e1 2 4 1 0 200
e2 30 15 0 1 1200
−Z 7 6 0 0 0
qui nous donne
e2 y ∗ ∗
1
e1 0 3 1 − 15 120
1 1
x 1 2 0 30 40
5 7
−Z 0 2 0 − 30 −280
On obtient
e2 e1 ∗ ∗
1 1
y 0 1 3 − 45 40
x 1 0 − 16 1
15 20
−Z 0 0 − 56 2
− 30 −380
La solution optimale est donc x = 20 et y = 40. Le bénéce est alors de 380 euros.
Solution 1.6 Soient x1 , x2 , x3 les quantités de pièces de type A, B, C fabriquées. Chaque pièce A coûte 20 euros pour
la découpe, 1, 5 × 30 = 45 euros pour l'emboutissage, 1, 5 × 40 = 60 euros pour le polissage et 40 euros de matière
première, soit 165 euros. Elle rapporte donc 200 − 165 = 35 euros.
Chaque pièce B coûte 0, 5×20 = 10 euros pour la découpe, 40 euros pour le polissage et 85 euros de matière première,
soit 135 euros. Elle rapporte donc 180 − 135 = 45 euros.
Chaque pièce C coûte 2 × 20 = 40 euros pour la découpe, 30 euros pour l'emboutissage, 40 euros pour le polissage
et 38 euros de matière première, soit 148 euros. Elle rapporte donc 220 − 148 = 72 euros.
On s'intéresse au système suivant :


 x1 ≥ 0, x2 ≥ 0, x3 ≥ 0
 x1 + 0, 5x2 + 2x3 ≤ 120


1, 5x1 + x3 ≤ 120
1, 5x1 + x2 + x3 ≤ 120




max(35x1 + 45x2 + 72x3 )

En introduisant les variables d'écart, on obtient




 x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, e1 ≥ 0, e2 ≥ 0, e3 ≥ 0
 x1 + 0, 5x2 + 2x3 + e1 = 120


1, 5x1 + x3 + e2 = 120
1, 5x1 + x2 + x3 + e3 = 120




max(35x1 + 45x2 + 72x3 )

En utilisant la méthode du simplexe, on considère le tableau suivant


x1 x2 x3 ∗ ∗ ∗
e1 1 0, 5 2 1 0 0 120
e2 1, 5 0 1 0 1 0 120
e3 1, 5 1 1 0 0 1 120
−Z 35 45 72 0 0 0 0
qui nous donne
x1 x2 e1 ∗ ∗ ∗
x3 0, 5 0, 25 1 0, 5 0 0 60
e2 1 −0, 25 0 −0, 5 1 0 60
e3 1 0, 75 0 −0, 5 0 1 60
−Z −1 27 0 −36 0 0 −4 320

15 A. Fredet
Programme linéaire à plusieurs variables (simplexe)

On obtient
x1 e3 e1 ∗ ∗ ∗
1 2
x3 6 0 1 3 0 − 31 40
4
e2 3 0 0 − 321 1
3 80
4
x2 3 1 0 − 320 4
3 80
−Z −37 0 0 −18 0 −36 −6 480

La solution optimale est donc obtenue en x1 = 0, x2 = 80, x3 = 40. Le bénéce est alors de 6 480 euros.

Solution 1.7 Soit x le nombre de créoles vendues et y le nombre de tropicales. On a


(cocktail)

 8x + 5y ≤ 1600
2x + 2y ≤ 520 (glace)
15x + 25y ≤ 5 000 (fruits)

On veut maximiser la fonction 1, 2x + y . On a les tableaux suivants :


x y ∗ ∗ ∗ 2nd membre rapports
e1 8 5 1 0 0 1600 200
e2 2 2 0 1 0 520 260
1 000
e3 15 25 0 0 1 5 000 3
−Z 1, 2 1 0 0 0 0 0

En modiant la ligne e1 , cela nous donne


∗ y e1 ∗ ∗ 2nd membre rapports
x 1 0, 625 0, 125 0 0 200 320
e2 0 0, 75 −0, 25 1 0 120 160
e3 0 15, 625 −1, 875 0 1 2 000 128
−Z 0 0, 25 −0, 15 0 0 −240

En modiant la ligne e3 , cela nous donne


∗ ∗ e1 ∗ e3 2nd membre
x 1 0 0, 2 0 −0, 04 120
e2 0 0 −0, 16 1 −0, 048 24
y 0 1 −0, 12 0 0, 064 128
−Z 0 0 −0, 12 0 −0, 016 −272

On a donc x = 120 créoles et y = 128 tropicales. Le prot est alors de 272 euros (et il reste 24 dl de glace)

Solution 1.8 Soit x et y les quantités d'engrais E1 et E2 utilisées par an et par hectare. On veut alors :


 x + 2y ≥ 60
3x + 2y ≥ 120


 3x + y ≥ 90
min(x + y)

On considère le système dual :



 X + 3Y + 3Z ≤ 1
2X + 2Y + X ≤ 1
max(60X + 120Y + 90Z)

D'où les tableaux suivants :


X Y Z e1 e2 2nd membre
e1 1 3 3 1 0 1
e2 2 2 1 0 1 1
−Z 60 120 90 0 0 0

16 A. Fredet
Programme linéaire à plusieurs variables (simplexe)

En modiant la première ligne, on obtient


X ∗ Z e1 e2 2nd membre
1 1 1
Y 3 1 1 3 0 3
e2 4 0 −1 − 32 1 1
3 3
−Z 20 0 −30 −40 0 −40
En modiant la deuxième ligne, cela donne
∗ ∗ Z e1 e2 2nd membre
5 1
Y 0 1 4 2 − 14 1
4
X 1 0 − 34 − 12 3
4
1
4
−Z 0 0 −45 −30 −15 −45
Cela signie que les solutions du problème primal sont x = 30, y = 15 et le minimum vaudra 45. Il faut donc acheter
30 lots de E1 et 15 lots de E2 .
Solution 1.9 1. Sur le marché traditionnel, les 200m3 de chêne couteraient 200 × 140 euros, les 160m3 de sapin
couteraient 160 × 90 euros et les 300m3 de sapin couteraient 300 × 70 euros, soit un total de 63 400 euros.
2. On s'intéresse mainteant aux lots A,B et C
(a) On cherche donc à minimiser Z = 3840a + 3960b + 2880c avec

 a ≥ 0, b ≥ 0, c ≥ 0
15a + 16b + 9c ≥ 0 (chêne)


 15a + 8b + 24x ≥ 160 (hêtre)
20a + 24b + 12c ≥ 300 (sapin)

0
(b) le dual P est donc
0
maximiser Z = 200x + 160y + 300z


 x ≥ 0, y ≥ 0, z ≥ 0
15x + 15y + 20z ≤ 3 840

avec

 16x + 8y + 24z ≤ 3 960
9x + 24y + 12z ≤ 2 880

On obtient la forme standard en introduisant les variables décart :


0
maximiser Z = 200x + 160y + 300z


 x ≥ 0, y ≥ 0, z ≥ 0, e1 ≥ 0, e2 ≥ 0, e3 ≥ 0
15x + 15y + 20z + e1 = 3 840

avec

 16x + 8y + 24z + e2 = 3 960
9x + 24y + 12z + e3 = 2 880

(c) On a donc les tableaux suivants :

x y z e1 e2 e3
e1 15 15 20 1 0 0 3 840
e2 16 8 24 0 1 0 3 960
e3 9 24 12 0 0 1 2 880
0
−Z 200 160 300 0 0 0 0
La variable entrante est donc z et la variable sortante est e2 . On obtient alors :
x y z e1 e2 e3
5 25
e1 3 3 0 1 − 56 0 540
2 1 1
z 3 3 1 0 24 0 165
e3 1 20 0 0 − 12 1 900
0
−Z 0 60 0 0 −12, 5 0 −49 500

17 A. Fredet
Programme linéaire à plusieurs variables (simplexe)

(d) Le troisième tableau est le suivant :

x y z e1 e2 e3 R
5
e1 4 0 0 1 − 85 5
− 12 165
13 1 1
z 20 0 1 0 20 − 60 150
1 1 1
y 20 1 0 0 − 40 20 45
0
Z −3 0 0 0 −11 −3 −52 200

i. L'optimum est atteint au troisième tableau car tous les coecients de la fonction économique sont
0
négatifs ou nuls. Le maximum de P est alors de 52 200 euros. C'est également le minimum du
problème primal P . En dernière ligne du tableau 3, on lit que les valeurs des variables réeles du
primal permettant d'atteindre l'optimum sont a = 0, b = 11 et c = 3. Pour minimiser ses coûts, la
SSV doit donc acheter 0 lot A, 11 lots B et 3 lots C. Le prix correpondant est 52 200 euros, ce uqi
est plus intéressant qu'au marché traditionnel.
ii. On cherche le rabais r tel que 1 + r = 63 400 .
52 200
On trouve r ≈ 0, 1767. Le rabais est donc de 17,67%.
iii. On a achete 3m de chêne en trop (cela se lit dans la première colonne de la dernière ligne du
3

tableau 3).

18 A. Fredet