Introduction
La programmation linéaire est sans aucun doute la technique la plus
connue de la recherche opérationnelle. C’est aussi un des outils les plus
puissants et les plus utilisés en applications industrielles parmi les
technologies d’aide à la décision pour ne citer que :
- Planification de la production
- Répartition des ressources
- Choix de produits à fabriquer
- Planification d’investissements
- Etablissement de routes et d’horaires
- Affectation et gestion de personnel
- Gestion de projet
- …
La renommée de la programmation linéaire remonte en effet aux
années cinquante quand G.B. Dantzig découvrit l’algorithme du simplexe,
principal outil de résolution des programmes linéaires.
L’importance de la programmation linéaire est liée aux facteurs
suivants :
- De nombreux problèmes de la vie économique peuvent se formuler
comme des programmes linéaires. Ceci est d’autant plus vrai que
depuis la deuxième guerre mondiale, les organisations
économiques et sociales en grandissant en taille ont également
grandi en complexité quant à leur fonctionnement.
- Une autre raison est le développement des outils de calcul. Il ne
fait nul doute que le développement de la recherche opérationnelle
et en particulier de la programmation linéaire est lié au
développement des ordinateurs qui grâce à leurs fantastiques
moyens de calcul permettent de résoudre des problèmes qu’il
n’était pas possible d’étudier avant l’apparition de ces outils de
calcul. De fait, résoudre un programme linéaire est un problème de
mathématiques appliquées et l’algorithme du simplexe n’est pas
1-Problème de maximisation
b) Modélisation
La construction d’un modèle est, en général, une opération en trois
étapes :
1. Variables de décision
Définition 1 : on appelle variable de décision toute quantité utile à la
résolution du problème dont le modèle détermine la valeur.
2. Fonction objectif
Définition 2 : l’objectif est la quantité que l’on veut maximiser ou
minimiser.
3. Contraintes
Définitions 3 : les contraintes sont toutes les relations entre les
variables qui limitent les valeurs possibles que peuvent prendre ces
variables.
c) Résolution graphique
Les modèles de programmation linéaire à deux variables sont des
problèmes très simples à résoudre moyennant une représentation
graphique en géométrie plane. Ceci dit, les modèles relevant de cas
concrets sont rarement à deux variables.
Rappels théoriques
Nous admettons les résultats suivants.
Théorème 1 : les valeurs de la fonction linéaire à deux variables x et y
de type Ax + By le long de tout segment de droite sont comprises entre
les valeurs des extrémités, sauf cas particulier où elles peuvent leur être
égales.
© Reproduction interdite - 10 -
Le modèle du cas MOBILIA se résume sous la forme suivante, appelée
aussi forme canonique du programme linéaire :
[ MAX ] Z 7T 5C
sous
4T 3C 240
2T C 100
C 60
T 0, C 0
© Reproduction interdite - 11 -
Figure 1.1
Figure 1.2
© Reproduction interdite - 12 -
Enfin, on représente la troisième contrainte C 60 en traçant la
droite C 60 , droite passant par le point (0,60) et parallèle à l’axe
des abscisses (OT)
Figure 1.3
© Reproduction interdite - 13 -
Méthode des droites parallèles
Une fois le polygone des solutions admissibles représenté, il s’agit de
déterminer l’optimum qui se trouve forcément sur l’un des sommets du
polygone. Cette méthode consiste alors à :
- Tracer la droite représentant la fonction objectif de valeur nulle Z
= 0, puis à repousser la parallèle à cette droite jusqu’au sommet le
plus éloigné de l’origine. Les coordonnées de ce sommet
fournissent la solution optimale.
Toutefois, on peut toujours vérifier ce résultat en procédant par la
seconde méthode qu’on traitera par la suite.
Dans notre cas le sommet optimal tel qu’il apparaît dans la figure 1.4 est
le sommet de rencontre des droites 4T 3C 240 et 2T C 100 . Il
s’agit de résoudre le système linéaire simple :
4T 3C 240
2T C 100 (x –2)
(100C)
C 240200 , soit C 40 et T 30
2
Donc c’est le sommet de coordonnées (30,40).
Pour maximiser le profit, l’entreprise MOBILIA doit fabriquer 30 tables et
40 chaises, soit un profit de : 7 x 30 + 5 x 40 = 410 DH.
© Reproduction interdite - 14 -
Sommet O (0,0) ZO = 0
Sommet A(0,60) ZA = 300
Sommet B(15,60) ZB = 405
Sommet C(30,40) ZC = 410
Sommet D(50,0) ZD = 350
2-Problème de minimisation
1
Unité de mesure de poids ancienne, à peu près 500 grammes
© Reproduction interdite - 15 -
Le propriétaire de la société souhaite un programme d’alimentation de
coût minimal.
b) Modélisation
Notons A le nombre de livres de type A achetées et B le nombre de livres
de type B achetées. Ce sont les deux variables de décision du problème.
1 3
2 A (contra int es sur le fer ) D3
2
A 0, B 0 (contra int es de non négativité )
c) Résolution
Dans un premier temps nous représentons le domaine des solutions
réalisables en résolvant graphiquement le système d’inéquations des
contraintes. Ce domaine est présenté dans la figure 2.1.
Le polygone convexe des solutions admissibles est non borné. C’est le
cas de la plupart des problèmes de minimisation.
© Reproduction interdite - 16 -
Le coût minimal d’alimentation des dindons est : ZMIN = 2.8,4 + 3.4,8,
soit ZMIN = 31,20 DH
Figure 2.1
© Reproduction interdite - 17 -
3-Cas particuliers
a) Redondance
Une contrainte est dite redondante lorsqu’elle est inutile. Les autres
contraintes la rendent superflue.
Exemple :
Soit le programme linéaire suivant :
[ MAX ] Z 2X 3y
sous
X Y 20
2 X Y 30
Y
X 25
2
X 0; Y 0
On remarque que la droite D3 n’affecte pas le polygone des solutions
réalisables (Figure 3.1) et donc la contrainte correspondante est
redondante. On peut donc l’éliminer sans affecter la résolution du
problème.
Figure 3.1
© Reproduction interdite - 18 -
b) Problèmes « insolubles »
Si l’ensemble des contraintes est incohérent (intersection vide) alors le
problème est insoluble.
Ceci est courant dans des situations concrètes comportant des centaines
de contraintes.
Par exemple, suppose que le responsable marketing insiste sur la
production de 300 tables minimum afin de satisfaire la demande (T
300) et d’autre part, le responsable de production annonce la production
d’au plus 250 tables pour un problème de rupture de stock en matière
premières (T 250)
Dans ce cas là, le domaine des solutions admissibles est forcément vide
à cause de l’incohérence de ces deux contraintes (T 300 et T 250)
Pour illustrer graphiquement un problème infaisable, considérons le cas
suivant :
X 2Y 6
2 X Y 8
3 X 4Y 24
X 0; Y 0
Figure 3.2
© Reproduction interdite - 19 -
c) Problèmes non bornés
Un problème de programmation linéaire peut avoir une solution non
finie. C’est le cas d’un problème de maximisation quand une ou plusieurs
variables solutions peuvent prendre des valeurs infiniment grandes sans
violer aucune des contraintes.
Graphiquement, on a affaire à un domaine de solutions non borné.
Considérons le cas suivant pour illustrer cette situation :
[ MAX ] Z 3X 5 y
sous
X 5
Y 10
X 2Y 10
X 0; Y 0
Figure 3.3
© Reproduction interdite - 20 -
d) Dégénérescence
On rencontre deux types de dégénérescence :
© Reproduction interdite - 21 -
Figure 3.4
Deuxième type de dégénérescence
Pour illustrer ce type, utilisons le programme linéaire simple suivant :
[ MAX ] Z 50 X 20Y
sous
2 X 4Y 400
2 X Y 160
X Y 120
X 60
X 0; Y 0
Figure 3.5
© Reproduction interdite - 22 -
On est en présence d’une dégénérescence de deuxième type si, par un
des sommets du domaine des solutions réalisables au moins, passent
plus de deux droites. C’est le cas de la droite D4 dans notre exemple
(Figure 3.5). Seules interviennent dans la résolution du problème les
droites qui forment la frontière de la zone des solutions admissibles.
La droite D4 ne joue aucun rôle dans la résolution du problème et peut
être supprimée.
4-Analyse de sensibilité
Un problème de programmation linéaire est défini par un certain nombre
de paramètres. Ce sont :
- les coefficients de la fonction objectif (cj),
- les seconds membres des contraintes (bi),
- les coefficients techniques (aij).
Si ces coefficients changent, la solution du problème de programmation
linéaire peut être modifiée. A partir du cas MOBILIA nous pouvons
étudier l’effet de telles variations.
© Reproduction interdite - 23 -
7
La valeur absolue de la pente devient, après perturbation, p
5
Si est négatif, la valeur absolue de la pente diminue, si est positif elle
augmente. On voit sur la figure 4.1, que lorsque > 0 est ajouté au
coefficient c1, la solution restera au même point extrême C tant que la
droite iso-profit reste comprise entre le cas 1 sans perturbation le cas 3,
qui est celui où la pente de la droite iso-profit est identique à la pente de
la droite D1. Ce cas correspond à :
7
2
5
C’est-à-dire aussi
3
On en conclut que si la contribution unitaire varie entre 7 DH et 10 DH,
la solution du programme reste inchangée. Si la contribution dépasse
légèrement la valeur 10 DH l’optimum va se déplacer au point extrême
D.
Pour une contribution exactement égale à 10 DH, il y a une infinité de
solutions qui sont tous les points de l’arête [C,D].
Si < 0 est ajouté à la contribution unitaire, la solution reste inchangée
tant que la droite iso-profit reste comprise entre le cas 1 et le cas 2. Ce
dernier correspond à l’égalité des pentes de la droite iso-profit et de la
droite D2, c’est à dire
7 4
5 3
1
ce qui donne
3
1
Si devient légèrement inférieur à , c'est-à-dire si c1 devient
3
20
inférieur à , l’optimum se trouve au point extrême B.
3
20
Pour une contribution exactement égale à DH, il y a une infinité de
3
solutions qui sont tous les points du segment [B,C].
© Reproduction interdite - 24 -
20
Nous venons de voir que si la « plage » de variation c1 10
3
l’optimum reste au même point extrême. Cette information est utile pour
le gestionnaire. Une analyse similaire peut être faite pour le coefficient
c2.
Figure 4.1
© Reproduction interdite - 25 -
D2 tant que la droite correspondant à D2 reste comprise entre les cas 1
et 2 représentées sur la figure 4.2.
Lorsque 0 , le point solution reste le point extrême défini par
l’intersection des droites D1 et D2 tant que la droite D2 reste comprise
entre les cas 1 et 3.
La solution est donc définie par l’intersection des droites associées aux
deux mêmes contraintes tant que reste comprise entre les deux
valeurs min et max, où min est la valeur telle que la droite d’équation
2 x y 100 min
passe par le point B et max est la valeur telle que la droite d’équation
2 x y 100 max
passe par le point E.
15 60
Or B est de coordonnées et E de coordonnées
60 0
On doit donc avoir, pour définir min
2.15 + 60 = 100 + min soit min = -10
et pour max
2.60 + 0 = 100 + max soit max = 20
Donc tant que le second membre de la contrainte D2 reste compris entre
100 – 10 = 90 et 100 + 20 = 120
Le point correspondant à l’optimum reste défini par l’intersection de D1
et D2 et l’optimum se déplace sur le segment [B ,E]. Quand ce point
optimum se déplace, la valeur de la fonction objectif est modifiée. Il sera
utile pour le gestionnaire de savoir comment va varier son profit quand
la disponibilité des ressources sera modifiée. Tant que l’optimum reste
sur l’arête [B ,E] on aura un même taux de variation du profit en
fonction de la variation de la quantité de ressource disponible. Ce taux
de variation pourrait être calculé, à partir du cas de figure considéré. Il
sera appelé la valeur marginale de la ressource associée à la contrainte
D2.
Les logiciels de Programmation Linéaire, comme le Solveur d’Excel,
fournissent cette information. On y reviendra dans une section spéciale.
© Reproduction interdite - 26 -
Figure 4.2
© Reproduction interdite - 27 -
[ MAX ] Z c1 x1 c 2 x 2 ... c n x n
sous les contra int es
a11 x1 a12 x 2 ... a1n x n b1
a x a x ... a x b
12 1 22 2 2n n 2
...
a x a x ... a x b
m1 1 m2 2 mn n m
x1 0, x 2 0, ..., x n 0
ou bien
j n
[ MAX ] Z c
j 1
j xj
sous
n
a ij x j i 1,..., m
j 1
x 0 j 1,..., n
j
[ MAX ] Z c t x
Sous
Ax b
x 0
Où
a11 ... a1n b1
A . ... . ; c t (c1 , c2 ,..., cn ) ; x t ( x1 , x2 ,..., xn ) et b .
a b
m1 ... a mn m
© Reproduction interdite - 28 -
Mais cette méthode est impraticable au-delà de deux variables et le
recours à une méthode générale devient indispensable pour des cas
concrets à plusieurs variables et plusieurs contraintes.
© Reproduction interdite - 29 -
Soit le programme linéaire sous sa forme canonique :
[ MAX ] Z 7 x 5 y
sous
4 x 3 y 240
2 x y 100
y 60
x 0, y 0
La méthode du simplexe nécessite la mise sous forme standard du
programme linéaire à résoudre en ajoutant autant de variables d’écart
qu’il y a de contraintes de type inégalité.
x 4 3 1 0 0 240
y
x e1 c (7,5,0,0,0)
t A 2 1 0 1 0 b 100 .
e2 ; ;
0 1 0 0 1 et 60
e3
© Reproduction interdite - 30 -
L’algorithme du simplexe est itératif, autrement dit, il part d’une solution
de départ admissible dite solution de base réalisable et essaie de
l’améliorer de proche en proche, c'est-à-dire d’une solution de base
réalisable à une autre solution de base améliorante jusqu’à l’optimum.
© Reproduction interdite - 31 -
La matrice B est carrée d’ordre m. Si elle définit une base, elle admet
une matrice inverse B-1.
Une solution du système est donc
x D 0, x B B 1b
Si l’expression B-1b est non négative (≥0), on une solution admissible qui
vérifie les contraintes et que nous appellerons une solution de base
réalisable ou admissible.
x ( x D , x B ) (0, B 1b) 0
Si le second membre b est positif, une solution de base réalisable
évidente est obtenue en annulant les variables de décision et en
affectant le second membre aux variables d’écart.
© Reproduction interdite - 32 -
x
[ MAX ] Z (7 5)
y
sous
D
B
x
4 3 1 0 0 y 240
2 1 0 1 0 e1 100
0 1 0 0 1 e2 60
e3
Soit
DxD Bx B b
avec
240
x 0
x D et x B B 1b I 3 b b 100
y 0 60
Une solution de base réalisable de départ correspond ici à l’origine.
© Reproduction interdite - 33 -
La variable ainsi sélectionnée est appelée variable entrante ( y restant
nulle, c'est-à-dire variable hors-base)
e1 240 4 x 3 y
e 2 100 2 x y
e 60 y
3
or y = 0
soit
e1 240 4 x
e 2 100 2 x
e 60
3
on doit avoir
e1 0, e2 0 et e3 0
e1 0 si 240 4 x 0, soit x 60
e2 0 si 100 2 x 0, soit x 50
© Reproduction interdite - 34 -
La variable e2 devient variable hors-base. e2 est dite variable sortante.
© Reproduction interdite - 35 -
y 2e2 e140
2x y e2 100
y e3 60
e140 y 2e2
1 1
x50 2 y 2 e2
e3 60 y
Or e2 0
e1 40 y2 0
1
x50 2 y0
e3 60 y0
y 40
y 100
y 60
donc, la valeur maximale que nous pouvons affecter à y est 40.
Si y40 alors x30;e10;e3 20
la variable e1 devient variable hors-base : c’est la variable sortante.
Nous obtenons ainsi la solution de base admissible suivante :
- variables hors base : e1e2 0
- variables de base : x30; y40;e3 20
- la valeur de Z : Z 7.305.40210200410
en fait, on se trouve au sommet adjacent de coordonnées 30
40
Cette solution peut-elle être améliorée ?
Nous avons déterminer la valeur 40 à donner à y à partir de l’équation :
e140 y2e2
soit y40e12e2
La fonction objectif résultant de la première itération est :
3 7
Z 350 y e2
2 2
3 7
devient Z 350 2 (40e12e2) 2 e2
© Reproduction interdite - 36 -
3 1
soit Z 410 2 e1 2 e2
Les coefficients des variables e1 et e2 sont négatifs. Faire « entrer » e1
ou e2 réduirait la valeur de Z. Il n’est donc plus possible d’améliorer Z.
Nous avons obtenu la solution optimale :
x30; y40;Zoptimal410
Remarques
- A chaque itération nous avons choisi parmi les variables hors-base
de la solution en cours une variable qui devient positive : c’est la
variable entrante.
- Cette variable est portée à une valeur telle qu’une des variables de
base devient nulle : c’est la variable sortante.
Cette transformation correspond au passage d’un sommet à un sommet
adjacent.
Il y a échange de variables : l’une « sort » de la base, l’autre y « entre ».
Critères de sélection de ces variables
Critère de choix de la variable entrante :
Pour déterminer la variable entrante, on exprime la fonction économique
en fonction des seules variables hors base et on choisit la variable du
coefficient positif le plus élevé.
Critère de choix de la variable sortante :
On effectue les rapports des seconds membres des contraintes aux
coefficients correspondants de la variable entrante. La variable sortante
correspond au plus petit rapport strictement positif.
Critère d’arrêt :
Lorsque les coefficients de la fonction objectif exprimée en fonction des
seules variables hors base sont négatifs ou nuls, l’algorithme s’arrête. La
solution optimale est trouvée.
© Reproduction interdite - 37 -
[ MAX ] Z 7 x 5 y
sous
4 x 3 y e1 240
2 x y e 100
2
y e3 60
x 0, y 0, e1 0, e 2 0, e3 0
et présentons la solution algébrique sous forme d’une suite de tableaux.
Le premier tableau correspondant à la solution de base de départ se
présente comme suit :
Seconds
membres
des contraintes
Variables de décision Variables d’écart
x y e1 e2 e3 R
e1 4 3 1 0 0 240
Variables
e2 2 1 0 1 0 100
de base
e3 0 1 0 0 1 60
Z 7 5 0 0 0 0
Valeur de Z
Coefficients de la fonction Z
Coefficients du système
des contraintes
© Reproduction interdite - 38 -
x y e1 e2 e3 R R
Colonne
e3 0 1 0 0 1 60 -
Z 7 5 0 0 0 0
Min positif
x y e1 e2 e3 R R
Colonne
e1 0 1 1 -2 0 40 40 40
1
50 100
1 1
x 1 2 0 2 0 50 1
2
e3 0 1 0 0 1 60 60 60
1
3 -
Z 0 0 7 0
2 2 350
x Y e1 e2 e3 R
y 0 1 1 -2 0 40
1 3
x 1 0 2 2 0 30
e3 0 0 -1 2 1 20
Z 0 0 3 1 0 - 410
2 2
© Reproduction interdite - 39 -
Tous les éléments de la ligne Z sont négatifs ou nuls. L’algorithme du
simplexe s’arrête. La solution optimale trouvée est :
x 30
y 40
Z optimal410
la variable d’écart e3 20 signifie que la troisième contrainte n’est
pas saturée. y40 et 604020
Remarques :
- le nombre à l’intersection de la ligne Z et de la colonne R sera
toujours négatif (ici –410) ; il ne faut tenir compte que de sa
valeur absolue qui représente la valeur de la fonction objectif
( Z vaut 410, x30 et y40 ).
- Le nombre pivot n’est pas nul, certains calculs peuvent être évités :
o Lorsqu’un zéro figure sur la ligne pivot d’un tableau, la
colonne contenant ce zéro peut être recopiée intégralement
dans le tableau suivant ;
o Lorsqu’un zéro figure dans la colonne du pivot, la ligne qui le
contient peut également être transcrite sans changement
dans le tableau suivant.
- Pour dégager la variable sortante, il faut diviser chaque élément de
la colonne que nous avons intitulée R par l ‘élément correspondant,
sur la même ligne, de la colonne pivot. Un zéro peut apparaître
dans la colonne R : dans ce cas, il faut le remplacer par un nombre
positif infiniment petit, noté « » et continuer les calculs avec
cette valeur que, dans la solution optima le, nous arrondirons
à zéro.
© Reproduction interdite - 40 -
( x1 x2 ... xn 0 , c'est à dire l'origine O ), toutes les contraintes sont
respectées.
Aussi, nous avons cette solution de base initiale quand toutes les
contraintes sont du type et leur second membre positif.
Cette solution ne convient pas :
- si le second membre d’une contrainte de type est négatif
- si une contrainte est du type et son second membre positif
- si une contrainte est définie par une égalité.
Dans ces trois cas, la solution correspondant à l’origine ne convient pas
puisque les contraintes ne sont pas vérifiées.
1er cas
Si le second membre d’une contrainte de type est négatif, il faut
multiplier les deux membres de l’inégalité par (-1) et changer le signe de
l’inégalité. On se retrouve avec une contrainte correspondant au second
cas.
2ème cas
Si une contrainte (ou plusieurs contraintes) est du type , le second
membre étant positif, le fait d’introduire une variable d’écart ne permet
pas de prendre l’origine comme solution de base de départ.
Par exemple
x y25
x ye25
Pour pallier cet inconvénient, on introduit dans l’équation un nouveau
type de variable, variable positive affectée du coefficient +1, appelée
variable artificielle et notée V.
x yeV 25
L’introduction de la variable artificielle V a pour effet d’élargir le champ
des solutions admissibles et permet d’obtenir une solution de base
réalisable de départ :
© Reproduction interdite - 41 -
La variable d’écart est traité comme les variables x et y, la variable
artificielle V comme variable de base. En cours du déroulement de la
méthode du simplexe, la mise hors-base de la variable artificielle
réintroduit la contrainte initiale x y25 sans la dénaturer.
Pour que la fonction économique ne change pas de valeur, il faut que la
variable artificielle n’influe pas sur l’optimum de la fonction objectif. La
variable artificielle intervient dans l’optimum avec une valeur nulle, si
nous l’affectons dans la fonction économique à maximiser d’un coût
négatif élevé, qu’on notera –M (méthode du « Big M »).
Exemple
Soit le programme linéaire sous forme canonique suivant :
[MAX]Z 30x40y
2x y 8
2x y 2
y 2
x 0, y 0
ou sous forme standard
[MAX] Z 30x40yMV
2x ye18
2x ye2 V 2
ye32
x0, y0,e10,e20,e30,V 0
or
MV M(22x ye2)2M 2Mx My Me2
d’où la forme de la fonction objectif
[MAX] Z 30x40y2M 2MxMy Me2
ou bien
[MAX] Z (302M)x(40M)yMe2 2M
d’où le premier tableau simplexe :
© Reproduction interdite - 42 -
x y e1 e2 e3 V R
e1 2 1 1 0 0 0 8
V 2 -1 0 -1 0 1 2
e3 0 1 0 0 1 0 2
Z (30+2M) (40-M) 0 -M 0 0 2M
x y e1 e2 e3 R
e1 0 2 1 0 0 6
X 1 1
2
0 1
2
0 1
e3 0 1 0 0 1 2
Z 0 55 0 15 0 -30
x y e1 e2 e3 R
e1 0 0 1 1 -2 2
x 1 0 0 1
2
1
2
2
y 0 1 0 0 1 2
Z 0 0 0 15 -55 -140
x y e1 e2 e3 R
e2 0 0 1 1 -2 2
X 1 0 1
2
0 1
2
3
Y 0 1 0 0 1 2
Z 0 0 -15 0 -25 -170
© Reproduction interdite - 43 -
3ème cas
Si une contrainte (ou plusieurs) est définie par une égalité, on utilisera
également une variable artificielle V (d’un coût négatif élevé –M dans la
fonction objectif), sans introduire une variable d’écart.
Exemple
[MAX] Z 4x2y
8x5ye1400
6x5yV 360
x0, y0,e10,V 0
déterminons l’expression de –MV à partir de la deuxième contrainte
MV 6Mx 5My 360M
reportons ensuite cette valeur dans Z
Z 4x2y0e16Mx5My 360M
Soit Z (6M 4)x(5M 2)y0e1360M
x y e1 V R
e1 8 5 1 0 400
V 6 5 0 1 360
Z 6M+4 5M+2 0 0 360M
x y e1 V R
x 1 5
8
1
8
0 50
V 0 10
8
6
8
1 60
Z 0 10M 4 6M 4 0 60M-200
8 8
© Reproduction interdite - 44 -
x y e1 R
x 1 0 1 20
2
y 0 1 3
5
48
Z 0 0 4 - 176
5
x 20
y 48
Z o p tim a l 176
III- Dualité
Cette section concerne la relation que l’on peut établir entre un problème
de programmation linéaire et son dual. La notion de dualité en
programmation linéaire est très intéressante puisqu’elle permet de
montrer qu’à un problème d’allocation optimale de ressources rares est
aussi associé un problème de tarification optimale de ressources. On
retrouve ainsi un des paradigmes de base de l’analyse économique où un
équilibre est sous-tendu par un système de prix approprié. Cette
tarification optimale de ressources va aussi permettre une analyse de
sensibilité de la solution quand le second membre des contraintes est
perturbé. Nous verrons alors que la solution du problème dual indique
l’influence marginale des dotations en ressources sur la fonction objectif.
© Reproduction interdite - 45 -
[ MAX ] Z 7 x 5 y
sous
4 x 3 y 240
2 x y 100
y 60
x 0, y 0
Qui représente une situation d’allocation optimale de ressources rares.
Nous appelons cette forme du problème la forme primale.
Nous définissons formellement, la forme duale de ce problème comme
suit ;
[MIN]W 240u100v60w
4u 2v7
3u v w5
u 0,v0,w0
Remarquons que, dans cette forme duale, il y a autant de variables qu’il
y a de contraintes dans la forme primale et il y a autant de contraintes
qu’il y a de variables primales. Ces deux problèmes ont ainsi des
formulations symétriques. Cette symétrie est ainsi mise en évidence si
nous utilisons la notation matricielle.
Forme primale
[ MAX ] Z c t x
Sous
Ax b
x 0
Forme duale
[MIN]Z btu
sous
t Auc
u0
© Reproduction interdite - 46 -
Cette symétrie qui relève plus d’une esthétique mathématique cache en
fait un paradigme fondamental de l’analyse économique, appelée dualité
quantité-prix qui permet de considérer un problème d’allocation de
ressources de deux façons équivalents, soit comme la détermination des
niveaux optimaux des activités (détermination des quantités), soit
comme la valorisation optimale des ressources (détermination des prix).
b) Correspondance Dual/Primal
Le tableau ci-dessus donne un ensemble de règles formelles permettant
de passer d’un problème de programmation linéaire général à sa forme
duale.
[MAX] Z [Min] W
Variable xj ≥ 0 Contrainte j ≥
Variable xj ≤ 0 Contrainte j ≤
Variable xj sans restriction de signe Contrainte j =
Contrainte i ≤ Variable ui ≥ 0
Contrainte i ≥ Variable ui ≤ 0
Contrainte i = Variable ui sans restriction de signe
Table 3.1 – Règles de dualité
2- Propriétés fondamentales
Nous admettons les résultats suivants sans démonstrations (pour les
puristes, voir références)
© Reproduction interdite - 47 -
3- Résolution d’un problème de minimisation par passage au
dual
a) Méthode
La résolution d’un problème de minimisation par la méthode du simplexe
n’est pas toujours simple dans la mesure où la plupart des contraintes
sont de type et on ne dispose pas d’une solution de base réalisable de
départ évidente.
Il faut introduire des variables artificielles, ce qui complique
singulièrement la solution.
Aussi utiliserons-nous la notion de dualité en tenant compte des
propriétés fondamentales précédentes.
La démarche est alors la suivante :
1. A partir de la forme canonique du programme à minimiser, écrire le
dual.
2. Résoudre le programme dual par la méthode du simplexe (méthode
des tableaux).
3. Le maximum du dual est le minimum recherché.
4. Rechercher par application des propriétés fondamentales b et c ci
dessus :
- d’une part, les contraintes du dual non saturées par la solution
trouvée : en déduire que la variable du primal correspondant à
chaque contrainte non saturée est nulle ;
- d’autre part, le système à résoudre à partir des contraintes du
primal (obligatoirement saturées) correspondant aux variables
optimales du dual non nulles.
La résolution de ce système donne la solution optimale.
Une autre façon de détecter la solution optimale peut se faire à partir du
dernier tableau simplexe de résolution du dual :
Les solutions du primal sont, au signe près, les valeurs des variables
d’écart du dual qui figurent sur la dernière ligne du dernier tableau
simplexe du dual. Il est don recommandé de vérifier la solution obtenue
précédemment par application des propriétés fondamentales b et c.
© Reproduction interdite - 48 -
b) Application
Soit le problème de la société DINDINO
[MIN ] Z 2 A 3B
5 A 10 B 90 (contra int e sur lesprotein es ) D1
4 A 3B 48 (contra int es sur les vita min es ) D
2
1 3
2 A (contra int es sur le fer ) D3
2
A 0, B 0 (contra int es de non négativité )
* Ecrivons d’abord le dual
[MAX]Z'90X 48Y 3Z
5X 4Y Z 2
10X 3Y 3
X 0,Y 0,Z 0
Soit sous forme standard
[MAX]Z'90X 48Y 3Z
X Y Z e1 e2 R
e1 5 4 1 1 0 2
e2 10 3 0 0 1 3
Z’ 90 48 3 0 0 0
X Y Z e1 e2 R
e1 0 5
2 1 1 1
2
1
2
X 1 3
10 0 0 1
10
3
10
Z’ 0 21 3 0 -9 -27
© Reproduction interdite - 49 -
X Y Z e1 e2 R
Y 0 1 2
5
2
5
1
5
1
5
X 1 0 3
25
3
25
1
25
6
25
Z’ 0 0 27
5
42
5
24
5
-31,20
La ligne Z’ne contient plus que des éléments nuls ou négatifs. La solution
optimale trouvée est : le minimum cherché est : 31,20.
5A10B90
Soit 4A3B48
Système dont la solution est :
A8,4
B4,8
Solution conforme à celle obtenue par la méthode graphique.
Rappelons que les solutions sont, au signe près, les valeurs des variables
d’écart du dual, figurant sur la ligne Z’ du dernier tableau du dual.
Sur la ligne Z’ du dernier tableau calculé, on lit :
e1 = 42
5 et e2 = 5
24
Donc A = = 8,4 et B = 24
42
5 5 = 4,8
27
D’autre part, on lit aussi : Z = 5 ce qui correspond à l’excédent de la
troisième contrainte du primal. En effet, A = 8,4, soit un excédent de
8,4 – 3 = 5,4
© Reproduction interdite - 50 -
Il s’agit d’un problème où deux activités se partagent trois ressources
rares.
On cherche les niveaux qui maximisent la contribution totale aux profits
et frais fixes.
[ MAX ] Z 7 x 5 y
sous
4 x 3 y 240
2 x y 100
y 60
x 0, y 0
© Reproduction interdite - 51 -
soit toujours supérieur ou égal à la contribution des activités choisies par
le gérant.
Comme on ne peut demander au gérant de verser un loyer supérieur à
la contribution maximale possible qu’il peut retirer des activités, nous
devons chercher le système de prix qui rende minimal le loyer total
versé, sous les contraintes indiquées plus haut, c'est-à-dire résoudre le
problème dual du problème :
[MIN]W 240u100v60w
4u 2v7
3u v w5
u 0,v0,w0
La solution de ce problème est : u* = 1,5 ; v* = 1/2 ; w* = 0
En fait, la solution du problème dual correspond à la valeur marginale de
chaque ressource.
La solution du problème primal est :
x* = 30 ; y* = 40.
Les deux premières contraintes sont saturées, la troisième ne l’est pas.
En effet les variables d’écart correspondantes valent : e1 = e2 = 0 ; e3 =
20
La valeur marginale d’une ressource qui n’est pas complètement utilisée
est nulle.
Ici e3* 0 w* = 0
Les ressources 1 et 2 sont complètement utilisées, leur valeur marginale
est positive. Le système optimal de tarification de ressources est donc :
u* = 1,5 ; v* = 0,5 ; w* = 0
Avec ce système de prix, pour chaque activité de production, on a
égalité entre contribution unitaire et la valeur des ressources utilisées.
4.1,5 + 2.0,5 = 7
3.1,5 + 0,5 + 0 = 5
© Reproduction interdite - 52 -
b) Tarification optimale de la demande pour un service public
Considérons un service public, par exemple l’ONEP fournisseur d’eau
potable. On distingue la demande suivant m différents postes horaires.
La demande d’eau potable est donc définie par un vecteur d=(d i)i=1,…,m
de quantités d’eau à fournir pour chaque poste. Pour satisfaire cette
demande le service doit s’engager dans un certain nombre de n
d’activités.
L’activité #j a un coût cj et contribue à la satisfaction de la demande au
taux aij. Le problème du service public est de satisfaire la demande au
moindre coût total. Il doit donc choisir les niveaux d’activité qui satisfont
le programme linéaire suivant
[MIN]Z ct x
Axd
x0
Le problème dual s’écrit
[MAX]W d tu
t
Au c
u0
Nous savons qu’à l’optimum les deux fonctions économiques seront
égales. La solution du premier problème donne un plan de production
optimal pour le service public. La solution du problème dual donne une
tarification optimale du service, basée sur le coût marginal de la
demande.
© Reproduction interdite - 53 -
La méthode du simplexe développée en section deux apporte une
solution au problème. C’est une méthode générale ayant fait ses preuves
dans l’industrie et qui est implémentée dans divers packages logiciels
pour ne citer que LINDO, X-Press, GAMS, etc., ainsi que dans divers
tableurs sous forme d’ « add-in », c'est-à-dire un sous-programme
incorporé permettant de résoudre des programmes linéaires.
Nous nous intéressons ici au tableur Excel et à l’outil intégré
« Solveur » permettant de solutionner des problèmes de
programmation linéaire.
Nous avons retenu cet outil, qui n’est pas, avouons-le, l’outil idéal pour
résoudre des programmes linéaires de vraie grandeur industrielle, pour
diverses raisons :
- Excel est le tableur, pour ne pas faire de la pub gratuite, le plus
utilisé et pratiquement toute organisation y a accès ;
- D’autre part, c’est un outil utilisé dans divers cursus académiques
(maths, statistiques,…) et la plupart des étudiants sont familiarisés
avec cet outil ;
Excel utilise une macro appelée Solveur permettant de résoudre des
problèmes d’optimisation, en particulier des programmes linéaires.
La version incluse dans Excel permet de traiter des programmes linéaires
à la hauteur de 200 variables et 100 contraintes en dehors des
contraintes de non négativité. Des versions plus sophistiquées du
Solveur sont commercialisées par la société éditrice du Solveur d’Excel
Frontline Systems inc. (www.frontsys.com ou www.solver.com) . Nous
allons donc montrer l’utilisation du Solveur sur des cas pratiques déjà
traités. Pour commencer, reprenons le cas MOBILIA.
© Reproduction interdite - 54 -
[ MAX ] Z 7 x 5 y
sous
4 x 3 y 240
2 x y 100
y 60
x 0, y 0
Résoudre un problème de programmation linéaire via Excel nécessite un
certain nombre d’étapes.
D’abord, il faut transcrire le modèle linéaire dans une feuille de calcul
Excel. Ensuite il faut lancer le Solveur et lui transmettre un certain
nombre d’information concernant le problème à résoudre, en particulier
les cellules variables, la cellule cible et les contraintes. C’est ce que nous
allons illustrer sur l’exemple MOBILIA.
Ainsi comme vous pouvez le remarquer sur l’écran 1.1, nous avons
utilisé des colonnes différents pour représenter tous les paramètres
(valeur de la solution, contribution au profit et les coefficients des
contraintes) associés aux variables de décision.
La fonction objectif et chaque contrainte sont représentées dans
différentes lignes de la feuille de calcul.
Bien qu’elles ne soient pas nécessaires pour la résolution du problème,
nous avons rajouté différentes étiquettes pour une bonne lisibilité du
modèle et une meilleure compréhension des résultats fournis par le
Solveur comme on le verra par la suite.
© Reproduction interdite - 55 -
Ecran 1.1
a) Cellules variables
La boîte de dialogue du Solveur présente un certain nombre de zones
correspondant aux différents éléments d’un programme linéaire, à savoir
les variables de décision, la fonction objectif et les contraintes. Aussi la
zone nommée Cellules variables fait références aux variables de
décision du programme linéaire à résoudre.
Chaque variable de décision du modèle est représentée par une cellule
dans la feuille de calcul. Bien qu’il n’y ait pas de règles quant à la
représentation de ces variables, il est plus pratique d’utiliser des cellules
contiguës pour les variables de décision.
Dans le cas MOBILIA, nous avons deux variables de décision à
représenter par deux cellules adjacentes de la feuille Excel.
Dans l’écran 1.1, nous avons utilisé les cellules B5 et C5 pour représenter
respectivement le nombre de tables (T) et le nombre de chaises (C) à
fabriquer.
On peut aussi laisser vide ces cellules que leur affecter une valeur de
notre choix. Le Solveur affectera automatiquement les valeurs optimales
dans ces cellules si solution y en a.
Il est souhaitable de formater ces cellules, par exemple le format décimal
retenu pour la solution du problème.
On peut également nommer ces cellules au lieu des références B5 et C5.
Les étiquettes descriptives de ces cellules (comme celles dans les cellules
A5, B4 et C4) sont recommandées pour une meilleure compréhension du
modèle.
© Reproduction interdite - 56 -
b) Cellule cible à définir
La valeur de la fonction objectif se trouve dans la zone nommée Cellule
cible à définir de la boîte de dialogue du Solveur. On choisit une
nouvelle cellule libre de la feuille et on y saisit la formule correspondant
à la fonction économique en fonction des cellules variables.
Nous avons choisi la cellule D6 dans le cas MOBILIA (écran 1.1). Bien
qu’on puisse utiliser directement les profits unitaires 7 DH et 5 DH dans
la formule, il est préférable de saisir ces valeurs dans des cellules à part
dans la feuille du modèle et utiliser leurs références relatives dan la
formule de la cellule D6.
Dans l’écran 1.1, nous avons entré les profits unitaires 7 DH et 5 DH
dans les cellules B6 et C6 respectivement.
La formule à entrer dans la cellule D6 peut s’écrire :
= B6*B5 + C6*C5
Le symbole « = » est impératif en Excel pour distinguer les formules des
autres données. Cette formule reflète donc l’expression de la fonction
objectif Z. On peut aussi formater la cellule D6 en format monétaire.
En cas de problème à plusieurs variables, cette formule devient très
longue et encombrante à la saisie. Pour pallier cet inconvénient, on peut
utiliser la fonction intégrée d’Excel « SOMMEPROD » pour exprimer la
fonction objectif du problème. Pour ce faire, il faut respecter la syntaxe
de cette fonction. En effet, al fonction SOMMEPROD nécessite au moins
deux plages de cellules de même taille comme arguments séparés par
un point-virgule. L’une de ces plages (B5:C5) contient les cellules
correspondant aux variables de décision et l’autre plage aux cellules des
profits unitaires (plage B6:C6). Cette fonction calcule le produit scalaire
de deux plages arguments.
Dans notre cas, la formule en D6 peut s’écrire aussi :
=SOMMEPROD(B6:C6;$B$5:$C$5)
La plage ($B$5 :$C$5) a été saisie en références absolues (symbole $)
pour fixer ces références lors de la recopie de la formule.
© Reproduction interdite - 57 -
c) Contraintes
Maintenant, il faut transcrire les contraintes dans la feuille Excel. Pour ce
faire, nous convenons de la chose suivante : nous distinguons dans
chaque contrainte trois éléments : le membre de droite (RHS) de la
contrainte qui est un nombre en général, le membre de gauche (LHS) de
la contrainte qui est une fonction linéaire des cellules variables et le type
de la contrainte, c'est-à-dire une égalité ou une inégalité (=, ≤,≥).
Pour traduire ces différents éléments d’une contrainte dans la feuille de
calcul, nous devons réserver une cellule par membre de contrainte.
© Reproduction interdite - 58 -
Bien qu’on ait que des constantes dans notre exemple (240, 100 et 60),
il est possible d’avoir des formules comme membre droit des contraintes
comme pour les membres gauches.
Dans l’écran 1.1 de notre exemple, nous avons reporté les membres
droits des contraintes, à savoir 240, 100 «et 60 dans les cellules F8, F9
et F10 respectivement.
Type de contraintes
Dans l’écran 1.1, nous avons aussi rajouté le type de relation (=, ≤, ≥)
entre les deux membres de chaque contrainte (cellules E8:E10).
A noter que ces signes ne jouent aucun rôle dans la résolution du
problème mais ils ont été rajoutés pour une meilleure compréhension du
modèle.
Ecran 1.2
Spécification de la cellule cible à définir
On entre la référence de la cellule correspondant à la valeur de la
fonction objectif (ici la cellule D6) dans la zone Cellule cible à définir
de la boîte « Paramètres du Solveur ». L’option Max est retenue par
défaut. Pour un problème de minimisation, on doit sélectionner l’option
© Reproduction interdite - 59 -
Min pour spécifier que la fonction objectif est à minimiser. La troisième
option « Valeur » nous permet de spécifier la valeur à atteindre par la
cellule cible. Nous n’utiliserons pas cette option.
© Reproduction interdite - 60 -
plage correspondante F8:F10 dans la zone de droite (RHS). On
sélectionne « ≤ » comme type de contrainte dans la zone du milieu (liste
déroulante) entre les deux entrées LHS et RHS. Le Solveur interprète
alors ceci comme (D8≤F8, D9≤F9 et D10≤F10).
Ainsi, il apparaît que trois entrées sont suffisantes pour saisir toutes les
contraintes possibles, une pour les contraintes de type ≤, une pour les
contraintes de type ≥ et une troisième pour toutes les contraintes de
type =. Ceci suppose que les membres LHS et RHS des contraintes de
même type sont disposées dans des cellules contiguës.
Options du Solveur
Une fois toutes les contraintes saisies, la résolution du modèle est enfin
prête. Cependant, avant de cliquer le bouton Résoudre de la boîte
Paramètres du Solveur, on doit d’abord cliquer le bouton Options
pour afficher la boite de dialogue « Options du Solveur » (voir écran
1.3).
Pour résoudre la plupart des programmes linéaires, nous n’avons besoin
de changer aucun des paramètres pris par défaut par le Solveur.
Néanmoins, nous devons cocher les cases Modèle supposé linéaire et
Supposé non négatif. La première case oblige le Solveur à renvoyer un
plan détaillé de l’analyse de sensibilité de la solution trouvée et la
© Reproduction interdite - 61 -
deuxième case ajoute automatiquement les conditions de non négativité
des variables de décisions.
Ecran 1.3
Résolution du modèle
Quand on clique le bouton Résoudre, le Solveur lance le programme de
résolution d’un programme linéaire et les résultats apparaissent sur la
feuille du modèle, comme, le montre l’écran 1.4. Avant de voir les
résultats, il est important de jeter un coup d’œil sur le message de la
boîte Résultats du solveur pour vérifier que le Solveur a bien trouvé
une solution optimale. Dans d’autres cas, le message indique
l’impossibilité de trouver une solution (ceci se produit quand le
programme linéaire est incohérent ou non borné, solution infinie). La
table 1.1 résume quelques messages que peut renvoyer le Solveur suite
à la résolution d’un programme linéaire ainsi que leurs significations et
les causes d’un tel message.
Message Signification
Le solveur a trouvé Cela signifie que le solveur a trouvé une solution
une solution localement optimale : il n'y a pas d'autres valeurs
satisfaisant toutes les proches de celles fournies qui conduisent à un
contraintes et les meilleur résultat pour la fonction à optimiser. Cela
conditions ne signifie pas pour autant que le modèle et/ou la
d'optimalité . solution sont corrects. Cela implique seulement
qu’aucune erreur n’a été détecté dans le modèle
par le solveur.
Le solveur ne peut Le solveur n'a pas trouvé de solution intermédiaire
pas trouver de satisfaisant toutes les contraintes avec le paramètre
© Reproduction interdite - 62 -
Message Signification
solution réalisable. de précision indiqué. Les contraintes manquent
vraisemblablement de cohérence. Examinez la
feuille de calcul pour identifier une éventuelle
erreur dans les formules de contrainte ou dans le
choix des contraintes.
Si vous avez coché la case "Modèle supposé
linéaire" du menu option, et que le modèle est
bien conditionné, la méthode du Simplexe vous
assure de façon certaine que le modèle n'est pas
faisable.
Le solveur a Une ou plusieurs formules ont renvoyé une valeur
rencontré une valeur d'erreur lors du dernier calcul. Recherchez la cellule
d'erreur dans la cible ou de contrainte qui contient l'erreur (division
cellule cible à définir par zéro dans certaines cellules par exemple) et
ou dans une modifiez sa formule pour qu'elle renvoie une valeur
contrainte. numérique appropriée.
© Reproduction interdite - 63 -
Les cellules B5 et C5 contiennent les quantités optimales des tables et
des chaises à fabriquer, et la cellule D6 le profit optimal. Dans les
cellules D8, D9 et D10, on a les valeurs du membre gauche (LHS) des
différentes contraintes. Par exemple la cellule D8 contient le nombre
d’heures utilisées au sein de l’atelier « menuiserie » .
Ecran 1.4
Rapport Réponses
Le Solveur affiche le rapport Réponses dans une feuille de calcul
séparée. Le rapport (voir écran 1.5) affiche les mêmes informations
traitées précédemment mais d’une organisation différente. On y trouve
en particulier :
- la formule de chaque contrainte.
- La marge, différence entre les membres droit et gauche de chaque
contrainte (RHS – LHS). Ceci correspond aux unités non utilisées
d’une ressource dans une contrainte de type ≤.
- L’état de chaque contrainte (liée ou non). Liée signifie que la
contrainte est saturée, autrement dit toute la ressource associée
est utilisée par la solution obtenue.
Les étiquettes descriptives de la colonne Nom sont extraites par le
Solveur à partir des informations portées sur la feuille du modèle. Le
Solveur combine simplement les étiquettes à l’intersection des lignes et
colonnes de chaque cellule variable.
© Reproduction interdite - 64 -
Ecran 1.5
1 3
2 A (contra int es sur le fer ) D3
2
A 0, B 0 (contra int es de non négativité )
Ecran 2.1
Les paramètres nécessaires au Solveur ont été saisies comme le montre
l’écran 2.2. Notez qu’on a bien choisi l’option Min pour un problème de
minimisation.
Comme pour le cas Mobilia, on a saisi les paramètres nécessaires à la
résolution dans leurs zones respectives de la boîte de dialogue
« Paramètres du solveur ». La fonction intégrée SOMMEPROD d’Excel
a été utilisée pour calculer aussi bien la valeur de l’objectif (cellule D6)
© Reproduction interdite - 65 -
que les membres gauches (LHS) des contraintes (correspondants
respectivement aux besoins en protéines, vitamines et fer).
Ecran 2.2
L’écran 2.3 montre la solution trouvée par le Solveur suite à l’action sur
le bouton Résoudre de la boîte de dialogue « Paramètres du
Solveur ». En sélectionnant le rapport Réponses dans la boîte de
dialogue « Résultat du solveur », on obtient les résultats détaillées de
la solution sur une autre feuille tels qu’ils apparaissent sur l’écran 2.4.
Comme prévu, on obtient la même solution trouvée par la méthode
graphique. De même, du moment que les contraintes ici sont de type
« », nous appelons la différence entre les membres LHS et RHS un
excédent ou surplus. En effet, il s’agit du surplus de la ressource par
rapport aux quantités minimales adjugées pour la nourriture des dindes
dans notre cas.
© Reproduction interdite - 66 -
Ecran 2.3
Ecran 2.4
© Reproduction interdite - 67 -