Académique Documents
Professionnel Documents
Culture Documents
Recherche Opérationnelle I
Mathématiques pour la Décision
Khalid ISKAFI
Recherche Opérationnelle I
Mathématiques pour la Décision
SOMMAIRE iii
Sommaire
Sommaire iii
1 Introduction à la programmation linéaire 1
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Un simple exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Résolution graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Formulation générale . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2 Algorithme du Simplexe 14
2.1 Principe de l'algorithme . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2 Formes canoniques d'un programme linéaire . . . . . . . . . . . . . . 16
2.3 Notion de solution de base . . . . . . . . . . . . . . . . . . . . . . . . 18
2.4 Initialisation de l'algorithme . . . . . . . . . . . . . . . . . . . . . . . 20
2.5 Une itération Simplexe . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.5.1 Choix de la direction . . . . . . . . . . . . . . . . . . . . . . . 21
2.5.2 Choix de la variable sortante . . . . . . . . . . . . . . . . . . . 22
2.5.3 Calcul du nouveau sommet . . . . . . . . . . . . . . . . . . . . 23
2.5.4 Test d'optimalité . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.5.5 Chemin suivi par l'algorithme du Simplexe . . . . . . . . . . . 27
2.6 Algorithme du Simplexe . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.7 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3 L'algorithme du Simplexe en Tableaux 30
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.2 Notion de tableau Simplexe . . . . . . . . . . . . . . . . . . . . . . . 31
3.3 Tableaux Simplexe et pivotage . . . . . . . . . . . . . . . . . . . . . . 32
3.4 Algorithme du Simplexe en tableaux . . . . . . . . . . . . . . . . . . 38
Chapitre 1
Introduction à la programmation
linéaire
1.1 Introduction
L'objectif de ce cours est double. Il s'agit, d'une part, de donner une introduction
à la formulation en modèles d'optimisation, et il s'agit d'autre part de présenter les
techniques de résolution de ces problèmes.
On parle de problème d'optimisation lorsqu'il faut maximiser ou minimiser une
fonction sous contraintes. Par exemple, maximiser le bénéce d'une entreprise sous
les contraintes de satisfaire la demande et de respecter la capacité de production.
Ce cours concerne un type précis de modèles d'optimisation ; nous nous concen-
trerons sur les problèmes linéaires et les problèmes en nombres entiers.
Nous commencerons par le cas des problèmes linéaires, c'est-à-dire les problèmes
où la fonction objectif et les contraintes sont purement linéaires. Lorsqu'il n'y a
que deux variables de décision, un problème linéaire peut être résolu de manière
purement graphique. C'est ce que nous verrons dans ce chapitre 1. Lorsqu'il y a un
plus grand nombre de variables, un algorithme mis en oeuvre sous la forme d'un
programme informatique s'avère nécessaire. Il s'agit de l'algorithme du Simplexe que
nous verrons au chapitre 2. Nous allons voir au chapitre 3 une autre façon de présenter
1
2 CHAPITRE 1. INTRODUCTION À LA PROGRAMMATION LINÉAIRE
Cette dénition permet de diérencier les variables des paramètres, qui sont des
données qui peuvent varier, par exemple d'une période à l'autre ou d'un scénario à
l'autre. Ici les quantités que le modèle doit déterminer sont les productions de chassis
par semaine. Notons donc :
Ici l'entreprise désire maximiser son prot net. La marge étant de 3 pour le premier
type de chassis et de 5 pour le second, l'objectif s'exprime comme suit :
x1 , x2 ≥ 0.
Elles peuvent être plus complexes comme les contrainte de capacité de production.
Le temps pour assembler 1 chassis de type 1 dans l'atelier 1 est de 1 heure où il reste
4 heures disponibles. D'où la contrainte de capacité de l'atelier 1 :
x1 ≤ 4.
Semblablement, on peut construire les contraintes de capacités des deux autres ate-
liers :
2x2 ≤ 12
Il est alors très utile de reprendre sous une forme condensée la formulation com-
plète du problème. Ici, on obtient la formulation suivante :
Dans le cas de l'exemple, c'est l'ensemble des points (x1 , x2 ) satisfaisant les inéga-
lités de (1.2.1).
x1 ≤ 4 (1)
2x2 ≤ 12 (2)
3x1 + 2x2 ≤ 18 (3)
x1 ≥ 0 (4)
x2 ≥ 0 (5)
x1 + x2 + x3 ≤ 1
x1 , x2 , x3 ≥ 0
1.3. RÉSOLUTION GRAPHIQUE 7
est représenté à la gure I.2 par le prisme OABC où O note l'origine des axes :
z = 3x1 + 5x2 .
z = k.
3x1 + 5x2 = k.
8 CHAPITRE 1. INTRODUCTION À LA PROGRAMMATION LINÉAIRE
Les points d'une de ces droites sont donc le lieu de tous les points donnant la même
valeur du prot (d'où le nom de droite d'isovaleur de la fonction objectif). Ceci est
fait à la gure I.3 où l'on a représenté z = 10, 20 et 36.
Pour maximiser l'objectif, il faut prendre la droite d'isovaleur de l'objectif qui touche
encore la région réalisable et qui donne la plus grande valeur à l'objectif.
Sur base de cet exemple, on tire une deuxième observation :
Observation 2 :
On constate que la solution optimale est à un sommet de la région réalisable.
On peut alors se demander si la solution optimale sera toujours à un sommet de
la région réalisable. En fait, lorsque la ligne d'iso-marge est parallèle à un côté du
polygone, on a que tout le côté du polygone est optimal. Par exemple, si l'objectif
avait été z = 3x1 + 2x2 , tout le segment entre (2, 6) et (4, 3) aurait été optimum.
Observation 3 :
Même si tout un côté du polygone est optimal, on peut toujours choisir une solution
optimale correspondant à un sommet.
En conclusion, on peut voir qu'il sut d'évaluer la valeur de l'objectif en chacun
des sommets pour déterminer l'optimum d'un problème linéaire.
Mais on peut aller plus loin encore pour limiter le nombre de sommets à examiner
en se basant sur la quatrième observation suivante.
Observation 4 :
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 :
Nous allons voir au chapitre suivant comment généraliser cet algorithme au cas
de Rn : on obtient alors l'algorithme du Simplexe. Mais avant cela, généralisons la
notion de côté et de sommet et voyons la formulation générale d'un problème linéaire.
ressource i consommée pour produire une unité de produit j . Les données numériques
du problème sont résumées au tableau 1.2.
max z = c1 x1 + c2 x2 + . . . + cn xn ,
a11 x1 + a12 x2 . . . + a1n xn ≤ b1 ,
a21 x1 + a22 x2 . . . + a2n xn ≤ b2 ,
.. .. .. ..
. . . .
a x + a x ... + a x ≤ b ,
s.c.q.
m1 1 m2 2 mn n m
x1 ≥ 0,
x2 ≥ 0,
.
..
xn ≥ 0.
max z = cT x,
(
Ax ≤ b,
s.c.q. (1.4.1)
x ≥ 0.
A matrice (m × n), b vecteur (m × 1)
avec .
c vecteur (n × 1), x vecteur (n × 1)
Dénition 1.4.1. Tout point x vériant les contraintes de (1.4.1) est dit une solution
réalisable pour le problème linéaire.
S = {x ∈ Rn | Ax ≤ b, x ≥ 0}.
Parmi ces solutions réalisables, celles qui maximisent l'objectif sont appelées so-
lutions optimales.
Dénition 1.4.2. Tout point x∗ ∈ S et tel que
∀x ∈ S, cT x∗ ≥ cT x,
1.5 Exercices
Exercice 1
Résoudre le problèmes suivant en utilisant la méthode graphique
Exercice 2
Résoudre le problème suivant en utilisant la méthode graphique
Algorithme du Simplexe
14
2.1. PRINCIPE DE L'ALGORITHME 15
Nous allons maintenant voir comment eectuer ces mêmes opérations en utilisant
uniquement l'algèbre. C'est l'objet de l'algorithme du Simplexe.
16 CHAPITRE 2. ALGORITHME DU SIMPLEXE
La forme canonique d'un programme linéaire dans l'espace des variables originales
avait été vue au chapitre 1. Elle correspond à la forme matricielle suivante :
max z = cT x,
(
Ax ≤ b,
s.c.q.
x ≥0
A matrice (m × n), b vecteur (m × 1)
avec
c vecteur (n × 1), x vecteur (n × 1).
Il s'agit d'un problème avec n variables et m+n contraintes d'inégalité. Cependant,
parmi ces dernières , il y a m contraintes qui peuvent être des contraintes d'inégalité
générales et n qui ne sont que des contraintes de positivité des variables.
Observons qu'il est toujours possible de transformer une contrainte d'inégalité
générale en une contrainte d'égalité par ajout d'une variable à laquelle on impose
d'être non négative. Considérons, par exemple, la contrainte
Imposer que le membre de gauche soit inférieur ou égal au membre de droite, revient
à dire qu'il faudrait ajouter une quantité non négative au membre de gauche pour
qu'il y ait égalité :
3x1 + 2x2 + x3 = 18,
x3 ≥ 0.
Cette quantité représente un décit ou un écart. Comme cet écart peut varier, on
l'appelle variable d'écart.
2.2. FORMES CANONIQUES D'UN PROGRAMME LINÉAIRE 17
Dénition 2.2.1. La variable d'écart est la quantité qui, ajoutée au membre de gauche
d'une contrainte, permet de transformer la contrainte en égalité.
Bien que dans la forme canonique on ne considère que des contraintes d'inégali-
tés générales du type inférieur ou égal, on peut aussi envisager de transformer des
contraintes générales du type supérieur ou égal en égalité. Lorsqu'on impose
2x1 + x2 ≥ 4,
2x1 + x2 − x3 = 4,
avec x3 ≥ 0.
Appliquons ceci au problème (2.1.1). On obtient le problème sous forme standard
avec égalités suivant :
Remarquons qu'il y a équivalence totale entre les deux formes. En eet, d'une
part, toute solution réalisable du problème (2.1.1) peut être augmentée en une solution
réalisable pour le problème (2.2.1). Toute solution réalisable du problème (2.2.1) peut
être tronquée en une solution réalisable pour le problème (2.1.1). Comme, d'autre part,
les fonctions objectifs sont identiques, on a bien équivalence entre les deux problèmes.
Illustrons cette correspondance entre solutions : à la solution (3, 2) du problème
(2.1.1) correspond la solution augmentée (3, 2, 1, 8, 5) du problème (2.2.1). Dans l'autre
18 CHAPITRE 2. ALGORITHME DU SIMPLEXE
sens, il sut de tronquer la solution dans R5 en ne retenant que ses deux premières
composantes.
les deux variables x1 et x2 peuvent être xées à zéro. On dit qu'elles sont mises hors
base.
Dénition 2.3.1. On appelle variables hors base (v.h.b.) les n variables de Rn+m
xées à zéro. Les m variables restantes sont appelées variables de base (v.b.).
Dans l'exemple, les variables de base sont donc x3 , x4 et x5 dont on peut lire la
valeur dans (2.3.1) :
x3 = 4
x4 = 12
x5 = 18.
Dénition 2.3.2. On appelle solution de base une solution où en ayant choisi n
variables hors base, on obtient une solution unique en résolvant les m contraintes
d'égalités obtenues en ajoutant les variables d'écart.
Dénition 2.3.3. On appelle solution de base réalisable une solution de base qui, en
plus, vérie les contraintes de positivité.
Dans l'exemple, la solution de base suivante :
x1 = 0, variables hors base
x2 = 0
x3 = 4, x4 = 12, x5 = 18 variables de base
2.3. NOTION DE SOLUTION DE BASE 19
On peut vérier cette propriété sur l'exemple. A la gure II.1, les sommets (0, 0),
(0, 6), (2, 6), (4, 3), (4, 0) correspondent à des solutions de base réalisables tandis que
les points (0, 9), (4, 6) et (6, 0) correspondent à des solutions de base non réalisables.
Cette correspondance est établie au tableau II.1 :
Nous avons déjà annoncé que l'algorithme du Simplexe consiste à aller de sommet
en sommet adjacent. Interprété algébriquement, cela revient à considérer un passage
d'une solution de base réalisable à une autre solution de base réalisable. La notion
d'adjacence doit être étendue aux solutions de base.
Dénition 2.3.4. On appelle solutions de base adjacentes deux solutions de base dont
les variables de base sont les mêmes sauf une qui est de base dans la première base et
hors base dans la seconde.
20 CHAPITRE 2. ALGORITHME DU SIMPLEXE
x1 = 0, x1 = 0,
x2 = 0, x2 = 6,
x3 = 4, x3 = 4,
x4 = 12, x4 = 0,
x5 = 18, x5 =6
car elles ne dièrent que par une seule variable hors base. Par contre les solutions
suivantes :
x1 = 0, x1 = 2,
x2 = 0, x2 =6
ne sont pas adjacentes puisqu'elle dièrent par plus d'une variable hors base. On peut
le vérier à la gure II.1.
En termes algébriques, toutes les variables originales sont mises hors base. Automa-
tiquement, dans le système d'égalités :
x1 +x3 = 4
2x2 +x4 = 12
3x +2x +x5 = 18,
1 2
2.5. UNE ITÉRATION SIMPLEXE 21
x3 = 4
x4 = 12
x5 = 18.
Remarquons que si un membre de droite avait été négatif ou si une contrainte avait
été sous forme d'égalité, on n'aurait pas pu démarrer ainsi. Ces embûches peuvent
être levées en passant par une phase préliminaire appelée phase I de l'algorithme du
Simplexe (voir chapitre 4).
Que vaut la fonction objectif pour cette première solution de base ?
z = 3x1 + 5x2 = 3 × 0 + 5 × 0 = 0,
c'est-à-dire une marge bénéciaire nulle, ce qui n'est pas étonnant vu que cela corres-
pond à une production nulle des deux produits.
La question qui se pose est alors : comment choisir la direction ? Remarquez qu'al-
gébriquement, cette question se formule de manière équivalente par : quelle variable
hors base va entrer en base ?
22 CHAPITRE 2. ALGORITHME DU SIMPLEXE
z = 3x1 + 5x2 .
ou encore :
12
x2 ≤ =6
2
18
x2 ≤ = 9.
2
On en conclut que la variable sortante est x4 , c'est-à-dire la première qui s'annule
(pour x2 = 6).
De manière générale, on calcul le minimum du rapport du coecient du membre
de droite sur le coecient de la variable entrante dans la même ligne lorsque celui-
ci est positif. La variable sortante est celle dont on lit la valeur dans la ligne où ce
minimum se produit.
z −3x1 + 25 x4 = 30 (00 )
x1 +x3 = 4 (1)
x2 + 12 x4 = 6 (20 )
3x1 −x4 +x5 = 6 (30 )
où l'on peut lire directement (en se souvenant que x1 et x4 sont hors base donc nulles) :
z = 30
x3 = 4
x2 = 6
x5 = 6.
(x1 , x2 , x3 , x4 , x5 ) = (0, 6, 4, 0, 6)
z = 30.
2.5. UNE ITÉRATION SIMPLEXE 25
Remarquez que les opérations d'élimination de x2 des lignes autres que la deuxième
se font obligatoirement en retranchant à chacune de ces lignes un multiple de la
deuxième ligne. Toute autre opération détruirait les colonnes de la matrice identité
dans le système résultant comme on peut le constater en essayant, par exemple, de
faire :
(30 ) = −1 × (3) + (2).
5
z = 30 + 3x1 − x4 .
2
5
z = 30 + 3x1 − x4 .
2
x3 = 4 − x1
x2 = 6
x5 = 6 − 3x1 .
La variable sortante est x5 , c'est elle qui est la première à s'annuler (pour x1 = 2).
Pour calculer le nouveau sommet, on exprime le système en fonction des nouvelles
variables de base (x1 prend la place de x5 ) :
z + 32 x4 +x5 = 36
x3 + 13 x4 − 31 x5 = 2
x2 + 12 x4 = 6
x1 − 13 x4 + 13 x5 = 2.
Donnant la nouvelle solution de base réalisable :
(2, 6, 2, 0, 0).
x∗1 = 2
x∗2 = 6
z ∗ = 36.
Nous verrons au chapitre suivant une autre façon de présenter les mêmes calculs. Il
s'agit de la présentation du Simplexe en tableaux.
2.6. ALGORITHME DU SIMPLEXE 27
Pas 0. Initialisations.
• Ajouter les variables d'écart.
• Sélectionner les variables originales comme variables hors base.
2.7 Exercices
Exercice 1
Problème à deux variables
Résoudre les problèmes suivants en utilisant l'algorithme du Simplexe :
Exercice 2
Problème à trois variables
Résoudre le problème suivant en utilisant l'algorithme du Simplexe :
L'algorithme du Simplexe en
Tableaux
3.1 Introduction
30
3.2. NOTION DE TABLEAU SIMPLEXE 31
On eectue généralement les calculs sur le tableau des coecients qui porte le
nom de tableau Simplexe. Mais il faut bien garder à l'esprit que ce tableau et les
opérations que l'on va y eectuer ne sont qu'une traduction des opérations sur le
système d'équations algébriques correspondantes.
Dénition 3.2.1. Un tableau Simplexe est constitué des coecients des équations
algébriques sans le nom des variables. On aura donc :
1. les coecients de la fonction objectif ;
2. les coecients des variables dans le membre de gauche des contraintes ;
3. les coecients du membre de droite
où l'on sépare les coecients de l'objectif des contraintes d'une barre horizontale et
les coecients du membre de gauche des contraintes des coecients du membre de
droite par une barre verticale.
Le système de départ :
z −3x1 −5x2 = 0
x1 +x3 = 4
2x2 +x4 = 12
3x1 +2x2 +x5 = 18
32 CHAPITRE 3. L'ALGORITHME DU SIMPLEXE EN TABLEAUX
z x1 x2 x 3 x 4 x5
1 −3 −5 0 0 0 0
0 1 0 1 0 0 4
0 0 2 0 1 0 12
0 3 2 0 0 1 18
où l'on a ajouté audessus du tableau le nom des variables pour voir à quelle variable
correspond chaque colonne du tableau.
Plusieurs caractéristiques d'un tableau sont à remarquer.
• Tout d'abord les valeurs du membre de droite donnent les valeurs courantes des
variables de base.
• Ensuite la première ligne donne l'opposé des coecients objectif.
• Enn, le dernier coecient dans la première ligne donne la valeur courante de
l'objectif.
• On identie les variables de base à une colonne de coecient de la matrice
identité et à un coecient objectif nul.
On en déduit la solution courante :
z x1 x2 x3 x4 x5
1 −3 −5 0 0 0 0
0 1 0 1 0 0 4
0 0 2 0 1 0 12
0 3 2 0 0 1 18
Dans le cas où le coecient dans la colonne entrante est négatif ou nul, la ligne n'entre
pas en compte dans le calcul du minimum. Illustrons ceci sur un exemple. Supposons
que le coecient de x2 dans la première contrainte soit −1 à la place de 0. L'équation
correspondante se récrit de manière équivalente comme suit :
x1 = 4 + x2 .
ligne pivot :
z x1 x2 x3 x4 x5
1 −3 −5 0 0 0 0
0 1 0 1 0 0 4
0 0 2 0 1 0 12
0 3 2 0 0 1 18
C'est donc le centre de la croix ainsi formée par la ligne et la colonne pivot.
Le pas suivant de l'itération Simplexe consiste à déterminer le nouveau sommet :
ceci en exprimant x2 dans la deuxième équation en lieu et place de x4 . Remarquez
que cela revient à amener la colonne de x4 en lieu et place de celle de x2 . Ceci peut
être fait par deux types d'opérations :
1. Amener un coecient 1 à la place du pivot en divisant la ligne pivot par le
pivot :
z x1 x2 x 3 x4 x5
1 −3 −5 0 0 0 0
0 1 0 1 0 0 4
0 0 1 0 1/2 0 6
0 3 2 0 0 1 18
2. Eliminer x2 des autres équations en retranchant chaque fois un multiple de la
nouvelle ligne pivot :
z x1 x2 x3 x4 x5
1 −3 0 0 5/2 0 30
0 1 0 1 0 0 4
0 0 1 0 1/2 0 6
0 3 0 0 −1 1 6
3.3. TABLEAUX SIMPLEXE ET PIVOTAGE 35
Rappelons que l'on doit utiliser, dans cette seconde opération, un multiple de la ligne
pivot à l'exclusion de toute autre ligne sinon on détruirait la matrice identité.
La nouvelle solution de base et la nouvelle valeur de l'objectif sont respectivement :
(x1 , x2 , x3 , x4 , x5 ) = (0, 6, 4, 0, 6)
z = 30.
z x 1 x2 x3 x4 x5
1 −3 0 0 5/2 0 30
0 1 0 1 0 0 4
0 0 1 0 1/2 0 6
0 3 0 0 −1 1 6
z x 1 x2 x3 x4 x5
1 −3 0 0 5/2 0 30
0 1 0 1 0 0 4
0 0 1 0 1/2 0 6
0 3 0 0 −1 1 6
36 CHAPITRE 3. L'ALGORITHME DU SIMPLEXE EN TABLEAUX
(x1 , x2 , x3 , x4 , x5 ) = (2, 6, 2, 0, 0)
z = 36.
x∗1 = 2
x∗2 = 6
z ∗ = 36.
Le chemin suivi par l'algorithme du Simplexe est illustré à la gure II.1. Initiale-
ment, on part de l'origine des axes, soit le point P0 = (0, 0). Au cours de
3.3. TABLEAUX SIMPLEXE ET PIVOTAGE 37
Nous verrons au chapitre suivant les embûches que l'on peut rencontrer dans
l'exécution de l'algorithme du Simplexe. En eet, nous avons ici supposé que l'on
pouvait toujours trouver une solution de base de départ réalisable et qu'à chaque
itération, il y avait toujours une variable sortante de la base. Nous verrons au chapitre
suivant comment on peut démarrer l'algorithme si toutes les contraintes initiales ne
se présentent pas sous forme de contraintes d'inégalités du type "inférieur ou égal à"
avec un membre de droite positif. Nous examinerons également ce qu'il convient de
faire si on ne trouve aucune variable candidate à sortir de la base.
Algorithme du Simplexe.
Pas 0. Initialisation : Pour démarrer l'algorithme,
1. Ajouter les variables d'écart aux contraintes d'inégalité.
2. Mettre les variables originales hors base et les variables d'écart en base.
xj = 0, ∀j = 1, . . . , n.
Si une telle variable n'existe pas, stop : on a trouvé la solution optimale. Sinon, on
entoure la colonne correspondante qui est appelée colonne entrante.
z x1 x2 ··· xe ··· xn xn+1 xn+2 . . . xn+m
1 −c1 −c2 · · · ce · · · −cn 0 0 0 0
0 a11 a12 · · · a1e · · · a1n 1 0 ··· 0 b1
0 a21 a22 · · · a2e · · · a2n 0 1 ··· 0 b2
.. .. .. ... .. ... .. .. .. ... .. ..
. . . . . . . . .
0 an1 an2 · · · ane · · · ann 0 0 ··· 1 bn
3.4. ALGORITHME DU SIMPLEXE EN TABLEAUX 39