introduction à la programmation...
TRANSCRIPT
Introduction à la programmation linéaire
Informations pratiques 2
Enseignant Denis Arzelier : directeur de recherche au LAAS-CNRS
Contacts Tel : 05 61 33 64 76 - email : [email protected]
Web-page http ://homepages.laas.fr/∼arzelier
Organisation du cours
➊ 5 cours 1h15 : 06h15
➩ Cours magistral en amphi avec supports de cours
➋ 4 séances TD 1h15 : 05h00
➩ Exercices d’application
➌ 2 séances TP 2h45 : 5h30
➩ Application avec support Python sous Notebook Jupyter
➍ 1 examen final : 1h15
Durée totale = 18h00
Cours - Introduction à la programmation linéaireLAAS
CNRS
Exemple I : problème de production 3
✍ Problème 1 Maximiser le profit d’un fabriquant de yaourts à la fraise A et B
✔ Composition des yaourts de types A et B
Yaourt A Yaourt B
Fraise 2 1
Lait 1 2
Sucre 0 1
✔ Disponibilité des matières pre-
mières
- Fraises : 800 kilos
- Lait : 700 kilos
- Sucre : 300 kilos
✔ Profit par type de yaourt
- Yaourt A : 4 euros/kilo
- Yaourt B : 5 euros/kilos
Cours - Introduction à la programmation linéaireLAAS
CNRS
Exemple 1 : modélisation 4
✔ Variables de décision ? (Ce que l’on doit décider)
Nombres de yaourts de type A et de type B : xA, xB
✔ Objectif ? (Ce que l’on doit optimiser)
Profit : z = 4xA + 5xB
✔ Contraintes ? (Ce que l’on doit respecter)
- Quantité maximale de fraises : 2xA + xB ≤ 800
- Quantité maximale de lait : xA + 2xB ≤ 700
- Quantité maximale de sucre : xB ≤ 300
Problème de programmation linéaire :
maxxA,xB
4xA + 5xB
sous 2xA + xB ≤ 800
xA + 2xB ≤ 700
xB ≤ 300
xA, xB ≥ 0
Cours - Introduction à la programmation linéaireLAAS
CNRS
Exemple 2 : problème de transport 5
✍ Problème 2 Approvisionner à moindre coût différents clients à partir de différentes usines
✔ Lieux de production et quantités produites
Usines (i ∈ I) Bordeaux Biarritz Toulouse
Productions (pi) 25 15 20
✔ Lieux et quantités de livraison
Clients (j ∈ J ) Pau Bayonne Bordeaux Libourne
Demandes (dj ) 20 12 9 14
✔ Coûts de livraison
Prix/unité (cij ) Pau Bayonne Bordeaux Libourne
Bordeaux 26 19 0 4
Biarritz 12 2 20 24
Toulouse 19 30 24 28
✔ Variables xij : quantité produite en i et livrée en j
Problème de PL :
minxij
∑
i,j
cijxij
sous∑
i
xij = dj , j ∈ J
∑
j
xij = pi, i ∈ I
xij ≥ 0, i ∈ I, j ∈ J
Cours - Introduction à la programmation linéaireLAAS
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
Demandes 900 1100 1700 1300
Cours - Introduction à la programmation linéaireLAAS
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 :
Minimiser 7t=4∑
t=1
yt + 3t=3∑
t=1
st
✔ 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
Cours - Introduction à la programmation linéaireLAAS
CNRS
Quelques remarques historiques (I) 8
✔ Etude des systèmes d’inégalités linéaires par J. Fourier en 1827
- Méthode d’élimination de Fourier-Motzkin
- Généralise l’élimination de Gauss-Jordan
J. Fourier (1768-1830)
✔ Formulation d’une classe restreinte de PL + Algorithme en URSS par L.V. Kantorovich en 1939
L.V. Kantorovich (1912-1986)
- Réorganisation de l’industrie du bois dans une économie centralisée
- Optimisation de la production industrielle de contreplaqué
- Théorie de l’utilité marginale
- Co-prix Nobel d’économie en 1975 (travaux en allocation optimale de ressources)
✔ Minimisation du coût total de transport de biens par T.C. Koopmans en 1944 pour la British Merchant Shipping
Mission
- Exchange ratios between cargos on various routes
- Co-prix Nobel d’économie en 1975 (travaux en allocation optimale de ressources)
- Fondation de la recherche opérationnelleT.C. Koopmans (191O-1985)
Cours - Introduction à la programmation linéaireLAAS
CNRS
Quelques remarques historiques (II) 9
✔ Algorithme du simplexe par G. Dantzig en 1947 pour l’U.S. Air Force
- Problèmes militaires de planification d’opérations et d’allocation de ressources
- Algorithme dans le top 10 en 2000
G. Dantzig (1914-2005)
✔ Algorithme de l’ellipsoïde par L.G. Kachiyan en 1979
..
xk −→g kxk+1
Ek
Ek+1
- Algorithme en temps polynomial
- Peu efficace en pratique (degré élevé du polynôme(t))
✔ Algorithme polynomial de point intérieur par N. Karmakar en 1984
- Brevet U.S. Patent 4,744,028 "Methods and apparatus for efficient
resource allocation" (mai 1988), débattu au sénat U.S.
- Méthodes de point intérieur pour la programmation convexe (SDP)
Cours - Introduction à la programmation linéaireLAAS
CNRS
Hypothèses fondamentales et terminologie 10
minx∈Rn
(maxx∈Rn
) f(x) = c1x1+ c2x2+. . .+ cnxn
sous a1,1x1+ a1,2x2+. . .+ a1,nxn = b1
...
am,1x1+ am,2x2+. . .+ am,nxn = bm
am+1,1x1+am+1,2x2+. . .+am+1,nxn ≤ bm+1
...
am+p,1x1+am+p,2x2+. . .+am+p,nxn ≤ bm+p
✔ Linéarité :
- Fonction objectif : f(x) = cTx
- Contraintes : X = {x ∈ Rn : h(x) = A1x− B1 = 0, g(x) = A2x−B2 � 0}
✔ Continuité : x ∈ Rn 6= PLNE = x ∈ N
n
- Solution réalisable : x est une solution réalisable ssi x ∈ X
- Région réalisable : ensemble des solutions réalisables X
Cours - Introduction à la programmation linéaireLAAS
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
∀ λ ∈ [0, 1], x, y ∈ C ⇒ (1− λ)x+ λy ∈ C
z = (1− λ)x+ λy, λ ∈ [0, 1] est la combinaison convexe de x et y xx
x
y
yy
✔ L’enveloppe convexe co C d’un ensemble C est l’ensemble de toutes les combinaisons convexes des points
de C
co C =
{
∑
i
λixi : xi ∈ C, λi ≥ 0,∑
i
λi = 1
}
✔ x ∈ C est un point extrême d’un ensemble convexe C si
x = λx1 + (1− λ)x2, x1, x2 ∈ C, λ ∈ (0, 1)⇒ x = x1 = x2
♥ Propriétés 1 L’intersection finie de plusieurs ensembles convexes
n⋂
i=1
Ci est un ensemble convexe
Cours - Introduction à la programmation linéaireLAAS
CNRS
Géométrie et PL (II) 12
✔ Un hyperplan de Rn est un sous-espace affine de dimension n− 1
H ={
x ∈ Rn | aT (x− x0) = 0
}
où a 6= 0 ∈ Rn est le vecteur normal à l’hyperplan
Un hyperplan divise Rn en 2 demi-espaces :
H− ={
x ∈ Rn | aT (x− x0) ≤ 0
}
, a 6= 0 ∈ Rn
H+ ={
x ∈ Rn | aT (x− x0) ≥ 0
}
, a 6= 0 ∈ Rn
+
+
+
+
a
x0
x
x1
x2
H+
H−
Hyperplan et demi-espaces
x ∈ H, x1 ∈ H+, x2 ∈ H−
✔ Un polyèdre convexe est un ensemble défini par un nombre fini d’inégalités linéaires
a3
a1
a2
a4
a5
a6
Polytope intersection de demi-espaces
P ={
x ∈ Rn : aT
j x ≤ bj , j = 1, · · · ,m}
= {x ∈ Rn : Ax � b}
Ex : l’orthant positif R+ est un ensemble polyèdral conique
✔ xE est un point extrême du polyèdre P si ∀y 6= z ∈ P, xE 6∈ (y, z)
✔ Un polyèdre convexe borné est un polytope convexe
Cours - Introduction à la programmation linéaireLAAS
CNRS
Géométrie et PL (III) 13
✔ Un point v d’un polyèdre convexe P est un sommet de P si
v ∈ P et ∃ c 6= 0 ∈ Rn : cT v > cT y, ∀ y ∈ P \ {v}
c
v
cTx = 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
x1
x2
P
a11x1 + a12x2 = b1
a21x1 + a22x2 = b2
a31x1 + a32x2 = b3
x2 = 0
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
∀ x ∈ P , x =N∑
i=1
λixEi , 0 ≤ λi ≤ 1,
N∑
i=1
λi = 1, xEi point extreme de P
Cours - Introduction à la programmation linéaireLAAS
CNRS
Solution optimale, optimum et résolution graphique 14
✔ Solution optimale x∗ et optimum z∗ = f(x∗) = cTx∗ :
∀ x ∈ P : cTx∗ ≤ (≥)cTx
- aucune solution optimale (P = ◦/ ou non bornée)
- une seule solution optimale
- une infinité de solutions optimales
- S’il existe une solution optimale, il en existe tou-
jours au moins une sur un sommet (point ex-
trême) de P
- Combinatoire d’énumération des points ex-
trêmes de P
x1
x2
Pas de solutionx1
x2
Infinité de solutions
x1
x2
Pas de solution
x1
x2
Sommet dégénéré
Dégénerescence
✔ Méthode graphique :
x1
x2
z=z ∗
Solution optimale
- Tracer le polyèdreP des solutions admissibles
- Tracer les droites isocritères z = cTx = c1x1 + · · ·+
cnxn = k
- Identifier et calculer le point extrême x∗ et l’optimum z∗
Cours - Introduction à la programmation linéaireLAAS
CNRS
Résolution graphique : exemple des yaourts 15
Max 4xA+5xB
2xA+ xB ≤800
xA+2xB ≤700
xB ≤300
xA, xB ≥ 0
Cours - Introduction à la programmation linéaireLAAS
CNRS
Un algorithme géométrique 16
Algorithme du simplexe
➊ Démarrer en un point extrême xEk de la région réalisable P
➋ Déterminer une arête le long de laquelle l’objectif diminue (ou augmente)
➌ S’il n’en existe pas, xEk est optimal, STOP
➍ Sinon se déplacer le long de l’arête jusqu’au point extrême xEk+1 suivant
➎ S’il n’en existe pas, le problème est non borné, STOP
➏ Sinon, xEk ← xE
k+1 et revenir en 2
❡ 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
Cours - Introduction à la programmation linéaireLAAS
CNRS
Programme linéaire générique 17
Min. ou Max. c1x1+ c2x2+. . .+ cnxn
ou c1x1+ c2x2+. . .+ cnxn = z[min] ou z[max]
ai,1x1+ ai,ix2+. . .+ai,nxn =ai (1 ≤ i ≤ p)
aj,1x1+aj,2x2+. . .+aj,nxn ≤bj (1 ≤ j ≤ q)
ak,1x1+ak,2x2+. . .+ak,nxn ≥ck (1 ≤ k ≤ r)
x1, . . ., xs ≥ 0
xs+1, . . ., xt ≤ 0
xt+1, . . ., xn de signe quelconque
Cours - Introduction à la programmation linéaireLAAS
CNRS
Ecriture matricielle 18
cTx = z[min] ou z[max]
Ax = a
Bx � b
Cx � c
x1, . . . , xs ≥ 0
xs+1, . . . , xt ≤ 0
Exercice : donner l’écriture matricielle de l’exemple du problème de production
Cours - Introduction à la programmation linéaireLAAS
CNRS
Formes canoniques et standard et règles de transformation 19
✔ Formes canoniques :
cTx = z[max]
Bx � b
x � 0
cTx = z[min]
Bx � b
x � 0
✔ Forme standard :
cTx = z[max]
Ax = a
x � 0
- min cTx⇔ max−cTx
- 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 − x−
i , x+i , x
−i ≥ 0
Cours - Introduction à la programmation linéaireLAAS
CNRS
Exemple 20
Min 2x1−3x2
2x1 −x3 ≥−5
x1+2x2 = 8
x2 ≤ 0
x1 ≥ 0
Cours - Introduction à la programmation linéaireLAAS
CNRS
Focus sur les variables d’écart 21
bi
n∑
j=1
a′ijx′j
n∑
j=1
a′ijx′j ≤ bi i = 1, . . . ,m
x′j ≥ 0 j = 1, . . . , n
bi
n∑
j=1
a′ijx′j
xn+i
n∑
j=1
a′ijx′j+xn+i = bi i = 1, . . . ,m
xj ≥ 0 j = 1, . . . , n+m
✔ 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
Cours - Introduction à la programmation linéaireLAAS
CNRS
Solutions de base et solutions de base admissibles 22
▼ Définition 1
Soit le polyèdre P ={
x ∈ Rn : aTj x ≤ bj , j = 1, · · · ,m, cTi x = di, i = 1, · · · , p
}
, p, m ≤ n
alors
- x∗ ∈ Rn est une solution de base si
Toutes les contraintes égalité sont actives
Parmi les contraintes actives en x∗, n sont linéaire-
ment indépendantes
- x∗ ∈ Rn est une solution de base dégénérée si plus
de n contraintes sont actives en x∗
- Si x∗ ∈ P est une solution de base alors x∗ est une
solution de base admissible
A
Bx1
C
D
Ex2
x3
P = {(x1, x2, x3)|x1 + x2 + x3 = 1, x1, x2, x3 ≥ 0, x2 ≤ 1}
❡ Théorème 2
Soit P un polyèdre non vide et x∗ ∈ P alors x∗ est un sommet de P ssi x∗ est un point extrême de P
ssi x∗ est une solution de base admissible de P
Cours - Introduction à la programmation linéaireLAAS
CNRS
Solutions de base admissibles et polyèdres standards 23
❡ Théorème 3
Soit P = {x ∈ Rn|Ax = b, x � 0, b ∈ R
m} 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.
- Les colonnes AB(1), · · · , AB(m) sont linéairement indépendantes (forment une base de Rm)
- Si i 6= B(1), · · · , B(m) alors x∗i = 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 deP
✇ 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
0 1 6 0 1 0 0
1 0 0 0 0 1 0
0 1 0 0 0 0 1
x =
8
12
4
6
Cours - Introduction à la programmation linéaireLAAS
CNRS
Algorithme du simplexe et yaourts à la fraise 24
✔ Forme normale :
Max z = 4xA+5xB
2xA+ xB ≤800
xA+2xB ≤700
xB ≤300
xA, xB ≥ 0
✔ Forme standard :
Max z = 4xA+5xB+0x1+0x2+0x3
2xA+ xB+ x1 =800
xA+2xB + x2 =700
xB + x3 =300
xA, xB , x1, x2, x3 ≥ 0
Cours - Introduction à la programmation linéaireLAAS
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
xA × 10−2
xB × 10−2
1 2 3 4 5 6 7 8
1
2
3
4
5
6
7
8
0
z=0
Solution de base réalisable initiale
Cours - Introduction à la programmation linéaireLAAS
CNRS
Choix de l’arête de déplacement 26
max z = 0+4xA+5xB
x1 =800−2xA− xB
x2 =700− xA−2xB
x3 =300 − xB
xA × 10−2
xB × 10−2
1 2 3 4 5 6 7 8
1
2
3
4
5
6
7
8
0
z =0
✔ Il faut améliorer l’objectif z ր
✔ Il faut donc augmenter une variable fixée à 0⇒ xA ou xB
✔ Quelle variable choisir ?
- Parmi les variables ayant un impact positif sur l’objectif⇒ dont le coût ci est positif
- Choix heuristique :→ xB : cB = 5 > cA = 4
Cours - Introduction à la programmation linéaireLAAS
CNRS
Déplacement le long de l’arête 27
✔ Jusqu’où augmenter xB ?
x1 = 800−xB ≥ 0⇔ xB ≤ 800
x2 = 700−2xB ≥ 0⇔ xB ≤ 350
x3 = 300−xB ≥ 0⇔ xB ≤ 300
✔ xB augmente de 300
✔ x3 = 0 et xA = x3 = 0
✔ Solution de base réalisable :
{xA = 0}⋂
{xB = 300} xA × 10−2
xB × 10−2
1 2 3 4 5 6 7 8
1
2
3
4
5
6
7
8
0
z =0
Cours - Introduction à la programmation linéaireLAAS
CNRS
Etape de pivotage 28
✔ Réécrire le système avec les variables non nulles en fonction des variables fixées à 0
z = 0+4xA+5xB
x1 =800−2xA− xB
x2 =700− xA−2xB
x3 =300 − xB
z = 0+4xA+5xB
x1 =800−2xA− xB
x2 =700− xA−2xB
xB= 300 − x3
✔ Solution associée ?
z =1500+4xA−5x3
x1 = 500−2xA+ x3
x2 = 100− xA+2x3
xB = 300 − x3
xA × 10−2
xB × 10−2
1 2 3 4 5 6 7 8
1
2
3
4
5
6
7
8
0
z=1500
Cours - Introduction à la programmation linéaireLAAS
CNRS
Faut-il continuer ? 29
✔ Peut-on encore améliorer l’objectif z = 1500 + 4 xA − 5x3 ?
Oui car xA a un impact (un coût) positif sur l’objectif
✔ Ici, il n’y a pas d’autre choix (x3 a un impact négatif)
✔ Jusqu’où augmenter xA ?
x1 = 500− 2xA ≥ 0⇔ xA ≤ 250
x2 = 100− xA ≥ 0⇔ xA ≤ 100
xB = 300− x3
xA × 10−2
xB × 10−2
1 2 3 4 5 6 7 8
1
2
3
4
5
6
7
8
0xA n’a aucun impact sur xB
✔ xA augmente de 100 afin que toutes les variables restent≥ 0
✔ On a x2 = x3 = 0
✔ Solution de base réalisable : {xA + 2xB = 700}⋂
{xB = 300}
Cours - Introduction à la programmation linéaireLAAS
CNRS
Etape de pivotage 30
✔ Réécrire le système avec les variables non nulles en fonction des variables fixées à 0
z =1500+4xA−5x3
x1 = 500−2xA+ x3
x2 = 100− xA+2x3
xB = 300 − x3
z =1500+4xA−5x3
x1 = 500−2xA+ x3
xA= 100− x2+2x3
xB = 300 − x3
✔ Solution associée ?
z =1900−4x2+3x3
x1 = 300+2x2−3x3
xA = 100− x2+2x3
xB = 300 − x3
xA × 10−2
xB × 10−2
1 2 3 4 5 6 7 8
12345678
0
z =1900
Cours - Introduction à la programmation linéaireLAAS
CNRS
Faut-il continuer ? 31
✔ Peut-on encore améliorer l’objectif z = 1900− 4x2 + 3 x3 ?
Oui car x3 a un impact (un coût) positif sur l’objectif
✔ Ici, il n’y a pas d’autre choix (x2 a un impact négatif)
✔ Jusqu’où augmenter x3 ?
x1 = 300 + 2x2 − 3x3 ≥ 0⇔ x3 ≤ 100
xA = 100− x2 + 2x3 ≥ 0⇔ x3 non contraint
xB = 300− x3 ⇔ x3 ≤ 300
xA × 10−2
xB × 10−2
1 2 3 4 5 6 7 8
1
2
3
4
5
6
7
8
0✔ x3 augmente de 100 afin que toutes les variables restent≥ 0
✔ On a x1 = x2 = 0
✔ Solution de base réalisable : {2xA + xB = 800}⋂
{xA + 2xB = 700}
Cours - Introduction à la programmation linéaireLAAS
CNRS
Etape de pivotage 32
✔ Réécrire le système avec les variables non nulles en fonction des variables fixées à 0
z =1900−4x2+3x3
x1 = 300+2x2−3x3
xA = 100− x2+2x3
xB = 300 − x3
z =1900− 4x2+ 3x3
x3 = 100+2
3x2−
1
3x1
xA = 100− x2+ 2x3
xB = 300 − x3
✔ Solution associée ?
z =2200− 2x2− x1
x3 = 100+2
3x2−
1
3x1
xA = 300+1
3x2−
2
3x1
xB = 200−2
3x2+
1
3x1
xA × 10−2
xB × 10−2
1 2 3 4 5 6 7 8
1
2
3
4
5
6
7
8
0
z=2200
Cours - Introduction à la programmation linéaireLAAS
CNRS
Faut-il continuer ? 33
✔ Peut-on encore améliorer l’objectif z = 2200− 2x2 − x1 ?
Non car toutes les variables ont un impact (un coût) négatif sur l’objectif
z =2200− 2x2− x1
x3 = 100+2
3x2−
1
3x1
xA = 300+1
3x2−
2
3x1
xB = 200−2
3x2+
1
3x1
xA × 10−2
xB × 10−2
1 2 3 4 5 6 7 8
1
2
3
4
5
6
7
8
0
z=2200
✔ Solution optimale :
xA = 300, xB = 200 (x3 = 100, x1 = x2 = 0), z∗ = 2200
Cours - Introduction à la programmation linéaireLAAS
CNRS
Simplexe par la méthode des dictionnaires (I) 34
✔ Programme linéaire sous la forme :
maxxj
∑
j
cjxj
∑
j
ai,jxj ≤ bi, (i = 1, . . . ,m)
xj ≥ 0, (j = 1, . . . , n)
✔ Ajout des variables d’écart xn+i et d’une variable objectif z
z =n∑
j=1
cjxj
xn+i = bi −n∑
j=1
ai,jxj (i = 1, . . . ,m)
A chaque itération, la solution courante est associée à un système d’équations appelé dictionnaire :
z = z +∑
j∈N
cjxj (variables hors-base xN ∈ Rn+)
(variables de base xB ∈ Rm+ ) xi = bi −
∑
j∈N
ai,jxj , (i ∈ B = (B(1), · · · , B(m)))
- L’ensemble des variables de base xB =[
xB(1), · · · , xB(m)
]T
- B ensemble des indices des variables en base,N ensemble des indices des variables hors-base
Cours - Introduction à la programmation linéaireLAAS
CNRS
Simplexe par la méthode des dictionnaires (II) 35
z = z +∑
j∈N
cjxj
xi = bi −∑
j∈N
ai,jxj (i ∈ B)
✔ 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 +NxN = b
- Dictionnaire sous forme simpliciale :
xB = B−1b− B−1NxN
✔ Une solution de base associée à B, (xB, xN ) = (B−1b, 0) est obtenue en posant xN = 0
✔ Le dictionnaire et la solution de base associées sont dits réalisables si xB ≥ 0
Cours - Introduction à la programmation linéaireLAAS
CNRS
Simplexe par la méthode des dictionnaires (III) 36
✔ Expression du critère sous la forme simpliciale :
z = cTx = cTBxB + cTNxN
En remplaçant xB par sa valeur en fonction des variables hors-base :
z = cTBB−1b+ (cTN − cTBB
−1N)xN
= z + cTNxN
Les cN sont appelés coûts réduits relatifs aux variables hors-base
✔ Dictionnaire final en fonction de la base optimale :
xN
xB b = B−1b −B−1N
z z∗ = cTBB−1b cN = cTN − cTBB
−1N ≤ 0
Cours - Introduction à la programmation linéaireLAAS
CNRS
Simplexe par la méthode des dictionnaires (IV) 37
✔ Dictionnaire initial :
z =n∑
j=1
cjxj
xn+i = bi −n∑
j=1
ai,jxj (i = 1, . . . ,m)
- La base initiale est formée à l’aide des variables d’écart B = {n+ 1, . . . , n+m}
- Les variables hors-base sont les variables initiales du problèmeN = {1, . . . , n}
- B base initiale réalisable ?
✔ Propriétés des solutions de base
- Toutes les solutions réalisables ne sont pas associées à une base (ou un dictionnaire)
- Chaque point extrême réalisable est représenté par au moins un dictionnaire
- L’algorithme du simplexe considère exclusivement les solutions de base réalisables
❡ 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
Cours - Introduction à la programmation linéaireLAAS
CNRS
Choix de la variable entrante 38
z = z +∑
j∈N
cjxj
xi = bi −∑
j∈N
ai,jxj (i ∈ B)
Les coûts réduits cj , j ∈ N représentent l’impact de l’augmentation d’une variable sur l’objectif z
❡ Théorème 5 Condition d’optimalité
La solution de base est optimale si et seulement si tous les coûts réduits sont négatifs ou nuls
z = z∗ ⇔ bi = B
−1i 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 : maxj∈N
cj
Choisir la variable d’indice le plus petit (règle de Bland)
Cours - Introduction à la programmation linéaireLAAS
CNRS
Choix de la variable sortante 39
z = z +∑
j∈N
cjxj
xi = bi −∑
j∈N
ai,jxj (i ∈ B)
Le choix dépend de la variable xk qui va entrer en base
Impact sur les variables en base en fonction du coefficient ai,k, i ∈ B
- Si ai,k ≤ 0, l’augmentation de xk entraine une augmentation de xi
- Si ai,k > 0, l’augmentation de xk entraine une diminution de xi et xi ≥ 0
xi = bi − ai,kxk ≥ 0⇒ xk ≤biai,k
✇ Procédure 3
➊ Choisir s ∈ B tel que s = argmini∈B
{
biai,k
: ai,k > 0
}
, xs est la variable sortante
➋ Si ∃ i ∈ B : bi = 0, le dictionnaire est dégénéré
➌ Si ai,k ≤ 0 ∀ i ∈ B, pas de candidat pour sortir de la base et le problème est non-borné
Cours - Introduction à la programmation linéaireLAAS
CNRS
Etape de pivotage 40
z = z +∑
j∈N\{k}
cjxj + ckxk
xi = bi −∑
j∈N\{k}
ai,jxj − ai,kxk (i ∈ B)
Pivotage : réécrire le dictionnaire par rapport à la nouvelle base
xk =bsas,k
−∑
j∈N\{k}
as,jas,k
xj −1
as,kxs
z = z + ckbsas,k
+∑
j∈N\{k}
(cj − ckas,jas,k
)xj − ck1
as,kxs
xi = bi − ai,kbsas,k
−∑
j∈N\{k}
(ai,j − ai,kas,jas,k
)xj + ai,k1
as,kxs,∀ i ∈ B \ {s}
Cours - Introduction à la programmation linéaireLAAS
CNRS
Le problème des pivots dégénérés et des cycles (I) 41
▼ Définition 2
Un pivot est dégénéré si, dans le calcul de la variable sortante, le rapportas,k
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
Cmn+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
Cours - Introduction à la programmation linéaireLAAS
CNRS
Le problème des pivots dégénérés et des cycles (II) 42
Exemple de cycle :
z = 0 + 10x1 − 57x2 − 9x3 − 24x4
x5 = − 0.5x1 + 5.5x2 + 2.5x3 − 9x4
x6 = − 0.5x1 + 1.5x2 + 0.5x3 − x4
x7 = 1 − x1
Il existe des règles de picotage limitant les risques de cycle :
✔ Règle de Bland : l’algorithme termine si, à chaque itération, les variables entrante et sortante sont
choisies selon la règle du plus petit indice
✔ Méthode lexicographique : ajouter aux membres de droite des contraintes des variables
0 < ǫm << · · · << ǫ2 << ǫ1
❡ Théorème 6 [fondamental de la PL]
Pour un problème de PL sous forme standard :
✔ Si le PL n’ pas de solution optimale alors il est soit irréalisable soit non borné
✔ Si le PL a une solution réalisable alors une solution réalisable de base existe
✔ Si le PL a une solution optimale alors une solution de base optimale existe
Cours - Introduction à la programmation linéaireLAAS
CNRS
Phase I du simplexe et solution de base initiale réalisable (I) 43
✔ Problème :
maxx
z = cTx
aTi x ≤ bi, (i = 1, . . . ,m)
xj ≥ 0, (j = 1, . . . , n)
avec
aTk x ≤ bk < 0 → xn+k = bk − a
Tk x non realisable
✔ Solution :
Pour chaque contrainte t.q. bk < 0, décomposer la variable d’écart en xn+k − x′n+k
aTk xk + xn+k − x
′n+k = bk
Résoudre le PL auxiliaire
maxx∈Rn+m,x′∈Rl
w =
l∑
k=1:bk<0
−x′n+k
aTk x+ xn+r − x′
n+k = bk, (k = 1, . . . , l), (r = 1, · · · ,m)
x′n+k ≥ 0, xn+r ≥ 0, xj ≥ 0, (j = 1, . . . , n)
Cours - Introduction à la programmation linéaireLAAS
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
aTk xk + xn+k − x
′n+k = bk
➋ Poser le PL auxiliaire avec les variables artificielles x′n+i et le critère w =
l∑
k=1:bk<0
−x′n+k
➌ Obtenir une base réalisable Baux initiale pour le PL auxiliaire et le dictionnaire associé
➍ Appliquer l’algorithme du simplexe sur le PL auxiliaire pour obtenir w∗
➎ Si w∗ = 0, supprimer les variables artificielles x′n+k = 0 du dictionnaire optimal du PL auxiliaire
➏ Reprendre l’objectif initial z = cTx avec ce dictionnaire
➐ Substituer les variables hors-base dans l’objectif aux variables en base en les remplaçant par leur expression
donnée par le dictionnaire
➑ Appliquer l’algorithme normal du simplexe
Cours - Introduction à la programmation linéaireLAAS
CNRS
Exemple 45
✔ PL initial :
−x1 − x2 = z[max]
−3x1 − 4x2 ≤ −12
2x1 + x2 ≤ 4
x1, x2 ≥ 0x1
x2
1 2 3 4 5 6
1
2
3
4
5
6
0 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
Cours - Introduction à la programmation linéaireLAAS
CNRS
Complexité du simplexe et de la programmation linéaire 46
✔ Analyse dans le pire des cas du simplexe :
- L’algorithme du simplexe se termine après un nombre fini d’itérations (niter. ≤ Cmn+m)
maxm
Cmn+m = Cn
2n,1
2n22n ≤ Cn
2n ≤ 22n (250 = 1.1259× 1015 !)
- Exemples "pathologiques" : niter. ∼ Cmn+m itérations (exponentiel)
Klee−Minty 1972 maxx
n∑
j=1
10n−jxj
(niter. = 2n − 1) sous 2i−1∑
j=1
10i−jxj ≤ 100i−1, i = 1, · · · , n
xj ≥ 0, j = 1, 2, · · · , n
✔ Analyse empirique : Nombre d’opérations de l’ordre de Θ(m+ logn)
✔ Analyse dans le pire des cas de la programmation linéaire
- Résoudre un programme linéaire est un problème polynomial
- Utilisation des méthodes du point intérieur (N. Karmakar 1984)
Cours - Introduction à la programmation linéaireLAAS
CNRS
Introduction à la dualité en PL : motivation 47
Soit le problème de PL sous forme canonique :
maxxj
z =∑
j
cjxj
∑
j
ai,jxj ≤ bi, (i = 1, . . . ,m)
xj ≥ 0, (j = 1, . . . , n)
✔ Caractérisation de la solution optimale z∗ par [zinf , zsup]
- Borne inférieure : cTx ≤ z∗ pour tout x admissible
- Borne supérieure : zsup =? telle que z∗ ≤ zsup
Solutions admissibles
z
z∗zinf zsup
✔ Recherche de [zinf , zsup] le plus petit possible pour situer l’optimum z∗
❡ Théorème 8
Toute combinaison linéaire de contraintes du PL donne une contrainte valide (satisfaite par toutes les
solutions réalisables)
Cours - Introduction à la programmation linéaireLAAS
CNRS
Combinaisons linéaires et bornes supérieures 48
Pour des multiplicateurs y1 ≥ 0, . . . , ym ≥ 0
a11x1 + . . . + a1nxn ≤ b1 ×y1
. . . + . . . + . . . . . . . . .
am1x1 + . . . + amnxn ≤ bm ×ymm∑
i=1
(yiai1)x1 + . . . +
m∑
i=1
(yiain)xn ≤m∑
i=1
yibi
Si c1 ≤m∑
i=1
yiai1, · · · , cn ≤m∑
i=1
yiain et pour x1 ≥ 0, . . . , xn ≥ 0, on aura
z =n∑
j=1
cjxj ≤m∑
i=1
(yiai1)x1 + . . .+m∑
i=1
(yiain)xn ≤m∑
i=1
yibi
zsup(yi)
La meilleure borne supérieure (la plus petite),→ infyi
zsup(yi) =m∑
i=1
yibi
Cours - Introduction à la programmation linéaireLAAS
CNRS
Meilleure borne supérieure : problème dual 49
Résoudre le programme linéaire suivant :
miny
t =m∑
i=1
yibi
sousm∑
i=1
yiaij ≥ cj , j = 1, · · · , n
y1, . . . , ym ≥ 0
Ce problème est appelé problème dual du problème canonique de départ appelé problème primal
Primal maxx
z = cTx
sous Ax ≤ b
x ≥ 0
Dual miny
t = bT y
sous AT y ≥ c
y ≥ 0
où c et x ∈ Rn×1, A ∈ R
m×n, b et y ∈ Rm×1
✍ Remarques 3
Le problème dual du dual est le problème primal
Cours - Introduction à la programmation linéaireLAAS
CNRS
Règles générales pour le calcul du problème dual 50
Maximisation ←→ Minimisation
ie contrainte de type≤ bi ←→ Variable yi ≥ 0
ie contrainte de type = bi ←→ Variable yi ∈ R
ie contrainte de type≥ bi ←→ Variable yi ≤ 0
Variable xj ≥ 0 ←→ je contrainte de type≥ cj
Variable xj ∈ R ←→ je contrainte de type = cj
Variable xj ≤ 0 ←→ je contrainte de type≤ cj
Exemple : PL primal sous forme standard (dualité lagrangienne)
z∗ = maxx�0
cTx t∗ = miny
bT y
sous Ax = b sous AT y � c
maxx�0
L(x, y) = cTx+ yT (b−Ax) =
bT y si c−AT y � 0
+∞ sinon
Cours - Introduction à la programmation linéaireLAAS
CNRS
Dualité du yaourt 51
max z = 4x1 + 5x2
2x1 + x2 ≤ 800 (y1)
x1 + 2x2 ≤ 700 (y2)
x2 ≤ 300 (y3)
x1 , x2 ≥ 0
Solution optimale primale : x∗1 = 300, x∗
2 = 200, z∗ = 2200
min t = 800y1 + 700y2 + 300y3
2y1 + y2 ≥ 4 (x1)
y1 + 2y2 + y3 ≥ 5 (x2)
y1 , y2 , y3 ≥ 0
Solution optimale duale : y∗1 = 1, y∗2 = 2, y∗3 = 0, w∗ = 2200
✍ Remarques 4
La variable duale est une variable de prix associée à chaque contrainte du primal
Cours - Introduction à la programmation linéaireLAAS
CNRS
Interprétation économique de la dualité 52
✔ Primal : problème de production
- xj : quantité de produit j réalisée
- aij : quantité de ressource i nécessaire à la réalisation d’un produit j,
- bi : quantité totale de ressource i disponible
- cj : profit réalisé lors de la vente d’un produit j
−→ Maximiser le profit en respectant les contraintes de ressource
max cTx sous Ax ≤ b, x ≥ 0
✔ Dual : Comment fixer le prix yi afin de racheter les ressources i?
- Point de vue du vendeur : pour tout produit j qu’on ne fabrique pas, on souhaite récupérer au
moins autant que le profit qu’on aurait réalisé∑
i
aijyi ≥ cj , ∀j
- Point de vue de l’acheteur : on souhaite payer le moins cher possible les ressources min bT y
▼ Définition 3 (Valeur marginale d’une contrainte)
La valeur marginale d’une contrainte i correspond à la valeur de sa variable duale à l’optimum y∗i
Cours - Introduction à la programmation linéaireLAAS
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
AT y ≥ c, y ≥ 0⇒ z = cTx ≤ bT y = t et z∗ ≤ t∗
Primal Dual
z∗ t∗
❍ Corollaire 1
✔ S’il existe x et y resp. primal et dual admissibles t.q. cTx = 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 :
+∞ = z∗ = maxµ�0
[
1 −1]
µ t∗ = minx
x
sous[
0 1]
µ = 1 sous[
0 1]
x �[
−1 1]
Cours - Introduction à la programmation linéaireLAAS
CNRS
Théorèmes de dualité : dualité forte 54
❡ Théorème 10 (Théorème de la dualité (Gale, Kuhn, Tucker 1951 ))
Exactement une des trois alternatives est vraie :
✔ Le problème primal et le problème dual sont réalisables et ont une solution optimale identique
z∗ = cTx∗ = bT y∗ = t∗
Primal Dual
z∗
t∗
✔ Exactement un des problèmes est irréalisable et l’autre est non borné
✔ Primal et dual sont irréalisables
Exemple : Primal et dual irréalisables
z∗ = maxx
[
1 3]
x t∗ = miny
y1 + 2y2
sous
1 2
1 2
x =
1
2
sous
1 1
2 2
y =
1
3
Cours - Introduction à la programmation linéaireLAAS
CNRS
Théorème des écarts complémentaires (I) 55
❡ Théorème 11 (Théorème des écarts complémentaires)
Soit x∗ solution admissible du problème primal et y∗ solution admissible du problème dual alors x∗ et y∗ sont
respectivement des solutions optimales du primal et du dual ssi
y∗i (a
Ti x
∗ − bi) = 0, ∀ i = 1, · · · ,m
(ATj y
∗ − cj)x∗j = 0, ∀ j = 1, · · · , n
où A =[
A1 · · ·An
]
=
aT1
...
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é
Cours - Introduction à la programmation linéaireLAAS
CNRS
Théorème des écarts complémentaires (II) 56
Primal maxx
z = cTx
sous Ax ≤ b
x ≥ 0
Dual miny
t = bT y
sous AT y ≥ c
y ≥ 0
- x ∈ Rn, A ∈ R
m×n, x =[
xn+1 · · · xn+m
]T
∈ Rm
- y ∈ Rm, y =
[
ym+1 · · · ym+n
]T
∈ Rn
- xi ←→ yi- yj ←→ xj
❡ 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 y
∗m+i = 0, 1 ≤ i ≤ n
y∗jx∗n+j = 0, 1 ≤ j ≤ m
Cours - Introduction à la programmation linéaireLAAS
CNRS
Application aux yaourts des théorèmes de dualité (I) 57
max z = 4x1 + 5x2
2x1 + x2 + x3 = 800
x1 + 2x2 + x4 = 700
x2 + x5 = 300
x1 , x2 , x3 , x4 , x5 ≥ 0
Solution optimale : x∗ = (300, 200, 0, 0, 100), z∗ = 2200
min w = 800y1 + 700y2 + 300y3
2y1 + y2 − y4 = 4
y1 + 2y2 + y3 − y5 = 5
y1 , y2 , y3 , y4 , y5 ≥ 0
Correspondance variables primales (duales)←→ variables complémentaires primales (duales)
x1 ←→ y4,
x2 ←→ y5,
x3 ←→ y1,
x4 ←→ y2,
x5 ←→ y3
Cours - Introduction à la programmation linéaireLAAS
CNRS
Application aux yaourts des théorèmes de dualité (II) 58
Théorème des écarts complémentaires :
x∗1y
∗4 = 300× y∗4 = 0
x∗2y
∗5 = 200× y∗5 = 0
x∗3y
∗1 = 0× y∗1 = 0
x∗4y
∗2 = 0× y∗2 = 0
x∗5y
∗3 = 100× y∗3 = 0
On en déduit : y∗4 = y∗5 = y∗3 = 0
y1 et y2 doivent vérifier
2y∗1 + y∗2 = 4
y∗1 + 2y∗2 = 5
On trouve alors y∗ = (1, 2, 0, 0, 0), w∗ = 2200
Cours - Introduction à la programmation linéaireLAAS
CNRS
Dictionnaire optimal et variables duales 59
Primal : n = 2 variables, m = 3 contraintes
Dual : m = 3 variables, n = 2 contraintes
x1
x2
2 4 6 8
2
4
6
8
0
x3=
0
x4 = 0
x5=0
x1=
0
x2 = 0
Dictionnaire final :
x4 x5
x1 7 13 − 2
3
x3 1 − 13
23
x2 4 − 23
13
z 40 − 23 − 5
3
Variables duales : y∗1 = 0, y∗2 = 2/3, y∗3 = 5/3
Cours - Introduction à la programmation linéaireLAAS
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 ∈ R
m
- ∃ x ∈ Rn | Ax � b
- ∃ y ∈ Rm | AT y = 0, y � 0, bT y < 0
On associe le primal à Ax � b
max z = 0 · x
sous Ax � bz∗ =
0 si Ax � b realisable
−∞ si Ax � b irrealisable
✔ Lagrangien :
L(x, y) = 0 · x+ yT (b− Ax) pour y � 0
✔ Fonction duale de Lagrange : (homogène positive)
g(y) = supx
L(x, y) =
bT y si AT y = 0, y � 0
+∞ sinon
✔ Problème dual :
z∗ ≤ t
∗ = infy�0, AT y=0
g(y) =
−∞ si bT y < 0,
0 si bT y ≥ 0
Cours - Introduction à la programmation linéaireLAAS
CNRS
Variations sur le lemme de Farkas 61
Pour A ∈ Rm×n et b ∈ R
m, les alternatives suivantes sont des alternatives fortes
➊ - ∃ x ∈ Rn Ax � b et x � 0
- ∃ 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 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
Cours - Introduction à la programmation linéaireLAAS
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 ∈ R
m
- ∃ x ∈ Rn | Ax � b et cTx < 0
- ∃ y ∈ Rm | AT y + c = 0, y � 0, bT y < 0
Exemple : Pour l’ensemble des inégalités linéaires
−1 0
0 1
−1 −1
x �
2
0
−1
,[
1 0]
x < 0
Un certificat d’irréalisabilité est donné par y =[
0 1 1]T
solution de l’alternative
−1 0 −1
0 1 −1
y +
1
0
= 0,[
2 0 −1]
y < 0, y � 0
Cours - Introduction à la programmation linéaireLAAS
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. Matousek 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.
Cours - Introduction à la programmation linéaireLAAS
CNRS
Analyse post-optimale 64
Que devient la solution optimale si les paramètres du problème sont modifiés ?
— Modification de la borne bi d’une
contrainte
x1
x2 ±δb1
±δb
2
±δb3
— Modification des coefficients cj de la
fonction objectif
x1
x2
±δc
Cours - Introduction à la programmation linéaireLAAS
CNRS
Modification de l’objectif 65
xN
xB b = B−1b −B−1N
z z∗ = cTBB−1b cN = cTN − cTBB
−1N ≤ 0
c→ c′ = c+∆
1. Est-ce que la base reste réalisable ?
Oui : b = B−1b ≥ 0 est indépendant de c
2. Est-ce que la base reste optimale ?
Vérifier que c′ = c′TN − c′TB B−1N ≤ 0
Cours - Introduction à la programmation linéaireLAAS
CNRS
Exemple 66
Max z = 3x1−2x2
2x1− x2 ≤30
x1− x2 ≤10
x1, x2 ≥ 0
Base optimale = {2, 1}
Dictionnaire final :
z =40− x3− x4
x2 =10− (x3−2x4)
x1 =20− (x3− x4)
Cours - Introduction à la programmation linéaireLAAS
CNRS
Modification du coût c1 de x1 67
z = c1x1 − 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 = c1x1 − 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 − 4 ≤ 0⇔ c1 ∈ [2, 4]
Exercice : faire l’étude pour c2 le coût de x2
Cours - Introduction à la programmation linéaireLAAS
CNRS
Modification de la borne d’une contrainte (capacité) 68
xN
xB b = B−1b −B−1N
z z∗ = cTBB−1b cN = cTN − cTBB
−1N ≤ 0
b→ b′ = b+ δ
1. Est-ce que la base reste optimale ?
Oui : cN = cTN − cTBB−1N ≤ 0 est indépendant de b
2. Est-ce que la base reste réalisable ?
Vérifier que b′ = B−1b′ ≥ 0
Cours - Introduction à la programmation linéaireLAAS
CNRS
Un premier exemple 69
Max z = 3x1−2x2
2x1− x2 ≤b1
x1− x2 ≤10
x1, x2 ≥ 0
Base optimale = {2, 1}
On a donc ici B =
2 −1
1 −1
et b =
b1
10
la solution de base reste réalisable si xB = B−1b ≥ 0
soit ici :
xB =
1 −1
1 −2
b1
10
≥ 0⇔
b1 − 10 ≥ 0
b1 − 20 ≥ 0⇔ b1 ∈]20,+∞[
Exercice : calculer l’interval de valeurs de b2 pour lequel la base reste réalisable
Cours - Introduction à la programmation linéaireLAAS
CNRS
Second exemple 70
max z = 4x1 + 3x2
Sousx1 + x3 = 8
x1 + 2x2 + x4 = 15
2x1+ x2 + x5 = 18
x ≥ 0
x4 x5
x1 7 13 − 2
3
x3 1 − 13
23
x2 4 − 23
13
z 40 − 23 − 5
3
Cours - Introduction à la programmation linéaireLAAS
CNRS
Second exemple 71
Variation de bi :
— Contrainte i non saturée : seule la va-
leur de xn+i est affectée
— Contrainte i saturée : toutes les valeurs
de xB et z∗ sont affectées.
x1
x2
2 4 6 8
2
4
6
8
0
x3=
0
x4 = 0
x5=0
x1=
0x2 = 0
Cours - Introduction à la programmation linéaireLAAS
CNRS
Exemple : contrainte non saturée 72
Contrainte 1 : x1 + x3 = 8 + δb1
— Non saturée
— x∗3 = 1
Le sommet reste optimal tant que
x3 = 8 + δb1 − x∗1 ≥ 0
d’où δb1 ∈ [−1,+∞]
et δz∗ = 0
x4 x5
x1 7 13 − 2
3
x3 1 − 13
23
x2 4 − 23
13
z 40 − 23 − 5
3
x1
x2
2 4 6 8
2
4
6
8
0
x4 = 0
x5=0
x1=
0x2 = 0
Cours - Introduction à la programmation linéaireLAAS
CNRS
Exemple : contrainte saturée 73
Contrainte 3 : 2x1 + x2 + x5 = 18 + δb3
— Saturée
— x∗5 = 0 (hors base)
Lorsque b3 varie de δb3, le sommet optimal
se déplace sur la droite x4 = 0.
Le sommet reste optimal tant que :
x1 = 7− 23 (−δb3) ≥ 0
x3 = 1 + 23 (−δb3) ≥ 0
x2 = 4 + 13 (−δb3) ≥ 0
D’où −21/2 ≤ δb3 ≤ 3/2
x4 x5
x1 7 13 − 2
3
x3 1 − 13
23
x2 4 − 23
13
z 40 − 23 − 5
3
x1
x2
2 4 6 8
2
4
6
8
0
x3=
0
x4 = 0
x5=0
x1=
0
x2 = 0
Cours - Introduction à la programmation linéaireLAAS
CNRS
Exemple : contrainte saturée 74
Contrainte 3 : 2x1 + x2 + x5 = 18 + δb3
— Saturée
— x∗5 = 0 (hors base)
Lorsque b3 varie de δb3, le sommet optimal
se déplace sur la droite x4 = 0.
Le sommet reste optimal tant que :
x1 = 7− 23 (−δb3) ≥ 0
x3 = 1 + 23 (−δb3) ≥ 0
x2 = 4 + 13 (−δb3) ≥ 0
D’où −21/2 ≤ δb3 ≤ 3/2
x4 x5
x1 7 13 − 2
3
x3 1 − 13
23
x2 4 − 23
13
z 40 − 23 − 5
3
x1
x2
2 4 6 8
2
4
6
8
0
x3=
0
x4 = 0
x1=
0
x2 = 0
Cours - Introduction à la programmation linéaireLAAS
CNRS
Exemple : contrainte saturée 75
Contrainte 3 : 2x1 + x2 + x5 = 18 + δb3
— Saturée
— x∗5 = 0 (hors base)
Lorsque b3 varie de δb3, le sommet optimal
se déplace sur la droite x4 = 0.
Le sommet reste optimal tant que :
x1 = 7− 23 (−δb3) ≥ 0
x3 = 1 + 23 (−δb3) ≥ 0
x2 = 4 + 13 (−δb3) ≥ 0
D’où −21/2 ≤ δb3 ≤ 3/2
x4 x5
x1 7 13 − 2
3
x3 1 − 13
23
x2 4 − 23
13
z 40 − 23 − 5
3
x1
x2
2 4 6 8
2
4
6
8
0
x3=
0
x4 = 0
x1=
0
x2 = 0
Cours - Introduction à la programmation linéaireLAAS
CNRS
Exemple : contrainte saturée 76
Variations admissibles :
−21/2 ≤ δb3 ≤ 3/2
Fonction objectif :
δz∗ = 53δb3
d’où
−35/2 ≤ δz∗ ≤ 5/2
x4 x5
x1 7 13 − 2
3
x3 1 − 13
23
x2 4 − 23
13
z 40 − 23 − 5
3
x1
x2
2 4 6 8
2
4
6
8
0
x3=
0
x4 = 0
x5=0
x1=
0
x2 = 0
Cours - Introduction à la programmation linéaireLAAS
CNRS
Récapitulatif 77
Au sommet optimal, si la contrainte i n’est pas saturée :
— La variable d’écart xi est dans la base (xi ≥ 0)
— y∗i = 0 d’où ∆z∗ = 0
— l’intervalle de variation admissible est δ ∈ [−xi; +∞].
Au sommet optimal, si la contrainte est saturée :
— La variable d’écart xi est hors base (xi = 0)
— ∆z∗ = δ.y∗i— δ doit respecter les relations suivantes :−δ(B−1)i ≤ B−1b
où (B−1)i est la ie colonne de B−1. Ces valeurs se lisent directement dans le tableau final du
simplexe.
Cours - Introduction à la programmation linéaireLAAS
CNRS
Ajout d’une contrainte 78
— L’ajout d’une contrainte non redondante augmente la dimension de la base.
— La variable d’écart xn+m+1 de la nouvelle contrainte m+ 1 est dans la nouvelle base puisqu’elle
n’apparaît dans aucune autre contrainte et son coefficient est 1.
— Pour l’ajouter dans le tableau optimal du simplexe, on exprime cette variable xn+m+1 en fonction
des variables hors de la base optimale. Deux possibilités :
— la valeur de xn+m+1 est positive ou nulle : la solution actuelle est admissible, l’optimum est
inchangé (la contrainte m+ 1 est saturée ou non)
— la valeur de xn+m+1 est négative : la solution actuelle n’est plus admissible (la contrainte
m+ 1 est violée).
Cours - Introduction à la programmation linéaireLAAS
CNRS
Exemple 79
Nouvelle contrainte : x1 ≤ 6. Forme standard : x1 + x6 = 6.
x1
x2
2 4 6 8
2
4
6
8
0
x3=
0
x4 = 0
x5=0
x6=
0
x1=
0
x2 = 0
x4 x5
x1 7 13 − 2
3
x3 1 − 13
23
x2 4 − 23
13
x6 −1 − 13
23
z 40 − 23 − 5
3
Solution non admissible.
La solution duale
reste admissible (y∗i ≥ 0) mais non optimale. Un pivot dans le problème dual nous ramène à la solution
optimale.
Cours - Introduction à la programmation linéaireLAAS
CNRS
Exemple 80
x1
x2
2 4 6 8
2
4
6
8
0
x3=
0
x4 = 0
x5=0
x6=
0
x1=
0
x2 = 0
x4 x6
x1 6 0 −1
x3 2 0 1
x292 − 1
212
x532
12
32
z 37, 5 − 32 − 5
2
Solution admissible optimale.
Cours - Introduction à la programmation linéaireLAAS
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
2. Les coefficients associés aux variables en base sont égaux à 0
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
Cours - Introduction à la programmation linéaireLAAS
CNRS
Invariants de boucle 82
1. Le programme linéaire est sous forme canonique par rapport à la base
2. La base est réalisable (les éléments de la dernière colonne sont positifs ou nuls)
3. Les variables de base sont listées sur la première colonne
4. La case en bas à droite vaut−z où z est la valeur de la fonction objectif pour la solution de base
courante
Cours - Introduction à la programmation linéaireLAAS
CNRS