Académique Documents
Professionnel Documents
Culture Documents
Informations pratiques 2
LAAS
Cours - Introduction à la programmation linéaire CNRS
Exemple I : problème de production 3
Fraise 2 1
Lait 1 2
Sucre 0 1
LAAS
Cours - Introduction à la programmation linéaire CNRS
Exemple 1 : modélisation 4
LAAS
Cours - Introduction à la programmation linéaire CNRS
Exemple 2 : problème de transport 5
Productions (pi ) 25 15 20
✔ Lieux et quantités de livraison
Clients (j ∈ J) Pau Bayonne Bordeaux Libourne
LAAS
Cours - Introduction à la programmation linéaire CNRS
Exemple 3 : problème de planification 6
✍ Problème 3 Planifier la production d’articles à moindres coûts pour les 4 prochains mois
✔ Production maximale normale :
1200 articles / mois
✔ Production maximale en heure sup :
400 articles / mois
✔ Sur-coût heures sup :
7 euros / article
✔ Stockage :
3 euros / article / mois
✔ Demande sur les 4 prochains mois :
mois 1 mois 2 mois 3 mois 4
LAAS
Cours - Introduction à la programmation linéaire CNRS
Exemple 3 : modélisation 7
✔ Variables :
- xt : production normale en période t = 1, . . . , 4
- yt : production en heure sup en période t = 1, . . . , 4
- st : stock en fin de période t = 1, . . . , 3
✔ Objectif :
t=4
X t=3
X
Minimiser 7 yt + 3 st
t=1 t=1
✔ Contraintes
x1 +y1 = 900+s1
s1 +x2 +y2 =1100+s2
s2 +x3 +y3 =1700+s3
s3 +x4 +y4 =1300
0 ≤xt ≤1200 t = 1, . . . , 4
0 ≤yt ≤ 400 t = 1, . . . , 4
st ≥ 0 t = 1, . . . , 3
LAAS
Cours - Introduction à la programmation linéaire CNRS
Quelques remarques historiques (I) 8
J. Fourier (1768-1830)
✔ Formulation d’une classe restreinte de PL + Algorithme en URSS par L.V. Kantorovich en 1939
✔ Minimisation du coût total de transport de biens par T.C. Koopmans en 1944 pour la British Merchant Shipping
Mission
LAAS
Cours - Introduction à la programmation linéaire CNRS
Quelques remarques historiques (II) 9
G. Dantzig (1914-2005)
xk
- Algorithme en temps polynomial
. −
→
g k
xk+1
.
Ek
- Peu efficace en pratique (degré élevé du polynôme(t))
Ek+1
LAAS
Cours - Introduction à la programmation linéaire CNRS
Hypothèses fondamentales et terminologie 10
✔ Linéarité :
= cT x
- Fonction objectif : f (x)
n
- Contraintes : X = {x ∈ R : h(x) = A1 x − B1 = 0, g(x) = A2 x − B2 0}
✔ Continuité : x ∈ Rn 6= PLNE = x ∈ Nn
∈X
- Solution réalisable : x est une solution réalisable ssi x
- Région réalisable : ensemble des solutions réalisables X
LAAS
Cours - Introduction à la programmation linéaire CNRS
Géométrie et PL (I) 11
✔ Un ensemble C est convexe ssi le segment de droite entre deux points quelconques x, y ∈ C appartient à C
✔ L’enveloppe convexe co C d’un ensemble C est l’ensemble de toutes les combinaisons convexes des points
de C
( )
X X
co C = λi xi : xi ∈ C, λi ≥ 0, λi = 1
i i
LAAS
Cours - Introduction à la programmation linéaire CNRS
Géométrie et PL (II) 12
✔ Un polyèdre convexe est un ensemble défini par un nombre fini d’inégalités linéaires
a6
a1
x ∈ Rn : aTj x ≤ bj , j = 1, · · · , m
a5 P =
a2
= {x ∈ Rn : Ax b}
a4 +
Ex : l’orthant positif R est un ensemble polyèdral conique
a3
v ∈ P et ∃ c 6= 0 ∈ Rn : cT v > cT y, ∀ y ∈ P \ {v} v
cT x = cT v
✔ Les sommets d’un polyèdre convexe sont exactement ses points extrêmes
✔ L’ensemble des solutions admissibles d’un PL est un polyèdre convexe P
a31 x1 + a32 x2 = b3
x2
a11 x1 + a12 x2 = b1
P a21 x1 + a22 x2 = b2
x2 = 0 x1
x1 = 0
✔ Tout point de l’ensemble P des solutions admissibles peut donc être défini par une combinaison
convexe des points extrêmes xEi du polyèdre
N
X N
X
∀ x ∈ P, x = λi xE
i , 0 ≤ λi ≤ 1, λi = 1, xE
i point extrême de P
i=1 i=1
LAAS
Cours - Introduction à la programmation linéaire CNRS
Solution optimale, optimum et résolution graphique 14
∀ x ∈ P : cT x∗ ≤ (≥)cT x
x2 x2
- aucune solution optimale (P = ◦/ ou non bornée)
- une seule solution optimale
- une infinité de solutions optimales x1 x1
Pas de solution Infinité de solutions
- S’il existe une solution optimale, il en existe tou-
x2 x2
jours au moins une sur un sommet (point ex-
Sommet dégénéré
trême) de P
- Combinatoire d’énumération des points ex- x1 x1
Dégénerescence
trêmes de P Pas de solution
✔ Méthode graphique :
x2
z
= - Tracer le polyèdre P des solutions admissibles
z ∗
Solution optimale - Tracer les droites isocritères z = cT x = c1 x1 + · · · +
cn xn = k
∗ ∗
- Identifier et calculer le point extrême x et l’optimum z
x1
LAAS
Cours - Introduction à la programmation linéaire CNRS
Résolution graphique : exemple des yaourts 15
LAAS
Cours - Introduction à la programmation linéaire CNRS
Un algorithme géométrique 16
Algorithme du simplexe
❡ Théorème 1
L’optimum local ainsi obtenu x∗ est un optimum global
✔ Préliminaires :
- Programme linéaire générique
- Notation matricielle
- Formes canonique et standard
- Règles de transformation
LAAS
Cours - Introduction à la programmation linéaire CNRS
Programme linéaire générique 17
Min. ou Max. c1 x1 + c2 x2 +. . .+ cn xn
ou c1 x1 + c2 x2 +. . .+ cn xn = z[min] ou z[max]
x1 , . . ., xs ≥ 0
xs+1 , . . ., xt ≤ 0
xt+1 , . . ., xn de signe quelconque
LAAS
Cours - Introduction à la programmation linéaire CNRS
Ecriture matricielle 18
cT x = z[min] ou z[max]
Ax = a
Bx b
Cx c
x1 , . . . , xs ≥ 0
xs+1 , . . . , xt ≤ 0
LAAS
Cours - Introduction à la programmation linéaire CNRS
Formes canoniques et standard et règles de transformation 19
✔ Formes canoniques :
cT x = z[max] cT x = z[min]
Bx b Bx b
x 0 x 0
✔ Forme standard :
cT x = z[max]
Ax = a
x0
- min cT x ⇔ max −cT x
- ax ≥ b ⇔ −ax ≤ −b et ax = b ⇔ ax ≤ b et ax ≥ b
- ax ≤ (≥)b ⇒ ax + (−)xe = b, xe ≥ 0 variable d’écart
- min (max) c|x|, c > 0 (c < 0), ⇔ min (max) cz, t.q. z ≥ x, z ≥ −x
- xi ≤ 0, on pose xi = −x′i , x′i ≥ 0
− −
- xi de signe quelconque, on pose xi = x+
i − xi , x+
i , xi ≥0
LAAS
Cours - Introduction à la programmation linéaire CNRS
Exemple 20
LAAS
Cours - Introduction à la programmation linéaire CNRS
Focus sur les variables d’écart 21
n
X
a′ij x′j
n
≤ bi i = 1, . . . , m
X
a′ij x′j j=1
bi
x′j ≥0 j = 1, . . . , n
j=1
xn+i n
X
a′ij x′j +xn+i
= bi i = 1, . . . , m
n
X j=1
a′ij x′j
xj ≥0 j = 1, . . . , n + m
bi
j=1
✔ m variables d’écart sont ajoutées : A′ (m × n) devient sous forme standard A = [A′ |Im×m ]
(m × (n + m))
✔ Une contrainte k saturée (ou active) ⇔ la variable d’écart xn+k = 0
✔ En un sommet du polyèdre, n variables d’écart s’annulent ou n contraintes sont actives et
linéairement indépendantes
LAAS
Cours - Introduction à la programmation linéaire CNRS
Solutions de base et solutions de base admissibles 22
▼ Définition 1
Soit le polyèdre P = x ∈ Rn : aT T
j x ≤ bj , j = 1, · · · , m, ci x = di , i = 1, · · · , p , p, m ≤ n
- x∗ ∈ Rn est une solution de base si P = {(x , x , x )|x + x + x = 1, x , x , x ≥ 0, x
1 2 3 1 2 3 1 2 3 2 ≤ 1}
x3
Toutes les contraintes égalité sont actives
A
Parmi les contraintes actives en x∗ , n sont linéaire-
ment indépendantes
alors x2
∗ n E
- x ∈ R est une solution de base dégénérée si plus C
LAAS
Cours - Introduction à la programmation linéaire CNRS
Solutions de base admissibles et polyèdres standards 23
❡ Théorème 3
Soit P = {x ∈ Rn |Ax = b, x 0, b ∈ Rm } =
6 ◦/ tel que m ≤ n et rang(A) = m
x∗ ∈ P est une solution de base admissible de P ssi il existe m indices B(1), · · · , B(m) t.q.
m
- Les colonnes AB(1) , · · · , AB(m) sont linéairement indépendantes (forment une base de R )
∗
- Si i 6= B(1), · · · , B(m) alors xi = 0
∗ ∗
Si plus de n − m composantes de x sont nulles alors x ∈ P est une solution de base admissible dégénérée de P
✇ Procédure 1
➊ Choisir m colonnes indépendantes AB(1) , · · · , AB(m)
➋ Mettre xi = 0 pour i 6= B(1), · · · , B(m) (variables hors-base)
➌ Résoudre le système Ax = b en xB(1) , · · · , xB(m) (variables de base)
➍ Vérifier que x∗ ≥ 0 sinon retourner en ➊
Exemple :
1 1 2 1 0 0 0 8
0 1 6 0 1 0 0 12
x =
1 0 0 0 0 1 0 4
0 1 0 0 0 0 1 6
LAAS
Cours - Introduction à la programmation linéaire CNRS
Algorithme du simplexe et yaourts à la fraise 24
✔ Forme normale :
✔ Forme standard :
LAAS
Cours - Introduction à la programmation linéaire CNRS
Une première solution de base réalisable 25
✔ Soient xA = xB = 0
✔ On obtient x1 = 800, x2 = 700, x3 = 300
✔ La solution (0, 0, 800, 700, 300) est une solution de base réalisable
✔ La fonction objectif vaut z = 0
xB × 10−2
8
7
6
5
4
3
Solution de base réalisable initiale
z 2
=
0
1
5 7
xA × 10−2
0 1 2 3 4 6 8
LAAS
Cours - Introduction à la programmation linéaire CNRS
Choix de l’arête de déplacement 26
xB × 10−2
8
7
6
max z = 0+4xA +5xB
5
x1 =800−2xA − xB
4
x2 =700− xA −2xB 3
x3 =300 − xB z= 2
0
1
xA × 10−2
0 1 2 3 4 5 6 7 8
LAAS
Cours - Introduction à la programmation linéaire CNRS
Déplacement le long de l’arête 27
xB × 10−2
✔ Jusqu’où augmenter xB ?
8
x1 = 800−xB ≥ 0 ⇔ xB ≤ 800 7
6
x2 = 700−2xB ≥ 0 ⇔ xB ≤ 350 5
x3 = 300−xB ≥ 0 ⇔ xB ≤ 300 4
3
✔ xB augmente de 300
z= 2
✔ x3 = 0 et xA = x3 = 0 0
1
✔ Solution de base réalisable :
T
{xA = 0} {xB = 300} xA × 10−2
0 1 2 3 4 5 6 7 8
LAAS
Cours - Introduction à la programmation linéaire CNRS
Etape de pivotage 28
✔ Réécrire le système avec les variables non nulles en fonction des variables fixées à 0
✔ Solution associée ?
xB × 10−2
8
z 7
z =1500+4xA −5x3 =
15 6
x1 = 500−2xA + x3 00 5
4
x2 = 100− xA +2x3
3
xB = 300 − x3 2
1
xA × 10−2
0 1 2 3 4 5 6 7 8
LAAS
Cours - Introduction à la programmation linéaire CNRS
Faut-il continuer ? 29
LAAS
Cours - Introduction à la programmation linéaire CNRS
Etape de pivotage 30
✔ Réécrire le système avec les variables non nulles en fonction des variables fixées à 0
✔ Solution associée ?
xB × 10−2
8
z=
7
z =1900−4x2 +3x3 19
00 6
x1 = 300+2x2 −3x3 5
4
xA = 100− x2 +2x3
3
xB = 300 − x3 2
1
xA × 10−2
0 1 2 3 4 5 6 7 8
LAAS
Cours - Introduction à la programmation linéaire CNRS
Faut-il continuer ? 31
LAAS
Cours - Introduction à la programmation linéaire CNRS
Etape de pivotage 32
✔ Réécrire le système avec les variables non nulles en fonction des variables fixées à 0
x1 = 300+2x2 −3x3 2 1
x3 = 100+ x2 − x1
3 3
xA = 100− x2 +2x3 xA = 100− x2 + 2x3
xB = 300 − x3 xB = 300 − x3
✔ Solution associée ?
xB × 10−2
8
z =2200− 2x2 − x1 7
2 1 z 6
x3 = 100+ x2 − x1 =
3 3 522
00
1 2 4
xA = 300+ x2 − x1
3 3 3
2 1 2
xB = 200− x2 + x1
3 3 1
xA × 10−2
0 1 2 3 4 5 6 7 8
LAAS
Cours - Introduction à la programmation linéaire CNRS
Faut-il continuer ? 33
LAAS
Cours - Introduction à la programmation linéaire CNRS
Simplexe par la méthode des dictionnaires (I) 34
A chaque itération, la solution courante est associée à un système d’équations appelé dictionnaire :
X
z = z + cj xj (variables hors-base xN ∈ Rn
+)
j∈N
X
(variables de base xB ∈ Rm
+ ) xi = bi − ai,j xj , (i ∈ B = (B(1), · · · , B(m)))
j∈N
T
- L’ensemble des variables de base xB = xB(1) , · · · , xB(m)
- B ensemble des indices des variables en base, N ensemble des indices des variables hors-base
LAAS
Cours - Introduction à la programmation linéaire CNRS
Simplexe par la méthode des dictionnaires (II) 35
X
z = z + cj xj
j∈N
X
xi = bi − ai,j xj (i ∈ B)
j∈N
✔ B ∪ N = {1, . . . , m, m + 1, . . . , n + m}, B ∩ N = ◦/
✔ Réécriture matricielle en fonction d’une base
- Soit B(m × m) une base de A = [B|N ], le système d’équations s’écrit :
Ax = BxB + N xN = b
xB = B −1 b − B −1 N xN
LAAS
Cours - Introduction à la programmation linéaire CNRS
Simplexe par la méthode des dictionnaires (III) 36
z = cT x = cTB xB + cTN xN
Les c̄N sont appelés coûts réduits relatifs aux variables hors-base
✔ Dictionnaire final en fonction de la base optimale :
xN
xB b̄ = B −1 b −B −1 N
z z ∗ = cTB B −1 b c̄N = cTN − cTB B −1 N ≤ 0
LAAS
Cours - Introduction à la programmation linéaire CNRS
Simplexe par la méthode des dictionnaires (IV) 37
✔ Dictionnaire initial :
n
X
z = cj xj
j=1
n
X
xn+i = bi − ai,j xj (i = 1, . . . , m)
j=1
❡ Théorème 4 Si un PL admet une solution optimale, alors il en existe une en un point extrême
✍ Remarques 1 Pour chaque itération du simplexe : choix d’une variable à faire entrer dans la base et
d’une variable à faire sortir de la base
LAAS
Cours - Introduction à la programmation linéaire CNRS
Choix de la variable entrante 38
X
z = z + cj xj
j∈N
X
xi = bi − ai,j xj (i ∈ B)
j∈N
Les coûts réduits cj , j ∈ N représentent l’impact de l’augmentation d’une variable sur l’objectif z
z = z ∗ ⇔ bi = Bi−1 b ≥ 0, ∀ i ∈ B, cj ≤ 0, ∀j ∈ N
✇ Procédure 2
➊ On choisit une variable dont le coût réduit est positif : xk , k ∈ N telle que ck > 0
➋ Cas des choix multiples (plusieurs variables candidates pour entrer en base) : ➤ choix heuristiques
Choisir la variable de plus grand coût réduit : max cj
j∈N
Choisir la variable d’indice le plus petit (règle de Bland)
LAAS
Cours - Introduction à la programmation linéaire CNRS
Choix de la variable sortante 39
X
z = z + cj xj
j∈N
X
xi = bi − ai,j xj (i ∈ B)
j∈N
LAAS
Cours - Introduction à la programmation linéaire CNRS
Etape de pivotage 40
X
z = z + cj xj + ck xk
j∈N \{k}
X
xi = bi − ai,j xj − ai,k xk (i ∈ B)
j∈N \{k}
bs X as,j 1
xk = − xj − xs
as,k as,k as,k
j∈N \{k}
bs X as,j 1
z = z + ck + (cj − ck )xj − ck xs
as,k as,k as,k
j∈N \{k}
bs X as,j 1
xi = bi − ai,k − (ai,j − ai,k )xj + ai,k xs ,∀ i ∈ B \ {s}
as,k as,k as,k
j∈N \{k}
LAAS
Cours - Introduction à la programmation linéaire CNRS
Le problème des pivots dégénérés et des cycles (I) 41
▼ Définition 2
as,k
Un pivot est dégénéré si, dans le calcul de la variable sortante, le rapport → +∞
bs
✍ Remarques 2 Un dictionnaire dégénéré ne conduit pas nécessairement à un pivot dégénéré
Exemple :
max z = 5 + x3 − x1
x2 = 5 + 2x3 − 3x1
x4 = 7 − 4x1
x5 = x1
En cas de pivot dégénéré, l’algorithme peut entrer dans un cycle (revenir sur une solution de base déjà
visitée) et tous les pivots dans un cycle sont dégénérés. Le nombre de dictionnaires possibles étant
m
Cn+m , si la méthode du simplexe ne se termine pas, elle entre nécessairement dans un cycle entre
bases dégénérées
LAAS
Cours - Introduction à la programmation linéaire CNRS
Le problème des pivots dégénérés et des cycles (II) 42
Exemple de cycle :
LAAS
Cours - Introduction à la programmation linéaire CNRS
Phase I du simplexe et solution de base initiale réalisable (I) 43
✔ Problème :
max z = cT x
x
aTi x ≤ bi , (i = 1, . . . , m)
xj ≥ 0, (j = 1, . . . , n)
avec
aTk x ≤ bk < 0 → xn+k = bk − aTk x non réalisable
✔ Solution :
Pour chaque contrainte t.q. bk < 0, décomposer la variable d’écart en xn+k − x′n+k
Résoudre le PL auxiliaire
l
−x′n+k
X
max w=
x∈Rn+m ,x′ ∈Rl
k=1:bk <0
LAAS
Cours - Introduction à la programmation linéaire CNRS
Phase I du simplexe et solution de base initiale réalisable (II) 44
❡ Théorème 7
∗
- Si l’optimum du PL auxiliaire w = 0 avec x′n+k = 0, ∀ k = 1, · · · , l alors la solution optimale du PL
auxiliaire est une solution de base réalisable pour le PL initial
∗
- Si l’optimum du PL auxiliaire w 6= 0 avec ∃ k, x′n+k > 0 alors le PL initial est irréalisable
✇ Procédure 4
➊ Pour chaque contrainte inégalité t.q. bk < 0, décomposer la variable d’écart en xn+k − x′n+k
LAAS
Cours - Introduction à la programmation linéaire CNRS
Exemple 45
✔ PL initial :
x2
6
5
−x1 − x2 = z[max]
4
−3x1 − 4x2 ≤ −12 3
2x1 + x2 ≤ 4 2
1
x1 , x2 ≥ 0
x1
0 1 2 3 4 5 6
z
=
−
3
✔ PL Auxiliaire :
− x′3 = w[max]
−3x1 − 4x2 +x3 − x′3 = −12
2x1 + x2 +x4 = 4
x1 , x2 , x3 , x′3 , x4 ≥ 0
LAAS
Cours - Introduction à la programmation linéaire CNRS
Complexité du simplexe et de la programmation linéaire 46
1 2n
max m
Cn+m = n
C2n , n
2 ≤ C2n ≤ 22n (250 = 1.1259 × 1015 !)
m 2n
m
- Exemples "pathologiques" : niter. ∼ Cn+m itérations (exponentiel)
n
X
Klee − Minty 1972 max 10n−j xj
x
j=1
Xi−1
(niter. = 2n − 1) sous 2 10i−j xj ≤ 100i−1 , i = 1, · · · , n
j=1
xj ≥ 0, j = 1, 2, · · · , n
LAAS
Cours - Introduction à la programmation linéaire CNRS
Introduction à la dualité en PL : motivation 47
LAAS
Cours - Introduction à la programmation linéaire CNRS
Combinaisons linéaires et bornes supérieures 48
m
X m
X
Si c1 ≤ yi ai1 , ··· , cn ≤ yi ain et pour x1 ≥ 0, . . . , xn ≥ 0, on aura
i=1 i=1
n
X m
X m
X m
X
z= cj xj ≤ (yi ai1 )x1 + . . . + (yi ain )xn ≤ yi bi
j=1 i=1 i=1 i=1
zsup (yi )
m
X
La meilleure borne supérieure (la plus petite), → inf zsup (yi ) = yi bi
yi
i=1
LAAS
Cours - Introduction à la programmation linéaire CNRS
Meilleure borne supérieure : problème dual 49
Ce problème est appelé problème dual du problème canonique de départ appelé problème primal
LAAS
Cours - Introduction à la programmation linéaire CNRS
Règles générales pour le calcul du problème dual 50
Maximisation ←→ Minimisation
z ∗ = max cT x t∗ = min bT y
x0 y
sous Ax = b sous AT y c
bT y si c − AT y 0
max L(x, y) = cT x + y T (b − Ax) =
x0 +∞ sinon
LAAS
Cours - Introduction à la programmation linéaire CNRS
Dualité du yaourt 51
LAAS
Cours - Introduction à la programmation linéaire CNRS
Interprétation économique de la dualité 52
max cT x sous Ax ≤ b, x ≥ 0
- Point de vue de l’acheteur : on souhaite payer le moins cher possible les ressources min bT y
LAAS
Cours - Introduction à la programmation linéaire CNRS
Théorèmes de dualité : dualité faible 53
❡ Théorème 9
∀ x et ∀ y solutions resp. primal et dual admissibles, on a
Ax ≤ b, x ≥ 0
⇒ z = cT x ≤ bT y = t et z ∗ ≤ t∗
AT y ≥ c, y ≥ 0
z∗ t∗
Primal Dual
❍ Corollaire 1
✔ S’il existe x et y resp. primal et dual admissibles t.q. cT x = bT y alors ces solutions sont optimales
✔ Si le coût optimal du primal z ∗ = +∞ alors le dual est irréalisable
✔ Si le coût optimal du dual t∗ = −∞ alors le primal est irréalisable
Exemple :
h i
∗
+∞ = z = max 1 −1 µ t∗ = min x
µ0 x
h i h i h i
sous 0 1 µ=1 sous 0 1 x −1 1
LAAS
Cours - Introduction à la programmation linéaire CNRS
Théorèmes de dualité : dualité forte 54
z ∗ = cT x∗ = bT y ∗ = t∗
z∗
Primal t∗ Dual
LAAS
Cours - Introduction à la programmation linéaire CNRS
Théorème des écarts complémentaires (I) 55
yi∗ (aTi x∗ − bi ) = 0, ∀ i = 1, · · · , m
(ATj y ∗ − cj )x∗j = 0, ∀ j = 1, · · · , n
T
a1
.
h i
où A = A1 · · · An = .
.
aTm
✍ Remarques 5
- Les deux conditions du théorème sont appelées conditions des écarts complémentaires ou conditions de
complémentarité
- La variable duale correspondant à une contrainte non saturée est nécessairement nulle
- A une variable duale strictement positive correspond nécessairement une contrainte saturée (variable d’écart
nulle)
∗ ∗
- Si exactement une des alternatives dans chaque paire d’égalités est vérifiée, les solutions x et y sont dites
satisfaire des conditions strictes de complémentarité
LAAS
Cours - Introduction à la programmation linéaire CNRS
Théorème des écarts complémentaires (II) 56
❡ Théorème 12
Soient x∗ et y ∗ des solutions réalisables du primal et du dual respectivement alors x∗ et y ∗ sont
optimales si et seulement si
x∗i ym+i
∗
= 0, 1 ≤ i ≤ n
yj∗ x∗n+j = 0, 1 ≤ j ≤ m
LAAS
Cours - Introduction à la programmation linéaire CNRS
Application aux yaourts des théorèmes de dualité (I) 57
x3 ←→ y1 ,
x1 ←→ y4 ,
x4 ←→ y2 ,
x2 ←→ y5 ,
x5 ←→ y3
LAAS
Cours - Introduction à la programmation linéaire CNRS
Application aux yaourts des théorèmes de dualité (II) 58
2y1∗ + y2∗ = 4
y1∗ + 2y2∗ = 5
LAAS
Cours - Introduction à la programmation linéaire CNRS
Dictionnaire optimal et variables duales 59
x3 = 0
8
x4 x5
1
6 x1 7 3 − 23
x4
x1 = 0
=0 x3 1 − 13 2
4 3
x2 4 − 23 1
x5
3
=0
2
z 40 − 23 − 5
3
x2 = 0
x1
0 2 4 6 8
LAAS
Cours - Introduction à la programmation linéaire CNRS
Lemme de Farkas (1902) pour les inégalités linéaires 60
❡ Théorème 13
Une seule des deux assertions de l’alternative suivante est vraie A ∈ Rm×n , b ∈ Rm
- ∃ x ∈ Rn | Ax b
m T T
- ∃ y ∈ R | A y = 0, y 0, b y < 0
On associe le primal à Ax b
max z = 0·x ∗
0 si Ax b réalisable
z =
sous Ax b −∞ si Ax b irréalisable
✔ Lagrangien :
L(x, y) = 0 · x + y T (b − Ax) pour y 0
✔ Fonction duale de Lagrange : (homogène positive)
bT y si AT y = 0, y 0
g(y) = sup L(x, y) =
x +∞ sinon
✔ Problème dual :
∗ ∗
−∞ si bT y < 0,
z ≤t = inf g(y) =
y0, AT y=0 0 si bT y ≥ 0
LAAS
Cours - Introduction à la programmation linéaire CNRS
Variations sur le lemme de Farkas 61
➋ - ∃ x ∈ Rn Ax ≺ b et x ≻ 0
- ∃ y ∈ Rm AT y 0 et bT y ≤ 0 et x ≻ 0
➌ - ∃ x ∈ Rn Ax ≺ b
- ∃ y ∈ Rm AT y = 0 et bT y ≤ 0 et y 0
➍ - ∃ x ∈ Rn Ax = b et x 0
- ∃ y ∈ Rm AT y 0 et bT y < 0
➎ - ∃ x ∈ Rn Ax = b et x ≻ 0
- ∃ y ∈ Rm AT y 0 et bT y ≤ 0
✍ Remarques 6
- Théorème de Gordan (1873) : ➌ avec b =0
- Théorème de Stiemke (1915) : ➎ avec b = 0
- Théorème de Ville (1938) : ➋ avec A → −A et b = 0
LAAS
Cours - Introduction à la programmation linéaire CNRS
Lemme de Farkas généralisé 62
❒ Lemme 1
Une seule des deux assertions de l’alternative suivante est vraie A ∈ Rm×n , b ∈ Rm
- ∃ x ∈ Rn | Ax b et cT x < 0
- ∃ y ∈ Rm | AT y + c = 0, y 0, bT y < 0
LAAS
Cours - Introduction à la programmation linéaire CNRS
Bibliographie 63
[1] A. Ben-Tal and A. Nemirovskii. Lectures on Modern Convex Optimization. SIAM Series on Optimization. SIAM,
Philadelphia, PA, USA, 2001.
[2] D. Bertsimas and J. N. Tsitsiklis. Introduction to linear optimization. Optimization and Computation Series.
Athena Scientific, Belmont, Massachussetts, USA, 1997.
[3] S. Boyd and L. Vandenberghe. Convex Optimization. Cambridge University Press, New York, NY, USA, 2004.
[4] G. B. Dantzig. Applications et prolongements de la programmation linéaire. Dunod, Dunod, Paris, 1966.
[5] G. B. Dantzig and M. N. Thapa. Linear programming. Springer, New York, New York USA, 1997.
[6] M. C. Ferris, O. L. Mangasarian, and S. J. Wright. Linear programming with MATLAB. MPS-SIAM Series on
Optimization. SIAM, Philadelphie, Pennsylvanie, USA, 2007.
[7] D. G. Luenberger. Linear and nonlinear programming. Addison Wesley Publishing Company, Reading,
Massachussets, USA, 1989.
[8] J. Matous̆ek and B. Gärtner. Understanding and using linear programming. Springer, Heiderlberg, Germany,
2007.
[9] J. F. Maurras. Programmation linéaire, complexité. Springer, Heiderlberg, Germany, 2002.
[10] R. J. Vanderbei. Linear Programming : Foundations and extensions. International Series on Operations
Research and Management Science. Springer, New York, New York, USA, 2008.
LAAS
Cours - Introduction à la programmation linéaire CNRS
Analyse post-optimale 64
±δc
b2
±δ
x1 x1
LAAS
Cours - Introduction à la programmation linéaire CNRS
Modification de l’objectif 65
xN
xB b̄ = B −1 b −B −1 N
z z ∗ = cTB B −1 b c̄N = cTN − cTB B −1 N ≤ 0
c → c′ = c + ∆
1. Est-ce que la base reste réalisable ?
Oui : b = B −1 b ≥ 0 est indépendant de c
2. Est-ce que la base reste optimale ?
Vérifier que c′ = c′T ′T −1
N − cB B N ≤0
LAAS
Cours - Introduction à la programmation linéaire CNRS
Exemple 66
Dictionnaire final :
z =40− x3 − x4
x2 =10 − (x3 −2x4 )
x1 =20 − (x3 − x4 )
LAAS
Cours - Introduction à la programmation linéaire CNRS
Modification du coût c1 de x1 67
z = c1 x1 − 2x2
On réécrit la fonction objectif en fonction des variables hors-base (ici x3 et x4 )
On peut appliquer les formules, ici on peut le faire en lisant x1 et x2 dans le dictionnaire final car on
dispose de ce dernier
z= c1 x1 − 2x2
=c1 (20 − x3 + x4 ) − 2(10 − x3 + 2x4 )
=20(c1 − 1) + (2 − c1 )x3 + (c1 − 4)x4
Il faut que le critère d’optimalité reste respecté (que les coûts réduits restent négatifs ou nuls)
2 − c1 ≤ 0
⇔ c1 ∈ [2, 4]
c 1 − 4 ≤ 0
LAAS
Cours - Introduction à la programmation linéaire CNRS
Modification de la borne d’une contrainte (capacité) 68
xN
xB b̄ = B −1 b −B −1 N
z z ∗ = cTB B −1 b c̄N = cTN − cTB B −1 N ≤ 0
b → b′ = b + δ
1. Est-ce que la base reste optimale ?
Oui : c̄N = cTN − cTB B −1 N ≤ 0 est indépendant de b
2. Est-ce que la base reste réalisable ?
Vérifier que b̄′ = B −1 b′ ≥ 0
LAAS
Cours - Introduction à la programmation linéaire CNRS
Un premier exemple 69
LAAS
Cours - Introduction à la programmation linéaire CNRS
Second exemple 70
x1 + 2x2 + x4 = 15 x3 1 − 13 2
3
2x1+ x2 + x5 = 18 x2 4 − 23 1
3
x ≥0 z 40 − 23 − 53
LAAS
Cours - Introduction à la programmation linéaire CNRS
Second exemple 71
x2
x3 = 0
8
Variation de bi :
— Contrainte i non saturée : seule la va- 6
x4
x1 = 0
leur de xn+i est affectée =0
4
— Contrainte i saturée : toutes les valeurs
x5
de xB et z ∗ sont affectées.
=0
2
x2 = 0
x1
0 2 4 6 8
LAAS
Cours - Introduction à la programmation linéaire CNRS
Exemple : contrainte non saturée 72
x4 x5
1
x1 7 3 − 23
x3 1 − 31 2
Contrainte 1 : x1 + x3 = 8 + δb1 3
x2 4 − 32 1
3
— Non saturée z 40 − 32 − 53
— x∗3 = 1 x2
Le sommet reste optimal tant que
8
x∗1
x5
x3 = 8 + δb1 − ≥0
=0
6
d’où δb1 ∈ [−1, +∞] x4
x1 = 0
=0
∗ 4
et δz =0
2
x2 = 0
x1
0 2 4 6 8
LAAS
Cours - Introduction à la programmation linéaire CNRS
Exemple : contrainte saturée 73
x4 x5
1
x1 7 3 − 32
Contrainte 3 : 2x1 + x2 + x5 = 18 + δb3
— Saturée x3 1 − 13 2
3
— x∗5 = 0 (hors base) x2 4 − 23 1
3
Lorsque b3 varie de δb3 , le sommet optimal z 40 − 23 − 35
se déplace sur la droite x4 = 0. x2
x3 = 0
Le sommet reste optimal tant que :
8
x1 = 7 − 23 (−δb3 ) ≥ 0
x3 = 1 + 23 (−δb3 ) ≥ 0 6
x4
x2 = 4 + 13 (−δb3 ) ≥ 0 x1 = 0 =0
4
x5
D’où −21/2 ≤ δb3 ≤ 3/2
=0
2
x2 = 0
x1
0 2 4 6 8
LAAS
Cours - Introduction à la programmation linéaire CNRS
Exemple : contrainte saturée 74
x4 x5
1
x1 7 3 − 32
Contrainte 3 : 2x1 + x2 + x5 = 18 + δb3
— Saturée x3 1 − 13 2
3
— x∗5 = 0 (hors base) x2 4 − 23 1
3
Lorsque b3 varie de δb3 , le sommet optimal z 40 − 23 − 35
se déplace sur la droite x4 = 0. x2
x3 = 0
Le sommet reste optimal tant que :
8
x1 = 7 − 23 (−δb3 ) ≥ 0
x3 = 1 + 23 (−δb3 ) ≥ 0 6
x4
x2 = 4 + 13 (−δb3 ) ≥ 0 x1 = 0 =0
4
LAAS
Cours - Introduction à la programmation linéaire CNRS
Exemple : contrainte saturée 75
x4 x5
1
x1 7 3 − 32
Contrainte 3 : 2x1 + x2 + x5 = 18 + δb3
— Saturée x3 1 − 13 2
3
— x∗5 = 0 (hors base) x2 4 − 23 1
3
Lorsque b3 varie de δb3 , le sommet optimal z 40 − 23 − 35
se déplace sur la droite x4 = 0. x2
x3 = 0
Le sommet reste optimal tant que :
8
x1 = 7 − 23 (−δb3 ) ≥ 0
x3 = 1 + 23 (−δb3 ) ≥ 0 6
x4
x2 = 4 + 13 (−δb3 ) ≥ 0 x1 = 0 =0
4
LAAS
Cours - Introduction à la programmation linéaire CNRS
Exemple : contrainte saturée 76
x4 x5
1
x1 7 3 − 32
x3 1 − 13 2
3
Variations admissibles :
x2 4 − 23 1
3
−21/2 ≤ δb3 ≤ 3/2 z 40 − 23 − 35
x2
Fonction objectif :
x3 = 0
8
δz ∗ = 53 δb3
d’où 6
x4
−35/2 ≤ δz ≤ 5/2∗ x1 = 0 =0
4
x5
=0
2
x2 = 0
x1
0 2 4 6 8
LAAS
Cours - Introduction à la programmation linéaire CNRS
Récapitulatif 77
LAAS
Cours - Introduction à la programmation linéaire CNRS
Ajout d’une contrainte 78
LAAS
Cours - Introduction à la programmation linéaire CNRS
Exemple 79
x3 = 0
8 1
x1 7 3 − 23
6 x3 1 − 13 2
3
x4
x1 = 0
=0 x2 4 − 23 1 La solution duale
4 3
x6 −1 − 13 2
x5
3
=0
2
z 40 − 23 − 53
x2 = 0
x1 Solution non admissible.
0 2 4 6 8
reste admissible (yi∗ ≥ 0) mais non optimale. Un pivot dans le problème dual nous ramène à la solution
optimale.
LAAS
Cours - Introduction à la programmation linéaire CNRS
Exemple 80
x2
x6 = 0 x4 x6
x3 = 0
x5
8
x1 6 0 −1
=0
6 x3 2 0 1
x4
x1 = 0
=0 x2 9
− 12 1
4 2 2
3 1 3
x5 2 2 2
2
z 37, 5 − 32 − 52
x2 = 0
x1 Solution admissible optimale.
0 2 4 6 8
LAAS
Cours - Introduction à la programmation linéaire CNRS
Forme canonique par rapport à une base 81
Un programme linéaire est dit sous forme canonique par rapport à une base si et seulement si
1. Forme standard
3. La sous-matrice formée par les colonnes associées aux variables de base forme la matrice identité
(à une permutation près)
Il s’agit en fait d’un système sous forme canonique dont les variables d’écart associées forment la base
LAAS
Cours - Introduction à la programmation linéaire CNRS
Invariants de boucle 82
2. La base est réalisable (les éléments de la dernière colonne sont positifs ou nuls)
4. La case en bas à droite vaut −z où z est la valeur de la fonction objectif pour la solution de base
courante
LAAS
Cours - Introduction à la programmation linéaire CNRS