Cours1 PL
Cours1 PL
Introduction
Introduction
Recherche opérationnelle
Introduction
Recherche opérationnelle
aide à la décision
Introduction
Origine
Origine
Sommaire
1 Introduction
2 Programmation linéaire
Formulation du problème
Méthode et interprétation
graphique
Algorithme du simplexe
Détail de l’algorithme
Programmation linéaire Formulation du problème
Formulation du problème
Formulation du problème
fonction économique opt z = c 1 x1 + c 2 x2 + . . . c n xn
Exemple 1
Exemple 1
Analysons le problème :
variables :
x1 → nombre de produits A
x2 → nombre de produits B
Analysons le problème :
variables :
x1 → nombre de produits A
x2 → nombre de produits B
formulation du problème de PL :
x1 + x2 ≤ 300
2x1 + x2 ≤ 400
x2 ≤ 250
xi ≥ 0 i = 1, 2
Programmation linéaire Formulation du problème
Exemple 2
magasin A B C
dépôt D1 3.4 2.2 2.9
dépôt D2 3.4 2.4 2.5
Programmation linéaire Formulation du problème
Exemple 2
magasin A B C
dépôt D1 3.4 2.2 2.9
dépôt D2 3.4 2.4 2.5
F objectif : minimiser le coût total de transport des containers des dépôts vers les
magasins.
Programmation linéaire Formulation du problème
Analysons le problème :
variables :
x1A → nombre de containers depuis le dépôt D1 vers le magasin A
x2A → nombre de containers depuis le dépôt D2 vers le magasin A
les contraintes sont liées à la disponibilité des dépôts et à la demande des magasins
Programmation linéaire Formulation du problème
Analysons le problème :
variables :
x1A → nombre de containers depuis le dépôt D1 vers le magasin A
x2A → nombre de containers depuis le dépôt D2 vers le magasin A
les contraintes sont liées à la disponibilité des dépôts et à la demande des magasins
formulation du problème de PL :
Dans le cas d’un problème à 2 variables, les contraintes peuvent être tracées dans
le plan à 2 dimensions (x1 , x2 ).
On peut alors visualiser l’espace des solutions admissibles. Il faut alors ensuite
déterminer le point du plan, de coordonnées (x∗1 , x∗2 ), optimisant la fonction
économique.
Programmation linéaire Méthode et interprétation graphique
Dans le cas d’un problème à 2 variables, les contraintes peuvent être tracées dans
le plan à 2 dimensions (x1 , x2 ).
On peut alors visualiser l’espace des solutions admissibles. Il faut alors ensuite
déterminer le point du plan, de coordonnées (x∗1 , x∗2 ), optimisant la fonction
économique.
x1 + x2 ≤ 300 (1)
2x1 + x2 ≤ 400 (2)
x2 ≤ 250 (3)
xi ≥ 0 i = 1, 2 (4)
Programmation linéaire Méthode et interprétation graphique
x2
(1)
(3)
(2)
x1
(4)
3 z
soit : x2 = − x1 +
2 100
Programmation linéaire Méthode et interprétation graphique
3 z
soit : x2 = − x1 +
2 100
x2
x1
Programmation linéaire Méthode et interprétation graphique
3 z
soit : x2 = − x1 +
2 100
x2
-3/2
x1
Programmation linéaire Méthode et interprétation graphique
3 z
soit : x2 = − x1 +
2 100
x2
x*
x1
Programmation linéaire Méthode et interprétation graphique
La solution est à l’intersection des contraintes (1) et (2) : (x∗1 , x∗2 ) = (100, 200)
La solution est à l’intersection des contraintes (1) et (2) : (x∗1 , x∗2 ) = (100, 200)
⇒ z = 32500€ perte de 7%
Programmation linéaire Méthode et interprétation graphique
La solution est à l’intersection des contraintes (1) et (2) : (x∗1 , x∗2 ) = (100, 200)
⇒ z = 32500€ perte de 7%
La solution est à l’intersection des contraintes (1) et (2) : (x∗1 , x∗2 ) = (100, 200)
⇒ z = 32500€ perte de 7%
Exemple 3 :
x1 + x2 ≤ 8 (1)
−2x1 + 3x2 ≤ 6 (2)
x1 − x2 ≤ 2 (3)
xi ≥ 0 i = 1, 2 (4)
Programmation linéaire Méthode et interprétation graphique
x2
(1)
(2)
x1
(4)
(3)
Programmation linéaire Méthode et interprétation graphique
6 z
soit : x2 = − x1 +
5 5
21 / 56
Programmation linéaire Méthode et interprétation graphique
6 z
soit : x2 = − x1 +
5 5
x2
x*
x1
La solution est à l’intersection des contraintes (1) et (3) : (x∗1 , x∗2 ) = (5, 3)
Algorithme du simplexe
non-négativité xi ≥ 0 i = 1, . . . , n
Programmation linéaire Algorithme du simplexe
Algorithme du simplexe
non-négativité xi ≥ 0 i = 1, . . . , n
e e
tj1 x1 + . . . + tjn xn ≤ dj ⇔ tj1 x1 + . . . + tjn xn + xj = dj xj ≥ 0
Programmation linéaire Algorithme du simplexe
e e
tj1 x1 + . . . + tjn xn ≤ dj ⇔ tj1 x1 + . . . + tjn xn + xj = dj xj ≥ 0
fonction économique opt z = c1 x1 + c2 x2 + . . . cn xn
xi ≥ 0 i = 1, . . . , n
non-négativité
xej ≥ 0 j = 1, . . . , m
Programmation linéaire Algorithme du simplexe
opt z = cx
Tx = d
x ≥ 0
Programmation linéaire Algorithme du simplexe
opt z = cx
Tx = d
x ≥ 0
reprenons l’exemple 1
xi ≥ 0 i = 1, ..., 5
x ≥ 0
Programmation linéaire Algorithme du simplexe
min z = cx
Tx = d
x ≥ 0
x (n × 1), c (1 × n), T (m × n) et d (m × 1). Nous supposerons que le système des
contraintes est non-redondant et que m < n.
Programmation linéaire Algorithme du simplexe
min z = cx
Tx = d
x ≥ 0
x (n × 1), c (1 × n), T (m × n) et d (m × 1). Nous supposerons que le système des
contraintes est non-redondant et que m < n.
min z = cx
Tx = d
x ≥ 0
x (n × 1), c (1 × n), T (m × n) et d (m × 1). Nous supposerons que le système des
contraintes est non-redondant et que m < n.
Dans ce cas, le problème peut s’écrire (avec éventuellement une réorganisation des indices)
min z = cB xB + cR xR
BxB + RxR = d
x ≥ 0
26 / 56
Programmation linéaire Algorithme du simplexe
max z = x1 + x2
x1 + 3x2 ≤ 12
x1 − x2 ≤ 4
xi ≥ 0 i = 1, 2
Programmation linéaire Algorithme du simplexe
max z = x1 + x2
x1 + 3x2 ≤ 12
x1 − x2 ≤ 4
xi ≥ 0 i = 1, 2
x2
x1
Programmation linéaire Algorithme du simplexe
max z = x1 + x2
x1 + 3x2 ≤ 12
x1 − x2 ≤ 4
xi ≥ 0 i = 1, 2
x2
max z = x1 + x2
x1 + 3x2 ≤ 12
x1 − x2 ≤ 4
xi ≥ 0 i = 1, 2
x2
SSI-RO 27 / 56
Programmation linéaire Algorithme du simplexe
Solveur d’Excel
Solveur d’Excel
28 / 56
Programmation linéaire Algorithme du simplexe
Programmation linéaire Algorithme du simplexe
Programmation linéaire Algorithme du simplexe
Solveur de Scilab
min cT x
Ae x = be
Ai x ≤ bi
30 / 56
Programmation linéaire Algorithme du simplexe
Solveur de Scilab
min cT x
Ae x = be
Ai x ≤ bi
Syntaxe :
xopt = karmarkar(Ae, be, c, [], [], [], [], [], Ai, bi)
min [−1 − 1] x
1 3 12 x1
x≤ avec x=
1 −1 4 x2
Programmation linéaire Algorithme du simplexe
min [−1 − 1] x
1 3 12 x1
x≤ avec x=
1 −1 4 x2
Dans Scilab :
fopt =
- 7.9999347
xopt =
5.9999347
2.
31 / 56
Programmation linéaire Détail de l’algorithme
Détail de l’algorithme
min z = cx
Tx = d
x ≥ 0
x (n × 1), c (1 × n), T (m × n) et d (m × 1). Nous supposerons que le système des
contraintes est non-redondant et que m < n.
min z = cB xB + cR xR
BxB + RxR = d
x ≥ 0
xB + B −1 RxR = B −1 d
x ≥ 0
Soit :
Programmation linéaire Détail de l’algorithme
xB + B −1 RxR = B −1 d
x ≥ 0
Soit :
min z = a00 − α0 xR
xB + AxR = a0
x ≥ 0
Programmation linéaire Détail de l’algorithme
xB + B −1 RxR = B −1 d
x ≥ 0
Soit :
x≥0
Programmation linéaire Détail de l’algorithme
Nous définissons le tableau simplexe associé à une base B à partir des coefficient de la
forme équivalente
xj , j ∈ J (variables hors base)
a10
xi , i ∈ I .
. aij
(variables .
de base)
am0
× ... × ≤0 × ... ×
xi , i ∈ I ≥0 . . .
. . .
(variables . . .
de base) × ... × ≤0 × ... ×
Programmation linéaire Détail de l’algorithme
Soit une solution de base admissible et supposons que ∀k ∈ J tel que a0k > 0, il existe
au moins un indice i ∈ I pour lequel aik > 0. Définissons l’indice l tel que
al0 ai0
= min .
alk i|aik >0 aik
Si on remplace le vecteur de base associé à la variable xl par le vecteur hors base associé
à la variable xk , on obtient une nouvelle base admissible avec une meilleure solution.
Programmation linéaire Détail de l’algorithme
Soit une solution de base admissible et supposons que ∀k ∈ J tel que a0k > 0, il existe
au moins un indice i ∈ I pour lequel aik > 0. Définissons l’indice l tel que
al0 ai0
= min .
alk i|aik >0 aik
Si on remplace le vecteur de base associé à la variable xl par le vecteur hors base associé
à la variable xk , on obtient une nouvelle base admissible avec une meilleure solution.
Soit une solution de base admissible. Cette solution est optimale si ∀j ∈ J on a a0j ≤ 0.
Programmation linéaire Détail de l’algorithme
Soit une solution de base admissible. Cette solution est optimale si ∀j ∈ J on a a0j ≤ 0.
a00 ≤0
≥0