Académique Documents
Professionnel Documents
Culture Documents
Avant-Propos 4
1 Modélisation 6
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Modèle et typologie des modèles . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.1 La notion de modèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.2 Les composants d’un modèle . . . . . . . . . . . . . . . . . . . . . . . . . 7
a) Les variables de décisions . . . . . . . . . . . . . . . . . . . . . . 7
b) L’environnement et le système . . . . . . . . . . . . . . . . . . . 7
c) Les conséquences . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.3 Typologie des modèles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
a) Modèles descriptifs (E/S) . . . . . . . . . . . . . . . . . . . . . . 9
b) Modèles de simulation (Calcul des conséquences) (E/S, Action) . 9
c) Modèles d’optimisation (E/S, Action, Critères) . . . . . . . . . . 9
1.3 La démarche de modélisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3.1 Analyse descriptive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3.2 Mise en équation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3.3 Résolution du modèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1
2.5.7 Problème d’embauche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.5.8 Problème du constructeur européen . . . . . . . . . . . . . . . . . . . . . 25
2.5.9 Problème d’horaire des standardistes . . . . . . . . . . . . . . . . . . . . . 28
2.5.10 Problème de comptabilité de gestion . . . . . . . . . . . . . . . . . . . . . 30
2.5.11 Problème de galettes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.6 Exercices d’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3 La Méthode de Simplexe 37
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2 Mise sous forme standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3 Revue algébrique de la méthode du simplexe . . . . . . . . . . . . . . . . . . . . 38
3.4 La méthode des tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.4.1 Tableau de simplexe initial . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
a) Critère d’entrée . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
b) Critère de sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.4.2 Construction du deuxième tableau et des autres tableaux . . . . . . . . . . 43
3.4.3 Critère d’arrêt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.4.4 Résumé de la procédure de la méthode du simplexe . . . . . . . . . . . . 45
3.5 Exemples d’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.5.1 Problème de production . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.5.2 Problème de galettes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.6 Exercices d’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2
5.3.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
5.3.2 Propriétés et signification économique du programme dual . . . . . . . . . 96
5.3.3 Tableau de correspondance Primal-Dual (à connaître par cœur) . . . . . . 99
5.4 Exemples d’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
5.4.1 Problème de médecine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
5.4.2 Problème d’alimentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
5.5 Analyse de sensibilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
5.5.1 Analyse de sensibilité sur les cj . . . . . . . . . . . . . . . . . . . . . . . . 105
5.5.2 Analyse de sensibilité sur les bi . . . . . . . . . . . . . . . . . . . . . . . . 108
5.5.3 Prédire l’effet des changements simultanés de paramètres - La Règle 100 % 116
5.5.4 Analyse de sensibilité sur les cœfficients aij . . . . . . . . . . . . . . . . . 117
5.6 Introduction d’une nouvelle activité . . . . . . . . . . . . . . . . . . . . . . . . . . 119
5.6.1 Introduction d’une nouvelle variable de décision . . . . . . . . . . . . . . 119
5.6.2 Introduction d’une nouvelle contrainte . . . . . . . . . . . . . . . . . . . . 121
5.7 Exercices d’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
3
Avant-Propos
4
Il s’agit de :
+ modéliser le processus de décision ;
+ de déterminer les outils appropriés ;
+ de résoudre le problème de gestion ;
+ de commenter la solution en précisant ses limites.
Le flou artistique ou flair qui présidait à la prise de décision est ainsi supprimé, sinon minimisé
grâce à une exploration systématique des opportunités et leurs conséquences. Même en avenir
incertain, le gestionnaire dispose de moyens qui lui permettent de prendre une décision éclairée
par la connaissance des états de la nature et des coûts d’opportunités de la décision.
J’espère que ce document sera d’une aide précieuse pour la compréhension et l’assimilation
des concepts liés à la Recherche Opérationnelle.
5
Modélisation
1
1.1 Introduction
Modéliser, c’est concevoir un modèle. Un modèle est une représentation abstraite où appa-
raissent, dépouillés des détails superflus, les formes et les objets présents dans la situation réelle
et où sont mis en évidence les relations et les processus qu’entretiennent ces objets entre eux. Ces
modèles sont le plus souvent mathématiques, construits à l’aide du symbolisme algébrique par
lequel on traduit les relations existant entre les objets mis en cause dans le phénomène à modé-
liser. Nous cherchons un ensemble de relations (équations, inéquations, dépendances logiques,
. . . ) qui correspondent, dans la réalité, aux lois du marché, à la disposition physique des lieux,
aux contraintes de marketing, aux respect des disponibilités en ressources ou en main-d’œuvre.
Les modèles mathématiques partagent presque tous cette caractéristique de chercher l’optimisation
d’un objectif : soit sa minimisation, soit sa maximisation.
Comme on peut posséder une excellente connaissance du football sans pour autant montrer
quelque adresse à ce jeu, savoir ce qu’est un modèle ne confère pas l’habilité à en construire. M O -
DÉLISER , C ’ EST UN ART QUI S ’ APPREND PETIT À PETIT (« molo-molo »). Le contact direct avec de
nombreux problèmes est la méthode d’apprentissage que nous avons retenue afin d’appréhender
l’esprit de la modélisation.
6
simplification, et nous serons conduits à utiliser parfois des modèles mathématiques préexistants.
Pour nous un modèle sera donc une représentation simplifiée de la réalité ayant au moins l’un
des deux buts ou objectifs suivants :
• mieux comprendre la réalité ;
• aider à la prise de décision en fournissant des solutions acceptables/réalisables aussi bonnes
que possible.
Les variables de décisions servent à décrire les actions envisagées. Elles peuvent prendre leurs
valeurs sur un ensemble fini (i.e. nombre de caisses ou de guichets à ouvrir) ou considéré comme
infini (par exemple budget consacré à un média). Elles peuvent être simultanées (par exemple
quantités à produire en un mois) ou séquentielles s’étalant dans le temps (par exemple faire une
étude de marché, puis décider de la taille de la capacité de production).
b) L’environnement et le système
Pour décrire l’environnement et le système que nous noterons E/S, nous utilisons deux séries
ou types d’éléments, en relation entre eux :
• Les paramètres structurels : ce sont des constantes qui ne vont pas être modifiées par les
décisions du décideur, ces paramètres structurels sont dépendants des hypothèses simpli-
ficatrices qui ont été prises pour construire le modèle et de l’horizon de modélisation que
l’on s’est fixé (prix de vente d’un produit, salaire d’une caissière, . . . ). Certains paramètres
structurels peuvent être définis par une loi de probabilité (par exemple nombre de clients
arrivant à une station service pendant un intervalle de temps donné).
7
• Les variables d’état du système : vont permettre de faire une "photographie" de l’environne-
ment et du système sous l’effet des décisions. Elles sont fonction à la fois des paramètres
structurels et des décisions à envisager. Par exemple :
— les capacités de production utilisées dépendent des quantités à produire (décision) et des
données technologiques de production (paramètres),
— le budget publicitaire dépensé, le nombre de contacts publicitaires dépendent des spots
publicitaires (décisions), du coût des spots et des audiences des émissions (paramètres),
— le nombre de clients dans une file d’attente, le nombre de caisses inoccupées dépendent
du nombre de caisses ouvertes (décision) et du rythme d’arrivées à la caisse et du temps
de service (paramètres).
Ces variables d’état sont des variables aléatoires si les paramètres dont elles dépendent sont
des lois de probabilité.
• Les relations de fonctionnement du système : qui exprime le respect des contraintes d’évo-
lution du système. C’est peut être des équations ou inéquations (respect d’une demande,
d’une capacité de production, d’un budget par exemple) ou des relations temporelles (évo-
lution d’une file d’attente toutes les minutes). Ces relations définissent le modèle de fonc-
tionnement du système.
c) Les conséquences
Les conséquences sont des variables d’état privilégiées qui vont permettre de comparer ou
de sélectionner les décisions : par exemple le profit réalisé grâce à une production ou le temps
moyen d’attente d’un client. Ces conséquences sont évaluées par un modèle d’évaluation.
Le modèle d’évaluation peut consister en une simple optimisation (maximisation ou mini-
misation) : par exemple marge maximale d’une production, risque minimal d’un portefeuille,
minimisation du temps moyen d’attente, dans ce cas la variable d’état privilégiée comme consé-
quence doit être unique et se nomme fonction économique (ou fonction objectif).
Il peut aussi être constitué de plusieurs compteurs qui déterminent les plages dans lesquelles
doivent se trouver les conséquences : par exemple moins de 95% des clients doivent attendre
plus de 5 minutes aux caisses et le taux d’occupation des caisses doit être au moins de 80%. Dans
ce cas le modèle d’évaluation permet d’éliminer les décisions qui n’atteignent pas ces objectifs.
En conséquence, la structure d’un modèle suivra le schéma suivant :
8
1.2.3 Typologie des modèles
Suivant les éléments connus, on peut dégager la typologie suivante :
Il s’agit de modèles, généralement statistiques, qui ont pour objet de faire connaître les para-
mètres structurels du modèle ou les formules définissant les variables d’état du système.
On répond ici aux questions "Quel est mon environnement, comment fonctionne le système ?"
Les méthodes statistiques utilisées vont de l’estimation simple à l’analyse des données ou aux
méthodes de prévision.
On connaît ici les paramètres structurels et les variables d’état de l’environnement et du sys-
tème et l’on veut évaluer les conséquences des différentes actions envisagées (donc en nombre
fini) sans pour autant chercher à identifier "la meilleure".
Ce choix est laissé au décideur, le modèle peut fournir évidemment plusieurs conséquences
(multicritère).
On répond ici à la question "Que se passe-t-il si . . . ?"
La méthode privilégiée ici est la méthode de simulation, soit avec des langages dédiés, soit
sur tableur ou à l’aide de langages non spécialisés tels que C, FORTRAN, PASCAL, BASIC, Java,
...
On connaît ici les paramètres structurels et les variables d’état de l’environnement et du sys-
tème. On connaît les actions envisagées ainsi que le critère d’évaluation des conséquences. On
veut déterminer la meilleure action possible.
9
Évidemment, le critère de choix est unique (limitation des méthodes mathématiques).
On répond ici à la question "Que faire ?" Les méthodes utilisées sont très variées : elles sont
mathématiques ou font appel à la simulation ou à des heuristiques.
Nous nous intéresserons dans ce cours uniquement aux modèles d’optimisation ou de simulation.
Dans ce cas la modélisation peut être considérée comme une méthodologie d’aide à la décision
stratégique, qui a pour objectif de permettre une allocation efficace des ressources en vue de la
réalisation d’objectifs. En voici quelques exemples :
• Déterminer le nombre de guichets à ouvrir pendant une période donnée pour éviter une
attente trop longue des clients et une inactivité trop importante des guichetiers.
• Déterminer une bonne utilisation d’un budget publicitaire pour atteindre le plus grand
nombre de clients potentiels.
• Déterminer la composition d’un portefeuille pour atteindre une rentabilité maximale avec
un risque maximum donné.
• Déterminer une production qui conduise à une marge maximum compte tenu des res-
sources disponibles et des demandes connues.
10
1.3.3 Résolution du modèle
On peut soit utiliser un logiciel spécifique, par exemple un logiciel de programmation linéaire
(comme LINGO), soit utiliser un progiciel standard du type tableur. Dans ce dernier cas, il faudra
bien veiller à respecter la structuration du modèle, c’est à dire à affecter des zones bien délimitées
et séparées aux différents composants du modèle :
— Paramètres structurels.
— Variables de décision.
— Variables d’état et relations de fonctionnement.
— Conséquences évaluées par des critères.
Il faut bien noter que les solutions trouvées sont les solutions du modèle et non du problème
originel : "La carte n’est pas le territoire. . . ".
Il est donc de la responsabilité du décideur de transcrire ces solutions dans le monde
réel en réintégrant éventuellement certains éléments non pris en compte dans le modèle.
L’adéquation des solutions trouvées au problème réel dépend bien évidemment de la per-
tinence du modèle et ceci relève plus d’un art, fondé sur l’expérience, que d’une science.
Le processus de modélisation fait donc appel à trois ressources principales :
• Les données de l’entreprise et de l’environnement, recueillies dans le système d’information
de l’entreprise (paramètres structurels).
• Les connaissances d’un expert sur le métier et l’environnement (relations de fonctionne-
ment, conséquences).
• Des modèles mathématiques ou des outils de simulation tels que des logiciels spécialisés
ou un tableur (résolution).
11
Formulation d’un programme linéaire (PL)
2
2.1 Introduction
L’importance de l’optimisation et la nécessité d’un outil simple pour modéliser des problèmes
de décision que soit économique, militaire ou autres on fait de la programmation linéaire un des
champs de recherche les plus actifs au milieu du siècle précédent. Les premiers travaux (1947)
sont celle de George B. Dantzig et ses associés du département des forces de l’air des États-Unis
d’Amérique.
Les problèmes de programmations linéaires sont généralement liés à des problèmes d’allo-
cations de ressources limitées, de la meilleure façon possible, afin de maximiser un profit ou
de minimiser un coût. Le terme meilleur fait référence à la possibilité d’avoir un ensemble de
décisions possibles qui réalisent la même satisfaction ou le même profit. Ces décisions sont en
général le résultat d’un problème mathématique.
12
2.3 Les étapes de formulation d’un PL :
Généralement il y a trois étapes à suivre pour pouvoir construire le modèle d’un programme
linéaire :
1. Identifier les variables du problème à valeur non connues (variables de décision) et
les représenter sous forme symbolique (exemple x1 , y1 ).
La première étape consiste à choisir les variables du problème.
On appelle variable toute quantité utile à la résolution du problème dont le modèle doit
déterminer la valeur.
Cette définition permet de différencier les variables des paramètres, qui sont des données
qui peuvent varier, par exemple d’une période à l’autre ou d’un scénario à l’autre.
2. Identifier l’objectif ou le critère de sélection et le représenter sous une forme linéaire en
fonction des variables de décision. Spécifier si le critère de sélection est à maximiser (max)
ou à minimiser (min).
La deuxième étape consiste à formuler mathématiquement l’objectif.
On appelle fonction objectif d’un problème d’optimisation le critère de choix entre les
diverses solutions possibles.
3. Identifier les restrictions (les contraintes) du problème et les exprimer par un système
d’équations ou d’inéquations linéaires.
La troisième étape est la formulation des contraintes du problème.
On appelle contraintes du problème toutes les relations limitant le choix des valeurs pos-
sibles des variables.
Ces relations peuvent être de simples bornes sur les variables.
Définition 1 :
On appelle contraintes du problème toutes les relations limitant le choix des valeurs possibles
des variables.
z = c1 x 1 + c2 x 2 + . . . + cN x N
où les coefficients c1 , . . . , cN doivent avoir une valeur bien déterminée (avec certitude) et
peuvent être positifs, négatifs ou nuls. Par exemple le coefficient ci peut représenter un profit
unitaire lié à la production d’une unité supplémentaire du bien xi , ainsi la valeur de z est le
profit total lié à la production des différents biens en quantités égales à x1 , x2 , . . . , xN .
13
Supposons que ces variables de décision doivent vérifier un système d’équations linéaires
définis par M inégalités
≤
a11 x1 + a12 x2 + . . . + a1N xN b1
≤
a21 x1 + a22 x2 + . . . + a2N xN b2
.. .. .. .
. . .
aM 1 x 1 + aM 2 x 2 + . . . + aM N x N ≤ b M
où les cœfficients a1M , . . . , aM N et b1 , . . . , bM doivent avoir une valeur bien déterminée (avec
certitude) et peuvent être positifs, négatifs ou nuls. Le paramètre bj représente la quantité de
matière première disponible dont le bien xi utilise une quantité égale à aij xi .
En suivant les étapes de formulation ci-dessus, on peut représenter le PL comme suit :
max z = c1 x1 + c2 x2 + . . . + cN xN
a11 x1 + a12 x2 + . . . + a1N xN ≤ b1
a21 x1 + a22 x2 + . . . + a2N xN ≤ b2
.. .. ..
(2.1) . . ..
≤ bM
aM 1 x 1 + aM 2 x 2 + . . . + aM N x N
x1 ≥ 0, . . . , xN ≥ 0
14
2.5 Exemples de formulations
Limité au départ aux problèmes industriels et militaires, de nos jours plusieurs problèmes
de divers domaines sont représentés ou approximés par des modèles de PL. L’utilisation de ces
techniques de modélisation s’est renforcée encore après avoir construit des algorithmes et des
logiciels capables de résoudre de plus larges problèmes avec autant de variables de décision que
de contraintes.
La tâche de formulation demande généralement une certaine expertise et connaissance du
problème pour pouvoir relever facilement les différentes composantes du problème et ainsi don-
ner un programme qui modélise au mieux la situation réelle. Dans ce qui suit, on présentera
quelques exemples de formulation en programme linéaire liés à différents problèmes de déci-
sion :
Positionnement du problème
Un agriculteur veut allouer 150 hectares de surface irrigable entre culture de tomates et
celles de piments. Il dispose de 480 heures de main d’œuvre et de 440 m3 d’eau. Un hectare
de tomates demande 1 heure de main d’œuvre, 4 m3 d’eau et donne un bénéfice net de
100 $. Un hectare de piments demande 4 heures de main d’œuvre, 2 m3 d’eau et donne
un bénéfice net de 200 $.
Le bureau du périmètre irrigué veut protéger le prix des tomates et ne lui permet pas
de cultiver plus de 90 hectares de tomates. Quelle est la meilleure allocation de ses res-
sources ?
Étape 1 : Identification des variables de décision. Les deux activités que l’agriculteur doit dé-
terminer sont les surfaces à allouer ou le nombre d’hectares pour la culture de tomates et de
piments :
- x1 = le nombre d’hectares allouée à la culture des tomates ;
- x2 = le nombre d’hectares allouée à la culture des piments.
On vérifie bien que les variables de décision x1 et x2 sont positives : x1 ≥ 0, x2 ≥ 0.
Étape 2 : Identification de la fonction objectif. La fonction objectif consiste à max imiser le
profit apporté par la culture de tomates et de piments. Les contributions respectives 100 et 200,
des deux variables de décision x1 et x2 sont proportionnelles à leur valeur. La fonction objectif
est donc
max z = 100x1 + 200x2 .
Étape 3 : Identification des contraintes. Dans ce problème les contraintes représentent la dispo-
nibilité des facteurs de production :
15
+ Terrain : l’agriculteur dispose de 150 hectares de terrain, ainsi la contrainte liée à la
limitation de la surface de terrain est :
x1 + x2 ≤ 150.
+ Eau : la culture d’un hectare de tomates demande 4 m3 d’eau et celle d’un hectare de
piments demande 2 m3 mais l’agriculteur ne dispose que de 440 m3 . La contrainte qui
exprime les limitations des ressources en eau est :
Un spécialiste en médecine a fabriqué un médicament (des pilules) pour guérir les sujets
atteints d’un rhume. Ces pilules sont fabriquées selon deux formats :
• Petite taille : elle contient 2 grains d’aspirine, 5 grains de bicarbonate et 1 grain de
codéine.
• Grande taille : elle contient 1 grain d’aspirine, 8 grains de bicarbonate et 6 grains de
codéine.
Pour guérir la maladie, le sujet a besoin de 12 grains d’aspirine, 74 grains de bicarbonate
et 24 grains de codéine. Déterminer le nombre de pilules minimales à prescrire au sujet
pour qu’il soit guérit.
16
Formulation du problème en un PL:
min w = y1 + y2 .
Étape 3 : Identification des contraintes. Les contraintes imposées par le problème sur les valeurs
possibles de y1 et y2 sont :
+ La prescription doit contenir des pilules avec au moins 12 grains d’aspirine. Sachant qu’une
petite pilule contient 2 grains d’aspirine et qu’une grande pilule contient un seul grain
d’aspirine, on obtient la contrainte suivante :
2y1 + y2 ≥ 12.
+ Finalement la contrainte imposée par le fait que la prescription doit contenir au moins 24
grains de codéine est :
y1 + 6y2 ≥ 24.
min w = y1 + y2
2y1 + y2 ≥ 12
5y1 + 8y2 ≥ 74
.
y1 + 6y2 ≥ 24
y1 ≥ 0, y2 ≥ 0
17
2.5.3 Problème de production
Positionnement du problème
Pour fabriquer deux produits P1 et P2 on doit effectuer des opérations sur trois machines
M1 , M2 et M3 , successivement mais dans un ordre quelconque. Les temps unitaires d’exé-
cution sont donnés par le tableau suivant :
M1 M2 M3
P1 11 mins 7 mins 6 mins
P2 9 mins 12 mins 16 mins
On supposera que les machines n’ont pas de temps d’inactivité. La disponibilité pour
chaque machine sont :
• 165 heures (9 900 minutes) pour la machine M1 ;
• 140 heures (8 400 minutes) pour la machine M2 ;
• 160 heures (9 600 minutes) pour la machine M3 .
Le produit P1 donne un profit unitaire de 900 $ et le produit P2 un profit unitaire de
1 000 $.
Dans ces conditions, combien doit-on fabriquer mensuellement de produits P1 et P2 pour
avoir un profit total optimum ?
18
2.5.4 Problème d’alimentation
Positionnement du problème
On se propose de réaliser une alimentation économique pour des bestiaux, qui contient
obligatoirement 4 sortes de composants nutritifs, A, B, C et D. L’industrie alimentaire pro-
duit précisément deux aliments M et N qui contiennent ces composants : 1 Kg d’aliment
M contient 100 g de A, 100 g de C, 200 g de D ; 1 Kg d’aliment N contient 100 g de B,
200 g de C, 100 g de D. Un animal doit consommer par jour au moins : 0.4 Kg de A ;
0.6 Kg de B ; 2 Kg de C ; 1.7 Kg de D. L’aliment M coûte 10 $ le Kg et N coûte 4 $ le Kg.
Quelles quantités d’aliments M et N doit-on utiliser par jour et par animal pour réaliser
l’alimentation la moins coûteuse ?
Étape 3 : Le choix de cette quantité est contraint à la présence dans l’alimentation du compo-
sant :
• A : 0.1y1 ≥ 0.4 ⇒ y1 ≥ 4;
• B : 0.1y2 ≥ 0.6 ⇒ y2 ≥ 6;
• C : 0.1y1 + 0.2y2 ≥ 2 ⇒ y1 + 2y2 ≥ 20;
• D : 0.2y1 + 0.1y2 ≥ 1.7 ⇒ 2y1 + y2 ≥ 17.
19
2.5.5 Problème de mélange
Positionnement du problème
Un industriel veut produire un alliage Z à 30% de plomb, 30% de zinc et 40% d’étain.
Supposons qu’il puisse se procurer sur le marché des alliages A, B, C, D, E, F, G, H, I dont
les compositions et les prix respectifs sont donnés dans le tableau suivant :
Compositions A B C D E F G H I Alliage à
des alliages (en %) fabriquer
Plomb 10 10 40 60 30 30 30 50 20 30
Zinc 10 30 50 30 30 40 20 40 30 30
Étain 80 60 10 10 40 30 50 10 50 40
Coût au kilo 4.1 4.3 5.8 6 7.6 7.5 7.3 6.9 7.3
Combien doit-il acheter de chaque alliages A, B, C, D, E, F, G, H et I pour obtenir au prix
de revient optimum 1 Kg de l’alliage Z ?
Étape 2 : La fonction objectif dans cet exemple représente le coût d’achat des différents alliages
A, B, C, D, E, F, G, H et I. Donc l’expression de la fonction objectif est la suivante :
min w = 4.1y1 + 4.3y2 + 5.8y3 + 6y4 + 7.6y5 + 7.5y6 + 7.3y7 + 6.9y8 + 7.3y9 .
y1 + y2 + y3 + y4 + y5 + y6 + y7 + y8 + y9 = 1.
0.1y1 + 0.1y2 + 0.4y3 + 0.6y4 + 0.3y5 + 0.3y6 + 0.3y7 + 0.5y8 + 0.2y9 ≥ 0.3.
20
• Équation de la satisfaction des proportions en Zinc :
0.1y1 + 0.3y2 + 0.5y3 + 0.3y4 + 0.3y5 + 0.4y6 + 0.2y7 + 0.4y8 + 0.3y9 ≥ 0.3.
0.8y1 + 0.6y2 + 0.1y3 + 0.1y4 + 0.4y5 + 0.3y6 + 0.5y7 + 0.1y8 + 0.5y9 ≥ 0.4.
min w = 4.1y1 + 4.3y2 + 5.8y3 + 6y4 + 7.6y5 + 7.5y6 + 7.3y7 + 6.9y8 + 7.3y9
y1 + y2 + y3 + y4 + y5 + y6 + y7 + y8 + y9 = 1
0.1y1 + 0.1y2 + 0.4y3 + 0.6y4 + 0.3y5 + 0.3y6 + 0.3y7 + 0.5y8 + 0.2y9 ≥ 0.3
0.1y1 + 0.3y2 + 0.5y3 + 0.3y4 + 0.3y5 + 0.4y6 + 0.2y7 + 0.4y8 + 0.3y9 ≥ 0.3 .
0.8y1 + 0.6y2 + 0.1y3 + 0.1y4 + 0.4y5 + 0.3y6 + 0.5y7 + 0.1y8 + 0.5y9 ≥ 0.4
yj ≥ 0, j = 1, . . . , 9
Une entreprise désire effectuer une campagne publicitaire dans la télévision, la radio et
les journaux pour un produit lancé récemment sur le marché. Le but de la campagne est
d’attirer le maximum possible de clients. Les résultats d’une étude de marché sont donnés
par le tableau suivant :
Télévision Radio Journaux
Locale Par satellite
Coût d’une publicité 40 e 75 e 30 e 15 e
Nombre de client 400 900 500 200
potentiel par publicité
Nombre de client 300 400 200 100
potentiel femme
par publicité
Pour la campagne, on prévoit de ne pas payer plus que 800 e pour toute la campagne et
on demande que ces objectifs soient atteints :
— Au minimum 2 000 femmes regardent, entendent ou lisent la publicité ;
— La campagne publicitaire dans la télévision ne doit pas dépasser 500 e ;
— Au moins 3 spots publicitaires seront assurer par la télévision locale et au moins de
deux spots par la télévision par satellite.
— Le nombre des publicités dans la radio ou dans les journaux sont pour chacun entre
5 et 10.
Modéliser le problème sous forme canonique.
21
Formulation du problème en un PL:
• Contraintes de la télévision :
22
2.5.7 Problème d’embauche
Positionnement du problème
Une firme d’exploration minière veut recruter 6 personnes pour combler les postes va-
cants dans une équipe d’arpenteurs-géomètres qui doit se rendre pour de longues périodes
dans le Grand Nord. On a retenu, parmi les dossiers reçus, 12 candidatures valables. Les
émoluments annuels exigés par ces personnes apparaissent au tableau suivant :
La cohésion de l’équipe est de prime importance. Des tests de personnalité et des séances
d’interaction entre les 12 candidats menés par des psychologues ont révélé que certaines
combinaisons de candidats n’étaient pas souhaitables. En particulier, on désire respecter
les contraintes de cohésion suivantes :
(1) Si les candidats 3 et 8 sont embauchés, le candidat 9 ne peut l’être.
(2) Si on embauche le candidat 2, il convient d’embaucher le candidat 11, et réciproque-
ment, puisqu’ils sont mari et femme.
(3) Le candidat 7 est en conflit avec les candidats 4 et 5, et on ne veut pas retenir ses
services si l’un des candidats 4 ou 5, ou les deux, sont embauchés.
De plus, compte tenu des travaux à effectuer par l’équipe, on tient également à respecter
les contraintes de qualification suivantes :
(4) On ne peut embaucher plus de trois des cinq candidats suivants : 1, 3, 6, 10, 12.
(5) On doit embaucher un et un seul des trois candidats 3, 5 et 12.
Quels candidats faut-il embaucher si l’objectif est d’optimiser le total des émoluments an-
nuels à verser aux nouveaux employés ?
23
Formulation du problème en un PL:
Étape 1 : Dans notre problème, on remarque que les inconnues sont les personnes à recruter
parmi les 12 candidats. Un candidat peut-être recruté ou non donc les variables de décision
du problème sont des variables binaires (variables bivalentes, variables booléennes ou
variables 0 − 1) : (
1 si le candidat i est selectionné ;
yi =
0 sinon.
avec i = 1, . . . , 12.
Étape 2 : La fonction objectif consiste à minimiser les émoluments à verser aux candidats re-
crutés :
12
X
min w = ci y i .
i=1
min w = 56y1 + 55y2 + 54y3 + 57y4 + 49y5 + 51y6 + 54y7 + 56y8 + 52y9 + 55y10 + 53y11 + 50y12 .
+ La firme d’exploration minière veut recruter 6 personnes pour combler les postes vacants :
y2 = y11 ⇒ y2 − y11 = 0.
y1 + y3 + y6 + y10 + y12 ≤ 3.
y3 + y5 + y12 = 1.
24
Le programme linéaire résultant est :
min w = 56y1 + 55y2 + 54y3 + 57y4 + 49y5 + 51y6 + 54y7 + 56y8 + 52y9 +
55y10 + 53y11 + 50y12
y1 + y2 + y3 + y4 + y5 + y6 + y7 + y8 + y9 + y10 + y11 + y12 = 6
y3 + y8 + y9 ≤ 2
y2 − y11 = 0
y4 + y5 + 2y7 ≤ 2 .
y1 + y3 + y6 + y10 + y12 ≤ 3
y3 + y5 + y12 = 1
yj ∈ {0, 1}, j = 1, . . . , 12
Positionnement du problème
Avant d’être livrés aux différents concessionnaires de la marque, les véhicules sont entrepo-
sés, en fin de journée, dans un hangar pouvant recevoir l’équivalent de 200 voitures. Une
camionnette occupe 5 fois plus de place qu’un vélo et une voiture 3 fois plus de place qu’un
vélo. Suite à des commandes importantes provenant de différentes sociétés de transport,
l’entreprise est dans l’obligation de produire un minimum de 30 camionnettes par jour.
La livraison des véhicules aux concessionaires se fait chaque nuit au moyen de camions
appartenant à l’entreprise. Ces camions ont ensemble une capacité de transport de 150
voitures. Si la production excède cette capacité de transport de l’entreprise, celle-ci fait
appel à un transporteur indépendant. Faire appel à ce transporteur indépendant génère
un surcoût de 50 e par ”voiture” transportée (entendez l’espace pris par chaque type de
véhicule exprimé en "espace voiture").
25
Formulation du problème en un PL:
+ Contrainte temporelle :
— Découpe des tôles : 2x1 + 4x2 + 0, 5x3 ≤ 480.
— Assemblage : 5x1 + 7x2 + x3 ≤ 480.
— Finition intérieure : 7x1 + 2x2 ≤ 480.
+ Limitation du hangar :
n1 x1 + n2 x2 + n3 x3 ≤ 200n1 .
Introduisons des variables auxiliaires pour les espaces ; soit
— n1 : l’espace occupé par la voiture ;
— n2 : l’espace occupé par la camionnette ;
— n3 : l’espace occupé par le vélo.
Nous devons exprimer tous les véhicules (camionnette et vélo) en "espace voiture" : n2 =
5n3 et n1 = 3n3 d’où
1
n3 = n1 ,
3
5
n2 = n1 .
3
Ce qui nous donne après simplification :
5 1
x1 + x2 + x3 ≤ 200.
3 3
x2 ≥ 30.
+ Production excédentaire :
5 1 5 1
x1 + x2 + x3 ≤ 150 + x4 ⇒ x1 + x2 + x3 − x4 ≤ 150.
3 3 3 3
+ Contraintes de positivité :
x1 ≥ 0, x3 ≥ 0, x4 ≥ 0.
26
max z =3000x1 + 2000x2 + 500x3 − 50x4 − 24000
2x1 + 4x2 + 0, 5x3 ≤ 480
5x1 + 7x2 + x3 ≤ 480
7x1 + 2x2 ≤ 480
5 1
x1 + x2 + x3 ≤ 200 .
3 3
x2 ≥ 30
5 1
x1 + x2 + x3 − x4 ≤ 150
3 3
x1 ≥ 0, x3 ≥ 0, x4 ≥ 0
x4 ≤ 50.
27
2.5.9 Problème d’horaire des standardistes
Positionnement du problème
28
à 21 h et continuent jusqu’à 6 h ; et troisièmement, ceux qui viennent tout juste de prendre leur
service à minuit. La figure 2.1 traduit graphiquement cette idée, qui s’exprime algébriquement
par l’inéquation :
y0 + y18 + y21 ≥ 6.
min w =
86y0 + 86y3 + 86y6 + 75y9 + 75y12 + 75y15 + 80y18 + 80y21
y18 + y21 + y0 ≥ 6
y21 + y0 + y3 ≥ 4
y0 + y3 + y6 ≥ 12
y3 + y6 + y9 ≥ 20
y6 + y9 + y12 ≥ 20
.
y 9 + y 12 + y 15 ≥ 24
y12 + y15 + y18 ≥ 14
y15 + y18 + y21 ≥ 14
yj ∈ 0, 3, 6, 9, 12, 15, 18, 21
29
2.5.10 Problème de comptabilité de gestion
Positionnement du problème
Une petite société d’ébénisterie dispose d’assez de bois et de fournitures pour fabriquer
100 tables à langer et 100 berceaux à la date du 1er juin.
Une table se vend 500 $ et un berceau, 800 $. Les coûts de main-d’œuvre sont de 250 $
pour une table et de 350 $ pour un berceau. Le bois et les fournitures lui coûtent 75 $ pour
une table et 160 $ pour un berceau. Une grande part de la main-d’œuvre est occasionnelle,
car la société accepte de recevoir en stage des élèves d’une école d’ébénisterie. Pendant
l’année scolaire, le directeur de cette école lui confie autant d’apprentis qu’il le désire ; mais
le nombre d’apprentis disponible sera réduit au cours de la période estivale qui débute, ce
qui limitera sa production de juin à un maximum de 50 tables et de 30 berceaux. Voici un
résumé de la situation financière de la société au 1er juin.
Actif Passif
Encaisse 20 000 $
Compte clients 37 000 $
∗
Stocks 23 500 $
Emprunt bancaire 30 000 $
∗
23500 = (100 × 75) + (100 × 160)
La société doit établir combien de tables et de berceaux il lui faut fabriquer au cours du
mois de juin. Sa clientèle ne paie toutefois jamais comptant : les meubles vendus en juin
ne seront payés qu’au début du mois d’août. En juin, la société doit recevoir 13 850 $ de
comptes clients et il devra payer 1 600 $ pour le loyer de son atelier. Il aura à rembourser
une partie de l’emprunt bancaire, soit 4 350 $. La dernière semaine de juin, il recevra une
livraison de bois précieux valant 26 500 $, qu’il lui faudra payer en août.
La société veut pouvoir disposer, au début de juillet, d’au moins 15 900 $ pour acheter,
en payant comptant conformément à une entente conclue depuis mars dernier, les outils
d’un ébéniste qui prendra sa retraite. Le banquier de la société exige, en contre-partie du
maintien de sa marge de crédit, que le ratio actif/passif soit, au début de juillet, égal tout
au moins à 2. Malgré toutes ces contraintes, la société veut optimiser avec sa production
de juin la contribution au profit, et elle se demande comment y arriver.
30
pour une table : 500 − 250 − 75 = 175 (dollars) ;
pour un berceau : 800 − 350 − 160 = 290 (dollars).
La marge s’élève donc à :
max z = 175x1 + 290x2 .
x1 ≤ 50,
x2 ≤ 30.
x1 ≤ 100,
x2 ≤ 100.
Tout plan de production (x1 ; x2 ) qui respecte les contraintes de main-d’œuvre respectera
aussi les contraintes de fournitures. Ces dernières sont redondantes et n’apparaîtront pas
dans la formulation du modèle.
+ Contrainte d’encaisse : II faut au moins 15 900 $ en banque au début de juillet. Cette
somme est égale au solde en banque au début de juin, auquel s’ajoute le recouvrement
partiel des comptes clients et dont il faut retrancher le remboursement partiel de l’emprunt,
le loyer de juin et les coûts de la main-d’œuvre en juin :
d’où
27900 − 250x1 − 350x2 ≥ 15900,
et enfin
250x1 + 350x2 ≤ 12000.
+ Contrainte du ratio actif/passif : Au début de juillet, ce ratio doit être ≥ 2. Établissons
d’abord l’actif au début de juillet :
Des stocks du début de juin, qui valent 23 500 $, on doit retrancher le bois et les fournitures
qui seront utilisés en juin, puis ajouter le bois à recevoir à la fin de juin :
31
L’actif au début de juillet est la somme de ces 3 éléments :
Le passif au début de juillet est égal au passif au début de juin, diminué du remboursement
partiel de l’emprunt et augmenté du paiement de la commande de bois reçue à la fin de
juin :
Passif = 30000 − 4350 + 26500 = 52150.
La contrainte s’écrit donc :
101050 + 175x1 + 290x2
≥ 2.
52150
En multipliant les deux membres de cette contrainte par le dénominateur 52 150, on ob-
tient :
175x1 + 290x2 ≥ 3250.
+ Contraintes de positivité :
x1 ≥ 0, x2 ≥ 0.
32
2.5.11 Problème de galettes
Positionnement du problème
Afin de mieux répondre à l’attente de ses clients, l’entreprise Malodja décide de proposer
deux tailles de galettes :
• la normale ;
• la géante.
Une étude a permis de déceler que le client est souvent fidèle à son choix, c’est-à-dire
qu’en cas de rupture de l’un des modèles, le client diffère son achat. Cette étude a permis
également de déterminer que la demande maximum de la journée est de 6 000 galettes
géantes et 5 000 galettes normales. La géante est vendue 1,15 e pièce, la normale 0,9 e
pièce. La géante demande 40 g de pâte, la normale 25 g.
Compte tenu des installations existantes, le maximum de pâte que peut produire l’entre-
prise est de 230 kg par jour. L’unité de cuisson permet de produire en une heure 1 000
normales ou 750 géantes. Les températures de cuisson étant différentes, les géantes ne
peuvent être produites en même temps que les normales. La différence en frais de cuisson
est négligeable. La durée normale d’utilisation de l’unité de cuisson est de 10 heures par
jour. Le coût de production de la pâte est de 10 e le kg, cuisson incluse.
Quelles est la quantité de galettes normales et de galettes géantes à fabriquer pour opti-
miser la marge sur coût de production ?
33
Étape 3 : Identification des contraintes.
+ Demande maximum de la journée :
x1 ≤ 6000,
x2 ≤ 5000.
+ Maximum de pâte :
40x1 + 25x2 ≤ 230000.
+ Temps de cuisson :
• Temps de cuisson d’une galette normale (t1 ) :
1000 normales 7−→ 1 h 1×1 1
⇒ t1 = = h.
1 normale 7−→ t1 h 1000 1000
• Temps de cuisson d’une galette géante (t2 ) :
750 géantes 7−→ 1 h 1×1 1
⇒ t2 = = h.
1 géante 7−→ t2 h 750 750
Donc la contrainte sur le temps de cuisson est :
1 1
x1 + x2 ≤ 10.
1000 750
+ Contrainte de positivité :
x1 ≥ 0, x2 ≥ 0.
34
2.6 Exercices d’application
Exercice 2.1
Une entreprise fabrique deux types de ceinture : A et B. Le type A est de meilleure qualité que le
type B. Le bénéfice net est 200 F pour le type A et 150 F pour le type B. Le temps de fabrication
pour le type A est deux fois le temps de fabrication pour le type B et si toutes les ceintures
étaient du type B l’entreprise pourrait en fabriquer 1 000 par jour. L’approvisionnement en cuir
est suffisant pour 800 ceintures par jour (type A ou B). Enfin 400 boucles de type A et 700
boucles du type B sont disponibles chaque jour.
Quels sont les nombres respectifs de ceintures des deux types à fabriquer chaque jour de manière
à optimiser le bénéfice total de l’entreprise ?
Exercice 2.2
Un artisan fabrique deux articles A et B nécessitant chacun deux opérations : un usinage et un
traitement thermique. Le produit A subit un usinage d’une heure et un traitement thermique
de 3 h. B subit un usinage de 2 h et un traitement thermique de 3 h. De plus, 2 kg de matière
première entrent dans la composition de A et 1 kg dans celle de B. La fabrication de B se ter-
mine par un travail de finition qui dure 1 h. Toutes les 3 semaines, l’artisan dispose de l’atelier
d’usinage pendant 80 h et du four pendant 150 h. De plus, pendant cette période, il ne peut pas
consacrer plus de 35 h au travail de finition ni stocker plus de 80 kg de matière première. Quelles
quantités de A et B l’artisan doit-il fabriquer pendant cette période si la marge bénéficiaire est
de 30 e pour l’article A et de 20 e pour l’article B.
Exercice 2.3
Un fermier possède 400 hectares de terre sur laquelle il cultive du blé et des pommes de terre. Les
règles gouvernementales limitent la culture du blé à au plus 300 hectares et celle des pommes
de terre à au plus 200 hectares. Par ailleurs, le fermier doit produire au moins autant d’hectares
de blé que d’hectares de pommes de terre. Si le profit retiré des pommes de terre est de 100 $
l’hectare et le profit retiré du blé est de 200 $ l’hectare, combien d’hectares de blé et d’hectares
de pommes de terre, le fermier doit-il cultiver pour optimiser son profit ?
35
Exercice 2.4
Une ville A produit quotidiennement 500 tonnes d’ordures ménagères, une autre ville B pro-
duit 400 tonnes. Les ordures doivent être incinérées à l’incinérateur 1 ou à l’incinérateur 2 qui
peuvent traités respectivement jusqu’à 500 tonnes par jour. Le coût de l’incinération des ordures
est de 40 $ par tonne à l’incinérateur 1, et de 30 $ la tonne à l’incinérateur 2. L’incinération des
ordures réduit chaque tonne de déchets à 0.2 tonnes de débris, qui seront enfouis dans deux
terrains vagues. Chaque terrain vague peut recevoir au plus 200 tonnes de débris par jours. Il
coûtera 3 $ le kilomètre pour transporter une tonne de déchets (ordures ou débris). Les distances
(en kilomètres) entre les différents lieus sont données par le tableau ci dessous.
Incinérateur 1 Incinérateur 2
Ville A 30 5
Ville B 36 42
Terrain Vague α 5 9
Terrain Vague β 8 6
Formuler ce problème comme celui de la programmation linéaire pour minimiser le coût total
de prélèvement des ordures ménagères des deux villes A et B.
Exercice 2.5
Un rédacteur en chef doit mettre au point la maquette de son journal de 10 pages. Il dispose
de pages d’articles classées dans différents thèmes : international, national, fait divers, sports
et culture. On estime que chaque page dédiée à un thème donné est susceptible d’intéresser en
moyenne un certain nombre de lecteurs.
Le rédacteur en chef doit choisir les thèmes à traiter ainsi que le nombre de pages à accorder à
chacun d’eux de façon à attirer le plus de lecteurs. S’il choisit d’inclure un thème, il doit y consa-
crer un nombre minimal de pages, correspondant aux articles les plus intéressants. Le tableau
ci-dessous donne les fourchettes de pages ainsi que le nombre moyen de lecteurs intéressés pour
chaque thème.
Thèmes Nbre min. Nbre max. Lecteurs potentiels
de pages de pages (par page)
International 5 9 1 500
National 4 7 2 000
Faits divers 2 5 1 000
Sport 2 4 1 500
Culture 1 3 750
Modéliser ce problème sous forme d’un programme linéaire en nombre entiers et donner la
solution optimale.
36
La Méthode de Simplexe
3
3.1 Introduction
On a une procédure graphique pour résoudre un programme linéaire à deux variables. Par
contre, dans la plupart des problèmes réels, on a plus que deux variables à déterminer. Une
procédure algébrique pour résoudre les programmes linéaires avec plus de deux variables fera
l’objet de ce chapitre. C’est la méthode de simplexe.
Ce chapitre est consacré à l’étude de la méthode du simplexe. Cette méthode est l’outil prin-
cipal de résolution des problèmes de programmation linéaire. Elle consiste à suivre un certain
nombre d’étapes avant d’obtenir la solution d’un problème donné. Il s’agit d’une méthode al-
gébrique itérative qui permet de trouver la solution exacte d’un problème de programmation
linéaire en un nombre fini d’étapes.
Une implémentation de cette procédure à permis de résoudre des programmes avec un peu
plus de quelques millions de variables. Le programme LINGO 18.0 qu’on présentera dans le
chapitre 6 (en version commerciale) supporte plus d’un million de variables et de contraintes.
Dans ce chapitre la méthode de simplexe est présentée pour les problèmes
max
( z = t cx,
Ax ≤ b
x ≥ 0
et en utilisant le problème de l’agriculteur :
37
3.2 Mise sous forme standard
La mise sous forme standard consiste à introduire des variables supplémentaires (une pour chaque
contrainte) de manière a réécrire les inégalités (≤) sous la forme d’égalités (=). Chacune de ces
variables représente le nombre de ressources non utilisés . On les appelle variable d’écart.
Définition 2 :
La variable d’écart est la quantité qui, ajoutée au membre de gauche d’une contrainte, permet
de transformer la contrainte en égalité.
( max z = tcx,
Ax + e = b
.
x ≥ 0, e ≥ 0
max z = c1 x1 + c2 x2 + . . . + cN xN ,
a11 x1 + a12 x2 + · · · + a1N xN + e1 = b1
a21 x1 + a22 x2 + · · · + a2N xN + e2 = b2
..
.
.
aM 1 x1 + aM 2 x2 + · · · + aM N xN + eM = bM
x1 ≥ 0, . . . , xN ≥ 0
e1 ≥ 0, . . . , eM ≥ 0
L’impact de ces variables d’écart sur la fonction objectif est nulle. Ceci explique le fait que leur
existence soit tout simplement liée à une mise en forme du programme linéaire initial. Ces
variables d’écart peuvent prendre des valeurs non-negatives. Le fait de donner la valeur des
variables d’écart à l’optimum donne une idée du nombre des ressources non utilisées.
38
En deuxième lieu, ce ne sont pas toutes les solutions qui vérifient (3.2) − (3.5) qui sont des
solutions du programme linéaire ; ils doivent en plus satisfaire les contraintes de non-négativité.
Ainsi une procédure algébrique doit être capable d’éliminer, de l’ensemble des solutions qui
satisfait (3.2) − (3.5) celles qui n’arrivent pas à satisfaire les contraintes de non-négativité.
Finalement, une procédure algébrique pour résoudre les programmes linéaires doit être en
mesure de choisir parmi les solutions réalisables ceux qui maximisent la fonction objectif.
La méthode de simplexe est une procédure algébrique qui tient compte de ces trois considé-
rations. Pour illustrer cette procédure, supposons que x2 = 0 et e1 = 0. Notre système devient
x1 = 150 x1 = 150
x1 + e2 = 440 e = 340
⇔ 2 .
4x1 + e3 = 480 e3 = −120
x1 + e4 = 90 e4 = −60
Les variables x1 , e2 , e3 et e4 (non nulles) sont dites variables de base et les variables e1 , x2 ,
(nulles) sont dites variables hors base.
Définition 3 :
On appelle variables hors base (v.h.b) les n variables de Rn+m fixées à zéro. Les m variables
restantes sont appelées variables de base (v.b).
Définition 4 :
On appelle solution de base une solution où en ayant choisi n variables hors base, on obtient
une solution unique en résolvant les m contraintes d’égalités obtenues en ajoutant les variables
d’écart.
On note qu’une solution de base n’est pas toujours réalisable. C’est le cas de la solution qu’on
vient de retrouver. Une solution réalisable de base serait celle où x1 = x2 = 0, ainsi on a :
e1 = 150
e2 = 440
.
e3 = 480
e4 = 90
Cette solution correspond à un point extrême de l’ensemble des solutions réalisables qui est
l’origine O. Pour la méthode de simplexe une solution réalisable de base initiale est deman-
dée. Une telle solution peut être retrouvée en annulant toutes les variables de décision. Ce qui
correspond dans notre exemple au point d’origine O.
À partir de ce point la méthode de simplexe va générer successivement des solutions réali-
sables de base pour notre système d’équations en s’assurant que la valeur de la fonction objectif
est en train d’augmenter jusqu’à localiser la solution optimale du problème qui est un point
extrême de l’espace des solutions réalisables donc une solution réalisable de base.
39
Ainsi, on peut décrire la méthode de simplexe comme étant une procédure itérative qui passe
d’une solution réalisable de base à une autre jusqu’à atteindre la solution optimale.
La description mathématique de ce processus fera l’objet de la section suivante.
Définition 5 :
On appelle solution de base réalisable une solution de base qui, en plus, vérifie les contraintes
de positivité.
z(no de l’étape) Cœfficients des Coûts unitaires Valeur de z Test de sortie (TS)
Variables Cœfficient de Résultats
de la matrice intermédiaires
base Technique A liés aux transformations
des contraintes
Variables hors base Résultats (R)
Dans le cas de notre exemple, nous aurons :
−100 x1 − 200 x2 + z = 0
1 x1 + 1 x2 + e1 = 150
4 x1 + 2 x2 + e2 = 440
1 x1 + 4 x2 + e3 = 480
1 x1 + 0 x2 + e4 = 90
40
Définissons la matrice A = A(1) = a(1)
ij , la matrice issue de la forme standard.
16i6n
16j6m
Ainsi, on a :
−100 −200
0
1 1 150
A=
4 2 440
.
1 4 480
1 0 90
Ce qui permet d’avoir le tableau de simplexe initial suivant :
z(1) −100 −200 0 TS
e1 1 1 150
e2 4 2 440
e3 1 4 480
e4 1 0 90
x1 x2 R
Pour améliorer la solution il faut générer une autre solution de base (point extrême) qui aug-
mente la valeur de la fonction objectif. C’est à dire, qu’on doit sélectionner une variable hors
base et une variable de base et les permuter de telle façon que la nouvelle solution donne une
plus grande valeur de la fonction objectif.
a) Critère d’entrée
Pour connaître la variable qui doit entrer dans la base à l’étape suivante, on repère au niveau
de la première ligne des "coûts unitaires" le plus petit cœfficient.
Ensuite, on pointe celui-ci ( ⇓ ). Dans notre exemple, le cœfficient le plus petit au niveau de la
première ligne est −200 :
⇓
z(1) -100 -200 0 TS
e1 1 1 150
e2 4 2 440
e3 1 4 480
e4 1 0 90
x1 x2 R
La colonne de la variable entrante est appelée la Colonne pivot et la variable entrante est
x2 .
Algorithme du critère d’entrée:
Test :=0
δ := 0
Pour j allant de 1 à m-1 Faire
Si a1j < 0 et a1j < δ Alors
Test :=1
41
δ := a1j
j0 := j
FinSi
FinPour
Si Test=0 Alors
On est à l’optimum
Sinon
Coutmin :=δ
FinSi
b) Critère de sortie
On sélectionne la variable sortante comme étant la variable de base qui s’annule la première.
Cela revient à effectuer le calcul du rapport du cœfficient de la colonne Résultats sur le cœffi-
cient correspondant de la colonne pivot, que l’on inscrit dans la colonne Test de sortie. Après
avoir déterminé tous les ratios, on cherche le ratio positif qui est le plus petit.
On marque ce ratio par une flèche orientée vers la droite ( ⇒ ).
Dans notre exemple, on prendra min 150; 220; 120; − = 120.
⇓
z(1) -100 -200 0 TS
e1 1 1 150 150
e2 4 2 440 220
e3 1 4
480 120 ⇒
e4 1 0 90 −
x1 x2 R
e3 ←→ x2
Attention : Lors du calcul des ratios de la colonne Test de sortie, on ne prendra pas en compte :
+ les ratios négatifs,
+ les ratios indéterminés,
qui seront remplacés par un tiret (−).
Cette flèche (⇒) dans son prolongement vers la gauche, nous indique la variable sortante de
la base (ici c’est e3 ). Cette ligne est appelé la ligne pivot .
Définition 6 :
On appelle élément pivot le cœfficient situé à l’intersection de la colonne pivot et de la ligne
pivot. On encercle alors l’élément pivot .
42
Algorithme du critère de sortie:
T S := 109
Pour i allant de 2 à n Faire
Si aij0 > 0 Alors
aim
∆ :=
aij0
Si ∆ < T S Alors
T S := ∆
i0 := i
FinSi
FinSi
FinPour
TestDeSortie :=TS
43
D’après ce qui précède, on obtient la matrice suivante :
−50
50 24000
3/4 −1/4 30
(2)
A(2) = aij
= 7/2 −1/2 200
,
1≤i≤4,1≤j≤3
1/4 1/4 120
1 0 90
⇓
z(2) -50 50 24 000 TS
3
e1
4
-1/4 30 40 ⇒
e2 7/2 -1/2 200 57
x2 1/4 1/4 120 480
e4 1 0 90 90
x1 e3 R
e1 ←→ x1
On a atteint l’optimum car tous les cœfficients au niveau de la première ligne sont positifs
(200/3 et 100/3). La solution optimale est :
x1 = 40 et x2 = 110 pour z = 26000.
44
En résumé, l’algorithme du simplexe est donné par les étapes suivantes :
1. Obtenir une solution de base réalisable.
2. Vérifier le critère d’optimalité : si les coûts réduits de toutes les variables hors-base
sont positifs ou nuls, STOP.
3. Choisir la variable qui a le coût réduit le plus bas.
a(k)
im (k)
4. Déterminer la variable de sortie : min aij0 > 0, i = 2, . . . , n .
a(k)
ij0
No Étapes Justification
1. Formuler un programme linéaire Pour obtenir une représentation
pour le problème réel. mathématique du problème.
2. Vérifier que le second membre du Ceci est nécessaire pour obtenir comme
programme linéaire est positif. variable de base initiale l’origine .
3. Écrire le programme linéaire Mettre toutes les contraintes
sous une forme standard. sous forme d’égalité.
4. Construire le premier Ce tableau correspond à la
tableau de simplexe. solution initiale de base
5. Choisir comme variable entrante La valeur de cj indique la quantité
dans la base celle qui admet d’augmentation de la fonction objectif si
le plus petit coefficient cj . on augmente la valeur de xj d’une unité.
6. Choisir la variable sortante de la La plus petite valeur indique le
base celle qui admet nombre maximal d’unité de xj qu’on peut
le petit ratio positif introduire avant que la variable de base de
l’ième ligne ne soit égale à zéro.
7. Construire le nouveau tableau Cette règle nous permet entre autre de calculer
en utilisant la règle de pivot. les valeurs des nouvelles variables de décision.
8. Faire le test d’optimalité. Si cj ≥ 0 Si cj ≥ 0 alors on n’a pas d’intérêt à
pour toutes les variables (hors base), faire entrer dans la base aucune de ces
la solution obtenue est donc optimale. variables. Une telle introduction engendra
Sinon retourner à l’étape 5. une diminution de la fonction objectif.
45
3.5 Exemples d’application
b) Forme standard :
⇓
z(1) -900 -1000 0 TS
e1 11 9 9900 1100
e2 7 12 8400 700
e3 6 16
9600 600 ⇒
x1 x2 R
e3 ←→ x2
⇓
z(2) -525 125/2 600000 TS
e1 61/8 -9/16 4500 590,16
e2 5/2
-3/4 1200 480 ⇒
x2 3/8 1/16 600 1600
x1 e3 R
e2 ←→ x1
46
⇓
z(3) 210
-95 852000 TS
e1 -61/20 69 840 486,9 ⇒
40
x1 2/5 -3/10 480 −
x2 -3/20 7/40 420 2400
e2 e3 R
e1 ←→ e3
z(4) 3800/69 2900/69 20660000/23
e3 -122/69 40/69 11200/23
x1 -3/23 4/23 14400/23
x2 11/69 -7/69 7700/23
e2 e1 R
b) Forme standard :
47
La solution de base associée à la forme standard est :
x1 = 0
x2 = 0
e1 = 6000
.
e2 = 5000
e3 = 230000
e4 = 10
Toutes les variables sont positives ou nulles donc la solution de base est réalisable.
c) Tableaux du simplexe :
⇓
z(1) -3/4 -13/20 0 TS
e1 1 0 6000 6000
e2 0 1 5000 −
e3 40
25 230000 5750 ⇒
e4 1/1000 1/750 10 10000
x1 x2 R
e3 ←→ x1
⇓
z(2) 3/160 -29/160 8625/2 TS
e1 -1/40 -5/8 250 −
e2 0 1
5000 5000 ⇒
x1 1/40 5/8 5750 9200
e4 -1/40000 17/24000 17/4 6000
e3 x2 R
e2 ←→ x2
z(3) 3/160 29/160 20875/4
e1 -1/40 5/8 3375
x2 0 1 5000
x1 1/40 -5/8 2625
e4 -1/40000 -17/24000 17/24
e3 e2 R
48
3.6 Exercices d’application
Exercice 3.1
Résoudre
max z = 60x1 + 60x2 + 90x3 + 90x4
x1 + x2 + x3 + x4 ≤ 15
7x1 + 5x2 + 3x3 + 2x4 ≤ 1
.
3x1 + 5x2 + 10x3 + 15x4 ≤ 1
xj ≥ 0 (j = 1, . . . , 4)
Exercice 3.2
Résoudre
max z = 2x1 + x2
x1 + x2 ≤ 4
x1 − x2 ≥ −1
.
x1 − 2x2 ≤ 1
xj ≥ 0 (j = 1, 2)
Exercice 3.3
Résoudre
max z = 4x1 + 6x2 + 20x3 + 17x4
x1 + x3 + 2x4 ≤ 10
x2 + 2x3 + x4 ≤ 4 .
xj ≥ 0 (j = 1, . . . , 4)
Exercice 3.4
Résoudre
max z = 5x1 + 4x2 + 3x3
2x1 + 3x2 + x3 ≤ 5
4x1 + x2 + 2x3 ≤ 11
.
3x1 + 4x2 + 2x3 ≤ 8
xj ≥ 0 (j = 1, 2, 3)
Exercice 3.5
Résoudre
max z = 30x1 + 30x2 + 40x3
2x1 + x2 + x3 ≤ 2000
x 1 + 2x2 + 4x3 ≤ 7000 .
xj ≥ 0 (j = 1, 2, 3)
Exercice 3.6
Résoudre
max z = 5x1 + x2 + 6x3 + 2x4
4x1 + 4x2 + 4x3 + x4 ≤ 44
8x1 + 6x2 + 4x3 + 3x4 ≤ 36 .
xj ≥ 0 (j = 1, . . . , 4)
49
Exercice 3.7
Résoudre
max z = 2x1 − x2 − 4x3
x3 ≤ 1
2x1 ≤ 4x2 + 3x3
.
3x2 ≤ x1 + 2x3
xj ≥ 0 (j = 1, 2, 3)
Exercice 3.8
Résoudre
max z = x1 + 3x2 + 2x3
2x1 + 2x2 − x3 ≤ 10
3x1 − 2x2 + x3 ≤ 12
.
−x1 + 3x2 + x3 ≤ 9
xj ≥ 0 (j = 1, 2, 3)
Exercice 3.9
Résoudre
max z = 7x1 + 6x2 + 5x3 − 2x4 + 3x5
x1 + 3x2 + 5x3 − 2x4 + 2x5 ≤ 4
4x1 + 2x2 − 2x3 + x4 + x5 ≤ 3
2x1 + 4x2 + 4x3 − 2x4 + 5x5 ≤ 5 .
3x1 + x2 + 2x3 − x4 − 2x5 ≤ 1
xj ≥ 0 (j = 1, . . . , 5)
Exercice 3.10
Résoudre
max z = 4x1 + 5x2 + x3 + 3x4 − 5x5 + 8x6
x1 − 4x3 + 3x4 + x5 + x6 ≤ 1
5x1 + 3x2 + x3 − 5x5 + 3x6 ≤ 4
4x1 + 5x2 − 3x3 + 3x4 − 4x5 + x6 ≤ 4
−x2 + 2x4 + x5 − 5x6 ≤ 5 .
−2x1 + x2 + x3 + x4 + 2x5 + 2x6 ≤ 7
2x1 − 3x2 + 2x3 − x4 + 4x5 + 5x6 ≤ 5
xj ≥ 0 (j = 1, . . . , 6)
Exercice 3.11
Résoudre le programme linéaire de l’exercice 2.1 de la page 35.
Exercice 3.12
Résoudre le programme linéaire de l’exercice 2.2 de la page 35.
Exercice 3.13
Résoudre le programme linéaire de l’exercice 2.3 de la page 35.
50
Problèmes de minimisation et problèmes irréguliers
4
4.1 Introduction
Dans le chapitre précédent tous les programmes linéaires qu’on a traité sont du type : Maximi-
ser une fonction linéaire sous contraintes de type inférieur ou égale (et avec un second membre
positif). Or dans beaucoup de problèmes réels, on peut retrouver des contraintes de type su-
périeur ou égale et/ou de type égale, ainsi que des problèmes où on a à minimiser au lieu de
maximiser.
Rappel :
Il n’est nécessaire d’introduire de variable artificielle (toujours positive) que dans les cas où
la contrainte est sous forme d’égalité (=) ou de supériorité (≥). Dans la nouvelle équation, la
variable artificielle est affectée du signe du second membre.
51
4.2.2 Problème de Comptabilité de gestion
a) Forme canonique :
b) Forme standard :
avec s1 la variable de surplus (ou d’excédent). La solution de base associée à la forme standard
est :
x1 = 0
x2 = 0
e1 = 50
.
e2 = 30
e3 = 12000
s1 = −3250
Afin de générer une solution réalisable de base initiale pour la méthode de simplexe, on a annulé
les variables de décision x1 et x2 . Ceci nous permet de commencer à partir de l’origine O(0, 0).
Or, on vérifie bien que l’origine n’est pas une solution réalisable. La question qui se pose est
comment nous allons réécrire le programme de manière qu’on puisse construire le tableau de
simplexe initial à l’origine. Pour arriver à cette fin, on doit ressortir une astuce mathématique
qui se résume à l’introduction de nouvelles variables, dite variable artificielle a1 .
Ces variables n’ont aucune interprétation, comme leur nom l’indique, elles sont conçues
artificiellement pour nous aider à utiliser la procédure de simplexe et à formuler le tableau initial
à partir de l’origine. Si on ajoute cette variable artificielle a1 à la dernière contrainte,
on a une forme standard pénalisée.
52
c) Forme standard pénalisée :
x1 + e 1 = 50
x2 + e 2 = 30
250x1 + 350x2 + e3 = 12000
175x1 + 290x2 − s1 + a1 = 3250 .
xj ≥ 0 j = 1, 2
s1 ≥ 0, a1 ≥ 0
ei ≥ 0 i = 1, . . . , 3
53
D’après la solution de base associée à la forme standard pénalisée, on a x1 , x2 et s1 nulles donc
ces variables sont hors base. Il faut exprimer la fonction objectif en fonction de ces variables hors
base. Afin d’éliminer a1 dans la fonction objectif, on va utiliser la dernière équation :
175x1 + 290x2 − s1 + a1 = 3250 ⇒ a1 = 3250 − 175x1 − 290x2 + s1 .
Donc
z = 175x1 + 290x2 − M a1
z = 175x1 + 290x2 − M (3250 − 175x1 − 290x2 + s1 )
z = 175(1 + M )x1 + 290(1 + M )x2 − 3250M − M s1 .
d) Tableaux du simplexe :
⇓
z(1) -175(1+M) -290(1+M) M -3250M TS
e1 1 0 0 50 −
e2 0 1 0 30 30
e3 250 350
0 12000 34,28
a1 175 290 -1 3250 11,20 ⇒
x1 x2 s1 R
a1 quitte la base, x2 entre dans la base
Dès qu’une variable artificielle passe hors-base, elle ne repasse jamais plus dans la
base. On peut donc supprimer du tableau la colonne correspondante.
54
⇓
z(2) 0 -1 3250 TS
e1 1 0
50 −
1
e2 -35/58 545/29 5450 ⇒
290
e3 1125/29 35/29 234250/29 6692,86
x2 35/58 -1/290 325/29 −
x1 s1 R
e2 ←→ s1
⇓
z(3) -175 290 8700 TS
e1 1 0 50 50
s1 -175 290
5450 −
e3 250 -350 1500 6 ⇒
x2 0 1 30 −
x1 e2 R
e3 ←→ x1
z(4) 7/10 45 9750
e1 -1/250 7/5 44
s1 7/10 45 6500
x1 1/250 -7/5 6
x2 0 1 30
e3 e2 R
La solution est optimale :
z = 9750
x1 = 6 .
x2 = 30
Il faut fabriquer 6 tables et 30 berceaux pour maximiser la marge de production pour le mois de
juin (à 9 750 $).
55
On constate que les variables structurelles sont toutes supérieures ou égales à une certaine valeur
(non existence de contraintes de positivité) :
x1 ≥ 3,
x2 ≥ 2,
x3 ≥ 5,
x4 ≥ 5,
donc on va faire un changement de variables pour avoir des contraintes de positivité. Posons :
X 1 = x1 − 3 ⇒ x1 = X1 + 3,
X 2 = x2 − 2 ⇒ x2 = X2 + 2,
X3 = x3 − 5 ⇒ x3 = X3 + 5,
X4 = x4 − 5 ⇒ x4 = X4 + 5.
Multiplions la seconde contrainte par −1 (car le second membre doit être toujours positif) :
56
X1 = 0
X2 = 0
X3 = 0
X4 = 0
e1 = 305 .
e2 = 1200
e3 = 230
e4 = 5
e5 = 5
Toutes les variables sont positives ou nulles donc la solution de base est réalisable.
c) Tableaux du simplexe :
⇓
z(1) -400 -900 -500 -200 6500 TS
e1 40 75 30 15 305 4,07
e2 -300 -400 -200 -100 1200 −
e3 40 75
0 0 230 3,07 ⇒
e4 0 0 1 0 5 −
e5 0 0 0 1 5 −
X1 X2 X3 X4 R
e3 ←→ X2
⇓
z(2) 80 12 -500 -200 9260 TS
e1 0 -1 30
15 75 2,5 ⇒
e2 -260/3 16/3 -200 -100 7280/3 −
X2 8/15 1/75 0 0 46/15 −
e4 0 0 1 0 5 5
e5 0 0 0 1 5 −
X1 e3 X3 X4 R
e1 ←→ X3
⇓
z(3) 80 -14/3 50/3 50 10510 TS
X3 0 -1/30 1/30 1/2 5/2 −
e2 -260/3 -4/3 20/3 0 8780/3 −
X2 8/15 1/75
0 0 46/15 230
1
e4 0 -1/30 -1/2 5/2 75 ⇒
30
e5 0 0 0 1 5 −
X1 e3 e1 X4 R
e4 ←→ e3
57
⇓
z(4) 80 140 12 -20 10860 TS
X3 0 1 0 0 5 −
e2 -260/3 40 16/3 -20 9080/3 −
X2 8/15 -2/5 1/75 1/5 31/15 10,33
e3 0 30 -1 -15 75 −
e5 0 0 0 1
5 5 ⇒
X1 e4 e1 X4 R
e5 ←→ X4
z(5) 80 140 12 20 10960
X3 5
e2 9380/3
X2 16/15
e3 150
X4 1 5
X1 e4 e1 e5 R
z = 10960
X1 = 0
La solution est optimale : X2 = 16/15 .
X3 = 5
X4 = 5
Or
z = 10960,
x1 = X1 + 3,
x2 = X2 + 2,
x3 = X3 + 5,
x4 = X4 + 5.
z = 10960
x1 = 3
Donc x2 = 46/15 .
x3 = 10
x4 = 10
58
40X1 + 75X2 + 30X3 + 15X4 ≤ 305
−300X1 − 400X2 − 200X3 − 100X4 ≤ 1200
40X1 + 75X2 ≤ 230
.
X3 ≤ 5
X4 ≤ 5
Xj ≥ 0 j = 1, . . . , 4
b) Forme standard :
⇓
Z(1) -400 -900 -500 -200 0 TS
e1 40 75 30 15 305 4,07
e2 -300 -400 -200 -100 1200 −
e3 40 75
0 0 230 3,07 ⇒
e4 0 0 1 0 5 −
e5 0 0 0 1 5 −
X1 X2 X3 X4 R
e3 ←→ X2
59
⇓
Z(2) 80 12 -500 -200 2760 TS
e1 0 -1 30
15 75 2,5 ⇒
e2 -260/3 16/3 -200 -100 7280/3 −
X2 8/15 1/75 0 0 46/15 −
e4 0 0 1 0 5 5
e5 0 0 0 1 5 −
X1 e3 X3 X4 R
e1 ←→ X3
⇓
Z(3) 80 -14/3 50/3 50 4010 TS
X3 0 -1/30 1/30 1/2 5/2 −
e2 -260/3 -4/3 20/3 0 8780/3 −
X2 8/15 1/75
0 0 46/15 230
1
e4 0 -1/30 -1/2 5/2 75 ⇒
30
e5 0 0 0 1 5 −
X1 e3 e1 X4 R
e4 ←→ e3
⇓
Z(4) 80 140 12 -20 4360 TS
X3 0 1 0 0 5 −
e2 -260/3 40 16/3 -20 9080/3 −
X2 8/15 -2/5 1/75 1/5 31/15 10,33
e3 0 30 -1 -15 75 −
e5 0 0 0 1
5 5 ⇒
X1 e4 e1 X4 R
e5 ←→ X4
Z(5) 80 140 12 20 4460
X3 5
e2 9380/3
X2 16/15
e3 150
X4 1 5
X1 e4 e1 e5 R
60
D’où
z = 10960
x1 = 3
x2 = 46/15 .
x3 = 10
x4 = 10
X1 = x1 − 300 ⇒ x1 = X1 + 300,
X2 = x2 − 300 ⇒ x2 = X2 + 300,
max
z = 40X1 + 10X2 + 15000
X1 + X2 ≥ 400
10X 1 + 5X2 ≤ 6000
5X1 + 4X2 ≤ 3900 .
X1 ≥ 0
X2 ≥ 0
+ Forme standard :
61
+ Forme standard pénalisée :
max z = 40X1 + 10X2 + −M a1 + 15000
X1 + X2 − s1 + a1 = 400
10X1 + 5X2 + e1 = 6000
5X1 + 4X2 + e2 = 3900 .
Xj , ej ≥ 0, j = 1, 2
s1 , a1 ≥ 0
La solution de base associée à la forme standard pénalisée est :
X1 = 0
X2 = 0
s1 = 0
.
a1 = 400
e1 = 6000
e2 = 3900
Toutes les variables sont positives ou nulles donc les contraintes de positivité sont vérifiées et la
solution de base est réalisable.
+ Tableaux du simplexe :
⇓
z(1) -40-M -10-M M 15000-400M TS
a1 1
1 -1 400 400 ⇒
e1 10 5 0 6000 600
e2 5 4 0 3900 780
X1 X2 s1 R
a1 quitte la base, X1 entre dans la base
⇓
z(2) 30 -40 31000 TS
X1 1 -1 400 −
e1 -5 10
2000 200 ⇒
e2 -1 5 1900 380
X2 s1 R
e1 ←→ s1
z(3) 10 4 39000
X1 600
s1 1/10 200
e2 900
X2 e1 R
La solution est optimale :
z = 39000
X1 = 600 .
X2 = 0
62
D’où
z = 39000
x1 = 900 .
x2 = 300
Deuxième méthode : Résolution directe
+ Forme standard :
max z = 40x1 + 10x2
x1 − s 1 = 300
x2 − s 2 = 300
x 1 + x2 − s 3 = 1000
10x1 + 5x2 + e1 = 10500 .
5x1 + 4x2 + e2 = 6600
xj , ej ≥ 0 (j = 1, 2)
si ≥ 0 (i = 1, . . . , 3)
La solution de base associée à la forme standard est :
x1 = 0
x2 = 0
s1 = −300
s2 = −300 .
s3 = −1000
e1 = 10500
e2 = 6600
Certaines variables sont négatives donc la solution de base est non réalisable.
+ Forme standard pénalisée :
max z = 40x1 + 10x2 − M (a1 + a2 + a3 )
x1 − s1 + a1 = 300
x2 − s2 + a2 = 300
x1 + x2 − s3 + a3 = 1000
10x1 + 5x2 + e1 = 10500 .
5x1 + 4x2 + e2 = 6600
xj , ej ≥ 0 (j = 1, 2)
si , ai ≥ 0 (i = 1, . . . , 3)
La solution de base associée à la forme standard pénalisée est :
x1 = 0
x2 = 0
s1 = 0
s2 = 0
s3 = 0
.
a1 = 300
a2 = 300
a3 = 1000
e1 = 10500
e2 = 6600
63
Toutes les variables sont positives ou nulles donc les contraintes de positivité sont vérifiées et la
solution de base est réalisable.
+ Tableaux du simplexe :
⇓
z(1) -40-2M -10-2M M M M -1600M TS
a1 1
0 -1 0 0 300 300 ⇒
a2 0 1 0 -1 0 300 -
a3 1 1 0 0 -1 1000 1000
e1 10 5 0 0 0 10500 1050
e2 5 4 0 0 0 6600 1320
x1 x2 s1 s2 s3 R
a1 quitte la base, x1 entre dans la base
⇓
z(2) -10-2M -M-40 M M 12000-1000M TS
x1 0 -1 0 0 300 -
a2 1
0 -1 0 300 300 ⇒
a3 1 1 0 -1 700 700
e1 5 10 0 0 7500 1500
e2 4 5 0 0 5100 1275
x2 s1 s2 s3 R
a2 quitte la base, x2 entre dans la base
⇓
z(3) -M-40 -M-10 M 15000-400M TS
x1 -1 0 0 300 -
x2 0 -1 0 300 -
a3 1
1 -1 400 400 ⇒
e1 10 5 0 6000 600
e2 5 4 0 3900 780
s1 s2 s3 R
a3 quitte la base, s1 entre dans la base
⇓
z(4) 30 -40 31000 TS
x1 1 -1 700 -
x2 -1 0 300 -
s1 1 -1 400 -
e1 -5 10
2000 200 ⇒
e2 -1 5 1900 380
s2 s3 R
e1 ←→ s3
64
z(5) 10 4 39000
x1 900
x2 300
s1 600
s3 1/10 200
e2 900
s2 e1 R
La solution est optimale :
z = 39000
x1 = 900 .
x2 = 300
- ii) Soit le programme suivant à résoudre :
max z = 4x1 + 3x2 − x3 + 2x4 + 6x5
3x1 + x3 − x5 = 3
−x1 − x2 + 3x4 = 12
.
x2 + x 3 + x5 = 4
xj ≥ 0 (j = 1, . . . , 5)
Lorsqu’on a affaire à des équations et qu’une solution de base ne peut être mise en évi-
dence, on peut opérer de la façon suivante :
— La fonction économique est transformée par l’adjonction de m variables dont on
prend les cœfficients égaux et très grands mais de signe négatif : on est ainsi assuré
que la solution correspondant au maximum ne contiendra pas ces variables ;
— On ajoute ces variables, appelées variables artificielles, aux contraintes comme dans
le cas des inéquations, en les affectant du signe correspondant à celui du second
membre, mais on est certain que ces variables seront nulles pour le maximum ;
— On opère ensuite comme pour les inéquations.
x 2 + x 3 + x 5 + a3 = 4 .
xj ≥ 0 (j = 1, . . . , 5)
ai ≥ 0 (i = 1, . . . , 3)
65
Toutes les variables sont positives ou nulles donc les contraintes de positivité sont vérifiées et la
solution de base est réalisable.
+ Tableaux du simplexe :
⇓
z(1) -2M-4 -3 -2M+1 -3M-2 -6 -19M TS
a1 3 0 1 0 -1 3 −
a2 -1 -1 0 3
0 12 4 ⇒
a3 0 1 1 0 1 4 −
x1 x2 x3 x4 x5 R
a2 quitte la base, x4 entre dans la base
⇓
z(2) -3M-14/3 -M-11/3 -2M+1 -6 -7M+8 TS
a1 3
0 1 -1 3 1 ⇒
x4 -1/3 -1/3 0 0 4 −
a3 0 1 1 1 4 −
x1 x2 x3 x5 R
a1 quitte la base, x1 entre dans la base
⇓
z(3) -M-11/3 -M+23/9 -M-68/9 -4M+38/3 TS
x1 0 1/3 -1/3 1 −
x4 -1/3 1/9 -1/9 13/3 −
a3 1 1 1
4 4 ⇒
x2 x3 x5 R
a3 quitte la base, x5 entre dans la base
66
Remarque : Cas où le second membre est négatif
Le problème qui peut se poser est que l’une des variables du second membre soit négative.
Par exemple supposons que lors de la formulation on trouve une contrainte de ce type :
x1 − x2 ≥ −4.
La condition qu’il faut vérifier avant de se lancer dans la réécriture de cette contrainte, en vue
de construire le programme standard, est la non-négativité du second membre.
Ainsi, on doit modifier la contrainte avant de commencer la standardisation et la réécrire
comme suit :
−x1 + x2 ≤ 4.
Exemples : Réécrivons convenablement ces contraintes :
x1 + 3x2 − 5x3 = −4 ⇔ −x1 − 3x2 + 5x3 = 4
−x1 + 3x2 ≥ −5 ⇔ x1 − 3x2 ≤ 5 .
5x1 − 2x2 ≤ −10 ⇔ −5x1 + 2x2 ≥ 10
min w = y1 + y2
2y1 + y2 ≥ 12
5y1 + 8y2 ≥ 74
.
y1 + 6y2 ≥ 24
y1 ≥ 0, y2 ≥ 0
67
b) Forme standard :
min w = y1 + y2
2y1 + y2 − s1 = 12
5y1 + 8y2 − s2 = 74
y1 + 6y2 − s3 = 24 .
yj ≥ 0 j = 1, 2
si ≥ 0 i = 1, . . . , 3
min w = y1 + y2 + M (a1 + a2 + a3 )
2y1 + y2 − s1 + a1 = 12
5y1 + 8y2 − s2 + a2 = 74
y1 + 6y2 − s3 + a3 = 24 .
yj ≥ 0 j = 1, 2
si , ai ≥ 0 i = 1, . . . , 3
max −w = −y1 − y2 − M (a1 + a2 + a3 )
2y1 + y2 − s1 + a1 = 12
5y1 + 8y2 − s2 + a2 = 74
y1 + 6y2 − s3 + a3 = 24 .
yj ≥ 0 j = 1, 2
si , ai ≥ 0 i = 1, . . . , 3
68
c) Tableaux du simplexe :
⇓
-w(1) 1-8M 1-15M M M M -110M TS
a1 2 1 -1 0 0 12 12
a2 5 8 0 -1 0 74 9
a3 1 6
0 0 -1 24 4 ⇒
y1 y2 s1 s2 s3 R
a3 quitte la base, y2 entre dans la base
⇓
-w(2) 5/6-11M/2
M M 1/6-3M/2 -4-50M TS
11
a1 -1 0 1/6 8 4 ⇒
6
a2 11/3 0 -1 4/3 42 11
y2 1/6 0 0 -1/6 4 24
y1 s1 s2 s3 R
a1 quitte la base, y1 entre dans la base
⇓
-w(3) 5/11-2M M 1/11-M -84/11-26M TS
y1 -6/11 0 1/11 48/11 −
a2 2
-1 1 26 13 ⇒
y2 1/11 0 -2/11 36/11 36
s1 s2 s3 R
a2 quitte la base, s1 entre dans la base
⇓
-w(4) 5/22 -3/22 -149/11 TS
y1 -3/11 4/11
126/11 31
1
s1 -1/2 13 26 ⇒
2
y2 1/22 -5/22 23/11 −
s2 s3 R
s1 ←→ s3
-w(5) 1/11 3/11 -10
y1 2
s3 2 26
y2 8
s2 s1 R
La solution est optimale :
−w = −10 ⇔ w = 10
y1 = 2 .
y2 = 8
69
Il faut prescrire 2 pilules de petite taille et 8 pilules de grande taille pour minimiser le nombre
total de pilules.
b) Forme standard :
70
La solution de base associée à la forme standard pénalisée est :
y1 = 0
y2 = 0
s1 = 0
s2 = 0
s3 = 0
.
s4 = 0
a1 = 4
a2 = 6
a3 = 20
a4 = 17
Toutes les variables sont positives ou nulles donc les contraintes de positivité sont vérifiées et la
solution de base est réalisable.
c) Tableaux du simplexe :
⇓
-w(1) 10-4M 4-4M M M M M -47M TS
a1 1 0 -1 0 0 0 4 −
a2 0 1
0 -1 0 0 6 6 ⇒
a3 1 2 0 0 -1 0 20 10
a4 2 1 0 0 0 -1 17 17
y1 y2 s1 s2 s3 s4 R
a2 quitte la base, y2 entre dans la base
⇓
-w(2) 10-4M M 4-3M M M -24-23M TS
a1 1
-1 0 0 0 4 4 ⇒
y2 0 0 -1 0 0 6 −
a3 1 0 2 -1 0 8 8
a4 2 0 1 0 -1 11 5
y1 s1 s2 s3 s4 R
a1 quitte la base, y1 entre dans la base
⇓
-w(3) 10-3M 4-3M M M -64-7M TS
y1 -1 0 0 0 4 −
y2 0 -1 0 0 6 −
a3 1 2
-1 0 4 2 ⇒
a4 2 1 0 -1 3 3
s1 s2 s3 s4 R
a3 quitte la base, s2 entre dans la base
71
⇓
-w(4) 8-3M/2 2-M/2 M -72-M TS
y1 -1 0 0 4 −
y2 1/2 -1/2 0 8 16
s2 1/2 -1/2 0 2 4
a4 3/2
1/2 -1 1 0,6 ⇒
s1 s3 s4 R
a4 quitte la base, s1 entre dans la base
⇓
-w(5) -2/3 16/3 -232/3 TS
y1 1/3 -2/3 14/3 14
y2 -2/3 1/3 23/3 −
s2 -2/3 1/3 5/3 −
s1 1/3
-2/3 2/3 2 ⇒
s3 s4 R
s1 ←→ s3
-w(6) 2 4 -76
y1 4
y2 9
s2 3
s3 3 2
s1 s4 R
72
+ Forme standard :
73
+ Tableaux du simplexe :
⇓
-w(1) -3M+700 -2M+500 M M -1400M TS
a1 1 1 -1 0 600 600
e2 2 1 0 0 1000 500
a2 2 1 0 -1 800 400
e4 1
-1 0 0 0 0 ⇒
e5 -4 1 0 0 0 −
y1 y2 e1 e3 R
e4 ←→ y1
⇓
-w(2) -3M+700 -5M+1200 M M -1400M TS
a1 -1 2 -1 0 600 300
e2 -2 3 0 0 1000 333
a2 -2 3
0 -1 800 266 ⇒
y1 1 -1 0 0 0 −
e5 4 -3 0 0 0 −
e4 y2 e1 e3 R
a2 quitte la base, y2 entre dans la base
⇓
-w(3) -M/3+100 M -2M/3+400 -200M/3-320000 TS
a1 1/3 -1 2/3
200/3 100 ⇒
e2 0 0 1 200 200
y2 -2/3 0 -1/3 800/3 −
y1 1/3 0 -1/3 800/3 −
e5 2 0 -1 800 −
e4 e1 e3 R
a1 quitte la base, e3 entre dans la base
⇓
-w(4) -100 600 -360000 TS
e3 1/2
-3/2 100 200 ⇒
e2 -1/2 3/2 100 −
y2 -1/2 -1/2 300 −
y1 1/2 -1/2 300 600
e5 5/2 -3/2 900 360
e4 e1 R
e3 ←→ e4
74
-w(5) 200 300 -340000
e4 2 200
e2 200
y2 400
y1 200
e5 400
e3 e1 R
La solution est optimale :
−w = −340 000 ⇔ w = 340 000
y1 = 200 .
y2 = 400
- ii) Soit le programme suivant à résoudre :
min w = 3y1 − y2 + y3 + y4
−3y1 + 5y2 − 2y3 + y4 = 1
4y1 − y2 + y4 = 4
.
y1 + 2y2 + 8y3 − 4y4 = 8
yj ≥ 0 (j = 1, . . . , 4)
Lorsqu’on a affaire à des équations et qu’une solution de base ne peut être mise en évi-
dence, on peut opérer de la façon suivante :
— La fonction économique est transformée par l’adjonction de m variables dont on
prend les coefficients égaux et très grands mais de signe positif : on est ainsi assuré
que la solution correspondant au minimum ne contiendra pas ces variables ;
— On ajoute ces variables, appelées variables artificielles, aux contraintes comme dans
le cas des inéquations, en les affectant du signe correspondant à celui du second
membre, mais on est certain que ces variables seront nulles pour le minimum ;
— On opère ensuite comme pour les inéquations.
75
Toutes les variables sont positives ou nulles donc les contraintes de positivité sont vérifiées et la
solution de base est réalisable.
+ Tableaux du simplexe :
⇓
-w(1) -2M+3 -6M-1 -6M+1 2M+1 -13M TS
a1 -3 5
-2 1 1 0,2 ⇒
a2 4 -1 0 1 4 −
a3 1 2 8 -4 8 4
y1 y2 y3 y4 R
a1 quitte la base, y2 entre dans la base
⇓
-w(2) (-28M+12)/5 (-42M+3)/5 (16M+6)/5 (-59M+1)/5 TS
y2 -3/5 -2/5 1/5 1/5 −
a2 17/5 -2/5
6/5 21/5 −
44
a3 11/5 -22/5 38/5 0,8 ⇒
5
y1 y3 y4 R
a3 quitte la base, y3 entre dans la base
⇓
-w(3) (-14M+9)/4 -M+3/2 (-50M-7)/11 TS
y2 -1/2 0 6/11 −
7
a2
2
1 50/11 1,3 ⇒
y3 1/4 -1/2 19/22 3,4
y1 y4 R
a2 quitte la base, y1 entre dans la base
76
- iii) Soit le programme suivant à résoudre :
min w = 2y1 + 5y2 + 3y3 + 4y4
4y1 + 2y2 − y3 ≤ 5
y1 + 4y2 + y4 = 7
.
8y1 − 7y2 ≥ 10
yj ≥ 0 (j = 1, . . . , 4)
1ère méthode : Dans ce genre de programme où il existe une seule contrainte d’égalité,
y1 + 4y2 + y4 = 7,
on exprime l’une des variables en fonction des autres. Par exemple, exprimons y4 en fonction des
autres variables :
y4 = 7 − y1 − 4y2 .
Cela permet de réduire le nombre de contraintes dans le problème étudié. D’où :
+ Forme standard :
min w = −2y1 − 11y2 + 3y3 + 28
4y1 + 2y2 − y3 + e1 = 5
8y1 − 7y2 − s1 = 10
.
yj ≥ 0 (j = 1, . . . , 3)
e1 , s1 ≥ 0
77
y1 = 0
y2 = 0
y3 = 0
.
s1 = 0
e1 = 5
a1 = 10
Toutes les variables sont positives ou nulles donc les contraintes de positivité sont vérifiées et la
solution de base est réalisable.
+ Tableaux du simplexe :
⇓
-w(1) -2-8M -11+7M 3 M -28-10M TS
e1 4 2 -1 0 5 1,25
a1 8
-7 0 -1 10 1,25 ⇒
y1 y2 y3 s1 R
a1 quitte la base, y1 entre dans la base
⇓
-w(2) -51/4
3 -1/4 -51/2 TS
11
e1 -1 1/2 0 0 ⇒
2
78
+ Forme standard :
min w = 2y1 + 5y2 + 3y3 + 4y4
4y1 + 2y2 − y3 + e1 = 5
y1 + 4y2 + y4 − s1 = 7
y1 + 4y2 + y4 + e2 = 7
.
8y1 − 7y2 − s2 = 10
yj ≥ 0 j = 1, . . . , 4
ei , si ≥ 0 i = 1, 2
79
+ Tableaux du simplexe :
⇓
-w(1) 2-9M 5+3M 3 4-M M M -17M TS
e1 4
2 -1 0 0 0 5 1,25 ⇒
a1 1 4 0 1 -1 0 7 7
e2 1 4 0 1 0 0 7 7
a2 8 -7 0 0 0 -1 10 1,25
y1 y2 y3 y4 s1 s2 R
e1 ←→ y1
⇓
-w(2) -1/2+9M/4 4+15M/2 7/2-9M/4 4-M M M -5/2-23M/4 TS
y1 1/4 1/2 -1/4 0 0 0 5/4 −
a1 -1/4 7/2 1/4 1 -1 0 23/4 23
e2 -1/4 7/2 1/4 1 0 0 23/4 23
a2 -2 -11 2
0 0 -1 0 0 ⇒
e1 y2 y3 y4 s1 s2 R
⇓
-w(3) 3 93/4-39M/8 4-M M 7/4-M/8 -5/2-23M/4 TS
y1 0 -7/8
0 0 -1/8 5/4 −
39
a1 0 1 -1 1/8 23/4 1,18 ⇒
8
e2 0 39/8 1 0 1/8 23/4 1,18
y3 -1 -11/2 0 0 -1/2 0 −
e1 y2 y4 s1 s2 R
⇓
-w(4) 3 -10/13 62/13 15/13 -389/13 TS
y1 0 7/39
-7/39 -4/39 89/39 12
8
y2 0 -8/39 1/39 46/39 5,75 ⇒
39
e2 0 0 1 0 0 −
y3 -1 44/39 -44/39 -14/39 253/39 5,75
e1 y4 s1 s2 R
y2 ←→ y4
80
-w(5) 3 15/4 4 5/4 -51/2
y1 0 -7/8 0 -1/8 5/4
y4 0 39/8 -1 1/8 23/4
e2 0 0 1 0 0
y3 -1 -11/2 0 -1/2 0
e1 y2 s1 s2 R
La solution est optimale :
−w = −51/2 ⇔ w = 51/2
y1 = 4/5
y2 = 0 .
y3 = 0
y4 = 23/4
⇓
z(1) -4-3M -3-M M -10M TS
e1 1
1 0 2 2 ⇒
a1 3 1 -1 10 3
x1 x2 s1 R
81
e1 ←→ x1
z(2) 4+3M 1+2M M 8-4M
x1 1 2
a1 4
e1 x2 s1 R
Le tableau de simplexe ci-dessus est optimal avec une variable artificielle dans la base.
Remarque : Un programme de maximisation avec seulement des contraintes de type ” ≤ ” ne
peut pas être impossible (sous l’hypothèse que le second membre b est positif). Ceci est dû au
fait que lors de la résolution de ce genre de programme par la méthode de simplexe on n’utilise
pas des variables artificielles. Donc il est impossible de les retrouver dans la solution optimale.
max z = 2x1 + x2
2x1 + x2 ≤ 8
x1 + x2 ≥ 5 .
xj ≥ 0, j = 1, 2
max z = 2x1 + x2 − M a1
2x1 + x2 + e1 = 8
x 1 + x 2 − s 1 + a1 = 5
.
xj ≥ 0, j = 1, 2
a1 , e1 , s1 ≥ 0
⇓
z(1) -2-M -1-M M -5M TS
e1 2
1 0 8 4 ⇒
a1 1 1 -1 5 5
x1 x2 s1 R
e1 ←→ x1
⇓
z(2) 1+M/2 -M/2 M 8-M TS
x1 1/2 1/2 0
4 8
a1 -1/2 1/2 -1 1 2 ⇒
e1 x2 s1 R
a1 quitte la base, x2 entre dans la base
82
z(3) 1 0 8
x1 3
x2 2
e1 s1 R
La solution est optimale :
z = 8
x1 = 3 .
x2 = 2
On peut continuer l’itération pour avoir une solution de même valeur (z = 8) à cause du zéro
sur la première ligne.
⇓
z(3) 1 0 8 TS
x1 1 1
3 3 ⇒
x2 -1 -2 2 −
e1 s1 R
x1 ←→ s1
z(4) 1 0 8
s1 1 3
x2 8
e1 x1 R
La solution est optimale :
z = 8
x1 = 0 .
x2 = 8
max z = x1 + 2x2
x1 + x 2 ≥ 2
x2 ≤ 3 .
xj ≥ 0, j = 1, 2
83
⇓
z(1) 1-M -2-M M -2M TS
a1 1 1
-1 2 2 ⇒
e1 0 1 0 3 3
x1 x2 s1 R
a1 quitte la base, x2 entre dans la base
⇓
z(2) 1 -2 4 TS
x2 1 -1 2 −
e1 -1 1
1 1 ⇒
x1 s1 R
e1 ←→ s1
⇓
z(3) -1 2 6 TS
x2 0 1 3 −
s1 -1 1 1 −
x1 e1 R
Le dernier tableau montre que la variable x1 n’admet aucune limite sur sa valeur de sortie.
84
⇓
z(1) -2 0 -3/2 0 TS
e1 1
-1 0 2 2 ⇒
e2 2 0 1 4 2
e3 1 1 1 3 3
x1 x2 x3 R
e1 ←→ x1
⇓
z(2) 2 -2 -3/2 4 TS
x1 1 -1 0 2 −
e2 -2 2
1 0 0 ⇒
e3 -1 2 1 1 0,5
e1 x2 x3 R
e2 ←→ x2
⇓
z(3) 0 1 -1/2 4 TS
x1 0 1/2 1/2 2 4
x2 -1 1/2 1/2 0 0 ⇒
e3 1 -1 0 1 −
e1 e2 x3 R
x2 ←→ x3
⇓
z(4) -1 3/2 1 4 TS
x1 1 0 -1 2 2
x3 -2 1 2 0 −
e3 1
-1 0 1 1 ⇒
e1 e2 x2 R
e3 ←→ e1
z(5) 1 1/2 1 5
x1 1
x3 2
e1 1 1
e3 e2 x2 R
85
4.5 Variables sans restriction de signe
Dans certains problèmes, il arrive qu’on doive traiter une ou plusieurs variables de signe quel-
conque. Or la méthode du simplexe ne résout que des problèmes à variables non-négatives. Une
variable sans restriction de signe peut alors être décomposée en deux variables non-négatives x+
et x− en posant :
x = x+ − x− ,
où x+ = maximum(0, x) et x− = maximum(0, −x). Si par contre la variable x est négative alors
x+ = 0 et on pose x = −x− .
Exemple :
⇓
z(1) -2 7 -7 0 TS
e1 1 -2 2 9 4,5
e2 1 -3 3
6 2 ⇒
e3 1 0 0 5 −
x1 x+
2 x−
2 R
e2 ←→ x−
2
86
z(2) 1/3 0 7/3 14
e1 5
x−2 1/3 2
e3 5
x1 x+
2 e2 R
z = 14
x1 = 0 .
x2 = −2
87
4.6 Exercices d’application
Exercice 4.1
Résoudre
max z = 13x1 + 6x2 − 2x3 − 10x4
−x1 + x2 + 5x3 − 2x4 ≥ 5
x1 − 3x3 + x4 = 7
.
x1 + x2 + 4x3 − 3x4 = 4
xj ≥ 0 (j = 1, . . . , 4)
Exercice 4.2
Résoudre
max z = 2x1 + 3x2
x 1 + x2 ≤ 6
2x1 + x2 ≥ 4
.
2x1 − x2 ≥ 2
xj ≥ 0 (j = 1, 2)
Exercice 4.3
Résoudre
min w = 40y1 + 420y2 + 280y3
y1 + 10y2 + 6y3 ≥ 14
y1 + 12y2 + 17y3 ≥ 17
.
y1 + 7y2 + 5y3 ≥ 12
yj ≥ 0 (j = 1, . . . , 3)
Exercice 4.4
Résoudre
max z = 5x1 − 2x2 + 3x3
2x1 + 2x2 − x3 ≥ 2
3x1 − 4x2 ≤ 3
.
x2 + 3x3 ≤ 5
xj ≥ 0 (j = 1, 2, 3).
Exercice 4.5
Résoudre
max z = 5x1 − x2 + x3 − 10x4 + 7x5
3x1 − x2 − x3 = 4
x1 − x2 + x 3 + x4 = 1
.
2x1 + x2 + 2x3 + x5 = 7
xj ≥ 0 (j = 1, . . . , 5)
88
Exercice 4.6
Résoudre
min w = −y1 + 2y2
5y1 − 2y2 ≤ 3
y1 + y2 ≥ 1
−3y1 + y2 ≤ 3 .
−3y1 − 3y2 ≤ 2
yj ≥ 0 (j = 1, 2)
Exercice 4.7
Résoudre le problème de mélange de la page 20.
Exercice 4.8
Résoudre le problème d’horaire des standardistes de la page 28.
89
Dualité et analyse de sensibilité
5
5.1 Introduction
Dans ce chapitre, nous allons voir qu’il est possible à partir d’un programme linéaire d’en
former un autre directement lié au premier. Celui-ci est appelé primal et le second dual .
La notion de dualité a été introduite par Von Neumann en 1947, puis développée par Gale,
Kuhn et Tucker en 1951. Les propriétés fondamentales des problèmes de dualité ont été définies
par Goldman and Tucker en 1956.
Dans ce chapitre, on va étudier des notions relatives au programmes linéaires tels que le
programme dual, les coûts marginaux ainsi que des techniques de validation de la solution d’un
programme linéaire, c’est à dire l’analyse de sensibilité .
L’analyste qui a pour tâche de résoudre des problèmes de programmation linéaire ne se
contente en général pas de la solution optimale. Il s’intéresse également à de nouvelles solu-
tions optimales issues de la modification d’un ou de plusieurs éléments du problème original.
Cette démarche devrait impliquer l’établissement d’un nouveau programme linéaire ainsi que
le calcul d’une nouvelle solution optimale, ce qui peut, selon la complexité du problème consi-
déré, nécessiter beaucoup de temps et d’efforts. Au lieu de recommencer toute la procédure
à chaque modification, il est souvent possible, sous certaines conditions, d’utiliser la solution
optimale du problème initial comme solution de départ du problème modifié. Cette procédure
de post-optimisation comporte différents types de modifications. D’une manière générale, les
problèmes qui relèvent de la post-optimisation se répartissent en trois catégories, à savoir les
problèmes impliquant des changements ponctuels parmi les paramètres aij , bj et cj , les pro-
blèmes impliquant des changements continus et les problèmes impliquant des changements
structurels, soit l’addition ou la suppression de variables ou de contraintes. Mentionnons que
les problèmes impliquant des changements continus forment ce qu’on appelle en recherche opé-
rationnelle l’analyse de sensibilité. On s’intéresse particulièrement à l’intervalle ou domaine
dans lequel les paramètres aij , bj et cj peuvent varier sans que la solution optimale ne soit mo-
difiée.
Nous allons commencer ce chapitre par donner quelques termes clés du jargon utilisé pour
interpréter économiquement les différents résultats du programme linéaire.
90
5.2 Interprétation économique
Les éléments clés d’un programme linéaire standard sont :
1. La fonction objectif dite fonction économique. Cette fonction peut représenter un coût, un
profit, . . .
2. Les contraintes sont composées, des coefficients aij de la matrice A, dite matrice technolo-
gique, et des constantes bi , qui forment le vecteur du second membre. Le second membre
peut représenter la disponibilité des ressources, les niveaux de demande. . .
3. Les variables d’écart peuvent représenter, la différence entre les quantités limites de l’in-
équation. Par exemple dans le problème de l’agriculteur, la variable d’écart représente la
différence de chacune des ressources : terrain, eau, heures de travail, bureau d’irrigation.
Quand une variable d’écart est nulle, on dit que la contrainte correspondante est saturée. Dans
le problème de l’agriculteur les contraintes terrain et main d’œuvre sont saturées. Elles sont dites
aussi restrictives car une variation du second membre (par exemple) engendre un changement
dans la valeurs de la solution optimale.
Toute contrainte non saturée à l’optimum n’est pas restrictive pour le problème, c’est à dire
qu’elle n’a aucune influence sur la solution considérée.
Remarque : Les coûts marginaux sont donc les effets nets associés aux variables d’écart, puisque
ce sont ces variables qui déterminent les insuffisances de biens.
Si une variable d’écart n’est pas nulle, dans la solution optimale, c’est que le bien correspon-
dant n’est pas totalement utilisé, il reste une différence (un reliquat) pour atteindre la limite. Par
conséquent, le fait de disposer d’une unité supplémentaire de ce bien n’aura aucune influence
sur le revenu. On dit alors que ce bien à une valeur marginale nulle, ou par extension, que la
variable d’écart associée à ce bien a une valeur marginale nulle.
91
Par contre, si une variable d’écart est nulle dans la solution optimale, c’est que le bien corres-
pondant est totalement utilisé. Par la suite une variation de la disponibilité aura généralement
une influence sur le revenu. C’est pourquoi cette variable d’écart nulle dans la solution optimale
à une valeur marginale non nulle, et cette valeur marginale précise la variation de la fonction
économique résultant de l’utilisation d’une unité supplémentaire du bien associé.
Exemple : Dans le problème de l’agriculteur on a en gras les coûts marginaux :
92
max z = 100x1 + 200x2
x1 + x2 ≤ 149
4x1 + 2x2 ≤ 440
x1 + 4x2 ≤ 480 .
x1 ≤ 90
x1 ≥ 0, x2 ≥ 0
93
La valeur optimale du programme linéaire ci-dessus est de 26 875, 14 $ donc le revenu n’a pas
augmenté de 2 000 $ comme prévu.
5.3 Dualité
5.3.1 Définition
À tout programme linéaire (PL) dénommé Primal il est possible d’associer un programme
linéaire dit Dual dont tous les éléments sont dérivés, du programme Primal.
L’intérêt du passage au Dual est de pouvoir, dans certains cas, résoudre le problème Dual à
partir de la solution du problème Primal. La dualité repose sur certaines règles de transforma-
tion, en partant d’un (PL) initial appelé Primal, on applique une règle de transformation pour
obtenir un Dual, (PL) final. À l’optimum de l’un des (PL), il existe un tableau de correspondance
entre les deux (PL). La résolution d’un problème de minimisation peut donc se ramener à un
problème de maximisation (vice-versa) en utilisant la dualité :
min
( w = t cy, max
( z = t bx,
t
Ay ≥ b Ax ≤ c
y ≥ 0
⇔ x ≥ 0
On peut considérer qu’il concerne une entreprise E1 fabricant n biens j, j ∈ {1, . . . , n} et faisant
intervenir m ressources i, i ∈ {1, . . . , m}. Le problème que peut se poser l’entreprise est le
suivant :
Étant donnée la disponibilité bi pour chaque ressource i et le profit unitaire cj pour chacun
des biens j, quel doit être le niveau de production de chaque bien j pour que la quantité de
bien i consommée reste inférieure à la disponibilité bi et que le profit total soit maximal ?
Supposons qu’une autre entreprise E2 , en rupture de stock, désire racheter les ressources
de la première, le problème qu’elle va se poser et le suivant :
Étant donné un prix unitaire cj pour chacun n biens j et une disponibilité bi pour chacune
des m ressources i, quel doit être le prix unitaire minimum d’achat yi de chaque ressource
i pour que la valeur totale des ressources consommées par chaque bien j soit supérieure
ou égale a cj (pour que cela rester intéressant pour l’entreprise E1 ) et que le prix total
d’achat des ressources disponible soit minimum ?
94
Ce deuxième problème constitue le problème dual du premier, il peut se mettre sous la forme :
m
X
min(w) = bi y i
i=1
m
X
≥ cj , j ∈ 1, . . . , n
aij yi
i=1 (5.3)
yi ≥ 0, pour i ∈ 1, . . . , m .
impliquent que le prix d’achat des ressources par l’entreprise E2 reste supérieur au profit que
peut en tirer l’entreprise E1 , c’est-à-dire,
m
X n
X
bi yi ≥ cj x j .
i=1 j=1
Ce qui est conforme aux lois de l’économie, on voit donc intuitivement que le minimum atteint
par le deuxième problème doit être égal au maximum du premier problème. La théorie montre
que c’est le cas quand le problème a des solutions.
Résultat fondamental :
Si le Primal admet une solution, le Dual en admet une également et le maximum de l’un
est égal au minimum de l’autre.
Formule de transformation d’un Primal en Dual : Pour un même problème, le passage se fait
en respectant les règles suivantes :
+ un maximum se transforme en un minimum et réciproquement ;
+ les contraintes d’infériorité se transforme en contraintes de supériorité et réciproquement ;
+ les variables structurelles du primal deviennent les variables d’écart (ou de surplus) du dual.
+ les variables d’écart (ou de surplus) du primal deviennent les variables structurelles du dual.
Remarque: Choisir toujours des variables différentes pour traduire le primal et le dual.
95
5.3.2 Propriétés et signification économique du programme dual
Pour expliquer la signification du problème dual on va se baser sur l’exemple de l’agriculteur.
Supposons qu’un agriculteur (client) voudrait acheter la totalité de nos ressources disponibles.
Notre agriculteur acceptera certainement cette proposition si le prix offert par ce client lui pro-
cure le même profit.
Soit y1 le prix d’un hectare de terrain
y2 le prix d’un m3 d’eau
y3 le prix d’une heure de main d’œuvre
y4 le prix de la permission de la culture d’un hectare de tomates.
Le problème du client consiste à minimiser les frais d’achat des ressources : c’est à dire 150y1 +
440y2 + 480y3 + 90y4 sous la contrainte que les prix satisfont notre agriculteur.
Pour notre agriculteur un hectare de terrain 4 m3 d’eau, une heure de travail et un hectare de
permission du bureau est équivalent a un revenu de 100 $. Tandis que, un hectare de terrain,
2 m3 d’eau et 4 heures de travail lui engendrent un revenu de 200 $.
Il n’est prêt à vendre ses ressources que si y1 + 4y2 + y3 + y4 lui rapporte un revenu supérieur
ou égale à 100 $ et que si y1 + 2y2 + 4y3 lui rapporte un revenu supérieur ou égal à 200 $.
Ainsi le problème du client est :
Résolution :
⇓
-w(1) 150-2M 440-6M 480-5M 90-M M M -300M TS
a1 1 4
1 1 -1 0 100 25 ⇒
a2 1 2 4 0 0 -1 200 100
y1 y2 y3 y4 s1 s2 R
a1 quitte la base, y2 entre dans la base
⇓
-w(2) 40-M/2 370-7M/2 -20+M/2 110-M/2 M -110000-150M TS
y2 1/4 1/4
1/4 -1/4 0 25 100
a2 1/2 7/2 -1/2 1/2 -1 150 42 ⇒
y1 y3 y4 s1 s2 R
a2 quitte la base, y3 entre dans la base
96
⇓
-w(3) -90/7
230/7 400/7 740/7 -188000/7 TS
3
y2 2/7 -2/7 1/14 100/7 66 ⇒
14
y3 1/7 -1/7 1/7 -2/7 300/7 300
y1 y4 s1 s2 R
y2 ←→ y1
97
Forme standard : Primale
98
En effectuant la correspondance suivante :
Primal Dual
x1 ←→ s1
x2 ←→ s2
e1 ←→ y1
e2 ←→ y2
e3 ←→ y3
e4 ←→ y4
Proposition
99
Exemples :
Primal Dual
Max z=x1 /2 + x2 Min w=3y1 + y2 + 2y3
x1 + x2 ≤ 3 y1 − y2 + y3 ≥ 1/2
−x1 + x2 ≤ 1 y1 + y2 ≥ 1
x1 ≤ 2 y1 ≥ 0, y2 ≥ 0, y3 ≥ 0
x1 ≥ 0, x2 ≥ 0
Min w=−y1 + y2 Max z=2x1 − 2x2 + 5x3
2y1 − y2 ≥ 2 2x1 − x2 + x3 ≤ −1
−y1 + 2y2 ≥ −2 −x1 + 2x2 + x3 ≤ 1
y1 + y2 ≤ 5 x1 ≥ 0, x2 ≥ 0, x3 ≤ 0
y1 ≥ 0, y2 ≥ 0
Max z=2x1 − x2 Min w=3y1 + 4y2
x1 − x2 = 3 y1 + y2 ≥ 2
x1 ≤ 4 −y1 ≥ −1
x1 ≥ 0, x2 ≥ 0 y1 ∈ R, y2 ≥ 0
Max z=2x1 − x2 Min w=−2y1 + 6y2 − 5y3
x1 − 2x2 ≤ 2 y1 + y2 = 2
x1 + x2 = 6 −2y1 + y2 + y3 = −1
x2 ≤ 5 y1 ≥ 0, y2 ∈ R, y3 ≥ 0
x1 ∈ R, x2 ∈ R
+ Forme standard
min w = y1 + y2
2y1 + y2 − s1 = 12
5y1 + 8y2 − s2 = 74
y1 + 6y2 − s3 = 24 .
yj ≥ 0, j = 1, 2
si ≥ 0, i = 1, . . . , 3
100
b) Problème Dual :
+ Forme canonique
max z = 12x1 + 74x2 + 24x3
2x1 + 5x2 + x3 ≤ 1
x + 8x2 + 6x3 ≤ 1 .
1
xj ≥ 0, j = 1, . . . , 3
+ Forme standard
max z = 12x1 + 74x2 + 24x3
2x1 + 5x2 + x3 + e1 = 1
x1 + 8x2 + 6x3 + e2 = 1
.
xj ≥ 0, j = 1, . . . , 3
ei ≥ 0, i = 1, 2
c) Tableau du simplexe :
⇓
z(1) -12 -74 -24 0 TS
e1 2 5 1 1 0,2
e2 1 8
6 1 0,1 ⇒
x1 x2 x3 R
e2 ←→ x2
⇓
z(2) -11/4
37/4 63/2 37/4 TS
11
e1 -5/8 -11/4 3/8 0,2 ⇒
8
x2 1/8 1/8 3/4 1/8 1
x1 e2 x3 R
e1 ←→ x1
z(3) 2 8 26 10
x1 8/11 3/11
x2 1/11
e1 e2 x3 R
d) Tableau de correspondance :
Dual Primal
x1 ←→ s1
x2 ←→ s2
x3 ←→ s3
e1 ←→ y1
e2 ←→ y2
101
Tableau de correspondance : Dual
x1 x2 x3 e1 e2
VO 3/11 1/11 0 0 0
VM 0 0 26 2 8
+ Forme standard
min w = 10y1 + 4y2
y 1 − s1 = 4
y 2 − s2 = 6
y1 + 2y2 − s3 = 20
.
2y1 + y2 − s4 = 17
yj ≥ 0, j = 1, 2
si ≥ 0, i = 1, . . . , 4
102
b) Problème Dual :
+ Forme canonique
max z = 4x1 + 6x2 + 20x3 + 17x4
x1 + x3 + 2x4 ≤ 10
x + 2x3 + x4 ≤ 4 .
2
xj ≥ 0, j = 1, . . . , 4
+ Forme standard
max z = 4x1 + 6x2 + 20x3 + 17x4
x1 + x3 + 2x4 + e1 = 10
x2 + 2x3 + x4 + e2 = 4
.
xj ≥ 0, j = 1, . . . , 4
ei ≥ 0, i = 1, 2
c) Tableau du simplexe :
⇓
z(1) -4 -6 -20 -17 0 TS
e1 1 0 1 2 10 10
e2 0 1 2
1 4 2 ⇒
x1 x2 x3 x4 R
e2 ←→ x3
⇓
z(2) -4 4 10 -7 40 TS
e1 1 -1/2 -1/2
3/2 8 5
x3 0 1/2 1/2 1/2 2 4 ⇒
x1 x2 e2 x4 R
x3 ←→ x4
⇓
z(3) -4 11 17 14 68 TS
e1 1
-2 -2 -3 2 2 ⇒
x4 0 1 1 2 4 −
x1 x2 e2 x3 R
e1 ←→ x1
z(4) 4 3 9 3 76
x1 1 2
x4 4
e1 x2 e2 x3 R
103
d) Tableau de correspondance :
Dual Primal
x1 ←→ s1
x2 ←→ s2
x3 ←→ s3
x4 ←→ s4
e1 ←→ y1
e2 ←→ y2
104
Définition 9 :
Une solution de base optimale est dite stable si l’ensemble des variables de base à
l’optimum ne changent pas, même si les valeurs de ces variables de base sont modifiées.
Dans cette section on examinera la stabilité de la solution optimale d’un programme linéaire
suite à la variation de l’un des paramètres de ce programme.
On utilisera pour présenter l’analyse de sensibilité sur ces différents paramètres du pro-
gramme linéaire l’exemple de l’agriculteur.
max z = c1 x1 + 200x2
x1 + x2 ≤ 150
4x1 + 2x2 ≤ 440
x1 + 4x2 ≤ 480 .
x1 ≤ 90
x1 ≥ 0, x2 ≥ 0
i h i h
Posons c1 = 100 + ∆1 avec c1 ∈ 0, +∞ d’où ∆1 ∈ − 100, +∞ .
105
Forme standard :
Premier tableau : e3 ←→ x2
Deuxième tableau : e1 ←→ x1
⇓
z(1) −100 − ∆1 -200 0 TS
e1 1 1 150 150
e2 4 2 440 220
e3 1 4
480 120 ⇒
e4 1 0 90 −
x1 x2 R
e3 ←→ x2
⇓
z(2) −50
− ∆1 50 24 000 TS
e1 3/4 -1/4 30 40 ⇒
e2 7/2 -1/2 200 57
x2 1/4 1/4 120 480
e4 1 0 90 90
x1 e3 R
e1 ←→ x1
z(3) 4(50 + ∆1 )/3 (100 − ∆1 )/3 26 000 + 40∆1
x1 4/3 40
e2 60
x2 110
e4 50
e1 e3 R
106
La solution donnée par le tableau reste optimale si
4
(50 + ∆1 ) ≥ 0
3
⇔ −50 ≤ ∆1 < 100.
1
(100 − ∆1 ) > 0
3
Or c1 = 100+∆1 , donc la solution optimale est stable et prend la même valeur (x1 , x2 ) = (40, 110)
tant que
50 ≤ c1 < 200.
b) Considérons
i h une variation
i du cœfficient
h c2 : c2 = 200 + ∆2
c2 ∈ 0, +∞ ⇒ ∆2 ∈ − 200, +∞ .
max z = 100x1 + c2 x2
x1 + x2 ≤ 150
4x1 + 2x2 ≤ 440
x1 + 4x2 ≤ 480 .
x1 ≤ 90
x1 ≥ 0, x2 ≥ 0
Forme standard :
Premier tableau : e3 ←→ x2
Deuxième tableau : e1 ←→ x1
⇓
z(1) -100 −200 − ∆2 0 TS
e1 1 1 150 150
e2 4 2 440 220
e3 1 4
480 120 ⇒
e4 1 0 90 −
x1 x2 R
e3 ←→ x2
107
⇓
z(2) (−200
+ ∆2 )/4 (200 + ∆2 )/4 120(200 + ∆2 ) TS
e1 3/4 -1/4 30 40 ⇒
e2 7/2 -1/2 200 57
x2 1/4 1/4 120 480
e4 1 0 90 90
x1 e3 R
e1 ←→ x1
z(3) (200 − ∆2 )/3 (100 + ∆2 )/3 26000 + 110∆2
x1 4/3 40
e2 60
x2 110
e4 50
e1 e3 R
Dans le problème de production, les seconds membres des contraintes concernent des
ressources disponibles, des capacités de production ou des capacités d’absorption du mar-
ché. Des erreurs ou des incertitudes peuvent perturber l’évaluation de ces données. Mais
outre ces problèmes d’erreurs et d’incertitude, il peut être intéressant pour l’entreprise de
s’interroger sur les conséquences d’une variation de ses ressources ou de ses capacités de
vente.
108
Par conséquent, la problématique de l’étude des variations des seconds membres s’énonce
comme suit : dans quelle mesure est-il possible de modifier la valeur du second membre
d’une contrainte sans changer la valeur du coût marginal de cette contrainte à l’optimum ?
Lorsque le second membre d’une contrainte varie, les cœfficients de la fonction économique
optimale ne sont affectés que si cette variation est d’une ampleur telle qu’elle suscite, un chan-
gement de structure de la solution optimale. Comme les variables constituant la base optimale
ont changé, les coûts marginaux sont modifiés.
Le changement de base provient du fait que la variation du second membre suscite une dé-
formation du domaine des solutions admissibles. Une déformation importante rejette l’ancienne
base optimale hors du domaine des solutions admissibles.
a) Considérons une variation du second membre b1 : b1 = 150 + λ1
i h i h
b1 ∈ 0, +∞ ⇒ λ1 ∈ − 150, +∞ .
Forme standard :
Pour stabiliser la valeur du coût marginal de cette contrainte (première contrainte), on doit
effectuer ces échanges :
Premier tableau : e3 ←→ x2
Deuxième tableau : e1 ←→ x1
109
⇓
z(1) -100 -200 0 TS
e1 1 1 150 + λ1 150 + λ1
e2 4 2 440 220
e3 1 4
480 120 ⇒
e4 1 0 90 −
x1 x2 R
e3 ←→ x2
⇓
z(2)
-50 50 24 000 TS
e1 3/4 -1/4 30 + λ1 40 + 1.3λ1 ⇒
e2 7/2 -1/2 200 57
x2 1/4 1/4 120 480
e4 1 0 90 90
x1 e3 R
e1 ←→ x1
z(3) 200/3 100/3 26000 + 200λ1 /3
x1 4/3 40 + 4λ1 /3
e2 60 − 14λ1 /3
x2 110 − λ1 /3
e4 50 − 4λ1 /3
e1 e3 R
1140
Or b1 = 150 + λ1 , donc tant que 120 ≤ b1 < ≈ 162, 857 la base demeure la même et le prix
7
caché est stable. Pour preuve, si on ajoute 3 ha de terrain c’est-à-dire λ1 = 3 ou b1 = 153, on a la
solution optimale suivante :
110
z = 26 200
x1 = 44
x2 = 109
e1 = 0 .
e2 = 46
e3 = 0
e4 = 46
Ce qui confirme nos propos de la page 93.
Remarque : D’après le résultat ci-dessus on peut conclure que le coût marginal de 200/3 $ par
hectare de la première ressource n’est valide que si la solution de base demeure stable. Donc si
et seulement si 120 ≤ b1 < 162, 857. Ceci est appelé le domaine de validité du coût marginal .
b) Considérons une variation du second membre b2 : b2 = 440 + λ2
i h i h
b2 ∈ 0, +∞ ⇒ λ2 ∈ − 440, +∞ .
Forme standard :
Pour stabiliser la valeur du coût marginal de cette contrainte, on doit effectuer ces échanges :
Premier tableau : e3 ←→ x2
Deuxième tableau : e1 ←→ x1
⇓
z(1) -100 -200 0 TS
e1 1 1 150 150
e2 4 2 440+λ2 220 + λ2 /2
e3 1 4
480 120 ⇒
e4 1 0 90 −
x1 x2 R
e3 ←→ x2
111
⇓
z(2)
-50 50 24 000 TS
e1 3/4 -1/4 30 40 ⇒
e2 7/2 -1/2 200 + λ2 57
x2 1/4 1/4 120 480
e4 1 0 90 90
x1 e3 R
e1 ←→ x1
z(3) 200/3 100/3 26 000
x1 4/3 40
e2 60 + λ2
x2 110
e4 50
e1 e3 R
Or b2 = 440 + λ2 , donc tant que 380 < b2 < +∞ la base demeure la même et le prix caché reste
stable.
c) Considérons une variation du second membre b3 : b3 = 480 + λ3
i h i h
b3 ∈ 0, +∞ ⇒ λ3 ∈ − 480, +∞ .
Forme standard :
Pour stabiliser la valeur du coût marginal de cette contrainte, on doit effectuer ces échanges :
Premier tableau : e3 ←→ x2
Deuxième tableau : e1 ←→ x1
112
⇓
z(1) -100 -200 0 TS
e1 1 1 150 150
e2 4 2 440 220
e3 1 4
480 + λ3 120 + λ3 ⇒
e4 1 0 90 −
x1 x2 R
e3 ←→ x2
⇓
z(2)
-50 50 24 000 + 50λ3 TS
e1 3/4 -1/4 30 − λ3 /4 40 ⇒
e2 7/2 -1/2 200 − λ3 /2 57
x2 1/4 1/4 120 + λ3 /4 480
e4 1 0 90 90
x1 e3 R
e1 ←→ x1
z(3) 200/3 100/3 26 000 + 100λ3 /3
x1 4/3 40 − λ3 /3
e2 60 + 2λ3 /3
x2 110 + λ3 /3
e4 50 + λ3 /3
e1 e3 R
Or b3 = 480 + λ3 , donc tant que 390 < b3 ≤ 600 la base du prix caché demeure la même.
113
d) Considérons une variation du second membre b4 : b4 = 90 + λ4
i h i h
b4 ∈ 0, +∞ ⇒ λ4 ∈ − 90, +∞ .
Forme standard :
Pour stabiliser la valeur du coût marginal de cette contrainte, on doit effectuer ces échanges :
Premier tableau : e3 ←→ x2
Deuxième tableau : e1 ←→ x1
⇓
z(1) -100 -200 0 TS
e1 1 1 150 150
e2 4 2 440 220
e3 1 4
480 120 ⇒
e4 1 0 90+λ4 −
x1 x2 R
e3 ←→ x2
⇓
z(2)
-50 50 24 000 TS
e1 3/4 -1/4 30 40 ⇒
e2 7/2 -1/2 200 57
x2 1/4 1/4 120 480
e4 1 0 90+λ4 90 + λ4
x1 e3 R
e1 ←→ x1
114
z(3) 200/3 100/3 26 000
x1 4/3 40
e2 60
x2 110
e4 50 + λ4
e1 e3 R
Or b4 = 90 + λ4 , donc tant que 40 < b4 < +∞ la base demeure la même et le prix caché est
stable.
Une seconde méthode utilisant les propriétés de la dualité est envisageable pour l’étude
de la sensibilité de la solution optimale par rapport à une modification du second membre
d’une contrainte. En effet, il suffit de constater que paramétrer le second membre d’une
contrainte du programme primal est équivalent à paramétrer le cœfficient correspondant
dans la fonction économique du programme dual.
115
5.5.3 Prédire l’effet des changements simultanés de paramètres - La Règle 100 %
Les informations contenues dans le rapport d’analyse de sensibilité nous indiquent l’effet de la
modification d’un seul paramètre de coût ou de ressource. Le rapport de plage pour le problème
de l’agriculteur est présenté à titre d’exemple :
Model Title: Problème d’agriculture
Variable Value Reduced Cost
X_1 40.00000 0.000000
X_2 110.0000 0.000000
Row Slack or Surplus Dual Price
Z 26000.00 1.000000
E_1 0.000000 66.66667
E_2 60.00000 0.000000
E_3 0.000000 33.33333
E_4 50.00000 0.000000
--------------------------------------------------------------------------------
********************* Analyse de sensibilité **********************
--------------------------------------------------------------------------------
Ranges in which the basis is unchanged:
Objective Coefficient Ranges:
Current Allowable Allowable
Variable Coefficient Increase Decrease
X_1 100.0000 100.0000 50.00000
X_2 200.0000 200.0000 100.0000
Righthand Side Ranges:
Current Allowable Allowable
Row RHS Increase Decrease
E_1 150.0000 12.85714 30.00000
E_2 440.0000 INFINITY 60.00000
E_3 480.0000 120.0000 90.00000
E_4 90.00000 INFINITY 50.00000
Le rapport indique que la contribution aux bénéfices d’un hectare de tomate pourrait être dimi-
nuée jusqu’à 50 $/ha sans changer la base de solution. Dans ce cas, cela signifie que la solution
optimale recommanderait toujours de produire sur 40 ha de tomates et 110 ha de piments.
Supposons que, pour faire face à la concurrence, nous envisageons de baisser le prix d’une
tomate de 40 $/ha et le prix d’un piment de 10 $/ha. Sera-t-il toujours rentable de produire le
même melange ?
Individuellement, chacun de ces changements ne changerait pas la solution car 40 < 50 et 10 <
100.
Cependant, il n’est pas clair que ces deux changements puissent être effectués simultané-
ment. Que suggère votre intuition en règle générale décrivant les changements simultanés qui
ne changent pas la base ?
La Règle 100 % : Vous pouvez considérer les plages autorisées comme une marge, qui peut être
utilisée pour modifier les paramètres. C’est un fait que toute combinaison de changements ne
116
changera pas la base si la somme des pourcentages de marge utilisée est inférieure à 100 %.
Pour les changements simultanés que nous envisageons, nous avons :
40 10
× 100 + × 100 = 80% + 10% = 90% < 100%.
50 100
Cela satisfait la condition, donc les modifications peuvent être apportées sans changer la base.
Bradley, Hax et Magnanti (1977) ont baptisé cette règle la règle des 100%. Étant donné que
les valeurs de A et C ne changent pas, nous pouvons calculer l’effet sur les bénéfices de ces
changements comme −40 × 40 − 10 × 110 = −2 700.
Ainsi, le nouveau bénéfice sera de 26 000 − 2 700 = 23 300.
La formulation modifiée et sa solution sont :
model:
Title Problème d’agriculture;
[Z] max=60*x_1+190*x_2;
[e_1] x_1+x_2<=150;
[e_2] 4*x_1+2*x_2<=440;
[e_3] x_1+4*x_2<=480;
[e_4] x_1<=90;
end
Objective value: 23300.00
Model Title: Problème d’agriculture
Variable Value Reduced Cost
X_1 40.00000 0.000000
X_2 110.0000 0.000000
Row Slack or Surplus Dual Price
Z 23300.00 1.000000
E_1 0.000000 16.66667
E_2 60.00000 0.000000
E_3 0.000000 43.33333
E_4 50.00000 0.000000
117
Forme standard :
max z = 100x1 + 200x2
x1 + x2 + e1 = 150
4x1 + 2x2 + e2 = 440
x1 + (4 + δ32 )x2 + e3 = 480
.
x1 + e4 = 90
xj ≥ 0, j = 1, 2
ei ≥ 0, i = 1, . . . , 4
• Si δ32 ≥ 0, alors l’équation ne peut pas être satisfaite sinon e∗3 < 0
puisque x∗1 + 4x∗2 = 480 et δ32 x∗2 + e∗3 = 0, x∗2 ≥ 0.
• Si δ32 ≤ 0, alors on a un excèdent de la 3ème ressource (e3 6= 0), ce qui nous contraint à
changer la base (la solution optimale n’est plus stable).
Conclusion :
Dans le cas où xj est une variable de base optimale et la ième ressource est totalement
utilisée, il est impossible de modifier le cœfficient aij sans que la base dans la solution
optimale ne change pas (la solution optimale n’est pas stable).
ii) xj est une variable de base et la ième ressource n’est pas totalement utilisée.
Par exemple :
Forme standard :
max z = 100x1 + 200x2
x1 + x2 + e1 = 150
(4 + δ21 )x1 + 2x2 + e2 = 440
x1 + 4x2 + e3 = 480
.
x1 + e4 = 90
xj ≥ 0, j = 1, 2
ei ≥ 0, i = 1, . . . , 4
118
Pour que la base demeure toujours optimale il faut et il suffit que
(
δ21 x∗1 + e∗2 = e2 = 60 60 60 3
∗ ⇒ 60 − δ21 x∗1 ≥ 0 ⇒ δ21 ≤ ∗ = = .
e2 ≥ 0 x1 40 2
Conclusion :
Dans le cas où xj serait une variable de base optimale et où la ième ressource n’est pas
totalement utilisée, il est possible de modifier le cœfficient aij d’une valeur δij égale à
ei
−∞ < δij ≤ ∗ et la solution optimale demeure stable.
xj
119
z(3) 200/3 100/3 θ 26 000
x1 40
e2 60
x2 110
e4 50
e1 e3 x3 R
Passage au dual :
min
w = 150y1 + 440y2 + 480y3 + 90y4
y1 + 4y2 + y3 + y4 ≥ 100
y1 + 2y2 + 4y3 ≥ 200
.
y1 + 3y2 + 2y3 ≥ c3
y1 ≥ 0, y2 ≥ 0, y3 ≥ 0, y4 ≥ 0
Ce qui revient à dire, que pour l’agriculteur l’utilisation d’un hectare de terrain, de 3 m3 d’eau et
de deux heures de travail lui procurent plus de gain s’ils va les mettre au service de la produc-
tion de tomates et/ou de piments plutôt que dans la production de pommes de terre. Ceci est
équivalent au fait que la contrainte suivante y1∗ + 3y2∗ + 2y3∗ ≥ c3 est satisfaite à l’optimum si on
n’a pas intérêt à introduire la production de pomme de terre.
Primal Dual
x1 ←→ s1
x2 ←→ s2
x3 ←→ s3
e1 ←→ y1
e2 ←→ y2
e3 ←→ y3
e4 ←→ y4
120
400
• Si c3 ≤ y1∗ + 3y2∗ + 2y3∗ ⇒ c3 ≤ 200/3 + 3 × 0 + 2 × 100/3 ⇒ c3 ≤ , l’agriculteur n’a
3
pas intérêt à introduire la nouvelle activité.
400
• Si c3 > , l’agriculteur a intérêt à introduire cette nouvelle activité, la solution optimale
3
va changer et la valeur de la fonction objectif augmentera.
121
5.7 Exercices d’application
Exercice 5.1
Écrire le dual des formes canoniques suivantes (primal) :
a) max
z = 2x1 + 4x2 + 3x3
3x 1 + 4x2 + 2x3 ≤ 60
2x + x + 2x ≤ 40
1 2 3
.
x1 + 3x2 + 2x3 ≤ 80
xj ≥ 0, j = 1, . . . , 3
b) min
w = 20y1 + 24y2
y 1 + y2 ≥ 30
y1 + 2y2 ≥ 40 .
yj ≥ 0, j = 1, 2
c) max
z = 10x1 + 6x2
x 1 + 4x2 ≤ 40
3x + 2x = 60
1 2
.
2x 1 + x 2 ≥ 25
xj ≥ 0, j = 1, 2
d) min
w = y1 + 3y2
y1 + 4y2 ≤ 30
3y1 + 2y2 = 10
2y1 − 3y2 ≥ 20 .
y1 ≥ 0
y2 ∈ R
e)
max z = x1 + x2
x1 − x2 + x3 ≤ 10
x2 ≤ 5
.
2x3 ≤ 6
xj ≥ 0, j = 1, . . . , 3
f) min
w = y1 + y2 + y3 − y4
y1 − y2 ≤ 7
y3 − y4 ≤ 9
−y1 + y3 ≤ 3 .
y2 + y4 ≤ 5
yj ∈ R j = 1, . . . , 4
122
Exercice 5.2
Un agriculteur veut mettre en valeur un espace de 40 hectares, il dispose d’un montant annuel
de 63 000 $, de 840 journées de travail et se propose de semer du maïs, du blé et du soja. La
préparation à la culture coûte 1 500 $ par ha pour le maïs, 1 800 $ par ha pour le blé et enfin
1 050 $ par ha pour le soja. La culture d’un ha nécessite : 18 journées de travail pour le maïs,
27 journées pour le blé et 15 journées pour le soja. Les bénéfices espérés sont respectivement
de 420 $ pour le maïs, 510 $ pour le blé et 360 $ (compte tenu d’une prime d’encouragement)
pour le soja.
1. Quels sont les choix de l’agriculteur ?
2. L’agriculteur apprend que la prime d’encouragement à la culture du soja est susceptible
d’être modifiée. Déterminer dans quel intervalle peut varier le cœfficient de la prime d’en-
couragement à la culture du soja sans que la base optimale ne change.
3. Supposons maintenant que les moyens sous la forme du travail humain se trouvent soumis
à une limitation variable. Quelle est alors la meilleure occupation des sols ?
Exercice 5.3
Une société de mélange de peinture produit à la fois des peintures intérieures et des peintures
extérieures en mélangeant deux matériaux de base, notés M1 et M2. Le tableau ci-dessous fournit
les données de base du problème.
Peinture Peinture Disponible
intérieure extérieure par jour
Matériau M1 réquis 6 4 24
Matériau M2 réquis 1 2 6
Marge (1000 $ par tonne) 5 4
Une étude de marché indique que la demande journalière de peinture extérieure ne peut excéder
celle de la peinture intérieure de plus d’une tonne. D’autre part, le maximum de la demande jour-
nalière de peinture extérieure est de 2 tonnes. On se demande comment déterminer la meilleure
combinaison de production de peintures intérieure et extérieure afin d’optimiser le profit jour-
nalier.
1. Formuler le problème sous forme canonique.
2. Donner la solution optimale.
3. Il y a incertitude sur le prix de vente de la peinture extérieure. Dans quel domaine de
variation doit se trouver la marge du second produit afin de conserver la solution optimale
déterminée ci-dessus ?
4. En déduire l’effet sur le profit d’une augmentation de la marge du second produit de 4 à 6.
Exercice 5.4
Résoudre l’exercice 4.3 de la page 88 en utilisant la dualité.
Exercice 5.5
Résoudre l’exercice 4.6 de la page 89 en utilisant la dualité.
123
Exercice 5.6
Reformuler les problèmes d’optimisation suivants sous forme de programmes linéaires cano-
nique :
min w = |2y3 − y1 | + y2
a)
4y1 − y2 + 2y3 = 6
2y2 − 4y3 ≥ 4 .
yj ≥ 0, j = 1, . . . , 3
b) max z = x1 + min 2x2 − 4, 4x3 + x1
x1 + 32 + 2x3 ≤ 9
5x2 − x3 = 4 .
xj ≥ 0, j = 1, . . . , 3
124
Logiciels pour la résolution des problèmes d’optimisation : LINGO
6
6.1 Introduction
LINGO (Lineair, Integer, Nonlinear & Global Optimization) est un outil complet conçu pour
formuler rapidement, facilement et efficacement les problèmes d’optimisation de modèles li-
néaires, non linéaires, quadratiques, de cônes du second degré et stochastiques.
LINGO met à votre disposition : un langage puissant et un environnement complet pour construire
et éditer vos modèles, le tout complété d’un jeu de solveurs ultra-performants.
LINGO vous fait gagner un temps précieux dans vos phases de développement : en effet,
LINGO vous permet de formuler rapidement et facilement vos problèmes d’optimisation linéaire,
non-linéaire ou en nombres entiers. Grâce à ses outils de modélisation, vos modèles sont expri-
més de manière transparente à l’aide de sommes et de variables indicées. La méthode ne diffère
guère de la méthode traditionnelle avec crayon et papier, mais vos modèles seront plus faciles à
réutiliser et à mettre à jour !
Il vous fait aussi gagner du temps en gérant vos données de manière optimale : lorsque
vous construisez vos modèles, l’information est extraite automatiquement de bases de données
et/ou de feuilles de calcul. Et inversement, les résultats sont exportés vers n’importe quelle base
de données et/ou feuille de calcul, facilitant ainsi l’édition de rapports et la présentation des
résultats dans l’application de votre choix.
125
F IGURE 6.2 – Un aperçu de la LICENCE
126
6.2.2 Introduction des données
Double cliquer sur l’icône "LINGO 18.0 x64" de votre bureau. Le logiciel va s’exécuter et vous
aurez cette fenêtre qui s’affiche sur votre écran :
Il faut noter qu’on peut remplacer x_1 et x_2 par n’importe quel mot qui indique ces deux
variables, par exemple, on peut remplacer x_1 par "tomates" et x_2 par "piments". Une autre
caractéristique est que LINGO ne fait pas de différence entre majuscule et minuscule. Pour lui la
variable "TOMATE" est la même que la variable "tomAtE".
On remarque qu’on peut appeler chaque contrainte par un nom nominatif que Lingo va utiliser
pour afficher les résultats. L’écran qu’on obtient après avoir introduit les différents paramètres
est le suivant :
model :
Title Problème d’agriculture ;
[Z] max=100*x_1+200*x_2 ;
[e_1] x_1+x_2<=150 ;
[e_2] 4*x_1+2*x_2<=440 ;
[e_3] x_1+4*x_2<=480 ;
[e_4] x_1<=90 ;
end
127
On n’a pas à ajouter les contraintes de non-négativité, Lingo suppose par défaut que les va-
riables de décision sont de type non-négatif.
Cette fenêtre fournit des informations sur le nombre de variables non linéaires, entières et to-
tales dans le modèle ; le nombre non linéaire et total de contraintes utilisées dans le modèle ;
et le nombre de cœfficients variables non linéaires et totaux non nuls utilisés. La case Solver
Status (Solver Status) de cette fenêtre détaille la classification du modèle (Linear Program (LP),
Quadratic Program (QP), Integer Linear Program (ILP), Integer Quadratic Program (IQP), Non-
linear Program (NLP), etc.), l’état de la solution actuelle (optimum local ou global, réalisable ou
non réalisable, etc.), la valeur de la fonction-objectif, l’infaisabilité du modèle (par quantité des
contraintes violées) et le nombre d’itérations nécessaires pour résoudre le modèle. La zone État
du solveur étendu (Extended Solver Status) détaille des informations similaires pour les solveurs
de branche et lien, globaux et multi-démarrage plus avancés.
128
Au bas de la fenêtre d’état du solveur, vous trouverez un champ intitulé : Intervalle de mise
à jour. LINGO mettra à jour la fenêtre d’état du solveur toutes les n secondes, où n est la valeur
contenue dans le champ Intervalle de mise à jour. Vous pouvez régler cet intervalle sur n’importe
quelle valeur que vous désirez. Cependant, le définir sur 0 entraînera des temps de résolution
plus longs : LINGO passera plus de temps à mettre à jour la fenêtre d’état du solveur qu’à
résoudre votre modèle. Sur les modèles plus grands, LINGO peut ne pas toujours être en mesure
de mettre à jour la fenêtre d’état du solveur à intervalles réguliers. Donc, ne vous inquiétez pas
si vous devez parfois attendre plus longtemps que l’intervalle indiqué.
En fermant la fenêtre Statut du solveur, vous pouvez alors afficher la fenêtre Rapport de
solution.
Global optimal solution found.
Objective value: 26000.00
Infeasibilities: 0.000000
Total solver iterations: 3
Elapsed runtime seconds: 0.10
Model Class: LP
Total variables: 2
Nonlinear variables: 0
Integer variables: 0
Total constraints: 5
Nonlinear constraints: 0
Total nonzeros: 9
Nonlinear nonzeros: 0
129
valeurs nettes. Pour les variables d’écart, ce sont les prix duaux (Dual Price).
Cette fenêtre affiche les valeurs de chaque variable qui produiront la valeur optimale de la
fonction objectif.
Le coût réduit de toute variable incluse dans la solution optimale est toujours nul. Pour les
variables non incluses dans la solution optimale, le coût réduit montre de combien la valeur de
la fonction objectif diminuerait (pour un problème MAX) ou augmenterait (pour un problème
MIN) si une unité de cette variable devait être incluse dans la solution. Par exemple, si le coût
réduit d’une certaine variable était de 5, alors la valeur optimale du problème MAX diminuerait
de 5 unités si 1 unité de la variable était ajoutée.
La colonne Slack ou Surplus dans le rapport de solution montre à quel point la contrainte est
serrée. Si une contrainte est complètement satisfaite en tant qu’égalité, alors le slack/surplus est
égal à zéro. Si le slack/surplus est positif, cela vous indique combien d’unités supplémentaires
de la variable pourraient être ajoutées à la solution optimale avant que la contrainte ne devienne
une égalité. Si le slack/surplus est négatif, alors la contrainte a été violée.
La colonne Prix Dual (Dual Price) décrit le montant auquel la valeur de la fonction objectif
s’améliorerait si la valeur contraignante était augmentée d’une unité.
SETS:
Trucks/TR1..TR27/:Capacity;
ENDSETS
Cet ensemble porte le nom d’ensemble « Trucks » et contient 27 membres, identifiés par TR1−TR27.
Les attributs de chaque membre sont appelés « Capacity ».
130
L’ensemble dérivé est défini de la même manière, mais doit également inclure la liste des
ensembles parent. Un exemple d’ensemble dérivé pourrait être :
SETS:
Product/X Y/;
Machine/L M/;
Make(Product Machine)/X L, X M,
Y M/;
ENDSETS
Cette déclaration d’ensemble définit deux ensembles primitifs, Product et Machine, et un en-
semble dérivé appelé Make. L’ensemble Make est dérivé des ensembles parents Product et Ma-
chine. Les membres sont spécifié comme indiqué. Notez qu’une quatrième combinaison Produit-
Machine, Y L, pourrait être théoriquement possible. Cet exemple ne permet pas une telle com-
binaison. Si toutes les combinaisons des ensembles parents sont possibles, aucun ensemble de
membres n’a besoin d’être défini. Une liste d’attributs pour l’ensemble dérivé peut également
être incluse de la même manière que pour un ensemble primitif.
Plusieurs fonctions de bouclage sur des ensembles sont également disponibles pour une utili-
sation dans LINGO. Ces fonctions sont les suivantes :
• @FOR − génère des contraintes sur les membres d’un ensemble.
• @SUM − somme une expression sur tous les membres de l’ensemble.
• @MIN − calcule le minimum d’une expression sur tous les membres de l’ensemble.
• @MAX − calcule le maximum d’une expression sur tous les membres de l’ensemble.
Chacune des fonctions de bouclage ci-dessus a une forme de syntaxe similaire et les fonctions de
bouclage peuvent même être imbriquées. Voici des exemples d’expressions utilisant chaque type
de fonction de bouclage :
• Cette déclaration @FOR définit la capacité de transport pour les 27 camions de livraison
dans les camions à un maximum de 3 000 kgs :
@FOR(Trucks(T) : Capacity(T)<=3000) ;
• Cette déclaration @SUM calcule la capacité de transport totale des camions individuels :
TOTAL_HAUL=@SUM(Trucks(J) : Capacity(J)) ;
• Ces instructions @MIN et @MAX trouvent les niveaux de capacité de transport extrêmes
des camions de livraison individuels :
MIN_HAUL = @MIN(Trucks(J) : Capacity(J)) ;
MAX_HAUL = @MAX(Trucks(J) : Capacity(J)) ;
131
liste_objet = liste_valeur ;
La liste d’objets contient les noms des attributs ou de l’ensemble dont les valeurs sont en cours
d’initialisation. La liste de valeurs affecte les valeurs aux membres spécifiés de la liste d’objets.
Les exemples suivants montrent deux manières d’utiliser la section DATA dans LINGO. Dans
chaque exemple, les attributs X et Y de SET1 sont initialisés à [1, 2, 3] et [4, 5, 6], respectivement.
Le premier exemple définit des valeurs pour chaque attribut séparément :
SETS:
SET1 /A, B, C/: X, Y;
ENDSETS
DATA:
X = 1, 2, 3;
Y = 4, 5, 6;
ENDDATA
L’exemple suivant montre comment une instruction peut être utilisée pour affecter des valeurs
aux deux attributs simultanément. Chaque ligne attribue des valeurs différentes à la paire X, Y :
SETS:
SET1 /A, B, C/: X, Y;
ENDSETS
DATA:
X, Y = 1, 4,
2, 5,
3, 6;
ENDDATA
Lorsque des paramètres ou des attributs sont définis dans la section DATA d’un modèle, une fonc-
tion appelée Analyse de simulation peut être utilisée pour examiner les effets de la variation de
la valeur du paramètre ou de l’attribut. Par exemple, si le taux d’inflation va très probablement
tomber entre 2% et 6%, le paramètre peut être défini comme suit dans la section DATA :
DATA:
INFLATION_RATE = ?;
ENDDATA
Quand LINGO rencontre le ? dans la section DATA, il invitera l’utilisateur à saisir une valeur
pour le paramètre. L’utilisateur peut alors saisir des valeurs comprises entre 2% et 6%, et LINGO
résoudra le modèle en utilisant cette valeur « entrée ».
Tous les éléments d’un attribut peuvent également être initialisés à une valeur unique en
utilisant la section DATA. L’exemple suivant montre comment affecter la valeur 20 aux sept
membres de l’attribut BESOINS et 100 aux sept membres de l’attribut COUT :
132
SETS:
JOURS / LU, MA, ME, JE, VE, SA,
DI/: BESOINS, COUT;
ENDSETS
DATA:
BESOINS, COUT = 20, 100;
ENDDATA
Les valeurs de données peuvent également être omises de la section DATA d’un modèle LINGO
pour indiquer que LINGO est libre de déterminer les valeurs de ces attributs lui-même. L’exemple
suivant montre que les deux premières valeurs de l’attribut CAPACITE ont été initialisées à 34,
mais que les trois dernières variables n’ont pas été définies :
SETS:
ANNEES /1..5/: CAPACITE;
ENDSETS
DATA:
CAPACITE = 34, 34, , , ;
ENDDATA
133
6.6 Naviguer dans l’interface LINGO
Les opérations dans LINGO peuvent être effectuées à l’aide des commandes des menus, des
barres d’outils ou des touches de raccourci.
Il y a cinq menus dans la fenêtre principale de LINGO. Il s’agit des menus File (Fichier), Edit
(Edition), Solver (Solveur), Window (Fenêtre) et Help (Aide)
La liste suivante détaille les commandes du menu File (Fichier.) Les touches de raccourci sont
incluses entre parenthèses lorsqu’elles sont disponibles :
New (F2) : Ouvrir une nouvelle fenêtre de modèle
Open (F3) : Ouvrir un fichier enregistré
Save (F4) : Enregistrer un modèle actuel
Save As (F5) : Enregistrer un modèle actuel sous un nouveau nom de fichier
Close (F6) : Fermer le modèle actuel
Print (F7) : Imprime le contenu de la fenêtre actuelle
Print Setup (F8) : Configure les préférences de l’imprimante
Print Preview (Shift+F8) : Affiche le contenu de la fenêtre tel qu’il serait s’il était imprimé
Log Output (F9) : Ouvre un fichier journal pour consigner la sortie dans la fenêtre
de commande
Take Commands (F11) : Exécute un script de commande contenu dans un fichier
Export File : Exporte un modèle au format de fichier MPS ou MPI
License : Invite l’utilisateur à saisir un nouveau mot de passe de licence
pour mettre à niveau le système
Database User Info : Demande un identifiant et un mot de passe pour l’accès à la base de
données via la fonction @ODBC()
Exit (F10) : Ferme LINGO
134
Le menu Edit (Edition) contient les commandes suivantes :
Undo (CTRL+Z) : Annule la dernière action
Redo (CTRL+Y) : Rétablit la dernière commande d’annulation
Cut (CTRL+X) : Copie et supprime le texte en surbrillance
Copy (CTRL+C) : Copie le texte en surbrillance dans le presse-papiers
Paste (CTRL+V) : Colle le contenu du presse-papiers dans le document
Paste Special : Colle le contenu du presse-papiers dans le document,
d’une manière spécifiée par l’utilisateur
Select All (CTRL+A) : Sélectionne tout le contenu de la fenêtre courante
Find (CTRL+F) : Recherche dans le document une chaîne de texte spécifique
Find Next (CTRL+N) : Recherche dans le document la prochaine occurrence
d’une chaîne de texte spécifique
Replace (CTRL+H) : Remplace une chaîne de texte spécifique par une nouvelle chaîne
Go To Line (CTRL+T) : Déplace le curseur vers un certain numéro de ligne
Match Parenthesis (CTRL+P) : Recherche le compagnon de la parenthèse sélectionnée
Paste Function : Colle un modèle de syntaxe pour une @fonction LINGO spécifique
Select Font (CTRL+J) : Configure la police pour une portion de texte sélectionnée
Insert New Object : Place un objet OLE dans le document
Links : Crée des liens vers des objets externes
Object Properties : Définit les propriétés d’un objet incorporé
Le menu Solver (Solveur) contient les commandes suivantes :
Solve (CTRL+S) : Résout le modèle
Solution (CTRL+O) : Crée une fenêtre de rapport de solution pour le modèle actuel
Range (CTRL+R) : Crée un rapport d’analyse de plage pour la fenêtre actuelle
Options (CTRL+I) : Définit les options du système
Generate : Génère la forme algébrique du modèle
Picture (CTRL+K) : Affiche un graphique de la matrice du modèle
Debug (CTRL+D) : Identifie les erreurs dans les modèles non réalisables et illimités
Model Statistics (CTRL+E) : Rapporte les détails techniques du modèle
Look (CTRL+L) : Crée un rapport de formulation pour la fenêtre courante
Le menu Window (Fenêtre) contient les commandes suivantes :
Command Window (CTRL+1) : Ouvre une fenêtre pour l’opération en ligne de commande
de LINGO
Status Window (CTRL+2) : Ouvre la fenêtre d’état du solveur
Send to Back (CTRL+B) : Place la fenêtre actuelle derrière toutes les autres fenêtres
ouvertes
Close All (CTRL+3) : Ferme toutes les fenêtres ouvertes
Tile (CTRL+4) : Place les fenêtres ouvertes dans un arrangement spécial
(horizontal ou vertical)
Cascade (CTRL+5) : Place toutes les fenêtres ouvertes dans un arrangement
en cascade
Arrange Icons (CTRL+6) : Aligne les fenêtres d’icônes en bas de la fenêtre principale
de LINGO
135
La fenêtre Help (Aide) contient les commandes suivantes :
Help Topics : Ouvre le manuel de LINGO
Register : Enregistre votre version de LINGO en ligne
AutoUpdate : Fournit des invites pour télécharger les mises à jour logicielles
About LINGO : Affiche des informations sur le logiciel
Une seule barre d’outils située en haut de la fenêtre principale de LINGO contient bon nombre
des mêmes commandes que celles répertoriées ci-dessus. Ces commandes sont accessibles sim-
plement en utilisant la souris pour cliquer sur l’icône qui les représente. Les images suivantes
détaillent quelles icônes correspondent à quelles commandes.
136
6.7 Opérateurs et fonctions LINGO
LINGO fournit une vaste gamme d’opérateurs et de fonctions, ce qui en fait un outil de ré-
solution de problèmes utile. Une sélection des principaux opérateurs et fonctions est donnée
ci-dessous.
LINGO utilise trois types d’opérateurs : les opérateurs arithmétiques, logiques et relationnels.
Les opérateurs arithmétiques sont les suivants :
• Puissance : ∧
• Multiplication : ∗
• Division : /
• Addition : +
• Soustraction : −
Les opérateurs logiques sont utilisés dans les fonctions de boucle d’ensemble pour définir des
conditions VRAI/FAUX :
• #LT# : VRAI si l’argument de gauche est strictement inférieur à l’argument de droite, sinon
FAUX
• #LE# : VRAI si l’argument de gauche est inférieur ou égal à l’argument de droite, sinon FAUX
• #GT# : VRAI si l’argument de gauche est strictement supérieur à l’argument de droite, sinon
FAUX
• #GE# : VRAI si l’argument de gauche est supérieur ou égal à l’argument de droite, sinon
FAUX
• #NE# : VRAI si les deux arguments ne sont pas égaux, sinon FAUX
• #AND# : VRAI uniquement si les deux arguments sont VRAI, sinon FAUX
• #OR# : FAUX uniquement si les deux arguments sont FAUX, sinon VRAI
Les opérateurs relationnels sont utilisés lors de la définition des contraintes d’un modèle. Ils sont
les suivants :
• L’expression est égale : =
• Le côté gauche de l’expression est inférieur ou égal au côté droit : <=
• Le côté gauche de l’expression est supérieur ou égal au côté droit : >=
137
La liste suivante contient un échantillon de fonctions mathématiques pouvant être utilisées dans
LINGO :
• @ABS(X) − renvoie la valeur absolue de X
• @SIGN(X) − renvoie -1 si X est négatif et +1 si X est positif
• @EXP(X) − calcule eX
• @LOG(X) − calcule le logarithme naturel de X
• @SIN(X) − renvoie le sinus de X, où X est l’angle en radians
• @COS(X) − renvoie le cosinus de X
• @TAN(X) − renvoie la tangente de X
LINGO contient également une pléthore de fonctions financières, probabilistes et fonctions d’im-
port/export. Ceux-ci sont couramment utilisés dans des modèles plus avancés, qui dépassent la
portée prévue de ce document.
138
• + 082: Unbounded solution (Solution illimitée)
- Ajouter des contraintes
• + 102: Unrecognized variable name : variable name (Nom de variable non reconnu : nom
de variable)
- Vérifier l’orthographe
• + 108: The model’s dimensions exceed the capacity of this version (Les dimensions du
modèle dépassent la capacité de cette version)
- Passez à la version complète ou utilisez Excel
• + 164: Invalid LINGO name (Nom LINGO non valide)
- Créez un nom conforme aux conventions de nommage de LINGO
MODEL :
SETS :
OBJETS : CHOIX, POIDS, UTILITE ;
ENDSETS
DATA :
OBJETS= OBJ1, OBJ2, OBJ3, OBJ4, OBJ5, OBJ6, OBJ7 ;
POIDS = 1, 3, 4, 3, 3, 1, 5, 10 ;
UTILITE = 2, 9, 3, 8, 10, 6, 4, 10 ;
CAPACITE_MAXIMAL = 15 ;
ENDDATA
MAX = @SUM( OBJETS : UTILITE * CHOIX) ;
@SUM( OBJETS : POIDS * CHOIX) <= CAPACITE_MAXIMAL ;
@FOR( OBJETS : @BIN( CHOIX)) ;
END
139
Un autre modèle de programmation courant est le problème du transport. Les problèmes de
transport concernent le transport de marchandises d’un endroit à un autre à un coût minime.
Cet exemple montre comment modéliser un problème de transport simple.
MODEL :
! Un problème de transport de 6 ENTREPÔTS à 8 fournisseurs ;
SETS :
ENTREPOTS / E1 E2 E3 E4 E5 E6/ : CAPACITE ;
VENDEURS / V1 V2 V3 V4 V5 V6 V7 V8/ : DEMANDE ;
MATRICE( ENTREPOTS, VENDEURS) : COST, VOLUME ;
ENDSETS
! Voici les données ;
DATA :
CAPACITE = 60 55 51 43 41 52 ;
DEMANDE = 35 37 22 32 41 32 43 38 ;
COST = 6 2 6 7 4 2 5 9
49538582
52197433
76739271
23957265
5 5 2 2 8 1 4 3;
ENDDATA
! La fonction Objectif ;
MIN = @SUM( MATRICE( I, J) : COST( I, J) * VOLUME( I, J)) ;
! Les contraintes de la demande ;
@FOR( VENDEURS( J) :
@SUM( ENTREPOTS( I) : VOLUME( I, J)) = DEMANDE( J) ) ;
! Les contraintes de capacité ;
@FOR( ENTREPOTS( I) :
@SUM( VENDEURS( J) : VOLUME( I, J)) <= CAPACITE( I) ) ;
END
140