Recherche opérationnelle : programme linéaire à plusieurs variables (simplexe) Anne Fredet,
[email protected]
Table des matières 1 Programmation linéaire à plusieurs variables 1.1 Dénitions . . . . . . . . . . . . . . . . . . . . . 1.2 Méthode du simplexe . . . . . . . . . . . . . . . 1.2.1 Idée . . . . . . . . . . . . . . . . . . . . 1.2.2 Système canonique . . . . . . . . . . . . 1.2.3 Système générique . . . . . . . . . . . . 1.2.4 Algorithme du simplexe . . . . . . . . . 1.2.5 Contraintes saturées et gains marginaux 1.2.6 Exercices . . . . . . . . . . . . . . . . . 1.3 Méthode duale . . . . . . . . . . . . . . . . . . 1.3.1 Dénition . . . . . . . . . . . . . . . . . 1.3.2 Exercices . . . . . . . . . . . . . . . . . 1.4 Applications . . . . . . . . . . . . . . . . . . . . 1.5 Solutions des exercices . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
1
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
2 . 2 . 2 . 2 . 2 . 3 . 4 . 7 . 8 . 8 . 8 . 9 . 9 . 12
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 minimum) 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 : minimiser (ou maximiser) z(x) =
n X
cj xj
fonction objectif
i=1
sous les contraintes
≤ = aij xj b i j=1 ≥
n X
i = 1, · · · , m
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 ) alors on devrait avoir x + 2y > 4 y>1 (L2 − L1 )
c'est à dire
y1
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 :
e1 e2 .. . ep −Z
x1 a11 a21
x2 a12 a22
··· ··· ···
ap1 c1
ap2 c2
··· ···
xn a1n a2n .. . apn cp
e1 1 0
e2 0 1
··· 0 0
ep 0 0
0 0
0 0
··· ···
1 0
b1 b2 .. . bp 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 : e1 e2 e3 e4 −Z
x1 1 0 3 1 3
x2 1 1 4 0 −1
x3 0 0 0 1 1
e1 1 0 0 0 0
e2 0 1 0 0 0
e3 0 0 1 0 0
e4 0 0 0 1 0
1 2 12 3 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 0≤
bj bk ≤ 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 minimal. La variable correspondant à cette ligne est la variable sortante.
Exemple 1.3
bk aki
soit positif et
Si on considère l'exemple précédent, on avait le tableau suivant : e1 e2 e3 e4 −Z
x1 1 0 3 1 3
x2 1 1 4 0 −1
x3 0 0 0 1 1
e1 1 0 0 0 0
e2 0 1 0 0 0
e3 0 0 1 0 0
e4 0 0 0 1 0
1 2 12 3 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 e2 e3 e4 −Z
x1 1 0 0 0 0
x2 1 1 1 −1 −4
x3 0 0 0 1 1
e1 1 0 −3 −1 −3
e2 0 1 0 0 0
e3 0 0 1 0 0
e4 0 0 0 1 0
1 2 9 2 −3
on eectue L3 ← L3 − 3L1 on eectue L4 ← L4 − L1 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 e2 e3 x3 −Z
x1 1 0 0 0 0
x2 1 1 1 −1 −3
x3 0 0 0 1 0
e1 1 0 −3 −1 −2
e2 0 1 0 0 0
e3 0 0 1 0 0
e4 0 0 0 1 −1
1 2 9 2 −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 + 11 2 x2 + 7x3 + 8x4 ) La résolution de ce programme nous donnes ces tableaux successifs :
x1 3 7 1 6
e1 e2 e3 −Z
x2 2 8 1 11 2
x3 4 10 1 7
x4 e1 3 1 12 0 1 0 8 0
e2 0 1 0 0
e3 0 0 1 0
70 120 15 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 e1 x4 e3 −Z
5 4 7 12 5 12 4 3
x2 0 2 3 1 3 1 6
x3 3 2 5 6 1 6 − 23
x4 0 1 0 0
e1 1 0 0 0
e2 0 1 12 1 − 12 − 23
e3 0 0 1 0
40 10 5 −80
on eectue L1 ← L1 − 14 L2 1 L2 on eectue L2 ← 12 1 on eectue L3 ← L3 − 12 L2 2 on eectue L4 ← L4 − 3 L2
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 :
e1 x4 x1 −Z
x1 0 0 1 0
x2 −1 − 53 3
4 5 9 − 10
x3 1 3 5 2 5 − 65
x4 0 1 0 0
e1 1 0 0 0
e2 0 1 5 − 15 − 25
e3 −3 − 75
25 3 12 −96
12 5 − 36 15
on eectue L1 ← L1 − 3L3 on eectue L2 ← L2 − 75 L3 on eectue L3 ← 12 5 L3 on eectue L4 ← L4 − 16 5 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 3 7 1 6
x2 2 8 1 11 2
x3 4 10 1 7
x4 3 12 1 8
e1 1 0 0 0
e2 0 1 0 0
e3 0 0 1 0
70 120 15 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 5 4 7 12 5 12 4 3
x2 0 2 3 1 3 1 6
x3 3 2 5 6 1 6 − 23
x4 0 1 0 0
e1 1 0 0 0
e2 0 1 12 1 − 12 − 32
e3 0 0 1 0
40 10 5 −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 0 0 1 0
x2 −1 − 53 3 4 5 9 − 10
x3 1 3 5 2 5 − 65
x4 0 1 0 0
e1 1 0 0 0
e2 0 1 5 − 51 − 52
e3 −3 − 75
12 5 36 − 15
25 3 12 −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 variables :x1 , x2 contraintes : a11 x1 + a12 x2 ≤ b1 a21 x1 + a22 x2 ≤ b2 a31 x1 + a32 x2 ≤ b3 a41 x1 + a42 x2 ≤ b4 fonction économique : z1 = c1 x1 + c2 x2
dual variables :y1 , y2 , y3 , y4 contraintes :
a11 y1 + a21 y2 + a31 y3 + a41 y4 ≥ c1 a12 y1 + a22 y2 + a32 y3 + a42 y4 ≥ c2 fonction économique : 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 :
x1 2 1 1 0 20
x2 1 1 0 1 30
état initial e1 e2 e3 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0
e4 0 0 0 1 0
1 000 800 400 700 0
x1 0 1 0 0 0
x2 0 0 0 1 0
e1 1 0 0 0 0
état optimal e2 e3 e4 −2 0 1 1 0 −1 −1 1 −1 0 0 1 −20 0 −10
100 100 300 700 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 2u + u2 + u3 + u4 ≥ 20 1 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 : découpe emboutissage polissage inox (mat. première) prix de vente (H.T.)
coût horaire 20 euros 30 euros 40 euros
lot A 1h 1, 5 h 1, 5 h 40 euros 200 euros
lot B 0, 5 h
1h 85 euros 180 euros
lot C 2h 1h 1h 38 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 e1 z y 0 Z
5 4 13 20 1 20
−3
y 0 0 1 0
z 0 1 0 0
e1 1 0 0 0 10
e2 − 85
1 20 1 − 40
−11
e3 5 − 12 1 − 60 1 20
−3
R 165 150 45 −52 200 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 2 2 −4 2
e1 e2 e3 −Z
x2 −1 −4 3 1
x3 2 0 8 1
e1 1 0 0 0
e2 0 1 0 0
e3 0 0 1 0
7 12 10 0
La solution de base est alors x1 = x2 = x3 = 0, e1 = 7, e2 = 12, e3 = 10, Z = 0.
x1 1 0 0 0
x1 e2 e3 −Z
x2 − 12 −3 1 2
x3 1 −2 12 −1
e1 1 2
−1 2 −1
e2 0 1 0 0
e3 0 0 1 0
7 2
5 24 −7
La solution est alors x2 = x3 = e1 = 0, x1 = 72 , e2 = 5, e3 = 24 et Z = 7.
x1 e2 x2 −Z
x1 1 0 0 0
x2 0 0 1 0
x3 e1 7 2 34 5 12 2 −25 −5
e2
e3
1 2
1 2
31 2
1 0 0
3 1 −2
77 24 −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)
e1 e2 e3 e4 −Z
x1 1 0 1 2 3
x2 0 1 1 1 4
x3 0 0 2 1 2
e1 1 0 0 0 0
e2 0 1 0 0 0
e3 0 0 1 0 0
e4 0 0 0 1 0
100 150 200 300
La solution de base est alors x1 = x2 = x3 = 0, e1 = 100, e2 = 150, e3 = 200, e4 = 300, Z = 0.
e1 x2 e3 e4 −Z
x1 1 0 1 2 3
x2 0 1 0 0 0
x3 0 0 2 1 2
e1 1 0 0 0 −3
e2 0 1 −1 −1 0 12
e3 0 0 1 0 0
e4 0 0 0 1 0
100 150 50 100 −600 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.
e1 x2 x1 e4 −Z
x1 0 0 1 0 0
x2 0 1 0 0 0
x3 −2 0 2 −3 −4
e1 1 0 0 0 0
e2 1 1 −1 −1 −1
e3 −1 0 1 −2 −3
e4 −1 0 0 1 0
50 150 50 50 −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 : usinage traitement thermique matière première nition marge
article A 1h 3h 2kg
30
article B 2h 3h 1kg 1h 20
dispo max 80h 150h 80kg 35h
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 :
e1 e2 e3 e4 −Z
x 1 1 2 0 30
y 2 1 1 1 20
e1 1 0 0 0 0
e2 0 1 0 0 0
13
e3 0 0 1 0 0
e4 0 0 0 1 0
80 50 80 35 0
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 :
e1 e2 x e4 −Z
x 0 0 1 0 0
y 3 2 1 2 1 2
1 5
e1 1 0 0 0 0
e2 0 1 0 0 0
e3 − 12 − 12 1 2
0 −15
e4 0 0 0 1 0
40 10 40 35 −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 :
e1 y x e4 −Z
x 0 0 1 0 0
y 0 1 0 0 0
e1 1 0 0 0 0
e2 e3 e4 −3 1 0 2 −1 0 −1 1 0 −2 1 1 −10 −10 0
10 20 30 15 −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
e1 y x e4 −Z
x 0 0 1 0 0
y 0 1 0 0 0
e1 1 0 0 0 0
e2 e3 e4 −3 1 0 2 −1 0 −1 1 0 −2 1 1 −10 −10 0
10 20 30 15 −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 :
∗ 1 0 0
x y 2 4 30 15 7 6
e1 e2 −Z
∗ 0 1 0
200 1200 0
qui nous donne
e1 x −Z
e2 0 1 0
∗ 1 0 0
y 3 1 2 5 2
∗ 1 − 15
120 40 −280
1 30 7 − 30
On obtient
y x −Z
e2 0 1 0
e1 1 0 0
∗
∗ 1 − 45
1 3 − 16 − 56
40 20 −380
1 15 2 − 30
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
e1 e2 e3 −Z
x1 1 1, 5 1, 5 35
x2 0, 5 0 1 45
∗ 1 0 0 0
x3 2 1 1 72
∗ 0 1 0 0
∗ 0 0 1 0
120 120 120 0
qui nous donne
x3 e2 e3 −Z
x1 0, 5 1 1 −1
x2 e1 0, 25 1 −0, 25 0 0, 75 0 27 0
∗ 0, 5 −0, 5 −0, 5 −36 15
∗ 0 1 0 0
∗ 0 0 1 0
60 60 60 −4 320 A. Fredet
Programme linéaire à plusieurs variables (simplexe)
On obtient
x1 1 6 4 3 4 3
x3 e2 x2 −Z
−37
e3 0 0 1 0
∗
∗ 0 1 0 −18 0
e1 1 0 0 0
∗ − 31
2 3 − 32 − 32
40 80 80 −36 −6 480 1 3 4 3
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 8 2 15 1, 2
e1 e2 e3 −Z
y 5 2 25 1
∗ 1 0 0 0
∗ 0 1 0 0
∗ 0 0 1 0
2nd membre 1600 520 5 000 0
rapports 200 260 1 000 3
0
En modiant la ligne e1 , cela nous donne
x e2 e3 −Z
∗ 1 0 0 0
y e1 0, 625 0, 125 0, 75 −0, 25 15, 625 −1, 875 0, 25 −0, 15
∗ 0 1 0 0
∗ 0 0 1 0
2nd membre 200 120 2 000 −240
rapports 320 160 128
En modiant la ligne e3 , cela nous donne
x e2 y −Z
∗ 1 0 0 0
∗ 0 0 1 0
e1 0, 2 −0, 16 −0, 12 −0, 12
∗ 0 1 0 0
e3 −0, 04 −0, 048 0, 064 −0, 016
2nd membre 120 24 128 −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 :
e1 e2 −Z
X Y 1 3 2 2 60 120
Z e1 3 1 1 0 90 0 16
e2 0 1 0
2nd membre 1 1 0 A. Fredet
Programme linéaire à plusieurs variables (simplexe)
En modiant la première ligne, on obtient
∗ 1 4 0 3 20 0 X
Y e2 −Z
e2 0 1 0
2nd membre
e2 − 14
2nd membre
Z e1 1 1 3 −1 − 32 −30 −40
1 3
1 3 1 3
−40
En modiant la deuxième ligne, cela donne
Y X −Z
∗ 0 1 0
∗ 1 0 0
Z
e1
5 4 − 34
1 2 − 12
1 4 1 4
3 4
−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 :
e1 e2 e3 0 −Z
x 15 16 9 200
y 15 8 24 160
z e1 20 1 24 0 12 0 300 0
e2 0 1 0 0
e3 0 0 1 0
3 840 3 960 2 880 0
La variable entrante est donc z et la variable sortante est e2 . On obtient alors :
e1 z e3 0 −Z
x
y
5 3 2 3
25 3 1 3
1 0
20 60
z 0 1 0 0
e1 1 0 0 0 17
e2 − 56 1 24 − 12
−12, 5
e3 0 0 1 0
540 165 900 −49 500 A. Fredet
Programme linéaire à plusieurs variables (simplexe)
(d) Le troisième tableau est le suivant :
x e1 z y 0 Z
5 4 13 20 1 20
−3
y 0 0 1 0
z 0 1 0 0
e1 1 0 0 0
e2 − 85
1 20 1 − 40
−11
e3 5 − 12 1 − 60 1 20
−3
R 165 150 45 −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 =
52 200 63 400 .
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 tableau 3). 3
18
A. Fredet