Académique Documents
Professionnel Documents
Culture Documents
Recherche Opérationnelle S7
Chapitre : 2
Algorithme du simplexe
Année universitaire :
2022 - 2023
1
1 Algorithme du simplexe.
1.1 Définitions.
Lorsqu’on considère un programme linéaire ayant plus de deux variables, la résolution graphique
devient difficile, mais les propriétés restent les mêmes. L’algorithme du simplex (G. B. Dantzig 1947) est
un algorithme récursif qui permet théoriquement de résoudre un problème de programmation linéaire
d’un nombre quelconque de variables.
Il existe de nombreuses variantes de cet algorithme, comme l’algorithme du simplexe sous forme al-
gébrique, l’algorithme du simplexe sous forme matricielle et l’algorithme du simplexe sous forme des
tableaux, dans ce cours, nous utiliserons la variante tabulaire.
Définition 1.1.
On appelle forme standard d’un programme linéaire P , tout système d’équations linéaires
(contraintes), conditionné par la maximisation d’une fonction linéaire de n variables x1 , x2 , x3 ... et xn ,
toutes positives :
M ax (z) = c1 x1 + c2 x2 + . . . + cn xn
a11 x1 + a12 x2 + . . . + a1n xn ± e1 = b1
a21 x1 + a22 x2 + . . . + a2n xn ± e2 = b2
..................................................
..................................................
am1 x1 + am2 x2 + . . . + amn xn ± em = bm
x ≥ 0, ∀ 1 ≤ i ≤ n et e ≥ 0, ∀ 1 ≤ j ≤ m.
i j
Où ci , bj et aij sont des nombres réels avec 1 ≤ i ≤ n et 1 ≤ j ≤ m. Les variables ej sont appelées
variables d’écart.
Proposition 1.1.
Tout programme linéaire peut être mis sous forme standard.
Exemple 1.1.
Soit le programme linéaire suivant :
M ax (z) = 6x1 − x2 + 9x3
−x1 + 2x2 + x3 ≥ 3
3x1 − x2 ≤ 1
x1 + x2 − x3 ≥ 5
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0
Ce programme linéaire n’est pas en forme standard, transformons le sous cette forme :
L’inéquation −x1 + 2x2 + x3 ≥ 3 devient −x1 + 2x2 + x3 − e1 = 3, en retranchant la variable d’écart e1 .
L’inéquation 3x1 − x2 ≤ 1 devient 3x1 − x2 + e2 = 1, en ajoutant la variable d’écart e2 .
L’inéquation x1 + x2 − x3 ≥ 5 devient x1 + x2 − x3 − e3 = 5, en retranchant la variable d’écart e3 .
Finalement, voici la forme standard du programme linéaire précédent :
M ax (z) = 6x1 − x2 + 9x3
−x1 + 2x2 + x3 − e1 = 3
3x1 − x2 + e2 = 1
x1 + x2 − x3 − e3 = 5
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, e1 ≥ 0, e2 ≥ 0, e3 ≥ 0
variables d’écart, à fin de construire un tableau initial, ce tableau contient dans sa première ligne toutes
les variables (variables de décision et variables d’écart) ou les variables de décision sont considérées
comme variables hors base, tandis que la première colonne contient les variables d’écart qui sont
considérées comme variables de base VB.
Deuxième étape. Détermination de la variable entrante dans la base. Nous choisissons au départ
comme solution de base admissible, le sommet où les variables de décision xi sont nulles et les
variables d’écart ej sont égales aux membres de droite bj .
Pour un problème de maximisation, si tous les coefficients ci de la fonctin objectif z sont négatifs ou
nuls, alors on s’arrête, car la solution courante est optimale ;
Sinon, c’est-à-dire, si ∃ 1 ≤ i ≤ n : ci > 0, donc le critère de sélection d’une variable hors base pour
la faire entrer en base, dans un problème de maximisation, c’est de choisir la variable hors base qui a
le plus grand coefficient strictement positif ci dans la fonctin objectif z (la dernière ligne du tableau),
donc il faut faire entrer comme variable de base, celle dont le coefficient cs = maxi ci . La colonne où il
existe le plus grand coefficient strictement positif cs = maxi ci de la fonction objectif, s’appelle colonne
pivot, c’est sur cette colonne où se trouve la variable entrante V.E.
Pour un problème de minimisation, on choisit la variable hors base qui a le plus petit coefficient stric-
tement positif ci dans la fonctin objectif z, donc il faut faire entrer comme variable de base, celle dont
le coefficient cs = mini ci .
k est l’indice de la ligne correspondante. La ligne où le minimum de ce rapport est atteint est appelée
la ligne pivot, c’est sur cette ligne où se trouve la variable sortante V.S.
Si ∀k : aks ≤ 0, alors la solution est non bornée.
Le pivot est l’intersection entre la colonne pivot et la ligne pivot.
Teste d’arrêt.
Pour un problème de maximisation, on s’arrêt lorsque tous les coefficients de la fonction objectif (la
dernière ligne du tableau) sont tous inférieurs ou égaux à zéro, c’est-à-dire, si ∀ 1 ≤ i ≤ n + m : ci ≤ 0.
Le tableau final est appelé tableau optimal.
Pour un problème de minimisation, on s’arrêt lorsque tous les coefficients de la fonction objectif sont
tous supérieurs ou égaux à zéro, c’est-à-dire, si ∀ 1 ≤ i ≤ n + m : ci ≥ 0.
Exemple 2.1.
Un atelier fabrique trois modèles d’armoires en bois : modèle 1, modèle 2 et modèle 3.
Le tableau suivant récapitule les informations sur cette opération :
modèle 1 modèle 2 modèle 3 disponibilité
Bois 5 8 5 900
Main d’oeuvre 1 2 3 516
Finition 2 2 0 200
Profit unitaire (dh) 1000 960 1200
Tableau initial T1 .
On construit le tableau initial, à partir de la forme standard précédente.
Nous partons de (x1 , x2 , x3 , e1 , e2 , e3 ) = (0, 0, 0, 900, 516, 200) comme solution de base admissible.
VB\ Variables x1 x2 ↓ x3 e1 e2 e3 b
e1 5 8 5 1 0 0 900
← e2 1 2 3 0 1 0 516
e3 2 2 0 0 0 1 200
z 1000 960 1200 0 0 0 0
Puisque les coefficients dans la dernière ligne du tableau T3 sont tous inférieurs ou égal à zéro, donc
le critère d’optimalité est vérifié et nous devons nous arrêter ici. Le tableau T3 est le tableau optimal
(final).
La solution optimale de ce programme linéaire est (x1 , x2 , x3 ) = (12, 0, 168). Donc, pour réaliser un
profit maximum égal à max(z) = 213600Dh, l’entreprise doit fabriquer 12 unités du modèle 1, zero
unités du modèle 2 et 168 unités du modèle 3. Puisque dans ce tableau final, on a pour les variables
d’écart (e1 , e2 , e3 ) = (0, 0, 176), c’est-à-dire que toute la disponibilité (ressources) du bois (en Kg) et du
main d’oeuvre (en unité du temps) a été utilisée en totalité, alors que la disponibilité de finition n’a pas
été utilisée en totalité, car la variable d’écart e3 = 176, il rest encore 176 unités du temps de finition,
non exploitées.
Exemple 2.2.
Un potier fabrique des pots en argile de type standard ou de type luxe. Il peut vendre 300 unités du
modèle de luxe et 400 unités du modèle standard. L’argile disponible est suffisante pour fabriquer an-
nuellement 500 pots quel que soit le type. De plus, le temps de fabrication d’un pot de luxe est double
de celui d’un pot standard. La capacité de fabrication annuelle est telle que, si tous les les pots fabriqués
sont de type standard, on pourrait en fabriquer 700 au maximum. La vente d’un pot de luxe génère un
bénéfice égal à 7 DH, celui d’un pot de type standard génère un bénéfice égal à 5 DH.
Quel est le programme de production annuel menant au profit maximum ?
Modélisons ce problème en un PL :
1. Les variables de décisions sont :
x1 : : le nombre de pots de type de luxe à fabriquer.
x2 : le nombre de pots de type standard à fabriquer.
2. Les contraintes du problème sont :
Contraintes techniques :
x1 + x2 ≤ 500.
2x1 + x2 ≤ 700.
x1 ≤ 300.
x2 ≤ 400.
Contraintes de positivité :
x1 ≥ 0.
x2 ≥ 0.
3. La fonction objectif :
Dans ce problème on cherche à savoir combien doit-on produire annuellement de pots de type
de luxe et de type standard, pour avoir un profit total maximum ? Donc la fonction objectif à
maximiser est le profit z = 7x1 + 5x2 .
Finalement, le programme linéaire résultant est :
M ax (z) = 7x1 + 5x2
x1 + x2 ≤ 500
2x1 + x2 ≤ 700
x1 ≤ 300
x2 ≤ 400
x1 ≥ 0
x2 ≥ 0
Exemple 2.3.
M ax (z) = 5x1 + 3x2
4x1 + 2x2 ≤ 8
x1 ≥ 4
x2 ≥ 6
x1 ≥ 0
x2 ≥ 0
Exemple 2.4.
M ax (z) = 4x1 + 2x2
4x1 + 2x2 ≤ 8
x1 ≥ 4
x2 ≤ 2
x1 ≥ 0
x2 ≥ 0
Exemple 2.5.
M ax (z) = 40x1 + 30x2
x1 + 2x2 ≤ 40
4x1 + 3x2 ≤ 120
x1 ≥ 0
x2 ≥ 0