Vous êtes sur la page 1sur 140

Table des matières

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

2 Formulation d’un programme linéaire (PL) 12


2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2 Les conditions de formulation d’un PL . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3 Les étapes de formulation d’un PL : . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.4 Présentation Théorique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.5 Exemples de formulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.5.1 Problème d’agriculture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.5.2 Problème de médecine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.5.3 Problème de production . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5.4 Problème d’alimentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.5.5 Problème de mélange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.5.6 Problème de sélection de Médias . . . . . . . . . . . . . . . . . . . . . . . 21

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

4 Problèmes de minimisation et problèmes irréguliers 51


4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.2 Les variables artificielles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.2.1 Méthodes des pénalités . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.2.2 Problème de Comptabilité de gestion . . . . . . . . . . . . . . . . . . . . . 52
4.2.3 Problème de sélection de médias . . . . . . . . . . . . . . . . . . . . . . . 55
4.2.4 Exemples d’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.3 Les problèmes de minimisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.3.1 Problème de médecine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.3.2 Problème d’alimentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.3.3 Exemples d’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.4 Les problèmes irréguliers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
4.4.1 Les problèmes impossibles . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
4.4.2 Les problèmes à solutions multiples . . . . . . . . . . . . . . . . . . . . . . 82
4.4.3 Les problèmes à solution infinie . . . . . . . . . . . . . . . . . . . . . . . . 83
4.4.4 Les problèmes à solution dégénérée . . . . . . . . . . . . . . . . . . . . . . 84
4.5 Variables sans restriction de signe . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
4.6 Exercices d’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

5 Dualité et analyse de sensibilité 90


5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
5.2 Interprétation économique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.3 Dualité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

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

6 Logiciels pour la résolution des problèmes d’optimisation : LINGO 125


6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
6.2 Résolution d’un exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
6.2.1 Le problème de l’agriculteur . . . . . . . . . . . . . . . . . . . . . . . . . . 126
6.2.2 Introduction des données . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
6.2.3 Résolution du problème . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
6.2.4 Interprétation des résultats . . . . . . . . . . . . . . . . . . . . . . . . . . 128
6.3 Utilisation des ensembles dans LINGO (SETS) . . . . . . . . . . . . . . . . . . . . 130
6.4 La section des données LINGO (DATA) . . . . . . . . . . . . . . . . . . . . . . . . 131
6.5 Types de variables dans LINGO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
6.6 Naviguer dans l’interface LINGO . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
6.7 Opérateurs et fonctions LINGO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
6.8 Messages d’erreur LINGO courants . . . . . . . . . . . . . . . . . . . . . . . . . . 138
6.9 Exemples de programmation LINGO . . . . . . . . . . . . . . . . . . . . . . . . . 139

3
Avant-Propos

La Recherche Opérationnelle (RO), encore appelée science du management ou science de la


décision, est une discipline dont l’objet est d’aider les gestionnaires à prendre des décisions en
utilisant des modèles et des méthodes scientifiques adaptés. La première étape pour résoudre
un problème est de l’identifier à un modèle connu ; ensuite les méthodes associées à ce modèle
sont appliquées pour proposer des solutions. Notons que la finalité de la RO est la prise de
décision plutôt que la description ou l’explication de phénomènes observés.
On situe habituellement la naissance de la RO lors de la deuxième guerre mondiale, lorsque
l’État-major britannique fit appel à des équipes de mathématiciens et de physiciens pour l’aider
à analyser des questions de stratégie militaire (développement d’un réseau de radars, organisa-
tion des convois maritimes. . . ). Après la guerre, cette approche systématique et scientifique des
problèmes de décision a été transposée au monde économique et industriel où elle a connu de
nombreux succès. Depuis, de nouvelles méthodes et de nouveaux champs d’application ont vu
le jour.
Les questions auxquelles s’intéresse la RO peuvent être classées en différentes catégories (pas
nécessairement exclusives), selon les caractéristiques des situations visées, des modèles utilisés
pour les représenter et des techniques de résolution utilisées.
Outre l’arsenal classique de l’analyse mathématique, la RO fait un usage intensif des mathé-
matiques discrètes (par opposition aux mathématiques du continu) et de l’algorithmique. La
popularité grandissante des méthodes de RO est d’ailleurs indissociablement liée à la percée ful-
gurante de l’informatique (en particulier, de la micro-informatique) dans le monde de la gestion.
Des outils aussi puissants et aussi complexes que la programmation linéaire, les algorithmes de
graphes, l’optimisation combinatoire, l’analyse multicritère, la simulation et les processus sto-
chastiques sont ainsi disponibles " au bout des doigts " d’innombrables utilisateurs (par exemple,
grâce à LINGO).
Cet ouvrage, qui illustre et complète les cours de recherche opérationnelle, s’adresse aux
chercheurs, aux enseignants, aux informaticiens, aux ingénieurs et à tous les étudiants d’infor-
matique, de mathématiques, des écoles d’ingénieurs et des DUT, et a pour objectif général de
systématiser le raisonnement du décideur dans la prise de décision de gestion.

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.

Les difficultés ne sont pas faites pour abattre


mais pour être abattues.
M ANIN M ATHURIN TAHA

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.

1.2 Modèle et typologie des modèles

1.2.1 La notion de modèle


Un modèle est d’après le dictionnaire Robert :
1. Ce qui sert ou doit servir d’objet d’imitation pour faire ou reproduire quelque chose.
2. Personne, fait, objet, possédant au plus haut point certaines qualités ou caractéristiques qui
en font le représentant d’une catégorie.
3. Objet de même forme qu’un objet plus grand mais exécuté en réduction.
4. Représentation simplifiée d’un processus, d’un système.
La notion de modèle qui nous utiliserons ici est en fait un mélange des définitions 2, 3 et 4. Nous
nous attacherons à donner une représentation schématisée de la réalité, mais en contrôlant cette

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.

1.2.2 Les composants d’un modèle


On est conduit à modéliser quand on se trouve confronté à un problème dont il n’existe pas
de solutions évidentes ("évidentes" soit par une démarche heuristique, soit parce qu’on a déjà
été confronté à ce type de problème).
Le problème concerne l’entreprise ou une partie de l’entreprise que nous appellerons système
(par exemple une unité de production, les caisses d’un supermarché, . . . ) ; ce système est sous
contrôle d’un décideur (ou d’un groupe de décideurs) qui peut en modifier le comportement
par des actions (ou décisions). Ce système est en relation avec des éléments extérieurs, non
directement contrôlés par le décideur, que nous appellerons environnement. Remarquons que
les décisions du décideur peuvent avoir une influence ou des conséquences sur l’environnement
(par exemple un fort budget publicitaire peut accroître à la fois la part de marché et la taille de
ce marché).
Enfin certaines caractéristiques du système et de l’environnement peuvent être considérées
comme primordiales pour le décideur et servir à comparer entre elles les décisions, nous par-
lerons alors de conséquences des actions. Bien évidemment ces conséquences sont fonction des
objectifs que s’est fixés le (ou qui ont été fixés au) décideur.

a) Les variables de décisions

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 :

a) Modèles descriptifs (E/S)

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.

b) Modèles de simulation (Calcul des conséquences) (E/S, Action)

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

c) Modèles d’optimisation (E/S, Action, Critères)

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.

1.3 La démarche de modélisation


La démarche de modélisation peut s’articuler autour de trois grandes phases :

1.3.1 Analyse descriptive


1. Fixer les limites géographiques, physiques et aussi temporelles du système étudié et de son
environnement. Quels sont les paramètres structurels décrivant ce système ?
2. Énumérer les actions envisagées ou le type d’action envisagée.
3. Déterminer les variables d’état, c’est à dire les éléments qui permettent de "photographier"
le système à un moment donné sous l’effet des actions.
4. Choisir la façon dont le fonctionnement du système sera décrit : satisfaction de contraintes
structurelles, évolution temporelle.
5. Identifier les conséquences qui serviront à évaluer les actions (variables d’état privilégiées).
6. Sélectionner éventuellement les critères permettant de comparer les actions.

1.3.2 Mise en équation


1. Nommer la (ou les) variable(s) associée(s) aux actions.
2. Écrire les relations définissant les variables d’état.
3. Écrire les relations décrivant le fonctionnement du système, entre les variables d’état et les
paramètres structurels.
4. Identifier les relations définissant les conséquences et exprimer les critères.

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.

2.2 Les conditions de formulation d’un PL


La programmation linéaire comme étant un modèle admet des hypothèses (des conditions)
que le décideur doit valider avant de pouvoir les utiliser pour modéliser son problème. Ces
hypothèses sont :
1. Les variables de décision du problème sont positives.
2. Le critère de sélection de la meilleure décision est décrit par une fonction linéaire de ces
variables, c’est à dire, que la fonction ne peut pas contenir par exemple un produit croisé
de deux de ces variables. La fonction qui représente le critère de sélection est dite fonction
objectif (ou fonction économique).
3. Les restrictions relatives aux variables de décision (exemple : limitations des ressources)
peuvent être exprimées par un ensemble d’équations linéaires. Ces équations forment l’en-
semble des contraintes.
4. Les paramètres du problème en dehors des variables de décisions ont une valeur connue
avec certitude.

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.

2.4 Présentation Théorique


Un programme linéaire consiste à trouver le maximum ou le minimum d’une forme linéaire
dite fonction objectif en satisfaisant certaines équations et inégalités dites contraintes. En lan-
gage mathématique, on décrira de tels modèles de la manière suivante :
Soient N variables de décision x1 , x2 , . . . , xN , l’hypothèse que les variables de décision sont
positives implique que x1 ≥ 0, x2 ≥ 0,. . . , xN ≥ 0.
La fonction objectif est une forme linéaire en fonction des variables de décision de type

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

Matriciellement, le problème (2.1) peut s’écrire de la manière suivante :


N
X
max z = cj x j ,
j=1

 N
X
aij xj ≤ bi , i = 1, 2, . . . , M


(FC)1 j=1

xj ≥ 0,

 j = 1, 2, . . . , N

(FC)1 est la forme canonique associée au problème (2.1).


Posons

c1 a11 a12 ··· a1N b1 x1


       

 c2 


 a21 a22 ··· a2N 


 b2 


 x2 

c=  .. , A=  .. .. .. , b=  ..  et x =  .. .
. . . ··· . . .
       
       
cN aM 1 aM 2 · · · aM N bM xN

On a aussi la forme canonique contractée suivante :


t
max( z = cx,
Ax ≤ b
(FC)2
x ≥ 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 :

2.5.1 Problème d’agriculture

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 ?

Formulation du problème en un PL:

É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 :

4x1 + 2x2 ≤ 440.

+ Main-d’œuvre : Les 480 heures de main-d’œuvre seront départager (pas nécessairement


en totalité) entre la culture des tomates et celles des piments. Sachant qu’un hectare de
tomates demande une heure de main-d’œuvre et un hectare de piments demande 4 heures
de main-d’œuvre alors la contrainte représentant les limitations des ressources humaines
est :
x1 + 4x2 ≤ 480.
+ Les limitations du bureau du périmètre irrigué : Ces limitations exigent que l’agricul-
teur ne cultive pas plus de 90 hectares de tomates. La contrainte qui représente cette
restriction est :
x1 ≤ 90.

Le programme linéaire qui modélise le problème d’agriculture est :

 max z = 100x1 + 200x2





x1 + x2 ≤ 150
4x1 + 2x2 ≤ 440




x1 + 4x2 ≤ 480 .

x1 ≤ 90






x1 ≥ 0, x2 ≥ 0

2.5.2 Problème de médecine


Positionnement du problème

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:

Étape 1 : Le problème de médecine présente certaines ressemblances avec le problème de l’agri-


culture, dans les deux cas c’est un problème d’allocation de ressources. Les variables de décision
qui représentent des valeurs inconnues par le décideur qui est dans ce cas le spécialiste en mé-
decine sont :
- y1 : le nombre de pilules de petite taille à prescrire ;
- y2 : le nombre de pilules de grande taille à prescrire.
On vérifie bien que les variables de décision y1 et y2 sont positives : y1 ≥ 0, y2 ≥ 0.
Étape 2 : Identification de la fonction objectif. On remarque qu’il y a plusieurs couples de so-
lutions (y1 , y2 ) qui peuvent satisfaire les contraintes spécifiées à l’étape 3. La prescription doit
contenir le min imum possible de pilules. Donc le critère de sélection de la quantité de pilules à
prescrire est celle qui minimise le nombre total des pilules

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.

+ De la même façon que pour l’aspirine, la prescription du spécialiste en médecine doit


contenir au moins 74 grains de bicarbonate. Ainsi la contrainte suivante doit être satisfaite :

5y1 + 8y2 ≥ 74.

+ Finalement la contrainte imposée par le fait que la prescription doit contenir au moins 24
grains de codéine est :
y1 + 6y2 ≥ 24.

Le programme linéaire qui modélise ce problème médical est donc le suivant :

 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 ?

Formulation du problème en un PL:

Étape 1 : Les variables de décisions sont :


• x1 : le nombre d’unités du produit P1 à fabriquer ;
• x2 : le nombre d’unités du produit P2 à fabriquer.
Étape 2 : Le profit à maximiser est : max z = 900x1 + 1000x2 .

Étape 3 : Les contraintes outre les contraintes de non-négativité sont :


• 11x1 + 9x2 ≤ 9900 pour la machine M1 ;
• 7x1 + 12x2 ≤ 8400 pour la machine M2 ;
• 6x1 + 16x2 ≤ 9600 pour la machine M3 ;

Le programme linéaire résultant est :

 max z = 900x1 + 1000x2




 11x1 + 9x2 ≤ 9900
7x1 + 12x2 ≤ 8400


.


 6x1 + 16x2 ≤ 9600
x1 ≥ 0, x2 ≥ 0

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 ?

Formulation du problème en un PL:


On peut résumer toutes les données du problème dans le tableau suivant :
M N Quantités prescrites
A 0.1 0.0 0.4
B 0.0 0.1 0.6
C 0.1 0.2 2.0
D 0.2 0.1 1.7
Coût 10 4
Ce genre de tableau peut aider à mieux analyser le problème et ainsi formuler le programme
linéaire correspondant.
Étape 1 : Les variables de décisions sont :
• y1 : la quantité d’aliments M à utiliser pour l’alimentation des deux bestiaux (en kg) ;
• y2 : la quantité d’aliments N à utiliser pour l’alimentation des deux bestiaux (en kg).
Les contraintes de non-négativité sont : y1 ≥ 0, y2 ≥ 0.
Étape 2 : La fonction objectif est une fonction coût minimal : min w = 10y1 + 4y2 .

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

Le programme linéaire est un programme de minimisation :

 min w = 10y1 + 4y2





y1 ≥ 4
y2 ≥ 6





y1 + 2y2 ≥ 20 .
2y1 + y2 ≥ 17





y1 ≥ 0, y2 ≥ 0

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 ?

Formulation du problème en un PL:

Étape 1 : La décision à prendre : Combien acheter de chaque alliage A, B, . . . , I ?


Les variables de décision sont :
• y1 : la quantité d’alliage A à acheter (en kg) ;
• y2 : la quantité d’alliage B à acheter (en kg) ;
• y3 : la quantité d’alliage C à acheter (en kg) ;
• y4 : la quantité d’alliage D à acheter (en kg) ;
• y5 : la quantité d’alliage E à acheter (en kg) ;
• y6 : la quantité d’alliage F à acheter (en kg) ;
• y7 : la quantité d’alliage G à acheter (en kg) ;
• y8 : la quantité d’alliage H à acheter (en kg) ;
• y9 : la quantité d’alliage I à acheter (en kg).
On vérifie bien que les variables de décision yj , i = 1, . . . , 9, sont positives.

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

Étape 3 : Les contraintes relatives au problème sont :


• Équation de la conservation de la matière :

y1 + y2 + y3 + y4 + y5 + y6 + y7 + y8 + y9 = 1.

• Équation de la satisfaction des proportions en Plomb :

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.

• Équation de la satisfaction des proportions en Étain :

0.8y1 + 0.6y2 + 0.1y3 + 0.1y4 + 0.4y5 + 0.3y6 + 0.5y7 + 0.1y8 + 0.5y9 ≥ 0.4.

Le programme linéaire qui modélise ce problème de mélange s’écrit :

 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

2.5.6 Problème de sélection de Médias


Positionnement du problème

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:

Étape 1 : Les variables de décision du problème sont :


• x1 : le nombre de spots publicitaires dans la télévision locale ;
• x2 : le nombre de spots publicitaires dans la télévision par satellite ;
• x3 : le nombre de spots publicitaires dans la radio ;
• x4 : le nombre d’affiches publicitaires dans les journaux.
Les contraintes de non-négativité sont vérifiées.
Étape 2 : La fonction objectif à maximiser représente le nombre de clients potentiels par publi-
cité
max z = 400x1 + 900x2 + 500x3 + 200x4 .

Étape 3 : Les contraintes du problème sont :


• Coût total de la compagne publicitaire :

40x1 + 75x2 + 30x3 + 15x4 ≤ 800.

• Nombre de clients femmes potentiels par publicité :

300x1 + 400x2 + 200x3 + 100x4 ≥ 2000.

• Contraintes de la télévision :

40x1 + 75x2 ≤ 500,


x1 ≥ 3,
x2 ≥ 2.

• Contraintes sur le nombre de publicités dans la radio et dans les journaux :


5 ≤ x3 ≤ 10
5 ≤ x4 ≤ 10

Le programme linéaire résultant est :

 max z = 400x1 + 900x2 + 500x3 + 200x4





40 x1 + 75 x2 + 30 x3 + 15 x4 ≤ 800
300 x1 + 400 x2 + 200 x3 + 100 x4 ≥ 2000





40 x1 + 75 x2 ≤ 500





x1 ≥ 3





x2 ≥ 2 .
x3 ≥ 5





x3 ≤ 10





x4 ≥ 5





x4 ≤ 10

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 :

Candidats Émoluments (en milliers de $)


1 56
2 55
3 54
4 57
5 49
6 51
7 54
8 56
9 52
10 55
11 53
12 50

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

avec ci l’émolument annuel exigé par le candidat i. Donc

min w = 56y1 + 55y2 + 54y3 + 57y4 + 49y5 + 51y6 + 54y7 + 56y8 + 52y9 + 55y10 + 53y11 + 50y12 .

Étape 3 : Les contraintes du problèmes sont :

+ La firme d’exploration minière veut recruter 6 personnes pour combler les postes vacants :

y1 + y2 + y3 + y4 + y5 + y6 + y7 + y8 + y9 + y10 + y11 + y12 = 6.

+ Contrainte de cohésion (1) :


y3 + y8 + y9 ≤ 2.
+ Contrainte de cohésion (2) :

y2 = y11 ⇒ y2 − y11 = 0.

+ Contrainte de cohésion (3) :


(
y7 + y4 ≤ 1
⇒ y4 + y5 + 2y7 ≤ 2.
y7 + y5 ≤ 1

+ Contrainte de qualification (4) :

y1 + y3 + y6 + y10 + y12 ≤ 3.

+ Contrainte de qualification (5) :

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

2.5.8 Problème du constructeur européen

Positionnement du problème

Un constructeur automobile européen a la possibilité de produire des voitures, des ca-


mionnettes et/ou des vélos. Chaque voiture vendue rapporte un profit de 3 000 e, chaque
camionnette un profit de 2 000 e et chaque vélo un profit de 500 e. L’usine est constituée
de 3 ateliers : découpage des tôles, assemblage et finition intérieure. Les coûts fixes jour-
naliers pour l’ensemble de l’usine sont de 24 000 e et l’entreprise fonctionne 8 heures par
jour. Le tableau suivant montre le temps (en minutes) nécessaire dans chaque atelier à la
production de chaque véhicule :

découpe des tôles Assemblage Finition intérieure


Voiture 2 5 7
Camionnette 4 7 2
Vélo 0,5 1 0

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").

Déterminer le programme de production qui assure un profit optimal.

25
Formulation du problème en un PL:

Étape 1 : On distingue 4 inconnues liées au profit :


- x1 = le nombre de voitures vendues ;
- x2 = le nombre de camionnettes vendues ;
- x3 = le nombre de vélos vendus ;
- x4 = le nombre de véhicules transportés par le transporteur indépendant.
Étape 2 : La fonction objectif consiste à maximiser le profit du constructeur :

max z = 3000x1 + 2000x2 + 500x3 − 50x4 − 24000.

Étape 3 : Les contraintes du problèmes sont :

+ 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

+ Obligation de l’entreprise pour la production de camionnette :

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

Les contraintes de Limitation du hangar et de Production excédentaire peuvent se combiner


pour former une seule inéquation (à cause de la ressemblance du premier membre) :

x4 ≤ 50.

Le programme linéaire résultant est :

max z =3000x1 + 2000x2 + 500x3 − 50x4 − 24000




 2x1 + 4x2 + 0, 5x3 ≤ 480
5x1 + 7x2 + x3 ≤ 480





7x1 + 2x2 ≤ 480


.


 x2 ≥ 30
x4 ≤ 50





 x ≥ 0, x ≥ 0, x ≥ 0

1 3 4

27
2.5.9 Problème d’horaire des standardistes
Positionnement du problème

Dans une centrale téléphonique, on compte présentement 50 standardistes au service de


la compagnie. Ces employés ne sont pas assujettis à la politique des heures brisées : ils
travaillent 9 heures d’affilée, sans pauses-café ni pauses-repas. La direction des ressources
humaines dispose d’une banque de noms d’employés désireux de travailler à temps partiel,
auxquels elle fait appel durant la période des fêtes, où se multiplient les appels interurbains
et internationaux, et lors d’absences des standardistes réguliers. Les nouveaux besoins
minimaux en standardistes pour une journée typique ont fait l’objet, par la direction des
ressources humaines, d’une estimation serrée de façon à assurer un service répondant
aux normes rigoureuses de l’entreprise. Le tableau suivant donne les chiffres qui ont été
arrêtés. Le salaire indiqué dans le tableau représente la somme versée pour une journée
de 9 heures aux standardistes dont le quart de travail débute par la période de 3 heures
indiquée. L’entreprise verse une prime de 5 $ aux standardistes qui prennent leur service
à 18 heures ou à 21 heures. Cette prime est portée à 11 $ pour ceux qui commencent à
minuit, à 3 heures ou à 6 heures.
Heures 0−3 3−6 6−9 9 − 12 12 − 15 15 − 18 18 − 21 21 − 24
Besoins 6 4 12 20 20 24 14 14
Salaire (en $) 86 86 86 75 75 75 80 80
Quel est le nombre minimal de standardistes réquis pour assurer le service tout en satis-
faisant les besoins ?

Formulation du problème en un PL:

Étape 1 : Les variables de décision du problème sont :


- y0 = le nombre de standardistes réquis pour la tranche horaire [00 − 03] ;
- y3 = le nombre de standardistes réquis pour la tranche horaire [03 − 06] ;
- y6 = le nombre de standardistes réquis pour la tranche horaire [06 − 09] ;
- y9 = le nombre de standardistes réquis pour la tranche horaire [09 − 12] ;
- y12 = le nombre de standardistes réquis pour la tranche horaire [12 − 15] ;
- y15 = le nombre de standardistes réquis pour la tranche horaire [15 − 18] ;
- y18 = le nombre de standardistes réquis pour la tranche horaire [18 − 21] ;
- y21 = le nombre de standardistes réquis pour la tranche horaire [21 − 00] ;
Étape 2 : La fonction objectif consiste à minimiser le salaire des standardistes :

min w = 86y0 + 86y3 + 86y6 + 75y9 + 75y12 + 75y15 + 80y18 + 80y21 .

Étape 3 : Les contraintes du problèmes sont :


Pour fixer les idées, considérons la période de minuit à 3 h, dont les besoins minimaux en
standardistes sont de 6 personnes. Les standardistes qui assurent le service pendant ces 3 heures
se regroupent en 3 catégories : premièrement, ceux qui terminent leur quart de travail, c’est-à-
dire qui ont commencé à 18 h et quittent à 3 h ; deuxièmement, ceux qui ont entrepris leur quart

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.

F IGURE 2.1 – Horaire des standardistes : représentation schématique.

+ Tranche horaire de 3 à 6 h : y0 + y3 + y21 ≥ 4.


+ Tranche horaire de 6 à 9 h : y0 + y3 + y6 ≥ 12.
+ Tranche horaire de 9 à 12 h : y3 + y6 + y9 ≥ 20.
+ Tranche horaire de 12 à 15 h : y6 + y9 + y12 ≥ 20.
+ Tranche horaire de 15 à 18 h : y9 + y12 + y15 ≥ 24.
+ Tranche horaire de 18 à 21 h : y12 + y15 + y18 ≥ 14.
+ 18 + y21 ≥ 14.
Tranche horaire de 21 à 00 h : y15 + y 
+ Contrainte de positivité : yj ≥ 0, j ∈ 0, 3, 6, 9, 12, 15, 18, 21 .

Le programme linéaire résultant est :

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.

En tant que gestionnaire, proposer un programme rendant optimal, la marge de la produc-


tion de juin.

Formulation du problème en un PL:


Étape 1 : Les variables de décision du problème sont :
• x1 = nombre de tables à fabriquer et à vendre en juin ;
• x2 = nombre de berceaux à fabriquer et à vendre en juin.
Étape 2 : La fonction objectif consiste à maximiser la marge qu’elle retirera de la production de
juin. Dans le modèle, cette marge est exprimé en fonction des variables de décision tout juste
définies. En premier lieu, calculons les contributions unitaires liée à la marge :

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 .

Étape 3 : Les contraintes du problèmes sont :


+ Contraintes de main-d’œuvre : La disponibilité des apprentis limite à 50 et à 30 respec-
tivement le nombre de tables et de berceaux :

x1 ≤ 50,
x2 ≤ 30.

+ Contraintes de fournitures : Le bois et les fournitures disponibles limitent également la


production de juin :

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 :

20000 + 13850 − 4350 − 1600 − 250x1 − 350x2 ≥ 15900,

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 :

Encaisse = 27900 − 250x1 − 350x2 .


Comptes clients = 37000 + Ventes de juin − Sommes encaissées,
= 37000 + (500x1 + 800x2 ) − 13850.

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 :

Stocks = 23500 − (75x1 + 160x2 ) + 26500.

31
L’actif au début de juillet est la somme de ces 3 éléments :

Actif = Encaisse + Comptes clients + Stocks


Actif = 101050 + 175x1 + 290x2 .

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.

Le programme linéaire qui modélise le problème de comptabilité de gestion est :

 max z = 175x1 + 290x2





x1 ≤ 50
x2 ≤ 30





250x1 + 350x2 ≤ 12000 .
175x1 + 290x2 ≥ 3250





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 ?

Formulation du problème en un PL:

Étape 1 : Les variables de décision du problème sont :


• x1 = le nombre de galettes géantes ;
• x2 = le nombre de galettes normales.
Étape 2 : Identification de la fonction objectif. La fonction objectif consiste à maximiser la marge
sur coût de production. Calculons les charges des différentes galettes en utilisant le produit en
croix :
• Coût de production de la galette géante (c1 ) :
40 g 7−→ c1 e 10 × 40 2
⇒ c1 = = = 0, 40 e.
1000 g 7−→ 10 e 1000 5
• Coût de production de la galette normale (c2 ) :
25 g 7−→ c2 e 10 × 25 1
⇒ c2 = = = 0, 25 e.
1000 g 7−→ 10 e 1000 4
Calculons les contributions unitaires liée à la marge :
pour la galette géante : 1, 15 − 0, 40 = 0, 75 (e) ;
pour la galette normale : 0, 90 − 0, 25 = 0, 65 (e).
La fonction objectif est donc
max z = 0, 75x1 + 0, 65x2 .

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.

Le programme linéaire qui modélise le problème de galettes est :

 max z = 0, 75x1 + 0, 65x2




 x1 ≤ 6000
x2 ≤ 5000





40x1 + 25x2 ≤ 230000 .

 1 1
x1 + x2 ≤ 10





 1000 750
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 :

 max z = 100x1 + 200x2





x1 + x2 ≤ 150
4x1 + 2x2 ≤ 440




x1 + 4x2 ≤ 480 .

x1 ≤ 90






x1 ≥ 0, x2 ≥ 0
Un programme est dit sous forme simpliciale si :
— elle est sous forme standard ;
— et les constantes du second membre sont toutes positives.
Le programme doit être mis sous forme simpliciale avant l’utilisation de l’algorithme de sim-
plexe.

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

La forme standard s’écrit donc :

( 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

La forme standard du programme linéaire de l’agriculteur est :

max z = 100x1 + 200x2 (3.1)


x1 + x2 + e1 = 150 (3.2)
4x1 + 2x2 + e2 = 440 (3.3)
x1 + 4x2 + e3 = 480 (3.4)
x1 + e4 = 90 (3.5)
x1 , x2 , e1 , e2 , e3 , e4 ≥ 0 (3.6)

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.

3.3 Revue algébrique de la méthode du simplexe


La question qui se pose : que demande-t-on d’une procédure algébrique ?
En premier lieu, on note que les contraintes du problème (3.2) − (3.5), forment un système de
4 équations et de 6 variables. Or il y a un nombre infini de solutions de ce système d’équations.
Donc une procédure algébrique, pour la résolution d’un programme linéaire doit être capable de
retrouver les solutions des systèmes d’équations où il y a plus de variables que de contraintes.

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

Généralement, si on a un programme linéaire standard constitué de n variables et m contraintes


(n ≥ m) alors une solution de base (extrême) est obtenue, en annulant (n − m) variables et en
résolvant les m contraintes pour déterminer les valeurs des autres m variables.

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.

3.4 La méthode des tableaux


La méthode de simplexe commence par l’identification d’une solution réalisable de base et
ensuite, elle essaye de trouver d’autres solutions réalisables de base jusqu’à atteindre à la solution
optimale. Ainsi, on doit, tout d’abord, retrouver cette solution réalisable de base.

Définition 5 :
On appelle solution de base réalisable une solution de base qui, en plus, vérifie les contraintes
de positivité.

Généralement si le programme linéaire satisfait ces deux propriétés :


+ P1) Parmi les variables du problème standard, il y a m variables qui apparaissent avec un
coefficient non nul dans chaque contraintes (dans notre exemple : e1 , e2 , e3 et e4 ).
+ P2) Les valeurs du second membre des contraintes (les composants du vecteur b) sont
positives.
Alors une solution réalisable de base est obtenue en annulant les (n − m) variables de décision
et la valeur des variables d’écart est directement donnée par le second membre. La deuxième
propriété assure la satisfaction des contraintes de non-négativité des variables d’écart. Dans
notre exemple, la forme standard du programme linéaire vérifie ces deux propriétés.

3.4.1 Tableau de simplexe initial


Après avoir mis le programme linéaire sous une forme qui vérifie les deux propriétés P1 et
P2, l’étape suivante est de tracer le tableau de simplexe initial.
Le modèle général des tableaux de simplexe est :

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

3.4.2 Construction du deuxième tableau et des autres tableaux


(k−1)
Soit a`c l’élément pivot (situé sur la ligne ` et la colonne c) du tableau précédent, le calcul
des éléments du tableau à l’étape k (k = 2, . . . , r) s’effectue en quatre étapes avec r ∈ N :
¬ L’élément pivot: a(k)
`c
On inscrit en lieu et place de l’élément pivot, son inverse :
(k) 1
a`c = (k−1)
.
a`c

· La ligne pivot: a(k)


`j
Les nouveaux éléments de la ligne pivot s’obtiennent en divisant les anciens éléments par
l’élément pivot :
(k−1)
(k) a`j
a`j = (k−1)
, j = 1, 2, . . . , m (j 6= c).
a`c

® La colonne pivot: a(k)


ic
Les nouveaux éléments de la colonne pivot s’obtiennent en divisant les anciens éléments
par l’opposé de l’élément pivot :
(k−1)
(k) −aic
aic = (k−1)
, i = 1, 2, . . . , n (i 6= `).
a`c

¹ Les autres éléments: a(k)


ij
Pour les autres éléments, on applique le principe du rectangle :
(k−1) (k−1)
(k) (k−1) aic × a`j
aij = aij − (k−1)
, i = 1, 2, . . . , n (i 6= `) et j = 1, 2, . . . , m (j 6= c).
a`c

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

donc le tableau courant (k = 2) de notre exemple est :


z(2) -50 50 24 000 TS
e1 3/4 -1/4 30
e2 7/2 -1/2 200
x2 1/4 1/4 120
e4 1 0 90
x1 e3 R

3.4.3 Critère d’arrêt


Lorsque tous les cœfficients de la première ligne du tableau (au niveau des coûts unitaires)
sont positifs, l’optimum est atteint et on arrête de dérouler l’algorithme. Les cœfficients de la
colonne résultats indiquent d’une part la valeur optimale de la fonction économique et d’autre
part le programme de production conduisant à cet optimum.
Pour la construction du troisième tableau et la suite des autres tableaux, on utilise les quatre
étapes précédentes.


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

z(3) 200/3 100/3 26 000


x1 4/3 -1/3 40
e2 -14/3 2/3 60
x2 -1/3 1/3 110
e4 -4/3 1/3 50
e1 e3 R

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

5. Effectuer un pivot et déterminer une nouvelle solution de base réalisable. Retour à


l’étape 2.
(k) (k)
Dans les étapes, les cœfficients aim et aij0 sont obtenus suite à plusieurs pivots.

3.4.4 Résumé de la procédure de la méthode du simplexe


(Dans le cas d’un problème de maximisation sous contraintes ≤ et avec un second membre
positif)

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

3.5.1 Problème de production


a) Forme canonique :

 max z = 900x1 + 1000x2




 11x1 + 9x2 ≤ 9900
7x1 + 12x2 ≤ 8400


.


 6x1 + 16x2 ≤ 9600
x1 ≥ 0, x2 ≥ 0

b) Forme standard :

 max z = 900x1 + 1000x2





11x1 + 9x2 + e1 = 9900
7x1 + 12x2 + e2 = 8400





6x1 + 16x2 + e3 = 9600 .
xj ≥ 0 j = 1, 2





ei ≥ 0 i = 1, 2, 3

La solution de base associée à la forme standard est :


x1 = 0
x2 = 0
e1 = 9900 .
e2 = 8400
e3 = 9600
Toutes les variables sont positives ou nulles donc la solution de base est réalisable.
c) Tableaux du simplexe :


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

La solution est optimale :


z = 20660000/23 ' 898260, 869
x1 = 14400/23 ' 626, 087 .
x2 = 7700/23 ' 334, 783
Nous constatons que les valeurs de la solution optimale sont sous forme fractionnaire (c’est-à-
dire à virgule) ; or ces valeurs doivent être sous forme entière, ce qui nous amène à considérer les
variables de décision comme des variables d’intégrité (xi ∈ N). Nous verrons comment résoudre
de tels problèmes au chapitre 6 avec le logiciel de programmation linéaire LINGO.

3.5.2 Problème de galettes


a) Forme canonique :

 max z = 0, 75x1 + 0, 65x2




 x1 ≤ 6000
x2 ≤ 5000





40x1 + 25x2 ≤ 230000 .

 1 1
x1 + x2 ≤ 10





 1000 750
x1 ≥ 0, x2 ≥ 0

b) Forme standard :

 max z = 0, 75x1 + 0, 65x2





x1 + e1 = 6000
x2 + e2 = 5000





40x1 + 25x2 + e3 = 230000



1 1 .
 x1 + x2 + e4 = 10
1000 750







 xj ≥ 0 j = 1, 2


ei ≥ 0 i = 1, . . . , 4

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

La solution est optimale :


z = 20875/4 = 5218, 75
x1 = 2625 .
x2 = 5000
Il faut produire 2 625 galettes géantes et 5 000 galettes normales pour maximiser la marge sur
coût de production (pour une valeur de 5218,75 e).

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.

4.2 Les variables artificielles

4.2.1 Méthodes des pénalités

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.

• Pour un problème de Maximisation , on construit un objectif z = tcx−


X
M ai .
i
M est une constante positive arbitrairement grande qui tend à réduire la fonction éco-
nomique, tant que les variables artificielles sont dans la base. On dit qu’on pénalise la
fonction objectif, d’où le nom de la méthode.

• Pour un problème de Minimisation , on construit un objectif w = t cy+


X
M ai .
i
M est une constante positive arbitrairement grande qui tend à augmenter la fonction
économique, tant que les variables artificielles sont dans la base. De même, comme dans
le cas de la maximisation, on dit qu’on pénalise la fonction objectif.

51
4.2.2 Problème de Comptabilité de gestion
a) Forme canonique :

 max z = 175x1 + 290x2





x1 ≤ 50
x2 ≤ 30




250x1 + 350x2 ≤ 12000 .

175x1 + 290x2 ≥ 3250






x1 ≥ 0, x2 ≥ 0

b) Forme standard :

 max z = 175x1 + 290x2





x1 + e1 = 50
x2 + e2 = 30





250x1 + 350x2 + e3 = 12000




175x1 + 290x2 − s1 = 3250 ,




 xj ≥ 0 j = 1, 2




 s1 ≥ 0


ei ≥ 0 i = 1, . . . , 3

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

La solution de base associée à la forme standard pénalisée est :


x1 = 0
x2 = 0
e1 = 50
e2 = 30 .
e3 = 12000
s1 = 0
a1 = 3250
Toutes les variables sont positives ou nulles donc les contraintes de positivité sont vérifiées.
Cette solution n’est pas réalisable puisque 175x1 + 290x2 n’est pas supérieur à 3 250 pour x1 =
x2 = 0. Ainsi, il est important de distinguer entre une solution réellement réalisable et une
solution du programme linéaire réécrit pour la procédure du simplexe. Certes, une solution
réalisable du problème réel reste toujours une solution réalisable pour le programme linéaire
transformé, le contraire n’est pas toujours vrai.
On peut conclure que tant que les variables artificielles restent dans la base , la solution demeure
non réalisable réellement pour notre programme.
Une manière pour garantir que ces variables artificielles sortent de la base avant d’atteindre
la solution optimale est de leur associée un grand coût −M dans la fonction objectif. Ainsi, si
ces variables restent dans la base ils vont causer une diminution importante de la valeur de
la fonction objectif. Ce qui nous contraignent à les faire sortir le plutôt possible de la base. La
fonction objectif s’écrit donc :
max z = 175x1 + 290x2 − M a1
avec M un très grand nombre (exemple : M  1010 ).
Donc le programme linéaire devient :

 max z = 175x1 + 290x2 − M a1



 x1 + e1 = 50




 x2 + e2 = 30




 250x1 + 350x2 + e3 = 12000

175x1 + 290x2 − s1 + a1 = 3 250 .
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 .

Et le programme linéaire correspondant est :


max z= 175(1 + M )x1 + 290(1 + M )x2 − M s1 − 3250M



x1 + e1 = 50
x2 + e2 = 30





250x + 350x 2 + e3 = 12000

1



175x1 + 290x2 − s1 + a1 = 3250 .

xj ≥ 0 j = 1, 2








 s 1 ≥ 0, a 1 ≥ 0


ei ≥ 0 i = 1, . . . , 3
En écrivant les variables à gauche et les constantes à droite de l’égalité, on a :
−175(1+M) x1 − 290(1+M) x2 + M s1 + z = −3250M
1 x1 + 0 x2 + 0 s1 + e1 = 50
0 x1 + 1 x2 + 0 s1 + e2 = 30 .
250 x1 + 350 x2 + 0 s1 + e3 = 12000
175 x1 + 290 x2 − 1 s1 + a1 = 3250

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 $).

4.2.3 Problème de sélection de médias


a) Forme canonique :

 max z = 400x1 + 900x2 + 500x3 + 200x4





40x1 + 75x2 + 30x3 + 15x4 ≤ 800
300x1 + 400x2 + 200x3 + 100x4 ≥ 2000





40x1 + 75x2 ≤ 500





x1 ≥ 3





x2 ≥ 2 .
x3 ≥ 5





x3 ≤ 10





x4 ≥ 5





x4 ≤ 10

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.

Le programme linéaire devient :

 max z = 400X1 + 900X2 + 500X3 + 200X4 + 6500




 40X1 + 75X2 + 30X3 + 15X4 ≤ 305
300X1 + 400X2 + 200X3 + 100X4 ≥ −1200





40X1 + 75X2 ≤ 230


.


 X3 ≤ 5
X4 ≤ 5





Xj ≥ 0 j = 1, . . . , 4

Multiplions la seconde contrainte par −1 (car le second membre doit être toujours positif) :

 max z = 400X1 + 900X2 + 500X3 + 200X4 + 6500




 40X1 + 75X2 + 30X3 + 15X4 ≤ 305
−300X1 − 400X2 − 200X3 − 100X4 ≤ 1200





40X1 + 75X2 ≤ 230


.


 X3 ≤ 5
X4 ≤ 5





Xj ≥ 0 j = 1, . . . , 4

Première méthode : On va travailler avec une constante dans la fonction économique


b) Forme standard :

 max z = 400X1 + 900X2 + 500X3 + 200X4 +6500



 40X1 + 75X2 + 30X3 + 15X4 + e1 = 305

−300X1 − 400X2 − 200X3 − 100X4 + e2 = 1200





40X1 + 75X2 + e3 = 230




X3 + e4 = 5 .




 X4 + e5 = 5




 Xj ≥ 0 j = 1, . . . , 4


ei ≥ 0 i = 1, . . . , 5
La solution de base associée à la forme standard est :

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

Deuxième méthode : Effectuons un changement de variables au niveau de la fonction écono-


mique, soit :
Z = z − 6500,
max Z = 400X1 + 900X2 + 500X3 + 200X4

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 :

 max Z = 400X1 + 900X2 + 500X3 + 200X4





40X1 + 75X2 + 30X3 + 15X4 + e1 = 305
−300X1 − 400X2 − 200X3 − 100X4 + e2 = 1200





40X1 + 75X2 + e3 = 230




X3 + e4 = 5 .




 X4 + e5 = 5




 Xj ≥ 0 j = 1, . . . , 4


ei ≥ 0 i = 1, . . . , 5

La solution de base associée à la forme standard est :


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

La solution est optimale :


Z = 4460
X1 = 0
X2 = 16/15 .
X3 = 5
X4 = 5

60
D’où
z = 10960
x1 = 3
x2 = 46/15 .
x3 = 10
x4 = 10

4.2.4 Exemples d’application


- i) Soit le programme suivant à résoudre :

 max z = 40x1 + 10x2





x1 ≥ 300
x2 ≥ 300




x1 + x2 ≥ 1000 .

10x1 + 5x2 ≤ 10500





5x1 + 4x2 ≤ 6600

Première méthode : Effectuons un changement de variables en posant :

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 :

 max z = 40X1 + 10X2 + 15000





X1 + X2 − s1 = 400
10X1 + 5X2 + e1 = 6000




5X1 + 4X2 + e2 = 3900 .

Xj , ej ≥ 0, j = 1, 2





s1 ≥ 0

La solution de base associée à la forme standard est :


X1 = 0
X2 = 0
s1 = −400 .
e1 = 6000
e2 = 3900
Une variable est négative donc la solution de base est non réalisable.

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)

Cas d’une maximisation avec uniquement des équations (égalités)

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.

+ Forme standard pénalisée :


maxz = 4x1 + 3x2 − x3 + 2x4 + 6x5 − M (a1 + a2 + a3 )



3x1 + x3 − x5 + a1 = 3
 −x1 − x2 + 3x4 + a2 = 12



x 2 + x 3 + x 5 + a3 = 4 .
xj ≥ 0 (j = 1, . . . , 5)





ai ≥ 0 (i = 1, . . . , 3)

La solution de base associée à la forme standard pénalisée est :


x1 = 0
x2 = 0
a1 = 3 .
a2 = 12
a3 = 4

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

z(4) 35/9 91/9 386/9


x1 7/3
x4 43/9
x5 4
x2 x3 R

La solution est optimale :


z = 386/9
x1 = 7/3
x2 = 0
.
x3 = 0
x4 = 43/9
x5 = 4

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

4.3 Les problèmes de minimisation


Tout problème de minimisation peut être transformé en un problème équivalent de maximi-
sation. En effet, le problème :
min w = tcy ⇐⇒ max (−w) = t(−c)y.
La raison pour laquelle ces deux formulations sont équivalentes est simple : la solution qui
permet d’obtenir la plus petite valeur de w fournit également la plus grande valeur de (−w). La
seule différence réside dans le signe de la valeur de la fonction objectif. La valeur minimale de
w s’obtient en prenant l’opposé de la valeur maximale de (−w).
Soit la fonction objectif à minimiser :
min w = 3y1 − 2y2 + 5y3 .
La formulation équivalente en terme de maximisation est :
max (−w) = −3y1 + 2y2 − 5y3 .

4.3.1 Problème de médecine


a) Forme canonique :

 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

La solution de base associée à la forme standard est :


y1 = 0
y2 = 0
s1 = −12 .
s2 = −74
s3 = −24
Certaines variables sont négatives donc la solution de base est non réalisable.
+ Forme standard pénalisée :


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

La formulation équivalente nous donne :


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

La solution de base associée à la forme standard pénalisée est :


y1 = 0
y2 = 0
s1 = 0
s2 = 0
.
s3 = 0
a1 = 12
a2 = 74
a3 = 24
Toutes les variables sont positives ou nulles donc les contraintes de positivité sont vérifiées et la
solution de base est réalisable.

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.

4.3.2 Problème d’alimentation


a) Forme canonique :

 min w = 10y1 + 4y2





y1 ≥ 4
y2 ≥ 6





y1 + 2y2 ≥ 20 .
2y1 + y2 ≥ 17





y1 ≥ 0, y2 ≥ 0

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

La solution de base associée à la forme standard est :


y1 = 0
y2 = 0
s1 = −4
.
s2 = −6
s3 = −20
s4 = −17
Certaines variables sont négatives donc la solution de base est non réalisable.
+ Forme standard pénalisée :
min
 w = 10y1 + 4y2 + M (a1 + a2 + a3 + a4 )


 y 1 − s 1 + a1 = 4
y 2 − s 2 + a2 = 6





1 + 2y2 − s3 + a3 = 20
 y

.


 2y1 + y2 − s4 + a4 = 17
yj ≥ 0 j = 1, 2





si , ai ≥ 0 i = 1, . . . , 4

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

La solution est optimale :


−w = −76 ⇔ w = 76
y1 = 4 .
y2 = 9
Il faut 4 kg d’aliments M et 9 kg d’aliments N pour réaliser l’alimentation la moins coûteuse
(76 $).

4.3.3 Exemples d’application


- i) Soit le programme suivant à résoudre :

 min w = 700y1 + 500y2





2 y1 + y2 ≤ 1000
y1 − y2 ≤ 0





−4 y1 + y2 ≤ 0




y1 + y2 ≥ 600




 2 y1 + y2 ≥ 800




 y1 ≥ 0


y2 ≥ 0

72
+ Forme standard :

 min w = 700 y1 + 500 y2





2 y1 + y2 + e1 = 1000
y1 − y2 + e2 = 0





−4 y1 + y2 + e3 = 0





y1 + y2 − s1 = 600
2 y1 + y2 − s2 = 800





yj , s j ≥ 0, j = 1, 2





ei ≥ 0, i = 1, . . . , 3

La solution de base associée à la forme standard est :


y1 = 0
y2 = 0
e1 = 1000
e2 = 0 .
e3 = 0
s1 = −600
s2 = −800
Certaines variables sont négatives donc la solution de base est non réalisable.
+ Forme standard pénalisée :

 min w = 700 y1 + 500 y2 + M a1 + M a2





2 y1 + y2 + e1 = 1000
y1 − y2 + e2 = 0





−4 y1 + y2 + e3 = 0





y1 + y2 − s1 + a1 = 600
2 y1 + y2 − s2 + a2 = 800





yj , sj , aj ≥ 0, j = 1, 2





ei ≥ 0, i = 1, . . . , 3

La solution de base associée à la forme standard pénalisée est :


y1 = 0
y2 = 0
e1 = 1000
e2 = 0
e3 = 0 .
a1 = 600
a2 = 800
s1 = 0
s2 = 0
Toutes les variables sont positives ou nulles donc les contraintes de positivité sont vérifiées et la
solution de base est réalisable.

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)

Cas d’une minimisation avec uniquement des équations (égalités)

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.

+ Forme standard pénalisée :



min w = 3y1 − y2 + y3 + y4 + M (a1 + a2 + a3 )

 −3y1 + 5y2 − 2y3 + y4 + a1 = 1

4y1 − y2 + y4 + a2 = 4




y1 + 2y2 + 8y3 − 4y4 + a3 = 8 .




 yj ≥ 0 (j = 1, . . . , 4)


ai ≥ 0 (i = 1, . . . , 3)
La solution de base associée à la forme standard pénalisée est :
y1 = 0
y2 = 0
a1 = 1 .
a2 = 4
a3 = 8

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

-w(4) 6/7 -499/154


y2 92/77
y1 100/77
y3 83/154
y4 R

La solution est optimale :


−w = −499/154 ⇔ w = 499/154
y1 = 100/77
y2 = 92/77 .
y3 = 83/145
y4 = 0

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ù :

 min w = −2y1 − 11y2 + 3y3 + 28



 4y1 + 2y2 − y3 ≤ 5
8y1 − 7y2 ≥ 10 .

yj ≥ 0 (j = 1, . . . , 3)

+ 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

La solution de base associée à la forme standard est :


y1 = 0
y2 = 0
y3 = 0 .
e1 = 5
s1 = −10
Certaines variables sont négatives donc la solution de base est non réalisable.
+ Forme standard pénalisée :
 min w = −2y1 − 11y2 + 3y3 + M a1 + 28


 4y1 + 2y2 − y3 + e1 = 5
8y1 − 7y2 − s1 + a1 = 10


.


 yj ≥ 0 (j = 1, . . . , 3)
e1 , s1 , a1 ≥ 0

La solution de base associée à la forme standard pénalisée est :

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

y1 -7/8 0 -1/8 4/5 −


y2 y3 s1 R
e1 ←→ y2
-w(3) 51/22 15/22 10/11 -51/2
y2 2/11 0
y1 4/5
e1 y3 s1 R
La solution est optimale :
−w = −51/2 ⇔ w = 51/2
y1 = 4/5
.
y2 = 0
y3 = 0
Or y4 = 7 − y1 − 4y2 ⇒ y4 = 23/4.
(
ème a ≥ b
2 méthode : À partir de l’équivalence a = b ⇔ ,
a ≤ b
on a la forme canonique suivante :

 min w = 2y1 + 5y2 + 3y3 + 4y4



 4y1 + 2y2 − y3 ≤ 5




 y1 + 4y2 + y4 ≥ 7
y1 + 4y2 + y4 ≤ 7 .




 8y1 − 7y2 ≥ 10


yj ≥ 0 (j = 1, . . . , 4)

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

La solution de base associée à la forme standard est :


y1 = 0
y2 = 0
y3 = 0
y4 = 0
.
e1 = 5
s1 = −7
e2 = 7
s2 = −10
Certaines variables sont négatives donc la solution de base est non réalisable.
+ Forme standard pénalisée :

 min w = 2y1 + 5y2 + 3y3 + 4y4 + M (a1 + a2 )




 4y1 + 2y2 − y3 + e1 = 5
 y1 + 4y2 + y4 − s1 + a1 = 7




y + 4y + y + e = 7


1 2 4 2
.


 8y1 − 7y2 − s2 + a2 = 10
yj ≥ 0 j = 1, . . . , 4





ei , si , ai ≥ 0 i = 1, 2

La solution de base associée à la forme standard pénalisée est :


y1 = 0
y2 = 0
y3 = 0
y4 = 0
e1 = 5
.
s1 = 0
a1 = 7
e2 = 7
s2 = 0
a2 = 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.

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

a2 quitte la base, y3 entre dans la base


-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

a1 quitte la base, y2 entre dans la base


-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

4.4 Les problèmes irréguliers


Après avoir examiner comment on peut résoudre un programme linéaire par la méthode de
simplexe, on s’intéresse dans cette section aux problèmes irréguliers, qu’on peut rencontrer lors
de la résolution d’un programme linéaire par la méthode de simplexe. Donc, l’objet de cette
section est de reconnaître ces problèmes et de les résoudre par la méthode de simplexe.

4.4.1 Les problèmes impossibles


Avec la méthode de simplexe, on reconnaît que le problème est impossible si une ou plusieurs
variables artificielles sont présentes dans la base dans le tableau de simplexe optimal, ce qui
signifie que la solution donnée par ce tableau n’est pas réellement réalisable.
Exemple : Vérifions à l’aide de la méthode de simplexe, que le problème suivant est réellement
impossible :

 max z = 4x1 + 3x2



 x1 + x2 ≤ 2

3x 1 + x2 ≥ 10 .
xj ≥ 0, j = 1, 2

La forme standard pénalisée nous donne :

 max z = 4x1 + 3x2 − M a1




 x1 + x2 + e1 = 2
3x1 + x2 − s1 + a1 = 10


.


 xj ≥ 0, j = 1, 2
a1 , e1 , s1 ≥ 0


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.

4.4.2 Les problèmes à solutions multiples


Lorsqu’on utilise la méthode de simplexe, on identifie ce problème lorsqu’un des effets nets
(relatif à une variable hors base) est nul.
Exemple : Vérifions à l’aide de la méthode de simplexe, que le problème suivant est à solutions
multiples :

 max z = 2x1 + x2

 2x1 + x2 ≤ 8
x1 + x2 ≥ 5 .

xj ≥ 0, j = 1, 2

La forme standard pénalisée nous donne :

 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

4.4.3 Les problèmes à solution infinie


On reconnaît ce problème lorsque la variable entrante n’admet aucune limite sur sa valeur
d’entrée, c’est à dire que tous les ratios sont négatifs ou nuls.
Exemple : Vérifions à l’aide de la méthode de simplexe, que le problème suivant est à solution
infinie :

 max z = x1 + 2x2

 x1 + x 2 ≥ 2
x2 ≤ 3 .

xj ≥ 0, j = 1, 2

La forme standard pénalisée nous donne :


 max z = x1 + 2x2 − M a1


 x 1 + x 2 − s 1 + a1 = 2
x2 + e1 = 3


.


 xj ≥ 0, j = 1, 2
e1 , a1 , s1 ≥ 0

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.

4.4.4 Les problèmes à solution dégénérée


Un programme linéaire est dit dégénérée si une ou plusieurs variables structurelles dans la
base optimale sont nulles.
Exemple : Vérifions à l’aide de la méthode de simplexe, que le problème suivant est à solution
dégénérée :
3
max z = 2x1 + x3
 2


 x1 − x2 ≤ 2
2x1 + x3 ≤ 4


.


 x1 + x2 + x3 ≤ 3
xj ≥ 0, j = 1, . . . , 3

La forme standard nous donne :


3
max z = 2x1 + x3
 2


 x1 − x2 + e1 = 2
2x1 + x3 + e2 = 4


.


 x1 + x2 + x3 + e3 = 3
xj , ej ≥ 0, j = 1, . . . , 3

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

La solution est optimale :


z = 5
x1 = 1
.
x2 = 0
x3 = 2

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 :

max z = 2x1 − 7x2


 x1 − 2x2 ≤ 9


 x1 − 3x2 ≤ 6



x1 ≤ 5 .




 x1 ≥ 0


x2 ∈ R
− −
Pour la résolution, posons x2 = x+ +
2 − x2 avec x2 ≥ 0 et x2 ≥ 0. Le programme linéaire précédent
devient :

max z = 2x1 − 7x+ 2 + 7x2
+ −


 x1 − 2x2 + 2x2 ≤ 9

x1 − 3x+




 2 + 3x2 ≤ 6
x1 ≤ 5 .




 x1 ≥ 0
x2 , x−
+


2 ≥ 0
La forme standard nous donne :

max z = 2x1 − 7x+2 + 7x2


+

 x1 − 2x2 + 2x2 + e1 = 9


x1 − 3x+
2 + 3x2 + e2 = 6





x1 + e3 = 5


.

 x1 ≥ 0


x+
2 , x2 ≥ 0





ei ≥ 0, i = 1, . . . , 3


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

La solution est optimale :


z = 14
x1 = 0
.
x+
2 = 0
x−
2 = 2

En faisant x2 = x+
2 − x2 , la solution finale est :

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.

Définition 7 : (Coût marginal)


Par définition, on appelle coût marginal d’un bien l’augmentation minimale de dépenses, par
rapport à la solution optimale, qui résulterait de l’utilisation d’une unité supplémentaire de ce
bien, lorsque le problème posé consiste à produire des biens au moindre coût. Si le problème
posé consiste à transformer des biens pour vendre une production avec un meilleur profit et
l’augmentation maximale de revenu qui résulte de la possibilité de disposer d’une unité sup-
plémentaire de l’un des biens, est la valeur marginale de ce bien. Très souvent, on emploie
également dans ce cas le qualificatif coût marginal.

Définition 8 : (Prix caché)


Le prix caché, aussi appelé « coût dual » ou « shadow price », mesure l’augmentation de la
fonction objectif si l’on accroît d’une unité la disponibilité de chacune des contraintes. De ce fait
l’analyse post-optimale s’intéressera à un résultat de prix caché par contrainte. Ce prix repré-
sente l’utilité marginale de l’assouplissement de la contrainte. Par exemple, dans une application
d’entreprise, le prix caché peut être interprété comme le prix maximum que le gestionnaire est
prêt à payer pour une unité supplémentaire d’une ressource limité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 :

z(3) 200/3 100/3 26 000


x1 4/3 -1/3 40
e2 -14/3 2/3 60
x2 -1/3 1/3 110
e4 -4/3 1/3 50
e1 e3 R
• Le coût marginal lié à e1 est 200/3 :
Une augmentation de e1 d’une unité entraîne une diminution de 200/3 de la valeur de la
fonction économique.
• Le coût marginal lié à e2 est 0 et à l’optimum e2 = 0 :
On a déjà 60 m3 d’eau de plus donc si on ajoute 1 m3 ca ne va pas changer la solution
optimale ni la valeur de la fonction économique.
Le système de contraintes dans le programme linéaire relatif au tableau de simplexe optimal du
problème de l’agriculteur est :

max z = 100x1 + 200x2


4 1

 x1 + e1 − e3 = 40
3 3








14 2


e − e1 + e3 =


60
 2

3 3


(S1 ) .
1 1


x2 − e1 + e3


 = 110
3 3









 4 1
e4 − e1 + e3 = 50



3 3
Si on exprime z en fonction de e1 et e3 (variables hors base) en utilisant le système d’équation ci
dessus on a :
4 1 1 1
   
z = 100 40 − e1 + e3 + 200 110 + e1 − e3
3 3 3 3
200 100
z = 26000 − e1 − e3 . (5.1)
3 3
La valeur 26 000 correspond à la valeur optimale de la fonction économique.
Si e1 = 1 alors un hectare de terrain de moins à utiliser, donc une réduction de 200/3 $ de la
valeur de la fonction objectif (z = 25933, 33). Le programme linéaire serait :

92
 max z = 100x1 + 200x2



x1 + x2 ≤ 149
4x1 + 2x2 ≤ 440





x1 + 4x2 ≤ 480 .
x1 ≤ 90





x1 ≥ 0, x2 ≥ 0

En utilisant (S1 ) et 5.1, on a la solution optimale suivante :


z = 77800/3 ' 25933, 33
x1 = 116/3 ' 38, 67
x2 = 331/3 ' 110, 33
e1 = 0 .
e2 = 194/3 ' 64, 67
e3 = 0
e4 = 154/3 ' 51, 33
Si on ajoute 3 hectares de terrains (e1 = −3), avec l’hypothèse que les autres quantités restent
inchangées alors le revenu augmente de (200/3) × 3 = 200 $. On vérifie ceci, si on résout le
programme linéaire :

 max z = 100x1 + 200x2





x1 + x2 ≤ 153
4x1 + 2x2 ≤ 440





x1 + 4x2 ≤ 480 .
x1 ≤ 90





x1 ≥ 0, x2 ≥ 0

En utilisant (S1 ) et 5.1, on a la solution optimale suivante :


z = 26200
x1 = 44
x2 = 109
e1 = 0 .
e2 = 46
e3 = 0
e4 = 46
Les valeurs marginales apportent donc des renseignements économiques particulièrement inté-
ressantes, mais il faut les utiliser avec prudence car leur domaine de validité est limité.
Par exemple, si on ajoute 30 hectares de terrains aux 150 déjà disponibles dans le problème de
l’agriculteur, le revenu augmentera de (200/3) × 30 = 2000 $. Ceci n’est pas vrai, parce que si on
résout le programme linéaire suivant :

 max z = 100x1 + 200x2





x1 + x2 ≤ 180
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

Étant donné un PL du type,


n
X
max(z) = cj x j
j=1
 n  
X
aij xj ≤ bi , i ∈ 1, . . . , m





j=1
  (5.2)


xj ≥ 0, pour j ∈ 1, . . . , n .


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 .


On voit aisément que les contraintes,


m
X  
aij yi ≥ cj , j ∈ 1, . . . , n
i=1

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.

Pour passer du primal au dual, on remarque que :


a) Les termes du second membre deviennent les cœfficients de la fonction objectif et récipro-
quement.
b) Le problème de maximisation devient un problème de minimisation.
c) Les inégalités ” ≤ ” deviennent des inégalités ” ≥ ”.
d) La matrice A se transforme en sa transposée.

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 :

 min w = 150y1 + 440y2 + 480y3 + 90y4



 y1 + 4y2 + y3 + y4 ≥ 100
y1 + 2y2 + 4y3 ≥ 200 .


yj ≥ 0 j = 1, . . . , 4
La forme standard pénalisée nous donne :
min w = 150y1 + 440y2 + 480y3 + 90y4 + M (a1 + a2 )


 y1 + 4y2 + y3 + y4 − s1 + a1 = 100
y + 2y + 4y − s + a = 200


1 2 3 2 2
.


 yj ≥ 0 j = 1, . . . , 4
ai , si ≥ 0 i = 1, 2

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

-w(4) 60 50 40 110 -26000


y1 14/3 200/3
y3 100/3
y2 y4 s1 s2 R

La solution est optimale :


w = 26 000
y1 = 200/3
y2 = 0 .
y3 = 100/3
y4 = 0

Relation entre Primal et Dual à l’optimum:


+ les fonctions économiques z et w des deux programmes ont la même valeur optimale ;
+ la valeur marginale d’une variable dans le programme Primal est égale à la valeur optimale
de la variable associée dans le programme Dual et réciproquement.
Forme canonique : Primale

min w = 150 y1 + 440 y2 + 480 y3 + 90 y4


1 y1 + 4 y2 + 0 y3 + 1 y4 ≥ 100 ← ×x1
1 y1 + 2 y2 + 4 y3 + 0 y4 ≥ 200 ← ×x2

Forme canonique : Duale

max z = 100 x1 + 200 x2


1 x1 + 1 x2 ≤ 150
4 x1 + 2 x2 ≤ 440
0 x1 + 4 x2 ≤ 480
1 x1 + 0 x2 ≤ 90

97
Forme standard : Primale

min w = 150 y1 + 440 y2 + 480 y3 + 90 y4


1 y1 + 4 y2 + 0 y3 + 1 y4 − s1 = 100
1 y1 + 2 y2 + 4 y3 + 0 y4 − s2 = 200

Forme standard : Duale À l’op-

max z = 100 x1 + 200 x2


1 x1 + 1 x2 + e1 = 150
4 x1 + 2 x2 + e2 = 440
0 x1 + 4 x2 + e3 = 480
1 x1 + 0 x2 + e4 = 90
timum :
+ 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.
Donc, on a la correspondance suivante :
Primal Dual
y1 ←→ e1
y2 ←→ e2
y3 ←→ e3
y4 ←→ e4
s1 ←→ x1
s2 ←→ x2
En prenant le dernier tableau du Primal (minimisation), on peut avoir la solution du problème
de l’agriculture (maximisation) :
Tableau de correspondance : Primal
y1 y2 y3 y4 s1 s2
Valeurs Optimales (VO) 200/3 0 100/3 0 0 0
Valeurs Marginales (VM) 0 60 0 50 40 110
Tableau de correspondance : Dual
e1 e2 e3 e4 x1 x2
Valeurs Marginales (VM) 200/3 0 100/3 0 0 0
Valeurs Optimales (VO) 0 60 0 50 40 110
On pouvait partir du dernier tableau du problème de l’agriculture (Primal) page 44 pour
aboutir à la solution du problème du client (Dual) :
z(3) 200/3 100/3 26 000
x1 4/3 40
e2 60
x2 110
e4 50
e1 e3 R

98
En effectuant la correspondance suivante :
Primal Dual
x1 ←→ s1
x2 ←→ s2
e1 ←→ y1
e2 ←→ y2
e3 ←→ y3
e4 ←→ y4

Tableau de correspondance : Primal


x1 x2 e1 e2 e3 e4
VO 40 110 0 60 0 50
VM 0 0 200/3 0 100/3 0

Tableau de correspondance : Dual


s1 s2 y1 y2 y3 y4
VM 40 110 0 60 0 50
VO 0 0 200/3 0 100/3 0

Proposition

Le dual du programme dual est le programme primal.

5.3.3 Tableau de correspondance Primal-Dual (à connaître par cœur)


Maximisation Minimisation
• Matrice des contraintes (m, n) • Transposée de la matrice des
contraintes (m, n)
• Second membre des contraintes • Cœfficient de la fonction objectif
• Cœfficient de la fonction objectif • Second membre des contraintes
Nombre de contraintes : Nombre de variables structurelles :
a) la contrainte n◦ i est du type ” ≤ ” a) la variable n◦ i sera de type ” ≥ 0”
b) la contrainte n◦ i est du type ” ≥ ” b) la variable n◦ i sera de type ” ≤ 0”
c) la contrainte n◦ i est du de type ” = ” c) la variable n◦ i sera de type ” ∈ R”
Nombre de variables structurelles : Nombre de contraintes :
1) la variable n◦ j est de type ” ≥ 0” 1) la contrainte n◦ j sera de type ” ≥ ”
2) la variable n◦ j est de type ” ≤ 0” 2) la contrainte n◦ j sera de type ” ≤ ”
3) la variable n◦ j est de type ” ∈ R” 3) la contrainte n◦ j sera de type ” = ”

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

5.4 Exemples d’application

5.4.1 Problème de médecine


a) Problème Primal :
+ Forme canonique
 min w = y1 + y2


 2y1 + y2 ≥ 12
5y1 + 8y2 ≥ 74


.
 y1

 + 6y2 ≥ 24
 y ≥ 0,

y2 ≥ 0
1

+ 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

Tableau de correspondance : Primal


s1 s2 s3 y1 y2
VM 3/11 1/11 0 0 0
VO 0 0 26 2 8

La solution optimale est :


w = z = 10
y1 = 2 .
y2 = 8
On remarque une similitude avec la solution de la page 69 du problème de médecine original,
-w(5) 1/11 3/11 -10
y1 2
s3 2 26
y2 8
s2 s1 R

5.4.2 Problème d’alimentation


a) Problème Primal :
+ Forme canonique

 min w = 10y1 + 4y2





y1 ≥ 4
y2 ≥ 6




y1 + 2y2 ≥ 20 .

2y1 + y2 ≥ 17






y1 ≥ 0, y2 ≥ 0

+ 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

Tableau de correspondance : Dual


x1 x2 x3 x4 e1 e2
VO 2 0 0 4 0 0
VM 0 3 2 0 4 9

Tableau de correspondance : Primal


s1 s2 s3 s4 y1 y2
VM 2 0 0 4 0 0
VO 0 3 2 0 4 9

La solution optimale est :


w = z = 76
y1 = 4 .
y2 = 9
On remarque une similitude avec la solution de la page 72 du problème d’alimentation,
-w(6) 2 4 -76
y1 4
y2 9
s2 3
s3 3 2
s1 s4 R

5.5 Analyse de sensibilité


La solution optimale d’un programme linéaire est conditionnée par les données initiales (cœf-
ficients techniques, ressources disponibles, coefficients économiques, . . . ). Or, ces données, très
souvent, sont imprécises, aléatoires, variables dans le temps. C’est pourquoi il est souhaitable
de mesurer la sensibilité de la solution optimale proposée par rapport aux variations d’un ou de
plusieurs cœfficients originels. Présentement, l’étude de sensibilité aborde trois cas :
- le cas de variation de cœfficients de la fonction économique,
- le cas de variation des seconds membres des contraintes,
- le cas de variation de cœfficients de la matrice technique.

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 = 100x1 + 200x2





x1 + x2 ≤ 150
4x1 + 2x2 ≤ 440




x1 + 4x2 ≤ 480 .




 x1 ≤ 90


x1 ≥ 0, x2 ≥ 0

5.5.1 Analyse de sensibilité sur les cj


Les cœfficients de la fonction économique dépendent très souvent d’éléments difficiles à ap-
préhender. Mais il ne faut pas en déduire pour autant que la solution optimale qui en découle
est irrémédiablement faussée.
En effet, il existe, dans l’évaluation de ces cœfficients, une possibilité d’erreur ou d’incertitude
telle que la solution optimale n’est pas, remise en cause. Plus cette possibilité est importante, et
plus la solution optimale est sure, fiable, stable. Elle peut être appliquée sans risque. Dans le cas
inverse, la solution optimale est instable et de ce fait, il sera peut-être nécessaire, avant d’agir,
de réaliser une étude plus approfondie des cœfficients douteux de la fonction économique. En
tout cas, la solution optimale ne devra être appliquée qu’avec de grandes précautions.
Le problème à résoudre est donc le suivant :
Dans quel intervalle les cœfficients de la fonction économique peuvent-ils varier sans que soit
remise en cause la structure de la solution optimale ?
On cherche à déterminer un intervalle dans lequel peut varier cj sans que la solution optimale
ne change.
a) Considérons une variation du coefficient c1 de 100 à 100 + ∆1 :

 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 :

 max z = (100 + ∆1 )x1 + 200x2




 x1 + x2 + e1 = 150
4x1 + 2x2 + e2 = 440





x1 + 4x2 + e3 = 480


.


 x1 + e4 = 90
xj ≥ 0, j = 1, 2





ei ≥ 0, i = 1, . . . , 4

z(1) −100 − ∆1 -200 0 TS


e1 1 1 150
e2 4 2 440
e3 1 4 480
e4 1 0 90
x1 x2 R

Pour stabiliser la solution optimale, on doit effectuer ces échanges :

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 :

 max z = 100x1 + (200 + ∆2 )x2




 x1 + x2 + e1 = 150
4x1 + 2x2 + e2 = 440





x1 + 4x2 + e3 = 480


.


 x1 + e4 = 90
xj ≥ 0, j = 1, 2





ei ≥ 0, i = 1, . . . , 4

Pour stabiliser la solution optimale, on doit effectuer ces échanges :

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

La solution donnée par le tableau reste optimale si


1


 (200 − ∆2 ) ≥ 0
3



⇔ −100 < ∆2 ≤ 200.
1




 (100 + ∆2 ) > 0
3
Or c2 = 200+∆2 , donc la solution optimale est stable et prend la même valeur (x1 , x2 ) = (40, 110)
tant que
100 < c2 ≤ 400.

5.5.2 Analyse de sensibilité sur les bi

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.

Certes l’analyse des cœfficients de la fonction économique à l’optimum permet de répondre


à ces préoccupations. Ainsi dans le cas du problème d’agriculture un hectare supplémentaire de
terrain permettrait d’accroître sa marge 200/3 $ (valeur du coût marginal d’opportunité de cette
ressource). D’où l’intérêt d’acquérir 1 ha supplémentaire de terrain. Mais en quelle proportion ?
Car si dans l’immédiat, l’acquisition de terrain est la ressource rare qui limite la production, le
fait d’en acquérir un hectare supplémentaire risque de modifier la situation. Cette ressource peut
devenir pléthorique auquel cas son intérêt économique (son coût marginal) devient nul alors que
dans le même temps une autre ressource devient rare.

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, +∞ .

 max z = 100x1 + 200x2



 x1 + x2 ≤ 150 + λ1

4x1 + 2x2 ≤ 440




x1 + 4x2 ≤ 480 .




 x1 ≤ 90


x1 ≥ 0, x2 ≥ 0

Forme standard :

 max z = 100x1 + 200x2




 x1 + x2 + e1 = 150 + λ1
4x1 + 2x2 + e2 = 440





x1 + 4x2 + e3 = 480


.


 x1 + e 4 = 90
xj ≥ 0, j = 1, 2





ei ≥ 0, i = 1, . . . , 4

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

La base reste optimale tant que :


4


 40 + λ1 ≥ 0 
λ1 ≥ −30
3

 

 


 


 

14 90

 

60 −
 

 λ1 > 0 
 λ1 <
3 7
 
90

 

⇔ ⇔ −30 ≤ λ1 < .

1 7



 110 − λ1 ≥ 0



 λ1 ≤ 330
3

 


 

 
75

 

 

 4 
 λ1 <
50 − λ1 > 0 2



3

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, +∞ .

 max z = 100x1 + 200x2





x1 + x2 ≤ 150
4x1 + 2x2 ≤ 440 + λ2




x1 + 4x2 ≤ 480 .

x1 ≤ 90






x1 ≥ 0, x2 ≥ 0

Forme standard :

 max z = 100x1 + 200x2




 x1 + x2 + e1 = 150
4x1 + 2x2 + e2 = 440 + λ2





x1 + 4x2 + e3 = 480


.


 x1 + e4 = 90
xj ≥ 0, j = 1, 2





ei ≥ 0, i = 1, . . . , 4

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

La base reste optimale tant que :

60 + λ2 > 0 ⇔ λ2 > −60.

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, +∞ .

 max z = 100x1 + 200x2





x1 + x2 ≤ 150
4x1 + 2x2 ≤ 440




x1 + 4x2 ≤ 480 + λ3 .

x1 ≤ 90






x1 ≥ 0, x2 ≥ 0

Forme standard :

 max z = 100x1 + 200x2




 x1 + x2 + e1 = 150
4x1 + 2x2 + e2 = 440





x1 + 4x2 + e3 = 480 + λ3


.


 x1 + e4 = 90
xj ≥ 0, j = 1, 2





ei ≥ 0, i = 1, . . . , 4

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

La base reste optimale tant que :


1


 40 − λ3 ≥ 0
3

 
λ3 ≤ 120



 


 

2

 

 

 60 + λ3 > 0 

λ3 > −90
3

 

 
⇔ ⇔ −90 < λ3 ≤ 120.
1




 110 + λ3 ≥ 0



 λ3 ≥ −330
3

 


 


 




 1

λ3 > −150


 50 + λ3 > 0
3

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, +∞ .

 max z = 100x1 + 200x2





x1 + x2 ≤ 150
4x1 + 2x2 ≤ 440





x1 + 4x2 ≤ 480 .
x1 ≤ 90 + λ4





x1 ≥ 0, x2 ≥ 0

Forme standard :

 max z = 100x1 + 200x2




 x1 + x2 + e1 = 150
4x1 + 2x2 + e2 = 440





x1 + 4x2 + e3 = 480


.


 x1 + e4 = 90 + λ4
xj ≥ 0, j = 1, 2





ei ≥ 0, i = 1, . . . , 4

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

La base du prix caché reste stable tant que :

50 + λ4 > 0 ⇔ λ4 > −50 .

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

5.5.4 Analyse de sensibilité sur les cœfficients aij


Supposons que dans le problème de l’agriculteur, le nombre d’unités de la ième ressources
nécessaire pour produire une unité de produit j, soit (aij + δij ) ou lieu de aij . Ainsi, on se pose la
question si la solution optimale demeure stable suite à un tel changement.
i) xj est une variable de base et la ième ressource est totalement utilisée.
Par exemple :

 max z = 100x1 + 200x2



 x1 + x2 ≤ 150




 4x1 + 2x2 ≤ 440
x1 + (4 + δ32 )x2 ≤ 480 .




 x1 ≤ 90


x1 ≥ 0, x2 ≥ 0

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

À l’optimum, la base est inchangée donc

x∗1 + (4 + δ32 )x∗2 + e∗3 = 480,


e∗3 = 0, x∗1 ≥ 0, x∗2 ≥ 0.

• 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 :

 max z = 100x1 + 200x2



 x1 + x2 ≤ 150

(4 + δ21 )4x1 + 2x2 ≤ 440




x1 + 4x2 ≤ 480 .




 x1 ≤ 90


x1 ≥ 0, x2 ≥ 0

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

À l’optimum, la base est inchangée donc

(4 + δ21 )x∗1 + 2x∗2 + e2 = 440,


e2 = 60, x∗1 ≥ 0, x∗2 ≥ 0.

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

iii) Si xj est une variable hors base (xj = 0).


Ceci implique qu’on ne va pas produire le produit j
• Si δij ≥ 0, alors il est encore moins économique de fabriquer ce produit si le coefficient
technologique aij augmenterait de δij .
• Si δij < 0, alors la fabrication du produit j peut devenir économique si on utilise moins
de ressources.

5.6 Introduction d’une nouvelle activité


On sait déjà que la valeur optimale de la variable duale représente les coûts marginaux (d’op-
portunité) associés à l’utilisation de ressources limitées. On peut également utiliser ces coûts
marginaux pour évaluer des décision concernant l’introduction de nouveaux produits ou de nou-
veaux procédés de fabrication.

5.6.1 Introduction d’une nouvelle variable de décision


L’agriculteur prévoit de produire des pommes de terre. Un hectare de pomme de terre de-
mande 3 m3 d’eau et 2 heures de travail pour un revenu de c3 $.
La question est pour qu’elle valeur de c3 , l’agriculteur a-t-il intérêt à introduire cette nouvelle
production ?
Sans résoudre le nouveau programme linéaire suivant :

max z = 100x1 + 200x2 + c3 x3





x1 + x2 + x3 ≤ 150
4x1 + 2x2 + 3x3 ≤ 440





x1 + 4x2 + 2x3 ≤ 480 .
x1 ≤ 90





x1 ≥ 0, x2 ≥ 0, x3 ≥ 0

On peut déterminer si l’agriculteur a un intérêt à introduire la production ou pas. En d’autres


termes, s’il n’a pas intérêt à le faire, la solution optimale du programme linéaire ci-dessus donne
x3 = 0. Donc le dernier tableau du simplexe est donné par :

119
z(3) 200/3 100/3 θ 26 000
x1 40
e2 60
x2 110
e4 50
e1 e3 x3 R

Tableau de correspondance : Primal


x1 x2 x3 e1 e2 e3 e4
VO 40 110 0 0 60 0 50
VM 0 0 θ 200/3 0 100/3 0

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

Tableau de correspondance : Dual


s1 s2 s3 y1 y2 y3 y4
VM 40 110 0 0 60 0 50
V0 0 0 θ 200/3 0 100/3 0

La solution optimale est donnée par :


w = z = 26000
y1 = y1∗ = 200/3
y2 = y2∗ = 0 .
y3 = y3∗ = 100/3
y4 = y4∗ = 0
On peut conclure que :

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.

5.6.2 Introduction d’une nouvelle contrainte


Si la solution optimale satisfait la nouvelle contrainte, le problème admettra la même solution.
Sinon l’introduction de cette contrainte va engendrer une nouvelle solution optimale.

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.

F IGURE 6.1 – Un aperçu de LINGO

125
F IGURE 6.2 – Un aperçu de la LICENCE

6.2 Résolution d’un exemple


Dans cette section, et sur la base de l’exemple de l’agriculteur, on va focaliser notre atten-
tion sur les opérations suivantes : introduire les données, résoudre le problème, et analyser les
résultats que donne LINGO.

6.2.1 Le problème de l’agriculteur


Le programme linéaire qui modélise le problème de l’agriculteur est :

 max z = 100x1 + 200x2



 x1 + x2 ≤ 150




 4x1 + 2x2 ≤ 440
x1 + 4x2 ≤ 480 .




 x1 ≤ 90


x1 ≥ 0, x2 ≥ 0
La forme standard du programme linéaire de l’agriculteur est :

max z = 100x1 + 200x2


x1 + x2 + e1 = 150
4x1 + 2x2 + e2 = 440
x1 + 4x2 + e3 = 480
x1 + e4 = 90
x1 , x2 , e1 , e2 , e3 , e4 ≥ 0

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.

6.2.3 Résolution du problème


Après avoir écrit convenablement le programme linéaire, on passe maintenant à la résolution.
Pour résoudre notre programme il faut cliquer sur le bouton "Solve"

6.2.4 Interprétation des résultats


S’il n’y a pas d’erreur de formulation, Lingo va commencer à résoudre le problème. Avant que
Lingo nous propose un premier rapport sur la solution optimale, il nous donne l’état du problème
exprimé par cette fenêtre :

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

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
Dans le tableau ci-dessus s’affichent dans la première colonne les différentes variables de
décision et aussi les variables d’écart relatives à chaque contrainte du programme. Leurs valeurs
sont données dans la deuxième colonne. On vérifie bien que la solution optimale coïncide avec
la solution déjà retrouvée dans les précédents chapitres. La troisième colonne représente les

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

6.3 Utilisation des ensembles dans LINGO (SETS)


LINGO vous permet de regrouper de nombreuses instances de la même variable en ensembles.
Par exemple, si un modèle impliquait 27 camions de livraison, ces 27 camions pourraient être dé-
crits plus simplement comme un ensemble unique. Les ensembles peuvent également inclure des
attributs pour chaque membre, tels que la capacité de transport de chaque camion de livraison.
Les ensembles peuvent être primitifs ou dérivés. Un ensemble primitif est un ensemble qui
contient des membres distincts. Un ensemble dérivé, cependant, contient d’autres ensembles en
tant que membres.
Pour utiliser des ensembles dans un modèle, la section spéciale appelée section SETS doit être
définie avant que l’un des membres de l’ensemble ne soit utilisé dans les contraintes du modèle.
Cette section commence par la balise SETS : et se termine par la balise ENDSETS.
Un ensemble primitif pourrait être défini comme suit :

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

6.4 La section des données LINGO (DATA)


LINGO fournit une section distincte appelée section DATA dans laquelle des valeurs peuvent
être définies pour différentes variables. Les membres de l’ensemble peuvent être initialisés dans
cette section, les attributs des ensembles peuvent être définis ou les paramètres des variables
scalaires peuvent également se voir attribuer des valeurs.
La section DATA est définie après que la section SETS est définie dans le modèle. La section
commence par la balise DATA : et se termine par la balise ENDDATA. Les instructions de la section
DATA suivent la syntaxe :

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

6.5 Types de variables dans LINGO


Toutes les variables d’un modèle LINGO sont considérées comme non négatives et continues,
sauf indication contraire. Les quatre fonctions de domaine de variables de LINGO peuvent être
utilisées pour remplacer le domaine par défaut pour des variables données. Ces fonctions de
domaine variable sont :
• @GIN − toute valeur entière positive
• @BIN − une valeur binaire (c’est-à-dire 0 ou 1)
• @FREE − toute valeur réelle positive ou négative
• @BND − toute valeur dans les limites spécifiées
Une syntaxe similaire est utilisée pour les fonctions de domaine variable @GIN, @BIN et @FREE.
La forme générale de la déclaration d’une variable x à l’aide de l’une de ces fonctions est
@FUNCTION(X) ;
La fonction @BND a une syntaxe légèrement modifiée, qui inclut les limites supérieure et in-
férieure des valeurs de variables acceptables. La forme générale de la déclaration d’une variable
X entre une borne inférieure et une borne supérieure est donnée par
@BND(borne_inférieure, X, borne_supérieure) ;

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

• #EQ# : VRAI si les deux arguments sont égaux, 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

• #NOT# : VRAI si l’argument immédiatement à droite est FAUX, sinon FAUX

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.

6.8 Messages d’erreur LINGO courants


LINGO fournit une variété de messages d’erreur utiles pour déboguer un modèle en dévelop-
pement. Les erreurs les plus courantes sont les suivantes :
• + 007: Unable to open file : filename (Impossible d’ouvrir le fichier : nom du fichier)
- Retapez le nom de fichier correctement
• + 011: Invalid input : A syntax error has occurred (Entrée non valide : une erreur de
syntaxe s’est produite)
- Vérifiez la ligne suggérée par LINGO pour les points-virgules manquants, etc
• + 012: Unmatched parenthesis (Parenthèse sans correspondance)
- Fermez l’ensemble des parenthèses
• + 015: No relational operator found (Aucun opérateur relationnel trouvé)
- Assurez-vous que toutes les contraintes contiennent =, <=, >=
• + 044: Unterminated condition (Condition non terminée)
- Mettez deux points à la fin de chaque instruction conditionnelle dans un opérateur
ensembliste
• + 050: Improper use of the @FOR() function (Utilisation incorrecte de la fonction @FOR())
- Les fonctions @FOR() ne peuvent pas être imbriquées dans d’autres opérateurs ensem-
blistes
• + 068: Multiple objective functions in model (Fonctions objectifs multiples dans le modèle)
- Un seul est autorisé, s’il vous plaît
• + 071: Improper use of a variable domain function (eg, @GIN, @BIN, @FREE, @BND)
(Utilisation inappropriée d’une fonction de domaine variable (par exemple, @GIN, @BIN,
@FREE, @BND))
- Vérifiez la syntaxe
• + 081: No feasible solution found (Aucune solution réalisable trouvée)
- Vérifier la cohérence et les contraintes du modèle

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

6.9 Exemples de programmation LINGO


Un modèle de programmation courant est le problème du sac à dos, qui traite de la maxi-
misation de l’utilité de la capacité de chargement. Cet exemple montre comment configurer
correctement un problème de sac à dos.

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

Vous aimerez peut-être aussi