Vous êtes sur la page 1sur 83

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 : arzelier@laas.fr
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

LAAS
Cours - Introduction à la programmation linéaire 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

LAAS
Cours - Introduction à la programmation linéaire 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 :

max 4xA + 5xB


xA ,xB

sous 2xA + xB ≤ 800


xA + 2xB ≤ 700
xB ≤ 300
xA , xB ≥ 0

LAAS
Cours - Introduction à la programmation linéaire 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 Problème de PL :


✔ Coûts de livraison X
min cij xij
Prix/unité (cij ) Pau Bayonne Bordeaux Libourne xij
i,j
X
Bordeaux 26 19 0 4 sous xij = dj , j ∈ J
i
Biarritz 12 2 20 24 X
xij = pi , i ∈ I
Toulouse 19 30 24 28 j

✔ Variables xij : quantité produite en i et livrée en j xij ≥ 0, i ∈ I, j ∈ J

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

Demandes 900 1100 1700 1300

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

✔ 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

- 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)
L.V. Kantorovich (1912-1986)

✔ 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érationnelle
T.C. Koopmans (191O-1985)

LAAS
Cours - Introduction à la programmation linéaire 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
- Algorithme en temps polynomial
. −

g k
xk+1
.
Ek
- Peu efficace en pratique (degré élevé du polynôme(t))

Ek+1

✔ 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)

LAAS
Cours - Introduction à la programmation linéaire CNRS
Hypothèses fondamentales et terminologie 10

min (max) f (x) = c1 x1 + c2 x2 +. . .+ cn xn


x∈Rn x∈Rn

sous a1,1 x1 + a1,2 x2 +. . .+ a1,n xn = b1


.
.
.

am,1 x1 + am,2 x2 +. . .+ am,n xn = bm


am+1,1 x1 +am+1,2 x2 +. . .+am+1,n xn ≤ bm+1
.
.
.

am+p,1 x1 +am+p,2 x2 +. . .+am+p,n xn ≤ bm+p

✔ 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

∀ λ ∈ [0, 1], x, y ∈ C ⇒ (1 − λ)x + λy ∈ C y


y y
x
z = (1 − λ)x + λy, λ ∈ [0, 1] est la combinaison convexe de x et y x x

✔ 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

✔ 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


n
\
♥ Propriétés 1 L’intersection finie de plusieurs ensembles convexes Ci est un ensemble convexe
i=1

LAAS
Cours - Introduction à la programmation linéaire CNRS
Géométrie et PL (II) 12

✔ Un hyperplan de Rn est un sous-espace affine de dimension n − 1


x1
n o +
n T
H = x ∈ R | a (x − x0 ) = 0
où a 6= 0 ∈ Rn est le vecteur normal à l’hyperplan a
H−
n x0 +
Un hyperplan divise R en 2 demi-espaces : x
+ H+
H− = x ∈ Rn | aT (x − x0 ) ≤ 0 , a 6= 0 ∈ Rn

Hyperplan et demi-espaces
H+ = x ∈ Rn | aT (x − x0 ) ≥ 0 , a 6= 0 ∈ Rn

x ∈ H, x1 ∈ H+ , x2 ∈ H− +
x2

✔ 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

Polytope intersection de demi-espaces

✔ 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
LAAS
Cours - Introduction à la programmation linéaire CNRS
Géométrie et PL (III) 13

✔ Un point v d’un polyèdre convexe P est un sommet de P si


c

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

✔ Solution optimale x∗ et optimum z ∗ = f (x∗ ) = cT x∗ :

∀ 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

Max 4xA +5xB


2xA + xB ≤800
xA +2xB ≤700
xB ≤300
xA , xB ≥ 0

LAAS
Cours - Introduction à la programmation linéaire CNRS
Un algorithme géométrique 16

Algorithme du simplexe

➊ Démarrer en un point extrême xE


k 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, xE
k est optimal, STOP

➍ Sinon se déplacer le long de l’arête jusqu’au point extrême xE


k+1 suivant

➎ S’il n’en existe pas, le problème est non borné, STOP


➏ Sinon, xE
k ← 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

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]

ai,1 x1 + ai,i x2 +. . .+ ai,n xn =ai (1 ≤ i ≤ p)


aj,1 x1 + aj,2 x2 +. . .+ aj,n xn ≤bj (1 ≤ j ≤ q)
ak,1 x1 +ak,2 x2 +. . .+ak,n xn ≥ck (1 ≤ k ≤ r)

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

Exercice : donner l’écriture matricielle de l’exemple du problème de production

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

Min 2x1 −3x2


2x1 −x3 ≥−5
x1 +2x2 = 8
x2 ≤ 0
x1 ≥ 0

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

de n contraintes sont actives en x∗ D

- Si x∗ ∈ P est une solution de base alors x∗ est une B


x1
solution de base admissible
❡ 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

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 :

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

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

✔ 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

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

z= 0+4xA +5xB z= 0+4xA +5xB


x1 =800−2xA − xB x1 =800−2xA − xB
x2 =700− xA −2xB x2 =700− xA −2xB
x3 =300 − xB xB = 300 − x3

✔ 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

✔ 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 ?
xB × 10−2
8
7
6
x1 = 500 − 2xA ≥ 0 ⇔ xA ≤ 250
5
x2 = 100 − xA ≥ 0 ⇔ xA ≤ 100 4
xB = 300 − x3 3
2
1
xA × 10−2
0 1 2 3 4 5 6 7 8
xA 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}
T

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

z =1500+4xA −5x3 z =1500+4xA −5x3


x1 = 500−2xA + x3 x1 = 500−2xA + x3
x2 = 100− xA +2x3 xA = 100− x2 +2x3
xB = 300 − x3 xB = 300 − x3

✔ 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

✔ 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 ?
xB × 10−2
8
7
6
x1 = 300 + 2x2 − 3x3 ≥ 0 ⇔ x3 ≤ 100
5
xA = 100 − x2 + 2x3 ≥ 0 ⇔ x3 non contraint 4
xB = 300 − x3 ⇔ x3 ≤ 300 3
2
1
xA × 10−2
0 1 2 3 4 5 6 7 8
✔ 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}
T

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

z =1900−4x2 +3x3 z =1900− 4x2 + 3x3

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

✔ 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
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
✔ Solution optimale :

xA = 300, xB = 200 (x3 = 100, x1 = x2 = 0), z ∗ = 2200

LAAS
Cours - Introduction à la programmation linéaire CNRS
Simplexe par la méthode des dictionnaires (I) 34

✔ Programme linéaire sous la forme :


X
max cj xj
xj
Xj
ai,j xj ≤ bi , (i = 1, . . . , m)
j xj ≥ 0, (j = 1, . . . , n)

✔ Ajout des variables d’écart xn+i et d’une variable objectif z


n
X
z = cj xj
j=1
n
X
xn+i = bi − ai,j xj (i = 1, . . . , m)
j=1

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

- Dictionnaire sous forme simpliciale :

xB = B −1 b − B −1 N xN

✔ Une solution de base associée à B , (xB , xN ) = (B −1 b, 0) est obtenue en posant xN = 0


✔ Le dictionnaire et la solution de base associées sont dits réalisables si xB ≥ 0

LAAS
Cours - Introduction à la programmation linéaire CNRS
Simplexe par la méthode des dictionnaires (III) 36

✔ Expression du critère sous la forme simpliciale :

z = cT x = cTB xB + cTN xN

En remplaçant xB par sa valeur en fonction des variables hors-base :

z = cTB B −1 b + (cTN − cTB B −1 N )xN


= z + c̄TN 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

- 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ème N = {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

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

❡ 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 = 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

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
bi
xi = bi − ai,k xk ≥ 0 ⇒ xk ≤
ai,k
✇ Procédure 3  
bi
➊ Choisir s ∈ B tel que s = arg min : ai,k > 0 , xs est la variable sortante
i∈B ai,k
➋ 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é

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}

Pivotage : réécrire le dictionnaire par rapport à la nouvelle base

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 :

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

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

aTk xk + xn+k − x′n+k = bk

Résoudre le PL auxiliaire
l
−x′n+k
X
max w=
x∈Rn+m ,x′ ∈Rl
k=1:bk <0

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)

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

aTk xk + xn+k − x′n+k = bk


l
−x′n+k
X
➋ Poser le PL auxiliaire avec les variables artificielles x′n+i et le critère w =
k=1:bk <0
➌ 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 = cT x 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

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

✔ Analyse dans le pire des cas du simplexe :


m
- L’algorithme du simplexe se termine après un nombre fini d’itérations (niter. ≤ Cn+m )

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

✔ Analyse empirique : Nombre d’opérations de l’ordre de Θ(m + log n)


✔ 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)

LAAS
Cours - Introduction à la programmation linéaire CNRS
Introduction à la dualité en PL : motivation 47

Soit le problème de PL sous forme canonique :


X
max z = cj xj
xj
Xj
ai,j xj ≤ bi , (i = 1, . . . , m)
j xj ≥ 0, (j = 1, . . . , n)
✔ Caractérisation de la solution optimale z ∗ par [zinf , zsup ]
- Borne inférieure : cT x ≤ z ∗ pour tout x admissible
- Borne supérieure : zsup =? telle que z ∗ ≤ zsup
zinf ∗
zsup
z
z
Solutions admissibles

✔ 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)

LAAS
Cours - Introduction à la programmation linéaire CNRS
Combinaisons linéaires et bornes supérieures 48

Pour des multiplicateurs y1 ≥ 0, . . . , ym ≥ 0

a11 x1 + ... + a1n xn ≤ b1 ×y1


... + ... + ... ... ...
am1 x1 + ... + amn xn ≤ bm ×ym
m
X m
X m
X
(yi ai1 )x1 + ... + (yi ain )xn ≤ yi bi
i=1 i=1 i=1

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

Résoudre le programme linéaire suivant :


m
X
min t = yi bi
y
i=1
Xm
sous yi aij ≥ cj , j = 1, · · · , n
i=1
y1 , . . . , ym ≥ 0

Ce problème est appelé problème dual du problème canonique de départ appelé problème primal

Primal max z = cT x Dual min t = bT y


x y
sous Ax ≤ b sous AT y ≥ c
x ≥ 0 y ≥ 0

où c et x ∈ Rn×1 , A ∈ Rm×n , b et y ∈ Rm×1


✍ Remarques 3
Le problème dual du dual est le 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

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 ←→ j e contrainte de type ≥ cj
Variable xj ∈R ←→ j e contrainte de type = cj
Variable xj ≤0 ←→ j e contrainte de type ≤ cj
Exemple : PL primal sous forme standard (dualité lagrangienne)

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

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 : y1∗ = 1, y2∗ = 2, y3∗ = 0, w∗ = 2200
✍ Remarques 4
La variable duale est une variable de prix associée à chaque contrainte du primal

LAAS
Cours - Introduction à la programmation linéaire 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 cT x 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é
X
aij yi ≥ cj , ∀j
i

- 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 yi∗

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

❡ 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 ∗ = cT x∗ = bT y ∗ = t∗
z∗

Primal t∗ Dual

✔ 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
h i
z ∗ = max 1 3 x t∗ = min y1 + 2y2
x     y    
1 2 1 1 1 1
sous  x =   sous  y =  
1 2 2 2 2 3

LAAS
Cours - Introduction à la programmation linéaire 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

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

Primal max z = cT x Dual min t = bT y


x y
sous Ax ≤ b sous AT y ≥ c
x ≥ 0 y ≥ 0
h iT
- x ∈ Rn , A ∈ Rm×n , x = xn+1 · · · xn+m ∈ Rm
h iT
- y ∈ Rm , y = ym+1 · · · ym+n ∈ Rn
- xi ←→ y i
- 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 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

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)

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

Théorème des écarts complémentaires :

x∗1 y4∗ = 300 × y4∗ = 0


x∗2 y5∗ = 200 × y5∗ = 0
x∗3 y1∗ = 0 × y1∗ = 0
x∗4 y2∗ = 0 × y2∗ = 0
x∗5 y3∗ = 100 × y3∗ = 0

On en déduit : y4∗ = y5∗ = y3∗ = 0


y1 et y2 doivent vérifier

2y1∗ + y2∗ = 4
y1∗ + 2y2∗ = 5

On trouve alors y ∗ = (1, 2, 0, 0, 0), w∗ = 2200

LAAS
Cours - Introduction à la programmation linéaire CNRS
Dictionnaire optimal et variables duales 59

Primal : n = 2 variables, m = 3 contraintes


Dual : m = 3 variables, n = 2 contraintes
x2
Dictionnaire final :

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

Variables duales : y1∗ = 0, y2∗ = 2/3, y3∗ = 5/3

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

Pour A ∈ Rm×n et b ∈ Rm , 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

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

Exemple : Pour l’ensemble des inégalités linéaires


   
−1 0 2 h i
   
 0
 1 x   0 
 
, 1 0 x<0
−1 −1 −1
h iT
Un certificat d’irréalisabilité est donné par y = 0 1 1 solution de l’alternative
   
−1 0 −1 1 h i
 y +   = 0, 2 0 −1 y < 0, y0
0 1 −1 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

Que devient la solution optimale si les paramètres du problème sont modifiés ?


— Modification de la borne bi d’une — Modification des coefficients cj de la
contrainte fonction objectif
x2 x2
± δb 3 ±δb1

±δ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

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 )

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

Exercice : faire l’étude pour c2 le coût de x2

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

Max z = 3x1 −2x2


2x1 − x2 ≤ b1
x1 − x2 ≤10
x1 , x2 ≥ 0

Base optimale = {2, 1}


   
2 −1 b1
On a donc ici B =   et b =   la solution de base reste réalisable si xB = B −1 b ≥ 0
1 −1 10
soit ici :    
1 −1 b1 b − 10 ≥ 0
1
xB =    ≥ 0 ⇔ ⇔ b1 ∈]20, +∞[
1 −2 10 b1 − 20 ≥ 0

Exercice : calculer l’interval de valeurs de b2 pour lequel la base reste réalisable

LAAS
Cours - Introduction à la programmation linéaire CNRS
Second exemple 70

max z = 4x1 + 3x2


x4 x5
Sous 1
x1 + x3 = 8 x1 7 3 − 23

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

D’où −21/2 ≤ δb3 ≤ 3/2 2


x2 = 0
x1
0 2 4 6 8

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

D’où −21/2 ≤ δb3 ≤ 3/2 2


x2 = 0
x1
0 2 4 6 8

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

Au sommet optimal, si la contrainte i n’est pas saturée :


— La variable d’écart xi est dans la base (xi ≥ 0)
— yi∗ = 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 ∗ = δ.yi∗
— δ doit respecter les relations suivantes : −δ(B −1 )i ≤ B −1 b
où (B −1 )i est la ie colonne de B −1 . Ces valeurs se lisent directement dans le tableau final du
simplexe.

LAAS
Cours - Introduction à la programmation linéaire 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 x̄n+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 x̄n+m+1 est négative : la solution actuelle n’est plus admissible (la contrainte
m + 1 est violée).

LAAS
Cours - Introduction à la programmation linéaire CNRS
Exemple 79

Nouvelle contrainte : x1 ≤ 6. Forme standard : x1 + x6 = 6.


x2
x4 x5
x6 = 0

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

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

LAAS
Cours - Introduction à la programmation linéaire 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

LAAS
Cours - Introduction à la programmation linéaire CNRS

Vous aimerez peut-être aussi