Programmation Linéaire

Transcription

Programmation Linéaire
Moez Kilani
Notes de Cours
Programmation Linéaire
3ème année Finance
Institut Supérieur de Gestion de Sousse ISG
Table des matières
1 Formulation
1.1 Un problème de production . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Un problème de finance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 Résolution graphique
2.1 Introduction . . . . . .
2.2 Étude d’un exemple .
2.3 Cas particuliers . . . .
2.4 Analyse de sensibilité .
2.5 Problème paramétré .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3 La méthode du simplexe I
3.1 Notation . . . . . . . . . . . . . . . .
3.2 Tableau de simplexe . . . . . . . . .
3.3 Critère d’optimalité . . . . . . . . .
3.4 Pivotages et solution optimale . . . .
3.5 Interpretation graphique du simplexe
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
5
7
.
.
.
.
.
8
8
8
9
10
12
.
.
.
.
.
15
15
16
17
18
20
4 La méthode du simplexe II
21
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.2 La méthode du grand M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.3 La méthode en deux phases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5 Analyse post-optimale
23
5.1 Coefficient dans la fonction objective (paramètre cj ) . . . . . . . . . . . . . . . . . . 23
5.2 Disponibilité en matière première (paramètre bi ) . . . . . . . . . . . . . . . . . . . . 24
6 Problème du transport
6.1 La représentation d’un problème de transport
6.2 Solution initiale . . . . . . . . . . . . . . . . .
6.2.1 La méthode du coin Nord-Ouest . . .
6.2.2 La méthode du coût minimum . . . .
6.3 Solution optimale . . . . . . . . . . . . . . . .
6.4 Cas particuliers . . . . . . . . . . . . . . . . .
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
26
26
27
27
28
29
30
Avant-propos
L’objectif de ce document est de fournir un support de référence pour relatif aux éléments
de base du cours. Il s’agit de la premièr édition, et beaucoups de détails manquent encore !
Il ne faut pas donc considérer ce document comme un manuel de cours.
Le contenu de ce document sera dispensé pendant six semaines. Ensuite trois semaines
seront consacrées à des exercices et des applications. La deuxième partie du cours (la théorie
des graphes) qui n’est pas abordée dans ce document sera dispensée pendant les semaines
restantes du semestre.
Pour les commentaires, corrections et suggestions (fort appréciées) merci d’utiliser l’adresse
éléctronique : [email protected]
3
Introduction
Un programme mathématique contient deux parties : une fonction objective à maximiser
ou à minimiser et un ensemble de contraintes à satisfaire. Un programme linéaire est un
programme mathématique dont la fonction objective ainsi que toutes les contraintes sont
écrites sous forme linéaire.
Les programmes linaires sont beaucoup plus simples à résoudre que les pragrammes nonlinéaires. En effet, des techniques de résolution assez faciles à mettre en oeuvre sont disponibles. L’algorithme du simplexe est une bonne illustration de ces techniques. Beaucoups de
problèmes pratiques peuvent être formulés comme des programmes linéaires. L’abbréviation
PL pour “programme linéaire” sera largement dans ce document.
4
Chapitre 1
Formulation
La formulation est l’étape qui consiste à passer de l’énnocé d’un problème à son écriture
sous forme mathématique en respectant la linéarité. La formulation est certainement l’étape
la plus importante pour deux raisons au moins. D’abord, c’est l’interface entre les professionnels et les spécialistes de la recherche opérationnelle ou encore entre la forme réelle est
la forme mathématique d’un problème donné. Ensuite, une fois la formulation achevée, la
résolution peut être de manière systématique. Cette tâche est rendue facile par l’éxistence de
nombreux outils informatiques spécialisés. Néomoins, une connaissance minimale des algorithmes de résolution reste utile afin de comprendre et d’interpréter comprendre l’output des
logiciels. Ce chapitre illustre la formulation de PL à travers un certains nombre d’exemples.
1.1
Un problème de production
Une firme produit deux biens A et B. Une unité de A procure à la la firme un
gain de quatre unités monétaires et une unité de B lui procure un gain de cinq
unités monétaires. Trois matières premières M1, M2 et M3 sont utilisées pour la
production. Chaque unité de A nécessite trois unités de M1 et une unités de M2.
Chaque unité de B nécessite une unité de M1, deux unités de M2 et une unité de
M3. Quelles quantités de A et B faut-il produire afin de maximiser le profit de
cette firme.
Afin de répondre à la question posée, il est préférable de procéder d’une manière systématique. Je suggère la démarche suivante :
1. Clarifier et résumer le texte dans des tableaux
2. Comprendre l’objectif du problème et les contraintes pour atteindre cet objectif
3. Fixer les variables du problème
4. Formuler la fonction objective et toutes les contraintes du problème en fonction des
variables fixées
Dans ce problème il est clair que l’objectif consiste à maximiser le profit. Les consommations de matières premières peuvent être résumées dans le tableau suivant :
5
MP1
MP2
MP3
4
3
1
0
5
1
2
1
15
10
4
Le choix des variables est souvent la tâche la plus délicates. Si on est sur le bon chemin il
n’y a presque aucune raison pour ne pas achever la formulation. Dans ce cas encore il n’y a
pas de règles magiques à appliquer. Il est utile de s’approcher du problème en se demandant
ce que signifie la solution. Supposons, que le reponsable de cette usine vous pose la question ?
Qu’est ce que vous allez lui répondre ? Il semble claire que dans ce problème la réponse à
fournir au directeur est de type : afin de maximiser le produit il faut produire un certain
nombre de A et un certain nombre de B.
Si on est d’accord sur ce point il devient naturel de poser les variables dans ce sens. Soit
x1 la quantité à produire de A et soit x2 la quantité à produire de B.1 La fonction objective
correspond donc au profit, qu’on notera z, de l’usine. A partir des taux de profit unitaires
on a z = 4x1 + 5x2 . On cherche à maximiser le profit, et donc la fonction objective s’écrit :
max z = 4x1 + 5x2 .
Ensuite, la quantité disponible de chaque matière première est limitée. Pour la matière
première, tout ce qui est utilisé pour A (3 × x2 ) et tout ce qui utilisé pour B (1 × x2 ) ne doit
dépasser 15 unités. Ainsi la contraintes s’écrits :
3x1 + x2 ≤ 15.
Le même raisonnement pour les deux autres matières premières donne les contraintes
x1 + 2x2 ≤ 10
et
x2 ≤ 4,
respectivement. Ensuite, il est clair que les quantités produites sont toujours positives. Ces
contraintes sont dites contraintes de non-négativité des variables. Il est utile d’insérer ces
contraintes dans le programme. En résumé, le programme mathématique (linéaire) relatif à
ce problème s’écrit de la manière suivante : ce programme peut être résumé de la manière
suivante :

max z = 4x1 + 5x2




3x1 + x2 ≤ 15

x1 + 2x2 ≤ 10
(1.1)
(P )


x2 ≤ 4



x1 , x2 ≥ 0
Remarquer que toutes les contraintes, ainsi que la fonction objective, sont des fonctions
linéaires de x1 et x2 .
1
Il est peut être plus claire de poser xA et xB les quantités respectives à produire de A et B.
1.2
Un problème de finance
Une banque dispose d’un capital C=2 000 000DT qu’elle peut octroyer durant l’année
en cours comme credit à ses clients. Il y a trois types de credits : (C1) credit personnel ; (2)
credit voiture ; et (3) credit maison. La banque per¸oit des interêts sur les credits. Ces derniers
sont de 14%, 12% et 8%, respectivement pour les credits de type (C1), (C2) et (C3). Par
ailleurs la banque doit respecter certaines règles : (R1) les credits personnels ne doivent pas
dépasser 30% du montant total des credits ; (R2) le montant total des credits voiture ne doit
pas depasser la moitie du montant total des credits maison. (R3) le taux d’interêt moyen
sur tous les credits ne doit pas depasser 11%. Formuler ce prolème comme un programme
lineaire.
Chapitre 2
Résolution graphique
2.1
Introduction
Considérons le problème de production formulé dans le chapitre précédent. Ce programme contient deux variables. Dans ce cas, il est possible de représenter graphiquement les
contraintes ainsi que la fonction objective. Les étapes à suivre pour la résolution graphique
sont les suivantes :
1. tracer les axes pour les deux variables ;
2. tracer les contraintes du problème ;
3. déterminer la région réalisable ;
4. tracer la fonction objective pour quelques valeurs ;
5. conclure pour la solution optimale.
Nous illustrons cette procédure pour le problème de production discuté dans la section 1.1.
2.2
Étude d’un exemple
Le programme (1.1) s’écrit :

max z = 4x1 + 5x2




3x1 + x2

x1 + 2x2
(P )


x2



x1 , x2
≤ 15
≤ 10
≤4
≥0
En appliquant la procédure indiquée ci-haut, on aboutit à un graphique similaire à la
Figure 2.1. Remarquer qu’on tient compte des contraintes de non-négativité des variables du
problème. Pour ce problème la solution optimale se situe au niveau du point C de coordonnées
(4, 3). Ainsi, la réponse à fournir est de type : afin de maximiser le profit il faut produire
quatre unités de A et trois unités de B.
8
x2
B
A
C
z = 31
Région réalisable
z=0
O
D
x1
Fig. 2.1 – Solution graphique.
Une remarque s’impose : la région réalisable est un ensemble convexe. Ceci étant le
cas dans tous les programmes linéaires, car l’intersection de demi-(hyper)plans est toujours
un convexe (sinon l’ensemble vide). C’est principalement à cause de cette propriété que la
résolution des programmes linéaires est beaucoup plus simple que celle des programmes nonlinéaires. En arrivant au point C, on est sûre qu’il n’y aurait pas d’autres points de même
nature (pour z plus grand).1
2.3
Cas particuliers
Le problème discuté plus haut a une solution optimale et cette solution est unique. Il est
possible de rencontrer des situations différentes. Les trois cas particuliers les plus importants
sont les suivants :
– solutions multiples
– solution non-bornée
– pas de solutions réalisables
Ces configurations peuvent être identifiées facilement sur un graphique.
1
Ce point sera discuté avec plus de détail pendant une séance de cours.
x2
A
B
C
O
D
x1
Fig. 2.2 – Solution optimale multiple.
Considérons le programme suivant :

max z = 3x1 + 4x2




3x1 + x2

′
x1 + 2x2
(P )


x2



x1 , x2
≤ 15
≤ 10
≤4
≥0
La solution graphique correspondant à ce programme est illustrée sur la Figure 2.2. Ainsi,
tous les points sur le segment [B, C] correspondent à une solution optimale. Remarquons que
la fontion objective a la même pente que la deuxième contrainte du problème.
Deux autres cas particuliers peuvent être facilement illustrés sur le graphique. En ajoutant
la contrainte x1 +x2 ≥ 10 le programme donné dans (1.1) n’admet plus de solution réalisable,
et donc plus de solution optimale. En retirant la première et la deuxième contrainte du
programme (P) on obtient un PL qui n’admet pas de solution bornée (vérifier ces deux
points graphiquement).
2.4
Analyse de sensibilité
La solution d’un problème est utile. Le comportement de la solution en fonction des
paramètres du paramètres est même plus importante. Dans l’exemple de production discuté
plus haut, on peut se demander : que serait la solution si la disponilité d’une matière première
varie, ou si la rentabilité d’un des deux produits n’est plus la même. Ce type de problème
fait partie de l’analyse de sensibilité.
Que devient la solution optimale si la rentabilité du produit A passe de 4 à 5 (um) ? Le
point optimal change-t-il ? la valeur de la foncion optimal reste-t-elle la même ? Le graphique
permet de voir rapidement la réponse à ces questions. En effet, il suffit de remarquer que
dans ce cas la région réalisable reste inchangée et que la pente de la fonction objective passe
de −4/5 à −1. Ainsi, le changement peut être illusté sur le graphique comme le montre
la Figure 2.3, où les deux lignes rouges indiques les courbes d’iso-profit correspondant aux
nouveaux coeficients de la fonction objective.
x2
A
z = 22
B
z = 35
C
Région réalisable
z=0
O
D
x1
Fig. 2.3 – Variation dans un paramètre de la fonction objective.
Il est donc claire que dans ce cas la solution optimale reste au même point C. D’une
manière générale, une petite variation dans les coefficient de la fonction objective laisse le
point optimal inchangé. Toutefois, la valeur de la fonction objective n’est plus la même. Dans
ce cas elle passe de z = 31 à z = 35.
Une variation importante dans les coefficients de la fonction objective entraine un déplacement de la solution optimale vers un autre point angulaire. Les lignes bleues correspondent
aux courbes d’iso-profit lorsque le gain unitaire relatif au produit A devient égal à 1. La pente
relative à la fonction objective de vient assez plate, et la solution optimale se situe plutôt
sur le B.
Le deuxième type de problème qui peut être représenter sur le graphique concerne les
disponibilités en matières premières : que devient la solution optimale si la matière première
est disponible en 12 unités seulement (et 15 unités) ? Le point optimal reste-t-il inchangé ?
La Figure 2.4 reflète l’impact de la variation en disponibilité de la matière première 1.
x2
A
B
C’
C
Région réalisable
z=0
O
D’
D
x1
Fig. 2.4 – Variation dans la disponibilité de la matière première 1.
Remarquer que dans ce cas la région région réalisable n’est plus la même à cause du
déplacement de la droite (C, D). La solution optimale se trouve au niveau du point C ′ . On
a noté ce point de sorte à garder la relation avec le point C. En effet, d’une certaine manière
le point optimale reste le même mais se déplace. Les deux points C et C’ sont toujours
l’intersection de la première et de la deuxième contrainte. Il s’agit donc structurellement du
même point. La solution garde la même structure mais change de valeur.
2.5
Problème paramétré
Certains problèmes sont posés avec un paramètre dont la valeur n’est pas connue à priori.
On peut par exemple demander la résolution du programme suivant

max z = µx1 + 5x2




3x1 + x2 ≤ 15

(Pµ )
x1 + 2x2 ≤ 10


x2 ≤ 4



x1 , x2 ≥ 0
pour toutes les valeurs du paramètre µ. Toujours, dans le cas d’un programme à deux variables, la question peut être discutée sur la base du graphique. Le graphique sur la figure
2.1, peut être utilisé, car il nous donne déjà une partie de la solution : pour µ = 4. Pour
répondre à la question on procède de la manière suivante :
1. Remarque : les variations de la valeur de µ entrainent sur le graphique des variations
dans la pente de la fonction objective.
2. Pour quelles autres valeurs de µ le point C reste-t-il optimal ? La réponse serait ici un
intervalle dans R.
3. Pour une valeur légèrement à l’extérieur de cet interval, le point B ou le point D serait
optimal. Tout dépendra du sens de variation de la pente de la fonction objective. On
détermine donc ce point et l’intervalle pour lequel ce point est optimal.
4. On poursuit cette procédure jusqu’à couvrir tout R.
Essayons d’appliquer cette procédure au problème donné. La pente de la courbe d’isoprofit est δ = −µ/5. Considérons d’abord le cas où µ > 0, et donc une pente négative. Le
point B serait optimal si et seulement si −1/2 < −µ/5 < 0 ou encore 0 < µ < 5/2. De
même, le point C serait optimal si et seulement si −3 < −µ/5 < −1/2 ce qui implique
5/2 < µ < 15. Ensuite pour tout δ < −3 (ou encore µ > 15), il est clair que la solution
optimale se situe au point D.
Que devient la solution si µ est négatif ? Dans ce cas, une simple remarque nous permet
d’identifier la solution optimale : Une quantité positive dans la fonction objective pénalise
celle-ci et afin d’atteindre un niveau maximum, il faut chercher à minimiser la production
de A et à maximiser celle de B (qui contribue positivement au profit). Sur le graphique, il
apparaı̂t que le point optimal est A. Nous pouvons ainsi donner le point optimal pour toutes
les valeurs de µ.
µ
(−∞, 0)
(0, 5/2)
(5/2, 15)
(15, ∞)
Point optimal solution optimale
A
x1 = 0 et x2 = 4
B
x1 = 2 et x2 = 4
C
x1 = 4 et x2 = 3
D
x1 = 5 et x2 = 0
Considérons ensuite le PL suivant :

max z = 4x1 + 5x2




3x1 + x2

x1 + 2x2
(Pη )


x2



x1 , x2
≤ 15
≤η
≤4
≥0
avec η un réel donné. Comme pour le programme (Pµ ), on peut considérer la solution du
programme (P ) comme solution de départ. Sur le graphique une variation de la valeur du
paramètre η induira un déplacement de la droite qui passe par B et C. Une augmentation
de η déplace la droite vers le haut et une diminution de η déplace la droite vers le bas. Une
construction préliminaire de la solution est illustré sur la figure 2.6.
x2
A
B
(0)
(-1/2)
C
Région réalisable
(-3)
O
D
x1
Fig. 2.5 – Problème paramètré.
x2
A
B
(0)
C’
(-1/2)
C
C’’
Région réalisable
(-3)
O
D
Fig. 2.6 – Paramètre dans une contrainte.
x1
Chapitre 3
La méthode du simplexe I
Dans ce chapitre on introduit l’algorithme du simplexe. Cette technique fut mise au point
par Dantzig pendant les années cinquantes du vingtième siècle. Elle a été à l’origine de la
popularité de la programmation linéaire.
3.1
Notation
Un PL est dit écrit sous forme standard si
1. toutes les contraintes sont de type égalité ;
2. toutes les variables sont positives.
En effet tout PL peut être écrit sous forme standard, et inversement. Toute contrainte de type
égalité peut être récrite de manière équivalent comme une égalité en ajoutant une variable
d’écart. Par exemple,
x1 + 2x2 ≤ 6 ⇔ x1 + 2x2 + x3 = 6,
où x3 une variable positive. Inversement toute contrainte égalité peut être écrite de manière
équivalente comme un ensemble de deux contraintes de type inégalité. Par exemple,
(
x1 − x2 ≤ 3
x1 − x2 = 3 ⇔
x1 − x2 ≥ 3.
Une variable négative peut être remplacé par sont opposé et en multipliant les coefficients
correspondants par −1. Une variable sans signe peut être remplacée par la différence de de
variables positives. En effet, ∀x ∈ R ils existent x1 , x2 ≥ 0 tel que x = x1 − x2 . La conclusion
de tous ces détails est que tout PL, indépendament de sa forme initiale, peut être réecrit de
manière équivalent sous forme standard.
Un programme est dit écrit sous forme canonique par rapport à une base réalisable si les
conditions suivantes sont réalisées :
1. toutes les variables du programme sont positives.
2. toutes les contraintes sont de type égalité.
15
3. toutes les éléments à droite de chaque contraintes sont positifs.
4. toutes les colonnes de la matrice identité aparaissent (à une permutation près) dans
le système linéaire formé par l’ensemble des contraintes (la dimension de la matrice
identité est égale au nombre de contrainte).
5. les coefficients des variables faisant apparaı̂tre les colonnes de la matrice identité sont
nuls dans la fonction objective.
Ces propriétés seront faciles à voir dans l’exemple ci-dessous. À un programme linéaire
écrit sous forme canonique par rapport à une base donnée, on associe un tableau de simplexe.
Il s’agit d’une représentation qui facilite la résolution d’un programme linéaire.
Tout programme qui admet une solution réalisable s’écrit nécéssairement sous forme
canonique par rapport à une base réalisable donnée. Parfois, cette écriture est facile à trouver,
mais parfois il faut passer par une étape préliminaire afin de l’obtenir. Ce chapitre s’intéresse
aux problèmes pour lesquels la forme canonique est facile à trouver. Le chapitre suivant traite
le deuxième cas.1
Pour le programme (P ), qu’on utilise depuis les chapitres précédents, peut s’écrire de la
manière suivante :

max z = 4x1 + 5x2




= 15
3x1 + x2 + x3

x1 + 2x2
+ x4
= 10
(Pc )


x2
+ x5 = 4



x1 , x2 , x3 , x4 , x5 ≥ 0
Remarquons que (P ) et (Pc ) sont équivalents : il s’agit du même programme linéaire.
3.2
Tableau de simplexe
Dans le programme (Pc ), on peux distinguer trois blocs. D’abord la fonction objective sur
la première ligne. Ensuite, un système d’équations linéaires (de type Ax = b) correspondant
à l’ensemble des contraintes du programme. Finalement, les contraintes de non-négativité des
variables. Remarquer ensuite que le variables sont indexées de 1 à 5 et qu’on a mis chacune
sur une colonne. Ainsi, on peut garder uniquement le coeficient et la colonne sans mentionné
la variable sur chaque ligne. On obtient ainsi le tableau de simplexe correspondant suivant :
T0
0
0
0
x3
x4
x5
cj
z j − cj
1
4
x1
3
1
0
0
4
5
x2
1
2
1
0
5
0
x3
1
0
0
0
0
0
x4
0
1
0
0
0
0
x5
0
0
1
0
0
Il faut faire attention au fait que cette que cette terminologie n’est pas universelle.
15
10
4
0
T0 est une appelation qu’on a donné qu tableau (pour indiquer que c’est le tableau initial).
En première colonne on a ajouté les variables x3 , x4 et x5 ainsi que leur coefficients dans la
fonction objective. Dans le bloc principal (le système Ax = b) apparait la matrice identité
d’ordre 3 (notons I3 ). La première colonne de I3 est située sur la colonne de x3 , les deuxième
et troisième colonnes de I3 se situent sur les colonnes de x4 et x5 , respectivement. Comme
on a précisé ci-haut, les trois colonnes de la matrice I3 doivent apparaı̂tre dans tout tableau
de simplexe, mais pas nécéssairement dans cet ordre.
On dit que x3 , x4 et x5 sont les variables de base, et on note J = {3, 4, 5}. Les variables
x1 et x2 sont des variables hors base, et on note J = {1, 2}. Au tableau T0 correspond la
solution de base x3 = 15, x4 = 10 et x5 = 4. Dans une solution de base les variables hors
base sont nulles. Ici, x1 = x2 = 0.
Afin de poursuivre notre discussion, quelques éléments de notation seront utiles. Ax = b
étant le système linéaire formé par les contraintes du programme. A étant une m × n matrice
(m lignes et n colonnes). b étant un n−vecteur colonne. x un m−vecteur colonne. Dans le
programme (P ), m désigne le nombre de variables et n désigne le nombre de contraintes.
Notons Ai la ligne i de la matrice A, et Aj la colonne j de la matrice A. Aji fait référence à
l’élément de la matrice A qui se trouve sur la ligne i et la colonne j. Dans la même logique,
z j fait référence au coefficient de la variable j dans la fonction objective.
P k(j) j
Le calcul des éléments de la ligne cj se font de la manière suivante. On a cj =
z A,
où k(j) désigne le coefficient dans la fonction objective de la j−ème variable de base. Ces
valeurs sont inscrites dans le tableau de simplexe en première colonne afin de s’y réferer
facilement. Ainsi,.
c1 = 0 × 3 + 0 × 1 + 0 × 0 = 0
..
..
.
.
c5 = 0 × 0 + 0 × 0 + 0 × 1 = 0.
Dans le premier tableau il est clair que tous les cj sont positifs. L’élément qui se trouve dans
le coin en bas à droite du tableau est calculé de la même manière que les cj mais en utilisant
le vecteur b au lieu de la colonne Aj . Cet élement reflète la valeur de la fonction objective
relative à la solution de base donnée par le tableau.
3.3
Critère d’optimalité
Les valeurs sur la ligne z j − cj ont la signification utile. Dans le tableau T0 on a x1 = 0
et x2 = 0. La valeur “4” de z 1 − c1 indique que si on introduit la variable x1 dans la base en
augmentant sa valeur, alors chaque unité de x1 augmentera la fonction objective par 4 uniés.
De même, si on introduit x2 dans la base, alors chaque unité de x2 augmentera la fonction
objective par 5 unités. Puisqu’il est possible d’augmenter les valeurs de la fonction objective,
alors la solution donnée par T0 n’est pas optimale. On appelera tableau optimal, un tableau
de simplexe pour lequel la solution correspondante est optimale. De manière générale, on a
le critère d’optimalité suivant.
Pour un problème de maximisation, un tableau est optimal si tous les élements de
la ligne z j −cj sont négatifs ou nuls. Tant qu’un élement au moins est strictement
positif, le tableau n’est pas optimal.
Le tableau T0 discuté ci-haut n’est pas optimal. En effet, la ligne z j − cj de ce tableau
contient des valeurs strictement positives. De manière similaire, le critère d’optimalité pour
un programme de minimisation est le suivant :
Pour un problème de minimisation, un tableau est optimal si tous les élements de
la ligne z j − cj sont positifs ou nuls. Tant qu’un élement au moins est strictement
négatif, le tableau n’est pas optimal.
3.4
Pivotages et solution optimale
Le tableau T0 n’est pas optimal. On peut dire aussi que la base dans ce tableau n’est
pas optimale. La recherche d’une solution optimale revient en fait à la recherche d’une base
optimale. L’idée de l’algorithme du simplexe est de remplacer cette base par une autre qui
soit meilleure jusqu’à l’obtention d’une solution (base) qu’on ne peut plus améliorer. Les
opérations de pivotage permettent le passage d’une base à une autre.
Chaque opération de pivotage consiste à remplacer une variable de la base par une variable
hors-base et à récrire le programme sous forme canonique par rapport à la nouvelle base. En
pratique, une opération de pivotage consiste à :
Choisir une variable entrante Celle-ci doit être initialement hors base et ayant un coefficient z j − cj strictement positif. Géneralement, on choisit celle qui a le coefficient
positif le plus élevé.
Déterminer la variable sortante Une fois la variable entrante est choisie on determine
la variable sortante de la minière suivante. Supposons que la variable xq est entrante.
On calcul les rapports bi /Aqi pour les lignes i tel que Aqi est strictement positif. La
variable sortante serait celle pour laquelle ce rapport est le plus petit. Supposons que
cette variable se trouve sur la ligne p. Le pivot est situé sur la ligne p et la colonne q
de la matrice A
Pivotage L’opération de pivotage proprement dite, consiste à faire les deux changements :
1. Ap ← Ap /Aqp : diviser la ligne du pivot par la valeur du pivot.
2. pour tout i ∈ {1, . . . , m} et i 6= p, faire Ai ← Ai − (Aqi /Aqp ) × Ap : pour toute les
lignes, sauf celle du pivot, effectuer l’opération li ← li − α lpivot , avec α choisit de
sorte que Api s’annule.
Finir recalculer les lignes cj et z j − cj comme précédement, ainsi que la nouvelle valeur de
la fonction objective.
En appliquant cette procédure au tableau T0 , on trouve :
1. La variable qui a le coût marginal (positif) le plus élevé est x2 . Ainsi, x2 est la variable
entrante.
2. La variable sortante est x5 .
3. Le pivot est donc l’élément qui se trouve sur troisième ligne et deuxième colonne (de
la matrice A), comme indiqué par le tableau T0 .
T0
0
0
0
x3
x4
x5
cj
z j − cj
4
x1
3
1
0
0
4
5
x2
1
2
1∗
0
5
0
x3
1
0
0
0
0
0
x4
0
1
0
0
0
0
x5
0
0
1
0
0
15
10
4
0
15/1
10/2
4/1
Le résultat de l’opértion de pivotage est donné dans le tableau T1 . Ce dernier ne correspond pas encore à la solution optimale, mais donne une meilleure solution. En effet, le profit
avec cette nouvelle solution est de 20 (um).
T1
0
0
5
x3
x4
x2
cj
z j − cj
4
x1
3
1
0
0
4
5
x2
0
0
1
5
0
0
x3
1
0
0
0
0
0
x4
0
1
0
0
0
0
x5
-1
-2
1
5
-5
11
2
4
20
Afin de trouver la solution optimale, il suffit de continuer à effectuer des pivotage jusqu’à
obtenir un tableau avec des coûts marginaux qui soient tous negatifs ou nuls. Dans ce PL on
obtient les tableaux T2 et T3 suivants. Selon le critère d’optimalité énnocé ci-haut, le tableau
T3 est optimal.
T2
0
0
5
x3
x1
x2
cj
z j − cj
4
x1
0
1
0
0
0
5
x2
0
0
1
0
0
0
x3
1
0
0
0
0
0
x4
-3
1
0
4
-4
0
x5
5
-2
1
-3
3
5
2
4
28
4
x1
0
1
0
4
0
T3
0
4
5
x4
x1
x2
cj
z j − cj
3.5
5
x2
0
0
1
5
0
0
x3
1/5
2/5
-1/5
3/5
-3/5
0
x4
-3/5
-1/5
3/5
11/5
-11/5
0
x5
1
0
0
0
0
1
4
3
31
Interpretation graphique du simplexe
Comme le montre la figure 3.1, chaque opération de pivotage correspond à un déplacement
d’un sommet, dans la région réalisable, à un sommet adjacent. Les déplacements se font
toujours en améliorant la fonction objective.
x2
B
A
T1
T2
C
T3
z = 31
z=0
T0
O
D
Fig. 3.1 – Interpretation graphique du simplexe.
x1
Chapitre 4
La méthode du simplexe II
4.1
Introduction
Considérons le PL suivant :

max z = 4x1




3x1



x1
(P )




x1



x1
+ 5x2
+ x2
+ 2x2
x2
+ x2
, x2
≤ 15
≤ 10
≤4
≥3
≥0
En passant à la forme standard, on obtient :

max z = 4x1 + 5x2




3x1 + x2 + x3



x1 + 2x2
+ x4
(PS )
x
+ x5

2



x1 + x2
− x6



x1 , x2 , x3 , x4 , x5 , x6
= 15
= 10
=4
=3
≥0
Deux méthodes sont souvent utilisées pour résoudre ce problème.1
4.2
La méthode du grand M
L’diée ici est de remplacer le programme (P ) par un autre qui a la même solution.
Pratiquement il s’agit de faire deux choses :
– créer la base artificiellement en ajoutant les colonnes manquantes de la matrice identité ;
celà revient à introduire des variables supplémentaires, appelées “variables artificielles”;
1
En fait, il de la même méthode mais mise en pratique de deux manières différentes.
21
– modifier la fonction objective de sorte que les variables artificielles quittent la base au
fur et à mesure des itérations.
Pour le méthode du grand M on introduits les variables artificielles dans la fonction objective
avec avec un coefficient negatif très grand (noté M). Ainsi, la maximisation de la fonction
objective passe nécéssairement par l’annulation des variables de base. Pour l’exemple donné
plus haut, le programme associé, noté M, est le suivant.

max z = 4x1




3x1



x1
(PM )




x1



x1
+ 5x2
− Mx7
+ x2 + x3
+ 2x2
+ x4
x2
+ x5
+ x2
− x6 +
x7
, x2 , x3 , x4 , x5 , x6 ,
x7
= 15
= 10
=4
=3
≥0
Le programme (PM ) est écrit sous forme canonique par rapport à la base réalisable
J = {3, 4, 5, 7}. Remarquons que (PM ) est n’est pas équivalent à (P ). Toutefois, la résolution
de (PM ) conduit en même temps à la résolution de (P ).
Le tableau de simplexe initial associé à (PM ) est le suivant.
T0
0
0
0
−M
x3
x4
x5
x7
cj
z j − cj
4
x1
3
1
0
1
−M
4+M
5
x2
1
2
1
1
−M
5+M
0
x3
1
0
0
0
0
0
0
x4
0
1
0
0
0
0
0
x5
0
0
1
0
0
0
0
x6
0
0
0
-1
0
0
La procédure de calcul classique peut-être appliquée à ce tableau.
4.3
La méthode en deux phases
Ne sera pas étudiée cette année.
−M
x7
0
0
0
1
M
−M
15
10
4
3
−3M
Chapitre 5
Analyse post-optimale
La résolution d’un PL par la méthode du simplexe permet d’effectuer une analyse de
sensibilité assez facilement, lorsqu’il s’agit des coefficients de la fonction objective ou des
paramètre à droite dans les contraintes.
5.1
Coefficient dans la fonction objective (paramètre
cj )
Considérons le problème (P) de la page . . .et sa solution donnée à la page . . .Un exemple
de questions que l’on peut se poser :
– Si le profit relatif à chaque unité de A devient 6 au lieu de 4 (um). La solution optimale
reste-t-elle la même ?
– pour quelles autres valeur du profit relatif au produit A la solution optimale reste-t-elle
inchangée ?
Pour répondre à ce type de question, on a besoins du dernier tableau de simplexe seulement.
1. Dans ce tableau, on remplace le coefficient 4 par 4 + ∆.
2. On re-calcule les lignes cj et z j − cj .
3. On détermine pour quelles valeurs de ∆, le critère d’optimalité reste valable.
On a le tableau suivant :
T3∆
0
4+∆
5
cj
z j − cj
x4
x1
x2
4+∆
x1
0
1
0
4+∆
0
5
x2
0
0
1
5
0
0
x3
1/5
2/5
-1/5
3/5 + 2/5∆
−3/5 − 2/5∆
23
0
x4
-3/5
-1/5
3/5
11/5 − 1/5∆
−11/5 + 1/5∆
0
x5
1
0
0
0
0
1
4
3
31 + ∆
Le tableau T3∆ optimal si et seulement si :
(
−3
− 52 ∆ ≤ 0
5
−11
− 15 ∆ ≤ 0
5
5.2
=⇒
5
≤ 4 + ∆ ≤ 15
2
Disponibilité en matière première (paramètre bi)
Supposons que la matière première I n’est pas disponible en 15 unités exactement, mais
plutôt en 15 + ∆ unités. Que devient la solutions ? Pour quelles valeurs de ∆ la solution
optimale reste proche de la solution optimale ?
Pour répondre à ces questions on a besoins du premier est du dernier tableau de simplexe.
Remarquons d’abord que le programme initial s’écrit dans ce cas comme :

max z = 4x1 + 5x2




3x1 + x2 + x3
= 15 + ∆

(Pc )
x1 + 2x2
+ x4
= 10


x
+
x

2
5 = 4


x1 , x2 , x3 , x4 , x5 ≥ 0
On peut construire le tableau de simplexe correspondant à ce programme en associant
un colonne pour ∆.
4
x1
3
1
0
0
4
T0
0
0
0
x3
x4
x5
cj
z j − cj
5
x2
1
2
1
0
5
0
x3
1
0
0
0
0
0
x4
0
1
0
0
0
0
x5
0
0
1
0
0
15
10
4
0
∆
1
0
0
La colonne de ∆ est identique à la colonne relative à la variable x − 3. Comme les
opérations de pivotage seront identiques pour les deux colonnes, les deux dernières resteront
identiques pour tous les tableaux. En particulier le tableau optimal serait de la forme suivante.
T3
0
4
5
x4
x1
x2
cj
z j − cj
4
x1
0
1
0
4
0
5
x2
0
0
1
5
0
0
x3
1/5
2/5
-1/5
3/5
-3/5
0
x4
-3/5
-1/5
3/5
11/5
-11/5
0
x5
1
0
0
0
0
1
4
3
31 − ∆
∆
1/5
2/5
-1/5
Ce tableau serait optimal si et seulement si les variables de bases sont optimales :

1

x4 = 1 + 5 ∆ ≥ 0
x1 = 4 + 52 ∆ ≥ 0 =⇒ −5 ≤ ∆ ≤ 15 =⇒ 10 ≤ 15 + ∆ ≤ 30


x2 = 3 − 51 ∆ ≥ 0
Chapitre 6
Problème du transport
Le problème du transport est un programme linéaire qui a une structure particulière.
Cette classe de PLs englobe les problèmes qui s’énnoncent dans une forme approximative à
celle-ci :Il ya m origines et n destinations. Dans chaque origine on dispose d’une certaine
quantité (de matière première ou produit donné), et dans chaque destination on demande
une certaine quantité de ce produit. Le coût de transport est différent pour chaque couple
origine-destination. On cherche un plan de transport optimal dans le sens qu’il minimise le
coût total de transport.
L’usage des tableaux de simplexe dans le cas des problèmes de transport est bien entendu
possible. Toutefois, cette alternative ne présente pas un réel intérêt pratique, car les problèmes
de transport aboutissent généralement à un grand nombre de variables et de contraintes.1
Heureusement, une représentation intuitive et permettant un traı̂tement facile des problèmes
de transport existe : il s’agit du tableau de transport.
6.1
La représentation d’un problème de transport
La structure d’un tableau de transport est assez intuitive comme le montre l’exemple
de la Figure 6.1. Dans ce problème, on a trois origines et quatres destinations. Les offres
des origines sont inscrites sur la dernière colonne, et les quantités disponibles dans les différentes destinations sont inscrites sur la dernière lignes. Les chiffres inscrits en petite taille
dans chaque case indiquent les coûts de transport unitaires entre chaque origine et chaque
destination. Par exemple, chaque unité transportée de l’origine 2 vers la destination 3 induit
un coût de transport de 4(um). Remarquons que dans ce tableau l’offre totale est égale à
la demande totale. On dit que ce problème est équilibré. Si le problème n’est pas équilibré,
on doit effectuer un certains changements avant de pouvoir procéder à la recherche de la
solution.
1
Pour m origines et n destinations on a m × n variables (sans les variables d’écarts qui sont au même
nombre que les contraintes) et m + n contraintes.
26
500
6
5
3
1
10
8
4
2
300
200
7
300
9
300
11
300
12
100
Fig. 6.1 – Un tableau de transport.
6.2
Solution initiale
Une solution de base pour un problème de transport avec m origines et n destinations
doit contenir exactement m + n − 1 variables de bases. Dans l’exemple discuté ci-haut on
doit donc avoir dans tous les tableaux correspondants sept variables de base. Il y a plusieurs
manières pour remplir un tableau de simplexe. Nous présentons les deux méthodes les plus
fréquement fréquemments utilisées.
6.2.1
La méthode du coin Nord-Ouest
Il s’agit d’une méthode assez simple à mettre en œuvre. Les différentes étapes relatives à
cette procédure sont les suivantes :
1. commencer à la case (i = 1, j = 1) ;
2. effectuer le test
si Oi < Dj alors
qij = Oi
Dj ← D j − O i
j ←j+1
sinon
qij = Dj
O i ← O i − Dj
i← i+1
fin
3. reprendre à l’étape 2 tant que i < m ou j < n.
L’application au problème discuté plus haut aboutit au tableau suivant : Le coût total correspondant à cette solution est de 6700(um). L’avantage principal de la méthode du coin
300
500
200
6
5
100
10
3
1
4
2
300
200
8
100
7
300
9
300
11
300
100
200
12
100
Fig. 6.2 – Solution initiale : méthode du coin Nord-Ouest.
nord-ouest est principalment la facilité de mise en œuvre. L’inconvenient majeur de cette
méthode est qu’elle ne tient pas compte de la structure de coût. Généralement, elle aboutit
à un coût total initial assez élevé.
6.2.2
La méthode du coût minimum
L’idée consiste à exploiter les cases ayant des coûts de transport faibles et leur attribuer
les quantités maximales (dans la mesure du possible). On procède de la manière suivante :
1. repérer la case du tableau ayant le coût le plus faible ;
2. affecter à cette case la quantité maximale possible ;
3. une colonne ou une ligne est saturée :
(a) si une colonne est saturée, l’éliminer du tableau, mettre à jour la quantité dans la
ligne correspondante et reprendre au point 1 avec le nouveau tableau ;
(b) si une ligne est saturée, l’éliminer du tableau, mettre à jour la quantité dans la
colonne correspondante et reprendre au point 1 avec le nouveau tableau ;
4. lorsque toutes les lignes et toute les colonnes sont saturées, alors le tableau doit contenir
exactement m + n − 1 variables de base.2
L’application à l’exemple proposée plus haut nous donne le tableau représenté dans la Figure 6.3. Le coût total correspondant à cette solution initial est de 5500(um). En effet, de
manière générale, la méthode du coût minimum aboutit à une meilleure solution initiale que
la méthode du coin nord-ouest.
2
Dans certains cas, il se peut que cette condition ne soit pas satisfaite. Cette situation sera discutée dans
le cours.
100
6
100
300
100
500
5
3
1
8
4
2
200
10
300
200
200
7
300
9
300
11
300
12
100
Fig. 6.3 – Solution initiale : méthode du coût minimum.
6.3
Solution optimale
Afin de trouver le tableau optimal, on procède comme dans le simplexe classique. D’abord,
il faut calculer les coûts marginaux pour les variables de hors-base. Il s’agit des c̃ij comme
indiqué dans la fig. 6.4.
c̃11
100
6
100
300
5
3
c̃23
100
u1
1
c̃24
200
10
500
300
8
c̃32
4
c̃33
2
c̃34
9
11
12
200
u2
200
7
300
300
v1
v2
300
v3
u3
100
v4
Fig. 6.4 – Les coûts marginaux (1).
Ce calcul se fait en trois étapes :
1. pour chaque variable de base écrire l’équation cij = ui + vj ;
2. résoudre le système obtenu en fixant u1 = 0 ;
3. calculer les valeurs des coûts marginaux à partir de c̃ij = cij − ui − vj .
Pour notre exemple on obtient le tableau donné par la Figure 6.5. Ce tableau contient
des coûts marginaux strictement négatifs, et donc il ne s’agit pas d’une solution optimale.
Il faut effectuer un changement de base afin d’améliorer la solution, et voir si elle devient
optimale ou non, . . .Ici, on peut prendre la variable x23 comme variable entrante.3 La valeur
de x23 doit être augmentée mais tout en respectant les contraintes d’offre et de demande,
ainsi que la non-négativité des autres variables. Sur le tableau de la figure 6.5, le cycle indique
les variations à effectuer pour sauvegarder une solution de base. Un signe “+” indique une
augmentation de la quantité et un signe “-” indique une diminution de la quantité.4 En
valeur absolue, la variation est la même pour toutes les cases sur le cycle. Dans notre cas :
x23 augmente par 200 unités, x22 diminue par 200 unités, x12 augmente par 200 unités et
enfin x13 diminue par 200 unités. On obtient ainsi le tableau donné par la figure 6.6, et pour
lequel on refait le même travail, afin d’obtenir la solution optimale donnée par le tableau 6.7.
-1 +
−
100
6
300
5
+
−
100
100
500
3
-2
1
+1
4
+8
2
+11
200
10
0
300
8
+4
200
3
200
7
300
9
300
7
11
300
5
12
0
100
3
1
Fig. 6.5 – Le premier tableau de transport.
6.4
Cas particuliers
Offre supérieure à la demande. Afin de retrouver un problème de transport correctement structuré, on ajoute une demande fictive avec des coût unitaires nuls, et dont la
demande correspond à l’excédent de l’offre. Après cette transformation, un tableau de
tranport peut être construit et la résolution se fait de manière classique.
Offre inférieure à la demande. Dans ce cas le problème n’admet pas de solution réalisable, et donc pas de solution optimale.
3
Notation : la variable xij fait référence à l’origine i et à la destination j.
Remarque : la structure du tableau de transport fait que le cycle est toujours déterminé de manière
unique.
4
+
-3
−
300
6
−
100
100
5
+2 +
100
500
3
1
0
4
+10
2
+12
200
10
8
+6
0
300
200
1
200
7
300
9
300
9
11
300
5
12
-2
100
3
1
Fig. 6.6 – Le deuxième tableau de transport.
Dégénéréscence. La Dégénéréscence peut appraı̂tre, soit au niveau de la recherche de la
solution initiale, soit au cours des itérations pour la recherche de la solution optimale.
Solution initiale : A chaque fois qu’on ajoute une quantité, soit une ligne soit une
colonne est saturée. Il se peut toutefois que, simultanément, une ligne et une
colonne soient saturées. Dans ce cas on obtiendra moins que m + n − 1 variables
de base. Afin de compléter la base, on ajoute une variable de base avec une quatité
nulle.
Pivotage En faisant entrer une variable dans la base, une seule variable doit quitter la
base. Dans certains cas, deux variables ayant la même valeur se trouvent annulées.
Dans ce case on doit garder l’une d’entre elles avec une valeur nulle dans la case
correspondante.
Des exemples sur ces différents cas particuliers seront discutés dans les séances de cours.
100
300
0
6
+3
5
+2
10
8
+3
100
500
3
1
0
4
+7
2
+10
300
0
300
200
1
200
7
300
9
300
6
11
300
5
12
1
100
3
1
Fig. 6.7 – Le troisième tableau (optimal).