Cours Optimization
Cours Optimization
1.1 Introduction
Dans ce chapitre, l’objectif est de familiariser l’étudiant avec les notions relatives à la
programmation linéaire. Plusieurs exemples illustrent les différents domaines d'application de
la programmation linéaire. De manière générale, la résolution de problèmes de programmation
mathématique vise à déterminer l'allocation optimale (c'est-à-dire la meilleure combinaison
possible) de ressources limitées pour atteindre certains objectifs. Les allocations doivent
minimiser ou maximiser une fonction dite objectif. En économie, ces fonctions sont par
exemple le profit ou le coût.
Optimiser z f x1 , x2 ,..., xn
souscontraintes
(1.1)
hi x1 , x2 ,..., xn bi avec i 1,2,..., m
et Li xi U i
Selon la nature des fonctions f et hi, on peut être confronté à plusieurs types de problèmes de
d’optimisation. Lorsque les fonctions f et hi, i = 1,...,m sont linéaires, il s'agit d'un problème de
programmation linéaire. Si de plus, on impose que les variables ne peuvent prendre que des
valeurs entières, on parle de programmation linéaire entière. Les problèmes dans lesquels la
1
fonction f ou hi sont non-linéaires font partie de l’optimisation non-linéaire. S’il n’y a pas de
contrainte, on dit que le problème est sans contraintes, sinon il est avec contraintes. Si les
bornes inferieur et supérieur ne sont pas définis, on dit que le problème est non-borné ou
ouvert, sinon c’est un problème borné.
La fonction Optimiser peut être soit Maximiser (Max), ou Minimiser (Min). On utilise la
fonction Max lorsqu’on veut augmenter le bénéfice par exemple, et la fonction Min lorsque on
veut minimiser les frais, les déchés, les couts de production, etc. Le choix de l’une des deux
fonctions dépond de ce que nos objectifs. De plus, il faut noter qu’on peut convertir un
problème de maximisation à un problème de minimisation en utilisant cette relation, et vis
versa :
Max( z ) Min( z ) (1.2)
Dans la majorité des logicielles qu’ont des modules d’optimisation, comme Matlab, Python ou
R, ces modules d’optimisation sont programmés pour résoudre des problèmes de minimisation
uniquement. Donc, si vous êtes confrontés à résoudre un problème de maximisation en
utilisant Matlab, par exemple, il est impératif de convertir votre problème de maximisation à
un problème de minimisation en utilisant la relation Eq. (1.2).
La programmation linéaire est une technique simple qui consiste à représenter des
relations complexes par des fonctions linéaires et à trouver ensuite les points optimaux. Le
mot important de la phrase précédente est représenté. Les relations réelles peuvent être
beaucoup plus complexes, mais nous pouvons les simplifier en relations linéaires. Un
problème de programmation linéaire (PL), revient donc à :
Optimiser z c1 x1 c2 x2 ... cn xn
souscontraintes
avec i 1,2,..., m
et x j 0, j 1,2,..., n
2
Les contraintes xj > 0, j = 1,...,n sont appelées contraintes de non-négativité.
1- Il faut tout d’abord identifier les variables du problème à valeur non connues (variable
de décision) et les représenter sous forme symbolique (exemple : x1, x2 ).
2- Identifier l’objectif à optimiser et le représenter sous une forme linéaire en fonction
des variables de décision, puis spécifier si le critère de sélection : maximiser ou à
minimiser.
3- Voir les restrictions du problème et les exprimer par des équations linéaires (les
contraintes).
Voyons à présent quelques exemples simples de programmation linéaire que l'on peut
rencontrer dans différents contextes réels. Ces exemples ont pour but de formuler
mathématiquement un problème donné.
Dans cette partie, nous allons voir comment formuler mathématiquement deux
problèmes de production, en utilisant les fonctions Max et Min.
Exemple 1.1 : Une entreprise fabrique des chaises et des tables à l’aide de deux machines A
et B. Chaque produit passe obligatoirement par les deux machines. Pour produire une chaise,
il faut 2 heures de machine A et 1 heure de machine B. Pour produire une table, il faut 1
heure de machine A et 2 heures de machine B. L'entreprise réalise un bénéfice de 3$ sur
chaque chaise et de 4$ sur chaque table. Les deux machines A et B sont disponibles 12 heures
par jour au maximum. Le problème consiste à savoir combien de chaises et de tables il faut
fabriquer pour maximiser le bénéfice.(Dodge et al., 2004)
Pour facilité la formulation mathématique, nous traçons un tableau comme indiquer ci-
dessous, tout en précisant : un, le nombre d'heures nécessaires pour produire une table unique
et chaise unique par chaque machine ; deux, le nombre total des heures disponibles pour
chaque machine ; et trois, le profit pour chaque unité de chaise et de table produite.
3
Machine Produit Disponibilité
Chaise Table
A 2 1 12
B 1 2 12
Bénéfice par
3 4
unité
z 3 x1 4 x2 (1.4)
L’équation (1.4) est notre fonction objectif. Puisque on veut augmenter le bénéfice de
l’entreprise, notre problème sera un problème de maximisation (Max).
Passons maintenant à la formulation des. Puisque la disponibilité des machines est limitée, on
ne peut pas accroître la production indéfiniment. Les deux machines A et B ne peuvent pas
fonctionner plus de 12 heures par jour pour une raison ou une autre. Par exemple : on doit
cesser les machines la nuit pour ne pas dérangé les voisins ; employer une équipe de nuit
s’avère très chère. Donc, on sait que pour produire une chaise, il faut 2 heures de machine A
alors que pour une table il n'en faut qu'une heure. La contrainte disponibilité concernant la
machine A s’écrit comme suit :
2 x1 1x2 12 (1.5)
De même, une chaise nécessite 1 heure de machine B, tandis qu'une table en demande 2. La
contrainte concernant la machine B, avec la même durée maximale de 12 heures par jour, est
donnée par :
1x1 2 x2 12 (1.6)
De plus, comme on ne peut pas produire de quantités négatives, il faut ajouter encore deux
contraintes de non-négativité :
x1 0 (1.7)
et
x2 0 (1.8)
4
Le problème consiste donc à trouver les valeurs des variables x1 et x2 qui maximisent le
bénéfice journalier (1.4) tout en satisfaisant les contraintes (1.5) à (1.8).
En résumé, le problème s'écrit sous la forme :
Max z 3 x1 4 x2
souscontraintes
2 x1 x2 12 (1.9)
x1 2 x2 12
et x1 , x2 0
Exemple 1.2 : Une compagnie possède deux mines de charbon A et B. La mine A produit
quotidiennement 1 tonne de charbon de qualité supérieure (1er choix), 1 tonne de qualité
moyenne (2ème choix), et 6 tonnes de qualité inférieure (3ème choix). La mine B produit par
jour 2, 4 et 3 tonnes de chacune des trois qualités. La compagnie doit produire au moins 90
tonnes de charbon de qualité supérieure, 120 tonnes de qualité moyenne et 180 tonnes de
qualité inférieure.
Sachant que le coût de production journalier est le même dans chaque mine, soit 1 000, quel
est le nombre de jours de production dans la mine A et dans la mine B qui minimisent le coût
de production de la compagnie ?(Dodge et al., 2004)
De la même façon que le précédant exemple, nous dressons un tableau tout en indiquant : le
tonnage de charbon produit par choix dans chaque mine ; l’objectif de production de charbon
par choix, ainsi que les frais journalier dans chaque mine.
5
Soit x1 et x2 le nombre des jours de travail dans les mines A et B, respectivement. En voulant
réduire les frais de production, systématiquement, il s’agit d’un problème de minimisation
dont la fonction objectif est la somme des frais journalier des deux mines A et B. la fonction
objectif qu’on doit minimiser s’écrit comme suit :
Pour satisfaire ces besoins, la compagnie doit produire au moins 90 tonnes de charbon de
qualité supérieur. Puisque la mine A produit une tonne par jour du charbon 1er choix tandis
que la mine B produit 2 tonnes, la contrainte de production du charbon 1er choix s’écrit :
x1 2 x2 90 (1.11)
x1 4 x2 120 (1.12)
6 x1 3 x2 180 (1.13)
Puisque il n’y a pas des jours négatifs, on ajoute deux contraintes de non-négativité :
x1 , x2 0 (1.14)
Exemple 1.3 : Un industriel veut produire un alliage Z à 30% de plomb, 30% de zinc et 40%
d’étain. Supposons qu’il puisse se procurer sur le marché des alliages A, B, C, D, E, F, G, H,
I dont les compositions et les prix respectifs sont donnés dans le tableau suivant :
6
Compositions des A B C D E F G H I Alliage à
alliages (en %) x1 x2 x3 x4 x5 x6 x7 x8 x9 fabriquer
Plomb 10 10 40 60 30 30 30 50 20 30%
Zinc 10 30 50 30 30 40 20 40 30 30%
Etain 80 60 10 10 40 30 50 10 50 40%
Coût au Kilo ($) 4.1 4.3 5.8 6 7.6 7.5 7.3 6.9 7.3
Combien doit-il acheter de chaque alliage A, B, C, D, E, F, G, H et I pour obtenir au prix de
revient minimum un 1 Kg de l’alliage Z ?(Dantzig, 1966)
Min z 4.1x1 4.3 x2 5.8 x3 6 x4 7.6 x5 7.5 x6 7.3 x7 6.9 x8 7.3 x9 (1.16)
Le produit final doive avoir des proportions bien déterminées de chaque composant, ni plus, ni
moins. Dans ce cas, des contraintes d’égalité doive être imposées. Pour le cas du plomb, on a :
10 x1 10 x2 40 x3 60 x4 30 x5 30 x6 30 x7 50 x8 20 x9 30 (1.17)
Pour le Zinc
10 x1 30 x2 50 x3 30 x4 30 x5 40 x6 20 x7 40 x8 30 x9 30 (1.18)
et fin, l’étain
80 x1 60 x2 10 x3 10 x4 40 x5 30 x6 50 x7 10 x8 50 x9 40 (1.19)
Puisque les proportions de chaque composant sont définies pour 1kg, la somme totale des
masses x1 à x9 doit être égale à 1kg. Pour satisfaire cette condition, on rajoute une autre
contrainte :
x1 x2 x3 x4 x5 x6 x7 x8 x9 1 (1.20)
7
Naturellement, une masse ne peut pas avoir une valeur négative, on rajoute des contraintes de
non-négativité. Ceci nous ramène à écrire le programme linéaire suivant :
8
Il y’a plusieurs façons de découper une barre, ce qu’on appelle plans de découpage (dans
certain livre, on les appelle motifs de découpage). Comme on peut le voir dans la Figure 1.1, il
y’a 7 plans de découpage possibles qu’on peut les résumer dans le Tableau 1.1, selon le
nombre de chaque longueur.
Sans faire des calcules, il claire que notre chaudronnier a besoin de 3 barre qu’il doit découper
selon les Plans 1, 2 et 3, respectivement. Utiliser d’autres plans peut satisfaire ces besoins,
mais ils génèrent soit de la chute (plans 4, 6 et 7) soit des pièces supplémentaires (plan 5).
Maintenant, on considère que ce chaudronnier a reçu une commande pour fabriquer 15 pièces
de longueur L1, 26 pièces de longueur L2 et 13 de L3. Quelle est le nombre minimal de barre
brute qu’il doit s’en procurer pour satisfaire la commande ? Dans ce cas, le calcule mentale
devient très difficile. D’une manière générale, le programme linéaire du problème de
découpage s’écrit comme suivant :
n
Min z xj
j 1
souscontraintes
n
(1.22)
aij x j bi i 1,..., m
j 1
et x j 0
9
où n est le nombre des plans, m est le nombre des pièces (ou des modèles), xj est le nombre de
fois ou le plan j est utilisé, aij est le nombre du modèle i obtenue en utilisant le plan j, bi est le
nombre totale du modèle i qui doit être fabriquer.
Dans notre cas, on a trois modèles de longueur à réaliser (m = 3) et 7 plans de découpe (n = 7).
En faisant usage du Tableau 1.1, le programme linéaire sous forme mathématique s’écrit :
Min z x1 x2 x3 x4 x5 x6 x7
souscontraintes
2 x1 1x2 0 x3 1x4 0 x5 0 x6 0 x7 15
(1.23)
0 x1 1x2 2 x3 0 x4 0 x5 3 x6 1x7 26
0 x1 1x2 2 x3 2 x4 5 x5 0 x6 3 x7 13
et x j 0 j 1,2,...,7
Il important de noter que le PL défini par l’Eq. (1.23) ainsi que dans sa forme générale (Eq.
1.22) sert à minimiser le nombre des barres identiques sans considération des chutes. Dans le
cas contraire où on a un stock de barres avec longueur différents, la fonction objectif doit être
modifié en introduisant les longueur des barres en stock et en minimisant les chutes.
Considérons l’exemple suivant :
Comme l’exemple précédant, nous commençons à établir les plans de découpe pour les deux
longueurs des barres brutes. Il existe 6 plans de découpe pour la barre de longueur 1.5m et 9
plans pour celle de 2m.
10
Les plans de découpe des deux barres doivent être numérotés de façon continue comme
indiqué dans le Tableau 1.2. Adoptons la notation suivante :
11
Le programme linéaire du l’exemple 1.4 s’écrit :
n1 n m
Min z L1 xj L2 xj bi H i
j 1 j n1 1 i 1
souscontraintes
n
(1.24)
aij x j bi avec i 1,2,..., m
j 1
et x j 0 j 1,2,..., n
La fonction objectif ici sert à minimiser les chutes qui est égale à la longueur totale des barres
brutes utilisées moins la longueur réel totale des l’ensemble des pieds produit. Deux types de
contrainte sont utilisés, des contraintes pour satisfaire la demande sur chaque type de pied, et
des contraintes de non-négativités. En introduisant les valeurs réelles de notre PL, on aura :
Min z 1.5 x1 ... x6 2 x7 ... x15 432 0.4 500 0.6 400 0.7
Souscontrainte
2 x3 2 x5 3x6 x8 x10 3 x11 2 x13 3 x14 5 x15 432
(1.25)
x2 2 x4 x5 x7 2 x9 x10 3 x12 2 x13 x14 500
2 x1 x2 x3 2 x7 2 x8 x9 x10 x11 400
xj 0 j 1,2,...,15
Example 1.5 : Une entreprise de production de semoule possède trois usines situées à Bouira,
Sétif et Biskra. Le blé nécessaire à la production arrive dans les ports du Bejaia et Annaba.
Les quantités hebdomadaires de blé nécessaires à chaque usine sont respectivement de 400,
300 et 200 tonnes. La quantité hebdomadaire qui arrive au port de Bejaia est de 550 tonnes,
12
et elle est de 350 tonnes à Annaba. Les coûts de transport d'un port à une usine sont donnés
dans le tableau suivant :
Le but est de déterminer les poids de blé à envoyer à chaque usine depuis chaque port afin
que :
• chaque usine reçoive, au moins, la quantité du blé qu'elle demande
• les quantités demandées à chaque port n'excèdent pas les quantités disponibles
• le coût total de transport soit minimum
On admet : xij est la quantité du blé transporté du port i a l’usine j avec un prix par tonne Cij.
Si est la quantité du blé disponible dans le port i, et Dj et la quantité demandée par l’usine j.
Pour simplifier la compréhension du problème, la Figure 1.2 schématise le plan de transport
qui doit être optimisé en déterminant les quantités optimales xij.
x11
Usine de Bouira (1)
C11=100 x21 D1 = 400
Port de Bejaia (1) C12=90
S1 = 550 C13=180 x12
Usine de Sétif (2)
C21=140 x22
D2 = 300
13
Pour formuler le PL sous forme mathématique, nous associons l’indice i avec les ports (point
de départ), et l’indice j avec les usines (point d’arrivée). n et m sont les nombres totales des
ports et des usines respectivement. Les contraintes de demande de chaque usine j imposent :
n
xij Dj (1.26)
i 1
Min z 100 x11 90 x12 180 x13 140 x21 130 x22 170 x23
souscontraintes
x11 x21 400
x12 x22 300
(1.30)
x13 x23 200
x11 x12 x13 550
x21 x22 x23 350
xij 0, i 1,2 j 1,2,3
Un programme linéaire est dit continu lorsque tous c’est variables de décisions
appartiens à un ensemble continue des nombre réels. Si en revient à l’exemple précédant, le
problème de transport, la quantité de blé transport d’un port à une usine peut être 0, 20.8, ou
55.785 tonnes. Dans ce cas la, le problème de transport est dit continu. Supposant maintenant
que le blé arrive au port dans des sacs de 500kg, on ne peut pas expédier 55.785 tonnes car sa
nécessite l’ouverture d’un sac pour extraire 285 kg du blé supplémentaire. Cependant, en peut
résoudre se problème en supposant que x, le variable de décision, appartient à un ensemble
14
discret composé des multiple de 0.5 tonne, x (0, 0.5, 1, 1.5, 2, 2.5, ….., N×0.5). Dans ce cas,
le programme linéaire est dit discret.
Maintenant, supposons que dans le port de Bejaia, le blé arrive en vrac, tandis que dans le port
de Annaba arrive conditionner en sac de 500kg. Dans ce cas, les variables de décision liées au
port de Béjaia, à savoir x11, x12 et x13 appartient à un ensemble continu, tandis que les variables
liées au port d’Annaba, x21, x22 et x23 appartiennent à un ensemble discret. Le programme
linéaire dans ce cas est dit mixte car il contient des variables continues et des variables
discrets.
Il existe 4 types de solution qu’un PL peut avoir : 1-une solution unique, 2-un segment de
solutions, 3-solution inexistante, 4-solution à l’infinie. Nous allons étudier ces quatre solutions
en utilisant des exemples.
Min z x1 2 x2
souscontraintes
4 x1 6 x2 9 (1.31)
x1 x2 4
x1 , x2 0
Afin de résoudre le PL de l’Eq. (1.31), nous cherchons tous d’abor l’ensemble des solutions
qui satisfassent la première contrainte. Pour se faire, nous traçons la droite –4x1+6x2=9, et
nous déterminons la zone ou chaque paire (x1, x2) satisfaite la contrainte –4x1+6x2 9. Il est
clair que cette zone ce situe en bas de la droite, comme indiquer dans la Figure 1.3a.
15
Figure 1.3a En gris, zone des solutions qui Figure 1.3b En gris, zone des solutions qui
satisfassent la première contrainte. satisfassent la deuxième contrainte.
Figure 1.3c En gris, zone des solutions qui Figure 1.3d Isolines de la fonction objectif.
satisfassent les contraintes de non-négativités.
Figure 1.4 Région des solutions réalisables ainsi que la localisation de la solution optimale.
16
Nous ferons la même chose pour la deuxième contrainte, nous posons x1+x2=4, on cherche la
zone qui satisfait la contrainte x1+x2 4. C’est la zone en gris dans La Figure 1.3b. Les
contraintes de non-négativités imposent que les solutions doivent appartenir à l’hyperoctant
positif défini dans la Figure 1.3c. La dernière étape consiste à tracer les isolines de la fonction
objectif z. Pour ce faire, il suffit de donner une valeur à z = Cst puis tracer la droite
x1– 2x2 = Cst. En variant la valeur à donner à z comme indiquer dans la Figure 1.3d, il est
possible de déterminer la direction ou la fonction objectif diminue. L’intersection des zones en
gris définis dans les Figure 1.3a, b et c donne se qu’on appelle la Région Réalisable. Elle est
caractérisée par le fait que chaque paire de points (x1, x2) satisfait toutes les contraintes du PL
défini en Eq. (1.31). En suivant la direction de diminution de la fonction objectif (direction
perpendiculaire au isolines), on peut déterminer visuellement la solution optimale qui est le
point le plus loin en cette direction (le point d’intersection des deux contraintes).
17
Les isolines de la fonction objectif ainsi que la première contrainte ont la même pente. De ce
fait, lorsqu’on cherche le point le plus loin en direction de la diminution de la fonction
objectif, touts les point situent sur segment AB ont la même valeur de la fonction objectif.
Puisque ces points satisfassent toutes les contraintes (sont inclus dans la région réalisable), ils
sont considérés comme des solutions optimales (segment de solutions). De point de vue
pratique, puisqu’il est impossible de réalisée toutes les solutions, il suffit de prendre une
solution appartenant au segment de solution et travailler avec.
Min z x1 2 x2
souscontraintes
0.5 x1 x2 3 (1.33)
x1 x2 2
x1 , x2 0
18
1.4.4 Solution à l’infinie
La région des solutions réalisable du PL ci-dessus est la zone colorée en gris illustré dans la
Figure 1. 7. En suivant la direction d’augmentation de la fonction objectif (puisque en a un
problème de maximisation), il est impossible de trouver une solution optimale. La région
réalisable n’a pas de limite en direction d’augmentation de la fonction objectif, elle étendue
vers l’infinie. Il suffit d'attribuer des valeurs à x1 et x2 suffisamment grandes toute en gardant
les contraintes satisfaites. La valeur de la fonction objectif peut être augmentée indéfiniment.
On dit que le Pl à une solution à l’infinie.
Forme canonique : On dit que le PL est sous forme canonique lorsqu’on a une fonction à
maximiser sous contraintes d’inégalités de type .
19
n
Max z cjxj
j 1
souscontraintes
n
(1.35)
aij x j bi i 1,2,..., m
j 1
xj 0 j 1,2,..., n
1. Si on a une fonction objectif à minimiser, elle est converti à une fonction à maximiser
en la multipliant par –1 (voir l’Eq. 1.2).
n n
Min z cjxj Max z cjxj (1.36)
j 1 j 1
2. Si on a une contrainte de type , elle est multiplier par –1 pour quelle devient une
contrainte de type .
n n
aij xi bi aij xi bi (1.37)
j 1 j 1
Min z 3 x1 2 x2
souscontraintes
2 x1 4 x2 3
(1.40)
4 x1 7 x2 5
x1 2 x2 6
x1 , x2 0
20
La fonction objectif est à minimiser, elle doit être converti à maximiser
4 x1 7 x2 5 4 x1 7 x2 5
x1 2 x2 6 x1 2 x2 6
x1 2 x2 6
x1 2 x2 6 x1 2 x2 6
Max Z 3x1 2 x2
souscontraintes
2 x1 4 x2 3
4 x1 7 x2 5 (1.41)
x1 2 x2 6
x1 2 x2 6
x1 , x2 0
Forme standard : le PL est dit sous forme standard lorsqu’il s’agit de maximiser une fonction
objectif sous un ensemble de contraintes d’égalité (de type =). Sa forme mathématique est la
suivante :
n
Max z cjxj
j 1
souscontraintes
n
(1.42)
aij x j bi i 1,2,..., m
j 1
xj 0 j 1,2,..., n
21
L’algorithme de résolution qu’on va présenter dans cette section, à savoir l’algorithme
Simplexe, exige que le PL soit écrit sous forme standard avec des bi positifs. Dans un cas
générale, la conversion des contraintes d’inégalités (de types et ) à des contraintes d’égalité
se fait par l’introduction des variables d’écarts.
Variable d’écart : C’est une variables non-négatives introduite dans une inégalité pour la
transformer en contrainte d’égalité. Les règles d’introduction des variables d’écarts sont :
1- Si on a une contrainte de type , nous ajoutant une variable d’écart (e1) à l’équation :
ai1 x1 ai 2 x2 ... ain xn bi ai1 x1 ai 2 x2 ... ain xn e1 bi (1.43)
2- Si on a une contrainte de type , nous soustrayant une variable d’écart (e1) à
l’équation :
ai1 x1 ai 2 x2 ... ain xn bi ai1 x1 ai 2 x2 ... ain xn e1 bi (1.44)
La première contrainte est de type , donc en ajoute une variable d’écart, soit e1 :
2 x1 4 x2 3 2 x1 4 x2 e1 3
La deuxième contrainte est de type , donc en soustrait une variable d’écart, soit e2 :
4 x1 7 x2 5 4 x1 7 x2 e2 5
La troisième contrainte et de type =, on a rien à ajouter comme variable d’écart. Par contre, le
second membre de l’inégalité est négatif, donc, on multiplie la contrainte par –1 pour avoir
une bi positif :
x1 2 x2 6 x1 2 x2 6
22
Max Z 3x1 2 x2 0e1 0e2
sous contraintes
2 x1 4 x2 e1 3
(1.45)
4 x1 7 x2 e2 5
x1 2 x2 6
x1 , x2 , e1 , e2 0
Les variables d’écart peuvent être introduites dans la fonction objectif en imposant un
coefficient nul (zéro).
Variable sans restriction du signe : Dans certain problème, une ou plusieurs variables de
décision peuvent être sans restriction de signe, c-a-dire, elles admettent des valeurs négatives.
Or l’algorithme de Simplex ne résout que des problèmes avec des variables de décision non-
négatives. Il est possible de décomposer une variable de décision sans restriction de signe en
deux variables de décision distingues non-négatives :
xj xj xj
avec
xj maximum(0, x j ) (1.46)
xj maximum(0, x j )
xj , xj 0
Pour mettre le PL précédant sous forme standard, il faut suivre les étapes suivant :
23
x1 4 x2 5 x1 4 x2 e1 5
3- Rien a faire pour la deuxième contrainte, elle sous forme d’égalité.
4- La variable x2 est sans restriction de signe, donc on doit la décomposer comme
suivant : x2 x2 x2
5- Appliqué la décomposition à l’ensemble des équations du PL :
Max Z x1 2 x2 x2
sous contraintes
x1 4 x2 x2 e1 5
2 x1 3 x2 x2 4
x1 , x2 , x2 , e1 0
Max Z x1 2 x2 2 x2
sous contraintes
x1 4 x2 4 x2 e1 5 (1.48)
2 x1 3x2 3 x2 4
x1 , x2 , x2 , e1 0
n m
Max z ci xi 0 ei
j 1 i 1
sous containtes
m
aij x j ei bi (1.49)
j 1
avec
x j 0, j 1,2,..., n
ei 0, i 1,2,..., m
24
Il est possible d’écrire le PL standard précédant sous forme matricielle :
Max z CX
sous containtes
AX B (1.50)
avec
X 0
Tel que X est un vecteur colonne qui rassemble les variables de décision et les variables
d’écart dont la dimension est (n+m)×1 :
T
X x1 , x2 ,..., xn , e1 , e2 ,..., em (1.51)
T
B b1 , b2 ,..., bm (1.54)
Max z x1 2 x2
souscontraintes
4 x1 6 x2 e1 9 (1.55)
x1 x2 e2 4
x1 , x2 , e1 , e2 0
25
Pour écrire ce PL sous forme matricielle, on a :
T
X x1 , x2 , e1 , e2 (1.56)
C 1,2,0,0 (1.57)
4 6 1 0
A (1.58)
1 1 0 1
T
B 9,4 (1.59)
Une solution de base est admissible si toutes les variables de la solution de base sont positives
(X 0).
Si une solution de base est admissible, alors les valeurs des variables de décisions xi du
vecteur X représentent un point extrême de la région réalisable.
Considérant maintenant le PL standard donné par l’Eq. (1.55). Les variables à optimiser sont
x1 et x2 (variables de décisions) en plus de e1 et e2 (variables d’écarts). Au total, le vecteur X
est composé de 4 variables (N = 4). Le PL contient 2 contraintes (M = 2). Le nombre des
26
variables hors base qui doivent être mis égale à 0 est de N – M = 4 – 2 = 2. Le nombre des
variables de base dont leur valeurs doivent être déduite de la résolution du système des
contraintes AX = B, est de M = 2.
Il est facile de déterminer les valeurs des VB, e1 et e2. Dans ce cas la, e1 = 9 et e2 = 4. La
solution X = [0, 0, 9, 4]T est dit solution de base admise car toutes ces composants sont non-
négatives.
Considérons maintenant x1 et e1 des VHB (x1 = e1 = 0), les valeurs des VB obtenues après
remplacement des VHB dans l’Eq. (1.60) sont x2 = 3/2 et e2 = 5/2. Le vecteur X = [0, 3/2, 0,
5/2] T est une solution de base admise aussi.
27
Pour chaque solution de base admise, les valeurs des variables de décision, xi, représentent un
point extrême de la région réalisable. Par exemple, le point extrême de la solution de base X =
[0, 3/2, 0, 5/2] T est la paire (0,3/2). Le Tableau 1.3 liste tout les solutions de bases possibles,
ainsi que les points extrêmes. En générale, les points extrêmes représentent les points
d’intersection des droites représentatives des contraintes, appartenant à la région réalisable
(voir la Figure 1.8). Les points d’intersection des contraintes loin de la région réalisable ne
sont pas des points extrêmes.
Figure 1.8 Tous les points encerclés sont des points extrêmes
Min z 25 x1 15 x2
sous contraintes
2 x1 2 x2 240 (1.61)
3 x1 x2 140
x1 , x2 0
1er étape : écrire le PL sous forme standard. Dans ce cas l’Eq. (1.61) devient :
28
Max z 25 x1 15 x2 0e1 0e2
sous contraintes
2 x1 2 x2 e1 240 (1.62)
3 x1 x2 e2 140
x1 , x2 , e1 , e2 0
2ème étape : démarré la première itération. Pour ce faire, on doit calculer les Zj ainsi que les
Cj – Zj.
La première case de la ligne violète des Zj est calculer a partir de la formule suivante :
29
Zj C j (VB ) Q j (1.63)
Cette première case, généralement donne la valeur de la fonction objectif pour la solution de
base considérée. Pour le reste des cases, on utilise cette formule
Par la suite nous calculons la différance Cj – Zj est on reporte leur valeur dans la colonne
jaune. On constate que la premier valeur des Zj n’a pas un Cj qui lui correspond, c’est pour
cela on ne la calcule pas. L’objectif ici, est de trouver la variable entrante dans la base (VE).
Le résultat de calcule des Cj – Zj est présenté dans le Tableau de simplex N°2.
30
La variable entrante dans la base est x1 puisqu’elle a la valeur Cj – Zj la plus élevé.
La variable sortant de la base (VS), qui va être remplacé par la variable entrante (VE) est
obtenus on calculant le ratio Rt, colonne vert. Ce dernier est calculé en divisant les quantités
(Qj), sur les aij de la variable entrante.
Après calculer des Rt, la variable sortante est celle dont le ratio Rt a la valeur la plus faible.
Dans notre exemple, on voit dans le tableau de simplexe N°3 qu’e2 est la variable sortante.
e2 140 3 1 0 1 140/3
0
=46.666
Zj 0 0 0 0 0
C j – Zj 25 15 0 0
3ème étape : enchainer avec la deuxième itération. Pour ce faire, il faut : un, dresser un
nouveau tableau de simplexe vierge, deux, remplacer la variable sortante e2 par la variable
entrante x1. Trois, recopier les coefficients Cj dans la ligne et dans la colonne avec les valeurs
correspondant aux nouveau variable de base, 0 pour e1 et 25 pour x1 (voir Tableau de simplex
N°4). Quatre, remplir le reste du tableau en suivant les règles suivantes :
31
1- Les lignes hors ligne du pivot (ou la ligne de la nouvelle variable entrante, dans ce cas
x1, voir Tableau de simplexe N°4), sont rempli en utilisant cette équation pour calculer
les quantités Qj, et les coefficients aij:
Pl Pc
NV AV
Pivot
NV : Nouvelle Valeur
AV : Ancienne Valeur (1.66)
Pl : Projection sur ligne
Pc : Projection sur colonne
Pivot : Valeur du pivot
Par exemple, pour calculer la nouvelle valeur de Q1, on l’ancienne valeur est 240 (on
rouge, voir la Figure 1.9). La projection de cette valeur sur la ligne donne 140, la
projection sur la colonne est 2, le pivot est 3. En appliquant la règle de l’Eq. (1.66), on
a : NV = 240 – ((140×2)/3) = 440/3.
Pour la case suivante (juste en bas de x1), l’ancienne valeur est 2, la projection sur la
ligne est 3, la projection sur colonne donne 2 (la valeur elle-même), le pivot est
toujours 3, l’application de la l’Eq. (1.66) donne : NV = 2 – ((3×2)/3) = 0.
La même règle est utilisée pour remplir le reste de la ligne et toute autre ligne hors
ligne du pivot s’il en a.
2- Pour la ligne du pivot, la nouvelle valeur est calculée en divisant l’ancienne valeur sur
le pivot :
NV AV / Pivot (1.67)
Par la suite, les Zj ainsi que les Cj – Zj sont calculés de la même façon que la 2ème étape. Les
résultats de calcule sont présentés dans le Tableau de simplexe N°5
33
Après calcule des Cj – Zj , la nouvelle variable entrante est déterminée sur la base de la valeur
la plus grande, Maximum (Cj – Zj ), dans ce cas c’est x2.
En sachant VE, il est possible de designer la variable sortante en calculant le ratio Rt. Dans
notre exemple, la VS est e1.
3ème étape : continuation des itérations. En connaissant VS, VE et pivot, nous reprenons le
même chemin que la 2ème étape. C'est-à-dire, redessiner un nouveau tableau, remplacer VS par
VE, remplir le tableau en utilisant les mêmes régale que la 2ème étape, déterminer les nouveau
VE, VS et Pivot. Le résultat de la troisième itération est présenté dans le Tableau de simplex
N°6.
4ème étape : critère d’arrêt. Les itérations s’arrêtent lorsque tous les Cj – Zj sont inférieur ou
égale à zéro Cj – Zj 0. Dans le Tableau de simplex N°4, on voit que tous les Cj – Zj 0. Le
critère est vérifié, donc on arrêt les itérations.
34
Tableau de simplex N°4
Cj 25 15 0 0
Cj
VB Qj x1 x2 e1 e2 Rt
(VB)
15 x2 110 0 1 3/4 –1/2
25 x1 10 1 0 –1/4 1/2
Zj 1900 25 15 5 5
C j – Zj 0 0 –5 –5
Après vérification du critère d’arrêt, nous pouvons facilement récupérer notre solution et la
valeur de la fonction objectif à partir de dernier tableau. Comme en vois ci-dessus, la solution
est x1 = 10 et x2 = 110, et la valeur optimale de la fonction objectif est Z = 1900.
Il est important de noter qu’initialement, notre PL s’agit d’un problème de minimisation (voir
l’Ea. 1.61), or que nous l’avons converti en un problème de maximisation pour le résoudre en
utilisant l’algorithme de simplexe (voir l’Eq. 1.62). Donc, pour retrouver la valeur optimale de
la fonction objectif du problème initiale, à savoir l’Eq. 1.61, il faut juste multiplier la valeur de
obtenu par l’algorithme simplexe par –1. Dans notre cas z = –1900. Pour vérifier la certitude
de la solution, il sufi de remplacer la solution dans les équations du problème : condition
satisfaite
35