Vous êtes sur la page 1sur 20

Résolution d’un programme linéaire par l’Algorithme du simplexe

N. Kashfin ∗ T. Gomez † E. Hyon

2 mars 2021

1 Introduction
Le but de se document est d’illustrer la résolution d’un problème de programmation linéaire par
l’algorithme du simplexe à partir de la résolution d’un exemple simple donné au début. Il cherche à
illustrer certains des points de l’algorithme en faisant le lien entre la figure qui se visualise facilement
et d’une part les différentes méthodes de résolutions et l’illustration de propriétés d’algèbre linéaire.

1.1 Table des matières

Table des matières


1 Introduction 1
1.1 Table des matières . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

2 Programme linéaire 2
2.1 Un exemple de programme linéaire à résoudre . . . . . . . . . . . . . . . . . . . . . . 2

3 Résolution Graphique 2
3.1 Equation des droites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.1.1 Droite C3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.1.2 Droite C4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.1.3 Droite C5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.2 Représentation de l’ensemble des solutions réalisables . . . . . . . . . . . . . . . . . . 3
3.3 Identification des points d’intersection . . . . . . . . . . . . . . . . . . . . . . . . . . 3

4 Caractérisation des bases 3


4.1 Forme matricielle Ax=b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.2 Enumération des différentes bases possibles . . . . . . . . . . . . . . . . . . . . . . . 5
4.2.1 Base 1 d’indice (1, 2, 3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.2.2 Base 2 d’indice (1, 2, 4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.2.3 Base 3 d’indice (1, 2, 5) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.2.4 Base 4 d’indice (1, 3, 4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.2.5 Base 5 d’indice (1, 3, 5) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.2.6 Base 6 d’indice (1, 4, 5) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.2.7 Base 7 d’indice (2, 3, 4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.2.8 Base 8 d’indice (2, 3, 5) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.2.9 Base 9 d’indice (2, 4, 5) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

L3 MIASHS Parcours MIAGE 2016-2017, Université Paris Nanterre

L3 MIASHS Parcours MIAGE 2017-2018, Université Paris Nanterre

1
4.2.10 Base 10 d’indice (3, 4, 5) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

5 Éléments reliant les bases réalisables et la recherche de la solution optimale 10


5.1 Caractéristiques de la solution optimale . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.2 Recherche de la base réalisable optimale . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.2.1 Méthode par énumération . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.2.2 Méthode du simplexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5.3 Illustration du parcours des bases réalisable . . . . . . . . . . . . . . . . . . . . . . . 11
5.3.1 Échange des vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5.3.2 Choix de la valeur entrante . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5.3.3 Choix de la valeur sortante . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

6 Méthodes de résolutions basées sur une mise en oeuvre de l’algorithme du sim-


plexe 14
6.1 Algorithme du simplexe : présentation générale . . . . . . . . . . . . . . . . . . . . . 14
6.2 Algorithme du simplexe sous forme algébrique . . . . . . . . . . . . . . . . . . . . . . 14
6.2.1 Rappels des cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6.2.2 Reprise de l’exemple et déroulement . . . . . . . . . . . . . . . . . . . . . . . 15
6.3 Algorithme du simplexe : méthode du dictionnaire . . . . . . . . . . . . . . . . . . . 16
6.3.1 Rappels du cour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
6.3.2 Reprise de l’exemple et déroulement . . . . . . . . . . . . . . . . . . . . . . . 16
6.4 Algorithme du simplexe : méthode des tableaux . . . . . . . . . . . . . . . . . . . . . 19
6.4.1 Rappels du cour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.4.2 Reprise de l’exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2 Programme linéaire
2.1 Un exemple de programme linéaire à résoudre
Soit le programme linéaire suivant donné sous sa forme canonique :


 max 10x1 + 6x2
x1 + x2 ≤ 12 (c3 )



4x1 + x2 ≤ 36 (c4 )
2x 1 + 5x2 ≤ 44 (c5 )




x1 , x2 ≥0

En rajoutant les variables d’écart x3 , x4 , x5 , sa forme standard devient :




 max 10x1 + 6x2
x1 + x2 + x3 = 12 (c3 )



4x1 + x2 + x4 = 36 (c4 )
2x 1 + 5x2 + x5 = 44 (c5 )




x1 , x2 , x3 , x4 , x5 ≥ 0

Les équations qui modélisent les contraintes sont C4 , C5 et C5 . On modélise aussi la contrainte
x1 ≥ 0 par la droite C1 d’équation x1 = 0 et la contrainte x2 ≥ 0 par la droite C2 d’équation x2 = 0

3 Résolution Graphique
On part de la solution canonique.

2
3.1 Equation des droites
3.1.1 Droite C3
On cherche les point situés en dessous de la droite
x1 + x2 = 12.
Cette droite intersecte l’axe des ordonnées en x1 = 0 soit x2 = 12. Il s’agit du point I sur la
figure.
Cette droite intersecte l’axe des abscisses en x2 = 0 soit x1 = 12. Il s’agit du point F sur la figure.

3.1.2 Droite C4
On cherche les point situés en dessous de la droite d’équation
4x1 + x2 = 36 .
Cette droite intersecte l’axe des ordonnées en x1 = 0 soit x2 = 36. Il s’agit du point H sur la
figure.
Cette droite intersecte l’axe des abscisses en x2 = 0 soit x1 = 9. Il s’agit du point E sur la figure.

3.1.3 Droite C5
On cherche les point situés en dessous de la droite
2x1 + 5x2 = 44 .
Cette droite intersecte l’axe des ordonnées en x1 = 0 soit x2 = 44
5 . Il s’agit du point G sur la
figure.
Cette droite intersecte l’axe des abscisses en x2 = 0 soit x1 = 44
2 = 22. Il s’agit du point D sur la
figure.

3.2 Représentation de l’ensemble des solutions réalisables


La résolution graphique (l’espace des solution réalisables en fait) du programme linéaire est
représentée Figure 1.
Sur la Figure 1, l’espace réalisable est hachuré et nous représentons les points d’intersections
entre les différentes contraintes (la droite de chaque contrainte a pour nom celui de l’équation).

3.3 Identification des points d’intersection


En résolvant les systèmes qui permettent de qualifier les points d’intersection entre les droites
de contraintes, il vient :

A = (68/9, 52/9), B = (16/3, 20/3), C = (8, 4), D = (22, 0),


E = (9, 0), F = (12, 0), G = (0, 44/5), H = (0, 36),
I = (0, 12), J = (0, 0).

Les points en ROUGE représentent l’ensemble des points intersections des contraintes et apparte-
nant à l’espace réalisables. Ils représentent ainsi l’ensemble des solutions réalisables.

4 Caractérisation des bases


On cherche à illustrer les caractéristiques des différentes bases.

3
Figure 1 – Ensemble des contraintes et solutions réalisables

4
4.1 Forme matricielle Ax=b
Ce programme mathématique peut être réexprimé sous une forme matricielle telle que :
 
  x1  
1 1 1 0 0 x2 
  12
A = 4 1 0 1 0 et x =  x
 3
 et b = 36
2 5 0 0 1 x4  44
x5

4.2 Enumération des différentes bases possibles


Nous énumérons ici l’ensemble des bases possibles que nous pouvons choisir à partir de la forme
matricielle. Nous voulons montrer que à chaque choix d’une base correspond un système linéaire
dont la solution est un point de la figure (qui correspond à une intersection entre contrainte) et Nous
voulons montrer le lien entre les points qui correspondent à une base réalisable et leur situation sur
l’enveloppe convexe de l’espace réalisable.

4.2.1 Base 1 d’indice (1, 2, 3)


Le choix des indices est (1, 2, 3). La base est A1 = (x1 , x2 , x3 ). Le système linéaire devient :
       
1 1 1 x1 0 0   12
x4
AA 1 = 4 1
 0 , x = x2
   et AH = 1 0 , xH =
  et b = 36

x5
2 5 0 x3 0 1 44

Cette base correspond au système d’équations :



 x1 + x2 + x3 = 12
4x1 + x2 = 36
2x1 + 5x2 = 44

Je résous le système et j’obtiens :


68


 x1 =


 9
52



 x
2 =
9

 −4

 x3 =
3




x4 = x5 = 0

La solution est le point (x1 , x2 ) de coordonnées (x1 , x2 ) = (69/9, 52/9). Il correspond au point A
sur le graphique 1 ; x3 représente l’écart entre le point A et la droite de contrainte (c3 ) : x1 +x2 +x3 =
12. Comme le point A se trouve au dessus de la droite de contrainte c3 , la valeur d’écart de x3 est
négative.
Cette base est-elle une base réalisable ? Non car parmi les solutions du système linéaire, une
solution est négative : x3 . (rappel, pour qu’une base soit réalisable, il faut que toutes les solutions
soient positives). On rappelle qu’on parle de base réalisable car elles correspondent à un point de
l’enveloppe pour laquelle toutes les contraintes sont satisfaites. Ici pour le point A une des contraintes
n’est pas satisfaite en A on a pas x1 + x2 ≤ 12.

5
4.2.2 Base 2 d’indice (1, 2, 4)
Le choix des indices est (1, 2, 4). La base est A2 = (x1 , x2 , x4 ) Le système linéaire devient :
       
1 1 0 x1 1 0   12
x
AA2 = 4 1 1 , x = x2  et AH = 0 0 , xH = 3 et b = 36
x5
2 5 0 x4 0 1 44
Cette base correspond au système d’équations :

 x1 + x2 = 12
4x1 + x2 + x4 = 36
2x1 + 5x2 = 44

Je résous le système et j’obtiens :


16


 x1 =



 3

 20
x2 =
 3



 x4 = 8


x3 = x5 = 0

Le point (x1 , x2 ) = (16/3, 20/3) correspond au point B sur le graphique 1 ; x4 représente l’écart
entre le point B et la droite de contrainte c4 ) : 4x1 + x2 + x4 = 36. Comme le point B se trouve en
dessous de la droite de contrainte c4 , la valeur de x4 est positive.
Cette base est-elle une base réalisable ? Oui car toutes les solutions du système linéaire sont
positives.

4.2.3 Base 3 d’indice (1, 2, 5)


Le choix des indices est (1, 2, 5). La base est A3 = (x1 , x2 , x5 ). Le système linéaire devient :
       
1 1 0 x1 1 0   12
x
AA3 = 4 1 0 , x = x2  et AH = 0 1 , xH = 3 et b = 36
x4
2 5 1 x5 0 0 44
Cette base correspond au système d’équations :

 x1 + x2 = 12
4x1 + x2 = 36
2x1 + 5x2 + x5 = 44

Je résous le système et j’obtiens : 



 x1 = 8
x2 = 4

 x5
 = 8
x3 = x4 = 0

Le point (x1 , x2 ) = (8, 4) correspond au point C sur le graphique 1 ; x5 représente l’écart entre
le point C et la droite de contrainte (c5 ) : 2x1 + 5x2 + x5 = 44. Comme le point C se trouve en
dessous de la droite de contrainte c5 , la valeur de x5 est positive.
Cette base est-elle une base réalisable ? Oui car toutes les solutions du système linéaire sont
positives.

6
4.2.4 Base 4 d’indice (1, 3, 4)
Le choix des indices est (1, 3, 4). La base est A4 = (x1 , x2 , x4 ). le système linéaire devient :
       
1 1 0 x1 1 0   12
x
AA4 = 4 0 1 , x = x3  et AH = 1 0 , xH = 2 et b = 36
x5
2 0 0 x4 5 1 44

Je résous le système : 
 x1 + x3 = 12
4x1 + x4 = 36
2x1 = 44

et j’obtiens : 

 x1 = 22
x3 = −10

x = −52
 4


x2 = x5 = 0

Le point (x1 , x2 ) = (22, 0) correspond au point D sur le graphique ; x3 et x4 représentent


les variables d’écarts entre le point D et les droites de contraintes (c3 ) : x1 + x2 + x3 = 12 et
(c4 ) : 4x1 + x2 + x4 = 36. Comme le point D se trouve au dessus des droites de contraintes c3 et c4 ,
les valeurs des variables x3 et x4 sont négatives.
Cette base est-elle une base réalisable ? Non car x3 et x4 sont négatives.

4.2.5 Base 5 d’indice (1, 3, 5)


Le choix des indices est (1, 3, 5). La base est A5 = (x1 , x3 , x5 ). Le système linéaire devient :
       
1 1 0 x1 1 0   12
x
AA5 = 4 0 0 , x = x3  et AH = 1 1 , xH = 2 et b = 36
x4
2 0 1 x5 5 0 44

Je résous le système : 
 x1 + x3 = 12
4x1 = 36
2x1 + x5 = 44

et j’obtiens : 

 x1 = 9
x3 = 3

.
x = 26
 5


x2 = x4 = 0

Le point (x1 , x2 ) = (9, 0) correspond au point E sur le graphique ; x3 et x5 représentent les


variables d’écarts entre le point E et les droites de contraintes (c3 ) : x1 + x2 + x3 = 12 et (c5 ) :
2x1 + 5x2 + x5 = 44. Comme le point E se trouve en dessous des droites de contraintes c3 et c5 , les
valeurs des variables x3 et x5 sont positives.
Cette base est-elle une base réalisable ? Oui car toutes les solutions du système linéaire sont
positives.

7
4.2.6 Base 6 d’indice (1, 4, 5)
Le choix des indices est (1, 4, 5). La base est A6 = (x1 , x4 , x5 ). Le système linéaire devient :
       
1 0 0 x1 1 0   12
x
AA6 = 4 1 0 , x = x4  et AH = 1 1 , xH = 2 et b = 36
x3
2 0 1 x5 5 0 44
Je résous le système : 
 x1 = 12
4x1 + x4 = 36
2x1 + x5 = 44

et j’obtiens : 

 x1 = 12
x4 = −12

.
 x5
 = 20
x2 = x3 = 0

Le point (x1 , x2 ) = (12, 0) correspond au point F sur le graphique ; x4 et x5 représentent les


variables d’écarts entre le point F et les droites de contraintes (c4 ) : 4x1 + x2 + x4 = 36 et (c5 ) :
2x1 + 5x2 + x5 = 44. Comme le point F se trouve au dessus de la droite de contrainte c4 et en
dessous de c5 , la valeurs de x4 est négative et la valeur de x5 est positive.
Cette base est-elle une base réalisable ? Non car x4 est négative.

4.2.7 Base 7 d’indice (2, 3, 4)


Le choix des indices est (2, 3, 4). La base est A7 = (x2 , x3 , x4 ). Le système linéaire devient :
       
1 1 0 x2 1 0   12
x
AA7 = 1 0 1 , x = x3  et AH = 4 0 , xH = 1 et b = 36
x5
5 0 0 x4 2 1 44

Je résous le système : 
 x2 + x3 = 12
x2 + x4 = 36
5x2 = 44

et j’obtiens :
44


 x2 =


 5
16



 x
3 =
5 .

 136

 x4 =
5




x1 = x5 = 0

Le point (x1 , x2 ) = (0, 44/5) correspond au point G sur le graphique ; x3 et x4 représentent


les variables d’écarts entre le point G et les droites de contraintes (c3 ) : x1 + x2 + x3 = 12 et
(c4 ) : 4x1 + 2x2 + x4 = 36. Comme le point G se trouve en dessous des droites de contraintes c3 et
c4 , les valeurs de x3 et x4 sont positives.
Cette base est-elle une base réalisable ? Oui car les solutions du système linéaire sont positives.

8
4.2.8 Base 8 d’indice (2, 3, 5)
Le choix des indices est (2, 3, 5). La base est A8 = (x2 , x3 , x5 ). Le système linéaire devient :
       
1 1 0 x2 1 0   12
x
AA8 = 1 0 0 , x = x3  et AH = 4 1 , xH = 1 et b = 36
x4
5 0 1 x5 2 0 44

Je résous le système : 
 x2 + x3 = 12
x2 = 36
5x2 + x5 = 40

et j’obtiens : 

 x2 = 36
x3 = −24

x = −136
 5


x1 = x4 = 0

Le point (x1 , x2 ) = (0, 36) correspond au point H sur le graphique ; x3 et x5 représentent les
variables d’écarts entre le point H et les droites de contraintes (c3 ) : x1 + x2 + x3 = 12 et (c5 ) :
2x1 + 5x2 + x5 = 44. Comme le point H se trouve au dessus des droites de contraintes c3 et c5 , les
valeurs de x3 et x5 sont négatives.
Cette base est-elle une base réalisable ? Non car parmi les solutions du système linéaire x3 et x4
sont négatives.

4.2.9 Base 9 d’indice (2, 4, 5)


Le choix des indices est (2, 4, 5). La base est A9 = (x2 , x4 , x5 ). Le système linéaire devient :
       
1 0 0 x2 1 1   12
x
AA9 = 1 1 0 , x = x4  et AH = 4 0 , xH = 1 et b = 36
x3
5 0 1 x5 2 0 44

Je résous le système : 
 x2 = 12
x2 + x4 = 36
5x2 + x5 = 40

et j’obtiens : 

 x2 = 12
x4 = 24

x = −16
 5


x1 = x3 = 0

Le point (x1 , x2 ) = (0, 12) correspond au point I sur le graphique ; x4 et x5 représentent les
variables d’écarts entre le point I et les droites de contraintes (c4 ) : 4x1 + x2 + x4 = 36 et (c5 ) :
2x1 + 5x2 + x5 = 44. Comme le point I se trouve en dessous de la droite de contrainte c4 et au
dessus de c5 , la valeur de x4 est positive et celle de x5 est négative.
Cette base est-elle une base réalisable ? Non car x5 est négative.

9
4.2.10 Base 10 d’indice (3, 4, 5)
Le choix des indices est (3, 4, 5). La base est A10 = (x3 , x4 , x5 ). Le système linéaire devient :
       
1 0 0 x3 1 1   12
x
AA10 = 0 1 0 , x = x4  et AH = 4 1 , xH = 1 et b = 36
x2
0 0 1 x5 2 5 44

Je résous le système : 
 x1 = 12
x2 = 36
x3 = 44

et j’obtiens : 

 x3 = 12
x4 = 36

x = 44
 5


x1 = x2 = 0

Le point (x1 , x2 ) = (0, 0) correspond au point J sur le graphique ; x3 , x4 et x5 représentent les


variables d’écarts entre le point J et les droites de contraintes (c3 ), c4 et (c5 )
Comme le point J se trouve en dessous des droites de contraintes, les valeurs d’écarts x3 , x4 et x5
sont positives.
Cette base est-elle une base réalisable ? Oui car toutes les solutions du système linéaire sont
positives.

5 Éléments reliant les bases réalisables et la recherche de la solu-


tion optimale
5.1 Caractéristiques de la solution optimale
D’après le cours, on sait que la solution optimale se trouve sur un des sommets (un des points
d’intersection entre deux contraintes) ou sur une arête de la frontière de l’ensemble des solutions
réalisables. Chaque sommet de la frontière correspond à un choix d’une base et plus particulièrement
à une base réalisable de l’ensemble des bases, comme illustré dans la partie précédente.

5.2 Recherche de la base réalisable optimale


Pour trouver la solution optimale il faut chercher la base réalisable qui a le meilleur gain. Il y a
différentes manière de trouver toutes les bases.

5.2.1 Méthode par énumération


Pour cela on peut pratiquer la méthode d’énumération qui vise à trouver toutes les bases, à
sélectionner parmi celles-ci les bases réalisables et enfin à trouver la base réalisable qui optimise
l’objectif. Cette méthode à une complexité très élevée (exponentielle).
La méthode par énumération appliqué au problème de la section 1 donne (une fois les bases
réalisables sélectionnées voir partie précédente).

10
Sommet Coordonnés Valeur objectif
B ( 16 20
3 , 3 ) 93, 33
C (8, 4) 104
E (9, 0) 90
G (0, 44
5 ) 52, 5
J (0, 0) 0

Comme le point C fournit la plus grande valeur à la fonction objectif qui est à maximiser. Ce
point représente la solution optimale : Z = 104 avec x = 8 et y = 4.

5.2.2 Méthode du simplexe


L’une des manières de procéder alternative est de faire un parcours des bases réalisables de
proche en proche. Pour cela on part d’une base réalisable et on va parcourir les autres jusqu’à
ce que l’on trouve celle qui a le meilleur gain. Pour parcourir les bases réalisables on va échanger
des vecteurs en faisant entrer un vecteur hors base et sortir un vecteur de la base. Si le choix
est intelligemment fait alors on peut faire un parcours beaucoup plus rapide que la méthode par
énumération. C’est le principe de la méthode du simplexe

5.3 Illustration du parcours des bases réalisable


On rappelle qu’on parle de base réalisable car elles correspondent à un point de l’enveloppe
pour laquelle toutes les contraintes sont satisfaites. Notre but est de trouver une méthode rapide
qui permette de trouver la base réalisable optimale très rapidement.
Il faut donc trouver les moyens de
— passer d’un base réalisable à une autre avec un coût algorithmique léger.
Pour cela, on procède par échange de vecteur.
— aller le plus vite possible vers la solution optimale.
Pour cela, on cherche à chaque fois à trouver la variable entrante dont l’amélioration du gain
est la meilleure.
— rester dans les bases réalisables.
Pour cela le choix de la valeur sortante doit être fait de manière à rester dans cet ensemble.
Chacun des aspects va être étudiés dans ce qui suit.

5.3.1 Échange des vecteurs


Prenons le point d’une base réalisable et regardons sur le graphique les points les plus proches
de ce point. On remarque que ces points ont des vecteurs en commun avec celui que l’on a choisi.
En échangeant des vecteurs on peut donc parcourir plusieurs bases.

Exemple du point J Prenons par exemple le point J de coordonnée (0, 0) et regardons les points
qui se trouvent à proximité. On a le choix entre les points G, I, H, E, F et D.
En fait on a deux groupes de points : G, I, H et E, F, D.
Pour le groupe : G, I, H.
Si on prend J point de la base (3, 4, 5).
On passe de J à G, point associé à la base (2, 3, 4) en ajoutant le vecteur 2 et en faisant sortir le
vecteur 5.
On passe de J à I, point associé à la base (2, 4, 5), en ajoutant le vecteur 2 et en faisant sortir le
vecteur 3.
On passe de J à H, point associé à la base (2, 3, 5), en ajoutant le vecteur 2 et en faisant sortir le
vecteur 4.

11
Remarque On remarque que G appartient à une base réalisable car il se trouve sur la frontière
de l’ensemble des solutions. On remarque aussi que G, I, H ce sont des points situés sur la droite
C1 d’équation x1 = 0.
Pour le groupe : E, F, D.
On passe de J à E, point associé à la base (1, 3, 5), en ajoutant le vecteur 1 et en faisant sortir le
vecteur 4.
On passe de J à F, point associé à la base (1, 4, 5), en ajoutant le vecteur 1 et en faisant sortir le
vecteur 3.
On passe de J à D, point associé à la base (1, 3, 4), en ajoutant le vecteur 1 et en faisant sortir le
vecteur 5.
Remarque On remarque que E appartient à une base réalisable car il se trouve sur la frontière
de l’ensemble des solutions. On remarque aussi que E, F, D sont des points situés sur la droite C2
d’équation x2 = 0.
ATTENTION : En échangeant de vecteurs en partant d’une base réalisable on ne retrouve pas
forcément une base réalisable. Par exemple J et F ont deux vecteurs identiques (4,5) mais F ne fait
pas partie d’une base réalisable. Il faut faire attention dans le choix des vecteurs à faire entrer et à
faire sortir.

5.3.2 Choix de la valeur entrante


On remarque aussi que G, I, H sont des points situés sur la droite x1 = 0 et on remarque aussi
que les bases de tous ces points contiennent le vecteur 2. Faire entrer le vecteur 2 dans la base à
partir de J signifie qu’on s’autorise a faire varier x2 pour des valeurs positives et pas forcément
nulles. Par contre, x1 = 0 est équivalent au fait que le vecteur 1 reste hors de la base et donc que
la variable associée reste nulle.
Pareillement, on remarque que E,F,D sont des points situés sur la droite x2 = 0 et on remarque
que les bases de tous ces points contiennent le vecteur 1. Faire entrer le vecteur 1 dans la base à
partir de J signifie qu’on s’autorise a faire varier x1 pour des valeurs positives et pas forcément
nulles. Par contre x2 = 0 est équivalent au fait que le vecteur 2 reste hors de la base et donc que la
variable associée reste nulle.
Remarque Ici, en J, on a donc le choix entre deux possibilités de variables à faire entrer ce qui
va conditionner le sens du parcours de l’enveloppe convexe.

Critère du choix Pour faire ce choix, on va faire entrer la variable dont l’augmentation va nous
faire gagner le plus. Pour déterminer cela on va utiliser les coûts réduits qui sont l’expression de la
fonction objectif dans la base et donc une droite linéaire affine dont la constante est le coût atteint.
Ici nous avons comme fonction objectif 10x1 + 6x2 . Ici il faudrait faire entrer x1 . C’est la variable
qui procure le plus d’amélioration pour une unité d’augmentation.

5.3.3 Choix de la valeur sortante


Faire rentrer une variable dans la base signifie automatiquement en faire sortir une. Car la taille
d’une base est fixe.
Par contre on va constater que faire sortir une variable ne garantit pas de rester dans l’ensemble
des bases réalisables. Il faut donc faire attention dans les choix de la variable sortante, de manière
à rester dans l’ensemble des bases réalisables.
Dans l’exemple ci-dessous, on remarque qu’une seule d’entre elle permet de rester dans une base
réalisable après l’échange.

12
Effets de la sortie d’une variable Reprenons notre point J de la base (3, 4, 5) et notre choix
de variable entrante x1 .
Pour aller de J à E (de base (1, 3, 5)). La valeur sortante ici est x4 car on passe de la base (3, 4, 5)
à la base réalisable (1, 3, 5). La base (1, 3, 5) est réalisable.
Pour aller de J à F (de base (1, 4, 5)). La valeur sortante ici est x3 car on passe de la base (3, 4, 5)
à la base (1, 4, 5). La base (1, 4, 5) est non réalisable, comme on peut le constater sur le dessin.
Pour aller de J à D (de base (1, 3, 4)). La valeur sortante ici est x5 car on passe de la base (3, 4, 5)
à la base (1, 3, 4). La base (1, 3, 4) est non réalisable, comme on peut le constater sur le dessin.

Déterminer la variable sortante Ici, la droite des abscisses correspond à x2 = 0 (on dit qu’on
sature la contrainte x2 ≥ 0 car on est sur la droite et que on a l’égalité) et on a x1 positif.
On rappelle que le but est d’essayer de faire croı̂tre le plus possible x1 de manière à faire
augmenter le gain. Mais cette augmentation n’est pas infinie, l’augmentation a lieu jusqu’à ce
qu’une des limites de l’enveloppe soit atteinte (on dit jusqu’à ce qu’une contrainte sature).
Dans notre exemple, les points (E, F, D) correspondent à la saturation des contraintes respectives
C4, C3, C5.
Quand x2 = 0. Alors C4 s’exprime par 4x1 + x4 = 36. La plus grande valeur possible de x1 est
9 quand x4 = 0. A ce moment, la contrainte C4 sature (car x4 = 0) mais aussi la contrainte C2
sature (car x2 = 0). On peut faire sortir la variable qui sature ce qui correspond à une sortie du
vecteur 4. On passe bien de (3, 4, 5) à (1, 3, 5). C’est le point E sur la figure.
Quand x2 = 0. Alors C3 s’exprime par x1 + x3 = 12. La plus grande valeur possible de x1 est
12 quand x3 = 0. A ce moment, la contrainte C3 sature (car x3 = 0) mais aussi la contrainte C2
sature (car x2 = 0). On peut faire sortir la variable qui sature ce qui correspond à une sortie du
vecteur 3. On passe bien de (3, 4, 5) à (1, 4, 5). C’est le point F sur la figure.
Quand x2 = 0. Alors C5 s’exprime par 2x1 + x5 = 44. La plus grande valeur possible de x1 est
22 quand x5 = 0. A ce moment, la contrainte C5 sature (car x5 = 0) mais aussi la contrainte C2
sature (car x2 = 0). ) On peut faire sortir la variable qui sature ce qui correspond à une sortie du
vecteur 5. On passe bien de (3, 4, 5) à (1, 3, 4). C’est le point D sur la figure.
Comme notre but est de rester dans le cadre des solutions réalisables il faut choisir parmi la
variable qui sort celle qui nous fait rester dans ce cadre.
Pour cela il faut choisir une valeur de x1 pour laquelle une variable est saturée et les autres
contraintes sont vérifiées. C’est à dire que les autres variables sont encore positives. Dans notre
exemple il s’agit du point E. Nous allons voir pourquoi.
Quand x2 = 0. C4 s’exprime par 4x1 + x4 = 36, C3 s’exprime par x1 + x3 = 12 et C5 s’exprime
par 2x1 + x5 = 44.
— Si x1 = 9. On remplace x1 par sa valeur dans C4, dans C5 et dans C3.
On obtient x4 = 0, x5 = 26 et x3 = 3. Toutes les contraintes sont vérifiées. La base est
réalisable.
— Si x1 = 12. On remplace x1 par sa valeur dans C4, dans C5 et dans C3.
On obtient x4 = −12, x5 = 20 et x3 = 0. Toutes les contraintes vérifiées. La base n’est pas
réalisable.
— Si x1 = 22. On remplace x1 par sa valeur dans C4, dans C5 et dans C3.
On obtient x4 = −52, x5 = 0 et x3 = −10. Toutes les contraintes ne sont pas vérifiées. La
base n’est pas réalisable.
Il faut donc choisir 4 comme vecteur à faire sortir.

13
6 Méthodes de résolutions basées sur une mise en oeuvre de l’al-
gorithme du simplexe
6.1 Algorithme du simplexe : présentation générale
L’algorithme procède de la façon suivante :
1. Phase I : procédure d’initialisation :
On recherche un sommet c’est-à-dire on détermine une base réalisable. Si la recherche de la
base n’est pas immédiate, il faut passer par des variables additionnelles.

2. Phase II : procédure itérative :


Si le sommet que l’on vient d’examiner n’est pas optimal, on se déplace sur un sommet voisin
pour lequel la fonction économique est améliorée tout en restant dans l’ensemble des bases
réalisables et on repasse à l’étape précédente.

Par ailleurs, il existe un test d’arrêt de l’algorithme :


— une solution optimale est déterminée(dégénérée ou non)
— il n’existe pas une solution de solution optimale finie.
— il existe une infinité de solutions optimales.
On peut l’appliquer avec différentes méthodes :
— en manipulant des vecteurs et des matrices : c’est la méthode algébrique.
— en manipulant des systèmes d’équations : c’est la méthode du dictionnaire.
— en représentant matrice et vecteurs dans des tableaux : c’est la méthode des tableaux.

6.2 Algorithme du simplexe sous forme algébrique


6.2.1 Rappels des cours
Rappels sur les bases On rappelle que A est la matrice des contraintes et b le vecteurs des
contraintes. On a définit AB la matrice issue de A qui contient tous les vecteurs de A qui sont dans
la base B. On définit AH la matrice qui contient tous les vecteurs de A qui ne sont pas dans la base
B.
On rappelle que c est le vecteur des coefficients de l’objectif et donc que cB est le vecteur issu
de B (dont les éléments sont des éléments de c dont les indices des indices des vecteurs de la base)
et cH est le vecteur dont les éléments sont des éléments de c dont les indices correspondent aux
indices des vecteurs hors de la base.

Coûts centrés réduits et détermination de la variable entrante Pour déterminer la variable


sortante et réaliser le test d’arrêt on utilise les coûts centrés réduits dont la formule est :
LH = cH − cB A−1
B AH .

Si les coefficients du vecteur des coûts centrés réduits (c’est à dire les coefficients du vecteur
LH ) sont tous strictements négatifs l’algorithme s’arrête et l’optimum a été atteint.
Si le vecteur des coûts centrés réduits contient au moins une variable positive alors on prend
comme variable entrante celle qui a le coût réduit positif le plus grand possible. Le choix de l’indice
de la variable entrante est donc :
e = arg max{(LH )j tel que (LH )j > 0} .
j

Note : pour un problème de minimisation on prendra arg min tel que (LH )j > 0.

14
Détermination de la variable sortante Pour déterminer la variable sortante (connaissant
la variable entrante). Soit e l’indice de la variable entrante, soit ȳB la solution de base et soit
Ls = A−1 e
B A alors on cherche la variable sortante par
 
ȳj
s = arg min ; (Ls )j > 0 .
j (Ls )j

6.2.2 Reprise de l’exemple et déroulement


Nous déroulons le simplexe sous forme algébrique sur l’exemple.

Au point J On suppose que notre premier point de parcours est le point J de coordonnée x1 =
0, x2 = 0 et la base est (3, 4, 5). On a
       
1 0 0 1 1 12 0  
10
AB = 0 1 0 , AH = 4 1 , b = 36 , cB = 0 , cH =
        .
6
0 0 1 2 5 44 0

Il vient      
1 0 0 1 1 12
A−1
B = 0 1 0 , A−1
B × AH = 4 1 , ȳb = A−1
B × b = 36 .
0 0 1 2 5 44
On peut donc déterminer la variable entrante :
 
 1 1  
10 10
LH = cH − cB A−1
 
B AH = − 0 0 0 × 4 1 =
  .
6 6
2 5

La variable entrante est donc e = arg max[10, 6], c’est donc la première variable qui entre (celle qui
correspond à x1 ).

On peut alors déterminer la variable sortante. On sait que A−1


B A1 est la première colonne de
A−1
B × AH soit [1, 4, 2]. Par ailleurs,

12 36 44
ȳb = [12, 36, 44] et donc ȳb /Ls = [ , , ] = [12, 9, 22]
1 4 2
l’argmin est 9 et donc la variable sortante est celle d’indice 4. La nouvelle base est donc (1, 3, 5).

Au point E La base que nous considérons maintenant (puisque nous déroulons l’algorithme du
simplexe) est (1, 3, 5) qui correspond au point E de corrdonnées (9, 0) sur le graphique. On a
       
1 1 0 1 0 12 10  
6
AB = 4 0 0 , AH = 1 1 , b = 36 , cB = 0 , cH =
        .
0
2 0 1 5 0 44 0

Il vient (après calcul)


     
0 1/4 0 1/4 1/4 9
−1 −1 −1
AB = 1 −1/4 0 , AB × AH = 3/4 −1/4 , ȳb = AB × b = 3 
    
0 −1/2 1 9/2 −1/2 26

15
On peut donc déterminer la variable entrante :
 
  1/4 1/4      
6 6 10/4 7/2
LH = cH − cB A−1
 
B AH = − 10 0 0 × 3/4 −1/4 =
  − = .
0 0 10/4 −5/2
9/2 −1/2

La variable entrante est donc e = arg max[7/2, −5/2], c’est donc la première variable qui entre (celle
qui correspond à x2 ).

On peut alors déterminer la variable sortante. On sait que A−1


B A1 est la première colonne de
−1
AB × AH soit [1/4, 3/4, 9/2]. Par ailleurs,

9 3 26
ȳb = [9, 3, 26] et donc ȳb /Ls = [ , , ] = [36, 4, 52/9]
1/4 3/4 9/2

l’argmin est 4 et donc la variable sortante est celle d’indice 3 (soit x3 ). La nouvelle base est donc
(1, 2, 5).

Au point C On suppose que notre point de parcours courant est maintenant le point C de
coordonnée x1 = 8, x2 = 4 et la base est (1, 2, 5). On a
       
1 1 0 1 0 12 10  
0
AB = 4 1 0 , AH = 0 1 , b = 36 , cB =  6  , cH = ,
0
2 5 1 0 0 44 0

Il vient (après calcul)


     
−1/3 1/3 0 −1/3 1/3 8
A−1
B =  4/3 −1/3 0 , A−1 × AH =  4/3 −1/3 , ȳb = A−1 × b = 4
B B
−6 1 1 −6 1 8

On peut donc déterminer les coûts centrés réduits :


 
  −1/3 1/3  
0 −14/3
LH = cH − cB A−1
 
B × AH = − 10 6 0 × 4/3 −1/3 =
  .
0 −4/3
−6 1

Tous les coefficients sont négatifs, l’algorithme s’arrête on a trouvé l’optimum. La valeur de
l’optimum vaut ȳb · cB c’est à dire 8 ∗ 10 + 6 ∗ 4 + 0 ∗ 8 = 104/ Cet optimum correspond à celui qu’on
a trouvé aux épisodes précédents.

6.3 Algorithme du simplexe : méthode du dictionnaire


6.3.1 Rappels du cour
On rappelle que dans la méthode du dictionnaire on exprime le système linéaire issu de la forme
standard en fonction des variables hors base. A chaque changement de base on modifie le système
pour qu’il soit à nouveau exprimé en fonction des varaibles hors base.

6.3.2 Reprise de l’exemple et déroulement


Nous déroulons le simplexe sous forme du dictionnaire sur l’exemple.

16
Au point J On suppose que notre premier point de parcours est le point J de coordonnée x1 =
0, x2 = 0 et la base est (3, 4, 5). On commence à cette étape d’initialisation à prendre pour base
(x3 , x4 , x5 ). Donc (x3 , x4 , x5 ) sont les variables en base et (x1 , x2 ) les variables hors base.

— Etape 0 : Expression des variables en base avec les variables hors base.
Le système devient : 

 max 10 · x1 +6 · x2
x3 = 12 − x1 − x2


 x4 = 36 − 4x1 − x2
x5 = 44 − 2x1 − 5x2

Les solutions de ce système sont obtenue immédiatement avec x1 = 0, x2 = 0, il vient


x3 = 12, x4 = 36 et x5 = 44.
— Etape 1 : Expression des coûts et détermination de la variable entrante
Exprimer les coûts en fonction des variables hors base donne

F (x) = 10 × x1 + 6 × x2

Cette fonction ne comporte que des termes positifs on peut l’améliorer. La variable qui a le
plus gros coefficient est x1 , c’est elle qui rentre.
— Etape 2 : Détermination de la variable sortante
Je mets toutes les variables hors base à 0 sauf x1 . J’obtiens le nouveau système

 x3 = 12 − x1
x4 = 36 − 4x1
x5 = 44 − 2x1

La valeur de x4 s’annule pour la plus petite valeur de x1 c’est elle qui faut sortir.
— Etape 3 : Echange des bases
Je reprends le système de l’étape 0. Je considère x1 dans l’équation 2 qui exprime la relation
entre x1 et x4 . Elle me donne x1 en fonction de x4 par x1 = 9 − x2 /4 − x4 /4. Je remplace
cette expression de x1 en fonction de x4 dans les autres lignes du système et j’obtiens :

 x1 = 9 − 1/4x2 − 1/4x4
x3 = 3 − 3/4x2 + 1/4x4
x5 = 26 − 9/2x2 + 1/2x4

La solution en posant x2 = 0, x4 = 0 est x1 = 9, x3 = 3 et x5 = 26.

Remarque 6.1. Si on cherche à faire le lien avec la méthode du simplexe sous forme algébrique. On
peut constater que le terme de droite du système de l’étape 0 est équivalent à l’équation matricielle
A−1 −1

B × b − A B × A H [x1 2 ] où les matrices sont données dans la section précédente (il s’agit des
, x
matrices au point J). On remarque aussi que les coefficients des termes hors base dans l’équation
de la fonction objectif sont équivalents aux termes du vecteur LH .

Au point E On se place au point x1 = 9 et x2 = 0, c’est à dire le point E. Les variables de base


sont x1 , x3 et x5 .

17
— Etape 0 : Expression des variables en base avec les variables hors base.
Le système est celui de l’étape précédente obtenu après échange.

 x1 = 9 − 1/4x2 − 1/4x4
x3 = 3 − 3/4x2 + 1/4x4
x5 = 26 − 9/2x2 + 1/2x4

Les variables de base sont x1 = 9, x3 = 3 et x5 = 26.


— Etape 1 : Expression des coûts et détermination de la variable entrante
Exprimer les coûts en fonction des variables hors base. On part de F = 10 × x1 + 6 × x2 et
on remplace x1 par la valeur exprimée en fonction de x2 et x4 . On obtient
F (x) = 10 × x1 + 6 × x2 = 10(9 − x2 /4 − x4 /4) + 6x2 = 90 + (7x2 )/2 − 5x4 /2)
Il y a une seule valeur positive x2 qui entre.
— Etape 2 : Détermination de la variable sortante
Je mets toutes les variables hors base à 0 sauf x2 dans le système de l’étape 0. J’obtiens le
nouveau système, 
 x1 = 9 − 1/4x2
x3 = 3 − 3/4x2
x5 = 26 − 9/2x2

La valeur de x3 s’annule pour la plus petite valeur de x2 (x2 = 4) c’est elle qui faut sortir.
— Etape 3 : Echange des bases
Je reprends le système de l’étape 0. Je considère x3 dans l’équation 2 qui exprime la relation
entre x2 et x3 . Elle me donne x2 en fonction de x3 par x2 = 4 − 4/3x3 + 1/3x4 . Je remplace
cette expression de x2 en fonction de x3 dans les autres lignes du système et j’obtiens :

 x1 = 8 + 1/3x3 − 1/3x4
x2 = 4 − 4/3x3 + 1/3x4
x5 = 8 + 6x3 − x4

La solution en posant x3 = 0, x4 = 0 est x1 = 8, x2 = 4 et x5 = 8.


Remarque 6.2. Si on cherche à faire le lien avec la méthode du simplexe sous forme algébrique. On
peut constater que le terme de droite du système de l’étape 0 est équivalent à l’équation matricielle
−1 −1

AB × b − AB × AH [x2 , x4 ]. On remarque aussi que les coefficients des termes hors base dans
l’équation de la fonction objectif sont équivalents aux termes du vecteur LH .

Au point C On se place au point x1 = 8 et x2 = 4, c’est à dire le point C. Les variables de base


sont x1 , x2 et x5 .

— Etape 0 : Expression des variables en base avec les variables hors base.
Le système est celui de l’étape précédente obtenu après échange.

 x1 = 8 + 1/3x3 − 1/3x4
x2 = 4 − 4/3x3 + 1/3x4
x5 = 8 + 6x3 − x4

Les variables de base sont x1 = 8,x2 = 4 et x5 = 8.


— Etape 1 : Expression des coûts et détermination de la variable entrante
Exprimer les coûts en fonction des variables hors base. On part de F = 90 + (7x2 )/2 − 5x4 /2)
et on remplace x2 par la valeur exprimée en fonction de x3 et x4 . On obtient
14 4
F (x) = 90 + 7/2 (4 − 4/3x3 + 1/3x4 ) − 5x4 /2 = 104 − x3 − x4
3 3
Les deux termes sont négatifs l’algorithme s’arrête.

18
Remarque 6.3. Ici aussi le terme  de droite du système de l’étape 0 est équivalent à l’équation
−1 −1
matricielle AB × b − AB × AH [x3 , x4 ]. On remarque aussi que les coefficients des termes hors
base dans l’équation de la fonction objectif sont équivalents aux termes du vecteur LH .

En conclusion En observant le lien entre les systèmes d’équations et les matrices nécessaire au
calcul on remarque en fait que la méthode du dictionnaire permet d’exprimer et de manipuler les
matrices dont le rôle est importante sans à avoir à calculer les matrices inverses à chaque étape
simplement en faisant des manipulations de système.

6.4 Algorithme du simplexe : méthode des tableaux


Si la méthode du dictionnaire fonctionne pour des manipulations de systèmes de petites taille
que l’on peut résoudre à la main, la transcription pour des systèmes de grande taille qui seront
manipulés sous forme numérique est effective par la méthode des tableaux que nous présentons
maintenant.

6.4.1 Rappels du cour


Construction du tableau initial On construit le tableau en copiant l’ensemble du système
linéaire. Les colonnes sont les colonnes issues de la matrice A auxquelles on rajoute une ligne celle
composée des coefficient de la fonction objectif. On ajoute une colonne qui est la colonne du vecteur
b. En dernière ligne de cette colonne on rajoute une case qu’on rempli à 0 vu que l’objectif est nul.
Cette case aura pour valeur l’objectif associé à la base actuelle.
Pour faciliter la lecture les chiffres sur la dernière colonnes seront indiqués par bj et ceux sur la
dernière ligne par fi . Les termes autres de la matrice seront indiqués par Ai,j

Détermination des variables entrantes et sortantes Déterminer la variable entrante consiste


à déterminer la colonne x d’indice e qui doit entrer dans la base. C’est celle dont le coefficient fi
est le plus élevé.
Déterminer la variable sortante celle d’indice s. On détermine l’indice s tel que (on doit la
parcourir la colonne d’indice e) le terme

bk
t.q. Ak,e > 0
Ak,e

soit le minimum parmi tous les k (avec k qui est l’indice d’une ligne). Et donc la variable sortante
est la variable de la base qui est la sème dans la base. Pour la connaitre c’est celle qui vaut 1 sur la
ligne s et dont tous les autres termes dans la colonne sont nuls.
D’un point de vue pratique, l’échange des variables se fait un prenant un pivot qui est déterminé
par sa ligne (indice de la variable qui sort) et sa colonne indice de la variable qui entre soit As,e .
On effectue un pivot (comme un pivot de Gauss) qui va transformer la colonne e en une colonne
composée de 0 sauf sur la ligne s qui sera 1.

6.4.2 Reprise de l’exemple


Etape 1 En partant du système initial, on obtient la matrice :

1 1 1 0 0 12
4 1 0 1 0 36
2 5 0 0 1 44
10 6 0 0 0 z=0

19
La base est (x3 , x4 , x5 ) ce qui correspond aux colonnes avec des 1 sur le terme diagonal et des
0 ailleurs.
La variable entrante est x1 soit celle associée à la colonne 1 car f1 est le plus grand terme sur
la dernière ligne.
La variable sortante est celle de l’indice qui atteint le minimum de
12 36 44
{ = 12, = 9, = 22, }
1 4 2
soit la deuxième variable de base c’est à dire x4 .
On va donc modifier la ligne 2.
On choisit donc comme pivot le terme A2,1 celui sur la ligne 2 colonne 1.
On modifie la matrice en conséquence.
On divise la première ligne par 4 on obtient un ligne dont le coefficient sur la prmeière colonne
est 1. Ensuite on remplace les autres lignes. Soit la ligne k avec k 6= 2. Elle est transformée de la
manière suivante
Lk ← Lk − Ak,1 ∗ L2

1−1 1 − 14 1 − 14 0 12 − 9 0 43 1 − 14 0 3
1 1
1 4 0 4 0 9 1 41 0 14 0 9
soit
2−2 5 − 24 0 2
4 1 44 − 2 ∗ 9 0 29 0 − 12 1 26
10 − 10 6 − 10
4 0 − 10
4 0 z = −10 ∗ 9 0 − 72 0 − 52 0 z = −90

20

Vous aimerez peut-être aussi