Introduction à la Programmation Linéaire
Introduction à la Programmation Linéaire
• Définition :
« Outil mathématique de l’aide à la décision qui
permet de trouver une solution optimale ou bien,
pour des problèmes NP-difficiles, une solution la
plus proche possible de l’optimum ».
Recherche Opérationnelle (RO)
• Modélisation
Formulation Algorithme
Problème Modèle
Solution
réel mathématique
Programmation
Linéaire
Recherche Opérationnelle (RO)
• Techniques de Modélisation :
– Programmation Linéaire
– Théorie des Graphes
– Théorie des Files d’Attente
– Simulation de Systèmes
– Théorie des Jeux
.
.
.
Programmation Linéaire
• Modèle linéaire
– fonction linéaire, de plusieurs variables, à optimiser
• Exemple :
3 types de machines A, B et C
pour produire
4 produits différents I, II, III et IV.
• Le modèle :
xj - production hebdomadaire du produit j.
• Exemple :
– But : max z = 5,24 x1 + 7,30 x2 + 8,34 x3 + 4,18 x4
Forme générale :
Sous contraintes
ai 1 x1 + ai 2 x2 + ... + ai r xr , , bi , i = 1,2, … , m
xj 0 , j = 1,2, … , r
Remarques
xj 0 , j = 1,2, … , r contraintes de
non négativité
• xj - variables de décision
• z, fonction à optimiser - fonction objectif ( f. o. )
• cj , ai j et bi - constantes connues (expressions
linéaires)
Résolution Graphique
x2 max z = 5 x1 + 3 x2
sc
3 x1 + 5 x2 15
5 x1 + 2 x2 10
x1 , x2 0
O x1
3x1 + 5x2 = 15
5x1 + 2x2 = 10
Exemple 1
z1 x
A z3 ;
z2 z 3 2 A intersection des max z = 5 x1 + 3 x2
deux contraintes sc
3 x1 + 5 x2 15
z = 5x1 + 3x2 5 x1 + 2 x2 10
A x1 , x2 0
O x1 z
3x1 + 5x2 = 15
direction = - c1 / c2
= -5/3
5x1 + 2x2 = 10
Exemple 1
z1
z2
x2 max z = 2,5 x1 + x2
AB z2 sc
3 x1 + 5 x2 15
z = 2,5x1 + x2 5 x1 + 2 x2 10
A x1 , x2 0
B x1
O
3x1 + 5x2 = 15
z
direction = - c1 / c2
= -2,5
5x1 + 2x2 = 10
Résumé
x1
Cas spéciaux
x1 , x2 0
x1
Cas spéciaux
x1
Résumé
x1 , x2 0
Généralisation
Forme générale :
max (ou min) z = c1 x1 + c2 x2 + ... + cr xr
sc
a1 1 x1 + a1 2 x2 + ... + a1 r xr , , b1 ,
a2 1 x1 + a2 2 x2 + ... + a2 r xr , , b2 ,
...
am 1 x1 + am 2 x2 + ... + am r xr , , bm ,
xj 0 , j = 1,2, … , r
Forme Canonique
max z ’ = c’ x ’ c’ = (c 0) x’ = x
sc ( s
(
où
A’ x ’ = b A’ = ( A | I )
x’ 0 x 0, s 0
Exemple
max z = 18 x1 + 12 x2 +
max z = 18 x1 + 12 x2
0 s1 + 0 s2 + 0 s3
sc
sc
4 x1 + 5 x2 20
4 x1 + 5 x2 + s1 = 20
2 x1 + x2 6
2 x1 + x2 + s2 = 6
x2 2
x2 + s3 = 2
x1 , x2 0
Ax x1 , x2 , s1 , s2 , s 3 0
• A’ x’ = b
variables de décision
– m équations
– n = m + r variables
variables d’écart
– généralement rang A’ = m
les m vecteurs lignes de A’ linéairement
indépendants ainsi que m des n vecteurs
colonnes de A’
Fondements mathématiques
a - ensemble des indices de colonnes de A’
b a avec |b | = m j b , { B j } A
forment une matrice carrée B d’ordre m
xH
A’ x’ = b (H | B ) ( xB
( =b
solution
x (
= b xH = x = 0
(A | I ) ( s
de base
réalisable
x = 0 origine et xB= s = b initiale
Exemple
Forme canonique
max z = 18 x1 + 12 x2
sc
4 x1 + 5 x2 20
2 x1 + x2 6
x2 2
x1 , x2 0
Exemple
Forme standard
max z = 18 x1 + 12 x2 + 0 s1 + 0 s2+ 0 s3
sc
4 x1 + 5 x 2 + s1 = 20
2 x1 + x2 + s2 = 6
x2 + s3 = 2
x 1 , x2 , s1 , s 2 , s3 0
Exemple
x1
x2
max z = ( 18 12 0 0 0 ) S1
S2
sc
S3
x1
4 5 1 0 0 x2 20
2 1 0 1 0 S1 = 6
0 1 0 0 1 S2 2
S3
x , s 0
Ne définit pas une
solution de base Exemple max z = 18 x1 + 12 x2
x1 x2 s1 s2 s3 P réalisable sc
4x1 + 5x2 + s1 = 20
0 0 20 6 2 A
2x1 + x2 + s2 = 6
0 4 0 2 -2 B
x2 + s 3 = 2
0 6 -10 0 -4 C x2 x 1 , x2 , s1 , s2 , s3 0
0 2 10 4 0 D
5 0 0 -4 2 E C Points
2x1 + x2 = 6 extrêmes du
3 0 8 0 2 F
B polygone
0 0
5/3 8/3 0 0 -2/3 G G
D I H x2 = 2
5/2 2 0 -1 0 H
2 2 2 0 0 I E x1
A F
4x1 + 5x2 = 20
Rappel : définitions et notations
• solution de base réalisable initiale :
– xB = variables d’écart - s B = I
– xN = variables de décision - x
{ xB = s = b
xN = x = 0
x1 , x2 0
x1
T0= (0,0) T3 = (3,0)
4x1 + 5x2 = 20
Tableau du Simplexe
z xN xB xB = s ; xN = (x1 x2 )
z 1 zN- cN 0 cB = 0 ; cN = ( 18 12 )
z
xB 0 N I b zN - cN = cBN - cN = -cN
z = cBb = 0
z x1 x2 s1 s2 s3
z 1 -18 -12 0 0 0 0
s1 0 4 5 1 0 0 20
s2 0 2 1 0 1 0 6
s3 0 0 1 0 0 1 2
Tableau du Simplexe
z xN xB
z 1 zN- cN 0 z
xB 0 N I b
• Choix de la colonne pivot :
N N N N N N
j telle que zj - cj = mink { (zk - ck ) ; (zk - ck ) < 0 }
• Condition d’arrêt :
– N N
si (zj - cj ) 0, j z solution optimale finie
» N N
si (zj - cj ) > 0, j z solution unique
» N N
si j tel que (zj - cj ) = 0 une infinité de solutions
optimales
– N N
si j tel que (zj - cj ) < 0, avec ai j < 0, i
sans solution optimale finie
Le problème de minimisation
u = 30 – 5x – 3y
p = 24 – 2x – 3y
h = 18 – 1x – 3y
z = 0 –8x – 6y
u = 30 – 5x – 3y
p = 24 – 2x – 3y
h = 18 – 1x – 3y
z = 0 –8x – 6y
variable d’entrée
RAPPEL: Nous utilisons l’équation où x et u apparaissent pour exprimer
x en fonction de u et y:
u = 30 – 5x – 3y => (5x = 30 – u – 3y) / 5
=> x = 6 – 1/5u – 3/5y
Ceci est équivalent à
5x + 3y + u =30
• variable de sortie
variable d’entrée
RAPPEL: Nous utilisons l’équation où x et u apparaissent pour exprimer
x en fonction de u et y:
u = 30 – 5x – 3y => (5x = 30 – u – 3y) / 5
=> x = 6 – 1/5u – 3/5y
Ceci est équivalent à
(5x + 3y + u =30) / 5
• variable de sortie
variable d’entrée
RAPPEL: Nous utilisons l’équation où x et u apparaissent pour exprimer
x en fonction de u et y:
u = 30 – 5x – 3y => (5x = 30 – u – 3y) / 5
=> x = 6 – 1/5u – 3/5y
Ceci est équivalent à
(5x + 3y + u =30) / 5 => x + 3/5y + 1/5u =6
• variable de sortie
variable d’entrée
Ceci est équivalent à
(5x + 3y + u =30) / 5 => x + 3/5y + 1/5u =6
variable d’entrée
Ceci est équivalent à
(5x + 3y + u =30) / 5 => x + 3/5y + 1/5u =6
variable d’entrée
x 3/ 5 y 1/ 5u 6
• Rappel: Nous substituons l’expression de x dans les autres équations
x = 6 – 1/5u – 3/5y
p = 24 – 2x – 3y
=> p = 24 – 2(6 – 1/5u – 3/5y) – 3y
Ceci est équivalent à : p = 24 – 2(6 – 1/5u – 3/5y) +2x – 2x – 3y
2x + 3y + p – 2 (x + 3/5y +1/5u) = 24 – 2(6)
deuxième ligne
moins
2(la première ligne)
Le tableau devient
0 x 9 / 5 y 2 / 5u p 12
En répétant le processus pour les autres lignes du tableau
Itération typique
–
Étape 1: Choix de la variable d’entrée
–
Étape 2: Choix de la variable de sortie
Si a is 0 1 i m
le problème n’est pas Variable d’entrée
borné et l’algo. s’arrête
Si i telque ais 0
alors la sol. demeure réalisable
i tel que a is 0
bi
xi b i a is x s 0 x s
a is
La variable d’entrée xs prend la valeur –
br b i
xs min : a is 0
1i m a is
a rs
Étape 2: Choix de la variable de sortie
Variable d’entrée
Variable de sortie
–
Étape 3: Pivot
L’élément de pivot a rs est à l’intersection de la
colonne de la variable d’entrée xs et de la ligne
de la variable de sortie xr
Variable d’entrée
Variable de sortie
–
Étape 3: Pivot
Divisons la ligne r par l’élément
de pivot a rs afin d’obtenir la
ligne r résultante
Variable d’entrée
Variable de sortie
1
a rs
–
Étape 3: Pivot
Divisons la ligne r par l’élément
de pivot a rs afin d’obtenir la
ligne r résultante
Variable d’entrée
Variable de sortie
1 ar m1 arn br
1
ars ars ars ars
–
Étape 3: Pivot
Multiplions la ligne r résultante
par a is pour la soustraire de la
ligne i du tableau. Ceci ramène le coefficient
de la variable d’entrée xs à 0.
Variable d’entrée
Variable de sortie
–
Étape 3: Pivot
Multiplions la ligne r résultante
par a is pour la soustraire de la
ligne i du tableau. Ceci ramène le coefficient
de la variable d’entrée xs à 0.
Variable d’entrée
Variable de sortie
–
Étape 3: Pivot
Multiplions la ligne r résultante
par a is pour la soustraire de la
ligne i du tableau. Ceci ramène le coefficient
de la variable d’entrée xs à 0.
Variable d’entrée
Variable de sortie
–
Étape 3: Pivot
Multiplions la ligne r résultante
par c s pour la soustraire de la dernière
ligne du tableau. Ceci ramène le coefficient
de la variable d’entrée xs à 0.
Variable d’entrée
Variable de sortie
–
Tableau avant la prochaine itération
–
Dualité
Exemple :
régime alimentaire :
– 6 produits alimentaires comme sources
de vitamines A et C
vitamine A 1 0 2 2 1 2 9
vitamine C 0 1 3 1 3 2 19
prix par kg 35 30 60 50 27 22
Dualité
Le modèle :
xj = quantité consommée de chaque produit (en kg)
min z = 35 x1 + 30 x2 + 60 x3 + 50 x4 + 27 x5 + 22 x6
sc
x1 + 2 x3 + 2 x4 + x5 + 2 x6 9
x2 + 3 x 3 + x4 + 3 x5 + 2 x6 19
x1 , x2 , x 3 , x4 , x5 , x 6 0
Dualité
vitamine A 1 0 2 2 1 2 9
vitamine C 0 1 3 1 3 2 19
prix par kg 35 30 60 50 27 22
par exemple, prix compétitif du produit 5 inférieur ou égal à 27
Dualité
Le modèle :
wi = prix d’une unité de chaque vitamine
produit 5 = 1 unité de vitamine A + 3 unités de vitamine C
w1 + 3w2 27
max v = 9 w1 + 19 w2
sc
w1 35
w2 30
2 w1 + 3 w2 60
2 w1 + w2 50
w1 + 3 w2 27
2 w1 + 2 w2 22
w1 , w2 0
Propriétés de la dualité
1 - Le dual du dual est le primal
2 - Pour toute paire de solutions réalisables x de P et w de D, on a cx wb
x 0 et Ax b w (Ax) wb
w 0 et wA c (wA) x cx cx (wA)x wb
40
30
Best solution: 24 chairs, 14 tables
20 Profit = 45×24 + 80×14 = 2200 dollars
Tables, x2
(1) 10
(24, 14)
(3)
(4)
0 10 20 30 40 50 60 70 80 90
Chairs, x1
increasing
(2)
decresing
A Dual Problem
• Explore an alternative.
• Questions:
– Should we make tables and chairs?
– Or, auction off the available resources?
• To answer this question we need to know:
– What is the minimum price for the resources that will
provide us with same amount of revenue from sale as
the profits from tables and chairs?
– This is the dual of the original problem.
Formulating the Dual Problem
• Revenue received by selling off
resources: Resources:
– For each board, w1 Material: 400 boards
Labor: 450 man-hrs
– For each man-hour, w2 Profit:
Chair: $45
• Minimize 400w1 + 450w2 Table: $80
Resources needed:
Chair
• Subject to constraints: 5 boards of wood
10 man-hours
Table
» 5w1 + 10w2 ≥ 45 20 boards of wood
15 man-hours
» 20w1 + 15w2 ≥ 80
» w1 ≥0
» w2 ≥0
The Duality Theorem
X1 X2 X3 --- Xj --- Xn
≥ ≥ ≥ ≥ ≥
C1 C2 C3 Cj Cn
Solution: Primal-Dual
Variables primaires X1 X2 X3 X4 X5 X6 X7
Variables Duales Y4 Y5 Y6 Y7 Y1 Y2 Y3