Vous êtes sur la page 1sur 65

Chapitre I : Programmation linéaire

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

© Reproduction interdite -3-


autre chose qu’une méthode de calcul destinée à être programmée
et utilisée sur un ordinateur. Notons d’ailleurs que le terme
programmation linéaire ne provient pas de l’expression
« programmation » telle qu’elle est conçue par les informaticiens.
Les applications de la programmation linéaire sont nombreuses et
relèvent de milieux divers comme la médecine, les transports, la finance,
le marketing, la gestion des ressources humaines ainsi que l’agriculture.
Vu la taille ainsi que la complexité des problèmes rencontrés dans ces
diverses applications, le développement de tous les modèles de
programmation linéaire pour approcher ces problèmes peut se faire
selon trois étapes :
(1) Une étape de formulation
(2) Une étape de résolution
(3) Une étape d’interprétation

(1) La formulation consiste à traduire le problème sous forme


d’expressions mathématiques (équations, inéquations)
(2) L’étape de résolution consiste à résoudre le modèle
mathématique en évaluant les variables de décision.
(3) Interprétation et analyse de sensibilité : en supposant que le
modèle mathématique est correct et qu’une solution a été trouvée
grâce aux outils (logiciels) comment utiliser ces résultats, telle est
la question qui se pose au décideur ou manager.

Propriétés des programmes linéaires


Tous les modèles de programmation linéaire possèdent les propriétés
suivantes :

1- Tous les problèmes ont un objectif qui consiste à maximiser ou


minimiser une quantité, souvent un profit ou un coût. On parle de
fonction économique ou fonction objectif pour un programme
linéaire.
2- Les programmes linéaires font état d’un certain nombre de
restrictions ou contraintes qui traduisent des ressources limitées ou

© Reproduction interdite -4-


autres. Des contraintes de non-négativité font partie de l’ensemble
des contraintes pour traduire l’impossibilité de valeurs négatives
pour les variables du modèle. Produire des quantités négatives de
meubles ou d’ordinateurs n’a pas de sens.
3- La fonction objectif et les contraintes d’un programme linéaire
doivent être formulées en termes d’expressions mathématiques
linéaires (équations, inéquations linéaires)
Exemple
Expressions linéaires : x7y17,  x4y2 …
Expressions non linéaires :
2x²5y²3y10, x xy  y²2, ln(x) y12 …

Hypothèses de base d’un programme linéaire

1- On se place dans le cadre déterministe, c’est à dire toutes les


données numériques sont utilisées dans le programme linéaire
(fonction objectif et contraintes) sont supposées connues et
constantes durant la période d’étude.
2- On suppose le principe de proportionnalité dans la fonction
économique et les contraintes. Exemple : si la production d’une
unité d’un produit nécessite 3 heures d’une ressource, alors
produire 10 unités de ce produit utiliseront 30 heures de cette
ressource.
3- La troisième hypothèse est l’additivité. Si l’objectif est de
maximiser un profit de 8 DH/unité du premier produit + 3DH/unité
du second produit, et si une unité de chaque produit est fabriquée,
les profits unitaires 8 DH et 3 DH doivent être additionnées pour
produire un profit de 8 + 3 = 11 DH.
4- L’hypothèse de divisibilité qui exprime que les variables du
problème sont réelles et pas forcément des entiers naturels. Si les
variables sont sujettes à la contrainte d’indivisibilité, on est alors en
cas de programmation en nombres entiers (PNE) qui sort du cadre
du présent ouvrage.

© Reproduction interdite -5-


La production des biens est l’une des applications courantes de la
programmation linéaire (Product mix problem).
Dans la plupart des firmes manufacturières, deux ou plusieurs
produits sont fabriqués utilisant des ressources limitées comme le
personnel, les machines, la matière première, etc.
Le profit que cherche à maximiser la firme dépend du profit unitaire
réalisé sur chaque produit (profit unitaire = prix de vente unitaire –
coût variable unitaire).
Pour traiter de la formulation de ces problèmes ainsi que leur
résolution nous étudierons le cas simple de problèmes à deux
variables avant de discuter le cas général à plusieurs variables.

I- Programmes linéaires à deux variables

1-Problème de maximisation

a) Un problème de production : cas de la menuiserie


MOBILIA
La menuiserie MOBILIA fabrique des tables et des chaises bon marché.
Le procédé de fabrication est le même pour ces deux produits dans le
sens où chacun nécessite un certain nombre d’heures de travail dans
l’atelier « Menuiserie » et un certain nombre d’heures dans l’atelier
« peinture ».
Le tableau suivant résume les données du problème :
Atelier Atelier
« menuiserie » « peinture »
Table 4 2
Chaise 3 1
Capacité horaire
240 100
totale
Table 1.1
Le commercial confirme la vente de toute la production de tables.
Cependant et pour cause d’un stock de chaises, il recommande de na
pas dépasser la fabrication de 60 nouvelles chaises.

© Reproduction interdite -6-


Chaque table vendue laisse une marge de 7 DH et chaque chaise vendue
une marge de 5 DH.

Le problème que se pose le gestionnaire de la fabrique MOBILIA est de


déterminer un plan de production de chaises et de tables optimal.
Pour ce faire, une modélisation sous forme d’un programme linéaire
s’impose.

b) Modélisation
La construction d’un modèle est, en général, une opération en trois
étapes :

1- Le choix des variables de décision


2- L’expression de l’objectif en fonction de ces variables
3- L’expression des contraintes en fonction de ces variables

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.

Par exemple, dans le cas de MOBILIA, ce sont les quantités de tables et


de chaises à produire.
Généralement, elles sont notées par des lettres de la fin de l’alphabet (x,
y, z, etc.) ou autres symboles évocateurs. Par exemple, on peut noter T
le nombre de tables à fabriquer et C le nombre de chaises à fabriquer.
Ce sont les notations qu’on va retenir pour notre exemple.

2. Fonction objectif
Définition 2 : l’objectif est la quantité que l’on veut maximiser ou
minimiser.

Ici, il s’agit de la somme des contributions de chacune des productions


au profit net de la fabrique. Elle s’exprime simplement par :

© Reproduction interdite -7-


Profit = (7DH/table) x (Nombre de tables produites) + (5 DH/chaise) x
(Nombre de chaises produites)

En utilisant la notation retenue pour les variables de décision ci-dessus,


la fonction objectif s’écrit alors :
Maximiser 7T + 5C ou [Max] Z  7T  5C
C’est cette dernière notation qu’on retiendra pour l’expression de la
fonction objectif.

3. Contraintes
Définitions 3 : les contraintes sont toutes les relations entre les
variables qui limitent les valeurs possibles que peuvent prendre ces
variables.

Ici, il y a trois contraintes :

- la première et la deuxième concernent la ressource temps limitée


dans les ateliers « menuiserie » et « peinture »
- la troisième concerne la fabrication limitée des chaises imposée par
le commercial de la fabrique.
Les deux premières contraintes doivent assurer que le temps global
nécessaire au plan de production est inférieur ou égal au temps
disponible.
Par exemple, dans le cas de l’atelier « menuiserie », le temps utilisé est :
(4 h/table) x (Nombre de tables produites) + (3 h/chaise) x (Nombre de
chaises produites)
Or on dispose au maximum de 240 heures dans cet atelier.
En utilisant les variables de décision T et C définies précédemment, cette
contrainte peut s’écrire :
4T  3C  240
De même la deuxième contrainte portant sur l’atelier de peinture peut se
traduire par l’inéquation :
2T  1C  100

© Reproduction interdite -8-


Enfin, la contrainte commerciale s’écrit : C  60
Ces trois contraintes représentent les restrictions portées sur les
quantités à fabriquer de tables et de chaises.
Par exemple, la fabrication de 70 tables viole les deux contraintes (T=
70)
De même la fabrication de 50 tables et 100 chaises viole la deuxième
contrainte.
On note en effet certaines interactions entre les variables de décision.
Plus on fabrique de tables moins de chaises sont produites.
Avant de passer à l’étape de résolution, nous complétons le modèle
mathématique par les remarques suivantes :
- produire des quantités négatives de tables et de chaises n’ayant
aucun sens, les contraintes de non-négativité doivent être
spécifiées dans le modèle par les inégalités :
T 0
C 0
- il est possible de tomber sur des quantités fractionnaires ou réelles
pour les quantités T et C. en effet, dans la plupart des problèmes
les variables de décision sont plutôt de type entier et on a affaire à
des problèmes de programmation en nombres entiers (PNE)

La programmation en nombres entiers est très délicate en termes de


résolution et ne présente pas tous les avantages de la programmation
linéaire.
Aussi, nous ignorons dans la plupart des cas cette restriction sur les
variables de décision et nous résolvons le modèle avec des variables
réelles.

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.

© Reproduction interdite -9-


Nous rappelons quelques résultats importants de la géométrie analytique
avant de traiter la résolution de notre cas.

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.

Théorème 2 : la valeur maximum de la fonction linéaire à Ax + By le


long de tout segment est atteinte à une extrémité du segment et la
valeur minimum à l’autre extrémité.

Théorème 3 : la valeur maximum d’une fonction linéaire à deux


variables f(x, y) sur un polygone convexe est atteinte en un sommet de
ce polygone et sa valeur minimum en un autre sommet.

Théorème 4 : la valeur maximum d’une fonction linéaire à plusieurs


variables f(x1, x2,..., xn) sur un polyèdre convexe est atteinte en un
sommet de ce polyèdre et sa valeur minimum en un autre.

La résolution graphique passe par deux étapes :

- Une étape de représentation des contraintes qui permet d’identifier


un ensemble ou une région de solutions dites admissibles c’est à
dire vérifiant l’ensemble des contraintes.
- Ensuite une étape de calcul de l’optimum, autrement dit la
déduction de la solution optimale parmi l’ensemble des solutions
admissibles.

Représentation graphique des contraintes

© 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

La représentation graphique se fait sur le plan (XOY) avec (OX) comme


axe des abscisses et (OY) axe des ordonnées.
Ici, on peut utiliser comme axe des abscisses l’axe des tables T et
comme axe des ordonnées l’axe des chaises C.
Les contraintes de non-négativité impliquent que la résolution se fait
principalement dans le premier quadrant du plan.
Pour représenter la première contrainte (l’inéquation 4T 3C240 )
nous convertissons l’inéquation en équation 4T 3C 240 , équation
cartésienne d’une droite dans le plan géométrique.
Deux points suffisent pour la représenter. Parmi tous les points
candidats, ceux de rencontre des axes d’abscisses et d’ordonnées sont
les plus simples à calculer.
Si T = 0 alors 4.0 + 3.C = 240 soit C = 80 ;
Si C = 0 alors 4.T +0.C = 240 soit T = 60
Pour tracer la droite 4T 3C240 il suffit de joindre les points (0,80)
et (60,0) par une ligne droite.
Nous avons représenté dans la figure 1.1 la droite ainsi que la région de
points satisfaisant cette contrainte.

© Reproduction interdite - 11 -
Figure 1.1

On procède de même pour la deuxième contrainte.


On trace la droite d’équation 2T C 100 passant par les points
(0,100) et (50,0).
La figure 1.2 représente la région des points satisfaisant les deux
contraintes.

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)

Le domaine des solutions admissibles est l’ensemble des points


satisfaisant l’ensemble des contraintes du modèle.

Figure 1.3

La figure 1.3 représente le domaine des solutions admissibles pour la cas


MOBILIA.
Ce domaine est un polygone convexe. Tout point hors de ce polygone
est une solution inadmissible ou irréalisable.

Maintenant qu’on a délimité l’ensemble des solutions admissibles, il s’agit


de dégager une solution optimale parmi toutes les solutions possibles.
Deux méthodes sont envisageables :
- Méthode des droites parallèles
- Méthode de recensement de sommets

© 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)
(100C)
C 240200 , 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.

Méthode de recensement des sommets


Cette deuxième technique consiste à :
- déterminer les coordonnées de chaque sommet du polygone des
solutions réalisables ;
- substituer dans la fonction objectif les valeurs des coordonnées de
chaque sommet ;
- la plus grande valeur obtenue est le maximum recherché.

Ici le polygone convexe (OABCD) renferme toutes les solutions possibles.


Pour calculer les coordonnées des sommets O, A, B, C et D, on procède
comme ci dessus, ces sommets étant forcément la rencontre de deux
droites. Soit :

© 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

Remarquons que le sommet C réalise le profit le plus élevé parmi les


autres sommets et donc correspond à l’optimum recherché. Comme
prévu, on obtient la même solution que la méthode précédente.

2-Problème de minimisation

a) Un problème d’alimentation : cas de la société DINDINO


La société DINDINO spécialisée dans l’élevage de la volaille en particulier
la dinde et le dindon. Pour les nourrir elle utilise un mélange deux types
d’aliments A et B.
Chaque type d’aliments contient, dans des proportions variées, une
partie ou la totalité des trois ingrédients (protéines, vitamines, fer)
nécessaires à l’engraissement des dindes.
Chaque « livre1 » de type A contient 5 unités de protéines, 4 unités de
vitamines et ½ unité de fer.
Chaque livre de type B contient 10 unités de protéines, 3 unités de
vitamines et pas de fer.
Une livre de type A revient à 2 DH et une livre de type B à 3 DH.

La table 2.1 résume l’ensemble des données de la société DINDINO.


Composition de chaque livre de Besoin mensuel
Ingrédient nourriture minimum /
Type A Type B dindon
Protéine 5 10 90
Vitamine 4 3 48
Fer ½ 0 1,5
Coût/livre 2 DH 3 DH
Table 2.1

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.

Le problème DINDINO peut se formuler ainsi :


Minimiser le coût Z  2 A  3B ou [MIN ] Z  2 A  3B
Sous les contraintes
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é )

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.

Méthode des parallèles


On trace la droite correspondant au coût nul (Z = 0), soit 2A3B0 ou
B  2 A
3
Ensuite on trace la parallèle passant par le sommet le plus proche de
l’origine O, ici c’est la parallèle passant par le point F. F est le sommet
extrême correspondant à la solution optimale. Pour déterminer ces
coordonnées, on résout le système linéaire suivant :
5 A  10 B  90
4 A  3B  48
Soit A = 8,4 et B = 4,8

© Reproduction interdite - 16 -
Le coût minimal d’alimentation des dindons est : ZMIN = 2.8,4 + 3.4,8,
soit ZMIN = 31,20 DH

Méthode d’énumération des sommets


Le polygone convexe non borné des solutions réalisable possède trois
points extrêmes E, F et G.
Sommet E(3,12) ZE = 42 DH
Sommet F(8,4, 4,8) ZF = 31,20 DH
Sommet G(18,0) ZG = 36 DH
Comme calculé précédemment, le sommet F est le sommet optimal.

La société DINDINO doit commander le plan d’approvisionnement


optimal suivant :

8,4 livres du type d’aliment A


4,8 livres du type d’aliment B

pour un coût total minimal de 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

Une telle situation doit ramener le modélisateur à revoir son modèle de


départ et étudier l’origine du problème. En effet, produire une infinité
d’unités d’articles n’a pas de sens dans la mesure où les ressources sont
limitées d’une part, et la demande aussi d’autre part.

© Reproduction interdite - 20 -
d) Dégénérescence
On rencontre deux types de dégénérescence :

Premier type de dégénérescence


En effet, un problème de programmation linéaire peut avoir plusieurs
solutions optimales.
Graphiquement ceci se produit quand la droite représentant la fonction
objectif possède la même pente qu’une contrainte non redondante du
problème.
Les coordonnées de tous les points situés sur un côté du polygone
convexe ou sur un côté de l’ensemble non borné des solutions
admissibles, représentent la solution optimale. Il y a donc une infinité de
solutions.
Soit l’exemple illustratif suivant :
[ MAX ] Z  3 X  2Y
sous
6 X  4Y  24

X  3
 X  0; Y  0

Le polygone convexe (OABC) est le domaine des solutions réalisables
(Figure 3.4). Les droites ZO (Z 0) et D1 (6X 4Y 24) sont
parallèles. Tous les points du segment [A,B] fournissent la solution
optimale.
En A(0,6) ZA = 12
En B(3,3/2) ZB = 12
En M(2,3) ZM = 12
Etc.

© 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.

a) Modification d’un coefficient de la fonction objectif


la fonction objectif du cas MOBILIA est :
Z  7 x  5 y  c1 x  c2 y
Modifions la contribution c1 en lui ajoutant une quantité . La nouvelle
fonction objectif devient :
Z  (c1   ) x  c2 y  (7   ) x  5 y
L’équation d’une droite « iso-profit » était Z = 0, soit :
Z 7
y  x
5 5
Donc la valeur absolue de la pente de cette droite était donnée par :
7
p 
5

© 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

b) Modification d’un second membre d’une contrainte


Le second membre de la deuxième contrainte est égale à 100.
Supposons qu’il devienne 100   . Une valeur   0 correspond à une
augmentation de la quantité de ressource disponible,  0 correspond
à une diminution. La contrainte
2 x  y  100  
correspond à un demi-espace délimité par la droite d’équation
2 x  y  100  
la droite iso-profit conserve la même pente. Lorsque   0 , le point
solution reste le point extrême défini par l’intersection des droites D1 et

© 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

c) Modification d’un coefficient technique


La modification d’un coefficient technique changera la pente d’une droite
associée à une contrainte. Une analyse similaire aux précédentes
pourrait être développée.

II- Programmes linéaires à plusieurs variables


Tout programme linéaire peut se ramener à une formulation ayant une
interprétation économique simple et intuitive. On l’appelle formulation
primale en opposition à une formulation duale qui sera étudiée plus tard.
Cette formulation appelée aussi forme canonique peut s’écrire de
plusieurs façons .
Par exemple dans le cas d’un problème de maximisation, on a :

© 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

Ou bien, en utilisant une écriture matricielle :

[ MAX ] Z  c t x
Sous
 Ax  b

x  0


 a11 ... a1n   b1 
   
A   . ... .  ; c t  (c1 , c2 ,..., cn ) ; x t  ( x1 , x2 ,..., xn ) et b   . 
a  b 
 m1 ... a mn   m

Les variables xj et les coefficients cj, aij et bi étant des réels.

Dans la section précédente, nous avons montré comment formuler de


cas simples à deux variables sous forme de programmes linéaires et
comment les résoudre simplement moyennant une technique graphique.

© 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.

Nous consacrons cette section à l’algorithme de simplexe qui permet de


résoudre efficacement ces problèmes.

Cette méthode fut développée par G. Dantzig en 1947. Le principe du


simplexe consiste à poser d’abord le problème sous une forme dite
standard et à déterminer, à partir d’une solution dite de base réalisable
une autre solution admissible qui améliore la fonction objectif et ainsi de
suite : la solution optimale, si elle existe, sera obtenue une fois
l’amélioration de la fonction objectif est impossible.

La forme standard d’un programme linéaire consiste en une


transformation des contraintes de type inéquation en équations.
Toutes les contraintes de la forme
a1i x1  ai 2 x2  ...  ain xn  bi
peuvent s’écrire sous la forme d’équations en introduisant des variables
additionnelles non négatives dites variables d’écart.

Par exemple, le système de contraintes :


4 x  3 y  240

2 x  y  100
deviendra
4 x  3 y  e1  240

2 x  y  e2  100
par l’ajout de deux variables d’écart non négatives e1 et e2.

1- Algorithme du simplexe : méthode algébrique de résolution


Nous utilisons le cas simple du cas MOBILIA pour illustrer cette méthode.

© 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é.

Ainsi pour le problème ci-dessus, la forme standard associée s’exprime


ainsi :
[ 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
ou bien
[ MAX ] Z  c t x
sous
 Ax  b

x  0

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.

De manière générale, un programme linéaire sous forme standard se


ramène à la forme :
[ MAX ] Z  c t x
sous
 Ax  b A matrice de format (m, n) n  m

x  0
faisant apparaître une matrice A qui peut se décomposer en deux sous-
matrices
A  [D I B]
Les colonnes de la matrice B sont des colonnes-unités, linéairement
indépendantes. Ces colonnes forment une base de l’espace vectoriel des
colonnes à m éléments. On appellera B matrice de base.
Les variables associées aux colonnes de la matrice B seront appelées les
variables de base. Dans notre exemple les variables de base sont
essentiellement les variables d’écart e1, e2 et e3.
Les variables associées aux colonnes de la matrice D seront appelées
variables hors-base ; il s’agit des variables de décision x et y dans
l’exemple.

D’une manière générale, la matrice A a m lignes (autant qu’il y a de


contraintes) et n colonnes, avec n > m. Si on sélectionne m variables de
base et si on annule les n-m variables hors-base, la matrice A se
décompose en
A  [D I B]
et le système se réduit à :
Bx B  b
avec B une matrice d’ordre m.

© 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.

En effet B est réduite à la matrice identité et la solution de base est


décomposée en deux types de variables :
Vecteur de variables de base : xB
Vecteur de variables hors-base : xD

Revenons à notre exemple et remarquons :


D 
B


4 3 1 0 0
 
A  2 1 0 1 0
0 1 0 0 1
 
 

© 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.

Nous sommes donc en présence de :


- variables de base : e1  240, e2  100 et e3  60
- variables hors-base : x y0
et la valeur correspondante de la fonction objectif Z est nulle : Z = 0.

Recherche d’une solution de base améliorante : première itération

Dans la solution de base admissible initiale on a :


x  y  0 et Z 0
pour améliorer la valeur de l’objectif Z, il suffit de faire passer l’une de
ces deux variables de la valeur 0 à une valeur positive.
Or la fonction économique est : Z  7 x  5 y
Il est donc plus intéressant de choisir x qui vaut 7 par unité alors que y
ne vaut que 5.

© Reproduction interdite - 33 -
La variable ainsi sélectionnée est appelée variable entrante ( y restant
nulle, c'est-à-dire variable hors-base)

Maintenant il s’agit de savoir la valeur maximale à donner à x, variable


entrante.
Le système de contraintes permet d’exprimer les variables de base en
fonction de x et y

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

Pour satisfaire le système de contraintes, la valeur maximale que nous


pouvons donner à x est 50.
Nous obtenons la nouvelle solution de base réalisable :
- variables de base : x  50, e1  40 et e3  60
- variables hors-base : y  0, e 2  0
la valeur de la fonction objectif est : Z  350
En fait, nous arrivons au sommet adjacent à l’origine, le sommet de
 50 
coordonnées  
0

© Reproduction interdite - 34 -
La variable e2 devient variable hors-base. e2 est dite variable sortante.

Maintenant la question qui se pose est : peut-on améliorer cette


solution ?
Pour ce faire, exprimons la fonction Z en fonction de la valeur de x
valeur tirée de la contrainte qui nous a permis de déterminer la valeur
maximale que nous pourrions lui attribuer (50), c'est-à-dire :
2 x  y  e2  100
soit
1 1
x  50  y  e2
2 2
et
3 7
Z  350  y  e2
2 2
Z est ainsi exprimée en fonction des nouvelles variables hors-base y et
e 2.
On peut toujours améliorer la valeur de Z puisque le coefficient de y est
3
positif ( ).
2
Deuxième itération
3 7
Z  350  y  e2
2 2
Seule la variable y peut être retenue comme variable entrante.
Reportons maintenant la valeur de x tirée précédemment de la deuxième
1 1
équation contrainte ( x50 2 y  2 e2 ) dans les deux autres équations :
Soit pour la première équation :

4(50 1 y  1 e2)3y e1 240


2 2
soit : 200 y2e2 e1240

La troisième équation ne subit aucun changement : ye3 60


soit le nouveau système :

© Reproduction interdite - 35 -
 y 2e2 e140

2x y e2 100

 y e3 60
 e140 y 2e2
 1 1
 x50 2 y  2 e2

 e3 60 y
Or e2 0
 e1 40 y2 0
 1
 x50 2 y0

 e3 60 y0

 y  40

 y 100

 y 60
donc, la valeur maximale que nous pouvons affecter à y est 40.
Si y40 alors x30;e10;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 : e1e2 0
- variables de base : x30; y40;e3 20
- la valeur de Z : Z 7.305.40210200410
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 :
e140 y2e2
soit y40e12e2
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 (40e12e2) 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 :
x30; y40;Zoptimal410
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.

2- Algorithme du simplexe : méthode des tableaux


La méthode du simplexe peut être présentée sous forme de tableaux qui
facilitent considérablement les calculs. Reprenons le même cas traité par
la méthode algébrique, sous sa forme standard :

© 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

Détermination de la variable entrante


Selon le premier critère de Dantzig, on sélectionne dans la fonction
objectif Z la variable affectée du coefficient positif le plus élevé.
Donc la variable entrante est x (coefficient 7 dans Z).

Détermination de la variable sortante


Selon le second critère de Dantzig, il faut établir les rapports des seconds
membres des contraintes aux coefficients correspondants de la variable
entrante (colonne x) et sélectionner la variable du plus petit rapport
positif.
On divise donc successivement 240 par 4 (60), 100 par 2 (50) et nous
sélectionnons la variable e2 (ligne correspondant à 50, plus petit rapport
positif).

© Reproduction interdite - 38 -
x y e1 e2 e3 R R
Colonne

e1 4 2 1 0 0 240 240 60


4

e2 2 1 0 1 0 100 100 50


2

e3 0 1 0 0 1 60 -
Z 7 5 0 0 0 0
Min positif

Le nombre pivot va nous permettre de transformer ce tableau en un


deuxième tableau correspondant à une solution améliorante.
Cette transformation se fait selon les étapes suivantes :
- si le nombre pivot est différent de un, on divise toute la ligne par
ce nombre ;
- on transforme la colonne du pivot en une colonne unitaire par des
opérations élémentaires suivant les lignes.
D’où le deuxième tableau simplexe : 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

Comme 3 nombre positif fait partie de la ligne Z, la solution est à


2
améliorer par une nouvelle transformation.
Soit le nouveau tableau simplexe :

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 optimal410
la variable d’écart e3 20 signifie que la troisième contrainte n’est
pas saturée. y40 et 604020

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, x30 et y40 ).
- 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.

3- Recherche d’une solution de base réalisable de départ


Comme toute méthode itérative, l’algorithme du simplexe nécessite la
connaissance préalable d’une solution de base réalisable. Cette dernière
est immédiate quand les variables principales étant nulles

© 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 y25
x ye25
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 yeV 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 :

- variables hors base : x0, y0, e0;


- variable de base : V 25.

© 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 y25 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 30x40y

 2x  y 8
 2x  y  2
 y 2
 x 0, y 0

ou sous forme standard
[MAX] Z 30x40yMV
 2x ye18
 2x ye2 V 2
 ye32
x0, y0,e10,e20,e30,V 0

or
MV M(22x ye2)2M 2Mx My Me2
d’où la forme de la fonction objectif
[MAX] Z 30x40y2M 2MxMy Me2
ou bien
[MAX] Z (302M)x(40M)yMe2 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

Remarque : une fois que V quitte la base, plus besoin de garder la


colonne V dans les tableaux suivants.

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

D’où la solution optimale



 x 3
 y 2

Z o p tim a l 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 4x2y

8x 5y  400



6x 5y 360

 x 0, y 0
ou sous forme standard
[MAX] Z 4x2y0e1MV

 8x5ye1400

 6x5yV 360

x0, y0,e10,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 4x2y0e16Mx5My 360M
Soit Z (6M 4)x(5M 2)y0e1360M
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

D’où la solution optimale


 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.

1- Formes primale et duale d’un problème de programmation


linéaire
Nous allons définir de manière formelle les formes primale et duale d’un
même programme linéaire. Par la suite nous donnerons les résultats
mathématiques qui lient ces formes entre elles et nous interpréterons
ces résultats.

a) un problème sous forme primale et son dual


Soit le problème de programmation linéaire défini ci-dessus :

© 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 240u100v60w

 4u  2v7
 3u v w5
u 0,v0,w0
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 Auc
 u0

© 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)

a) La fonction objectif du problème primal à la même valeur optimale


que la fonction objectif du problème dual.
b) Si, pour une solution d’un programme linéaire, une contrainte n’est
pas saturée, alors la valeur optimale de la variable duale
correspondante est nulle. La réciproque est fausse.
c) Si la valeur optimale d’une variable d’un programme linéaire n’est
pas nulle, alors la contrainte duale correspondante est saturée
pour la solution optimale.

© 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

5X 4Y  Z e1 2



 10X 3Y e2 3

 X,Y,Z,e1, e2, 0
* Résolvons ensuite ce problème par la méthode de simplexe

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.

e1 = e2 = 0 à la fin des calculs implique que les deux contraintes duales


sont saturées.
Les deux variables optimales du dual X et Y sont non nulles. D’après la
propriété fondamentale (c) les contraintes primales correspondantes sont
obligatoirement saturées.

5A10B90
Soit  4A3B48

Système dont la solution est :
 A8,4
B4,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

4- Interprétation économique de la dualité


Pour cela, nous reprenons l’exemple de la société MOBILIA.

© 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

a) Tarification optimale des ressources


Imaginons que le choix des niveaux d’activités soit confié à un gérant. Le
propriétaire de l’entreprise détient les ressources mais il n’a aucun
contrôle direct sur les niveaux d’activité.
Le propriétaire cherche à établir un système de prix pour les ressources
qui force le gérant à choisir les niveaux d’activité optimaux. Soit :
- u le prix de la ressource #1
- v le prix de la ressource #2
- w le prix de la ressource #3
Pour le propriétaire des ressources, une façon, de s’assurer que la valeur
totale des ressources soit toujours supérieure ou égale à la contribution
des activités, consiste à définir les prix de telle sorte que, pour chaque
activité, la contribution unitaire soit inférieure ou égale à la valeur des
ressources utilisées, valeur calculée à partir des coefficients techniques
(taux d’utilisation) et des prix définis ci-dessus. Nous avons donc deux
inégalités :
 4u2v7

3uvw5
Nous imposons en outre à ces prix d’être non négatifs (≥0).
Si nous envisageons de facturer le gérant, pour l’utilisation des
ressources, à partir du système de prix (u,v,w) satisfaisant les inégalités
ci-dessus, nous pouvons garantir au propriétaire un paiement total qui

© 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 240u100v60w
 4u  2v7
 3u v w5
u 0,v0,w0
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

La valeur totale des ressources est :


W* = 240.1,5 + 100.0,5 + 60.0 = 360 + 50 = 410
Ce qui correspond bien à la valeur optimale de la fonction objectif.

© 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

 Axd


 x0
Le problème dual s’écrit
[MAX]W d tu
t
 Au c

 u0

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.

IV- Programmation linéaire sous Excel


Dans la première section nous avons vu que la méthode graphique
permettait de résoudre facilement des programmes linéaires à deux
variables.
Cependant cette méthode se révèle impraticable pour des problèmes
plus complexes de taille considérable tels que les problèmes rencontrés
dans la réalité des entreprises et organisations.

la version utilisée est Excel XP 2002

© 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.

1- Cas MOBILIA sous Excel


Le programme linéaire correspondant est :

© 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.

Pour la première étape, il n’y a pas de méthodes ou règles pour


représenter un programme linéaire dans une feuille Excel. Nous disons
plutôt que plusieurs représentations sont possibles et tout dépend de
l’utilisateur, de son expérience et ses préférences (feeling).
Cependant pour raison de commodité et pour ne pas dérouter le lecteur
novice, nous utiliserons la même représentation pour les différents
problèmes traités dans cette section.

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.

Cellules associées aux membres gauches des contraintes (LHS)


Nous associons une cellule de la feuille de calcul à chaque membre
gauche de chaque contrainte du programme linéaire et nous traduisons
en formule l’expression correspondante en fonction des variables de
décision.
Dans l’écran 1.1, nous avons utilisé la cellule D8 pour exprimer le
membre gauche de la contrainte sur les heures de travail de l’atelier
« menuiserie ». Au préalable, nous avons entré les coefficients (4 et 3)
du membre gauche dans les cellules B8 et C8 respectivement. Ainsi on
peut saisir indifféremment l’une ou l’autre des formules suivantes dans la
cellule D8 :
= B8*B5 + C8*C5
ou bien
= SOMMEPROD(B8:C8 ;$B$5:$C$5)
Au passage remarquez que l’on aurait pu obtenir cette seconde formule
par copie de la formule similaire de la cellule D6 (=
SOMMEPROD(B6:C6 ;$B$5:$C$5)). Les formules des membres gauches
des autres contraintes (D9 pour la peinture et D10 pour la contrainte
commerciale) sont obtenues par copie de la formule saisie en cellule D8.

Cellules associées aux membres droits des contraintes (RHS)


Là aussi, on doit choisir une cellule de la feuille pour chaque membre
droit de chaque 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.

d) Résolution via le Solveur


Une fois les contraintes saisies dans la feuille, nous lançons la macro
« Solveur » du menu « Outils » du tableau Excel. La boîte de dialogue
« Paramètres du solveur » s’affiche à l’écran. Cette boîte de dialogue
apparaît dans l’écran 1.2.

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.

Spécification des cellules variables


Maintenant on passe à la zone Cellules variables. On entre dans cette
zone les références des cellules des variables de décision du problème.
Pour le cas MOBILIA, on entre donc la plage B5:C5. Excel affecte le
symbole $ automatiquement aux cellules sélectionnées.

Spécification des contraintes


Ensuite nous utilisons le bouton Ajouter dans la zone suivante pour
entrer les références des membres gauche (LHS) et membres droits
(RHS) de chaque contrainte. La boîte de dialogue Ajouter une
contrainte (voir écran 1.2) contient trois zones, une zone pour entrer la
référence de la cellule du membre gauche Cellule (LHS) de la
contrainte, ensuite une liste déroulante pour le type de contrainte et une
zone pour saisir la référence de la cellule du membre droit Contrainte
(RHS) de la contrainte. La liste déroulante propose cinq options ou
choix : ≤, ≥, =, ent (pour entier), et bin (pour binaire).
Nous pouvons entrer aussi bien chaque contrainte à la fois que plusieurs
contraintes de même type (≤, ≥, =) en même temps. Pour notre cas, on
peut ajouter la contrainte de l’atelier menuiserie en entrant D8 dans la
zone de gauche (LHS), F8 dans la zone de droite (RHS) et en
sélectionnant le type ≤ dans la liste du milieu. Comme il a été mentionné
précédemment, le type ≤ de la cellule E8 n’a pas d’intérêt pour le
Solveur et on doit plutôt entrer le type de chaque contrainte à partir de
la boîte de dialogue « Ajouter une contrainte ». On peut maintenant
ajouter la contrainte de l’atelier peinture en entrant D9 et F9 dans les
zones LHS et RHS respectives de la boîte « Ajouter une contrainte ».
Enfin, on ajoute la contrainte commerciale qui limite la fabrication des
chaises en entrant D10 et F10 dans les zones LHS et RHS respectives.
Du moment que les trois contraintes sont de même type (≤), on peut
entrer la plage de cellules D8 :D10 dans la zone de gauche (LHS), et la

© 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.

Au cours de la saisie des contraintes, on peut utiliser les autres boutons


Modifier et Supprimer pour modifier ou supprimer une contrainte.
Notons qu’il n’est pas possible d’entrer les formules de la fonction
objectif et des membres LHS et/ou RHS des contraintes dans la boite de
dialogue Paramètres du Solveur. Les formules doivent être saisies
dans des cellules appropriées de la feuille de calcul Excel avant d’utiliser
le Solveur.
Bien qu’il soit possible d’entrer directement des constantes (240, 100 et
60 pour notre modèle) dans la zone de droite (RHS) au cours de l’ajout
des contraintes, il est préférable d’entrer plutôt des références de
cellules (F8, F9 et F10 dans notre modèle).

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.

Les conditions du Vous avez activé la case à cocher Modèle


modèle supposé supposé linéaire, mais le calcul final du solveur
linéaire ne sont pas donne des valeurs qui ne correspondent pas au
satisfaites. modèle linéaire. La solution n'est pas valide pour
les formules réelles de la feuille de calcul. Pour
vérifier que le problème est non linéaire , activez la
case à cocher Echelle automatique , puis
exécuter de nouveau le problème . Si ce message
s'affiche à nouveau , désactivez la case Modèle
supposé linéaire , puis exécutez de nouveau le
problème.
Table 1.1
La boîte de dialogue des résultats du Solveur indique aussi qu’il y a trois
types de rapports possibles : Réponses, Sensibilité et Limites. Au
passage, notons qu’il faut sélectionner le ou les type(s) de rapports
souhaités avant de valider la boîte des résultats.

© 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

2- Cas DINDINO sous Excel


Rappelons la forme canonique de ce problème
[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é )

L’écran 2.1 résume le modèle Excel correspondant.

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 -