Recherche Opérationnelle - New2
Recherche Opérationnelle - New2
Recherche Opérationnelle - New2
1
Histoire de la Recherche Opérationnelle
Née pendant la seconde guerre mondiale avec la constitution d’équipes de
chercheurs en vue d’étudier les problèmes stratégiques et tactiques dans les
opérations militaires
L’objectif étant de trouver la meilleure allocation des ressources militaires
limitées à travers l’usage de techniques quantitatives
Premier succès obtenu en 1940 par le Prix Nobel de physique Patrick Blackett qui
résolut un problème d’implantation de radars de surveillance
A partir des années 1950, la recherche opérationnelle fait son entrée dans les
entreprises. Ces dernières créent à cette époque des services de recherche
opérationnelle. La discipline comme à être enseignée dans les universités et les
grandes écoles
2
Histoire de la Recherche Opérationnelle
Au milieu des années 70, sans doute à cause d’un excès
d’enthousiasme au départ et de l’inadéquation des moyens
informatiques à l’application des méthodes de la recherche
opérationnelle (RO), la discipline n’a pas été à la hauteur des attentes
A partir du milieu des années 90, on assiste à un retour en force de la
RO, les outils informatiques étant maintenant à la hauteur des
méthodes proposées par la RO
On assiste depuis à une explosion du nombre de logiciels
commerciaux et d’applications dans divers domaines
3
Présentation de la Recherche Opérationnelle
La recherche opérationnelle (RO) est la discipline des mathématiques appliquées
qui traite des cas d’utilisation optimale des ressources.
Depuis une dizaine d’années, le champ d’application de la RO s’est élargi à des
domaines comme l’économie, la finance, le marketing et la planification
d’entreprise
Plus récemment, la RO a été utilisée pour la gestion des systèmes de santé et
d’éducation pour la résolution de problèmes environnementaux et dans d’autres
domaines d’interet publics
4
Présentation de la Recherche Opérationnelle
Dans l’expression « recherche opérationnelle », il y a recherche et il y a opération
Recherche (en référence à une approche scientifique) est composée de:
Analyse des besoins, collection des données
Construction d’un modèle mathématique
Résolutions, conception d’une méthode pour calculer la solution
Validation, expérimentation pour tester l’adéquation de la solution au modèle, ajustements
Opération : ensemble de moyens à employer afin d’obtenir un résultat
Recherche opérationnelle: comment organiser les opérations (production, transport,
construction, communication, planification, santé, militaire, …) d’une organisation
d’une manière optimale
5
Définition de la Recherche Opérationnelle
La recherche opérationnelle ou la science de la décision est la discipline des
méthodes scientifiques utilisables pour élaborer de meilleures décisions
Elle peut être définie comme l’ensemble des méthodes et techniques orientées
vers la recherche du meilleur choix dans la façon d’opérer en vue d’aboutir au
résultat visé ou au meilleur résultat possible
La RO traduit des énoncés ou des cahiers de charge liés à des problématiques
spécifiques sous forme de méthodes et des démarches à base d’équations
mathématiques, des algorithmes et des outils statistiques
La compétence à développer (en RO) est de: apprendre à modéliser
mathématiquement un problème, et d’utiliser les outils disponibles pour le
résoudre.
6
Introduction programmation linéaire
La programmation linéaire (PL) est l’une des plus importantes techniques
d’optimisation utilisées en recherche opérationnelle. Ceci est du à la facilité de la
modélisation et l’efficacité des algorithmes développés en programmation
linéaire.
L’objectif de la PL est de déterminer de façon optimale l’utilisation des ressources
Les situations économiques demandent souvent qu’on optimise une fonction sous
plusieurs contraintes
L'importance de l’optimisation et la nécessité d’un outil simple pour modéliser
des problèmes de décision ont fait de la PL un des champs de recherche les plus
actifs au milieu du siècle précèdent
7
Définition programmation linéaire
La programmation linéaire est une branche des mathématiques appliquées et plus
précisément de l’optimisation dont l’objectif est de minimiser ou de maximiser
une fonction numérique à plusieurs variables sachant que ces dernières sont liées
par des relations appelées contraintes
Le principe de la PL est fondé sur le fait que:
La fonction à optimiser appelée fonction objectif ou fonction économique a une expression
linéaire
Les expressions des contraintes sont toutes linéaires
8
Composantes d’un programme linéaire et exemple
Soit une usine qui produit deux ciments rapportant 50 $ et 70 $ la tonne. Pour
fabriquer une tonne de ciment 1, il faut 40 min de calcination dans un four et 20 min
de broyage. Pour fabriquer une tonne de ciment 2, il faut 30 min de four et 30 min
de broyage. Le four et l’atelier de broyage sont disponibles 6 h et 8 h par jour.
Combien de ciment de chaque type peut-on produire par jour pour maximiser le
bénéfice ? Ce problème se modélise par le programme linéaire (PL) suivant, en
notant x1 et x2 les quantités de ciment à fabriquer.
(1) Max z = 50x1 + 70x2
(2) 40x1 + 30x2 ≤ 360
(3) 20x1 + 30x2 ≤ 480
(4) x1, x2 ≥ 0
9
Composantes d’un programme linéaire et exemple
La ligne (1) représente le profit total z qui est le critère à optimiser, appelé aussi
fonction objectif (nom composé), fonction de coût ou fonction économique. Max
signifie que ce critère doit être maximisé ; on écrirait Min pour minimiser. Les
autres lignes désignent des contraintes. La contrainte (2) concerne la disponibilité
du four : elle stipule que le temps total de calcination requis par les ciments ne doit
pas dépasser 360 min ou 6 h. La contrainte (3) décrit de même la disponibilité du
broyeur. Les contraintes (4) précisent les domaines des variables.
10
Forme générale d’un programme linéaire et
extensions
Plus généralement, on appelle programme mathématique un problème
d’optimisation d’une fonction-objectif de plusieurs variables en présence de
contraintes. Le programme est dit linéaire si la fonction et les contraintes sont toutes
des combinaisons linéaires de variables. Il a la forme générique suivante. Il
comporte n variables non négatives (3), m contraintes d’égalité ou d’inégalité (2), et
la fonction-objectif à optimiser (1). Le coefficient de coût ou de profit de la variable
xj est noté cj, celui de la variable xj dans la contrainte i est noté aij. La contrainte i a
un second membre constant bi. Les contraintes simples de positivité ne sont pas
incluses dans les m contraintes, car elles sont gérées à part par les algorithmes.
(1) Max ou Min z =
(2)∀ i = 1 … m : ≤ , = ou ≥ bi
(3) ∀ j= 1 … n: xj ≥ 0
11
Forme générale d’un programme linéaire et
extensions
Des valeurs de variables qui vérifient toutes les contraintes, comme x1 = 4 et x2 =
2 dans l’exemple des ciments, forment une solution réalisable (SR) du PL. Une
solution réalisable est optimale si aucune autre solution n’a un profit supérieur.
Si les variables sont astreintes à être entières, on obtient un programme linéaire en
nombres entiers (PLNE).
Un programme linéaire en 0-1 est un cas particulier de PLNE dont les variables
ne peuvent prendre que deux valeurs 0-1 ; ces variables sont dites booléennes,
binaires ou de décision.
Un PL mixte comprend à la fois des variables continues et des variables entières.
Enfin, à partir du moment où au moins une contrainte ou la fonction objectif n’est
plus une combinaison linéaire de variables, on a affaire à un programme non
linéaire (PNL).
12
Formes matricielles classiques et conversions
Notons x = (x1, x2, ... , xn)T le vecteur des variables, b = (b1, b2, ... , bm)T celui des
seconds membres des contraintes, c = (c1, c2, ... , cn) les coûts ou profits associés
aux variables, et A la matrice m × n des aij
On peut alors écrire un PL sous forme matricielle. Deux formes sont courantes : la
forme canonique avec des contraintes ≤, utilisée pour la résolution graphique, et la
forme standard avec égalités, pour la résolution algébrique par des algorithmes.
Par convention, la forme standard est souvent exprimée avec des seconds
membres positifs.
Forme canonique Forme standard
Max c.x Max c.x
A.x ≤ b A.x = b
x≥0 x≥0
13
Formes matricielles classiques et conversions
Ces formes ne servent qu’à simplifier les présentations théoriques. Dans la réalité,
un PL peut présenter des égalités et des inégalités, et les logiciels du marché
acceptent heureusement ces mélanges. On peut facilement convertir les formes
mixtes en formes classiques. Ainsi, toute contrainte d’égalité peut être remplacée
par deux inégalités.
≤ bi
= bi ↔
- ≤ - bi
14
Formes matricielles classiques et conversions
On peut convertir une inégalité en égalité en ajoutant ou soustrayant une variable d’écart ei
≥ 0, propre à chaque contrainte i. À l’optimum, pour une inégalité ≤ concernant la
disponibilité d’une ressource i, cette variable indique la quantité inutilisée de la ressource.
≤ bi et ei ≥ 0 ↔ + ei = bi
D’autres conversions sont possibles. Ainsi, on peut passer d’une maximisation à une
minimisation, car maximiser z revient à minimiser -z. Il ne faut pas oublier alors de
multiplier par -1 la valeur de la fonction-objectif trouvée par la minimisation ! L’exigence
de variables positives n’est pas restrictive, car une variable xj non contrainte en signe peut
toujours s’écrire comme une différence x’j – x"j de deux variables non négatives.
15
Interprétation économique
Un PL a une interprétation économique très large. Soit un acteur économique qui exerce n
activités avec des intensités xj à déterminer. Ces activités utilisent m ressources. On
connaît la quantité aij de ressource i nécessaire pour exercer l’activité j avec une intensité
1. On connaît aussi le profit ou le coût cj pour une intensité 1 de l’activité j. On veut
trouver les intensités des activités, compatibles avec les ressources, pour maximiser le
profit ou minimiser le coût. Ce problème est modélisable par un PL sous forme canonique.
La programmation linéaire définit donc une classe très large de modèles, mais dans
laquelle on prend deux hypothèses restrictives fondamentales : la proportionnalité des
coûts et des consommations de ressources aux intensités d’activités, et l’additivité des
consommations de ressources (pas d’interactions entre activités). De nombreux problèmes,
en apparence non linéaires, peuvent être rendus linéaires.
16
Résolution graphique
Appelée aussi résolution géométrique, elle est possible pour un PL sous forme canonique
avec deux ou trois variables (n = 2 ou n = 3). Soit par exemple le PL suivant, qu’on
interprétera comme le calcul des quantités à produire x1 et x2 de deux produits pour
maximiser un profit z.
Max z = x1 + 2. x2
x1 + x 2 ≤ 6
x2 ≤ 3
x1 , x2 ≥0
Ce PL est bien sous forme canonique. En utilisant les notations matricielles, on peut écrire
m = 2, n = 2, c = (1, 2), x = (x1, x2)T, b = (6, 3)T et :
1 1
A= 0 1
17
Résolution graphique
Pour ce PL à deux variables, on trace dans le plan les axes des coordonnées pour les
valeurs positives de x1 et x2. On finit de délimiter le domaine des solutions réalisables,
qui forme un polygone convexe, en traçant les droites d’équations x1 + x2 = 6 et x2 = 3
Pour chaque droite, on indique par des flèches le demi-plan à conserver. On peut aussi
hachurer les demi-plans interdits, mais la figure est souvent moins lisible
Traçons la droite de profit z = 0. Son intersection avec le domaine des solutions
réalisables est réduite au point O et correspond à la solution triviale où on ne produit
rien, ce qui ne rapporte rien. Une droite d’équation z = k, où k est une constante entre 0
et 9 (exclus) donne par intersection avec le domaine tout un segment de plans de
production possibles, ayant le même profit k. On peut augmenter k jusqu’à 9, ce qui
donne la solution correspondant au point J : x1 = 3, x2 = 3. Cette solution est optimale,
car si on augmente encore k, on sort du domaine. En remplaçant dans le PL les
variables par leurs valeurs, on peut vérifier le coût et le respect des contraintes.
18
Résolution graphique
On peut formuler sur la solution graphique précédente des remarques générales.
Les contraintes de positivité confinent les solutions dans le quart de plan positif et chaque
autre contrainte définit un demi-espace (ici un demi-plan). L’intersection de tous ces
espaces forme un polygone convexe non vide, ici. La convexité signifie que pour deux
points quelconques A et B du polygone, le segment [A, B] est contenu dans le polygone.
Pour un nombre quelconque n de variables, on parle de polyèdre convexe. Pour k croissant,
les droites d’équation z = k forment une famille de droites parallèles. z augmente dans la
direction du vecteur de la fonction-objectif. L’optimum x*, ici unique, est atteint au
sommet (3, 3) du polyèdre. Le coût optimal correspondant est z* = 9.
Les cas spéciaux suivants pourraient se produire. En supprimant x1 + x2 ≤ 6, le domaine
des solutions serait non borné, ainsi que l’optimum. L’optimum peut cependant être fini
même si le domaine est non borné : ce serait le cas pour (-1, 2). Si on ajoutait la contrainte
x1 - x2 ≤ -4, le polyèdre serait vide et il n’y aurait aucune solution réalisable.
19
Résolution graphique
Enfin, si on maximisait z = x1 + x2, il y aurait plusieurs optima. Remarquons cependant que
l’ensemble des points optimaux, s’il est non vide, comprend toujours un sommet du polyèdre.
Pour un problème réel comme un plan de production, le domaine n’est normalement pas vide
car il y a au moins une solution : le plan de production actuel de l’entreprise. De plus,
l’optimum est borné en pratique à cause de limites sur les ressources. Dans un problème réel,
l’absence de solution indique en général un problème surcontraint, tandis que l’oubli d’une
contrainte peut donner un optimum non borné. Une erreur de saisie du modèle dans un
logiciel, comme une inversion de signe, peut également produire ces phénomènes. Dans tous
ces cas anormaux, il faut revoir soigneusement la formulation.
Si on est bon dessinateur, la résolution graphique est encore possible pour trois variables : les
contraintes définissent des demi-espaces dont l’intersection forme un polyèdre à trois
dimensions (une sorte de cristal), et les solutions de profit z constant forment une famille de
plans parallèles. Il est clair qu’il faut utiliser une autre méthode en présence de plus de trois
variables. C’est le but de la résolution algébrique.
20
Principes de la résolution algébrique
Bases et solutions de base
Cette résolution utilise la forme standard. Rappelons que le système d’égalités linéaires
d’un PL en forme standard s’écrit matriciellement Ax = b, avec A une matrice m × n telle
que m ≤ n, x un vecteur n × 1, et b un vecteur m × 1. On suppose aussi qu’il n’y a pas de
contrainte redondante, c’est-à-dire combinaison linéaire d’autres contraintes : le rang de A
vaut m, en termes mathématiques.
On appelle base de A, ou matrice de base, toute sous-matrice carrée inversible B, m × m,
de A. Pour une base B, on peut (en réarrangeant les colonnes si nécessaire) partitionner A
en (B, N) et x en (xB, xN). N est la matrice m × (n-m) des colonnes hors base, ou matrice
hors base. Le vecteur xB a pour composantes les m variables de base (associées aux
colonnes de B). xN a pour composantes les n-m variables hors base. Le système de
contraintes et la fonction-objectif peuvent alors s’écrire de manière équivalente :
21
Principes de la résolution algébrique
Pour une base choisie B, le système équivalent est simplement une expression des
variables de base en fonction des variables hors base. On a une solution évidente en
forçant xN à 0 : on a alors xB = B-1.b. Cette solution du PL est la solution de base (SB)
associée à la base B. Elle peut violer des contraintes de positivité : on appelle solution de
base réalisable (SBR) une solution réalisable dont toutes les variables sont positives ou
nulles.
22
Principes de la résolution algébrique
Exemple d’énumération des bases et changements de base
Reprenons le PL traité par la résolution géométrique, mais mis sous forme standard en
ajoutant une variable d’écart x3 pour la première contrainte, et une autre x4 pour la
seconde.
Max z = x1 + 2.x2
x 1 + x 2+ x 3 = 6
x2 + x4 = 3
X1, x2, x3, x4 ≥0
1 0 x1 1 0 6 6
0 1 0 1 × 3 3
B2 = (a1, a4) = → xB = x4 B-1b = =
B3 = (a2, a3), B4 = (a2, a4), B5 = (a3, a4)
Dans cet exemple, on ne peut pas visualiser le polyèdre en quatre dimensions. Mais le
polyèdre utilisé pour la résolution graphique en est une projection à deux dimensions, sans
les variables d’écart. On constate alors que les SBR correspondent aux sommets du
polyèdre.
24
Principes de la résolution algébrique
La base B5 est la matrice identité associée aux variables d’écart. La SBR associée
correspond au point O de la résolution graphique. Dans un contexte de production, elle
consiste à ne rien produire : on met à zéro les variables du PL canonique d’origine, et les
variables d’écart sont égales aux quantités de ressources disponibles (non consommées),
définies par le vecteur b.
Les opérations précédentes ont l’air compliquées sous forme matricielle. Elles sont en fait
simples si on détaille les équations en exprimant les variables de base en fonction des
variables hors base. Par exemple, pour retrouver la solution de base associée à B1 (point
correspondant à l’optimum de la résolution graphique, RG), on part du système Ax = b de
la forme standard.
x 1 + x 2+ x 3 = 6
x2 + x4 = 3
25
Principes de la résolution algébrique
Il faut transformer ce système pour exprimer les variables de base x1 et x2 en fonction des autres
variables (hors base) x3 et x4. Il se trouve que x2 est déjà exprimée en fonction de x4 dans la ligne
2. En substituant son expression (x2 = 3 - x4) dans la première équation, on obtient le système
suivant, traduction non matricielle du système xB = B-1.b - B-1.N.xN . En fixant les variables hors
base x3 et x4 à 0, on retrouve effectivement la solution réalisable de base x1 = 3 et x2 = 3
correspondant au point optimum en RG.
x1 = 3-x3 + x4
x2 = 3- x4
Les bases pour deux sommets adjacents du polyèdre ne diffèrent que par une variable. Si on
dispose du système exprimant les variables de base en fonction de celles hors base, on peut
déduire le système pour l’autre base, sans inversion de matrice. Par exemple, supposons que
l’on parte de la base B5 des variables d’écart x3 et x4, correspondant au point O.
26
Principes de la résolution algébrique
x3 = 6-x1 – x2
x3x=
3 = 6-x
6-x 1 –
1 – x2x2
x4 = 3- x2
x4x=
4 =3-3-x2x2
27
Principes de la résolution algébrique
Propriétés fondamentales de la programmation linéaire
Les méthodes de résolution algébriques reposent sur deux propriétés fondamentales à
admettre. Les précautions de style sont nécessaires à cause des polyèdres non bornés ou
vides :
Si une fonction linéaire atteint son maximum (ou son minimum) sur le polyèdre X défini par
les contraintes, alors cet optimum a lieu en un sommet de X.
Si X est non vide, alors il existe au moins un sommet, et l’ensemble des sommets correspond
aux solutions de base réalisables.
Ainsi, bien qu’un polyèdre non vide contienne une infinité de solutions réalisables, il
suffit de consulter ses sommets, en nombre fini, pour trouver l’optimum. Le nombre de
sommets peut être énorme : pour 100 contraintes et 400 variables, on peut avoir autant de
matrices de base que de façons de choisir 100 colonnes parmi 400, soit de l’ordre de 10 100
sommets! L’algorithme du simplexe va seulement générer une suite de sommets de profits
croissants. 28
Algorithme du simplexe à la main
Reprenons notre PL en forme standard, avec ses deux contraintes d’égalité :
Max z = x1 + 2.x2
x 1 + x 2+ x 3 = 6
x2 + x4 = 3
X1, x2, x3, x4 ≥0
L’algorithme du simplexe a été publié par Dantzig en 1949. Il construit une suite de solutions
de base réalisables de profit croissant, jusqu’à ce qu’il n’y ait plus de gain possible.
Géométriquement, il visite une suite de sommets adjacents du polyèdre. Le passage d’une base
à l’autre s’effectue par des opérations de pivotage. On part de la base évidente (matrice
identité) formée par les variables d’écart x3 et x4. La réécriture des contraintes pour obtenir les
expressions de x3 et x4 en fonction des variables hors base x1 et x2 est immédiate. La fonction-
objectif est ajustée de la même manière, mais au début il n’y a rien à faire puisque les
variables d’écart y ont un coefficient nul. On obtient : 29
Algorithme du simplexe à la main
x3 = 6-x1 – x2
x4 = 3- x2
Z = 0 + x1 + 2.x2
La SBR initiale associée s’obtient en mettant les variables hors base des seconds
membres à 0. On trouve x1 = 0, x2 = 0, x3 = 6, x4 = 3 et z = 0. Elle correspond au
point O de la résolution géométrique. Pour changer de SBR, on imagine que les
variables hors base sont nulles dans le système précédent. Une variable hors base,
actuellement à 0, va être choisie pour entrer en base et augmenter jusqu’à annuler
une variable de base. À la suite de cette opération de pivotage, la variable hors base
qu’on augmente, dite entrante, remplace celle qui s’annule dans la solution de base,
dite sortante. Géométriquement, on passe sur un sommet adjacent du polyèdre.
30
Algorithme du simplexe à la main
Pour déterminer la variable entrante, on examine les coefficients des variables hors base
dans z, appelés profits marginaux ou réduits (coûts marginaux en minimisation). Ils
donnent le gain obtenu en augmentant de 1 la variable associée. En fait, l’algorithme
converge si on augmente une des variables de profit marginal strictement positif, mais plus
rapidement en moyenne si on choisit parmi elles celle de profit marginal maximal, ici x2.
Voyons maintenant comment trouver la variable sortante. D’après la première contrainte,
x2 ne peut pas augmenter au-delà de 6, sinon x3 deviendrait négative. La seconde contrainte
est encore plus limitante, car x2 peut augmenter jusqu’à 3 seulement. Ainsi, x4 s’annule. La
variable sortante est donc la première qui s’annule quand on augmente la variable
entrante. Les nouvelles variables de base sont donc x3 et x2, et on doit les écrire, ainsi que
z, uniquement en fonction des nouvelles variables hors base x1 et x4. On obtient :
31
Algorithme du simplexe à la main
x2 = 3 – x 4
x6 = 6 – x1 – x2 = 6- x1 –(3 – x4) = 3 – x1 +x4
Z = 0 + x1 + 2(3 – x4) = 6 + x1 – 2x4
La SBR actuelle se lit en plaçant à 0 les variables hors base : x2 = 3, x3 = 3, x1= x2 = 0, avec
un profit z = 6. Pour augmenter encore le profit, on peut seulement augmenter x1, car c’est
la seule variable hors base de profit unitaire strictement positif. x1 peut augmenter jusqu’à
3 et remplace dans la base x3, qui s’annule. On écrit donc x1, x2 et z en fonction de x3 et x4 :
x1 = 3 – x 3 + x4
x2 = 3 – x 4
Z = 6 + (3 – x3 + x4) – 2x2 = 9 – x3 – x4
32
Algorithme du simplexe à la main
À ce stade la SBR associée est x = (3,3,0,0), de profit 9. Elle correspond au sommet
(optimum) du polyèdre. On est à l’optimum, car toutes les variables hors base ont un profit
unitaire négatif : le profit diminuerait si on augmentait l’une d’entre elles. Finalement, sur
les cinq bases possibles pour ce PL, l’algorithme du simplexe n’en a consulté que trois.
Pour un PL volumineux, l’économie par rapport à une énumération complète des solutions
de base est énorme : des tests numériques montrent qu’en moyenne le nombre de
pivotages reste proportionnel au nombre m de contraintes.
Le processus est facilement adaptable au cas d’une minimisation. La seule différence est la
règle pour la variable entrante : il faut prendre celle ayant le plus petit coût marginal
strictement négatif (le plus grand en valeur absolue), le but étant d’obtenir un coût
minimal.
33
Algorithme du simplexe forme tableau
Précédemment, nous avons manipulé directement le PL en opérant par calcul matriciel sans
nous en apercevoir. En effet, à toute itération et pour une base B, le PL était écrit sous la
forme équivalente définie par:
Pour les contraintes, on reconnaît chaque variable de base xB (i), égale à un terme constant b'i
(sa valeur actuelle) plus une combinaison linéaire des variables hors base. L’expression de z
comporte un terme constant noté zB (valeur actuelle de la fonction-objectif) plus une
combinaison linéaire dans laquelle ΔN désigne le vecteur des profits marginaux.
La forme tableau de l’algorithme du simplexe facilite les calculs précédents et se prête bien à
la programmation. Reprenons le programme linéaire vu pour la résolution géométrique, une
fois mis sous forme standard. 34
Algorithme du simplexe forme tableau
Le tableau initial de ce PL est composé de quatre sous-tableaux. Le tableau central T est
chargé avec la matrice A du PL. Le tableau-colonne Base donne les indices des variables
de base actuelles, les variables d’écart x3 et x4. Le tableau-colonne b’ contient les seconds
membres. La ligne Δ est la fonction-objectif sous la forme 0.xB + ΔN.xN = -zB (les variables
de base ont un profit marginal nul). Notez que la case -zB contient bien la valeur de la
fonction-objectif, mais multipliée par -1. Actuellement cette valeur est nulle.
base T 1 2 3 4 b’ b’i/Tie > 0
3 1 1 1 1 0 6 6
4 2 0 1 0 1 3 3 S
Δ 1 2 0 0 0
-ZB
e
35
Algorithme du simplexe forme tableau
Effectuons la première itération, tout à fait équivalente à ce que nous avons réalisé en
manipulant directement les équations. Elle construit le tableau de la prochaine base.
La variable hors base xe entrant en base est x2, car elle a le coût réduit strictement positif le
plus grand sur la ligne Δ. On repère sa colonne (colonne pivot) avec un e.
La variable sortant de la base est celle s’annulant en premier quand xe augmente. C’est
celle qui minimise les b’i / Tie avec Tie > 0 ou, comme on suppose des seconds membres
positifs dans la forme standard, les b’i / Tie > 0. Ceci se produit à la ligne s = 2, dite ligne
pivot. Base[s] donne l’indice de la variable de base correspondante, x4
On entoure le pivot Tse. Pour exprimer x2 en fonction des variables hors base, il faut écrire
dans le tableau suivant la ligne du pivot, divisée par le pivot, pour obtenir un 1 à la place
du pivot. Le pivot valant déjà 1, on se contente de recopier la ligne du pivot.
36
Algorithme du simplexe forme tableau
On fait apparaître ensuite des 0 dans les Tie des lignes i ≠ s : on multiplie la ligne du pivot
(déjà calculée dans le tableau suivant) par Tie puis on la soustrait à la ligne i. Les lignes
obtenues sont copiées dans le tableau suivant. Ceci élimine xe des équations autres que la
ligne s. Ici, le traitement équivaut à soustraire la ligne 2 à la ligne 1.
On applique la même opération à la ligne Δ, y compris pour -zB : la ligne du pivot est
multipliée par Δe et soustraite à la ligne Δ pour obtenir la nouvelle ligne Δ du tableau
suivant. Ici, ceci revient à multiplier la ligne 2 par 2 et à la soustraire à la ligne Δ.
On n’oublie pas de mettre à jour l’indice de la variable de base correspondant désormais à
la ligne s dans Base : 2 au lieu de 3. On obtient le tableau suivant :
37
Algorithme du simplexe forme tableau
base T 1 2 3 4
b’ b’i/Tie > 0
3 1 1 0 1 -1 3 3
2 2 0 1 0 1 3 - S
Δ 1 0 0 -2 -6
-ZB
e
Δ 0 0 -1 -1 -9
-ZB
C’est la fin de l’algorithme car les profits marginaux sont négatifs ou nuls. On retrouve
évidemment la solution optimale de la méthode géométrique et de l’algorithme non
matriciel : x1* = 3, x2* = 3, les autres variables à 0, et un coût total z* = 9.
40
Cas spéciaux pour l’algorithme du simplexe
Optimum non borné
Considérons le programme linéaire suivant sous forme canonique :
Max z = x1 + 2.x2
-2x1 + x2 ≤ 2
-x1 + 2x2 ≤ 5
x1 + 4x2 ≤ 4
x1, x2 ≥0
41
Cas spéciaux pour l’algorithme du simplexe
Contrainte 1 Contrainte 2 O: (0,0)
x2 I: (0,2)
J: (1/3,8/3)
K: (4,0)
J
I Contrainte 3
O K x1
Δ 1 2 0 0 0 0
-ZB
43
Cas spéciaux pour l’algorithme du simplexe
Δ 5 0 -2 0 0 -4
-ZB
Ce tableau correspond au point I.
Le troisième et dernier tableau correspond au point J. On peut ensuite augmenter le coût en
faisant entrer x3 en base. L’optimum n’est pas borné, car on peut augmenter x3 sans annuler
une variable hors base : il n’y a pas de b’i / Tie > 0. Cette situation est parfaitement détectée
par les logiciels commerciaux, avec un message du genre Unbounded optimum.
44
Cas spéciaux pour l’algorithme du simplexe
45
Cas spéciaux pour l’algorithme du simplexe
Absence de base initiale évidente
Considérons le programme linéaire suivant sous forme canonique :
Max z = x1 + 2.x2
x1 + x2 ≤ 6
x2 ≤ 3
x1 + x2 ≥ 1
x1, x2 ≥0
Pour la forme standard, il faut soustraire une variable d’écart à la troisième contrainte. En
effet, une variable d’écart doit être non négative, comme toute autre variable :
46
Cas spéciaux pour l’algorithme du simplexe
Absence de base initiale évidente
Max z = x1 + 2.x2
x1 + x2 + x3 = 6
x2 + x 4 = 3
x1 + x2 – x 5 = 1
x1, x2 , x3 , x4 , x5 ≥0
On n’a plus la matrice identité habituelle, qui nous fournissait une base initiale évidente.
Ceci est confirmé par l’interprétation géométrique (forme canonique) : l’optimum est
atteint en J = (3,3), mais l’origine O n’est plus réalisable.
47
Cas spéciaux pour l’algorithme du simplexe
Absence de base initiale évidente
Pour démarrer l’algorithme du simplexe, on pourrait trouver par tâtonnement une sous
matrice B inversible, mais l’effort de calcul peut être énorme pour un grand PL. Les
logiciels utilisent en pratique deux méthodes basées sur l’emploi de variables artificielles :
la méthode des deux phases et la méthode du grand M. L’idée est la suivante : on fait
apparaître une matrice identité en ajoutant aux contraintes qui en ont besoin une variable
artificielle (VA), avec un coefficient 1.
Les variables x1 à x5 sont dites légitimes : elles sont nécessaires à l’obtention de la forme
standard. Les variables d’écart x3 et x4 nous donnent deux colonnes de matrice identité, les
contraintes correspondantes (première et deuxième) n’ont donc pas besoin de VA. On ajoute
x6 à la troisième contrainte pour compléter la base. Une telle variable est réellement
artificielle et n’a aucun sens économique : à l’optimum, elle doit être nulle (hors base) sinon
la contrainte n’est pas vérifiée avec égalité ! Les deux méthodes des 2 phases et du grand M
ont précisément pour but de s’en débarrasser. 48
Cas spéciaux pour l’algorithme du simplexe
Absence de base initiale évidente
Max z = x1 + 2.x2
x1 + x2 + x3 = 6
x2 + x 4 = 3
x1 + x2 – x 5 + x6 = 1
x1, x2 , x3 , x4 , x5 , x6 ≥0
Min z = e . =
A x A. + = b
, ≥0
Si tout se passe bien, on parvient à annuler la somme des VA et à trouver une base
sans VA. On obtient donc une solution réalisable pour le problème de départ. La phase
2 consiste à éliminer du tableau les colonnes des VA, devenues inutiles, à remplacer la
ligne Δ par la vraie fonction-objectif, et à continuer le simplexe sur le tableau obtenu.
C’est en phase 2 qu’on peut détecter si le PL d’origine n’a pas d’optimum borné. En
réalité, d’autres cas spéciaux peuvent se produire en fin de phase 1 :
50
Méthode des deux phases
Si xA ≠ 0 (fonction-objectif non nulle), le PL d’origine n’a pas de solution réalisable.
Si xA = 0 avec des VA dans la base, on peut montrer que les contraintes associées à ces
variables sont redondantes. On peut les éliminer et attaquer la phase 2.
Appliquons la méthode des deux phases à l’exemple. La base est formée des colonnes 3, 4
et 6. Mais dans l’algorithme du simplexe, les variables de base doivent avoir des coûts
réduits nuls, ce qui n’est pas le cas pour x6. Transformons Δ en une ligne correcte Δ’, en lui
soustrayant la ligne 3 du tableau. Ceci fait apparaître le véritable coût de la solution de
base actuelle : 1, c’est-à-dire qu’elle contient une VA. Étant en minimisation, il faut faire
entrer en base la variable de coût réduit négatif minimal. On a le choix entre e = 1 et e = 2.
Par convention, nous prenons le plus petit indice.
51
Méthode des deux phases
base 1 2 3 4 5 6 b’i/Tie > 0
b’
3 1 1 1 1 0 0 0 6 6
4 2 0 1 0 1 0 0 3 -
6 3 1 1 0 0 -1 1 1 1 S
Δ 0 0 0 0 0 1 0
Δ’ -1 -1 0 0 1 0 -1
-ZB
52
Méthode des deux phases
Après pivotage sur T31, on obtient le tableau suivant :
base 1 2 3 4 5 6
b’
3 1 0 0 1 0 1 -1 5
4 2 0 1 0 1 0 0 3
1 3 1 1 0 0 -1 1 1
Δ 0 0 0 0 0 1 0
-ZB
La phase 1 se termine ici avec succès, puisque tous les coûts marginaux sont
positifs ou nuls (on est en minimisation). 53
Méthode des deux phases
Base 1 2 3 4 5 b’i/Tie > 0
b’
3 1 0 1 1 0 1 5 5 S
4 2 0 1 0 1 0 3 -
1 3 1 1 0 0 -1 1 -
Δ’ 1 2 0 0 0 0
Δ’’ 0 1 0 0 1 -1
-ZB
54
Méthode des deux phases
On peut mener la phase 2 car la VA x6 a été éjectée de la base. Pour débuter, les colonnes des
VA (ici une seule) sont supprimées du tableau de fin de phase 1, ce qui donne le tableau ci-
dessus. La fonction-objectif d’origine x1 + 2.x2 est réintroduite. Elle doit être exprimée en
fonction des variables hors base, comme les autres lignes. Pour cela, on soustrait la ligne 3 à
la ligne Δ’, ce qui donne une ligne correcte Δ”.
On a un peu “triché” en faisant entrer en base x5 au lieu de x2, pour gagner une itération.
Base 1 2 3 4 5 b’i/Tie > 0
b’
5 1 0 0 1 0 1 5 -
4 2 0 1 0 1 0 3 3 S
1 3 1 1 1 0 0 6 6
Δ’’ 0 1 -1 0 0 -6
-ZB
55
Méthode des deux phases
Base 1 2 3 4 5
b’
5 1 0 0 1 0 1 5
2 2 0 1 0 1 0 3
1 3 1 0 1 -1 0 3
0 0 -1 -1 0 -9
Δ’’
-ZB
Un dernier pivotage nous amène à l’optimum, au point J = (x1, x2) = (3,3), de coût 9.
56
Méthode du grand M
Cette méthode procède en une phase. Elle ajoute les VA à la fonction-objectif du PL
d’origine, mais pénalisées par un coût -M, M étant un grand nombre positif (106 par
exemple). Avec les mêmes notations que pour les deux phases, on résout en fait le PL :
Max z = c . =
A x A. + = b
, ≥0
Si tout se passe bien, le simplexe se débarrasse des VA dès les premières itérations et ne
les fait plus entrer en base à cause de leur coût énorme. On peut ignorer les colonnes des
VA dès qu’elles ne sont plus en base. Les cas spéciaux suivants peuvent aussi se produire :
57
Méthode du grand M
Le PL modifié n’a pas d’optimum borné et xA = 0 : le PL d’origine est aussi non borné.
Le PL modifié n’a pas d’optimum borné et xA ≠ 0 : le PL d’origine n’a pas de solution.
Le PL modifié a un optimum borné, mais xA ≠ 0 : le PL d’origine n’a pas de solution.
En général, la méthode du grand M donne moins d’itérations que celle des deux phases.
En revanche, sur ordinateur, la coexistence de M avec des petits nombres engendre
souvent des problèmes de précision, ce qui fait que les logiciels commerciaux utilisent
plutôt la méthode des deux phases.
Voyons la méthode sur l’exemple. Les tableaux T, Base et b' sont identiques à ceux du
début de la phase 1 dans la méthode des deux phases. La ligne Δ est chargée avec les coûts
des variables légitimes et un coût -M pour chaque VA. On rend nuls les coûts marginaux
des variables de base en ajoutant la ligne 3, multipliée par M, à la ligne Δ, ce qui donne la
ligne Δ’.
58
Méthode du grand M
base 1 2 3 4 5 6 b’i/Tie > 0
b’
3 1 1 1 1 0 0 0 6 6
4 2 0 1 0 1 0 0 3 3
6 3 1 1 0 0 -1 1 1 1 S
Δ 1 2 0 0 0 -M 0
Δ’ M+1 M+2 0 0 -M 0 M
-ZB
Une itération mène à une solution réalisable.
59
Méthode du grand M
base 1 2 3 4 5 6 b’i/Tie > 0
b’
3 1 0 0 1 0 1 -1 5 5
4 2 -1 0 0 1 1 -1 2 2 S
2 3 1 1 0 0 -1 1 1 -
Δ’ -1 0 0 0 2 -M - 2 -2
-ZB
60
Méthode du grand M
base 1 2 3 4 5 b’i/Tie > 0
b’
3 1 0 0 1 -1 0 3 3 S
5 2 -1 0 0 1 1 2 -
2 3 0 1 0 1 0 3 -
Δ’ 1 0 0 -2 0 -6 -ZB
Primal
Dual
Max z = c1T . x
Min w = b1 . x
A1,1 . + A1,2 . b1
A1,1T . y + A2,1T . yc1
A2,1 . + A2,2 . b2
A1,2 T. y + A2,2 T. y c2
≥0
1
1≥0
x2 de signe quelconque
y2 de signe quelconque 62
Dualité
Définition et exemple
Voici un exemple plus simple, avec un PL primal sous forme canonique :
Primal Dual
Max z = 4x Min w = 6x
3+56 3y + y
+28 5y + 2y 7
1 , x2≥ 0 1 , y2 ≥ 0
65
Dualité
Propriétés du dual
Quelques propriétés intéressantes. Les deux premières ont déjà été mentionnées dans les
deux paragraphes précédents.
Le dual du dual est le primal.
La solution du dual est égale aux coûts réduits du primal, et vice versa.
Étant donné un primal et son dual, soit les deux problèmes ont un optimum fini, soit ils
sont tous deux sans solution, soit l’un est sans solution et l’autre sans optimum fini.
Pour un primal en maximisation, le coût d’une solution réalisable est inférieur ou égal
au coût d’une solution réalisable du dual. Ces coûts sont égaux si et seulement si les
deux solutions sont optimales
Pour toute contrainte ≤ du primal, soit la contrainte est saturée (vérifiée avec égalité),
soit la variable correspondante du dual est nulle. Pour toute contrainte ≥ du dual, soit la
contrainte est saturée, soit la variable associée du primal est nulle.
66
Dualité
La dernière propriété, connue sous le nom de théorème des écarts complémentaires ou de
relations d’exclusion, est très utilisée. Intuitivement, dans l’interprétation économique, elle
signifie qu’une contrainte non saturée (non vérifiée avec égalité à l’optimum) a un coût
réduit nul : en effet, la ressource n’étant pas utilisée complètement, augmenter sa capacité
ne rapporte rien. Le théorème peut s’écrire matriciellement pour les deux formes
classiques d’un PL. Pour un primal canonique et deux solutions optimales x* et y* du
primal et du dual, on a y*.(b - A.x*) = 0 et (y*.A - c).x* = 0. Pour un primal standard, on a
toujours y*.(b - A.x*) = 0 grâce aux égalités, la propriété se réduit donc à (y*.A - c).x* = 0.
67