Vous êtes sur la page 1sur 18

Recherche opérationnelle

Master 2 LT, MPM, MIR


Université du Littoral - Côte d’Opale, Pôle Lamartine
Laurent SMOCH
(smoch@lmpa.univ-littoral.fr)
Septembre 2013

Laboratoire de Mathématiques Pures et Appliquées Joseph Liouville


Université du Littoral, zone universitaire de la Mi-Voix, bâtiment H. Poincarré
50, rue F. Buisson, BP 699, F-62228 Calais cedex
2
Table des matières

0 Introduction générale 1

1 La programmation linéaire - Méthode graphique 7


1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2 Modélisation d’un programme linéaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.1 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.2 Formule générale d’un programme linéaire . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3 Méthode graphique : problème à deux inconnues . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3.1 Régionnement du plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3.2 Les ensembles convexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3.3 Résolution de systèmes d’inéquations - Exemples . . . . . . . . . . . . . . . . . . . . . 12
1.3.4 Résolution de programmes linéaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3.5 Cas général . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.3.6 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2 La programmation linéaire - Méthode du simplexe 31


2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.2 La méthode du simplexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.2.1 Programme linéaire standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.2.2 L’algorithme du simplexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.2.3 Détermination d’une solution de base admissible . . . . . . . . . . . . . . . . . . . . . 58
2.2.4 Utilisation de la méthode du simplexe lorsque la solution optimale n’existe pas . . . . 60
2.2.5 Utilisation de la méthode du simplexe dans un problème de minimisation . . . . . . . 61
2.2.6 Exercices récapitulatifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

3 La programmation linéaire - Écriture matricielle 67


3.1 Rappels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
3.2 La méthode du simplexe sous forme matricielle . . . . . . . . . . . . . . . . . . . . . . . . . . 73
3.2.1 Forme générale d’un programme linéaire . . . . . . . . . . . . . . . . . . . . . . . . . . 73
3.2.2 Représentation matricielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
3.2.3 Description générale de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.2.4 Exemple avec solution optimale unique . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.2.5 Exemple avec solution optimale multiple . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.2.6 Exemple avec solution non bornée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

I
II TABLE DES MATIÈRES
Chapitre 3

La programmation linéaire - Écriture


matricielle

3.1 Rappels
Définition 3.1.1
– On appelle matrice m × n (ou d’ordre m × n) à coefficients dans K tout tableau de m lignes et n
colonnes d’éléments de K. L’ensemble des matrices m × n à coefficients dans K est noté Mm,n (K).
– Si m = n on dit qu’on a une matrice carrée. L’ensemble des matrices carrées de taille n à coefficients
dans K est noté Mn (K).
– Une matrice m × 1 est appelée vecteur-colonne et une matrice 1 × n est appelée vecteur-ligne.
– On convient de noter aij l’élément de la matrice situé sur la i-ème ligne et j-ième colonne (1 ≤ i ≤ m
et 1 ≤ j ≤ n).
– Une matrice A est représentée entre deux parenthèses ou deux crochets :
   
a11 . . . a1j . . . a1n a11 . . . a1j . . . a1n
 .. .. .. .. ..   .. .. .. .. .. 
 . . . . .   . . . . . 
   
  
A =  ai1 . . . aij . . . ain  ou A =  ai1 . . . aij . . . ain  .
 .. . .. . ..   .. . .. . .. 
 . . . . . . .   . . . . . . . 
am1 . . . amj . . . amn am1 . . . amj . . . amn
ou encore
A = (aij ) 1 ≤ i ≤ m ou A = [aij ] 1 ≤ i ≤ m .
1≤j ≤n 1≤j ≤n

Nous travaillerons avec K = R, Q ou Z.


 
−1 4 2
Exemple 3.1.1 La matrice A =  0 1 −3 est carrée et d’ordre 3.
4 1 5

Définition 3.1.2 - Addition de matrices


Si A = (aij ) 1 ≤ i ≤ m et B = (bij ) 1 ≤ i ≤ m sont deux matrices m × n, on définit l’addition des matrices par
1≤j ≤n 1≤j ≤n

A + B = (aij + bij ) 1≤i≤m .


1≤j ≤n

( ) ( )
3 4 2 6 1 9
Exemple 3.1.2 Soient les matrices A = et B = . On obtient
1 3 5 2 0 3
( ) ( )
3+6 4+1 2+9 9 5 11
A+B = = .
1+2 3+0 5+3 3 3 8

Remarque 3.1.1 La somme de deux matrices de tailles différentes n’est pas définie.

67
68 CHAPITRE 3. LA PROGRAMMATION LINÉAIRE - ÉCRITURE MATRICIELLE

Définition 3.1.3
– La matrice nulle, notée Om,n , est la matrice dont tous les éléments sont nuls.
– La matrice opposée d’une matrice A est notée −A. Si A = (aij ) 1 ≤ i ≤ m alors −A = (−aij ) 1≤i≤m .
1≤j ≤n 1≤j ≤n

Propriété 3.1.1 Si A, B et C sont des matrices de même ordre, alors nous avons
• A + B = B + A (commutativité),
• A + (B + C) = (A + B) + C (associativité).
( ) ( ) ( )
1 −1 6 −5 0 2
Exemple 3.1.3 Soient les matrices A = ,B= et C = . On a alors
3 0 2 1 2 4
( ) ( ) ( ) ( )
1 + 6 −1 − 5 7 −6 6 + 1 −5 − 1 7 −6
• A+B = = et B + A = = .
3+2 0+1 5 1 2+3 1+0 5 1
( ) ( )
7 −6 7 −4
• A+B = et (A + B) + C = .
5 1 7 5
( ) ( )
6 −3 7 −4
B+C = et A + (B + C) = .
4 5 7 5

Définition 3.1.4
– On appelle matrice diagonale toute matrice carrée D = (dij ) 1 ≤ i, j ≤ n telle que i ̸= j ⇒ dij = 0.
Si on note di = dii , une matrice diagonale  est de la forme 
d1 0 . . . 0 0
 0 d2 . . . 0 0
 
 .. . . . .. 
Dn =  . .. .. .. .
 
 0 0 . . . dn−1 0 
0 0 ... 0 dn
On la note Diag(d1 , d2 , . . . , dn ).
– La matrice identité d’ordre n, notée In , est la matrice diagonale Diag(1, 1, . . . , 1).

Définition 3.1.5 On dit qu’une matrice carrée A = (aij )1≤i,j≤n est triangulaire supérieure (resp.
inférieure) si i > j ⇒ aij = 0 (resp. si i < j ⇒ aij = 0).

Remarque 3.1.2 Une matrice triangulaire supérieure et inférieure est une matrice diagonale.

Définition 3.1.6 - Produit d’une matrice par un scalaire


Si A = (aij ) 1 ≤ i ≤ m est une matrice m × n et si α ∈ K, on définit le produit d’une matrice par un scalaire
1≤j ≤n
par

αA = (αaij ) 1≤i≤m
1≤j ≤n

( )
3 4 2 1
Exemple 3.1.4 Si A = et α = , on obtient
1 3 5 2
   
1 1 1 3
×3 ×4 ×2 2 1
  2 
C = αA =  2 2 2
 = 1 5
.
1 1 1 3
×1 ×3 ×5
2 2 2 2 2 2

Propriété 3.1.2 Soient A et B deux matrices de même ordre et α ∈ K un scalaire, on a

α(A + B) = αA + αB (distributivité).

Définition 3.1.7 - Produit de matrices


Si A = (aik ) 1 ≤ i ≤ m est une matrice m × p et si B = (bkj ) 1≤k≤p est une matrice p × n, on définit le
1≤k≤p 1≤j ≤n
produit des matrices par
3.1. RAPPELS 69

( )

p
A×B = aik bkj
k=1 1≤i≤m
1≤j ≤n

qui est une matrice m × n.

On procède de la manière suivante pour multiplier deux matrices :


 
( ) 1 2 0
1 3 0
Exemple 3.1.5 Soient les deux matrices A = et B = 0 2 3 .
−1 1 2
0 −1 −2
• La matrice A est d’ordre 2 × 3, la matrice B est d’ordre 3 × 3 donc la matrice A × B est d’ordre 2 × 3.
• On a ( ) ( )
1×1+3×0+0×0 1 × 2 + 3 × 2 + 0 × (−1) 1 × 0 + 3 × 3 + 0 × (−2) 1 8 9
A×B = (−1) × 1 + 1 × 0 + 2 × 0 (−1) × 2 + 1 × 2 + 2 × (−1) (−1) × 0 + 1 × 3 + 2 × (−2) = −1 −2 −1 .

Propriété 3.1.3 Si A ∈ Mm,n (K), B ∈ Mn,p (K), C ∈ Mp,q (K), alors


• A × (B × C) = (A × B) × C (associativité),
• A × (B + C) = A × B + A × C (distributivité).
• Si A ∈ Mn (K) alors A × In = In × A = A.

Remarque 3.1.3 Attention, A × B ̸= B × A en général.

Prenons le cas général avec A d’ordre m × p et B d’ordre p × n. Le produit A × B est défini, c’est une
matrice d’ordre m × n. Qu’en est-il du produit B × A ? Il faut distinguer trois cas :
– si m ̸= n le produit B × A n’est pas défini ;
– si m = n mais p ̸= n, le produit A × B est défini et c’est une matrice d’ordre m × n = n × n tandis
que le produit B × A est défini mais c’est une matrice d’ordre p × p donc A × B ̸= B × A ;
– si m = n = p, A et B sont deux matrices carrées d’ordre m. Les produits A × B et B × A sont aussi
carrés et d’ordre m mais là encore, en général, A × B ̸= B × A.
( ) ( ) ( )
1 −1 6 −5 4 −6
Exemple 3.1.6 Soient les matrices A = et B = . On obtient A × B = et
3 0 2 1 18 −15
( )
−9 −6
B×A= .
5 −2
70 CHAPITRE 3. LA PROGRAMMATION LINÉAIRE - ÉCRITURE MATRICIELLE

Définition 3.1.8 - Matrice transposée


Si A = (aij ) 1 ≤ i ≤ m est une matrice de format m × n, on définit la matrice transposée de A, notée AT ,
1≤j ≤n
par A = (aji ) 1≤j ≤n .
1≤i≤m

C’est donc une matrice n × m obtenue en échangeant lignes et colonnes de la matrice initiale.
( )
1 −1 5
Exemple 3.1.7 Soit la matrice A d’ordre 2 × 3 suivante A = . Sa transposée est la matrice
3 0 7
 
1 3
AT d’ordre 3 × 2 suivante AT = −1 0.
5 7

Propriété 3.1.4
• (AT )T = A si A ∈ Mm,n (K),
• (αA)T = αAT si α ∈ K et A ∈ Mm,n (K),
• (A + B)T = AT + B T si A, B ∈ Mm,n (K),
• (A × B)T = B T × AT si A ∈ Mm,n (K) et B ∈ Mn,p (K).

Définition 3.1.9 - Matrice symétrique, matrice antisymétrique


– Une matrice A est dite symétrique si AT = A.
– Une matrice A est dite antisymétrique si AT = −A.

Exemple 
3.1.8 
1 5 −9
• A=  5 4 0  est une matrice symétrique.
−9 0 7
 
0 5 −9
• B = −5 0 7  est une matrice antisymétrique.
9 −7 0

Définition 3.1.10 - Matrice inversible, matrice singulière


– Une matrice carrée A ∈ Mn (K) est dite inversible ou régulière si elle est symétrisable pour le
produit matriciel, autrement dit s’il existe une matrice B ∈ Mn (K) telle que
A × B = B × A = In .
– L’inverse, s’il existe, d’une matrice A est noté A−1 .
– Une matrice non régulière est dite singulière.

Proposition 3.1.1 Soient A et B deux matrices inversibles, alors


• A−1 l’est aussi et (A−1 )−1 = A,
• AT l’est aussi et (AT )−1 ,
• A × B l’est aussi et (A × B)−1 = B −1 × A−1 .

Définition 3.1.11 - Déterminant d’une matrice d’ordre n


Soit A = (aij ) 1 ≤ i ≤ m une matrice carrée d’ordre n. Étant donné un couple (i, j) d’entiers, 1 ≤ i, j ≤ n,
1≤j ≤n
on note Aij la matrice carrée d’ordre n − 1 obtenue en supprimant la i-ième ligne et la j-ième colonne de
A. On définit le déterminant de A, et on le note det(A), par récurrence sur l’ordre de la matrice A :
– si n = 1 : le déterminant de A est le nombre det(A) = a11 ,
– si n > 1 : le déterminant de A est le nombre
∑n
det(A) = (−1)i+j aij det(Aij ) quelle que soit la ligne i, 1 ≤ i ≤ n,
j=1
ou, de manière équivalente, le nombre
∑n
det(A) = (−1)i+j aij det(Aij ) quelle que soit la colonne j, 1 ≤ j ≤ n.
i=1
3.1. RAPPELS 71

Remarque 3.1.4 Pour retrouver les signes de ces deux formules, on peut remarquer que la distribution des
signes + et − avec la formule (−1)i+j est donnée par :

+ − + − . . .

− + − + . . .

+ − + − . . .

. . . . .
.. .. .. .. . .

( )
a11 a12
Exemple 3.1.9 Soit la matrice A = alors
a21 a22
det(A11 ) = a22 , det(A12 ) = a21 , det(A21 ) = a12 , det(A22 ) = a11

et on peut calculer det(A) par l’une des formules suivantes :


• a11 det(A11 ) − a12 det(A12 ) = a11 a22 − a12 a21 (développement suivant la ligne i = 1),
• −a21 det(A21 ) + a22 det(A22 ) = −a21 a12 + a22 a11 (développement suivant la ligne i = 2),
• a11 det(A11 ) − a21 det(A21 ) = a11 a22 − a21 a12 (développement suivant la colonne j = 1),
• −a12 det(A12 ) + a22 det(A22 ) = −a12 a21 + a22 a11 (développement suivant la colonne j = 2).
Ces formules donnent bien le même résultat.

Remarque 3.1.5 Il convient d’utiliser cette définition après avoir fait apparaı̂tre sur une même rangée le
plus possible de zéros sachant que
– si deux colonnes (resp. deux lignes) sont identiques ou proportionnelles, alors det(A) = 0,
– si on échange deux colonnes (resp. deux lignes), alors le déterminant est changé en son opposé,
– on ne change pas un déterminant si on ajoute à une colonne (resp. une ligne) une combinaison linéaire
des autres colonnes (resp. lignes).
 
1 0 1
Exemple 3.1.10 Soit la matrice A = 0 2 0 alors
0 3 5
( ) ( ) ( )
2 0 0 0 0 2
det(A11 ) = det = 10, det(A12 ) = det = 0, det(A13 ) = det = 0,
3 5 0 5 0 3
( ) ( ) ( )
0 1 1 1 1 0
det(A21 ) = det = −3, det(A22 ) = det = 5, det(A23 ) = det = 3,
3 5 0 5 0 3
( ) ( ) ( )
0 1 1 1 1 0
det(A31 ) = det = −2, det(A32 ) = det = 0, det(A33 ) = det = 2,
2 0 0 0 0 2
et on peut calculer det(A) par l’une des formules suivantes :
• 1 × det(A11 ) + 0 × det(A12 ) + 1 × det(A13 ) = 10 + 0 + 0 = 10,
• 0 × det(A21 ) + 2 × det(A22 ) + 0 × det(A23 ) = 0 + 2 × 5 + 0 = 10, (formule pratique car il n’y a qu’un
déterminant à calculer),
• 0 × det(A31 ) + 3 × det(A32 ) + 5 × det(A33 ) = 0 + 0 + 5 × 2 = 10,
• 1 × det(A11 ) + 0 × det(A21 ) + 0 × det(A31 ) = 10 + 0 + 0 = 10, (formule pratique car il n’y a qu’un
déterminant à calculer),
• 0 × det(A12 ) + 2 × det(A22 ) + 3 × det(A32 ) = 0 + 2 × 5 + 0 = 10,
• 1 × det(A13 ) + 0 × det(A23 ) + 5 × det(A33 ) = 0 + 0 + 5 × 2 = 10.

Proposition 3.1.2 - Déterminant d’une matrice d’ordre 2


Soit A une matrice carrée d’ordre n = 2. Le déterminant de A peut se calculer à l’aide de la technique
suivante :
72 CHAPITRE 3. LA PROGRAMMATION LINÉAIRE - ÉCRITURE MATRICIELLE

( )
5 7
Exemple 3.1.11 Soit la matrice A = alors
4 3
det(A) = 5 × 3 − 7 × 4 = 15 − 28 = −13.

Proposition 3.1.3 - Déterminant d’une matrice d’ordre 3 : Règle de Sarrus


Soit A une matrice carrée d’ordre n = 3. Le déterminant de A peut se calculer à l’aide de la technique
suivante :



1 0 1
Exemple 3.1.12 Soit la matrice A = 0 2 0. On a alors
0 3 5
det(A) = (1 × 2 × 5 + 0 × 3 × 1 + 0 × 0 × 0) − (1 × 2 × 0 + 0 × 3 × 1 + 5 × 0 × 0) = 10.
 
5 7 1
Exemple 3.1.13 Soit la matrice A = 4 3 2, alors
2 1 6
det(A) = (5 × 3 × 6 + 4 × 1 × 1 + 2 × 7 × 2) − (1 × 3 × 2 + 2 × 1 × 5 + 7 × 4 × 6) = −62.

Propriété 3.1.5 Le déterminant d’une matrice triangulaire est égal au produit des éléments diagonaux.

Théorème 3.1.1 A est inversible si et seulement si det(A) ̸= 0.

Propriété 3.1.6
• det(AT ) = det(A),
1
• det(A−1 ) = ,
det(A)
• det(A × B) = det(A) det(B).

Définition 3.1.12 Rang


Le rang d’une matrice quelconque A est égal au plus grand entier s tel que l’on puisse extraire de A une
matrice carrée d’ordre s inversible, c’est-à-dire de déterminant non nul. Les opérations élémentaires sur les
lignes ou les colonnes (ajout à une colonne - resp. une ligne - une combinaison linéaire des autres colonnes
- resp. lignes) d’une matrice ne modifient pas le rang.
( )
1 3 2
Exemple 3.1.14 Soit la matrice suivante A = . Le rang de A est 2 :
1 3 1
– A est d’ordre 2 × 3 donc s ≤ min{2, 3} soit s = 0, 1 ou 2 ;
– comme le déterminant de la sous-matrice composée de la première et de la deuxième colonne est nul,
on ne peut pas conclure ;
3.2. LA MÉTHODE DU SIMPLEXE SOUS FORME MATRICIELLE 73

– comme le déterminant de la sous-matrice composée de la première et de la troisième colonne est non


nul, alors s = 2.
 
1 0 1
Exemple 3.1.15 Soit la matrice suivante A =  0 5 −1
−1 0 −1
• A est d’ordre 3 × 3 donc s ≤ 3,
• le déterminant de A est 0 donc s ̸=(3, )
1 0
• le déterminant de la sous-matrice est 5, donc s = 2.
0 5

3.2 La méthode du simplexe sous forme matricielle


3.2.1 Forme générale d’un programme linéaire
Le programme linéaire (1.1)-(1.2) s’écrit sous forme canonique matricielle :
{
Ax ≤ b, x ≥ 0
(3.1)
maximiser Z(x) = cT x
avec
       
x1 c1 b1 a11 a12 ... a1n
 x2   c2   b2   a21 a22 ... a2n 
       
x =  .  ∈ Rn+ , c =  .  ∈ Rn , b =  .  ∈ Rm et A =  . .. .. ..  ∈ R
m×n .
 ..   ..   ..   .. . . . 
xn cn bm am1 am2 . . . amn

Remarque 3.2.1 Les coefficients de la matrice A définis précédemment ne sont pas nécessairement ceux du
{ (≤ ou ≥) tandis que (3.1)
programme linéaire (1.1)-(1.2). En effet, (1.1) implique des inégalités quelconques
x + 2y ≤ 2
implique uniquement l’inégalité ≤. Considérons par exemple les contraintes Elles pourront
2x − y ≥ 3
( )( ) ( ) ( )( ) ( )
1 2 x 2 −1 −2 x −2
alors s’écrire, matriciellement, sous la forme ≤ ou ≥ .
−2 1 y −3 2 −1 y 3

Proposition 3.2.1 Chaque programme linéaire sous forme canonique peut s’écrire sous forme standard et
inversement.

Preuve :
(⇒) Considérons le programme linéaire (3.1) écrit sous sa forme canonique. On a

n
Ax ≤ b, x ≥ 0 ⇔ aij xj ≤ bi , i = 1, . . . , m, x ≥ 0
j=1

n ∑
n
⇔ aij xj + ei = bi où ei = bi − aij xj , i = 1, . . . , m, x ≥ 0
j=1
( ) j=1
x
⇔ (A Im ) = b, x̃ ≥ 0
| {z } e

| {z }

( ) ( )
x c
On pose alors Z(x) = c̃T où c̃ = = (c1 , . . . , cn , 0, . . . , 0) et le programme linéaire (écrit sous sa
e 0 | {z }
m fois
forme canonique) est strictement équivalent au programme linéaire suivant (écrit sous sa forme standard) :
{
Ãx̃ = b, x̃ ≥ 0,
maximiser Z(x̃) = c̃T x̃

(⇐) Soit Ax = b un programme linéaire donné sous sa forme standard. On a


74 CHAPITRE 3. LA PROGRAMMATION LINÉAIRE - ÉCRITURE MATRICIELLE

{ { ( ) ( )
Ax ≥ b Ax ≤ b A b
Ax = b ⇔ ⇔ ⇔ ≤
Ax ≤ b (−A)x ≤ −b −A −b
( ) ( )
A b
Si on pose à = et b̃ = , l’inégalité précédente implique Ãx ≤ b̃ qui est bien un programme
−A −b
linéaire sous forme canonique.

Exemple 3.2.1 On considère le programme linéaire de l’exercice 10 du chapitre 2. On rappelle sa forme


canonique et sa forme standard :
 

 x, y, z ≥ 0 
 x, y, z, e1 , e2 , e3 ≥ 0

 

 x + 2y + 4z ≤ 70  x + 2y + 4z + e1 = 70
2x + y + z ≤ 80 ⇔ 2x + y + z + e2 = 80

 


 3x + 2y + 2z ≤ 60 
 3x + 2y + 2z + e3 = 60
 
maximiser Z(x, y, z) = 3x + 5y + 6z maximiser Z(x, y, z, e1 , e2 , e3 ) = 3x + 5y + 6z
Si on pose
   
x 3
          y 5
1 2 4 x 70 3 1 2 4 1 0 0    
z 6
           
A = 2 1 1 , x = y , b = 80 , c = 5 , Ã = 2 1 1 0 1 0 , x̃ =   et c̃ =  
0,
e
 1  
3 2 2 z 60 6 3 2 2 0 0 1 e2  0
e3 0
le programme s’écrit sous les formes canonique et standard matricielles suivantes :
{ {
Ax ≤ b, x ≥ 0 Ãx̃ = b, x̃ ≥ 0

maximiser Z(x) = cT x maximiser Z(x̃) = c̃T x̃

On utilisera dorénavant la forme standard matricielle et on posera A = Ã, x = x̃ et c = c̃.

3.2.2 Représentation matricielle


Définition 3.2.1
– On appelle base une sous-matrice régulière de A. Il faut que la matrice A(m, n) soit de rang m.
– Une solution de base est obtenue en posant n − m variables égales à 0, et en résolvant par rapport
aux m variables restantes, qui sont les variables de base (VDB).
– Les n − m variables à 0 sont les variables hors base (VHB). Des choix différents de VHB donnent
lieu à différentes solutions de base.

Les colonnes de A permettant à une sous-matrice B de A d’être régulière et qui représentent des variables
particulières peuvent commuter si on ordonne correctement x et cT . On peut alors écrire
( )
xb ( )
A = (BE), x = , cT = cTb cTe
xe
et ainsi
{ {
Ax = b, x ≥ 0 Bxb + Exe = b, x ≥ 0

maximiser ou minimiser Z(x) = cT x maximiser ou minimiser Z(x) = cTb xb + cTe xe
Une solution de base est donc telle que
{
xe = 0
(3.2)
Bxb = b ⇔ xb = B −1 b

Certains choix de variables peuvent ne pas générer de solution de base.


Définition 3.2.2 Une solution de base est dite réalisable (SBR) si
3.2. LA MÉTHODE DU SIMPLEXE SOUS FORME MATRICIELLE 75

xb = B −1 b ≥ 0.

Si le vecteur xb contient des termes nuls, on dira que cette solution est une solution de base dégénérée.

Remarque 3.2.2 Lorsque les coefficients bi sont positifs ou nuls, on obtient systématiquement une solution
de base réalisable en mettant les variables du problème initial hors base (donc nulles) et les variables d’écart
dans la base et égales aux bi .

Exemple 3.2.2 Illustrons ces définitions à l’aide du programme linéaire (déjà exprimé sous forme standard)
de l’exercice 10 du chapitre précédent :


 x, y, z, e1 , e2 , e3 ≥ 0


 x + 2y + 4z + e1 = 70
2x + y + z + e2 = 80



 3x + 2y + 2z + e 3 = 60

maximiser Z(x, y, z, e1 , e2 , e3 ) = 3x + 5y + 6z

On peut dresser le tableau suivant avec n = 6, m = 3 :

no VDB VHB Rang(A) Solution de base Réalisabilité


1 x, y, z e1 , e 2 , e 3 3 (100 ;-225 ;105) ̸>0
2 x, y, e1 z, e2 , e3 3 (100 ;-120 ;210) ̸>0
3 x, y, e2 z, e1 , e3 3 (-5 ;37,5 ;52,5) ̸>0
4 x, y, e3 z, e1 , e2 3 (30 ;20 ;-70) ̸>0
5 x, z, e1 y, e2 , e3 3 (100 ;-120 ;450) ̸>0
6 x, z, e2 y, e1 , e3 3 (10 ;15 ;45) réalisable
7 x, z, e3 y, e1 , e2 3 (35,7143 ;8,5714 ;-64,2857) ̸>0
8 y, z, e1 x, e2 , e3 2 Pas de solution
9 y, z, e2 x, e1 , e3 3 (25 ;5 ;50) réalisable
10 y, z, e3 x, e1 , e2 3 (125 ;-45 ;-100) ̸>0
11 e1 , e2 , e3 x, y, z 3 (70 ;80 ;60) réalisable
12 x, e1 , e2 y, z, e3 3 (20 ;50 ;40) réalisable
13 x, e1 , e3 y, z, e2 3 (40 ;30 ;-60) ̸>0
14 x, e2 , e3 y, z, e1 3 (70 ;-60 ;-150) ̸>0
15 y, e1 , e2 x, z, e3 3 (30 ;10 ;50) réalisable
16 y, e1 , e3 x, z, e2 3 (80 ;-90 ;-100) ̸>0
17 y, e2 , e3 x, z, e1 3 (35 ;45 ;-10) ̸>0
18 z, e1 , e2 x, y, e3 3 (30 ;-50 ;50) ̸>0
19 z, e2 , e3 x, y, e1 3 (17,5 ;62,5 ;25) réalisable
20 z, e1 , e3 x, y, e2 3 (80 ;-250 ;-100) ̸>0

Table 3.1 – Bases et réalisabilité de la SBR associée

Intéressons-nous au nombre de solutions possibles en général :


– le nombre de bases candidates est
76 CHAPITRE 3. LA PROGRAMMATION LINÉAIRE - ÉCRITURE MATRICIELLE

n!
Cnm =
(n − m)!m!
6! 6×5×4
(on a bien testé C63 = 3!(6−3)! = 3×2×1 = 20 bases dans l’exemple précédent).
Toutes les bases candidates ne sont pas inversibles, donc on peut seulement dire que le nombre
précédent est une borne supérieure (dans notre exemple, on trouve 19 bases inversibles).
– Une méthode basée sur l’exploration des points extrêmes est cependant non-polynomiale (on comprend
bien qu’on ne peut appliquer pour m grand la technique qui nous a permis, pour l’exemple précédent,
de récupérer le tableau 3.1, à savoir la résolution de 21 systèmes de taille 3 × 3)
– L’expérience montre que pour un problème de n variables à m contraintes, la solution optimale est
trouvée en moyenne en moins de 3m opérations (ce qui signifie pour notre exemple, qu’on doit pouvoir
trouver la solution du PL en moins de 9 itérations).

Définition 3.2.3 Pour tout problème de PL, deux SBR sont adjacentes si leurs ensembles de variables de
base ont m − 1 variables de base en commun.

L’interprétation géométrique est que les 2 SBR sont situées le long d’une même arête sur le polytope
réalisable.

3.2.3 Description générale de l’algorithme


On rappelle que l’algorithme du simplexe (pour une maximisation) suit les étapes suivantes :
1. Trouver une SBR pour le PL, appelée la SBR initiale.
2. Déterminer si la SBR courante est optimale. Sinon, trouver une SBR adjacente qui possède une valeur
Z plus élevée.
3. Retourner au point 2. avec la nouvelle SBR comme SBR courante.
Les deux questions suivantes sont donc :
– comment détecter l’optimalité ? et
– comment se déplacer ?
Pour répondre à ces questions, on écrit :

Z = cTb xb + cTe xe

et

Bxb + Exe = b.

Donc, puisque B ∈ Rm×m est de rang m, B est inversible et

xb = B −1 (b − Exe ).

Par substitution, on obtient

Z = cTb B −1 b + (cTe − cTb B −1 E)xe = cTb B −1 b + cTe xe

en posant

cTe = cTe − cTb B −1 E.

Le terme cTe correspond à l’augmentation du coût pour une augmentation des variables dans xe . Pour une
SBR, on a xe = 0 et donc, ce terme n’a pas d’incidence. Si tous les coûts ce sont négatifs (pour une maxi-
misation), toute augmentation des variables de xe diminuera la valeur de Z, et donc la solution obtenue
est optimale. Réciproquement, pour une minimisation, si tous les coûts sont positifs, toute augmentation
des variables de xe augmentera la valeur de Z. On a donc répondu à la première question, relative au test
d’optimalité.

Pour une maximisation, si notre base est telle que cTe ne soit pas strictement négative ou nulle, alors il
existe une variable (xe )k = xk de xe telle que (ce )k = ck > 0. Une augmentation de xk est donc susceptible
d’améliorer Z. C’est bien-sûr le critère de Dantzig qui va désigner cette variable. La solution va alors s’écrire :
3.2. LA MÉTHODE DU SIMPLEXE SOUS FORME MATRICIELLE 77

xb = B −1 (b − xk Ak − E ′ x′e )

où Ak désigne la k-ième colonne de A En fixant x′e = 0, et en faisant varier xk seulement, on obtient :

xb = B −1 (b − Ak xk ) = B −1 b − B −1 Ak xk
= b − P xk

Comme originellement xk est nulle, on ne peut que l’augmenter. Il y a deux cas :


– cas 1 : ∀i, Pi ≤ 0. En ce cas la solution est non bornée. xk tend vers +∞ et Z vers −∞.
– cas 2 : il y a 2 possibilités : pour chaque i
1. soit Pi ≤ 0, et donc, (xb )i ≥ 0 pour tout xk ≥ 0 : on ne peut pas utiliser cette variable.
2. soit Pi > 0, et dans ce cas, (xb )i ≥ 0 pour xk ≤ bi
Pi . Ainsi, pour tout Pi > 0, il existe une valeur
maximale de xk = bi
Pi , permettant xb ≥ 0. On choisit donc la variable k telle que :

bi
k = argmin
i/Pi >0 Pi

3.2.4 Exemple avec solution optimale unique


Reprenons l’exercice 10 du chapitre précédent :
• 1ère itération :
– On choisit comme base initiale
 VB=(e1 , e2 , e3 ). On
 adans ce cas  
1 0 0 70 1 2 4
B = 0 1 0 = I3 , b = 80 = b, E = 2 1 1
0 0 1 60 3 2 2
T T T −1
– Les coûts réduits définis par ce = ce − cb B E sont égaux à
x y z
cTe = (3 5 6)
Le critère de Dantzig implique que la variable z entre en base.
– On a P = B −1 A3 = (4, 1, 2) et on calcule ensuite les ratios bPii :
e1 e2 e3
bi 70
Pi= 17, 5 80
4 1 = 80
60
2 = 30
On en déduit que la variable sortante est e1 .
• 2ème itération :
– On a maintenant la base VB=(z, e2 , e3 ).
 On a alors
   
4 0 0 17, 5 1 2 1
B = 1 1 0, b = 62, 5, E = 2 1 0
2 0 1 25 3 2 0
On remarque que b est défini dans la ligne 19 du tableau 3.1.
– Les coûts réduits sont égaux à
x y e1
cTe = ( 32 2 − 32 )
Le critère de Dantzig implique que la variable y entre en base.
– On a P = B −1 A2 = (2, 1, 2) et on calcule ensuite les ratios bPii :
z e2 e3
bi
Pi 35 125 25
On en déduit que la variable sortante est e3 .
• 3ème itération :
– On a maintenant la base VB=  (z, e2 , y). 
On a alors
   
4 0 2 5 1 0 1
B = 1 1 1, b = 50, E = 2 0 0
2 0 2 25 3 1 0
78 CHAPITRE 3. LA PROGRAMMATION LINÉAIRE - ÉCRITURE MATRICIELLE

On remarque que b est défini dans la ligne 9 du tableau 3.1.


– Les coûts réduits sont égaux à
x e1 e3
cTe = (− 72 − 12 −2)
L’algorithme s’arrête car tous les poids sont négatifs. On a donc trouvé l’optimum.
• Conclusion :
– La solution est constituée des variables de base
y, z, e2 .
– Les valeurs de ces variables sont données respectivement par
25, 5, 50.
Toutes les autres valeurs sont égales à 0.
– La fonction de coût vaut donc :
Z = 3 × 0 + 5 × 25 + 6 × 5 = 155.

3.2.5 Exemple avec solution optimale multiple


Une ébénisterie produit des bureaux, des tables et des chaises. Chaque type de produit réclame du bois
et deux types de travaux : mise en forme et finition, suivant le tableau :

Ressource bureau table chaise


planches 8m 6m 1m
3
mise en forme 4h 2h 2h
3 1
finition 2h 2h 2h

On dispose de 48m de planches, 20h de mise en forme et 8h de finition.


On vend un bureau pour 60e, une table pour 35e et une chaise pour 20e. La demande pour les chaises et
les bureaux est illimitée, mais on ne pense vendre que 5 tables au plus. On veut maximiser le profit.

Formalisons le problème : soient x1 , x2 , x3 les variables décrivant respectivement les nombres de bureaux, de
tables et de chaises. On cherche à résoudre le PL

 x1 , x2 , x3 ≥ 0



 8x1 + 6x2 + x3 ≤ 48


4x1 + 2x2 + 2 x3 ≤ 20
3


 2x1 + 23 x2 + 12 x3 ≤ 8



 x2 ≤ 5

maximiser Z(x1 , x2 , x3 ) = 60x1 + 35x2 + 20x3
• Première itération :
– On a initialement VB= {x4 , x5 , x6 , x7 }. On a donc
     
1 0 0 0 48 8 6 1
0 1 0     3
B=
0
,b=
20 4 6 2
0 0 1 0  8 , E = 2 3 1 .
2 2
0 0 0 1 5 0 1 0
– Les coûts réduits sont égaux à
x1 x2 x3
cTe = (60 35 20)
Le critère de Dantzig implique que la variable x1 entre en base.
– On a P = B −1 A1 = (8, 4, 4, 0) et on calcule ensuite les ratios bPii :
x4 x5 x6 x7
bi
Pi6 5 4 ∞
On en déduit que la variable sortante est x6 .
3.2. LA MÉTHODE DU SIMPLEXE SOUS FORME MATRICIELLE 79

• Deuxième itération :
– On a initialement VB= {x4 , x5 , x1 , x7 }. On a donc
     
1 0 8 0 16 6 1 0
0 1 4 0 4 2 3 
B= , b =  , E =  2 0.
0 0 2 0 4 3 1 
2 2 1
0 0 0 1 5 1 0 0
– Les coûts réduits sont égaux à
x2 x3 x6
cTe = (−10 5 −30)
Le critère de Dantzig implique que la variable x3 entre en base.
– On a P = B −1 A3 = (−1, 12 , 14 , 0) et on calcule ensuite les ratios bPii :
x4 x5 x1 x7

−16 8 16 ∞
bi
Pi
On en déduit que la variable sortante est x5 .
• Troisième itération :
– On a maintenant VB= {x4 , x3 , x1 , x7 }. On a donc
     
1 1 8 0 24 6 1 0
 0 3 4 0 8 2 1 0
B= 2    
 0 1 2 0 , b =  2  , E =  3
.
2 2 0 1
0 0 0 1 5 1 0 0
– Les coûts réduits sont égaux à
x2 x5 x6
cTe = (0 −10 −10)
On a trouvé un optimum mais x2 est à zéro. Ceci indique une solution non unique car on peut
faire entrer x2 dans la base à coût constant. Donc x2 entre dans la base. On poursuit alors le calcul
normalement.
– On a P = B −1 A3 = (−2, −2, 54 , 1) et on calcule ensuite les ratios bPii :
x4 x3 x1 x7

−12 −4 1, 6 5
bi
Pi
On en déduit que la variable sortante est x1 .
• Quatrième itération :
– On a maintenant VB= {x4 , x3 , x2 , x7 }. On a donc
     
1 1 6 0 27, 2 8 0 0
0 3 2 0 11, 2 4 1 0
B= 2   
0 1 3 0, b =  1, 6 , E = 2
 .
2 2
0 1
0 0 1 1 3, 4 0 0 0
– Les coûts réduits sont égaux à
x1 x5 x6
cTe = (0 −10 −10)
On a trouvé un optimum, mais x1 est à zéro. Ceci indique une solution non unique, car on peut
faire entrer x1 dans la base à coût constant. Donc x1 entre dans la base et on poursuit alors le calcul
normalement.
– On a P = B −1 A3 = (−2, −2, 54 , 1) et on calcule ensuite les ratios bPii :
x4 x3 x2 x7
bi
Pi17 7 2 − 17 4
On en déduit que la variable sortante est x2 . On a découvert un cycle.
• Conclusion :
– La solution est constituée des variables de base réalisables possibles. Ici
VB1= {x4 , x3 , x1 , x7 }, VB2= {x4 , x3 , x2 , x7 }
et de toutes leurs combinaisons linéaires intermédiaires.
80 CHAPITRE 3. LA PROGRAMMATION LINÉAIRE - ÉCRITURE MATRICIELLE

– Les valeurs de ces variables sont données par


b1 = {24, 8, 2, 5}, b2 = {27, 2; 11, 2; 1, 6; 3, 4}
respectivement. Toutes les autres valeurs sont égales à 0.
– En ne comptant que les variables entrant dans le coût, les deux points optimaux extrêmes sont :
f1 = (x1 , x2 , x3 ) = (2, 0, 8), f2 = (x1 , x2 , x3 ) = (0; 1, 6; 11, 2).
– Toutes les solutions intermédiaires sont données par :
(x1 , x2 , x3 ) = (2c; 1, 6 − 1, 6c; 11, 2 − 3, 2c)
avec 0 ≤ c ≤ 1.
– La fonction de coût vaut donc :
Z(x1 , x2 , x3 ) = 60x1 + 30x2 + 20x3 = 280
et elle est constante pour toutes ces solutions.
– Pour des problèmes plus complexes, on peut avoir plusieurs variables à zéro dans P , et non plus une
seule. L’ensemble des solutions est alors l’espace vectoriel convexe induit par les solutions extrêmes.
Pour les trouver il faut réaliser toute les substitutions possibles autorisées.

3.2.6 Exemple avec solution non bornée


Soit une boulangerie qui fabrique des petits pains ordinaires et des pains campagnards ;
– Les pains ordinaires se vendent pour 36 centimes et les pains campagnards 30 centimes ;
– Un pain ordinaire nécessite une dose de levure et 60g de farine, un pain campagnard une dose de
levure et 50g de farine.
– La boulangerie possède pour le moment 5 doses de levure et 100g de farine.
– La levure coûte 3 centimes la dose, et la farine 4 centimes les 10g.
Maximisons le profit de la boulangerie.

Soient x1 , x2 , x3 les nombres respectifs de pains ordinaires produits, de pains campagnards produits, de doses
de levure et x4 la quantité de farine consommée par quantité de 10g. Les revenus sont égaux à 36x1 + 30x2 ,
les coûts sontégaux à 3x3 + 4x4 . La fonction objectif à maximiser est Z(x1 , x2 , x3 ) = 36x1 + 30x2 3x3 4x4 .
Les contraintes sont données par les inégalités : x1 + x2 ≤ 5 + x3 et 6x1 + 5x2 ≤ 10 + x4 . On introduit 2
variables d’écart pour les contraintes, x5 , x6 qui sont toutes deux positives.
• 1ère itération :
– VB= {x5 , x6 } ; VHB= {x1 , x2 , x3 , x4 }.
– b = (5 10).
– Coûts réduits : (36, 30, −3, −4), on va donc faire rentrer x1 en base.
– P = (1 6)
– Ratios : (5 1, 66667) on va donc faire sortir x6 .
• 2ème itération :
– VB= {x5 , x1 } ; VHB= {x2 , x3 , x4 , x6 }.
– b = ( 10 5
3 3 ).
– Coûts réduits : (0, −3, 2, −6), on va donc faire rentrer x4 en base.
– P = ( 16 − 16 )
– Ratios : (20 − 10) on va donc faire sortir x5 .
• 3ème itération :
– VB= {x4 , x1 } ; VHB= {x2 , x3 , x5 , x6 }.
– b = (20 5).
– Coûts réduits : (−2, 9, −12, −4), on va donc faire rentrer x3 en base.
– P = ( 16 − 16 )
– Ratios : (−6 − 1). La solution n’est pas bornée.
• Solution : Avec la dernière solution de base{ réalisable, le système s’écrit :
x4 − 6x3 = 20
x1 − x3 = 5
Donc en augmentant x3 de façon arbitraire, on fait aussi croı̂tre x4 et x1 arbitrairement, et donc on
peut réduire Z sans fin, tout en obéissant à toutes les contraintes.