Vous êtes sur la page 1sur 28

Année 2007

Département des Licence de Mathématiques L3


Sciences et Techniques Henri Bonnel

Cours de Programmation Linéaire

1 Introduction
1.1 Un exemple très simple
On se propose de trouver le modèle mathématique du problème de production proposé dans l’exercice
no 1 :

Considérons une usine où, grâce à la présence de deux chaı̂nes, il est possible d’assembler simultanément
deux modèles de voiture. On peut produire 100 voitures du premier type en 6 heures. On peut aussi pro-
duire 100 voitures du second type en 5 heures seulement. Le nombre d’heures de travail est au maximum
de 60 heures par semaine.
Les voitures produites sont enlevées une fois par semaine et doivent être stockées dans un dépôt de 15 000
m2 . Une voiture du type 1 occupe 10 m2 et une voiture du type 2 occupe 20 m2 .
La marge (différence entre le prix de vente et le coût de la production) sur le premier type de voiture est
de 50 000 F par véhicule tandis que, sur le second, elle est de 45 000 F par véhicule. La demande pour
le premier type de voiture est limitée à 800 unités par semaine ; la demande pour le deuxième type est
tellement forte qu’on peut la considérer comme illimitée.
Combien de voitures de chaque type le constructeur doit-il produire par semaine pour maximiser son profit
net ?

– Choix des variables de décision.


Posons
x1 = nombre de milliers de voitures de type 1 produites par semaine
x2 = nombre de milliers de voitures de type 2 produites par semaine.
– Formulation des contraintes.
On constate (après simplifications) que


 6x1 + 5x2 6 6

10x1 + 20x2 6 15

 x1 6 0, 8

x1 , x2 > 0

– Détermination de l’objectif.
Posons z = le profit net (marge) exprimé en MF. On a

z = 50x1 + 45x2

1
Donc on est amenés à résoudre le problème (programme) suivant(i) :


 6x1 + 5x2 6 6

10x1 + 20x2 6 15
max z = 50x1 + 45x2 s.c.

 x1 6 0, 8

x 1 , x2 > 0

1.2 Solution graphique d’un programme linéaire en deux variables


On constate que l’ensemble des points du plan P rapporté à on repère (orthonormé pour la beauté de la
forme mais pas nécessaire !) {O,~i, ~j} vérifiant les contraintes est un polygone (pentagone) qu’on appellera
polygone (ou région) admissible (ou réalisable ). La famille de droites d’isovaleur (dz )z∈R données par

x2

1,2

P(9/14;3/7)

1,5
O 0,8 x1
=360/7
z*=zmax

z=40
z=0

Fig. 1 – Polygone admissible et droites d’isovaleur

dz : 50x1 + 45x2 = z

représente une famille de droites parallèles (car elles ont toutes le même coefficient directeur = -50/45)
et les points qui se trouvent sur une droite fixée dz0 représentent les points qui correspondent à la même
valeurs du bénéfice z = z0 . Dans la figure 1 on a représenté les droites correspondant à z = 0, z = 40 et à
la plus grande valeur de z pour laquelle la droite dz à une intersection non vide avec l’ensemble réalisable
autrement dit, la plus grande valeur de z pour laquelle il existe une décision admissible (réalisable) qui
360
assure cette performance. Donc la valeur optimale zmax = ce qui correspond à la solution optimale
7
9 3
(x∗1 , x∗2 ) = ( , ). A noter que, en déplaçant la droite dz vers la gauche la valeur de z diminue, tandis
14 7
que, en déplaçant dz vers la droite, la valeur de z augmente.

On remarquera que :
(a) La solution optimale est un sommet du polygone réalisable, et dans cet exemple elle est unique.
(b) Si la droite dz était parallèle au coté où l’optimum est atteint, alors il y aura deux sommets (les
extrémités du coté optimal) correspondants à des solutions optimales. Donc dans tous les cas où il
(i)
s.c. signifie sous les contraintes

2
existe une valeur optimale de z, il existe toujours au moins un sommet correspondant à une solution
optimale.
(c) Le long d’un côté du polygone, la valeur de l’objectif peut être soit constante ; soit strictement
croissante, soit strictement décroissante.
On peut donc suggérer l’algorithme suivant :
(i) Choisir comme point de départ un sommet x∗ du polygone admissible.
(ii) Déterminer les côtés passant par ce sommet x∗ . Trouver un côté le long duquel z croı̂t. S’il n’y a
pas, STOP : le x∗ courant est optimal.
(iii) Déterminer le sommet y ∗ à l’autre bout du coté et poser x∗ = y ∗ . Retour en (ii).

Évidemment il y a des exemples où l’ensemble réalisable est vide (voir l’exo 3. E.) ou d’autres où il n’y
a pas un valeur optimale finie, i.e. zmax = +∞ quand on peut augmenter autant que l’on veut la valeur
de z (la région réalisable n’est pas bornée, voir exo 3.C.) ou zmin = −∞ (exo 3.D.).

1.3 La forme générale d’un problème de programmation linéaire


Un problème de programmation linéaire est défini par les éléments suivants :
– Les variables de décisions x1 , x2 , . . . , xn ∈ R. Certaines variables sont toujours positives xi > 0, ∀i ∈
I+ , d’autres sont toujours négatives xi 6 0, ∀i ∈ I− et les autres peuvent avoir n’importe quel signe
xi ∈ R, ∀i ∈ I \ (I+ ∪ I− ) (avec I = {1, . . . , n}, I+ , I− ⊂ I, I+ ∩ I− = ∅).
– Les contraintes qui peuvent être de type :
(i) inégalités 6 :
X n
aij xj 6 bi , i = 1, . . . , m
j=1

(ii) égalités :
n
X
aij xj = bi , i = m + 1, . . . , m + p
j=1

(iii) inégalités > :


n
X
aij xj > bi , i = m + p + 1, . . . , m + p + q.
j=1
Les nombres aij et bi sont supposés connus.
On appelle solution admissible tout élément (x1 , . . . , xn ) ∈ Rn vérifiant toutes les contraintes. L’en-
semble de solutions admissibles sera dit ensemble (ou polyèdre si borné) admissible.
– l’objectif (critère ou indice de performance, ou fonction économique etc.) donné par :
n
X
z= cj xj
j=1

où cj sont des nombres connus.

Le but d’un problème d’optimisation est d’optimiser l’objectif sur l’ensemble admissible.

optimiser ∈{maximiser , minimiser }.

On peut donc chercher soit à minimiser l’objectif sur l’ensemble admissible, donc on a un problème de
minimisation, soit à le maximiser , et dans ce cas on a un problème de maximisation.
Lorsqu’on utilise un logiciel capable à résoudre des programmes linéaires il faut préciser soigneusement
tous ces éléments.

3
1.4 La forme standard d’un programme linéaire
Si dans le problème de programmation linéaire sous forme générale exposé dans la section précédente on
a:
(a) I+ = I i.e. toutes les variables sont positives ;
(b) m = q = 0, i.e. il n’y a pas de contraintes de type inégalité ;
(c) le problème est de maximisation
alors on dit que le programme est donné sous la forme standard. En écriture matricielle (voir le chapitre
suivant pour les rappels) on a

max z½= cx
(PS) Ax = b
s.c.
x > 0
   
b1 x1
 b2   x2 
   
où A = (aij ) ∈ Mp,n (R), b =  .. , c = [c1 c2 · · · cn ] et x =  .. .
 .   . 
bp xn
Proposition 1. Tout programme linéaire peut être mis sous la forme standard.
Démonstration. En effet, s’il y a des variables négatives (i.e.I− 6= ∅) alors on remplace xi par x0i = −xi , ∀i ∈ I− .
Évidemment x0i > 0 ∀i ∈ I− . S’il y a des variables sans contraintes de signe (i.e. I \ (I+ ∪ I− ) 6= ∅) alors, pour tout
i ∈ I \ (I+ ∪ I− ) on pose xi = x+ − + − + −
i − xi où xi = max(xi , 0) et xi = max(−xi , 0). Les nouvelles variables xi , xi sont
évidemment positives. Donc par ces changements toutes les nouvelles variables seront positives. Les contraintes de type > 
on les transforme d’abord en inégalités de type 6  en les multipliant par -1. Une inégalités de la forme
n
X
(1) aij xj 6 bi
j=1

sera transformé en une égalité en introduisant une nouvelle variable positive ei dite variable d’écart par les relations
n
X
(2) ei + aij xj = bi , ei > 0.
j=1

Il est aisé de voir que les relations (1) et (2) sont équivalentes, donc en remplaçant (1) par (2) (et on va procéder de cette
manière avec toutes les contraintes de type inégalité) on obtient un problème équivalent mais sous la forme standard.

1.5 La forme canonique d’un programme linéaire


Si dans le problème de programmation linéaire sous forme générale exposé dans la section 1.3 on a :
(a) I+ = I i.e. toutes les variables sont positives ;
(b) p = q = 0, i.e. il n’y a pas de contraintes de type égalité, ni de type inégalité > ;
(c) le problème est de maximisation
alors on dit que le programme est donné sous la forme canonique. En écriture matricielle on a

max z½= cx
(PC) Ax 6 b
s.c.
x > 0
   
b1 x1
 b2   x2 
   
où A = (aij ) ∈ Mm,n (R), b =  .. , c = [c1 c2 · · · cn ] et x =  .. .
 .   . 
bm xn

4
Proposition 2. Tout problème de programmation linéaire peut être mis sous la forme canonique.
Démonstration. On transforme les variables qui ne sont pas positives en variables positives comme dans la démonstration
de la proposition 1. Les contraintes de type égalités on les écrit comme deux inégalités :
u = v ⇐⇒ [u 6 v et u > v].
Ensuite, les contraintes de type >  on les transforme en inégalités de type 6  en les multipliant par -1.

2 Un peu d’algèbre linéaire


2.1 Généralités
 
a11 a12 . . . a1n
 a21 a22 . . . a2n 
 
On note Mm,n (K) l’ensemble de matrices de la forme A =  .. .. .. , à coefficients dans
 . . . 
am1 am2 . . . amn
K = Z, Q, R. On écrira pour simplifier A = (aij ) où aij est l’élément de A situé à l’intersection de la ligne
i et de la colonne j. La somme de deux matrices (aij ) + (bij ) = (aij + bij ) et le produit d’une matrice
A par un nombre α ∈ R défini par α(aij ) = (αaij ) vérifient toutes les bonnes propriétés ce qui nous
permet de dire

Mm,n (R) a une structure de R espace vectoriel.

Le produit de la matrice
P A ∈ Mm,n (R) par la matrice B ∈ Mn,p est une matrice C = AB ∈ Mm,p (R)
définie par cij = nk=1 aik bkj . La multiplication des matrices n’est pas commutative. Elle a par contre
toutes les autresbonnes propriétés
 (associativité, l’existence de l’élément neutre : la matrice carrée
1 0 ... 0
 0 1 ... 0 
 
notée I ou In =  . . ..  ∈ Mn,n (R), distributivité par rapport à la somme ....)
. .
 . . . 
0 0 ... 1
Une matrice carrée A est dite inversible s’il existe un matrice B telle que

AB = BA = I.

Dans ce cas la matrice B est unique (prouvez le !) et sera notée B = A−1 .


Proposition 3. Soit A ∈ Mn,n (R). Les affirmations suivantes sont équivalentes :
(i) A est inversible.
(ii) det(A) 6= 0(ii)
(iii) Il existe B ∈ Mn,n (R) tel que AB = In
(iv) Il existe C ∈ Mn,n (R) tel que CA = In
Les matrices ligne de M1,n (R) on les appelle vecteurs ligne et les matrices colonne de Mn,1 (R) sont
appelées vecteurs colonne. Dans la suite, quand on fait des opérations avec des vecteurs on sous-entends
vecteurs de même type.
Définition 1. Une famille de vecteurs (vi )i∈I (avec I un ensemble fini) sera dite
– liée s’il existe i ∈ I et αj ∈ R, j 6= i tels que
X
vi = αj v j .
j∈I\{i}

(ii)
On suppose que le lecteur est familiarisé avec la notion de déterminant.

5
– libre si elle n’est pas liée, c’est-à-dire
X
αi ∈ R, αi vi = 0 =⇒ αi = 0 ∀i ∈ I.
i∈I

– génératrice si tout vecteur v s’écrit comme une combinaison linéaire des vecteurs de la famille, i.e. pour
tout v il existe des nombres αi tels que X
v= αi v i .
i∈I

Définition 2. L’espace vectoriel V engendré par une famille de vecteurs (vi )i∈I avec I = {1, . . . , p} est
l’ensemble de toutes les combinaisons linéaires de cette famille et sera notée Vect (v1 , . . . , vp ). Donc

V = Vect (v1 , . . . , vp ) = {α1 v1 + · · · + αp vp | α1 , . . . , αp ∈ R}.

Exemple 1. L’espace V = Mn,1 (R) est engendré par les colonnes de la matrice unité In , et l’espace
W = M1,n (R) est engendré par les lignes de la matrice In . (Prouvez le !)

Définition 3. La famille de vecteurs (e1 , . . . ek ) est une base de l’espace vectoriel V si elle est libre et
génératrice.

Théorème 1. Soit V un espace vectoriel (V ⊂ Mn,1 (R) ou V ⊂ M1,n (R)) qui possède une base ayant p
éléments. Alors :
(a) Toute autre base de V a le même nombre p d’éléments. Ce nombre sera dit la dimension de V et
sera noté p = dim V.
(b) Toute famille libre de V a au plus p éléments.
(c) Toute famille génératrice de V a au moins p éléments.
(d) Toute famille libre de V ayant exactement p éléments est une base de V .
(d’) Toute famille génératrice de V ayant exactement p éléments est une base de V .
(e) Toute famille libre est contenue dans une base (i.e. on peut compléter une famille libre pour obtenir
une base).
(f ) De toute famille génératrice on peut extraire une base.

Définition 4. Le rang d’une matrice A est la dimension de l’espace vectoriel engendré par les colonnes
de A. Donc, si A = [A1 A2 · · · An ] ∈ Mp,n (R), avec Aj ∈ Mp,1 (R), alors

rang (A) = dim Vect (A1 , . . . , An )

Remarque 1. Évidemment on a
rang (A) 6 min(p, n).

Théorème 2. Soit A ∈ Mm,n (R). Les affirmations suivantes sont équivalentes :


(i) rang (A) = r.
(ii) Il existe un mineur d’ordre r de A non nul et tous les mineurs d’ordre r + 1 (s’il y en a !) sont nuls.
(iii) L’espace engendré par les lignes de A est de dimension r.
(iv) Il existe une sous-matrice carrée de A d’ordre r inversible et toutes les sous- matrices carrées d’ordre
r + 1 (s’il y en a) sont non inversibles.

Remarque 2. Si A ∈ Mn,n (R) est une matrice carrée, alors

rang (A) = n ⇐⇒ det(A) 6= 0 ⇐⇒ A est inversible.

6
2.2 Transformations élémentaires et les matrices watsoniennes(ii)
Il existe trois types de transformations élémentaires sur les lignes d’une matrice A ∈ Mp,n (R), à savoir
(a) permutation des lignes i et j et on écrira
Li ↔ Lj

(b) multiplication de la ligne i par un nombre non nul α ∈ R :

Li ← αLi

(c) l’addition à la ligne i de la ligne j multipliée par α ∈ R :

Li ← Li + αLj .

Définition 5. Soient :
– Hij la matrice obtenue en appliquant la transformation Li ↔ Lj à la matrice unité Ip
– Hi (α) la matrice obtenue en appliquant la transformation Li ← αLi à la matrice unité Ip (avec α 6= 0)
– Hij (α) la matrice obtenue en appliquant la transformation Li ← Li + αLj à la matrice unité Ip .

Théorème 3. Les matrices Hij , Hi (α) et Hij (α) sont inversibles et chaque transformation élémentaire
(a), (b), (c) appliquée à la matrice A peut être réalisée en multipliant à gauche la matrice A par la
matrice watsonienne correspondante. Par exemple la matrice A0 = Hij (α)A est la matrice obtenue de A
en faisant Li ← Li + αLj .
Démonstration. Un bon exercice (facile !) pour ceux qui apprécient les matrices !

2.3 Les systèmes linéaires et les opérations de pivotage


2.3.1 Les systèmes linéaires sous-déterminés et les variables de base
On va considérer un système d’égalités linéaires sous-déterminé i.e. le nombre m d’équations est inférieur
au nombre n d’inconnues qui seront notées x1 , . . . , xn :


 a11 x1 + a12 x2 + . . . + a1n xn = b1

 a21 x1 + a22 x2 + . . . + a2n xn = b2
(S) .. ..

 . .


am1 x1 + am2 x2 + . . . + amn xn = bm .
Si on considère    
x1 b1
   
x =  ...  A = (aij ) et b =  ... 
xn bm
alors le système (S) s’écrit
(3) Ax = b.

On va supposer que le rang de la matrice A = [A1 · · · An ] (avec Ai ∈ Mm,1 (R) la colonne i de A) est
maximum, i.e.
rang (A) = m.

Définition 6. On appelle ensemble de base (de la matrice A) tout ensemble ordonné ayant m éléments
B = {i1 , . . . , im } ⊂ {1, . . . , n}, tel que les colonnes (Ai )i∈B forment une base de Vect (A1 , . . . , An ).
(iii)
L’appellation “watsonien” vient de Dr. Watson liée à la notion “élémentaire” et a été introduite par Pierre Brondeau

7
On va noter AB = [Ai1 · · · Aim ] la matrice carrée ayant les colonnes Ai , i ∈ B (doncAB estinversible !)
xi1
 .. 
et on va dire que les variables (xi )i∈B sont les variables de base, et on va noter xB =  .  la matrice
xim
colonne formée par les variables de base. Notons N = {1, . . . , n} \ B l’ensemble des indices hors base
(toujours ordonné) et d’une manière analogue AN la matrice formée par les colonnes de A en dehors de
la base AB et xN la matrice colonne des variables hors base. Donc, comme
 
x1 n
 ..  X X X
Ax = [A1 . . . An ]  .  = Ai xi = Ai xi + Ai xi = AB xB + AN xN
xn i=1 i∈B i∈N

on peut écrire le système (S) sous la forme

(4) AB xB + AN xN = b.

Proposition 4. Soit T ∈ Mm,m (R) inversible et B ⊂ {1, . . . , n}, |B| = m(iv) . Alors :
1. Les systèmes Ax = b et T Ax = T b sont équivalents (i.e. ils ont les mêmes solutions.)
2. B est un ensemble de base de A ⇐⇒ B est un ensemble de base de T A.
Démonstration. 1. Soit x vérifiant Ax = b. En multipliant cette égalité par T à gauche on obtient que x vérifie le
système T Ax = T b. Réciproquement, si x vérifie T Ax = T b, en multipliant cette égalité à gauche par T −1 on obtient que x
vérifie le système Ax = b.
2. Il suffit de remarquer que T AB = (T A)B ce qui entraı̂ne que AB est inversible ⇐⇒ (T A)B est inversible.
En multipliant l’égalité (4) à gauche par A−1
B , on obtient grâce à la proposition 4 que le système (3) est
équivalent au système
xB = A−1 −1
B b − AB AN xN .

Donc

on peut toujours exprimer les variables de base en fonction de variables hors base.

En considérant xN = 0 on obtient xB = A−1


B b et cette solution joue un role fondamental dans la méthode
du simplexe.

Définition 7. La solution (x1 , . . . , xn ) vérifiant

xN = 0; xB = A−1
B b

sera dite solution de base associée à l’ensemble de base B.

Géométriquement une solution de base correspond à un sommet du polyèdre (généralisation du polygone


en dimension 2) défini par Ax = b (plus correctement on doit dire “surface polyédrale” lorsque cet
ensemble n’est pas borné).
(iv)
|B| désigne le nombre d’éléments (le cardinal) de l’ensemble B.

8
2.3.2 Pivotage
Définition 8. Deux ensembles de base B et B 0 sont dits adjacents s’il diffèrent par un seul élément, i.e.
il existe i ∈ B, j ∈ B 0 , i 6= j tels que B 0 = B ∪ {j} \ {i}.(v) Autrement dit on peut passer de B à B 0 en
échangeant dans B l’indice de base i = ip par l’indice hors base j (avec 1 6 p 6 m).

L’opération de passage du système xB = A−1 −1


B b − AB AN xN au “nouveau” système xB 0 = AB 0 b −
−1
−1
AB 0 AN 0 xN 0 s’appelle pivotage. Notons par à (resp. Ã0 ) la matrice de coefficients du système correspondant
à l’ensemble de base B (resp. B 0 ) et par b̃ (resp. b̃0 ) le second membre (donc ÃB = Im , ÃN = A−1 B AN et
−1
ÃB = Im , ÃN = AB 0 AN ). A noter que
0 0 0

Ãx = b̃, Ã0 x = b̃0

sont des systèmes équivalents au système (S) ayant la propriété que

les variables de base (xk )k∈B (resp. (xk )k∈B 0 ) apparaissent chacune dans une seule équation et elles
ont comme coefficient 1.

L’idée est de changer la variable de base xi par la variable hors base xj dans le système Ãx = b̃ de
sorte que xj devienne une variable de base (et évidemment xi quittera la base). On dit que xj est la
variable entrante tandis que xi est la variable sortante. Les autres variables de base restent dans la base.
Pour que cet échange soit possible il faut que l’équation p contenant la variable xi (avec le coeff. ãpi = 1)
contienne aussi la variable xj avec un coefficient ãpj 6= 0 (autrement B 0 = B ∪ {j} \ {i} n’est pas un
ensemble de base !(vi) ). Donc on a
ãpi = 1, ãpj 6= 0.
L’élément ãpj 6= 0 s’appelle pivot. Pour “pivoter” on doit effectuer les opérations suivantes :
(i) On divise la ligne du pivot (i.e. la ligne p de Ã) par le pivot, i.e. on multiplie à et b̃ à gauche par la
matrice inversible Hp (1/apj ).
(ii) On élimine la variable xj de toutes les autres équations (sauf l’équation p) en faisant Lk ← Lk −akj Lp
pour tout k ∈ {1, . . . , m} \ {p}. Cela revient donc à multiplier successivement à gauche par les
matrices inversibles Hkp (−akj ).
Donc après toutes ces transformations on obtient les matrices Ā = T Ã et b̄ = T b̃ avec
 
Y
T = Hkp (−akj ) Hp (1/apj ).
k6=p

On a bien ĀB 0 = Ã0B 0 = Im car la seule opération concernant la ligne k (avec k 6= p) de à a été
Lk ← Lk − akj Lp ce qui n’a aucun effet sur les éléments ãkl , l ∈ B \ {i}, et d’autre part la colonne du
pivot devient la colonne correspondante de Im . Ceci montre que Ā = Ã0 .
(v)
Comme les ensembles B, B 0 sont supposés ordonnés, alors l’élément j de B 0 prend la place occupée par i dans B et tous
les autres éléments ne changent pas de position.
(vi)
En effet, grâce à la proposition 4 on a que la matrice à admet les mêmes ensembles de base que la matrice A. Alors les
colonnes (Ãk )k∈B 0 doivent former une famille libre, i.e. ÃB 0 est inversible. Si le coefficient ãpj de xj dans l’équation i est
nul, alors la ligne p de la matrice ÃB 0 serait nulle, donc la matrice ne serait pas inversible.

9
En fait le passage des matrices Ã, b̃ aux matrices Ã0 , b̃0 s’effectue grâce aux formules suivantes :

ãpl ãkj
ã0kl = ãkl − ∀k 6= p
ãpj

ãpl
ã0pl =
apj
(5)
b̃p ãkj
b̃0k = b̃k − ∀k 6= p
ãpj

b̃p
b̃0p =
apj

Ces formules sont faciles à retenir avec la règle du rectangle :

~ ~
a kl a kj

~ ~
a pl apj

Fig. 2 – Pivotage : la règle du rectangle.

On doit former un rectangle ayant le pivot ãpj comme sommet et l’élément à modifier comme sommet
opposé. Ensuite on doit soustraire de l’élément à modifier ãkl (ou b̃k ) le produit des éléments sur la
diagonale qui ne contient pas le pivot (le pivot est entouré d’un carré) divisé par le pivot.
La colonne du pivot doit être complétée par des zéros (à part le pivot qui devient 1).

3 L’algorithme du simplexe
L’algorithme (très important vu ses multiples applications !) considéré dans ce chapitre, découvert en
1947 par l’américain G.B. Dantzig, a fêté ces 50 ans à EPFL de Lausanne en 1997 à l’occasion du “16th
International Symposium on Mathematical Programming” en la présence de son auteur !

3.1 Un exemple simple


Considérons le programme linéaire
max z = 3x1 + 4x2

 x1 + 2x2 6 21
s.c. x1 + x2 6 12

x1 , x2 > 0

10
Transformons ce programme en un programme équivalent mis sous la forme standard

max z = cx
½
Ax = b
s.c.
x > 0

(voir le chapitre précédent). Donc en introduisant les variables d’écart x3 , x4 on obtient le programme
équivalent :
max z = 3x1 + 4x2

 x1 + 2x2 + x3 = 21
s.c. x1 + x2 + x4 = 12

x1 , x2 , x3 , x4 > 0
On a donc µ ¶ µ ¶
1 2 1 0 21
A= , b= , c = [3 4 0 0].
1 1 0 1 12
On constate que B = {3, 4} est un ensemble de base. La solution de base correspondante est x1 = 0, x2 =
0, x3 = 21, x4 = 12. Cette solution est également admissible, donc sera dite solution de base admissible.
La valeur de l’objectif associée est z = 0. On va augmenter la valeur de z en introduisant dans la base
la variable x2 (car x2 a le plus grand coefficient dans z, mais évidemment on aurait pu introduire x1
également).

Le choix de la variable entrante. Donc la variable entrante (dans notre cas x2 ) est choisie en utili-
sant la règle :

le coefficient dans la fonction z de la variable entrante est le plus grand des coefficients (posi-
tifs)(vii) de z.

Ainsi on espère une augmentation plus forte de z par rapport à d’autres choix de variables en-
trantes.
Le choix de la variable sortante. On va augmenter la valeur de x2 le plus possible tout en restant
dans l’ensemble admissible. Les autres variables hors base (dans notre cas x1 ) sont maintenues
nulles. Comme x3 et x4 sont positifs on doit avoir

21 − 2x2 > 0 et 12 − x2 > 0,

donc
x2 6 min(21/2, 12) = 21/2.
On constate que la plus grande valeur de x2 satisfaisant ces inégalités est x2 = 21/2. Cela entraı̂ne
x3 = 0, x4 = 3/2. La solution x1 = 0, x2 = 21/2, x3 = 0, x4 = 3/2 pourrait correspondre à
une solution de base associée à B 0 = {2, 4} (car les variables hors base sont nulles dans une so-
lution de base). Autrement dit la variable sortante devrait être x3 . Remarquons que (si tout est ok !)

la variable sortante correspond au plus petit des rapports (positifs) entre les éléments du second
membre du système et les coefficients associés à la variable entrante.
(vii)
Si tous les coeff. de z sont négatifs ou nuls alors la solution de base est optimale, voir plus loin.

11
Montrons que dans cet exemple on peut effectuer ce choix. On choisit donc comme pivot le co-
efficient de la variable entrante x2 correspondant à la variable sortante x3 (donc de la première
équation, la variable sortante ne peux pas apparaı̂tre dans plusieurs équations, car elle est (était)
une variable de base). Alors, après pivotage (utiliser la règle du rectangle) ce qui consiste en fait à
faire L1 ← 21 L1 et après L2 ← L2 − L1 , on obtient le système
 1
 2 x1 + x2 + 12 x3 = 21
2

 1
2 x1 − 12 x3 + x4 = 3
2.

On constate donc que B 0 = {2, 4} est bien un ensemble de base et la solution de base associée
x1 = 0, x2 = 21/2, x3 = 0, x4 = 3/2 est admissible.
L’objectif réduit. On va toujours exprimer l’objectif en fonction de variables hors base. Cela est
possible car les variables de base sont données en fonction de variables hors base. On pourrait
calculer z en posant x2 = 21/2 − 1/2x1 − 1/2x3 (x4 ce n’est pas nécessaire). Mais en fait en écrivant
l’égalité définissant l’objectif comme une équation 3x1 + 4x2 = z (avec z comme second membre !)
on peut obtenir les coefficients par pivotage. On va noter cette équation Lz et on va remarquer que
on peut l’écrire comme
3x1 + 4x2 = z − z0
avec z0 = la valeur de l’objectif pour la solution de base associée au système respectif (dans ce cas
(x1 = 0, x2 = 0, x3 = 21, x4 = 12), donc z0 = 0.) Et cela est possible toujours car en exprimant
z en fonction de variables hors base seulement, celles-ci sont toutes nulles dans la solution de base
donc on obtient que 0 = z −z0 , ce qui correspond bien à la valeur de z associée à la solution de base.
Donc dans notre cas, après pivotage (ce qui revient à Lz ← Lz − 4L1 ) on obtient x1 − 2x3 = z − 42.
Donc la valeur de z pour la nouvelle solution de base est z = 42 supérieure à la valeur précédente
(z = 0).
Écrivons le “nouveau” programme :
 1 1 21

 2 x1 + x2 + 2 x3 = 2



1 1 3
 2 x1 − 2 x3 + x4 = 2




x1 − 2x2 = z − 42

On constate qu’il est encore possible d’augmenter z en augmentant x1 . Donc on va choisir comme variable
entrante x1 , et pour déterminer la variable sortante on calcule min(21/2 : 1/2; 3/2 : 1/2) = 3 donc il
s’agit de la deuxième équation ce qui correspond à la variable de base x4 . Donc le pivot est 1/2 le coefficient
de x1 dans la deuxième équation. On doit effectuer les transformations L2 ← 2L2 , L1 ← L1 − 21 L2 ,
Lz ← Lz − 3L2 . On obtient 

 x2 + x3 − x4 = 9



x1 − x3 + 2x4 = 3





−x3 − 2x4 = z − 45
On constate que le nouvel ensemble de base est {1, 2} la solution de base est (x1 = 3, x2 = 9, x3 =
0, x4 = 0) et que

tous les coefficients de z sont négatifs donc la solution de base est optimale.

12
En effet, notre “nouveau” système est équivalent au système initial


 x1 + 2x2 + x3 = 21



x1 + x2 + x4 = 12





3x1 + 4x2 = z

Alors pour toute solution admissible on doit avoir x3 > 0, x4 > 0 donc

z(x1 = 3, x2 = 9, x3 = 0, x4 = 0) = 45 > 45−x3 −2x4 = z(x1 , x2 , x3 , x4 ) ∀(x1 , x2 , x3 , x4 ) admissible.

Donc on a bien zmax = 45 et x∗1 = 3, x∗2 = 9 est la solution optimale du programme initial (ou il faut
ajouter x∗3 = 0, x∗4 = 0) pour le programme transformé sous la forme standard.

Exercice 1. Résoudre le même problème par la méthode géométrique et comparer avec les étapes parcourues
dans la méthode du simplexe.

Les calculs précédents s’organisent sous la forme des tableaux :

x1 x2 x3 x4 s.m. v.d.b.
1 2 1 0 21 x3
1 1 0 1 12 x4
3 4 0 0 0 −z
1 1 21
2 1 2 0 2 x2
1
2 0 − 21 1 3
2 x4
1 0 −2 0 −42 −z
0 1 1 −1 9 x2
1 0 −1 2 3 x1
0 0 −1 −2 −45 −z

3.2 Le cas général


Considérons un programme standard et supposons connu un ensemble de base B = {i1 , . . . , im } admis-
sible. Notons N = {j1 , . . . jn−m } = {1, . . . , n} \ B l’ensemble hors base. On peut donc admettre que le
programme est donné sous la forme réduite associée à l’ensemble de base B :

max z = cx

½
xB + A−1
B AN xN = A−1
B b
s.c.
xB > 0, xN > 0
On a
n
X X X
z = cx = ci xi = ci xi + ci xi = cB xB + cN xN
i=1 i∈B i∈N

avec cB = [ci1 · · · cim ] et cN = [cj1 · · · cjn−m ]. Posons aussi ÃN = A−1 −1


B AN et b̃ = AB b. On a xB =
−ÃN xN + b̃ donc
z = (cN − cB ÃN )xN + cB b̃ = dN xN + zB

13
avec dN = cN − cB ÃN et zB = cB b̃. Donc le problème consiste à maximiser z sachant
½
xB + ÃN xN = b̃
dN xN = z − zB

et que xN > 0, xB > 0. L’hypothèse B ensemble de base admissible signifie que b̃ > 0. A noter que la
solution de base est donnée par xN = 0, xB = b̃ et la valeur de l’objectif z associée à cette solution est zB .

Le tableau du simplexe associé à la base B est (à une permutation de colonnes près) de la forme :

xB xN s.m. v.d.b.

Im ÃN b̃ xB

0 dN −zB −z

On constate que la première colonne du tableau est inutile ! Donc en pratique il suffit de garder que le
tableau
xN s.m. v.d.b.

ÃN b̃ xB

dN −zB −z
mais, pour la commodité du calcul manuel, on va utiliser le tableau complet.

Rappelons nous que, une fois établit le pivot, le passage d’un tableau simplexe au tableau suivant s’effectue
en utilisant les règles :
(i) On divise la ligne du pivot par le pivot
(ii) Tous les autres éléments du nouveau tableau (y compris le second membre ou la ligne de z) s’ob-
tiennent en utilisant la règle du rectangle (on peut alléger les calculs en sachant que les colonnes
des variables de base corresponds aux colonnes de la matrice unité).

Définition 9. 1. Un ensemble (solution) de base est dit non dégénéré si

A−1
B b > 0 c’est-à-dire le second membre du système réduit b̃ > 0

autrement dit si toutes les variables de base ont des valeurs strictement positives dans la solution de base
xB > 0.

2. Un programme linéaire est non dégénéré si toute solution de base admissible est non dégénérée.

Théorème 4. (Critère d’optimalité) Si

dN 6 0

alors la solution de base admissible xN = 0, xB = b̃ est optimale.


Démonstration. Soit (x1 , . . . , xn ) une solution admissible quelconque et soit (x∗1 , . . . , x∗n ) la solution de base associée
à B. Comme xi > 0 ∀i, on a
z(x∗1 , . . . , x∗n ) = zB > zB + dN xN = z(x1 , . . . , xn ).

14
Si le critère d’optimalité n’est pas vérifié on va procéder soit à une itération, soit on va
découvrir que sup z = +∞.

Supposons maintenant que dn 66 0. Cela signifie qu’il existe au moins une composante dj de dN (avec
j ∈ N ) strictement positive.

Le choix de la variable entrante


Considérons alors l’indice j ∈ N tel que

dj = max{dk | k ∈ N }.

On a les possiblités suivantes :


(a) ãkj 6 0 ∀k = 1, . . . , m.

Dans ce cas

L’ensemble admissible est non borné et sup z = +∞

En effet, on constate que (x1 , . . . , xn ) avec xk = 0 ∀k ∈ N \ {j}, xj = t et xB = b̃ − tÃj est une


solution admissible pour tout t > 0. On a z(x1 , . . . , xn ) = zB + tdj → +∞ quand t → +∞.
(b) Il existe k ∈ {1, . . . , m} tel que ãkj > 0.

Dans ce cas on va procéder à une itération, la variable entrante étant xj . On va supposer


maintenant que :

l’ensemble de base B est non dégénéré

Le choix de la variable sortante xi (avec i = ip ) est déterminé d’après la règle suivante :

b̃p b̃k
p vérifie = min{ | ãkj > 0}
ãpj ãkj

En effet, en utilisant cette règle on constate que, en effectuant le pivotage avec le pivot apj , la nouvelle
solution de base donnée par xN 0 = 0 et xB 0 = b̃0 est admissible car, d’après les formules (5) on aura
b̃0k > 0 pour tous les k grâce à la règle utilisée (vérification très simple : exercice !) Montrons que par cette
itération la valeur de z augmente. En effet notons (x01 , . . . , x0n ) la solution de base après l’itération. On
a donc x0k = 0 ∀k ∈ N \ {j} et x0j = b̃0 j > 0 avec inégalité stricte si le choix de la ligne du pivot (i.e. de
la variable sortante) est unique. En effet, dans ce cas pour tout l 6= p tel que ãlj > 0 on a

b̃l b̃p
>
ãlj ãpj
ce qui entraı̂ne grâce à (5) que à !
b̃l b̃p
b̃0l = ãlj − >0
ãlj ãpj

15
et
b̃p
b̃0p = > 0.
ãpj
Pour les autres indices l pour lesquels ãlj 6 0 on a

b̃0l > b̃l > 0.

Donc, si le choix de la variable sortante est unique on a x0j = b̃0p > 0, ce qui donne :

z(x01 , . . . , x0n ) = zB + dj x̃0j > zB .

On a donc montré aussi que,

si le choix de la variable sortante est unique alors le nouvel ensemble de base B 0 est non dégénéré
(avec l’hypothèse qui a été faite que B est non dégénéré).

Montrons aussi que

si le choix de la variable sortante n’est pas unique alors B 0 est dégénéré.

En effet, dans ce cas il existe au moins deux indices différents p et q tels que

b̃p b̃q b̃k


= = min{ | ãkj > 0}
ãpj ãqj ãkj

Si on choisit par exemple ãpj comme pivot on obtient que


à !
b̃q b̃p
b̃0q = ãqj − = 0,
ãqj ãpj

donc B 0 est dégénéré.


On a montré entre autre le suivant.

Théorème 5. Supposons que le programme linéaire est non dégénéré et qu’il admette au moins une
solution optimale (avec zmax fini). Alors à chaque itération du simplexe le choix de la ligne du pivot
(i.e. de la variable sortante) est unique et l’objectif croı̂t strictement. Comme le nombre d’ensembles de
base est fini (il est inférieur ou égal à Cnm ), il résulte qu’après un nombre fini d’itérations l’algorithme
va trouver une solution de base optimale. Cela montre aussi que, si le programme admet une solution
optimale, alors il existe toujours une solution de base optimale.

3.3 Un regard plus attentif sur le simplexe


Dans la section précédente on a fait plusieurs suppositions pour simplifier l’exposé :
(a) La connaissance d’un tableau initial, i.e. la connaissance a priori d’une solution de base admissible
donc du système réduit associé.
(b) Le problème non dégénéré.
On a vu que sous ces conditions l’algorithme du simplexe, après un nombre fini d’itérations, va trouver
une solution optimale, ou bien il va indiquer que la valeur optimale est infinie.
Maintenant on va essayer de voir quelles sont les issues quand ces hypothèses ne sont pas vérifiées. On
peut supposer, sans restreindre la généralité grâce aux résultats présentés au chapitre 1, section 1.5, que
le problème initial soit donné sous la forme canonique.

16
max z½= cx
(PC) Ax 6 b
s.c.
x > 0
   
b1 x1
 b2   x2 
   
où A = (aij ) ∈ Mm,p (R), b =  .. , c = [c1 c2 · · · cp ] et x =  .. .
 .   . 
bm xp
En introduisant les variables d’écart (xp+1 , . . . , xn ) on obtient le programme standard

max z = cxN
AxN + Im xB = b, xN > 0, xB > 0
avec    
x1 xp+1
   
xN = x =  ...  et xB =  ...  .
xp xn
Il est évident que B = {p + 1, . . . , n} est un ensemble de base pour ce système et xB sont les variables de
base. Si b > 0 alors la solution de base xB = b, xN = 0 est admissible et on peut démarrer le simplexe.
Le cas intéressant pour nous est celui où b 6> 0, i.e. il existe au moins un indice j tel que bj < 0. Dans ce
cas xB = b, xN = 0 est une solution de base mais non admissible.
Pour trouver donc une solution de base admissible et le système associé, ou le cas échéant pour déterminer
si l’ensemble admissible est vide, il existe plusieurs méthodes dont une des plus importante fera l’objet
de la section suivante.

3.4 La méthode du Simplexe en deux phases


Cette méthode consiste à introduire une variable artificielle x0 et à résoudre dans un premier temps un
problème auxiliaire dit la phase I.

max w = −x0
 AxN + Im xB − ex0 = b
(PA)
s.c.

xN > 0, xB > 0, x0 > 0
 
1
 1 
 
où e =  .. . Il est facile à voir que ce programme admet la valeur optimale wmax = 0 si et seulement
 . 
1
si le programme initial est réalisable (i.e. l’ensemble admissible est non vide).
D’autre part, en prenant xB = b, xN = 0, x0 = 0 on obtient une solution de base non admissible du
programme auxiliaire (PA). On va effectuer un pivotage non standard en considérant x0 comme variable
entrante et en l’échangeant avec la variable de base la plus négative. Donc la colonne du pivot va être la
colonne de x0 et la ligne p du pivot est donnée par
m
bp = min bj .
j=1

17
On constate facilement que le tableau ( ou l’ensemble de base B 0 ) obtenu après cet échange sera admissible
(i.e. avec le second membre > 0) car b0j = bj − bp > 0 ∀j. De cette manière on peut démarrer le simplexe
pour le problème auxiliaire. Le problème auxiliaire (PA) admet toujours une solution optimale car :
1. Son ensemble admissible est non vide (on vient de trouver une solution de base admissible)
2. l’objectif w est borné sur l’ensemble admissible car w(x1 , . . . , xn , x0 ) = −x0 6 0 pour toute solution
admissible (x1 , . . . , xn , x0 ).
Donc, si la valeur optimale du problème auxiliaire (PA) wmax < 0 alors cela signifie que le
problème initial (PC) n’admet pas de solution admissible.
Si la valeur optimale wmax = 0 alors le problème initial admet des solutions admissibles. On a donc
x0 = 0.
1. Si x0 est dans la base, cela signifie que le tableau optimal du problème auxiliaire (PA) est dégénéré.
Dans ce cas, en effectuant un pivotage non standard, en prenant comme variable sortante x0 (avec
n’importe quelle variable entrante) on constate que le second membre ne change pas, donc on va
trouver une autre solution de base admissible qui ne contient pas x0 en base, donc on est dans le
cas suivant :
2. Si x0 est hors base alors le tableau optimal de (P A) nous fournit directement un tableau associé à une
solution de base admissible du problème initial (PC). Il reste seulement à exprimer z en fonction
des variables hors base, et on peut démarrer le simplexe pour le problème initial (PC).

3.5 Dégénérescence
Quand l’algorithme du simplexe trouve un tableau (base) dégénéré il peut y avoir le phénomène de
cyclage, c’est-à-dire, à partir d’une base dégénérée, après quelques itérations (pendant ce temps l’objectif
est stationnaire, car on passe d’une base dégénérée à une autre base dégénérée) on retrouve le tableau de
départ. Pour mieux comprendre, considérons l’exemple suivant, dans lequel on adopte les règles suivantes
en présence de candidats multiples pour les variable entrantes et sortantes :
(i) La variable entrante est toujours la variable hors base qui a le plus grand coefficient dans la fonction
objectif. En cas d’ex aequo, on prend la variable de plus petit indice.
(ii) En cas de plusieurs variables de base candidates à la sortie de la base, on prend la variable de plus
petit indice.

x1 x2 x3 x4 x5 x6 x7 s.m. v.d.b.
0.5 −5.5 −2.5 9 1 0 0 0 x5
0.5 −1.5 −0.5 1 0 1 0 0 x6
1 0 0 0 0 0 1 1 x7
10 −57 −9 −24 0 0 0 0 −z

première itération

x1 x2 x3 x4 x5 x6 x7 s.m. v.d.b.
1 −11 −5 18 2 0 0 0 x1
0 4 2 −8 −1 1 0 0 x6
0 11 5 −18 −2 0 1 1 x7
0 53 41 −204 −20 0 0 0 −z

deuxième itération

18
x1 x2 x3 x4 x5 x6 x7 s.m. v.d.b.
1 0 0.5 −4 −0.75 2.75 0 0 x1
0 1 0.5 −2 −0.25 0.25 0 0 x2
0 0 −0.5 4 0.75 2.75 1 1 x7
0 0 14.5 −98 −6.75 −13.25 0 0 −z

troisième itération

x1 x2 x3 x4 x5 x6 x7 s.m. v.d.b.
2 0 1 −8 −1.5 5.5 0 0 x3
−1 1 0 2 0.5 −2.5 0 0 x2
1 0 0 0 0 0 1 1 x7
−29 0 0 18 −15 −93 0 0 −z

quatrième itération

x1 x2 x3 x4 x5 x6 x7 s.m. v.d.b.
−2 4 1 0 0.5 −4.5 0 0 x3
−0.5 0.5 0 1 0.25 −1.25 0 0 x4
1 0 0 0 0 0 1 1 x7
−29 −9 0 0 10.5 −70.5 0 0 −z

cinquième itération

x1 x2 x3 x4 x5 x6 x7 s.m. v.d.b.
−4 8 2 0 1 −9 0 0 x5
0.5 −1.5 −0.5 1 0 1 0 0 x4
1 0 0 0 0 0 1 1 x7
22 −93 −21 0 0 24 0 0 −z

sixième itération

x1 x2 x3 x4 x5 x6 x7 s.m. v.d.b.
0.5 −5.5 −2.5 9 1 0 0 0 x5
0.5 −1.5 −0.5 1 0 1 0 0 x6
1 0 0 0 0 0 1 1 x7
10 −57 −9 −24 0 0 0 0 −z

On retrouve le tableau initial. L’algorithme du Simplexe va donc répéter inlassablement la même suite
de six itérations sans jamais atteindre la solution optimale, laquelle existe cependant avec zmax = 1
comme on verra dans la suite.
Évidemment ce phénomène de cyclage est nécessairement lié à la présence de bases dégénérées, car
autrement, comme on l’a vu (théorème 5) si le problème est non dégénéré alors à chaque itération
l’objectif augmente strictement ce qui empêche le cyclage (pourquoi ?).
On ne va pas étudier ici les méthodes qui préviennent le cyclage. Signalons cependant la règle extrêmement
simple du plus petit indice qui a été découverte par R. Bland. Cette règle consiste à choisir systématiquement
comme variable entrante et comme variable sortante la variable xk qui correspond au plus petit indice k
parmi les multiples candidats. Donc, pour la variable entrante on doit choisir parmi toutes les variables

19
dont le coefficient dans la ligne objectif est positif, celle qui a le plus petit indice. Pour la variable sortante,
il s’agit, en cas d’ex-aequo, de choisir la variable de base qui a le plus petit indice.

Appliquons cette méthode à l’exemple précédent. On constate que jusqu’à la cinquième itération on a
utilisé cette règle, car pour la variable entrante on a eu un seul choix. Par contre à la cinquième itération,
d’après la règle de Bland, on doit choisir x1 comme variable entrante, et donc la variable sortante va être
x4 . On propose comme exercice de continuer les calculs avec cette règle.

Il semble que le cyclage est un phénomène assez rare dans la pratique de sorte que beaucoup de lo-
giciels mettant en oeuvre la méthode du simplexe ignorent totalement ce problème.

3.6 Exercices
Exercice 2. On considère une entreprise produisant deux biens en quantités x1 et x2 respectivement sous
contraintes de capacités de production relatives à deux ateliers de production. Le programme linéaire corres-
pondant à la maximisation de la marge est le suivant :

max z = 3x1 + 5x2



 2x2 6 12
s.c. 3x1 + 2x2 6 18

x1 , x2 > 0
(a) Déterminer graphiquement le sommet optimal et donner ses coordonnées.
(b) Mettre le problème sous la forme d’égalité par l’ajout de variables d’écart.
(c) A l’optimum, quelles sont les variables en base et les variables hors base ?
(d) Des progrès importants dans l’organisation du travail permettraient de réduire le temps d’usinage du
second bien dans le premier atelier. La première contrainte devient donc αx2 6 12, où α, le nouveau
temps d’usinage, est un paramètre inférieur à 2. Jusqu’à quelle valeur peut-on faire descendre α pour
que la même base (c’est-à-dire les mêmes variables de base) reste optimale ?
(e) En dessous de cette valeur quel est le sommet optimal (donner ses coordonnées) et quelle est la nouvelle
base (c’est-à-dire quelles sont les nouvelles variables de base) ?

Exercice 3. Résoudre avec la méthode du simplexe :

max z = 3x1 + 2x2 + 4x3




 x1 + x2 + 2x3 6 4

2x1 + 3x3 6 5
s.c.

 2x1 + x2 + 3x3 6 7

x1 , x2 , x3 > 0
Exercice 4. Résoudre avec la méthode du simplexe :

max z = 5x1 + 6x2 + 9x3 + 8x4



 x1 + 2x2 + 3x3 + x4 6 5
s.c. x1 + x2 + 2x3 + 3x4 6 3

x1 , x2 , x3 , x4 > 0
Exercice 5. Résoudre avec la méthode du simplexe :

max z = 2x1 + x2

20

 x1 − 2x2 + x3 = 2
s.c. −2x1 + x2 + x4 = 2

x1 , x2 , x3 , x4 > 0
Exercice 6. Résoudre avec la méthode du simplexe en deux phases :

max z = x1 − x2 + x3


 2x1 − x2 + 2x3 6 4

2x1 − 3x2 + x3 6 −5
s.c.

 −x 1 + x2 − 2x3 6 −1

x 1 , x2 , x 3 > 0
Exercice 7. Résoudre avec la méthode du simplexe en deux phases :

max z = 3x1 + x2


 x1 − x2 6 −1

−x1 − x2 6 −3
s.c.

 2x1 + x2 6 2

x1 , x2 , > 0

4 Dualité en programmation linéaire


Dans ce chapitre on va voir comment on peut, à partir d’un programme linéaire donné (qui sera appelé
programme primal), construire un autre programme linéaire appelé programme dual. Entre ces deux
programmes il y a des liens très étroits : si un des deux a une solution optimale l’autre en possède
également une et les valeurs optimales des deux programmes coı̈ncident. Des fois la résolution du problème
dual peut être plus simple que celle du problème primal (par exemple on connaı̂t une solution de base
admissible pour le dual et on peut démarrer directement le simplexe, tandis que pour le primal on est
obligés d’utiliser les deux phases).
Mais, à part l’intérêt mathématique ou numérique pour l’étude du problème dual, un aspect très important
est l’interprétation économique des variables duales. Ces variables représentent des coûts marginaux et
peuvent être considérées comme l’augmentation maximale du revenu, par rapport à la solution optimale,
qui résulterait de l’utilisation d’une unité supplémentaire de l’un des biens.

4.1 La construction du programme dual


Considérons un programme linéaire sous la forme canonique appelé programme primal :

max ½z = cx
(P) Ax 6 b
s.c.
x > 0
   
b1 x1
 b2   x2 
   
où A = (aij ) ∈ Mm,p (R), b =  ..  ∈ Mm,1 (R), c = [c1 c2 · · · cp ] ∈ M1,p (R) et x =  ..  ∈
 .   . 
bm xp
Mp,1 (R).

21
Le programme dual a m variables notées λ1 , . . . , λm et on va ranger ces variables sous la forme d’un
vecteur ligne(viii) :
λ = [λ1 · · · λm ] ∈ M1,m (R).
A noter la différence par rapport aux variables primales qui sont données sous la forme d’un vecteur
colonne x. Alors le programme dual est défini par

min w½ = λb
(D) λA > c
s.c.
λ > 0

On constate la correspondance suivante entre les deux problèmes :

Problème primal Problème dual

maximisation minimisation
p variables (vecteur colonne) p contraintes
m contraintes m variables (vecteur ligne)
variable n˚ j > 0 contrainte n˚ j >
contrainte n˚ i 6 variable n˚ i > 0
(ligne de) coefficients fonction objectif second membre
second membre (colonne de) coeff. fonction objectif

Tab. 1 – Les correspondences entre le problème primal et le problème dual

On peut constater facilement (exercice !) que le dual du problème dual c’est le problème primal(ix) .

4.2 Le théorème de dualité


Considérons les problèmes en dualité (P) et (D) définis dans la section précédente. Une propriété essen-
tielle du problème dual est que toute solution admissible du dual fournit une borne supérieure sur la
valeur optimale du primal.

Théorème 6. (Dualité faible) Soit λ une solution admissible du dual et x une solution admissible
du primal. Alors on a
(6) z = cx 6 λb = w,
autrement dit chaque valeur admissible du critère dual est un majorant pour chaque valeur admissible du
critère primal.
Démonstration. Soit donc x tel que Ax 6 b, x > 0 et soit λ vérifiant λA > b, λ > 0. On a
z = cx 6 λAx 6 λb = w.

(viii)
Mathématiquement parlant on peut interpréter le vecteur colonne des inconnues du problème primal comme un élément
de l’espace vectoriel Mp,1 (R) tandis que le vecteur ligne des inconnues du problème dual représente un élément d’un espace
dual Mm,1 (R)0 = M1,m (R), i.e. l’ensemble de formes linéaires sur Mm,1 (R) identifiées à des matrices ligne ; le produit
scalaire de dualité étant donné par le produit d’une matrice ligne (la forme linéaire) et une matrice colonne (la variable)
(ix)
Indication : Écrire le dual comme un problème de maximisation dans l’espace primal Mp,1 (R), i.e. − max(−bT )λT s.c.
−AT λT 6 −cT ; λT > 0 etc.

22
Corollaire 1. Soit x∗ une solution admissible du primal et λ∗ une solution admissible du dual. Si

cx∗ = λ∗ b

alors x∗ est une solution optimale de (P) et λ∗ une solution optimale de (D).
Démonstration. Soit x une solution admissible de (P) et λ une solution admissible de (D). On a grâce à (6), pour le
couple (x, λ∗ ) :
z = cx 6 λ∗ b = cx∗
et pour le couple (x∗ , λ) :
w = λb 6 cx∗ = λ∗ b.

A noter que la réciproque n’est pas évidente, à savoir que si x∗ est une solution optimale du primal et λ∗
une solution optimale du dual alors les valeurs optimales coı̈ncident. C’est l’objet du théorème central de
la programmation linéaire.
Théorème 7. (La dualité forte) Si le problème primal (P) a une solution optimale x∗ alors le
problème dual (D) a une solution optimale λ∗ et les valeurs optimales coı̈ncident :

(7) cx∗ = λ∗ b

autrement dit z ∗ = w∗ .
Démonstration. Grâce au corollaire précédent il suffit de trouver une solution admissible λ∗ telle que
cx∗ = λ∗ b.
0 1
xp+1
B xp+2 C
B C
Introduisons des variables d’écart xE = B .. C ∈ Mn−p,1 (R) (donc E = {p + 1, . . . , n}) et écrivons donc (P) sous la
@ . A
xn
forme standard

max z = cx

Ax + xE = b
s.c.
x > 0, xE > 0

Considérons le tableau optimal du simplexe(x) correspondant à une solution de base (ensemble de base B) optimale. Le
tableau est associé au système 
xB + A−1 −1
B AN xN = AB b
z = cB AB b + (cN − cB A−1
−1
B AN )xN
On a
z ∗ = cB A−1
B b.

Considérons
λ∗ = cB A−1
B .

Comme λ∗ b = z ∗ , grâce au corollaire 1, il suffit de démontrer que λ∗ est admissible. On a


z = λ∗ b + (cN − λ∗ AN )xN .
Comme le tableau est optimal on a que le coût réduit des variables de base est nul et le coût réduit des variables hors base
est négatif ou nul. Donc

pour j ∈ B \ E on a dj = cj − λ∗ Aj = 0(xi)
pour j ∈ N \ E on a dj = cj − λ∗ Aj 6 0,

(x)
On accepte le fait que si un problème linéaire a une solution optimale alors il a une solution de base optimale (on a
démontré ce résultat seulement si le problème est non dégénéré).
(xi)
car 0 = dB = cB − cB A−1B AB = cB − λ AB

23
donc
c 6 λ∗ A.
D’autre part, pour les variables d’écart on a que

j ∈B∩E =⇒ dj = 0 − λ∗ (Im )j = 0
j ∈N ∩E =⇒ dj = 0 − λ∗ (Im )j 6 0,

ce qui signifie λ∗ > 0.


Comme le dual du problème dual est le problème primal (proposé comme exercice avec indication), si
le problème dual a une solution optimale, alors le problème primal en a une également. Donc on peut
affirmer le suivant.
Corollaire 2. Le problème primal (P) a une solution optimale si et seulement si le problème dual a
une solution optimale.
Le théorème suivant, en décomposant la relation de dualité forte (7) on obtient les conditions nécessaires
et suffisantes d’optimalité appelées conditions de complémentarité.
Théorème 8. (Conditions de complémentarité) Soit x une solution admissible du problème primal
(P) et λ une solution admissible du problème dual (D). Les conditions suivantes sont nécessaires et
suffisantes pour que x et λ soient optimales :
à m
!
X
(8) cj − λi aij xj = 0, j = 1, . . . , p
i=1
 
p
X
(9) λi  aij xj − bi  = 0, i = 1, . . . , m.
j=1

Démonstration.
Condition suffisante. Supposons les conditions de complémentarité satisfaites. On peut les récrire comme :
m
X
(10) cj xj = λi aij xj j = 1, . . . , p
i=1
p
X
(11) λ i bi = λi aij xj i = 1, . . . , m.
j=1
En additionnant les égalités (10) par rapport à j et les égalités (11) par rapport à i, on obtient
p p m m
X X X X
cj xj = λi aij xj = λ i bi
j=1 j=1 i=1 i=1

c’est-à-dire les relations de dualité forte (7).


Condition nécessaire. Supposons x∗ et λ∗ optimales. Posons
p m
X X
s i = bi − aij x∗j ; tj = λ∗i aij − cj .
j=1 i=1

On peut récrire les relations de dualité forte (7) comme :


p p m
!
X X X
cj x∗j = λ∗i aij − tj x∗j
j=1 j=1 i=1
m p p
X X X
= λ∗i aij x∗j − tj x∗j
i=1 j=1 j=1
m p
X X
= λ∗i (bi − si ) − tj x∗j
i=1 j=1
m m p m
X X X X
= λ∗i bi − λ∗i si − tj x∗j = λ∗i bi ,
i=1 i=1 j=1 i=1

24
la dernière égalité provenant des relations de dualité forte (7). Il résulte que
m p
X X
λ∗i si + tj x∗j = 0.
i=1 j=1

Or, comme λ∗i , si , tj , x∗j > 0, ∀i, j, on obtient immédiatement la conclusion.


.
On obtient comme conséquence le résultat suivant (qui est un cas particulier d’un théorème plus général
de programmation convexe)

Théorème 9. (Karush-Kuhn-Tucker) Une solution x∗ admissible pour le problème primal (P) est
optimale si et seulement si il existe les nombres λ∗1 , . . . , λ∗m tels que :
à m
!
X
(12) cj − λ∗i aij x∗j = 0, j = 1, . . . , p
i=1
 
p
X
(13) λ∗i  aij x∗j − bi  = 0, i = 1, . . . , m.
j=1

et tels que :
(14) λ∗ A > c, λ∗ > 0.
Démonstration. Si x∗ est optimale, par le th. de dualité forte, il existe λ∗ solution optimale du dual (D). Cette solution
est donc admissible pour (D) est satisfait les conditions de complémentarité par le th. 8.
Réciproquement, si λ∗ vérifie (14) alors λ∗ est une solution admissible de (D). Si elle satisfait (12) et (13) elle satisfait les
conditions de complémentarité. Donc x∗ et λ∗ sont toutes les deux optimales.

4.3 Interprétation économique des variables duales


Considérons un exemple de problème où x1 , x2 représentent les quantités de deux produits P1 et P2.
Leurs marges respectives sont de 4 et 3. Les contraintes représentent des contraintes de production.
Supposons la première contrainte soit une contrainte sur le stock de matière première et la seconde une
contraintes sur le nombres d’heures de travail par jour. Plus précisément, pour produire une unité du
produit P1 on utilise 2 unités de matière première et 5 heures de travail, tandis que pour une unité de
P2 on a besoin de 1 unité de matière première et de 6 heures de travail. Le stock est de 3 unités et le
nombres d’heures de travail par jour est de 11h. Donc on a le programme linéaire suivant

max z = 4x1 + 3x2



 2x1 + x2 6 3
(15) s.c. 5x1 + 6x2 6 11

x1 > 0, x2 > 0.
Le chef d’entreprise voudrait savoir ce que lui rapporterait le fait que son atelier soit ouvert une heure de
plus par jour. Autrement dit, il voudrait connaı̂tre l’augmentation de sa marge bénéficiaire si le deuxième
coefficient du membre de droite passait de 11 à 12.
Graphiquement, l’augmentation de capacité (ici horaire) se traduit par un déplacement de la seconde
contrainte vers la droite (voir figure 3)
La solution optimale se déplace du point A(1, 1) vers le nouveau point A0 correspondant à l’intersection
des droites ½
2x1 + x2 = 3
5x1 + 6x2 = 12

25
x2

A'

O x1

z=7 z'=51/7

Fig. 3 – Interprétation des variables duales

La nouvelle solution optimale correspond à


6 9
A0 ( , ).
7 7
A cette nouvelle solution correspond une valeur de l’objectif de
6 9 51
z0 = 4 × +3× = .
7 7 7
L’augmentation de l’objectif est de
51 2
∆z = z 0 − z = −7= .
7 7
Le problème dual correspondant à (15) est

min w = 3λ1 + 11λ2



 2λ1 + 5λ2 > 4
(16) s.c. λ1 + 6λ2 > 3

λ1 > 0, λ2 > 0.

26
La solution optimale du dual (16) est
9 2
(λ∗1 , λ∗2 ) = ( , ).
7 7
On voit que λ∗2 représente l’augmentation de l’objectif. Si on avait augmenté la capacité de stockage d’une
unité (i.e. de 3 à 4) sans augmenter le nombre d’heures, on aurait pu constater une augmentation de
l’objectif égale à λ∗1 = 97 . En général on a le résultat suivant :
le taux d’augmentation de la fonction objectif par rapport à la ième composante du membre
de droite du problème primal est égal à la valeur de la ième variable duale.(xii) A noter que
cette interprétation à une limite de validité : elle est valable tant que le même ensemble de base reste
optimal. Par exemple si on continue à augmenter le nombre d’heures de travail, au delà de 18 heures
de travail journalier, la solution optimale devient le point A00 (0, 3). Il n’y a plus d’augmentation de la
fonction objectif au delà. Au delà de ce point la base optimale change et la solution optimale du dual
change également. Elle devient (λ∗1 , λ∗2 ) = (3, 0). Cette nouvelle solution s’interprète également par le fait
que une valeur nulle de la seconde variable duale signifie que l’augmentation de la capacité de la seconde
contrainte du primal ne permet plus d’accroı̂tre l’objectif.
Les valeurs des variables duales sont appelées coûts marginaux (en anglais “shadow prices”). A no-
ter que si une contrainte et non saturée, alors grâce à la complémentarité on a que la variable duale
correspondante est nulle ce qui montre que la valeur marginale est nulle, i.e. on n’a pas intérêt à aug-
menter la capacité si on n’a pas utilisé toutes les ressources ! Par contre si la coût (valeur) marginal(e)
est non nulle cela montre, grâce à la complémentarité, que toutes les ressources ont été utilisées, donc
une augmentation de la capacité permettra d’augmenter le bénéfice.

4.4 Exercices
Exercice 8. Considérons le problème
max z = 4x1 + 6x2 + 20x3 + 17x4

 x1 + x3 + 2x4 6 10
s.c. x2 + 2x3 + x4 6 4

x1 , x2 , x3 , x4 > 0.
Écrire le problème dual et le résoudre graphiquement . En déduire la solution optimale du problème primal.
Exercice 9. Considérer le tableau Simplexe final de l’exercice 3. Remarquez que si l’on prend l’opposé des
coefficients des variables d’écart dans la ligne objectif, on obtient exactement la solution optimale du dual.
Vérifiez et expliquez.
Exercice 10. Montrer que si le problème primal est sous la forme standard, alors les variables duales sont
non contraintes en signe.
Exercice 11. Pour le problème ci-dessous, vérifiez l’optimalité de la solution proposée :
max z = 7x1 + 6x2 + 5x3 − 2x4 + 3x5


 x1 + 3x2 + 5x3 − 2x4 + 2x5 6 4


 4x1 + 2x2 − 2x3 + x4 + x5 6 3
s.c. 2x1 + 4x2 + 4x3 − 2x4 + 5x5 6 5



 3x1 + x2 + 2x3 − x4 − 2x5 6 1

x1 , x2 , x3 , x4 , x5 > 0
(xii)
Mathématiquement parlant cela traduit le fait que, à l’optimum, en considérant z ∗ comme fonction de (A, b, c) on a
grâce à la dualité forte :

∂z ∗ ∂w∗
= = λ∗i .
∂bi ∂bi

27
4 2 5
Solution proposée : x∗1 = 0, x∗2 = , x∗3 = , x∗4 = , x∗5 = 0.
3 3 3

28

Vous aimerez peut-être aussi