Programmation Linéaire
Programmation Linéaire
1. Modélisation
3. Résolution graphique
4. Méthode du simplexe
2 / 54
Section 1 : Modélisation
3 / 54
Problème de production
Example
• Un fabricant produit 2 types de yaourts A et B à partir de Fraise, de Lait et de
Sucre. Chaque yaourt doit respecter les proportions suivantes de matières premières :
Yaourt A Yaourt B
Fraise 2 1
Lait 1 2
Sucre 0 1
• On dispose de 800 Kg de Fraises, 700 Kg de Lait et 300 Kg de sucre.
• La vente de 1 Kg de yaourts A et B rapporte respectivement 4$ et 5$.
• Le fabricant cherche à maximiser son profit.
4 / 54
Modélisation
Modélisation :
• Sur quelles quantités peut-on travailler ?
5 / 54
Modélisation
Modélisation :
• Sur quelles quantités peut-on travailler ?
- Les quantités de yaourts A et B produites
- On parle de variables
- On les notera xA et xB
6 / 54
Modélisation
Modélisation :
• Sur quelles quantités peut-on travailler ?
6 / 54
Modélisation
Modélisation :
• Sur quelles quantités peut-on travailler ?
6 / 54
Modélisation
Modélisation :
• Sur quelles quantités peut-on travailler ?
variables : xA et xB
7 / 54
Modélisation : Programme linéaire
8 / 54
Section 2 : Formes d’un programme linéaire
9 / 54
Forme générale d’un programme linéaire
La forme générale d’un programme linéaire s’écrit :
X n
max/min z = cj xj (1)
j=1
Xn ⩽
s.c. ai,j j = bi , i = 1, 2, · · · , m (2)
x
⩾
j=1
j = 1, 2, · · · , n (3)
xj ⩾ 0,
Définitions :
• On appelle solution réalisable tout n-uplet (x1 , · · · , xn ) vérifiant les contraintes.
• On appelle solution optimale toute solution réalisable qui optimise la fonction
objectif.
• L’ensemble des solutions réalisables d’un programme linéaire est appelé domaine
réalisable.
Lorsque ce domaine est non vide, on dit que le PL est réalisable.
11 / 54
Forme matricielle d’un programme linéaire
– Notations :
x = (x1 , x2 , · · · , xn )⊤ ∈ Rn×1 , c = (c1 , c2 , · · · , cn ) ∈ R1×n
A = (ai,j ) ∈ Rm×n , b = (b1 , b2 , · · · , bm )⊤ ∈ Rn×1
13 / 54
Adaptation au forme standard
Example
Étant donné le programme linéaire suivant :
min −x1 +x2
s.c. −2x1 +x2 ⩾ 3
x1 +x2 ⩽ 1
x1 ⩾ 0 et x2 qlq.
• La variable x2 de signe qlq, donc on introduit deux variables positives x21 et x22 , avec
x2 = x21 − x22 .
• Le problème prend alors la forme suivante :
x1 −x21 +x22
max
s.c. −2x1 +x21 −x22 −x3
=3
1
x1 +x2 −x2 2 +x4 = 1
x1 , x21 , x22 , x3 , x4 ⩾ 0
14 / 54
Section 3 : Résolution graphique
15 / 54
Résolution graphique
• On considère le programme linéaire sous forme canonique suivant :
min / max z = c ⊤ x
(P) s.c. Ax ⩽ b
x ⩾0
X = {x ∈ Rn | Ax ⩽ b, x ⩾ 0}.
Théorème :
Si le problème (P) admet une solution optimale, alors l’optimum (minimum ou
maximum) est atteint en un sommet du polyèdre X .
16 / 54
Utilisation et Principe
Utilisation :
La méthode graphique est une méthode simple et s’applique à des problèmes de
programmation linéaire à deux variables.
Principe de la méthode :
• Consiste à dessiner le polyèdre convexe représentant l’ensemble des contraintes et à
parcourir les sommets jusqu’à trouver celui qui optimise la fonction objectif.
• Les contraintes économiques et de signe sont représentées graphiquement par des
demi-plans dont l’intersection est un ensemble convexe.
• Les solutions, si elles existent, appartiennent donc à l’ensemble des solutions
réalisables.
17 / 54
Étapes
Étapes :
• Créer un système de coordonnées cartésiennes, dans lequel chaque variable de
décision est représentée par un axe.
• Dessiner les contraintes du problème.
Une inéquation précise une région qui sera le demi-plan limité par la ligne droite
obtenue en considérant la contrainte comme égalité.
L’intersection de toutes les régions détermine le domaine réalisable (qui est un
ensemble convexe).
• Déterminer les sommets du polygone qui forme le domaine réalisable.
Ces points seront les candidats à la solution optimale.
• Chercher la direction de diminution (augmentation) de la valeur de z, et déplacer
parallèlement la droite de la fonction objectif suivant cette direction jusqu’au dernier
sommet de la région.
Ce sommet représente solution optimale. 18 / 54
Exemple
Example
Considérons le programme linéaire suivant :
max 3x1 +2x2
s.c. 2x1 +x2 ⩽ 18
2x1 +3x2 ⩽ 42
3x1 +x2 ⩽ 24
x1 , x2 ⩾ 0
19 / 54
Exemple (cont.)
20 / 54
Exemple (cont.)
• Les sommets de l’ensemble réalisable (du polygone ABCDE) et les valeurs
correspondantes de la fonction objectif z = 3x1 + 2x2 :
Sommet Coordonnées (x1 , x2 ) Valeur de z
A (0,0) 0
B (0,14) 28
C (3,12) 33
D (6,6) 30
E (8,0) 24
21 / 54
Exercice
Exercice :
Considérons le programme linéaire suivant :
min x1 − x2
s.c. 2x1 + x2 ⩾ 2
x1 + 3x2 ⩽ 5
x1 ⩾ 0, x2 ⩾ 0
22 / 54
Exercice (cont.)
23 / 54
Section 4 : Méthode du simplexe
24 / 54
Principes
• La résolution par la méthode du simplexe utilise la forme standard :
max z = c ⊤ x
(max ou min)
(P) s.c. Ax = b
x ⩾0
xB ∈ Rm sont des variables de base et xN ∈ Rn−m sont des variables hors base.
25 / 54
Principes (cont.)
Example
Si la matrice A est donnée par :
1 2 2 1 3
A= 2 1 0 5 1
2 0 1 4 3
Définitions :
• La solution x = (xB , xN )⊤ du système Ax = b obtenue en posant xB := A−1
B b et
xN := 0 est appelée solution de base.
• De plus, on dit que x est une solution de base réalisable si A−1
B b ⩾ 0.
Définitions :
• Le vecteur c̄N⊤ := cN⊤ − cB⊤ A−1
B AN est appelé vecteur des coûts réduits.
• Le problème (P) s’écrit sous la forme (appelée forme canonique dans la base B) :
−1
max z = cB⊤ AB b + c̄N⊤ xN
(max ou min)
−1 −1
s.c. xB = AB b − AB AN xN
xB , xN ⩾ 0
Théorème d’optimalité :
Soit x une solution de base réalisable. Si c̄N ⩽ 0, alors x est optimale.
28 / 54
Algorithme du simplexe
Étape 0. Choisir une base réalisable B et poser k = 0.
Étape 1. A l’itération k, on a une base B et la solution de base correspondante
⊤
x = A−1 B b, 0 . Calculer b̄ = A−1 ⊤ ⊤ −1
B b et c̄N = cN − cB AB AN .
Étape 2. Si c̄N ⩽ 0, Stop; le maximum est atteint. Sinon, calculer
n o
c̄j := max c̄k | c̄k > 0
k∈N
32 / 54
Application (cont.)
• Le 1er tableau du simplexe :
x1 x2 x3 x4
x3 2 3 1 0 40
x4 4 2 0 1 48
20 25 0 0 0
• On cherche la variable qui va entrer en base :
x1 x2 x3 x4
x3 2 3 1 0 40
x4 4 2 0 1 48
20 25 0 0 0
On a c̄N⊤ = (20, 25) ⩽̸ 0. La solution de base n’est pas optimale : il y a des coûts
réduits positifs. On va choisir 25 le plus positif1 . Donc, la variable x2 va entrer en
base.
1
Règle de Dantzig, mais on peut choisir 20 et on va arriver à la même solution optimale vers la fin.
33 / 54
Application (cont.)
• On cherche la variable qui va sortir de base :
40 ÷ 3 = 40/3
48 ÷ 2 = 24
On choisit la variable qui correspond au plus petit quotient, dans ce cas, la variable
x4 .
x1 x2 x3 x4
x3 2 3 1 0 40
x4 4 2 0 1 48
20 25 0 0 0
L’intersection de la colonne de variable qui entre en base x2 et la ligne de variable qui
sort de base x3 est appelé le pivot ā32 = 3 (élément en jaune).
34 / 54
Application (cont.)
Règles de pivotage :
• Dans la 1ère ligne, on remplace x3 par x2 (et on garde x4 )
• Les coefficients de la ligne du pivot sont divisés par le pivot.
• Les coefficients de la colonne du pivot (sauf le pivot) sont nuls.
• Si la ligne de pivot rencontre une colonne en un 0, alors la colonne est inchangée.
• Si une ligne rencontre la colonne de pivot en un 0, alors la ligne est inchangée.
x1 x2 x3 x4
x2 . . . . .
x4 . . . . .
. . . . .
35 / 54
Application (cont.)
Règles de pivotage :
• Dans la 1ère ligne, on remplace x3 par x2 (et on garde x4 )
• Les coefficients de la ligne du pivot sont divisés par le pivot.
• Les coefficients de la colonne du pivot (sauf le pivot) sont nuls.
• Si la ligne de pivot rencontre une colonne en un 0, alors la colonne est inchangée.
• Si une ligne rencontre la colonne de pivot en un 0, alors la ligne est inchangée.
x1 x2 x3 x4
x2 2/3 1 1/3 0 40/3
x4 . . . . .
. . . . .
35 / 54
Application (cont.)
Règles de pivotage :
• Dans la 1ère ligne, on remplace x3 par x2 (et on garde x4 )
• Les coefficients de la ligne du pivot sont divisés par le pivot.
• Les coefficients de la colonne du pivot (sauf le pivot) sont nuls.
• Si la ligne de pivot rencontre une colonne en un 0, alors la colonne est inchangée.
• Si une ligne rencontre la colonne de pivot en un 0, alors la ligne est inchangée.
x1 x2 x3 x4
x2 2/3 1 1/3 0 40/3
x4 . 0 . . .
. 0 . . .
35 / 54
Application (cont.)
Règles de pivotage :
• Dans la 1ère ligne, on remplace x3 par x2 (et on garde x4 )
• Les coefficients de la ligne du pivot sont divisés par le pivot.
• Les coefficients de la colonne du pivot (sauf le pivot) sont nuls.
• Si la ligne de pivot rencontre une colonne en un 0, alors la colonne est inchangée.
• Si une ligne rencontre la colonne de pivot en un 0, alors la ligne est inchangée.
x1 x2 x3 x4
x2 2/3 1 1/3 0 40/3
x4 . 0 . 1 .
. 0 . 0 .
35 / 54
Application (cont.)
Règles de pivotage :
• Les autres coefficients sont obtenus par la règle :
CPivot × LPivot
EC −
Pivot
avec
EC : élément concerné
CPivot: élément de la colonne du pivot
LPivot: élément de la ligne du pivot
x1 x2 x3 x4
x2 2/3 1 1/3 0 40/3
x4 . 0 . 1 .
. 0 . 0 . 36 / 54
Application (cont.)
Règles de pivotage :
• Les autres coefficients sont obtenus par la règle :
CPivot × LPivot
EC −
Pivot
avec
EC : élément concerné
CPivot: élément de la colonne du pivot
LPivot: élément de la ligne du pivot
x1 x2 x3 x4
x2 2/3 1 1/3 0 40/3
x4 8/3 0 −2/3 1 64/3
10/3 0 −25/3 0 −1000/3 36 / 54
Application (cont.)
• On suit les mêmes étapes précédentes :
x1 x2 x3 x4 quotient
x2 2/3 1 1/3 0 40/3 40/3 ÷ 2/3 = 20
x4 8/3 0 −2/3 1 64/3 64/3 ÷ 8/3 = 8
10/3 0 −25/3 0 −1000/3
La variable x1 entre en base et x4 sort de base.
• D’après les opérations de pivotage on obtient le 3ème tableau du simplexe :
x1 x2 x3 x4
x2 0 1 1/2 −1/4 8
x1 1 0 −1/4 3/8 8
0 0 −15/2 −5/4 −360
• On a c̄N = (−15/2, −5/4) ⩽ 0, la solution est donc optimale :
x = (8, 8, 0, 0) et z = 360.
37 / 54
Application (cont.)
38 / 54
Cas divergent
Example
Considérons le programme linéaire suivant :
max z = 2x1 + x2
s.c. x1 − x2 ⩽ 10
x1 − 3x2 ⩽ 5
x1 , x2 ⩾ 0
39 / 54
Cas divergent (cont.)
• Le tableau initial du simplexe :
x1 x2 x3 x4
x3 1 −1 1 0 10
x4 1 −3 0 1 5
2 1 0 0 0
Les variables de base sont {x3 , x4 } et la solution de base est (0, 0, 10, 5).
• On choisit la variable avec le plus grand coût réduit comme variable entrante (x1
dans notre cas). Le plus petit quotient est 5 qui correspond à la variable x4 (la
variable sortante) :
x1 x2 x3 x4 quotient
x3 1 −1 1 0 10 10 ÷ 1 = 10
x4 1 −3 0 1 5 5÷1=5
2 1 0 0 0
Les variables de base deviennent {x3 , x1 }. 40 / 54
Cas divergent (cont.)
• D’après les opérations de pivotage, on obtient le 2ème tableau du simplexe :
x1 x2 x3 x4 quotient
x3 0 2 1 −1 5 5 ÷ 2 = 5/2
x1 1 -3 0 1 5
0 7 0 −2 -10
On choisit la variable avec le plus grand coût réduit > 0 comme variable entrante (x2
dans notre cas). Le seul ratio > 0 correspond à la variable x3 .
• D’après les opérations de pivotage, on obtient le 3ème tableau:
x1 x2 x3 x4
x2 0 1 1/2 −1/2 5/2
x1 1 0 3/2 −1/2 25/2
0 0 −7/2 1/2 −55/2
Dans notre cas, le coût réduit 1/2 > 0 et les ratios sont tous < 0. Alors on est
devant un problème non borné.
41 / 54
Section 5 : Dualité en programmation linéaire
42 / 54
Problème dual
Définition :
Soient A ∈ Rm×n , b ∈ Rm , c ∈ Rn et x ∈ Rn , y ∈ Rm .
A tout programme linéaire P (”dit primal”), on associe un programme linéaire D (”dit
dual”) :
max z(x) = c ⊤ x w (y ) = b ⊤ y
min
(P) s.c. Ax ⩽ b (D) s.c. A⊤ y ⩾ c
x ⩾0 y ⩾0
z(x) = c ⊤ x max w (y ) = b ⊤ y
min
(P) s.c. Ax ⩾ b (D) s.c. A⊤ y ⩽ c
x ⩾0 y ⩾0
Théorème :
Le dual du dual est le primal.
43 / 54
Écriture du programme dual
• Le tableau suivant donne des règles permettant de passer d’un programme linéaire
général à son problème dual :
Primal Dual
max z min w
44 / 54
Écriture du programme dual (cont.)
Example
On considère le programme linéaire suivant :
max −2x1 + x2 + 3x3
s.c. 2x1 + x2 − x2 ⩽ 8
(P) −x1 + x3 ⩾ 1
x1 + 2x2 + 3x3 = 9
x1 ⩾ 0, x2 ⩾ 0, x3 qlq
45 / 54
Écriture du programme dual (cont.)
• Pour la fonction objectif, on a :
Donc, on obtient
x1 ⩾ 0 −→ 2y1 − y2 + y2 ⩾ −2
x2 ⩾ 0 −→ y1 + 0y2 + 2y3 ⩾ 1
x3 qlq −→ −y1 + y2 + 3y3 = 3
46 / 54
Écriture du programme dual (cont.)
• Pour les contraintes de signe, on a :
1ère contrainte ⩽ −→ y1 ⩾ 0
2ème contrainte ⩾ −→ y2 ⩽ 0
3ème contrainte = −→ y3 qlq
47 / 54
Théorèmes de dualité
Théorème (faible de dualité) :
Soient x une solution réalisable d’un problème linéaire (P) et y une solution réalisable du
problème dual (D) associé à (P). Alors :
• z(x) ⩽ w (y )
• Si z(x) = w (y ) alors x et y sont des solutions optimales de (P) et (D)
respectivement.
z(x) = w (y ).
48 / 54
Exercice
Exercice (Programmation linéaire) :
On considère le programme linéaire suivant :
max x1 + 3x2
s.c. x1 + x2 ⩽ 14
−2x1 + 3x2 ⩽ 12
2x1 − x2 ⩽ 12
x1 , x2 ⩾ 0
53 / 54