Vous êtes sur la page 1sur 11

Université Mohamed V- Ecole Supérieure de Technologie de Salé

El Hachmi HAMMOU

Chapitre1. P ROGRAM M AT ION LIN ÉAIRE

L’objectif de la programmation linéaire (P.L.) est de trouver la valeur optimale d’une fonction
linéaire sous un système d’équations d’inégalités de contraintes linéaires. La fonction à
optimiser est baptisée “fonction économique”.
Lorsqu’on peut modéliser un problème sous forme d’une fonction économique à maximiser dans
le respect de certaines contraintes, alors on est typiquement dans le cadre de la programmation
linéaire.
Ce genre de problème s’écrit :

n
max Z =
X
ci x i
i=1
sc
n
j = 1...m
X
aij xi ≤ bj ,
i=1
xi ≥ 0, ci ≥ 0, i = 1 . . . n
bj ≥ 0, j = 1 . . . m

ou

n
min Z =
X
ci x i
i=1
sc
n
j = 1...m
X
aij xi ≥ bj ,
i=1
xi ≥ 0, ci ≥ 0, i = 1 . . . n
bj ≥ 0, j = 1 . . . m

1) RESOLUTION GRAPHIQUE

Cette méthode n’est applicable que dans le cas où il n’y a que deux variables.

1
Exemple 1. Un agriculteur souhaite mélanger des engrais de façon à obtenir au minimum
15 unités de potasse, 20 unités de nitrates et 24 unités de phosphates. Il achète deux types
d’engrais.
— Le type 1 procure 3 unités de potasse, 1 unité de nitrates et 3 unités de phosphates. Il
coûte 120 dh.
— Le type 2 procure 1 unités de potasse, 5 unité de nitrates et 2 unités de phosphates. Il
coûte 60 dh.
Exprimer à l’aide d’un programme linéaire la combinaison d’engrais qui remplira les conditions
exigées au moindre coût.
Solution.
1. Modélisation :
1.1. Identification des variables :
Le coût est fonction des deux quantités achetées des deux types d’engrais.
Soient :
x1 = la quantité d’engrais de type 1 à acheter,
x2 = la quantité d’engrais de type 2 à acheter.
1.2. Fonction objectif :
Le coût Z s’obtient à partir de l’expression,

Z = 120x1 + 60x2 .

L’objectif poursuivi consiste à trouver la combinaison des valeurs x1 et x2 qui minimise le


coût z :

min Z = 120x1 + 60x2 .

1.3. Contraintes :
Les valeurs prises par x1 et x2 sont limitées par les exigences minimales du mélange. Ainsi, il
convient de prendre en compte :
— Contraintes de mélange : Par exemple, il faut au moins 15 unités de potasse dans le mélange.
Ce qui s’écrit :

3x1 + x2 ≥ 15.

De même, pour le nitrates et le phosphate, on écrit

x1 + 5x2 ≥ 20,
3x1 + 2x2 ≥ 24.

2
— Contraintes de non-négativité : Elles assurent que les quantités achetées ne peuvent être
que positives ou nulles :

x1 ≥ 0, x2 ≥ 0.
Le programme linéaire ainsi défini s’écrit :

min Z = 120x1 + 60x2

sc

3x1 + x2 ≥ 15




+ 5x2 ≥ 20

x1





3x1 + 2x2 ≥ 24 .

≥0




 x1

≥0

 x2
2. Résolution graphique

3
Le point optimal est le point (x∗1 , x∗2 ) = (2, 9) et la valeur optimale est Z ∗ = 120 × 2 + 60 × 9 =
780.
Exemple 2. Un maraîcher, vendant des citrons et des oranges, veut les grouper par lots de
vente.
— Le premier lot contient 5 citrons et 1 orange, et se vend à 4 dirhams.
— Le deuxième lot contient 1 citron et 10 oranges, et se vend à 6 dirhams.
Il dispose au total de 60 citrons et 110 oranges. Quelle est la répartition la plus avantageuse
pour lui, entre les deux types de lots ?
Solution. On note :
x1 = le nombre de lots du premier type,
x2 = le nombre de lots du deuxème type.
On obtient facilement la formulation suivante :

max Z = 4x1 + 6x2 ,


sc
5x1 + x2 ≤ 60



1 + 10x2 ≤ 110

 x



 x1 ≥0

x2 ≥ 0.

Résolution graphique

4
Donc x∗1 = 10, x∗2 = 10 et Z ∗ = 100.
Exercice 1. Un atelier fabrique des tables et des bureaux.
— Chaque table nécessite 2, 5 h pour l’assemblage, 3 h pour le polissage et 1 h pour la mise
en caisse.
— Chaque bureau exige 1 h pour l’assemblage, 3 h pour le polissage et 2 h pour la mise en
caisse.
L’entreprise ne peut disposer, chaque semaine, de plus de 10 h pour l’assemblage, de 15 h
pour le polissage et de 8 h pour la mise en caisse.
Sa marge de profit est de 30 dh par table et de 40 dh par bureau.
Combien de tables et de bureaux doit-on produire afin d’obtenir un profit hebdomadaires
maximal ?
Exercice 2. Une entreprise fabrique deux produits A et B, en utilisant une machine m et
deux matières premières p et q. On suppose que :
— la production d’une unité de A nécessite 2 kg de p et 9 kg de q, et utilise la machine m
durant 1 heure ;
— la production d’une unité de B nécessite 2 kg de p et 4 kg de q, et utilise la machine m
durant 2 heure. Les profits réalisés sont de :

5
50 dh par unité de A et 60 dh par unité de B.
On dispose chaque jour de : 8 heures de m, de 10 kg de p et de 36 kg de q. L’objectif que
poursuit l’entreprise est de maximiser le profit qu’elle pourra tirer, par jour, de ces 2 produits
en utilisant au mieux ses ressources. Autrement dit :
Combien d’unités de A et de B doit-on produire afin d’obtenir un profit maximal ?
Exercice 3. La SAUDEL, entreprise industrielle assurant la fabrication et la vente de pièces
métalliques, envisage de confier à son unité de production du Nord-Est l’élaboration de
coussinets (A) et de paliers (B) demandés par certains industriels.
Cette fabrication devra répondre aux contraintes mensuelles suivantes :
Fabrication minimale : coussinets (A) : 4 000 unités ; paliers (B) : 5000 unités.
La matière première sera livrée par l’usine principale à l’unité de production qui devra traiter
un minimum de 36 000 kg de matière ; en ce qui concerne la main-d’œuvre, et compte tenu
des perspectives de développement ultérieur, le maximum sera fixé à 10000 heures.
Données complémentaires :

Nombre d’unités nécessaires pour un produit


Eléments Unité
A B
Matière première Kg 2 3
Main-d’œuvre heure MO 1 0.5
Poids par produit fini (en Kg) 1.5 2

Déterminer, par la méthode graphique, le programme mensuel de la fabrication des coussinets


(A) et des paliers (B), sachant que le coût des transports, mis en place entre l’unité de
production et l’usine principale pour l’acheminement des matières premières et le retour des
produits finis devra être rendu minimal : le prix de ce transport a été estimé à 2 DH par Kg
de matière première ou de produit fini transporté.

2) Méthode de simplexe

Un probléme sous forme canonique s’écrit

max z = c1 x1 + c2 x2 + ... + cn xn ,
sc
a11 x1 + a12 x2 + ... + a1n xn ≤ b1
a21 x1 + a22 x2 + ... + a2n xn ≤ b2
..
.
am1 x1 + am2 x2 + ... + amn xn ≤ bm
x1 ≥ 0, x2 ≥ 0, . . . , xn ≥ 0.

Sa forme standard s’écrit

6
max z = c1 x1 + c2 x2 + ... + cn xn ,
sc
a11 x1 + a12 x2 + ... + a1n xn + e1 = b1
a21 x1 + a22 x2 + ... + a2n xn + e2 = b2
..
.
am1 x1 + am2 x2 + ... + amn xn + em = bm
x1 ≥ 0, x2 ≥ 0, . . . , xn 0,
e1 ≥ 0, e2 ≥ 0, . . . , em ≥ 0.

Résolution
Nous supposons que les contraintes délimitent un polyèdre convexe, région des solutions
admissibles et la fonction objectif est un hyperplan que l’on va déplacer le plus loin possible de
l’origine, jusqu’à l’extrême limite où il n’y aura plus qu’un point d’intersection (éventuellement
un segment, un plan. . . ) avec la région des solutions admissibles.
La solution se trouvant forcément sur le pourtour du polyèdre admissible, la méthode du
simplexe consiste en itérations qui font passer d’un sommet du polyèdre à un autre en
sélectionnant le sommet adjacent maximisant la fonction objectif.
Pour démarrer l’algorithme, il est nécessaire d’avoir une solution initiale. Dans le cas simple,
l’origine est solution, c.à.d. que la première solution est x1 = x2 = . . . xn = 0.
L’algorithme, basé sur la méthode du pivot de Gauss pour la résolution des systèmes
d’équations linéaires, est présenté sous forme de tableau.
Prenons les données de l´exemple 2, le programme linéaire sous sa forme canonique s´écrit
M ax(Z = 4x1 + 6x2 )
5x1 + x2 + = 60


 e1
sc x1 + 10x2 + e2 = 110
x1 , x 2 , e1 , e 2 > 0

En ne conservant que les coefficients des équations ci-dessus, on obtient le tableau de départ
suivant :
Initialisation
x1 x2 . . B R
e1 5 1 1 0 60 60
e2 1 10 0 1 110 11
M ax 4 6 0 0 0
Critère de sélection de la variable entrant dans la base :
On sélectionne la variable HB ayant le plus grand coefficient positif dans la dernière ligne.
Dans notre cas x2 est la variable entrant.
B
On calcule le rapport R = élément par élément.
la colonne x2

7
Critère de sélection de la variable sortant de la base :
On sélectionne la variable dans la Base ayant le plus petit coefficient positif dans la colonne
R.
Dans notre cas e2 est la variable sortant.
La colonne x2 est la colonne pivot, la ligne e2 est la ligne pivot ( Lpivot ) et l´intersection des
deux est le pivot.
Dans notre cas pivot = 10.
Dans le tableau suivant
Lpivot
1. L0pivot = ,
pivot
2. on remplace les élémens de la colone pivot autre que le pivot par des 0.
3. on remplace les autres éléments e par e0 en applicant la règle du rectangle (on forme le
rectangle de sommetst e, a, pivot, b):
ab
e0 = e − ,
pivot

et on refait la même chose pour la détermination de Cpivot , Lpivot , pivot de ce nouveau tableau.
Après les calculs, on obtient le tableau suivant
x1 . .e2 B R
49 1
e1 0 1 − 49 10
10 10
1 1
x2 1 0 11 110
10 10
17 3
M ax 0 0 − −66
5 5
De la même facon, on obtient le tableau suivant
. .e1 e2 B
10 1
x1 1 0 − 10
49 49
1 5
x2 0 1 − 10
49 49
34 26
M ax 0 0 − − −100
49 49
Critère d’arrêt des itérations :
Si tous les coefficients de la dernière ligne sont négatifs ou nuls, la solution trouvée est
optimale.
La solution est x∗1 = x∗2 = 10 et Z ∗ = 100

8
3) Variables artificielles

Dans un programme standard provenant d’un programme canonique du type

F orme canonique F orme standard


min Z = x + y min Z = x + y + 0e1 + 0e2
x ≥ 0; y ≥ 0 x ≥ 0; y ≥ 0; e1 ≥ 0; e2 ≥ 0

7x + 5y ≥ 40 7x + 5y − e1 = 40
1x + 4y ≥ 9 1x + 4y − e2 = 9

Si on fixe x = y = 0 alors e1 = −40 et e2 = −9, mais cette solution n’est pas admissible car
elle ne respecte pas les contraintes de positivité. Il faut introduire des variables artificielles
afin d’obtenir un programme standard du type précédent. Ces variables jouent le même rôle
que les variables d’écart du programme précédent. Elles sont affectées du coefficient +1. Elles
sont traitées comme les autres variables dans les calculs.

min Z = x + y + 0e1 + 0e1 + M a1 + M a2


x ≥ 0, y ≥ 0, e1 ≥ 0, e2 ≥ 0, a1 ≥ 0, a2 ≥ 0
7x + 5y − e1 + a1 = 40
1x + 4y − e2 + a2 = 9

Les variables artificielles interviennent exclusivement dans les contraintes égalités où iné-
galités tournées dans le sens “supérieur ou égal à”, le second membre étant positif et ceci
indépendamment de la nature de l’objectif.
Si l’objectif est un maximum les variables artificielles doivent être pénalisées dans la fonction
économiques pas un coefficient de valeur absolue très élevée mais précédé d’un signe -, on le
note −M avec M > 0.
Si l’objectif est un minimum les variables artificielles doivent être pénalisées dans la fonction
économiques par un coefficient de valeur absolue très élevée mais précédé d’un signe +, on le
note +M avec M > 0.
M étant suffisamment grand pour que l’on soit sûr que les variables artificielles soient exclues

9
de la solution optimale.
Cj 1 1 0 0 M M B R
x y e1 e2 a1 a2
M a1 7 5 -1 0 1 0 40 8
9
M a2 1 4 0 -1 0 1 9
4
Zj 8M 9M -M -M M M
Cj − Zj 1 − 8M 1 − 9M M M 0 0
23 5 5 115
M a1 0 -1 1 − 5
4 4 4 4
1 1 1 9
1 y 1 0 − 0 9
4 4 4 4
1 23 1 5 1 5
Zj + M 1 −M − + M M − M
4 4 4 4 4 4
3 23 1 5 1 9
Cj − Zj − M 0 M − M 0 − + M
4 4 4 4 4 4
4 5 4 5
1 x 1 0 − − 5
23 23 23 23
1 7 1 7
1 y 0 1 − − 1
23 23 23 23
3 2 3 2
Zj 1 1 − −
23 23 23 23
3 2 3 2
Cj − Zj 0 0 M− M−
23 23 23 23

4) DUALITÉ

A tout programme linéaire appelé PRIMAL correspond un programme linéaire appelé DUAL
obtenu de la manière suivante:
PRIMAL DUAL
max min
m contraintes d’inférioritén n contraintes de supériorité
n variables d’activité m variables d’activité
m variables d’écart n variables d’écart
écriture en ligne écriture en colonne
A l’optimum, le primal et le dual sont liés par les règles suivantes:
• les fonctions objectifs Z et W ont la même valeur optimale,
• la valeur marginale d’une variable dans un programme est égale à l’opposé de la valeur
optimale de la variable associée dans l’autre programme et réciproquement.
Exemple :
P RIM AL DU AL
max Z = 15x1 + 20x2 + 24x3 min W = 120y1 + 60y2
3x1 + 1x2 + 3x3 ≤ 120 3y1 + 1y2 ≥ 15
1x1 + 5x2 + 2x3 ≤ 60 1y1 + 5y2 ≥ 20
3y1 + 2y2 ≥ 24
x1 , x2 , x3 ≥ 0 y1 , y2 ≥ 0

10
Par la méthode du simplexe, on trouve :
Initialisation x1 x2 x3 . .
e1 3 1 3 1 0 120
e2 1 5 2 0 1 60
M ax 15 20 24 0 0 0

Itération1 x1 x2 . . e2
3 13 3
e1 − 0 1 − 30
2 2 2
1 5 1
x3 1 0 30
2 2 2
M ax 3 −40 0 0 −12 −720
Itération2 . x2 . e1 e2
13 2
x1 1 − 0 −1 20
3 3
14 1
x3 0 1 − 1 20
3 3
M ax 0 −27 0 −2 −9 −780
(x∗1 , x∗2 , x∗3 ) = (20, 0, 20) et Z ∗ = 780.
Déduction :
(y1∗ , y2∗ ) = (2, 9) et W ∗ = 780 (voir la solution de l´exemple 1).

11

Vous aimerez peut-être aussi