Vous êtes sur la page 1sur 202

Fondements de recherche opérationnelle

Notes de cours

s
ée
ig
rr
Fausto Errico Virginie Destuynder
co
n

Août 2020
s no
ve
r eu
Ép
Table des matières

Préface v

Introduction vi

1 Modélisation 1
1.1 Le concept de modèle décisionnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

s
1.1.1 Processus d’aide à la décision à partir de la modélisation . . . . . . . . . . . 2
1.1.2
ée
Limitations de la modélisation . . . . . . . . . . . . . . . . . . . . . . . . . . 2
ig
1.2 La programmation mathématique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
rr
1.3 La programmation linéaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
co

1.3.1 Un exemple prototype : la compagnie Windor . . . . . . . . . . . . . . . . . . 6


n

1.3.2 Autres exemples de programmation linéaire . . . . . . . . . . . . . . . . . . . 10


no

1.3.3 Modèle linéaire général . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13


1.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
s
ve

2 Autres problèmes-types de modélisation linéaire 16


eu

2.1 Les standardistes : Problèmes d’emplois du temps - Workflow scheduling problems . 16


r
Ép

2.1.1 Modèle algébrique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16


2.2 SAVE-IT : Problèmes de composition - Blending and mixing problems . . . . . . . . 17
2.2.1 Modèle algébrique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3 PASTISSIMO : Problèmes multi-périodes - Multi-period production problems . . . . 20
2.3.1 Modèle algébrique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3 Programmation linéaire en nombres entiers 27


3.1 Programmation en nombres entiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2 Programmation en nombres binaires . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.1 Le problème du sac-à-dos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.2 Les franchises - problèmes de recouvrement minimal . . . . . . . . . . . . . . 29
3.2.3 Les sergents - problèmes d’affectation . . . . . . . . . . . . . . . . . . . . . . . 30
3.2.4 L’équipe - Problème avec contraintes de compatibilité . . . . . . . . . . . . . . 31
3.2.5 La verrerie - Facility location problems . . . . . . . . . . . . . . . . . . . . . . 34
3.2.6 Les chaises - Utilisation de lots . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.2.7 Problème d’entreposage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

i
TABLE DES MATIÈRES ii

3.2.8 La diète - Contraintes optionnelles . . . . . . . . . . . . . . . . . . . . . . . . 38


3.2.9 Le meunier - Linéarisation de la fonction-objectif * . . . . . . . . . . . . . . . 39
3.3 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

4 Résolution de la Programmation linéaire : le simplexe 46


4.1 Rappels d’Algèbre Linéaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.1.1 Matrices et vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.1.2 Matrices particulières . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.1.3 Opérations sur les matrices et vecteurs . . . . . . . . . . . . . . . . . . . . . . 48
4.1.4 Opérations élémentaires sur des lignes . . . . . . . . . . . . . . . . . . . . . . 50
4.1.5 Matrices ligne-équivalentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.1.6 Systèmes d’équations linéaires . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.1.7 Systèmes d’équations lignes-équivalents . . . . . . . . . . . . . . . . . . . . . 53
4.1.8 Systèmes d’équations linéaires en forme canonique et solutions de base . . . . 54
4.1.9 Méthode de Gauss-Jordan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.1.10 Calcul de la matrice inverse par Gauss-Jordan . . . . . . . . . . . . . . . . . 57
4.2 Forme standard d’un problème linéaire et solutions de base . . . . . . . . . . . . . . 58
4.2.1 Définition du problème linéaire en forme standard . . . . . . . . . . . . . . . 58

s
4.2.2 Forme canonique du problème linéaire en forme standard et solutions de base 59
4.2.3
ée
Lien entre problème original et solution de base . . . . . . . . . . . . . . . . . 61
ig
4.3 Transformation d’un problème de PL en problème de forme standard . . . . . . . . . 61
rr
4.3.1 Transformation d’un problème de PL de type ≤ en problème de forme standard 61
co

4.3.2 Cas des inégalités de type ≥ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62


n

4.3.3 Cas des variables libres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64


no

4.4 Géométrie de la programmation linéaire . . . . . . . . . . . . . . . . . . . . . . . . . 64


4.4.1 Points extrêmes du domaine et solutions de base . . . . . . . . . . . . . . . . 65
s
ve

4.4.2 Typologie des contraintes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66


eu

4.4.3 Typologie des régions et solutions admissibles . . . . . . . . . . . . . . . . . . 67


4.5 Théorème fondamental de la programmation linéaire . . . . . . . . . . . . . . . . . . 68
r
Ép

4.6 Aperçu du simplexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68


4.6.1 Compréhension géométrique du simplexe . . . . . . . . . . . . . . . . . . . . 69
4.6.2 Compréhension algébrique du simplexe . . . . . . . . . . . . . . . . . . . . . . 70
4.7 Forme tabulaire du simplexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.7.1 Forme tabulaire du Simplexe : exemple 2 . . . . . . . . . . . . . . . . . . . . 74
4.8 Le simplexe pour la forme générale de la Programmation Linéaire . . . . . . . . . . . 76
4.8.1 Variables artificielles pour contraintes d’égalité . . . . . . . . . . . . . . . . . 76
4.8.2 Variables artificielles pour contraintes d’inégalité de type ≥ . . . . . . . . . . 77
4.8.3 Elimination des variables artificielles . . . . . . . . . . . . . . . . . . . . . . . 77
4.8.4 Exemple de résolution de programmation linéaire générale . . . . . . . . . . . 78
4.9 Cas particuliers et pathologiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
4.9.1 Choix de variables entrantes et sortantes . . . . . . . . . . . . . . . . . . . . . 82
4.9.2 Solutions particulières . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
4.10 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
TABLE DES MATIÈRES iii

5 Interprétation matricielle du simplexe et analyse de sensibilité 87


5.1 Interprétation algébrique du simplexe . . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.1.1 Expression du tableau initial du simplexe . . . . . . . . . . . . . . . . . . . . 88
5.1.2 Expression du tableau final du simplexe . . . . . . . . . . . . . . . . . . . . . 92
5.1.3 Conséquences importantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
5.1.4 Quizz d’entraînement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
5.2 Analyse de sensibilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
5.2.1 Modification d’un membre de droite bk . . . . . . . . . . . . . . . . . . . . . . 97
5.2.2 Modification d’un coefficient de la fonction-objectif ck . . . . . . . . . . . . . 100
5.2.3 Ajout d’une contrainte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
5.2.4 Ajout d’une variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
5.2.5 Valeur d’une variable fixée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
5.3 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

6 La dualité 108
6.1 Approche intuitive : le problème mécanique . . . . . . . . . . . . . . . . . . . . . . . 108
6.2 Interprétation économique de la dualité . . . . . . . . . . . . . . . . . . . . . . . . . 112
6.3 Règles de conversion primal / dual . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

s
6.4 Théorème de la dualité faible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
6.5
ée
Théorème de la dualité forte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
ig
6.5.1 Théorème de la dualité forte : Exemple Windor . . . . . . . . . . . . . . . . . 116
rr
6.6 Théorème des écarts complémentaires . . . . . . . . . . . . . . . . . . . . . . . . . . 117
co

6.6.1 Théorème des écarts complémentaires : Exemple . . . . . . . . . . . . . . . . 118


n

6.7 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119


no

7 Réseaux de flots 122


s
ve

7.1 Graphes, nœuds, arbres : définitions . . . . . . . . . . . . . . . . . . . . . . . . . . . 122


7.1.1 Graphes non orientés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
eu

7.1.2 Graphes orientés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123


r
Ép

7.1.3 Arbres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123


7.2 Problèmes de flot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
7.2.1 Définition d’un réseau de flot . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
7.2.2 Problème de flot à coût minimum : le PFCM . . . . . . . . . . . . . . . . . . 126
7.3 Résolution du UPFCM sur réseau : flot à coût minimal sans contraintes de capacité 129
7.3.1 Construction d’un flot admissible . . . . . . . . . . . . . . . . . . . . . . . . . 129
7.3.2 Choisir la variable entrante . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7.3.3 Se déplacer d’une solution de base à une autre . . . . . . . . . . . . . . . . . 134
7.3.4 Exemple d’application du simplexe-réseau . . . . . . . . . . . . . . . . . . . . 135
7.4 Cas du PFCM général avec contraintes de capacité . . . . . . . . . . . . . . . . . . . 139
7.5 Le Problème de Flot Maximum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
7.5.1 Le graphe résiduel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
7.5.2 Algorithme de Ford-Fulkerson . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
7.6 Le Problème du plus court chemin (PPCC) . . . . . . . . . . . . . . . . . . . . . . . 145
7.6.1 L’algorithme de Dijkstra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
7.6.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
7.7 Le Problème d’Arbre couvrant minimal . . . . . . . . . . . . . . . . . . . . . . . . . 147
TABLE DES MATIÈRES iv

7.7.1 Algorithme de Kruskal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147


7.7.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
7.8 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

8 Résolution de la Programmation Linéaire en Nombres Entiers 153


8.1 Complexité de la Programmation Linéaire en Nombres Entiers . . . . . . . . . . . . 153
8.2 L’algorithme de Séparation et d’Evaluation - (Branch & Bound) . . . . . . . . . . 157
8.2.1 Exemple de Branch & Bound . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
8.2.2 Critères de séparation et d’exploration . . . . . . . . . . . . . . . . . . . . . . 163
8.3 Utilisation du B&B pour des variables binaires . . . . . . . . . . . . . . . . . . . . . 166
8.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

9 Programmation non linéaire 168


9.1 Modèle général . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
9.2 Géométrie de la PNL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
9.2.1 Contrainte non linéaire. Domaine admissible convexe . . . . . . . . . . . . . . 169
9.2.2 Contrainte non linéaire. Domaine admissible non convexe . . . . . . . . . . . 170
9.2.3 Fonction objectif non linéaire . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
9.3 Rappels de calcul : Optimisation non linéaire sans contraintes . . . . . . . . . . . . . 173

s
ée
9.3.1 Rappel : Modèle à une variable . . . . . . . . . . . . . . . . . . . . . . . . . . 173
ig
9.3.2 Modèle à plusieurs variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
rr
9.3.3 Exemples d’application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
co

9.4 Optimisation non linéaire avec contraintes d’égalité . . . . . . . . . . . . . . . . . . . 181


9.4.1 Conditions nécessaires d’optimalité . . . . . . . . . . . . . . . . . . . . . . . . 181
n
no

9.4.2 Exemple d’optimisation sous contraintes d’égalité . . . . . . . . . . . . . . . . 184


9.4.3 Analyse de sensibilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
s
ve

9.5 Optimisation non linéaire avec contraintes d’inégalité . . . . . . . . . . . . . . . . . . 187


9.5.1 Cas particulier où les variables sont positives . . . . . . . . . . . . . . . . . . 188
eu

9.5.2 Conditions suffisantes d’optimalité . . . . . . . . . . . . . . . . . . . . . . . . 189


r
Ép

9.5.3 Exemple d’optimisation dans le cas général . . . . . . . . . . . . . . . . . . . 190


9.6 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Préface

Ceci est une première ébauche d’un livre recueillant le matériel nécessaire aux cours GOL405
(Méthodes Quantitatives en Logistique) et GPA430 (Techniques d’optimisation en production au-
tomatisée). Il doit être amélioré et contient encore certainement des erreurs et fautes de frappe. Vos
commentaires et suggestions sont donc bienvenus, que ce soit pour dénicher les erreurs de frappe
ou pour faire mention de paragraphes qui vous semblent manquer de clarté.
Merci d’avance pour votre aide et votre compréhension !

s
ée
ig
rr
co
n
s no
ve
r eu
Ép

v
Introduction

Le présent cours s’intéresse au processus de prise de décision, en répondant aux question sui-
vantes :
— Quels outils mathématiques peuvent être utilisés pour modéliser les problèmes complexes
que rencontre l’ingénieur et face auxquels il doit prend des décisions ?
— De quelles méthodes et algorithmes dispose-t-on pour résoudre ces problèmes ?
— Comment analyser les solutions obtenues et en tirer un maximum d’informations utiles à la

s
ée
prise de décision ? ig
Après avoir présenté les outils de modélisation des problèmes de décision, ce cours s’attachera à
rr
quatre grandes familles de problèmes ainsi qu’à certaines de leurs méthodes de résolution classiques :
co

— la programmation linéaire, et sa résolution par la méthode graphique et par l’algorithme du


n

simplexe
no

— la programmation linéaire en nombres entiers, et sa résolution par la méthode de séparation


s

et évaluation progressive
ve

— les problèmes sur réseaux et leur résolution par la théorie des graphes
eu

— la programmation non linéaire


r
Ép

Les notions de dualité et d’analyse de sensibilité seront quant à elles abordées tout au long du
cours à travers les différents types de problèmes rencontrés.
Les exercices présentés à chaque section s’inspirent en grande partie des ouvrages de Hillier et al.
(2014), Williams (2013), Nobert et al. (2001) et Bertsimas and Tsitsiklis (1997). Nous remercions
chaleureusement le professeur Marc Paquet pour le partage de ses matériels de cours.

vi
Chapitre 1

Modélisation

1.1 Le concept de modèle décisionnel


Les modèles sont très utilisés en sciences : ils constituent une représentation abstraite d’un pro-
blème original concret. Les modèles s’attachent à rechercher, prendre en compte, et quantifier tous

s
les facteurs réels qui pourraient avoir une influence sur le problème auquel on s’intéresse. Cepen-

ée
dant, il faut être conscient qu’un modèle ne saura pas, en général, prendre en compte l’ensemble
ig
des données réelles, le monde réel étant trop complexe :
rr
All the models are wrong but some are useful (George Box).
co
n

Dans le cadre de ce cours, les modèles sont constitués de relations mathématiques (équations,
no

inéquations, dépendances logiques) qui permettent de représenter un certain problème décisionnel.


Quels avantages cette représentation simplifiée de la réalité peut-elle avoir ?
s
ve

• Un modèle peut révéler l’existence de structures mathématiques/géométriques qui peuvent


eu

être utilisées par un algorithme de recherche de solution.


r

• On peut facilement expérimenter un grand nombre de situations possibles (variantes) à partir


Ép

d’un modèle qui a été élaboré pour représenter un contexte. On pourra alors répondre rapi-
dement à des questions telles que : que se passerait-il si je vendais un nouveau produit ?... Si
j’avais un nouveau concurrent ?.. Si je devais payer un nouvel impôt sur les émissions de gaz
à effet de serre ?...
• Un modèle est généralement abstrait, et indépendant des données quantitatives spécifiques
d’un contexte (aussi appelées instances) : si je construis un modèle mathématique pour
représenter le problème d’un commis voyageur qui souhaite visiter plusieurs villes par le plus
court chemin possible sans passer deux fois par la même ville, il me suffit d’écrire une fois le
problème et je pourrais l’appliquer à autant de villes et de distances entre villes souhaitées, sans
changer l’essence du problème. Chaque situation composée de villes et distances différentes
est une instance, mais le problème modélisé reste toujours le même.
• Ainsi, une méthode développée pour trouver la solution d’un modèle particulier peut résoudre
toute une famille de problèmes, et c’est la force de la recherche opérationnelle.
Les modèles qui nous intéressent en recherche opérationnelle sont appelés des modèles de Pro-
grammation, non pas dans le sens de programmation informatique, mais dans le sens de planifi-
cation. Tous ces modèles ont des caractéristiques communes :

1
CHAPITRE 1: MODÉLISATION 2

• Les décisions à prendre face au problème sont représentées par des Variables décisionnelles
(des inconnues pour lesquelles on recherche la meilleure valeur possible, c’est-à-dire celle qui
nous permettra d’obtenir une solution optimale : le nombre d’employés à embaucher, le prix
d’un article, etc.)
• Il s’agit de problèmes d’optimisation : leur objectif est de maximiser ou minimiser une
quantité : un revenu, des coûts, le temps nécessaire à accomplir une opération...
• La quantité qu’on veut optimiser s’appelle la Fonction-objectif
• Les variables décisionnelles sont sujettes à des restrictions, et sont interdépendantes : elles
sont soumises à des Contraintes et ne peuvent pas prendre n’importe quelle valeur. Par
exemple, il est impossible de produire plus que ce que permet la capacité des machines d’une
usine, ou encore, le nombre d’articles en stock dans un magasin dépend des ventes et de
l’approvisionnement.
• Les constantes connues du problème (aussi appelées données ou instances) sont appelées
lesParamètres du problème.

1.1.1 Processus d’aide à la décision à partir de la modélisation

s
L’optimisation est finalement un processus opérationnel, comme représenté à la figure 1.1 :

ée
• un problème complexe soumis à différentes contraintes est posé, sans qu’on puisse dire à
ig
première vue quelle sera la meilleure solution, chaque contrainte poussant à prendre une
rr
décision dans une direction différente.
co

• Ce problème est modélisé mathématiquement, en identifiant un objectif à atteindre, des


n

contraintes à respecter, des variables sur lesquels prendre des décisions et qui auront un
no

impact sur la distance à l’objectif.


s

• Le problème est identifié comme faisant partie de l’une des classes de problèmes connues en
ve

Optimisation, et résolu à l’aide d’un algorithme reconnu efficace pour cette classe de problème.
eu

• Les solutions sont interprétées, ainsi que leur stabilité face à des changements dans les données
r
Ép

du problème. Les solutions et cette analyse post-optimale sont alors utilisées pour prendre
une décision face au problème posé et implémenter la solution.

Problème Modélisation Résolution Interprétation Implémentation

Fonction-objectif Analyse de sensibilité


Variables de décision
Contraintes

Figure 1.1: De la formulation du problème aux recommandations pour la prise de décision

1.1.2 Limitations de la modélisation


L’utilisation de la modélisation dans le processus de décision demande une certaine prudence,
au regard des enjeux liés à la décision. En effet :
• La solution obtenue par la résolution d’un modèle devrait être analysée avec attention. Si
la solution s’avère inacceptable, on a probablement fait une erreur dans le modèle, ce qui
CHAPITRE 1: MODÉLISATION 3

est d’autant plus probable que le modèle est complexe. La vérification de la cohérence des
résultats est une phase qui ne peut être négligée.
• En général, une solution obtenue par un modèle doit être considérée comme une option parmi
d’autres : le modèle est une approximation du monde réel, et il est possible de trouver des
solutions au problème par d’autres moyens. Il revient au décideur de choisir la meilleure parmi
les options qui lui sont proposées, que ce soient des solutions obtenues par la modélisation ou
non.
• Il se peut aussi que le contexte réel soit difficilement représentable par des chiffres, et que le
modèle simplifie trop la complexité réelle. Ce n’est pas toujours simple d’attribuer une valeur
numérique au coût ou à l’utilité de certaines grandeurs (par exemple une valeur sociale).
• Dans le même ordre d’idées, il se peut que les données soient quantifiables, mais affectées par
une forte incertitude (prix fluctuants, demande des clients soumise aux aléas des modes et des
produits concurrentiels...)
• Enfin, plusieurs modèles peuvent décrire de façon correcte le même problème, mais l’efficacité
des algorithmes de résolution de chaque modèle peut être différente. Le choix d’un bon modèle
est fondamental et doit toujours être orienté par la recherche du compromis entre simplicité
et exactitude de la représentation du contexte réel.

s
ée
En tout état de cause, l’équipe de recherche opérationnelle doit fournir à son client une description
ig
claire des hypothèses, simplifications, incertitudes, qui sous-tendent toujours aux résultats,
rr
pour permettre une prise de décision raisonnée à la lumière du contexte qui entoure les résultats.
co

1.2 La programmation mathématique


n
no

i
s

La formulation de la modélisation, appelée programmation mathématique, possède certaines


ve

caractéristiques similaires quelque soit le type de problème à résoudre :


eu

• Tous les modèles s’écrivent sous la forme : Variables décisionnelles + Fonction-objectif +


r
Ép

Contraintes
• Les variables décisionnelles
Un problème peut dépendre de plusieurs variables habituellement notées x1 , x2 , ..., xn . On
peut représenter l’ensemble de ces n variables par un vecteur de dimension n, x :
 
x1
 
 x2  n
. . . , x ∈ R
x= 
 
xx

Exemple : Une entreprise produit n types d’outils différents ayant chacun leurs propres ca-
ractéristiques. (x1 , . . . , xn ) sont les quantités respectives des outils 1 à n à produire.
Remarque : dans ce cours, les vecteurs sont écrits en caractères gras (x), et les scalaires en
caractères normaux (x1 ).
• La fonction-objectif
La fonction-objectif est une fonction des variables décisionnelles :
CHAPITRE 1: MODÉLISATION 4

f : Rn 7−→ R

Exemple : L’objectif d’une entreprise est de maximiser ses gains, qui dépendent des gains liés
à la vente de chaque produit. La fonction-objectif est le gain total, c’est-à-dire la somme des
gains liés aux ventes de chaque type de produit : f (x1 , . . . , xn ). L’objectif du problème est
alors de maximiser la valeur de la fonction-objectif.
Selon le problème, l’objectif peut être de minimiser (le coût total en argent ou en temps ou la
quantité maximale de gaz polluants émis par exemple) ou de maximiser (le revenu total par
exemple).
• Les contraintes
Les contraintes sont des relations mathématiques qui restreignent les valeurs possiblement
prises par chaque variable, en raison des limites imposées par des contraintes techniques,
budgétaires... En raison de ces contraintes, les variables ne peuvent pas prendre n’importe
quelles valeurs, mais uniquement des valeurs dites admissibles, c’est-à-dire qui ne violent
pas les contraintes.
Les contraintes peuvent être des égalités, des inégalités de type ≤ (il faut avoir au plus... pour
ne pas dépasser la capacité/disponibilité autorisée) ou des inégalités de type ≥ (il faut avoir

s
au moins... pour répondre à la demande). On écrira généralement chacune des contraintes à
l’aide d’une fonction g dépendante des variables x1 à xn :
ée
ig
rr
g(x1 , x2 , . . . , xn ) ≤ b, b un scalaire
co

Exemple : Un enfant souhaite acheter des bonbons de type 1 et de type 2, qui coûtent respec-
n
no

tivement 2 et 3 $ l’unité, mais dispose d’un budget de 6 $ qu’il ne peut pas dépasser. Cette
contrainte s’écrit :
s
ve

2x1 + 3x2 ≤ 6
eu

avec x1 et x2 les quantités de bonbons 1 et 2 achetées, g(x1 , x2 ) = 2x1 + 3x2 , b = 6.


r

• Les contraintes naturelles


Ép

Une partie des contraintes exprime la nature des variables et sont dites naturelles. Par exemple,
une ou plusieurs variables doivent être positives, négatives, binaires, entières, etc. De façon
générale, les contraintes naturelles s’expriment de la façon suivante :

x ∈ X,

où X est l’espace naturel (R, N, . . . ).


Exemple : Dans le cas de la production de produits, la quantité produite doit bien sûr être
positive : x1 ≥ 0, x2 ≥ 0, . . .
CHAPITRE 1: MODÉLISATION 5

Formulation générale de la programmation mathématique


Le problème général peut toujours s’écrire mathématiquement sous la forme d’un problème à n
variables et m contraintes :

max z = f (x1 , x2 , ..., xj , ..., xn )


g1 (x1 , x2 , ..., xj , ..., xn ) ≤0
...
gi (x1 , x2 , ..., xj , ..., xn ) ≤0 (1.1)
...
gm (x1 , x2 , ..., xj , ..., xn ) ≤ 0
x∈X

En effet, dans le cas où le problème contient des égalités ou des inégalités de type ≥, ces dernières
peuvent toujours être transformées pour se ramener à la formulation 1.1 :
• une inégalité de type ≥ peut toujours être transformée en inégalité équivalente de type ≤ (en
multipliant les deux membres par −1),
• une inégalité de type g(x1 , x2 , ..., xn ) ≤ b peut toujours être transformée en l’inégalité équi-

s
ée
valente : g(x1 , x2 , ..., xn ) − b ≤ 0, ig
• une égalité g(x1 , x2 , ..., xn ) = b peut toujours être transformée en deux inégalités équivalentes :
rr
g(x1 , x2 , ..., xn ) − b ≥ 0 et g(x1 , x2 , ..., xn ) − b ≤ 0.
co
n

1.3 La programmation linéaire


no

Un cas particulier de la programmation mathématique est la programmation linéaire. La pro-


s
ve

grammation linéaire est une programmation mathématique dans laquelle la fonction-objectif et les
eu

contraintes sont toutes des fonctions linéaires.


r
Ép

Définition 1.3.1 (Fonction linéaire)


Soit f , une fonction de n variables (x1 , . . . , xn ). f est dite linéaire s’il existe n constantes
(a1 , . . . , an ) telles que :
f (x1 , . . . , xn ) = a1 x1 + · · · + an xn

Exemples de fonctions linéaires : Exemples de fonctions non linéaires


f (x) = −2x + 5 f (x) = 3x2

f (x, y, z) = 3x − 7y + z f (x, y) = sin x + y

Nous montrerons plusieurs exemples de programmation linéaire dans les sections ci-dessous,
avant de présenter la forme générale d’un problème de programmation linéaire (section 1.3.3). La
limitation de la programmation à la programmation linéaire peut paraître une restriction impor-
tante ; cependant, la famille des problèmes qui peuvent être représentés sous la forme de problèmes
linéaires est très large comme on le découvrira au cours de ce chapitre.
CHAPITRE 1: MODÉLISATION 6

1.3.1 Un exemple prototype : la compagnie Windor


La compagnie WINDOR, possède trois usines : Usines 1, 2 et 3. Chaque usine est spécialisée
dans un processus différent de production. La compagnie produit deux types de produits : des
portes (Produit 1) et des fenêtres (Produit 2).
Obtenir une unité de Produit 1 demande l’utilisation de l’Usine 1 pendant 1 heure et de l’Usine
3 pendant 3 heures. Obtenir une unité de Produit 2 demande l’utilisation de l’Usine 2 pendant 2
heures et de l’Usine 3 pendant 2 heures.
L’Usine 1 est disponible 4 heures par semaine, l’Usine 2 12 heures, et l’Usine 3 18 heures.
La compagnie WINDOR prévoit de gagner 3,000$ pour chaque unité de Produit 1 vendue, et 5000$
pour chaque unité de Produit 2. On se pose le problème suivant : quel est le plan de production
hebdomadaire à adopter afin d’optimiser le revenu ? Autrement dit, combien de portes et de fenêtres
faut-il fabriquer ?
La vente de fenêtres est plus rentable à l’unité, mais chaque fenêtre construite utilise l’usine 1
pendant 2 heures alors que celle-ci n’est disponible que 4 heures par semaine. Ainsi, on ne pourra
fabriquer que 2 fenêtres et aucune porte si on décide de prioriser la fabrication de fenêtres. Peut-être
est-ce donc plus rentable de fabriquer plus de portes, même si le gain unitaire est inférieur ?

s
ée
Une formulation explicite ig
i
rr
co

Pour modéliser le problème Windor, on note x1 la quantité de portes à produire chaque semaine,
et x2 la quantité de fenêtres. On veut maximiser le gain total, soit 3x1 + 5x2 (en milliers de $). Mais
n

il faut aussi tenir compte du fait que chaque usine a une capacité de production maximale. Le temps
no

d’utilisation d’une usine i ne peut pas dépasser sa capacité. On exprime donc le temps d’utilisation
s

de chaque usine en fonction du nombre de portes et fenêtres construites, par exemple, fabriquer x1
ve

portes demande 3x1 heures dans l’usine 3, et fabriquer x2 fenêtres demande 2x2 heures dans cette
eu

même usine. La somme des deux temps d’utilisation ne doit pas dépasser les 18h de disponibilité
r

de l’usine 3. Ainsi, on peut construire un modèle mathématique qui représente à la fois l’objectif
Ép

du problème (maximiser les revenus) et ses contraintes (respecter les disponibilités des usines) :

max z = 3x1 +5x2


x1 ≤4 respect de la capacité de l’usine 1 (1.2)
2x2 ≤ 12 respect de la capacité de l’usine 2 (1.3)
3x1 +2x2 ≤ 18 respect de la capacité de l’usine 3 (1.4)
x1 ≥0 on ne peut pas produire de quantités négatives (1.5)
x2 ≥ 0 (1.6)

Solution graphique

i
Une première façon de résoudre ce problème est de le représenter sur un graphique, ce qui est
possible puisqu’il ne fait appel qu’à 2 variables correspondant aux deux axes du graphique. Pour
cela, on dessine sur le graphique chacune des 5 contraintes (3 contraintes de disponibilité des usines,
CHAPITRE 1: MODÉLISATION 7

et 2 contraintes de positivité des variables) : on trace d’abord les droites correspondant aux égalités.
Pour qu’un couple (x1 , x2 ) respecte une contrainte donnée, il doit être au-dessus ou au-dessous de
la droite tracée, en fonction de la contrainte. On décrit ainsi le domaine (ou région) d’admis-
sibilité qui englobe tous les couples (x1 , x2 ) qui répondent à l’ensemble des contraintes, comme
représenté sur la figure (1.2).

8 x
2

x1 = 4
x2 = 6
6
x1 = 0

3x
Région

1
+
d’admissibilité
2

2x
2
=
18
x2 = 0 x1

s
ée
2 4 6 8

Figure 1.2: Représentation graphique du problème Windor


ig
rr
co

Parmi tous les points qui respectent l’ensemble des contraintes, lequel permettra d’obtenir le
revenu maximum ? Comment le trouver ? On peut calculer pour chaque point le revenu correspon-
n
no

dant, c’est-à-dire la valeur de la fonction-objectif (3x1 + 5x2 ), en fonction des coordonnées (x1 , x2 )
du point, mais cela peut être long ! Une méthode plus rapide est d’ajouter les courbes de niveau
s
ve

de la fonction-objectif sur le graphique (figure 1.3) : on trace la droite 3x1 + 5x2 pour différentes va-
leurs de la fonction-objectif, par exemple ici 10, 20 et 36. Pour chaque courbe de niveau, l’ensemble
eu

des points de la droite fournissent le même revenu. On se rend compte que les courbes de niveau
r
Ép

sont parallèles, et que plus on translate la courbe de niveau vers le haut, plus le revenu augmente.
La courbe 3x1 +5x2 = 36 est la courbe de niveau la plus haute qui passe par le domaine admissible :
le revenu maximal que l’on puisse obtenir en respectant les contraintes est donc 36. On remarque
que (2, 6), le point du domaine qui permet ce maximum, est unique (ce ne sera pas toujours le cas)
et est situé sur la frontière du domaine (ce sera toujours le cas en programmation linéaire). Il
correspond même à un coin du domaine, c’est-à-dire à l’intersection entre deux contraintes, qu’on
appellera des contraintes actives parce qu’elles définissent le point-solution. On verra plus tard
dans le cours comment un algorithme puissant appelé algorithme du simplexe exploite cette
caractéristique pour résoudre rapidement un problème de programmation linéaire.
CHAPITRE 1: MODÉLISATION 8

8 y

3x
1 +5
4 x2
=3
6
3x
1 +5
x2
2 3x =2
1 +5 0
x2
=1
0
x
2 4 6 8

Figure 1.3: Solution du problème Windor

Il est intéressant de remarquer également que la solution graphique nous permet de voir immé-
diatement quelles sont les usines qui limitent la production : il s’agit des usines 2 et 3, puisqu’elles
sont utilisées à pleine capacité : ce sont les usines pour lesquelles les contraintes sont actives. Le

s
point optimal est situé exactement sur ces contraintes, c’est-à-dire que x2 vaut exactement 6 dans

ée
l’équation 1.3, et 3x1 + 2x2 vaut exactement 18 dans l’équation 1.4. Il reste par contre 2h de temps
ig
disponible sur l’usine 1 (équation 1.2) : la capacité de l’usine 1 ne limite pas la production, c’est
rr
une contrainte inactive.
co
n

Le concept d’ensemble
no

i
s

Le problème de l’entreprise WINDOR est relativement simple, puisqu’elle ne produit que 2 pro-
ve

duits dans 3 usines, ce qui nous permet une formulation explicite du problème et une visualisation
eu

graphique rapide. Dans la réalité, on pourrait avoir à résoudre un problème pour une entreprise
r
Ép

produisant des milliers de produits dans des centaines d’usines. On devra alors faire appel à des
modèles algébriques (par opposition à : explicite) dans lesquels on s’affranchit d’une longue énumé-
ration de termes : si on produit par exemple 100 produits différents dans nos usines, qui nécessitent
chacun un temps spécifique d’utilisation de chaque usine, il faudra faire une somme de 100 termes
pour déterminer la quantité de temps nécessaire à la production de tous les types de produits, et
ce pour chacune des usines ! Pour s’épargner cet inconvénient, on notera par exemple aup le temps
nécessaire à la production d’une unité du produit p dans l’usine u. Si on a 100 produits, et 50 usines,
les 50 ∗ 100 = 5000 temps d’utilisation par usine et par produit, nécessaires à écrire les contraintes,
seront stockés dans une matrice de dimension (50 × 100) : 50 lignes correspondant aux 50 usines
(u = 1, · · · , 50), et 100 colonnes correspondant aux 100 produits (p = 1, · · · , 100). Au lieu d’expli-
citer les 100 termes pour chacune des 50 contraintes, on écrira que aup xp est le temps nécessaire
dans l’usine u pour la production de la quantité xp de produit p, Par conséquent, le temps total
nécessaire dans l’usine u pour la production de tous les produits est la somme algébrique des aup xp
pour tous les produits p, et devra être inférieure à la disponibilité en temps de l’usine u, et ce pour
chaque usine u.
CHAPITRE 1: MODÉLISATION 9

Définition 1.3.2 (Ensembles)


Au cœur de la représentation algébrique, le concept d’ensembles est fondamental. Un ensemble
est un groupe d’objets similaires (une liste de produits, d’usines, de clients, etc.). Chaque
élément d’un ensemble a des attributs connus : le gain qu’il permet, la disponibilité dont il
dispose, le volume qu’il occupe, la demande pour cet élément, etc. Ces attributs sont appelés les
paramètres du modèle. Tous les éléments d’un ensemble disposent potentiellement des mêmes
attributs, avec des valeurs différentes. Pour énumérer les différents éléments d’un ensemble,
on attribuera à chacun un numéro {1, 2, 3, 4, 5...} représenté par un indice qui fait référence à
l’ensemble.

Modèle algébrique

i
Par exemple, si on appelle U l’ensemble des usines, qui contient autant d’éléments que d’usines,
on pourrait appeler u l’indice qui permet d’identifier chacune des usines. Dans le cas de Windor,
l’ensemble U possède 3 éléments, et u peut prendre 3 valeurs {u = 1, u = 2, u = 3}. Si on appelle

s
ée
d la disponibilité en temps des usines, on pourra parler de d1 pour représenter la disponibilité de
ig
l’usine 1, d2 pour celle de l’usine 2, d3 pour celle de l’usine 3. du , ∀ u ∈ U , sera une représentation
rr
générique pour parler de la disponibilité d’une usine u.
co

Voyons ainsi comment on pourrait généraliser le problème de Windor en l’écrivant sous forme
algébrique :
n
no

• Ensembles :
s

− u ∈ U Usines, U = {1, 2, 3}
ve

− p ∈ P Produits, P = {1, 2}
eu

• Paramètres :
r
Ép

− gp Gain pour la vente du produit p, ∀ p ∈ P


− du Disponibilité de l’usine u, ∀ u ∈ U
− aup Utilisation de l’usine u pour produire une unité de produit p, ∀ p ∈ P, u ∈ U
• Variables :
− xp Quantité de produit p à produire, ∀ p ∈ P
− z Gain total hebdomadaire

X
max z = gp xp
p∈P
X
aup xp ≤ du ∀ u ∈ U = {1, 2, 3}
p∈P

xp ≥ 0 ∀ p ∈ P = {1, 2}
CHAPITRE 1: MODÉLISATION 10

Cette notation est équivalente à :

max z = g1 x1 + g2 x2
u=1: a11 x1 + a12 x2 ≤ d1
u=2: a21 x1 + a22 x2 ≤ d2
u=3: a31 x1 + a32 x2 ≤ d3
x1 ≥ 0, x2 ≥ 0

P
Remarque: 1.3.1 (Les symboles et ∀)

P
• Le symbole se lit : la somme de ... pour tous les p appartenant - P . Dans la fonction-
p∈P
objectif par exemple, il permet d’écrire la somme des gains issus de la vente de tous les
produits et ce un seul terme au lieu d’écrire explicitement la somme. De même, dans la
P
contrainte, le symbole permet d’écrire la somme des temps nécessaires pour tous les
p∈P
produits en un seul terme, pour une usine u fixée (la somme n’est pas faite pour les usines,

s
P
mais bien pour les produits). Ainsi l’expression comprend autant de termes dans la

ée
p∈P
somme que d’éléments dans l’ensemble P (dans notre exemple, elle est équivalente à la
ig
rr
somme de 2 termes). C’est une grande économie d’écriture si on fabrique des centaines
co

de produits !
• le symbole ∀ (quelque soit) quant à lui, permet d’écrire en une seule ligne toutes les
n
no

contraintes portant sur la disponibilité, qui sont toutes de la même forme, excepté que les
valeurs changent. ∀u ∈ U signifie : pour chaque usine, la contrainte de disponibilité doit
s

être respectée. Ainsi l’expression ∀ u ∈ U représente autant de contraintes (= de lignes


ve

d’équations) que d’éléments de l’ensemble U (dans notre exemple, elle est équivalente à
eu

3 contraintes écrites en une seule ligne). C’est encore une fois une économie d’écriture
r
Ép

importante si le problème comprend des centaines d’usines !

Le problème de Windor est un problème classique dans lequel on fait face uniquement à des
contraintes de disponibilité des ressources (le temps disponible dans les usines ici). Mais à ces
contraintes peuvent s’ajouter d’autres contraintes, comme par exemple la demande de la clientèle :
il ne servirait à rien de produire des dizaines de fenêtres si les clients ne sont intéressés que par les
portes... Voyons ainsi un nouveau problème qui prend en compte ce type de contraintes.

1.3.2 Autres exemples de programmation linéaire


Cimento : Exemple de problème de distribution

i
L’entreprise Cimento doit acheminer des chargements de ciment par camion depuis deux cimen-
teries vers cinq chantiers pendant une certaine période de temps. Les quantités de ciment disponibles
dans chaque usine et la demande de chaque chantier (exprimées en unités de chargement) sont don-
CHAPITRE 1: MODÉLISATION 11

nées dans le tableau 1.1, tout comme le coût de transport entre les usines et les chantiers.

L’objectif est d’acheminer le ciment à moindre coût de manière à satisfaire la demande, et


sans excéder les capacités de production de chaque usine. On doit donc satisfaire deux types de
contraintes ici.

Coût de transport unitaire vers :


Usines Laval Gatineau Longueuil Saguenay Sherbrooke Disponibilité à l’usine
Montréal 131 405 188 396 485 47
Québec 554 351 479 366 155 63
Demande 28 16 22 31 12
du chantier

Tableau 1.1: Paramètres du problème de distribution

Voici un problème de planification par excellence : organiser la distribution des ressources en


fonction de contraintes de demande des clients et de disponibilité ou capacité des ressources de
production, qui peuvent être des machines, des hommes, des usines... Par analogie avec ce type de
problème, on appellera :

s
ée
— demande à satisfaire tout membre de droite d’une inéquation de type ≥, et
ig
— disponibilité tout membre de droite d’une inéquation de type ≤.
rr
Voyons le modèle mathématique correspondant :
co

• Ensembles :
n

− u ∈ U Usines
no

− c ∈ C Clients
s

• Paramètres :
ve

− nc Demande du client c, ∀c ∈ C
eu

− ku Disponibilité de l’usine u, ∀u ∈ U
r
Ép

− duc Coût unitaire de transport entre l’usine u et le client c, ∀u ∈ U, c ∈ C


• Variables :
− xuc Unités de chargement de ciment transportées de l’usine u au client c, ∀u ∈ U, c ∈ C
− z Coût total
• Fonction-objectif :
XX
min z = duc xuc (Coût de transport total)
u∈U c∈C

• Contraintes :
X
xuc ≥ nc ,∀ c ∈ C (Satisfaction de la demande de chaque client c)
u∈U
X
xuc ≤ ku ,∀ u ∈ U (Non dépassement de la capacité de chaque usine u)
c∈C

xuc ≥ 0, ∀ u ∈ U, ∀ c ∈ C (Variables positives)


CHAPITRE 1: MODÉLISATION 12

Vitrex : exemple de problème de type Capacity Planning

Vitrex est une entreprise de production de vitres qui doit s’assurer d’espaces d’entreposage pour
les 6 prochains mois. Elle connait ses besoins minimaux en espace (voir tableau 1.2), et peut louer
des espaces en signant des baux pour autant de mois qu’elle le souhaite, et pour autant de mètres
carrés qu’il lui en faudra.
Les coûts de location sont proportionnels à la surface louée, mais ils varient selon la durée de
location (voir tableau 1.2).
Quels baux devrait signer Vitrex pour minimiser ses frais d’entreposage durant les 6 prochains
mois ?

Mois Besoin minimal (m2 ) Durée du bail Coût (100 m2 ) pour cette durée
1 35 1 200
2 20 2 360
3 30 3 500
4 10 4 625
5 15 5 745
6 20 6 850

s
Tableau 1.2: Paramètres du problème Vitrex

ée
ig
La particularité de ce problème est que les coûts dépendent de la durée du bail, et que pour
rr
les calculer, il faut faire référence à deux mois différents de l’ensemble des mois (le début et la
co

fin du bail). Tout se passe comme si on avait deux sous-ensembles de l’ensemble des mois : T1 , le
sous-ensemble des mois t1 pendant lesquels on commence un nouveau bail, et T2 , le sous ensemble
n
no

des mois t2 pendant lesquels un bail se termine. On construit donc nos variables à partir de 2
indices qui font référence aux deux sous-ensembles T1 et T2 . Comme les baux peuvent commencer
s
ve

et terminer à n’importe quel mois de 1 à 6, T1 = T2 = T .


eu

• Ensembles
− t, t1 , t2 ∈ T , l’ensemble des mois
r
Ép

• Paramètres
− bt Besoins minimaux en espace au mois t ∈ T
− ct1 t2 Coût au m2 pour un bail de durée t2 − t1 + 1 mois, commençant au mois t1 et
finissant au mois t2 , t1 ∈ T1 = T, t2 ∈ T2 = T, telsquet2 ≥ t1
• Variables :
− xt1 t2 : Quantité d’espace en m2 loué par le bail se réalisant du début du mois t1 à la fin
du mois t2 , t1 , t2 ∈ T, t2 ≥ t1
• Fonction-objectif
X X
min ct1 t2 xt1 t2 (Total des frais d’entreposage)
t1 ∈T t2 ∈T,t2 ≥t1

• Contraintes
XX
xt1 ,t2 ≥ bt ∀t∈T (Location de l’espace nécessaire chaque mois)
t1 ≤t t2 ≥t

xt1 ,t2 ≥ 0 ∀ t1 , t2 ∈ T | t2 ≥ t1 (Variables positives)


CHAPITRE 1: MODÉLISATION 13

Remarque: 1.3.2 (Sous-ensembles et conditions dans les sommes algébriques)


Dans l’exemple de Vitrex, on pose des conditions sur les éléments pris en compte dans les
P
sommes algébriques. Par exemple, se lit : la somme sur t2 appartenant à T , tel que
t2 ∈T,t2 ≥t1
t2 est plus grand ou égal à t1 , et signifie qu’on ne prend dans la somme que les éléments xt1 t2
pour lesquels t2 est plus grand ou égal à t1 . En effet, les éléments xt1 t2 avec t2 < t1 ne sont pas
définis puisqu’on ne peut pas terminer le bail avant de l’avoir commencé.
P
Ainsi, si t1 = 5, xt1t 2 = x56 + x66
t2 ∈T,t2 ≥t1
Une autre facon d’écrire la même condition serait de définir les sous-ensembles T1 et T2
autrement :
— t, t1 ∈ T , l’ensemble des mois. C’est aussi l’ensemble des débuts de bail possibles.
— t2 ∈ Tt , l’ensemble des mois de fin de bail pour un bail commençant au mois t. Tt repré-
sente donc 6 sous-ensembles différents, chacun défini pour une valeur de t. Par exemple :
T4 = {4, 5, 6}.
Dans ce cas, la fonction-objectif pourra s’écrire sans conditions dans la somme algébrique :
X X
min ctt2 xtt2 (Total des frais d’entreposage)

s
ée
t∈T t2 ∈Tt
ig
rr
co

1.3.3 Modèle linéaire général


n
no

Après ces exemples particuliers, voici une formulation générale des modèles de programmation
linéaire.
s
ve
eu

Définition 1.3.3 (Formulation générale d’un modèle de programmation linéaire)


r
Ép

Soient :
• x = (x1 ; x2 ; ...xj ; ...; xn ) = (xj )j∈N un vecteur de n variables, de dimension (n × 1)
• c = (c1 ; c2 ; ...; cj ; ...; cn ) = (cj )j∈N un vecteur de n coûts (ou revenus, mais le terme coûts
sera utilisé de façon générique) associés à chaque variable. La dimension de c est (n × 1).
• b = (b1 ; b2 ; ...; bi ; ...; bm ) = (bi )i∈M un vecteur de m disponibilités et/ou demandes à
respecter, une pour chacune des m contraintes. La dimension de b est (m × 1).
•  
a11 a12 ... a1j ... a1n
 
 a21 a22 ... a2j ... a2n 
 
 ... ... ... ... 
A=  = (aij )i∈M,j∈N
 
 ai1 ai2 ... aij ... ain 
 
 ... ... ... ... 
 
am1 am2 ... amj ... amn
A est une matrice stockant les attributs associés à chaque variable pour le calcul de chaque
contrainte. A est de dimension (m × n)
CHAPITRE 1: MODÉLISATION 14

Tout problème de programmation linéaire peut s’écrire sous la forme :

min ou max z = c1 x1 + c2 x2 + . . . + cj xj + . . . + cn xn
s.a.c.(soumis aux conditions)
a11 x1 + a12 x2 + . . . + a1j xj + . . . + a1n xn (≤=≥) b1
..
.
ai1 x1 + ai2 x2 + . . . + aij xj + . . . + ain xn (≤=≥) bi
..
.
am1 x1 + am2 x2 + . . . + amj xj + . . . + amn xn (≤=≥) bm

Ou encore, sous forme condensée :


X
min ou max cj xj
j∈N
X
aij xj (≤=≥) bi , ∀i∈M
j∈N

s
ée
Ou encore, sous forme matricielle : ig
rr
min ou max cx
co

Ax (≤=≥) b
n
s no

On verra dans le cours que tous les problèmes de programmation linéaire peuvent être résolus
ve

en les transformant en des modèles de forme standard, c’est-à-dire des modèles dans lesquels :
eu

• toutes les variables sont positives


r
Ép

• toutes les demandes / disponibilités sont positives


• toutes les contraintes sont des égalités
Une définition formelle de ce type de modèles sera donnée à la section 4.2 du chapitre 4.

1.4 Exercices

Exercice 1 (Product Mix Problem : le fleuriste)


Un fleuriste dispose de 50 lys, 80 roses et 80 jonquilles. Il réalise ou bien des bouquets qu’il vend
40$ comprenant 10 lys, 10 roses et 20 jonquilles, ou bien des bouquets qu’il vend 50$ comprenant
10 lys, 20 roses et 10 jonquilles.
Comment le fleuriste doit-il former les bouquets pour réaliser le plus de profit possible ?

Exercice 2 (La société forestière)


Une société forestière veut utiliser de façon optimale le bois obtenu de l’exploitation d’une concession
forestière. Comme elle dispose d’une scierie et d’une usine de déroulement de billes, les 2 débouchés
CHAPITRE 1: MODÉLISATION 15

possibles pour son bois sont le bois de sciage et le contreplaqué.


La production de 1 000 pieds de planche requiert 1 000 unités d’épinette et 1 200 unités de sapin.
La fabrication de 1 000 pieds carrés de contreplaqué requiert 2 000 unités d’épinette et 4 000 unités
de sapin. Des boisés concédés, la société pourra tirer au plus 150 000 unités d’épinette et au plus
200 000 unités de sapin. L’entreprise s’est engagée à produire 40 000 pieds de planche et 30 000
pieds carrés de contreplaqué. Produire 1 000 pieds de planche rapporte 200$ ; produire 1 000 pieds
de contreplaqué rapporte 300$.
Quel plan de production la société devrait-elle envisager ?

Exercice 3 (Le magasin de vêtements)


Un propriétaire de 3 magasins de vêtements à Montréal se fournit auprès de 5 marques de vêtements
(A,B,C,D,E). Étant donné la localisation différente de ces magasins, le profit espéré pour chaque
vêtement diffère selon le type de marque et la localisation du magasin. Il a compilé tous les coûts
indirects associés à chacune des marques et pour chacun de ses magasins. Voici le tableau des profits
espérés :

Profit espéré par vêtement


Marque A Marque B Marque C Marque D Marque E
Montréal E. 14.57 14.45 16.19 15.9 20.67

s
ée
Centre ville 15.77 18.02 18.65 ig 18.7 17.5
Montréal O. 13.65 15.26 15.7 15.95 17.08
rr
co

Il désire cependant respecter un certain nombre de contraintes dans la disposition de ces vête-
n

ments dans les magasins :


no

• Il ne doit pas y avoir plus de 100 vêtements par magasin


s

• Il ne doit pas y avoir plus de 90 vêtements de la marque E dans les 3 magasins (au total)
ve

• Dans le magasin se situant à Montréal E, la somme des vêtements de la marque A et B ne


eu

doit pas être plus petite que le tiers de la somme des vêtements des marques C,D,E
r
Ép

• Dans le magasin se situant au centre-ville, la somme des vêtements des marques A et B


doivent être plus grande que trois fois la somme des vêtements des marques C,D,E
• Dans le magasin Montréal O, la somme des vêtements des marques D et E doit être inférieur
au quart de la somme des vêtements des marques A,B,C.
Chapitre 2

Autres problèmes-types de modélisation linéaire

Introduction
Ce chapitre présente d’autres problèmes-types (problèmes-noyaux) de la modélisation linéaire :
• les problèmes d’emploi du temps (workflow scheduling problems)

s
ée
• les problèmes de composition (blending and mixing problems)
ig
• les problèmes multi-périodes (multiperiod production problems)
rr
co

2.1 Les standardistes : Problèmes d’emplois du temps - Work-


n

flow scheduling problems


s no

i
ve

Cette famille de problèmes s’intéresse à construire un emploi du temps pour un certain nombre
eu

de ressources soumises à des contraintes de disponibilité. On s’intéresse sur cet exemple à construire
r

l’emploi du temps de standardistes.


Ép

Une compagnie téléphonique doit planifier l’horaire des standardistes dans sa centrale téléphonique.
Les standardistes travaillent 9 heures d’affilée, sans pauses-café ni pauses-repas. Le salaire pour une
journée de travail dépend de l’heure de début du quart de travail. La compagnie a aussi identifié
ses besoins minimaux en standardistes pour une journée typique (voir tableau 2.1).
Déterminer les horaires des standardistes de façon à optimiser les coûts.

Heures 0-3 3-6 6-9 9-12 12-15 15-18 18-21 21-24


Besoins en standardistes 6 4 12 20 20 24 14 14
Salaire 86 86 75 75 75 75 80 80

Tableau 2.1: Paramètres du problème de standardistes

2.1.1 Modèle algébrique


• Ensembles :
− h ∈ H = {0, 3, 6, 9, 12, 15, 18, 21}. Heures de début de service

16
CHAPITRE 2: AUTRES PROBLÈMES-TYPES DE MODÉLISATION LINÉAIRE 17

− j ∈ Jh Ensemble des heures j de début de service possibles pour travailler durant la


période commençant à l’heure h ∈ H Exemple : J0 = {18, 21, 0} ; J3 = {21, 0, 3}, etc.
• Paramètres :
− bh Besoin en personnes dans la période dont l’heure de début est h ∈ H
− ch Salaire d’une personne travaillant durant la période dont l’heure de début est h ∈ H
• Variables :
− xh Nombre de personnes prenant leur service à l’heure h ∈ H
• Modèle :
X
min z = ch xh (Total des salaires)
h∈H
X
x j ≥ bh , ∀h∈H (Nombre d’employés suffisant à chaque tranche horaire)
j∈Jh

xh ≥ 0, ∀h∈H (Contraintes naturelles)

On pourrait également modéliser ce problème sans faire appel à un sous-ensemble Jh , mais en


introduisant un nouveau paramètre αjh tel que : αjh = 1 si un employé qui a commencé à travailler à

s
ée
la tranche j travaille toujours à la tranche h. On peut vérifier que les valeurs prises par le paramètre
αjh sont :
ig
rr
 
1 1 1 0 0 0 0 0
co

 
0 1 1 1 0 0 0 0
n

 
0 0 1 1 1 0 0 0
no

 
 
0 0 0 1 1 1 0 0
α=
0

0 0 0 1 1 1 0
s

 
ve

 
0 0 0 0 0 1 1 1
 
eu

1 0 0 0 0 0 1 1
 
r

1 1 0 0 0 0 0 1
Ép

Dans ce cas, la contrainte devient :


X
αjh xj ≥ bh , ∀h∈H
j∈H

2.2 SAVE-IT : Problèmes de composition - Blending and


mixing problems
La société SAVE-IT exploite un centre de recyclage qui recueille quatre types de déchets solides
et les traite afin qu’ils puissent être fusionnés en un produit vendable (traitement et fusion sont des
processus séparés).
Trois catégories différentes de ce produit (P, Q et R) peuvent être assemblées en fonction de
la composition des matériaux utilisés (c’est-à-dire des déchets utilisés). Leurs spécifications sont
données dans le tableau 2.2, tout comme le coût de la fusion et le prix de vente pour chaque
catégorie.
CHAPITRE 2: AUTRES PROBLÈMES-TYPES DE MODÉLISATION LINÉAIRE 18

Le tableau 2.3 donne les quantités de matériaux disponibles pour la collecte et le traitement
chaque semaine, ainsi que le coût du traitement, pour chaque type de matériau.
SAVE-IT a obtenu des subventions d’un montant de 30 000$ par semaine, qui doivent être utilisées
exclusivement pour couvrir le coût de traitement complet. Le conseil d’administration a décidé
de diviser cette somme pour l’achat des différents types de matériaux de façon à ce qu’au moins
la moitié de la quantité disponible de chaque matériau soit effectivement collectée et traitée. Ces
restrictions supplémentaires sont énumérées dans le tableau 2.3.
La direction veut déterminer la quantité de chaque catégorie de produit à préparer, et le mélange
exact de matériaux à utiliser pour chaque catégorie. L’objectif est de maximiser le profit hebdo-
madaire net (le revenu total des ventes moins le coût de fusion total), à l’exclusion du coût de
traitement fixe de 30 000$ par semaine qui est couvert par les subventions.

Type Composition Coût de fusion ($\livre) Prix de vente ($\livre)


Matériau 1 : ≤ 30% du total
Matériau 2 : ≥ 40% du total
P 3 8.5
Matériau 3 : ≤ 50% du total
Matériau 4 : 20% du total
Matériau 1 : ≤ 50% du total

s
Matériau 2 : ≥ 10% du total

ée
Q 2.5 7
Matériau 4 : 10% du total ig
R Matériau 1 : ≤ 70% du total 2 5.5
rr
co

Tableau 2.2: SAVE-IT : données par type de produit


n
no

Disponibilité \semaine Coût de traitement


Matériau Contraintes additionnelles
(livres) ($\livre)
s
ve

1 3 3 Au moins 50% de chaque matériau


eu

2 2 6 doit être collecté et traité.


r

3 4 4 30 000 doivent être utilisés


Ép

4 1 5 pour traiter ces matériaux.

Tableau 2.3: SAVE-IT : données par type de matériau

Dans ce problème, on crée un produit à partir d’un mélange de matières premières. Puisqu’on
a des contraintes à la fois sur les produits et sur les matières premières, on va définir des variables
pour les quantités de produits et d’autres pour les quantités de matières premières. Cependant,
les quantités de produits et de matières premières sont liées ! Il faut donc faire attention à ajouter
une contrainte pour relier les variables entre elles et s’assurer que la quantité de produit assemblée
corresponde à la quantité de matière première utilisée.

2.2.1 Modèle algébrique


• Ensembles :
− c ∈ C, les catégories de produit
− m ∈ M , les types de matériaux
• Paramètres :
CHAPITRE 2: AUTRES PROBLÈMES-TYPES DE MODÉLISATION LINÉAIRE 19

− fc , le coût de fusion d’une livre produit de type c, ∀c ∈ C


− pc , le prix de vente d’une livre de produit de type c, ∀c ∈ C
− dm , la disponibilité du matériau de type m, en nombre de livres, ∀m ∈ M
− tm , le coût de traitement d’une livre de matériau de type m, ∀m ∈ M
− lmc la part minimale du matériau m à inclure dans le produit c, en pourcentage, ∀m ∈
M, ∀c ∈ C
− umc la part maximale du matériau m à inclure dans le produit c, en pourcentage, ∀m ∈
M, ∀c ∈ C
− K, les dépenses fixes à encourir pour le traitement
• Variables :
− xmc : la quantité de matériau m à inclure dans c, en livres, ∀m ∈ M, ∀c ∈ C
− yc : la quantité de produit c à produire, en livres, ∀c ∈ C
• Modèle :

X
max (pc − fc )yc (2.1)

s
ée
c∈C
X ig
xmc ≤ dm , ∀m∈M (2.2)
rr
c∈C
dm
co

X
xmc ≥ , ∀m∈M (2.3)
2
c∈C
n

lmc yc ≤ xmc ≤ umc yc , ∀ m ∈ M, c ∈ C (2.4)


no

X X
tm xmc = K (2.5)
s

c∈C m∈M
ve

X
yc = xmc , ∀c∈C (2.6)
eu

m∈M
r

xmc ≥ 0, ∀ m ∈ M, c ∈ C (2.7)
Ép

yc ≥ 0, ∀c∈C (2.8)

− 2.1 représente le revenu net (bénéfices - coûts de fusion)


− 2.2 exprime le fait que la quantité de matériau m totale utilisée pour la fabrication de
tous les produits ne peut dépasser la quantité de m disponible.
− 2.3 exprime le fait qu’au moins 50% de chaque matériau m doit être traité.
− 2.4 spécifie, pour chaque catégorie de produit c, les quantités minimales et maximales
admissibles de chaque matériau m dans la composition du produit.
− 2.5 s’assure que le total des coûts de traitement, tous matériaux et tous produits confon-
dus, est égal au budget disponible.
− 2.6 indique le lien entre les variables yc et xmc , la masse de produit yc devant être égale
à la somme des masses des matériaux qui le composent.
− 2.7 et 2.8 sont les contraintes naturelles.
• Remarque :
CHAPITRE 2: AUTRES PROBLÈMES-TYPES DE MODÉLISATION LINÉAIRE 20

La matrice (lmc )m∈M,c∈C est définie selon les spécifications du tableau 2.2. Par exemple,
l21 = 0.40 : il faut au moins 40% de matériau 2 dans le produit P. S’il n’y a aucune spécification
pour un matériau et un produit particulier, il suffira d’utiliser le fait que la part de matériau
doit rester positive. Par exemple, l11 = 0.
Pour la matrice (umc )m∈M,c∈C , si aucune spécification n’est indiquée, on utilisera le fait que
la part d’un matériau ne peut être supérieure à 100%. Par exemple : l21 = 1.

2.3 PASTISSIMO : Problèmes multi-périodes - Multi-period


production problems
i
La compagnie Pastissimo a accepté de fournir, par sacs de 1kg, et pendant les 6 prochains mois,
les spaghettis que la chaîne d’alimentation Hyper-Halli vend sous sa marque privée. À chaque fin
de mois, Pastissimo mettra 4 tonnes de spaghettis ensachetés à la disposition de Hyper-Halli, qui
s’est engagée à en prendre livraison au prix de 1.28 $ le sac.
Pastissimo s’approvisionne en blé dur auprès des Grands Moulin du Sud. Les prix mensuels ainsi
que les quantités minimales et maximales de blé qu’elle pourra acheter sont indiqués dans le tableau

s
2.4.

ée
Pastissimo possède un entrepôt et un magasin. Dans le premier (d’une capacité de 3 tonnes), elle
ig
conserve les matières premières jusqu’à leur utilisation ; dans le second (d’une capacité de 1 tonne),
rr
elle emmagasine les produits finis jusqu’à leur livraison. Pastissimo dispose de 2 tonnes de blé
co

dans son entrepôt et désire y retrouver le même tonnage à la fin des 6 mois. La compagnie peut
n

entreposer, à un coût de 20$ la tonne, le blé qu’elle ne peut traiter immédiatement. Elle peut aussi
no

entreposer les sacs de spaghettis dans son magasin à 25$ la tonne chaque mois.
Pastissimo s’est engagée auprès de Hyper-Halli à libérer une partie de sa capacité de production.
s
ve

Les quantités maximales et les coûts de production sont indiqués dans le tableau.
eu

Déterminer le plan optimal de production.


r
Ép

Mois Coût blé Achat min. Achat max. Capacité de Coût production
($/T) (T) (T) prod. (T) ($/T)
1 1000 4 6 6 160
2 975 3 4 5 150
3 1000 5 7 4 150
4 980 2 3 4 160
5 1020 4 7 4 175
6 1025 5 6 3 165

Tableau 2.4: Paramètres du problème Pastissimo

Il s’agit d’un problème de transformation de matière première en produit fini, sur un intervalle de
temps donné composé de 6 périodes de 1 mois, pendant lesquelles coût et capacité de transformation
varient d’une période à l’autre. Dans ce type de problèmes, les quantités (produites, stockées,
vendues...) à une période donnée dépendent des quantités pour le mois précédent. Il faudra donc
faire attention :
— À bien formuler la définition des variables et paramètres en fonction du temps : parle-t-on de
stocks en fin ou en début de mois ?...
CHAPITRE 2: AUTRES PROBLÈMES-TYPES DE MODÉLISATION LINÉAIRE 21

— À initialiser le problème (de quelles quantités dispose-t-on dans les entrepôts, les magasins...
au début de la première période ?). Chaque quantité initiale doit être fixée par une contrainte.
— À relier les variables entre elles du mois i − 1 au mois i : il doit à chaque mois y avoir
équilibre entre stocks, production et vente. Chaque équilibre nécessaire doit faire l’objet d’une
contrainte.
— Éventuellement à fermer le problème, si on souhaite par exemple que les entrepôts soient vides
à la fin de la dernière période modélisée. Il faudra là aussi ajouter une contrainte pour chaque
quantité finale que l’on veut fixer.
Voyons le modèle algébrique correspondant à ce problème particulier de Pastissimo.

2.3.1 Modèle algébrique


• Ensembles :
− i ∈ P Périodes
• Paramètres :
− de Capacité de l’entrepôt
− dm Capacité du magasin

s
ée
− pai Coût d’achat du blé au mois i, ∀i ∈ P ig
− ppi Coût de production au mois i, ∀i ∈ P
rr
− pe Coût d’entreposage à l’entrepôt par tonne
co

− pm Coût d’entreposage au magasin par tonne


n
no

− se0 Quantité de blé disponible à l’entrepôt avant le mois 1.


− sm
0 Quantité de spaghetti disponible au magasin avant le mois 1.
s
ve

− li Quantité minimale d’achat de blé au mois i, ∀i ∈ P


eu

− ui Quantité maximale d’achat de blé au mois i, ∀i ∈ P


r

− dpi Capacité maximale de production au mois i, ∀i ∈ P


Ép

• Variables :
− ai Quantité de blé achetée au début du mois i, ∀i ∈ P
− xi Quantité de spaghettis produite au mois i, ∀i ∈ P
− sei Quantité de blé emmagasinée à la fin du mois i, ∀i ∈ P
− sm
i Quantité de spaghettis emmagasinée à la fin du mois i, ∀i ∈ P

• Fonction objectif :
X
min z = (pai ai + ppi xi + pe sei + pm sm
i ) (2.9)
i∈P

• Contraintes :
CHAPITRE 2: AUTRES PROBLÈMES-TYPES DE MODÉLISATION LINÉAIRE 22

li ≤ ai ≤ ui , ∀i∈P (2.10)
xi ≤ dpi , ∀i∈P (2.11)
sei ≤ de , ∀i∈P (2.12)
sm
i ≤d , m
∀i∈P (2.13)
sei = sei−1 + ai − xi , ∀ i ∈ P, i ≥ 2 (2.14)
se1 = se0 + a1 − x1 (2.15)
se6 = 2 (2.16)
sm
i = sm
i−1 + xi − 4, ∀ i ∈ P, i ≥ 2 (2.17)
sm m
1 = s0 + x1 − 4 (2.18)
sm
6 =0 (2.19)
ai , xi , sei , sm
i ≥ 0, ∀i∈P (2.20)

− La fonction-objectif 2.9 représente la totalité des coûts d’achat et de production de blé, et des
coûts d’entreposage en entrepôt et au magasin

s
ée
− L’équation 2.14 indique que le stock de blé en fin de mois i est le stock du mois précédent
i − 1 + les achats au début du mois i - le blé utilisé durant le mois i. Elle n’est définie que
ig
rr
pour i > 1, et 2.15 indique donc la relation entre le stock en fin de mois 1 et le stock initial.
co

− L’équation 2.16 indique que la quantité finale (i = 6) de blé en stock est fixée.
− L’équation 2.17 indique que le stock de spaghetti en fin de mois est le stock du mois précédent
n
no

+ la production - la vente. Elle n’est définie que pour i > 1, et 2.18 indique donc la relation
entre le stock en fin de mois 1 et le stock initial.
s
ve

− L’équation 2.19 indique que la quantité finale de spaghetti en stock est nulle.
eu

Attention ici, les index mentionnés en exposant ne font pas référence à un élément d’un ensemble !
r

Ils indiquent simplement si on parle d’entrepôt (e), de magasin (m), de production (p) ou d’achat
Ép

(a). Mais il n’y a pas d’ensemble des types dd’entrepôt ou de magasin, ou de production ou d’achat.

2.4 Exercices
Exercice 4 (Web mercantile)
Web Mercantile vend de nombreux produits ménagers via un catalogue en ligne. L’entreprise a be-
soin d’un espace de stockage important pour stocker ses marchandises. Des plans sont actuellement
en cours pour la location d’espaces d’entreposage au cours des cinq prochains mois. La quantité
d’espace requise pour chacun de ces mois est connue.
Cependant, comme ces exigences d’espace sont très différentes, il peut être plus économique de ne
louer que le montant nécessaire chaque mois, mois par mois. Par ailleurs, le coût supplémentaire
de la location de locaux pour des mois supplémentaires est nettement inférieur à celui du premier
mois. Il peut donc être moins coûteux de louer l’espace maximum nécessaire pour les cinq mois.
Une autre option est l’approche intermédiaire consistant à modifier le montant total de l’espace loué
(en ajoutant un nouveau bail et / ou en ayant un ancien bail expiré) mois après mois.
CHAPITRE 2: AUTRES PROBLÈMES-TYPES DE MODÉLISATION LINÉAIRE 23

Mois Espace requis (Sq. Ft.) Durée du bail (mois) Coût par Sq.Ft. loué
1 30 000 1 65
2 20 000 2 100
3 40 000 3 135
4 10 000 4 160
5 50 000 5 190

Tableau 2.5: Paramètres du problème Web Mercantile

Exercice 5 (Quality Paper Corporation)


Une grande entreprise de fabrication de papier, la Quality Paper Corporation, dispose de 10 papete-
ries à partir desquelles elle doit fournir 1 000 clients. Elle utilise trois types de machines et quatre
types de matières premières pour fabriquer cinq types de papier différents.

L’entreprise doit développer une production planifiée sur une base mensuelle, dans le but de
minimiser le coût total de production et de distribution du papier au cours du mois.

Plus précisément, il est nécessaire de déterminer la quantité de chaque type de papier à fabriquer

s
dans chaque papeterie sur chaque type de machine, et la quantité de chaque type de papier à expé-

ée
dier de chaque papeterie à chaque client. Formuler le problème, en utilisant les données exprimées
ig
symboliquement comme suit :
rr
co

• djk , nombre d’unités de type de papier k demandé par le client j,


n

• uklm , nombre d’unités de matière première m nécessaires à la production d’1 unité de papier
no

k sur le type de machine l,


s

• rim , nombre d’unités de matière première m disponibles à la papeterie i,


ve

• hkl , Nombre d’heures nécessaires pour produire 1 unité de papier type k sur la machine l,
eu

• cil , Disponibilité de la machine l à la papeterie i, en heures,


r
Ép

• pikl , Coût de production pour chaque unité de papier de type k produite sur la machine de
type l à la papeterie i,
• tijk , Coût de transport pour chaque unité de papier de type k expédié de la papeterie i au
client j.

Exercice 6 (Buckly College)


Larry Edison est le directeur du centre informatique de Buckly College. Il doit maintenant planifier
la dotation en personnel du centre. Le centre est ouvert de 8 heures du matin jusqu’à minuit. Larry
a surveillé l’utilisation du centre à différents moments de la journée et a déterminé le nombre de
consultants en informatique requis à chaque tranche horaire (tableau 2.6).

Horaire Nombre de consultants minimum


8h - midi 4
midi - 4h 8
4h - 8h 10
8h - minuit 6

Tableau 2.6: Main d’œuvre requise dans le centre informatique de Buckly


CHAPITRE 2: AUTRES PROBLÈMES-TYPES DE MODÉLISATION LINÉAIRE 24

Les consultants en informatique peuvent être recrutés à temps plein ou à temps partiel. Les
consultants à temps plein travaillent 8 heures consécutives dans l’un des quarts suivants : matin
(8h-4h), après-midi (midi-8h) et soir (4h-minuit), et sont payés 14 $ l’heure.
Les consultants à temps partiel peuvent être embauchés pour travailler l’un des quatre quarts de tra-
vail énumérés dans le tableau 2.6 et sont payés 12 dollars de l’heure. Une exigence supplémentaire
est qu’au cours de chaque période, il doit y avoir au moins 2 consultants à temps plein en service
pour chaque consultant à temps partiel en service.
Larry aimerait déterminer combien de travailleurs à temps plein et à temps partiel devraient tra-
vailler chaque quart de travail pour répondre aux exigences ci-dessus au coût le plus bas possible.

Exercice 7 (Philbrick Company)


La Philbrick Company possède deux usines situées de part et d’autre des États-Unis. Chacune de
ces usines produit les deux mêmes produits et les vend ensuite aux grossistes de sa région. Les com-
mandes des grossistes ont déjà été reçues pour les 2 prochains mois (voir tableau 2.7-1). L’entreprise
n’est pas obligée de remplir complètement ces commandes, mais le fera si possible sans réduire ses
bénéfices.
Chaque usine dispose de 20 jours de production en février et de 23 jours en mars. Les stocks sont
épuisés à la fin du mois de janvier, mais chaque usine a une capacité suffisante pour entreposer 1
000 unités au total si une quantité excédentaire est produite en février pour être vendue en mars.

s
ée
Dans les deux usines, le coût d’entreposage est de 3 dollars par unité de produit 1, et de 4 dollars par
ig
unité de produit 2. Chaque usine possède les deux mêmes processus de production, chacun pouvant
rr
être utilisé pour produire l’un ou l’autre des deux produits. Les coûts de production et les taux sont
co

indiqués dans les tableaux 2.7-2 et 2.7-3 respectivement.


Le chiffre d’affaires net est de 83 dollars par unité de produit 1 et 112 dollars par unité de produit
n
no

2. Il est également possible pour une usine de faire une expédition dans l’autre moitié du pays pour
aider à combler les ventes de l’autre usine. Lorsque cela se produit, des frais de port supplémentaires
s
ve

de 9 $ l’unité (produit 1) et de 7 $ l’unité (produit 2) sont engagés.


eu

Commandes Région 1 Région 2


r

Produit Février Mars Février Mars


Ép

(1) 1 3600 6300 4900 4200


2 4500 5400 5100 6000

Coût production unitaire Usine 1 Usine 2


Produit Process 1 Process 2 Process 1 Process 2
(2) 1 62 59 61 65
2 78 85 89 86

Taux de production Usine 1 Usine 2


Produit Process 1 Process 2 Process 1 Process 2
(3) 1 100 140 130 110
2 120 150 160 130

Tableau 2.7: Paramètres du problème Philbrick

Exercice 8 (Omega)
L’entreprise Omega a suspendu la production d’une ligne de production déficitaire. La capacité de
CHAPITRE 2: AUTRES PROBLÈMES-TYPES DE MODÉLISATION LINÉAIRE 25

production s’est vue considérablement augmentée. Le directeur pense utiliser cette capacité pour la
production d’un ou plusieurs des produits 1, 2, 3. Les disponibilités et capacités des machines qui
les produisent sont résumées dans la table 2.8. Le département des ventes informe que le potentiel
des ventes pour les produits 1 et 2 excède le taux de production maximum, et que le potentiel de
vente pour le produit 3 est de 20 unités par semaine. Les profits unitaires pour les produits 1, 2 et
3 sont respectivement $50, $20 et $25. L’objectif est de déterminer les quantités à produire pour
chaque produit pour maximiser le profit.

Temps nécessaire par unité (hr)


Produit 1 2 3
1 9 5 3
2 3 4 0
3 5 0 2
Disponibilité des machines (hr) 500 350 150

Tableau 2.8: Paramètres du problème Omega

Exercice 9 (Le cargo)


Un avion cargo a trois compartiments pour ranger la cargaison : avant, centre et arrière. Ces

s
ée
compartiments ont des limites de capacité en termes de poids et d’espace. De plus, le poids de
ig
la cargaison dans les compartiments respectifs doit correspondre à la proportion de la capacité de
rr
charge de ce compartiment pour assurer la stabilité de l’avion. Quatre cargaisons ont été proposées
co

pour un vol à venir.


Toute ou partie de ces cargaisons peut être chargée. L’objectif est de déterminer quelle quantité de
n
no

chaque cargaison doit être acceptée et comment la distribuer.


Compartiment Tonnage (t) Volume(m3 ) Cargaison Poids (t) Volume(m3 /t) Profit(/t)
s

Avant 12 7000 1 20 500 320


ve

Centre 18 9000 2 16 700 400


eu

Arrière 10 5000 3 25 600 360


r
Ép

4 13 400 290

Exercice 10 (Oxbridge)
L’université d’Oxbridge maintient un ordinateur central puissant pour la recherche. Un opérateur
doit être disponible en permanence sur l’ordinateur. Le directeur doit préparer les horaires de ses
opérateurs. Cependant, les opérateurs ne sont disponibles que pour un nombre d’heures limité par
jour.
Chaque opérateur doit travailler un nombre minimum d’heures par semaine. L’installation informa-
tique doit être ouverte de 8 heures à 22 heures du lundi au vendredi, avec exactement un opérateur
en service pendant ces heures. On cherche à déterminer le nombre d’heures à attribuer à chaque
opérateur chaque jour pour minimiser les coûts.
CHAPITRE 2: AUTRES PROBLÈMES-TYPES DE MODÉLISATION LINÉAIRE 26

Disponibilité (jr)
Opérateurs Salaire horaire Lundi Mardi Mercredi Jeudi Vendredi Travail hebdo. minimum
KC 25 6 0 6 0 6 8
DH 26 0 6 0 6 0 8
HB 24 4 8 4 0 4 8
SC 23 5 5 5 0 5 8
KS 28 3 0 3 8 0 7
NK 30 0 0 0 6 2 7

Tableau 2.9: Paramètres du problème Oxbridge

s
ée
ig
rr
co
n
s no
ve
r eu
Ép
Chapitre 3

Programmation linéaire en nombres entiers

Introduction
L’ILP (Integer Linear Programming) est la famille des problèmes de programmation linéaire
dans lesquels les variables sont restreintes à prendre des valeurs entières ou binaires. Elle se divise

s
en :

ée
• ILP pure : toutes les valeurs doivent prendre des valeurs entières {0, 1, 2, 3...}
ig
• ILP mixte : les restrictions sur l’intégralité ne s’appliquent qu’à un sous-ensemble de variables
rr
co

• ILP bivalente/binaire : les variables ne peuvent prendre que les valeurs {0, 1}
On voit rapidement l’intérêt concret d’imposer l’intégralité des variables dans nombre de pro-
n
no

blèmes (on ne sera pas intéressé à fabriquer des 1/2 portes ou des 1/4 de fenêtres par exemple), mais
il faut aussi bien saisir à quel point l’usage de variables binaires peut être utile en programmation
s

mathématique. En effet, la variable binaire permet d’exprimer mathématiquement un choix, une


ve

décision, entre plusieurs alternatives :


r eu

(
1 si le choix i est oui
Ép

xi =
0 si le choix i est non

Grâce à l’utilisation de ces variables de choix, de nombreux problèmes d’optimisation non-linéaires


peuvent s’exprimer sous forme de problèmes de ILP, ce qui facilite grandement leur résolution. Dans
ce chapitre, on verra des exemples de modèles ILP. L’algorithme de résolution spécifique à cette
famille de problèmes, le Branch-And-Bound, sera décrit au chapitre 8.

3.1 Programmation en nombres entiers


Voyons par exemple comment nous pourrions réécrire le problème Windor, qui s’intéressait à
trouver le plan de production idéal pour ses produits en fonction des disponibilités des usines, si
les variables devaient rester entières (ce qui sera souvent le cas pour des produits !). Le modèle
deviendrait :
• Ensembles :
− u ∈ U Usines
− p ∈ P Produits

27
CHAPITRE 3: PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 28

• Paramètres :
− gp Gain pour la vente unitaire du produit p, ∀p ∈ P
− du Disponibilité de l’usine u, ∀u ∈ U
− apu Utilisation de l’usine u pour produire une bobine de produit p, ∀p ∈ P, ∀u ∈ U
• Variables :
− xp Quantité de produit p à fabriquer, ∀p ∈ P
− z Gain total
• Modèle :

X
max z = gp xp (Gain total)
p∈P
X
apu xp ≤ du ∀u∈U (Non-dépassement du temps disponible dans chaque usine)
p∈P

xp entier ∀p∈P (Contraintes naturelles)

Le problème est donc exactement identique à celui formulé en Programmation Linéaire classique,
excepté la dernière contrainte sur l’intégralité des variables. Avec cette contrainte supplémentaire,

s
ée
le domaine d’admissibilité du problème sera plus restreint, et la solution optimale sera au plus égale
ig
à celle qu’on avait trouvée sur le domaine plus large.
rr
co

3.2 Programmation en nombres binaires


n
no

3.2.1 Le problème du sac-à-dos


s

i
ve

Pour illustrer l’utilisation des variables binaires, intéressons nous au problème classique du
eu

voleur et de son sac-à-dos : un voleur s’introduit dans un riche appartement, rempli d’objets de
r
Ép

valeur. Chaque objet est désigné par son volume et sa valeur. Le voleur a avec lui un sac à dos
d’une contenance maximale donnée. Il veut maximiser la valeur de son butin. Quels objets doit-il
emmener tout en respectant la contrainte de contenance de son sac-à-dos ? Pour calculer la valeur
des objets dans le sac-à-dos du voleur (la fonction-objectif), il faut savoir quels objets sont dans
son sac et lesquels n’y sont pas ! On introduit pour cela une variable binaire pour chaque objet de
l’appartement, qui indique si le voleur prend ou non cet objet. Le modèle s’écrit alors :
• Ensembles :
− o ∈ O Objets
• Paramètres :
− vo le volume de l’objet o, ∀o ∈ O
− go la valeur de l’objet o, ∀o ∈ O
− V̄ le volume du sac à dos
• Variables : (
1 si l’objet o est choisi
xo =
0 si l’objet o n’est pas choisi
CHAPITRE 3: PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 29

• Modèle ILP :
X
max z = go xo (Gain total)
o∈O
X
vo xo ≤ V̄ (Non-dépassement du voulment du sac)
o∈O

xo ∈ {0, 1} ∀o∈O (Contraintes naturelles)

Ainsi, lorsqu’on multiplie la valeur des objets dans la fonction-objectif par la variable binaire, cela
permet de compter la valeur de l’objet dans la somme si l’objet est choisi, ou de l’annuler si l’objet
n’est pas choisi. C’est l’un des grands avantages de la programmation en nombres binaires.

3.2.2 Les franchises - problèmes de recouvrement minimal


i
Une chaîne de restaurants a décidé d’accorder des franchises dans une région divisée en 10
secteurs (figure 3.1). L’implantation d’une franchise a des coûts, qui dépendent de la région dans
laquelle est implantée la franchise. La chaîne veut pouvoir affirmer dans sa publicité régionale :
“Quel que soit le secteur où vous habitez, nous avons un restaurant près de chez vous. Ce res-

s
ée
taurant est dans votre secteur ou dans un secteur limitrophe à celui où vous demeurez”.
Dans quels secteurs la chaîne devra-t-elle implanter des franchises pour respecter sa promesse avec
ig
rr
un investissement minimal ?
co
n
no

6
1
s

5
ve
eu

2
r
Ép

3 7
4

10
8
9

Figure 3.1: Carte des quartiers d’implantation possibles de franchises

Franchise 1 2 3 4 5 6 7 8 9 10
Coût (milliers de $) 10 7 16 8 9 12 15 12 7 8

Tableau 3.1: Coûts d’implantation des franchises

Pour répondre à cette question, il suffit de créer une variable binaire pour chaque région, qui
indique, si oui ou non, un restaurant y est installé, comme dans le problème du sac-à-dos. Pour tenir
compte de la contrainte de proximité, on crée pour chaque région i le sous-ensemble des régions
CHAPITRE 3: PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 30

qui lui sont limitrophes, elle comprise : il faut qu’il y ait au moins un restaurant installé dans ce
sous-ensemble, et ce pour chaque région i. Il s’agit d’un problème de la famille des problèmes de
recouvrement minimal.
Voici le problème formulé :
• Ensembles :
− i ∈ S Secteurs potentiels pour les franchises
− Si Sous-ensemble des secteurs limitrophes au secteur i ∈ S (le secteur i compris)
• Paramètres :
− ci coût d’implantation d’une franchise dans le secteur i, ∀i ∈ S
• Variables : (
1 si le secteur i est choisi
xi =
0 si le secteur i n’est pas choisi

• Modèle ILP :
X
min z = ci xi (Coût total d’implantation)
i∈S
(3.1)

s
ée
X
xj ≥ 1 ∀i∈S (Au moins une franchise dans chaque sous-ensemble de régions )
ig
j∈Si
rr
(3.2)
co

xi ∈ {0, 1} ∀i∈S (Contraintes naturelles)


(3.3)
n
no

Il existe une autre facon de modéliser le problème sans faire appel à des sous-ensembles, de la
s

même manière que dans le problème des standardistes (section 2.1). On introduit un paramètre αij
ve

qui vaut 1 si les secteurs i et j sont limitrophes, et 0 sinon. La contrainte 3.2 devient :
r eu

X
αij xj ≥ 1
Ép

j∈S

3.2.3 Les sergents - problèmes d’affectation


i
Un autre type de problème classique utilisant l’ILP binaire est la famille des problèmes d’affec-
tation (de personnel, de ressources...). En voici un exemple : À intervalles réguliers, l’armée organise
la rotation d’une partie de son personnel. L’armée dispose d’une liste de sergents, et elle souhaite
réaffecter chacun au poste de l’un de ses autres collègues. L’armée a évalué pour chacun des sergents
les coûts de mutation à chaque poste (voir tableau 3.2).
L’objectif est de s’assurer au moindre coût que chaque sergent occupe un nouveau poste, et que
tous les postes soient comblés.
CHAPITRE 3: PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 31

a b c d e f g h i j
a - 12 15 11 17 15 11 12 10 10
b 6 - 14 12 16 11 17 18 18 16
c 8 17 - 21 17 16 14 12 10 15
d 7 16 9 - 12 18 18 14 11 14
e 7 13 8 12 - 22 19 12 13 12
f 8 8 11 14 12 - 12 17 9 18
g 6 9 13 9 11 16 - 14 13 16
h 7 14 16 11 16 22 15 - 14 18
i 11 16 17 15 17 18 21 22 - 11
j 8 9 8 13 9 7 8 9 8 -

Tableau 3.2: Coûts de mutation d’un poste à l’autre à l’armée

Dans les problèmes d’affectation, on utilisera une variable binaire à deux indices pour indiquer si
la ressource i est affectée au poste j, c’est-à-dire dans cet exemple, si le sergent s est affecté au poste
de son collègue m. Il faudra aussi s’assurer qu’un sergent n’est affecté qu’à un seul poste, que tous
les postes sont comblés, et qu’aucun sergent n’est réaffecté au poste qu’il occupait précédemment.

s
Ce type de contraintes (une seule ressource par poste, un seul poste par ressource, et chaque poste

ée
est comblé) est récurrent dans les problèmes d’affectation.Le modèle est le suivant :
ig
• Ensembles :
rr
− m, s ∈ M , l’ensemble des collègues militaires
co

• Paramètres :
n

− csm Coût d’assignation du sergent s au poste du collègue m, ∀s, m ∈ M


no

• Variables :
s

(
ve

1 si le sergent s ∈ M est assigné au poste du collègue m ∈ M


xsm =
eu

0 autrement
r
Ép

• Modèle ILP :
X X
min z = csm xsm (Coût total d’affe
s∈M m∈M
X
xsm =1, ∀ s ∈ M (Chaque sergent est assigné à un nouveau poste)
m∈M
X
xsm =1, ∀ m ∈ M (Chaque ancien poste est couvert par un sergent)
s∈M

xss =0, ∀ s ∈ M (Chacun change de poste)


xsm ∈ {0, 1},∀ s ∈ M, m ∈ M (Contraintes naturelles)

3.2.4 L’équipe - Problème avec contraintes de compatibilité


Voici un exemple de problème dans lequel on ajoute des contraintes supplémentaires liant les
différentes variables. Il s’agit d’un groupe de 12 arpenteurs-géomètres parmi lesquels on veut sélec-
tionner au meilleur coût possible une équipe de 6 arpenteurs qui s’entendent bien. On connaît les
affinités personnelles entre les membres du groupe, et on ne souhaite prendre que des personnes qui
s’entendent bien. Les affinités sont les suivantes :
CHAPITRE 3: PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 32

− si 3 et 8 sont dans l’équipe, 9 ne peut pas y être


− 2 et 11 ne travaillent pas l’un sans l’autre
− si 4 ou 5 sont dans l’équipe, 7 ne doit pas en faire partie
− 1, 3, 6, 10, 12 ont de fortes personnalités, et on ne peut donc prendre que 3 de ces arpenteurs
au maximum pour éviter les conflits
− 3, 5 et 12 sont les leaders du groupe, il ne faudra en choisir qu’un parmi eux.
On connait les honoraires de chacun des 12 arpenteurs :{56, 55, 54, 57, 49, 51, 54, 56, 52, 55, 53, 50}.
Voici le modèle dans lequel les contraintes sont écrites de façon explicite :
• Ensembles : c ∈ C, l’ensemble des arpenteurs
• Paramètres : gc , honoraire de l’arpenteur c, ∀c ∈ C
• Variables : xc , variable binaire définissant si l’arpenteur c est choisi ou non, ∀c ∈ C
P
• Fonction-objectif : min z = gc xc
c∈C
• Contraintes
X
− On doit choisir 6 candidats : xc = 6
c∈C
− Si 3 et 8, alors non 9 :

s
ée
x9 ≤ 2 − (x3 + x8 )
ig
rr
Vérifions que cette équation traduit bien la contrainte énoncée :
co

Cas possibles Contrainte Explication


n

si x3 et x8 ne sont pas embauchés x9 ≤ 2 x9 peut prendre n’importe quelle valeur 0 ou 1.


no

si x3 ou x8 est embauché x9 ≤ 1 x9 peut prendre n’importe quelle valeur 0 ou 1.


si x3 et x8 sont embauchés x9 ≤ 0 x9 ne peut prendre que la valeur 0.
s
ve
eu

− Si 2 alors 11 et réciproquement :
r

x2 = x11
Ép

− Si 4 ou 5, alors non 7 :

x7 + x4 ≤ 1
x7 + x5 ≤ 1

− Pas plus de trois de 1, 3, 6, 10, 12 :

x1 + x3 + x6 + x10 + x12 ≤ 3

− Un et un seul de 3, 5, 12 :
x3 + x5 + x12 = 1

On peut aussi écrire le modèle de façon algébrique, de façon à pouvoir le généraliser à tous
types de contraintes sur les candidats. Comme dans le problème de recouvrement minimal, on
associe alors un sous-ensemble à chaque candidat, ou plutôt à chaque groupe de candidats ici. H
CHAPITRE 3: PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 33

représente l’ensemble des sous-groupes qui présentent des conditions. On associe à chaque groupe
Sh de candidats soumis à des restrictions : le groupe des candidats à inclure (Ih ) ou exclure (Eh ) si
tous les employés du groupe Sh sont choisis, et le nombre minimal nlh et maximal nuh de candidats
à prendre dans le groupe Sh . L’ensemble des conditions est représenté dans le tableau 3.3 :

h Sh Ih Eh nuh nlh Taille du sous-ensemble


1 3,8 ∅ 9 |S1 | 0 |S1 | = 2
2 2 11 ∅ |S2 | 0 |S2 | = 1
3 11 2 ∅ |S3 | 0 |S3 | = 1
4 4 ∅ 7 |S4 | 0 |S4 | = 1
5 5 ∅ 7 |S5 | 0 |S5 | = 1
6 1,3,6,10,12 ∅ ∅ 3 0 |S6 | = 5
7 3,5,12 ∅ ∅ 1 1 |S7 | = 3

Tableau 3.3: Caractéristiques des sous-groupes d’arpenteurs

Dans ce tableau, |Sh | représente le cardinal de Sh , c’est-à-dire le nombre de candidats dans le


groupe Sh . Le modèle s’écrit de la façon suivante :
• Ensembles :

s
− c ∈ C, l’ensemble des candidats
ée
ig
− h ∈ H, l’ensemble des sous-ensembles de candidats soumis à des restrictions
rr
• Paramètres :
co

− gc honoraire pour le candidat c ∈ C


n
no

− Sh Sous-ensemble h ∈ H de candidats avec des restrictions


− Eh Sous-ensemble des candidats à exclure si on choisit tous les arpenteurs de Sh
s
ve

− Ih Sous-ensemble des candidats à inclure si on choisit tous les arpenteurs de Sh


eu

− nuh , nlh Nombre max/min de candidats à choisir dans le sous-ensemble Sh


r

• Variables :
Ép

(
1 si le candidat c est choisi
xc =
0 autrement

• Modèle ILP :
X
min z = gc xc (3.4)
c∈C
X
xc ≤ nuh , ∀h∈H (3.5)
c∈Sh
X
xc ≥ nlh , ∀h∈H (3.6)
c∈Sh
X
xe ≤ |Sh | − xc , ∀ h ∈ H, ∀ e ∈ Eh (3.7)
c∈Sh
X
xi ≥ xc − |Sh | + 1, ∀ h ∈ H, ∀ i ∈ Ih (3.8)
c∈Sh

xc ∈ {0, 1},∀ c ∈ C (3.9)

Dans ce modèle,
CHAPITRE 3: PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 34

− 3.4 est le coût total de l’équipe.


− 3.5 impose, pour chaque sous-ensemble d’arpenteurs h, un nombre maximum d’arpenteurs du
sous-ensemble qui doivent être choisis.
− 3.6 impose, pour chaque sous-ensemble d’arpenteurs h, un nombre minimum d’arpenteurs du
sous-ensemble qui doivent être choisis.On remarque que pour le groupe S7 , le nombre minimal
d’arpenteurs à prendre est égal au nombre maximal. Le nombre d’arpenteurs à prendre dans
ce groupe doit être à la fois plus grand ou égal à 1, et plus petit ou égal à 1. Il faut donc
prendre exactement 1 arpenteur du groupe S7 .
− 3.7 impose pour chaque arpenteur e du sous-ensemble Eh , que celui-ci ne soit pas choisi si
tous les arpenteurs du sous-ensemble Sh sont choisis.
− 3.8 impose pour chaque arpenteur i du sous-ensemble Ih , que celui-ci soit choisi si tous les
arpenteurs du sous-ensemble Sh sont choisis.
− 3.9 indique les contraintes naturelles.

3.2.5 La verrerie - Facility location problems


i

s
Voici un exemple particulier de problème d’affectation, qui fait partie de la sous-famille des
problèmes de facility location.
ée
ig
Une verrerie exploite des usines de verre dépoli dans chacune des villes suivantes : A, B, C, D, E.
rr
Le procédé de fabrication exige de l’acide fluorhydrique. Le ministère de l’environnement exige que
co

les fûts d’acide soient entreposés à la campagne, loin des centres habités, en raison des dangers
n

sanitaires afférents.
no

La verrerie a repéré 4 emplacements, qui ont reçu l’agrément du Ministère, où il serait possible de
stocker les fûts. Le coût d’installation d’un site est de 85 000$ quelque soit le site, mais les coûts
s
ve

d’entretien annuels varient en fonction du site.


eu

Il est convenu que chaque usine sera approvisionnée en acide à partir d’un seul emplacement. Enfin,
les coûts annuels (en milliers de dollars) d’acheminement des fûts de chacun des emplacements vers
r
Ép

chacune des villes varient en fonction de leur distance respective.


Sur quels emplacements faut-il construire des installations ? Quelles sont les usines qui seront ap-
provisionnées en acide à partir de chacun des emplacements choisis ?

Coûts de transport entre terrains et usines


Terrain Coût d’entretien
Terrain Usine A Usine B Usine C Usine D Usine E
1 12 000
1 7 13 11 6 11
2 4000
2 9 18 5 10 23
3 4000
3 16 8 5 17 15
4 10 000
4 12 8 7 12 8

Voici le modèle complet correspondant :

• Ensembles :
− v ∈ V Les villes
− e ∈ E Les emplacements
• Paramètres :
CHAPITRE 3: PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 35

− ce coût d’implantation d’un entrepôt à l’emplacement e, ∀e ∈ E


− dev coût de transport entre l’emplacement e et la ville v, ∀e ∈ E, ∀v ∈ V
• Variables :
(
1 si l’emplacement e est choisi
xe =
0 autrement
(
1 si l’emplacement e approvisionne la ville v
fev =
0 autrement

• Modèle ILP :
Dans ce problème, il y a deux décisions à prendre : où construire des entrepôts, et quelles
usines approvisionner à partir de chaque entrepôt. Les deux décisions dépendent l’une de
l’autre, puisqu’un terrain sur lequel on ne construit pas d’entrepôt ne peut évidemment pas
approvisionner une usine. Il faudra donc inclure une contrainte dans le problème pour repré-
senter cette interdépendance (contrainte 3.12).
X XX
min z = ce x e + dev fev (3.10)
e∈E e∈E v∈V

s
X
fev = 1, ∀ v ∈ V (3.11)
e∈E
ée
X
ig
fev ≤ xe , ∀ e ∈ E, v ∈ V (Ou) fev ≤ M xe , ∀ e ∈ E (Alternative) (3.12)
rr
v∈V
co

xe ∈ {0, 1}, ∀ e ∈ E (3.13)


n

fev ∈ {0, 1}, ∀ e ∈ E, ∀v ∈ V (3.14)


no

Avec :
s
ve

− 3.10 la somme des coûts d’implantation et de transport


eu

− 3.11 permet d’indiquer que chaque ville ne peut être desservie que par un entrepôt.
r
Ép

− 3.12 fait le lien entre les variables fev et xe et traduit le fait que si un emplacement e n’est
pas construit (xe = 0), il ne peut approvisionner aucune ville (fev = 0, ∀v).
− 3.13 et 3.14 sont les contraintes naturelles.

Remarque: 3.2.1 (La technique du grand M)


Dans la version alternative de l’équation 3.12, M est un nombre très grand. Ainsi, deux cas
peuvent se présenter :
— si l’emplacement e n’est pas choisi, M xe = 0, et tous les fev doivent être nuls, l’emplace-
ment ne peut approvisionner aucune ville
P
— Par contre, si l’emplacement e est choisi, M xe = M , et fev est borné supérieurement
v∈V
par un nombre M beaucoup plus grand que les quantités en jeu dans le problème, ce qui
est équivalent à dire que la somme n’est pas bornée : les fev peuvent prendre n’importe
quelle valeur ; autrement dit, si l’emplacement est choisi, il n’y a pas de contrainte sur le
nombre de villes qu’il peut approvisionner.
CHAPITRE 3: PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 36

Cette technique du M est très utilisée pour représenter le fait qu’une contrainte doit être vérifiée,
ou non, en fonction d’un choix, d’un contexte.
Concrètement, pour choisir une valeur pour M , on remarque que la valeur maximale de
P
fev est atteinte si e approvisionne toutes les villes et est alors égale au nombre de villes
v∈V
(= |V |). Il suffit donc de prendre M = |V | pour que M soit plus grand que toutes les valeurs
possibles, mais on peut prendre n’importe quelle autre valeur de M plus grande que |V |.
Un autre exemple d’utilisation de M pour activer ou non une contrainte est présenté au
problème 3.2.8.

3.2.6 Les chaises - Utilisation de lots


i
Une compagnie produit deux type de chaises, A et B. La compagnie prévoit de gagner 450$ et
800$ pour la vente d’une chaise de type A ou B respectivement. Elle veut cuire à l’infrarouge la
laque dont sont enduites les chaises dans un four dont la disponibilité est de 140 heures.
Ce four peut contenir un lot d’un maximum de 10 chaises de type A, ou 5 chaises de type B. Il est

s
ée
impossible d’enfourner les chaises A et B simultanément car leur temps de cuisson est différent : 8
ig
heures pour le type A et 6 pour le type B. La compagnie évalue à 120$ le coût de cuisson d’un lot
rr
de type A et 100$ pour le type B.
co

On s’intéresse à déterminer le plan de production optimal.


Le problème peut se modéliser de la façon suivante :
n
no

• Ensembles :
− p ∈ P , Les types de chaises
s
ve

• Paramètres :
eu

− gp , gain pour la vente d’une chaise du type p, ∀p ∈ P


r

− d, disponibilité en heures du four


Ép

− up , nombre maximal de chaises du type p dans un lot, ∀p ∈ P


− tp , temps de cuisson pour les chaises du type p, ∀p ∈ P
− cp , coût pour la cuisson d’un lot de chaises du type p, ∀p ∈ P
• Variables :
− xp , Quantité de chaises du type p, ∀p ∈ P
− yp , Quantité de lots du type p, ∀p ∈ P
• Modèle ILP :
X X
max z = gp xp − cp yp (Bénéfices nets) (3.15)
p∈P p∈P
X
tp yp ≤ d (Non-dépassement de la disponibilité du four) (3.16)
p∈P

xp ≤ up yp ∀p∈P (Lien entre yp et xp ) (3.17)


xp ∈ Entiers ∀ p ∈ P (Contraintes naturelles) (3.18)
yp ∈ Entiers ∀ p ∈ P (3.19)
CHAPITRE 3: PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 37

3.2.7 Problème d’entreposage


Pour la fabrication de 4 produits, une entreprise dispose de 3 usines distinctes. Le processus de
production de chaque produit prévoit l’utilisation de toutes les usines. Tous les produits doivent
être stockés. L’entreprise dispose de 4 000 m3 d’espace d’entreposage pour un coût unitaire de 1.2$.
L’entreprise peut louer de l’espace supplémentaire, par tranches de 2000 m3 , aux tarifs dégressifs
donnés dans le tableau 3.5. La compagnie doit fabriquer au moins 5 000 caisses de P1 et P2
confondues , au plus 4 000 caisses de P2, au moins 2 000 caisses de P4, et un total d’au plus 30 000
caisses de P1 et P3 confondus.
L’objectif de la compagnie est de trouver le plan de production qui lui permettra de maximiser le
gain net.

Atelier/Produit P1 P2 P3 P4 Disponibilité
A1 0.12h 0.15h 0.10h 0.09h 2 760h
A2 0.10h 0.09h 0.15h 0.10h 2 500h
A3 0.05h 0.04h 0.04h 0.05h 1 200h
Profit unitaire 2.20$ 1.90$ 2.25 $ 1.71$
Espace unit. 0.27m3 0.28m3 0.29m3 0.24m3

s
Tableau 3.4: Temps requis par produit et atelier, profit et espace requis unitaires, disponibilité des
ateliers
ée
ig
Espace 2 4 6 8 10 12 14 16
rr
Coût 3 4.8 6.4 7.8 9 10 10.8 11.5
co

Tableau 3.5: Coût mensuel unitaire de location (espace en milliers de m3 )


n
no

Le problème peut se modéliser de la façon suivante :


s
ve

• Ensembles :
eu

− p ∈ P , Produits
r

− u ∈ U , Usines
Ép

− t ∈ T , Tranches d’espaces de location


− h ∈ H, Ensemble des sous-ensembles de produits soumis à des restrictions
• Paramètres :
− gp , gain pour la vente unitaire du produit p, ∀p ∈ P
− vp , volume unitaire occupé par le produit p, ∀p ∈ P
− apu , temps unitaire d’utilisation de l’usine u pour le produit p , ∀p ∈ P, ∀u ∈ U
− C, E, Coût et espace d’entreposage de base
− ct , coût de l’espace de location t, ∀t ∈ T
− et , volume de l’espace de location t, ∀t ∈ T
− Sh , sous-ensemble de produits h ∈ H soumis à des restrictions, ∀h ∈ H
− uh , lh , nombre max/min de produits dans le sous-ensemble Sh , ∀h ∈ H
• Variables :
− xp , Quantité de caisses de produit p, ∀p ∈ P
CHAPITRE 3: PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 38

(
1 si la location se fait au tarif t
− yt =
0 autrement
• Modèle ILP :
X X
max z = gp xp − C − ct yt (Bénéfices - coûts d’entreposage)
p∈P t∈T
X
apu xp ≤ du ∀u∈U (Non-dépassement de la disponibilité de chaque usine)
p∈P
X X
vp xp − E ≤ et yt (Volume des caisses stockées inférieur à l’espace loué)
p∈P t∈T
X
yt ≤ 1 (Un seul tarif est possible)
t∈T
X
x p ≥ lh ∀h∈H (Limite minimale de production pour chaque h)
p∈Sh
X
xp ≤ uh ∀h∈H (Limite maximale de production pour chaque h)
p∈Sh

xp ∈ Entiers, ∀p∈P (Contraintes naturelles)


yt ∈ {0, 1} ∀t∈T

s
3.2.8 La diète - Contraintes optionnelles
ée
ig
rr
Il peut arriver que respecter l’ensemble des contraintes souhaitées mène à des solutions difficiles
co

à appliquer du point de vue du décideur, par exemple que le respect de toutes les exigences de qua-
lité des produits manufacturés lui coûte trop cher. Dans ce cas, il peut être intéressant de formuler
n
no

un problème dans lequel un nombre fixe de contraintes soit respectée, par exemple 2 contraintes
sur les 3 souhaitées. L’exemple suivant montre comment formuler ce type de problèmes.
s

L’objectif d’un diététicien est de respecter un régime qui apporte les quantités nécessaires de glu-
ve

cides, protides et lipides au moindre coût en combinant les aliments A et B de façon optimale.
eu

Les contenus de chaque aliment et leur prix, ainsi que les besoins journaliers en nutriments, sont
r
Ép

explicités dans le tableau 3.6. Pour limiter le coût de la diète, on souhaite que les besoins soient
comblés pour au moins 2 des 3 substances nécessaires à la diète.

Substance Aliment A Aliment B Besoin journalier (mg)


Glucides 120 200 1200
Lipides 300 250 2200
Protides 200 200 1375
Coût unitaire ($) 5 6

Tableau 3.6: Données du problème de diète

Pour modéliser ce problème, on introduit une variable binaire vs qui vaut 1 si le besoin en
substance s est comblé, et 0 sinon. Il faut donc que la somme des vs soit au moins égale 2.
On introduit également une constante M très grande devant les autres données du problème (par
exemple M = 10000) qui va nous permettre d’annuler une contrainte quand celle ci ne peut pas
être respectée, comme le montre la formulation du problème ci-dessous :
• Ensembles
CHAPITRE 3: PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 39

− a ∈ A, l’ensemble des aliments


− s ∈ S, l’ensemble des substances
• Variables
− xa , la quantité d’aliment a à intégrer dans la diète, ∀a ∈ A
− vs , tel que vs = 1 si le besoin en substance s est respecté, 0 sinon
• Paramètres
− pa , le coût unitaire de l’aliment a, ∀a ∈ A
− bs , le besoin journalier en substance s, ∀s ∈ S
− cas , la quantité de substance s contenue dans un aliment a, ∀a ∈ A, ∀s ∈ S
− M , une constante grande devant les autres données
• Fonction-Objectif
X
min z = pa xa (Coût total)
a∈A

• Contraintes
P
cas xa ≥ bs − M (1 − vs ), ∀ s ∈ S (Besoins satisfaits si vs = 1)

s
a∈A

ée
P
vs ≥2 (au moins 2 besoins satisfaits)
s∈S ig
xa ≥ 0, ∀a∈A (Contraintes naturelles)
rr
vs ∈ {0, 1}, ∀s∈S
co

Le même type de formulation peut bien sûr être utilisé si on souhaite respecter un nombre
n
no

fixe de contraintes de type ≤ au lieu de ≥. Si par exemple, au lieu de vouloir combler un besoin
nécessaire en substance, on souhaite ne pas dépasser une quantité maximale d’apports, la contrainte
s

deviendrait :
ve

X
cas xa ≤ bs + M (1 − vs ), ∀ s ∈ S
eu

a∈A
r
Ép

Dans ce cas, si vs = 1, la contrainte est satisfaite, et si vs = 0, il n’y a pas de contrainte sur la


quantité de droite de l’équation. On retrouve l’utilisation de M introduite à la remarque 3.2.1.

3.2.9 Le meunier - Linéarisation de la fonction-objectif *


Ce type de problème est plus complexe que les précédents et est présenté comme un complément
au cours.
Un meunier dispose de 8 000 kg d’une céréale A et de 9 000 kg d’une céréale B, qu’il a déjà
payés. Il veut les moudre, puis les mélanger pour produire des farines F1 et F2 , la première devant
contenir au moins 50% de la céréale A, la seconde, au moins 60% de cette même céréale. La farine
F1 rapporte 4.1$/kg, et la farine F2 6.1$/kg. Le meunier désire maximiser le revenu qu’il retirera
de la vente des deux farines.

Le problème peut se modéliser de la façon suivante :


• Ensembles
− c ∈ C, l’ensemble des céréales. C = {A, B}
− f ∈ F , l’ensemble des farines. F = {F1 , F2 }
CHAPITRE 3: PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 40

• Paramètres
− gf , le gain pour la vente d’un kilo de la farine f , ∀f ∈ F
− qf , le pourcentage de céréale A(c = 1) que doit contenir la farine f , ∀f ∈ F
− dc , la quantité totale de céréale c disponible (en kg), ∀c ∈ C
• Variables
− xf c , le nombre de kilos total de la céréale c utilisés pour produire la farine f , ∀f ∈ F, ∀c ∈
C
• Fonction-objectif
XX
max z = gf xf c , (Gain total)
c∈C f ∈F

• Contraintes
X
xf c ≤ dc , ∀c∈C (Respect de la disponibilité de chaque céréale)
f ∈F

(3.20)
x
P f 1 ≥ qf , ∀f ∈F (Respect du taux minimum de A pour chaque farine)
xf c

s
c∈C

ée
ig (3.21)
xf c ≥ 0, ∀ c ∈ C, f ∈ F (Contraintes naturelles)
rr
(3.22)
co
n

La contrainte 3.21 n’est pas linéaire, on la transforme en :


no

X
xf 1 − qf xf c ≥ 0, ∀ f ∈ F
s

c∈C
ve
eu

Supposons maintenant que le meunier peut se procurer 15 000 kg supplémentaires de la céréale


A aux prix suivants :
r
Ép

• les 5 000 premiers kilos à 2.2$ chacun


• les 5 000 kg suivants à 2$ chacun
• les 5 000 derniers kilos à 1.8$ chacun
Le meunier souhaite maintenant savoir combien de céréales supplémentaires acheter pour maximiser
ses revenus, en sus de définir le nombre de kilos de chaque farine qu’il doit produire.
Si s est la quantité supplémentaire de céréale A que le meunier doit acheter, et P le coût correspon-
dant, alors P dépend de s selon une fonction linéaire par parties comme l’illustre sa représentation
graphique :
CHAPITRE 3: PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 41

Coût unitaire P (s)

2.2

1.8

s (T) s (T)
5 10 15 5 10 15

Figure 3.2: Coût unitaire de A Figure 3.3: Coût total en céréale A


La fonction-objectif a alors pour expression :
XX
max z = gf xf c − P
c∈C f ∈F

s
ée
et est également linéaire par parties, mais non linéaire. Pour se ramener à un problème de program-
ig
mation linéaire, on introduit les intervalles de quantité achetée Ip ∀ p ∈ {1, 2, 3}, correspondants aux
rr
prix d’achat possibles, et dont les bornes supérieures sont appelées Mp (avec également M0 = 0) :
co
n

I1 = [0 5000] = [M0 M1 ],
no

I2 =]5000 1000] =]M1 M2 ],


s

I3 =]10000 15000] =]M2 M3 ]


ve
eu

On introduit également une nouvelle variable lp , ∀ p ∈ {1, 2, 3}, telle que lp = 1 si des céréales sont
r

achetées au prix de l’intervalle Ip , et lp = 0 sinon. On peut alors réécrire la fonction-objectif de la


Ép

façon suivante pour la linéariser :


XX X
max z = gf xf c − tp sp
c∈C f ∈F p≤3

dans laquelle on a introduit :


• le paramètre tp , le tarif unitaire de céréales achetées dans l’intervalle p, ∀p ∈ {1, 2, 3}
• la variable sp , le nombre de kilos de céréales achetés dans l’intervalle p, ∀p ∈ {1, 2, 3}
Des conditions doivent être imposées sur les sp , de façon à s’assurer qu’on achète des céréales d’un
intervalle Ip seulement si on a acheté la quantité totale de l’intervalle précédent (3.23) ; que sp est
nul si lp l’est (3.24, avec B un grand nombre) ; et qu’on n’achète pas plus que ce qui est disponible
(3.25) :

lp ≥ lp+1 , ∀p ∈ {1, 2} (3.23)


sp ≤ Blp ∀ p ∈ {1, 2, 3} (3.24)
sp ≤ Mp − Mp−1 , ∀ p ∈ {1, 2, 3} (3.25)
CHAPITRE 3: PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 42

En résumé, le problème complet s’écrit :


• Ensembles :
− c ∈ C, l’ensemble des céréales.
− f ∈ F , l’ensemble des farines.
− p ∈ P , l’ensemble des intervalles de prix d’achat.
• Paramètres :
− gf , le gain pour la vente d’un kilo de la farine f , ∀f ∈ F
− qf , le pourcentage de céréale A(c = 1) que doit contenir la farine f , ∀f ∈ F
− dc , la quantité totale de céréale c disponible (en kg), ∀c ∈ C
− Mp , la borne supérieure de l’intervalle Ip , ∀p ∈ {1, 2, 3}
− tp , le coût unitaire des céréales de l’intervalle Ip , ∀p ∈ {1, 2, 3}
• Variables :
− xf c , le nombre de kilos total de la céréale c utilisés pour produire la farine f , ∀f ∈ F, ∀c ∈
C
− sp , la quantité de céréale A achetée dans l’intervalle Ip , ∀p ∈ {1, 2, 3}

s
ée
− lp , une variable binaire qui vaut 1 si des céréales sont achetées dans Ip , et 0 sinon,
∀p ∈ {1, 2, 3}
ig
rr
• Fonction-objectif :
co

XX X
max z = gf xf c − tp sp , (Bénéfice net)
n

c∈C f ∈F p≤3
no

• Contraintes :
s
ve

X
xf c ≤ dc , ∀c∈C (Disponibilité) (3.26)
eu

f ∈F
r

X
Ép

xf 1 − qf xf c ≥ 0, ∀f ∈F (Taux minimum) (3.27)


c∈C

lp ≥ lp+1 , ∀p ∈ {1, 2} (Achats successifs) (3.28)


sp ≤ Blp ∀ p ∈ {1, 2, 3} (Lien entre variables) (3.29)
sp ≤ Mp − Mp−1 , ∀ p ∈ {1, 2, 3} (Max par intervalle) (3.30)
xf c ≥ 0, ∀ c ∈ C, f ∈ F (Contraintes naturelles) (3.31)
sp ≥ 0 ∀p ∈ {1, 2, 3} (3.32)
lp ∈ {0, 1} ∀p ∈ {1, 2, 3} (3.33)

3.3 Exercices
Exercice 11 (Speedy delivery)
Speedy Delivery fournit un service de livraison de deux jours sur de gros colis à travers les États-
Unis. Chaque matin, dans chaque centre de collecte, les colis arrivés pendant la nuit sont chargés
dans plusieurs camions pour être livrés dans toute la zone. Étant donné que le champ de bataille
concurrentiel dans ce secteur est la rapidité de livraison, les colis sont répartis entre les camions
CHAPITRE 3: PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 43

en fonction de leur destination géographique afin de minimiser le temps moyen nécessaire pour
effectuer les livraisons.
Ce matin-là, le distributeur pour la Rivière Bleue travaille dur. Ses trois chauffeurs arriveront dans
moins d’une heure pour effectuer les livraisons du jour.
Il y a neuf colis à livrer. Comme d’habitude, le distributeur a chargé ces emplacements dans son
ordinateur. Il utilise le logiciel spécial de son entreprise. La première chose que fait ce logiciel est
d’utiliser ces emplacements pour générer un nombre considérable de routes possibles et attrayantes
pour les camions de livraison individuels.
Ces itinéraires sont indiqués dans le tableau 3.7, ainsi que le temps estimé nécessaire pour parcourir
l’itinéraire. Le logiciel formule ensuite et résout un modèle ILP pour sélectionner trois itinéraires qui
minimisent leur temps total tout en incluant chaque emplacement de livraison sur un seul itinéraire.
Formuler ce modèle.

Pts de livraison Routes possibles


1 2 3 4 5 6 7 8 9 10
A 1 1 1
B 2 1 2 2 2
C 3 3 3 3

s
D 2 1 1
E 2 2 3
ée
ig
F 1 2
rr
G 3 1 2 3
co

H 1 3 1
n

I 3 4 2
no

Temps (hr) 6 4 7 5 4 6 5 3 7 6
s
ve

Tableau 3.7: Routes formulées par le logiciel. Les chiffres indiquent l’ordre de livraison des adresses.
eu

Exercice 12 (Fly Right)


r
Ép

La Fly-Right Airplane construit de petits avions à réaction destinés à être vendus à des entreprises
à l’usage de leurs dirigeants. Pour répondre aux besoins de ces dirigeants, les clients de la société
commandent parfois une conception personnalisée des avions. Lorsque cela se produit, un coût de
démarrage important est engagé pour lancer la production de ces avions.
Fly-Right a récemment reçu une demande d’achat de trois clients avec des délais courts. Cependant,
comme les installations de production de la société sont déjà occupées à remplir les commandes
précédentes, elles ne pourront pas accepter la totalité des trois commandes. Par conséquent, une
décision doit être prise sur le nombre d’avions que l’entreprise acceptera de produire pour chacun
des trois clients.
Fly Right veut déterminer le nombre d’avions à produire pour chacun des clients afin de maximiser
ses profits. Formulez une ILP pour résoudre le problème.
CHAPITRE 3: PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 44

Clients
1 2 3
Coût de démarrage (millions) 3 2 0
Revenu marginal (millions) 2 3 0.8
Capacité de production utilisée par avion 20% 40% 20%
Demande (avions) 3 2 5

Tableau 3.8: Paramètres du problème Fly-Right

Exercice 13 (Fly Right - version 2)


Une analyse plus détaillée des divers facteurs de coûts et de revenus de la production de Fly Right
a maintenant révélé que le bénéfice potentiel de la production d’avions pour chaque client ne peut
être exprimé simplement en termes de coûts de démarrage et de revenus fixes par avion produit. Au
lieu de cela, les bénéfices sont donnés dans le tableau 3.9. Formuler un modèle ILP incluant des
alternatives mutuellement exclusives.

Nombre d’avions Revenu (millions) par type d’avions


produits 1 2 3
0 0 0 0

s
ée
1 1 1 ig 1
2 2 5 3
rr
3 4 5
co

4 6
5 7
n
no

Tableau 3.9: Revenus de la Fly-Right en fonction de la production


s
ve

Exercice 14 (Progressive)
eu

La division Recherche et Développement de la société Progressive a développé quatre nouvelles lignes


r

de produits possibles. La direction doit maintenant décider lesquels de ces quatre produits seront
Ép

réellement produits et en quelle quantité.


Par conséquent, une étude de recherche opérationnelle a été demandée pour trouver la gamme de
produits la plus rentable. Un coût important est associé au début de la production de tout produit,
comme indiqué dans la première ligne du tableau suivant.
L’objectif de la direction est de trouver la gamme de produits qui maximise le bénéfice total (recettes
nettes totales moins les coûts de démarrage).
Soit les variables de décision continues x1 , x2 , x3 et x4 représentant les niveaux de production des
produits respectifs 1,2,3 et 4. La direction a imposé les contraintes suivantes sur ces variables :
— Seuls deux produits peuvent être produits.
— Chacun des produits 3 ou 4 ne peut être produit que si l’un des produits 1 ou 2 est produit
— Selon la machine utilisée, l’une ou l’autre des contraintes suivantes doit être respectée :

5x1 + 3x2 + 6x3 + 4x4 ≤ 6000


4x1 + 6x2 + 3x3 + 5x4 ≤ 6000
CHAPITRE 3: PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 45

Produits
1 2 3 4
Coût de démarrage 50 000 40 000 70 000 60 000
Revenu marginal 70 60 90 80

— Introduisez une variable binaire auxiliaire pour formuler une ILP pour résoudre ce problème.

s
ée
ig
rr
co
n
s no
ve
r eu
Ép
Chapitre 4

Résolution de la Programmation linéaire : le simplexe

i
Ce chapitre explore une méthode classique de résolution des problèmes de programmation li-
néaire, le simplexe. Il est possible de résoudre un problème à deux variables en utilisant la mé-
thode graphique comme introduit sur le problème Windor au paragraphe 1.3.1, mais la plupart

s
des problèmes réels ont un grand nombre de variables, ce qui demande d’automatiser la méthode

ée
et ne permet plus l’utilisation d’un simple graphique en 2 dimensions bb. Le noyau de ce chapitre
ig
présente donc l’algorithme du simplexe qui permet de résoudre les problèmes de programmation
rr
linéaire, quelque soit le nombre de variables (section 4.6). La section 4.1 présente au préalable
co

quelques notions fondamentales d’algèbre linéaire nécessaires à la compréhension du simplexe. Le


simplexe s’applique à une forme particulière de programmation linéaire dite forme standard.
n
no

Dans la section 4.2, on introduit cette forme, ainsi que le concept fondamental de solutions et
variables de base pour un problème de programmation linéaire en forme standard. Dans la section
s
ve

4.3, on montre que n’importe quel problème de programmation linéaire peut s’exprimer en forme
standard, ce qui donne la possibilité d’appliquer le simplexe à tout problème de programmation
eu

linéaire. L’interprétation géométrique de la programmation linéaire est ensuite explicitée dans la


r
Ép

section 4.4. Enfin, le théorème fondamental à la base du simplexe est énoncé dans la section 4.5,
avant l’explication détaillée de l’algorithme du simplexe (sections 4.6, 4.7 et 4.8) puis la présentation
de quelques cas particuliers (section 4.9).

4.1 Rappels d’Algèbre Linéaire


Cette section propose quelques rappels d’algèbre linéaire nécessaires à la compréhension du
cours. Pour de plus amples détails, se référer au cours d’Algèbre Linéaire M AT 165.

4.1.1 Matrices et vecteurs


On appelle matrice de dimension (m × n) tout tableau de coefficients comportant m lignes et
n colonnes. Chaque coefficient est noté aij , où i est le numéro de la ligne du coefficient, et j le

46
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 47

numéro de sa colonne. La matrice peut être écrite de façon explicite, de la façon suivante :
 
a11 a12 ... a1n
 a21 a22 ... a2n 
 
A=
 .. .. .. .. 

 . . . . 
am1 am2 ... amn

Elle peut aussi être écrite de façon implicite :


 
A = aij ,

où aij est le terme générique de A.


Un vecteur est une matrice particulière qui ne possède qu’une ligne ou qu’une colonne.
Le vecteur-colonne d’ordre n est une matrice de dimension (n × 1) :
 
c1
 c2 
 
c=
 .. 

.

s
cn

ée
Le vecteur-ligne d’ordre n est une matrice de dimension (1 × n) :
ig
rr
h i
co

l = l1 l2 ... ln
n

Ainsi, une matrice (m × n) peut aussi être vue comme une collection (une juxtaposition) de m
no

vecteurs-lignes, ou de n vecteurs-colonnes. Dans ce cas, on notera :


s

• Aj le j ième vecteur-colonne de la matrice A. Aj est donc de dimension (m × 1).


ve

• ai le iième vecteur-ligne de la matrice A. ai est donc de dimension (1 × n).


eu

Notons enfin que les matrices et vecteurs sont généralement indiqués en caractères gras, contrai-
r
Ép

rement aux scalaires, ce qui nous permet de distinguer ai , le vecteur-ligne correspondant à la ligne
i de la matrice A, de ai , le iième coefficient du vecteur a.

4.1.2 Matrices particulières


Matrice Identité

La matrice Identité In , ou simplement I, est une matrice carrée de dimension (n × n) contenant


des 1 sur sa diagonale et des 0 ailleurs.
Exemple :  
1 0 0
I3 = 0 1 0
 

0 0 1
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 48

Matrice Triangulaire Supérieure

Une matrice triangulaire est une matrice carrée dans laquelle tous les termes situés en dessous
de la diagonale principale sont nuls, c’est-à-dire :

aij = 0, ∀ i > j

Exemple :  
5 7 2 4
 
0 3 3 1
A=
0

 0 9 4
0 0 0 8

Matrice Augmentée

Soit A de dimension (m × n) et B de dimension (m × p). Augmenter la matrice A de B équivaut


 
à former la matrice de dimension (m × (n + p)) : A|B Exemple :
" # " # " #
3 5 2 7 8   3 5 2 7 8
A= ,B = , A|B =
1 1 9 2 2 1 1 9 2 2

s
ée
4.1.3 Opérations sur les matrices et vecteurs
ig
rr
co

Somme et différence de matrices

On peut faire la somme ou la différence de 2 matrices si elles sont de mêmes dimensions. Soit
n
no

     
A = aij et B = bij . Alors A + B = aij + bij . Exemple :
s

" # " # " #


2 2 1 2 3 4
ve

+ =
3 4 2 2 5 6
r eu
Ép

Produit d’un scalaire et d’une matrice

On multiplie une matrice par un scalaire en multipliant chacun de ses termes par ce scalaire.
 
Soit c ∈ R. cA = caij Exemple : " # " #
2 2 6 6
3 =
3 4 9 12

Produit scalaire de 2 vecteurs

Soi l un vecteur-ligne d’ordre n et c un vecteur-colonne d’ordre n. Le produit scalaire de l par


c est un scalaire :
 
c1
n
 c2 
i
h 
X
l · c = l1 l2 ... ln  . 
 = l1 c1 + l 2 c2 + ... + l n cn = li ci
 .. 

i=1
cn
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 49

Exemple : " #
h i 3
2 3 =2·3+3·1=9
1

Produit de 2 matrices

Si A est une matrice de dimension (m × n) et B une matrice de dimension (n × p), le produit


de A par B est la matrice C de dimension (m × p) définie par :

n
    X 
AB = C = cij = ai · Bj = aik bkj
k=1

C’est-à-dire que cij est le produit scalaire de deux vecteurs, la ligne ai et la colonne Bj .

Exemple :
 
" # 2 0 " #
2 −1 3  2 5
5 1 = , (c11 = 2 · 2 + (−1) · 5 + 3 · 1 = 2, etc.)

4 2 1 19 4
1 2

s
ée
Il est important de remarquer que l’on peut aussi écrire le produit AB comme la matrice issue
de la multiplication de la matrice A par chacun des vecteurs-colonnes Bj :
ig
rr
 
co

AB = AB1 |AB2 | · · · |ABp


n

Exemple :
no

 
# 2 " 0 " #
s

−1 3  2 2 5
ve

 
5 1 = , C1 |C2 ,

4 2 1 19 4
eu

1 2
   
r

" # 2 " # 0
Ép

2 −1 3   2 −1 3  
avec : C1 = AB1 = 5 , C2 = AB2 = 1
4 2 1 4 2 1
1 2

Cette propriété sera d’une grande utilité pour la compréhension du simplexe.

Matrice inverse

Une matrice carrée A est inversible (ou non singulière) s’il existe une matrice B de même ordre
telle que : AB = BA = I. B est appelée matrice inverse de A, et est notée A−1 .
Exemple : " # " # " #
1 3 4 −3 1 0
A= ,B = AB =
1 4 −1 1 0 1
Donc B est la matrice inverse de A.
Il existe plusieurs méthodes pour calculer l’inverse d’une matrice A, voir par exemple la méthode
de Gauss-Jordan à la section 4.1.10.
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 50

Transposée

La transposée d’une matrice est la matrice obtenue en échangeant les lignes et les colonnes de
cette matrice. Si A a pour dimension (m × n), sa transposée AT a donc pour dimensions (n × m).

si A = [aij ] alors : AT = [aji ]

Exemple :  
1 2 " #
 T 1 3 5
A = 3 4 , A =

2 4 6
5 6
La transposée d’un vecteur-ligne est un vecteur-colonne :
 
h i 1
T
l= 1 2 3 , l = 2
 

4.1.4 Opérations élémentaires sur des lignes

s
Opérations élémentaires

ée
ig
On peut réaliser trois types d’opérations dites élémentaires sur les lignes d’une matrice :
rr
1. Multiplier une ligne par un scalaire : Li ← cLi . La ligne Li est remplacée par cLi .
co

2. Ajouter à la ligne une autre ligne multipliée par un scalaire : Li ← Li + cLj . La ligne Li est
n

remplacée par Li + cLj .


no

3. Permuter deux lignes : Lij . La ligne Li est remplacée par Lj et vice-versa (peu utilisé).
s

Les opérations élémentaires peuvent être réalisées simplement sur la calculatrice Texas Instruments
ve

grâce aux commandes suivantes :


eu

• mRow(c,A,i) : cette commande renvoie la matrice A, dans laquelle la ligne Li est remplacée
r
Ép

par le produit cLi (opération 1).


• mRowAdd(c,A,i,j) : cette commande renvoie la matrice A, dans laquelle la ligne Li a été
remplacée par la combinaison linéaire cLi + Lj (opération 2).

Combinaisons linéaires

Les opérations élémentaires 1 et 2 sont des cas particuliers d’opérations entre plusieurs vecteurs
appelées combinaisons linéaires. Étant données des lignes L1 , L2 , · · · , Lm , une combinaison linéaire
est obtenue par une chaîne d’opérations élémentaires :

L = c1 L1 + c2 L2 + · · · + cm Lm
n
X
= ci Li , où c1 , c2 , · · · , cm ∈ R et : ∃i | ci 6= 0
i=1
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 51

Exemple :
 
1 3 h i h i h i h i
A = −1 2 , L = 2L1 + L2 − 3L3 = 2 1 3 + −1 2 −3 0 1 = 1 5
 

0 1

Dépendance linéaire

Des lignes L1 , · · · , Lm sont dépendantes linéairement si :


m
X
∃ c1 , · · · , cm / ci Li = 0 et ∃ i|ci 6= 0
i=1

c’est-à-dire s’il existe une combinaison linéaire des lignes qui donne une ligne nulle.
Exemple :  
2 4 h i
1 0 → 2L1 + L2 − L3 = 0 0
 

5 8
Cela signifie qu’on peut écrire n’importe quelle ligne comme combinaison linéaire des autres lignes

s
l
(exemple ici : L3 ∼ 2L1 + L2 ).
Dans le cas contraire, les lignes sont dites linéairement indépendantes.
ée
ig
Exemple :
rr
" #
3 0
co

est une matrice dont les lignes sont indépendantes.


0 1
n
no

4.1.5 Matrices ligne-équivalentes


s
ve
eu

Définition 4.1.1 (Matrices Lignes-Équivalentes)


r

Deux matrices A et B sont dites ligne-équivalentes si elles sont de mêmes dimensions et si B


Ép

peut être obtenue à partir de la matrice A par applications successives d’opérations élémentaires
l
de lignes. On écrit A ∼ B.

Exemple :    
1 3 1 −5
 l
A = −1 2 ∼ B = 0 5
  

0 1 0 4
Preuve :
       
1 3 1 3 1 3 1 −5
l l l
A = −1 2 L3 ∼ 4L3 −1 2 L2 ∼ L2 + L1 0 5 L1 ∼ L1 − 8L3 −1 2 =B
       

0 1 0 4 0 1 0 1
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 52

4.1.6 Systèmes d’équations linéaires


Considérons un exemple de système d’équations linéaires :

3x1 + 2x2 + x3 = 8
x2 + x3 = 1

On peut toujours représenter un système d’équations linéaires en forme matricielle, en associant à


chaque variable une colonne, et à chaque équation une ligne.
 
" # x1 " #
3 2 1   8
x2  = ou encore : Ax = b
0 1 1 1
x3

On peut aussi écrire le système sous la forme d’une matrice augmentée :


" #
3 2 1 8
(4.1)
0 1 1 1

s
ée
ig
Définition 4.1.2 (Système d’équations linéaires)
rr
Dans sa forme générale, un système d’équations linéaires à n variables (x1 , . . . , xn ) et m
co

contraintes s’exprime de la façon suivante :


n
no

a11 x1 +a12 x2 + ... +a1n xn = b1


a21 x1 +a22 x2 + ... +a2n xn = b2
s

.. .. .. .. ..
ve

. . . . .
eu

am1 x1 +am2 x2 + ... +amn xn = bm


r
Ép

Ou encore, sous forme matricielle :


 
Ax = b ou : A|b

Nombre de solutions d’un système et degrés de liberté

Un système d’équations linéaires peut avoir une solution, une infinité de solutions, ou aucune.
 T  T
Par exemple, on peut vérifier que x = 2 1 0 est solution du système 4.1, mais x = 7/3 0 1
également. Le paragraphe suivant vise à offrir une compréhension intuitive de la notion de degrés
de liberté d’un système, sans toutefois en proposer une explication rigoureuse.
On peut considérer que chaque ligne d’équation est une contrainte sur les variables et restreint
l’espace des solutions. Plus il y a de contraintes, plus le domaine des solutions possibles (=domaine
d’admissibilité) est restreint, c’est-à-dire qu’il perd un degré de liberté à chaque nouvelle contrainte
qui lie les variables entre elles. Ainsi dans l’exemple 4.1, la solution a 3 variables, c’est-à-dire 3
degrés de liberté. On peut la représenter comme un vecteur de 3 coordonnées dans l’espace à 3
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 53

dimensions. On peut toujours trouver une base de vecteurs orthogonaux, c’est-à-dire indépendants
les uns des autres, pour écrire les coordonnées du point-solution :
     
1 0 0
x = x1 0 + x2 1 + x3 0
     

0 0 1

Sans contraintes, x1 , x2 , x3 peuvent prendre n’importe quelle valeur dans R3 . Cependant, à chaque
nouvelle contrainte (ligne d’équation) ajoutée, on fixe la valeur d’une des coordonnées par rapport
aux autres : si on force 3x1 + 2x2 + x3 = 8, x1 et x2 peuvent toujours prendre n’importe quelle
valeur de R, mais x3 est alors immédiatement fixé et vaut x3 = 8 − 2x1 − 2x2 . Il n’y a plus que 2
degrés de liberté, c’est-à-dire que l’espace solution est maintenant réduit à un plan et non plus à
tout l’espace.
Si on ajoute encore une nouvelle contrainte, l’espace solution n’a plus qu’un degré de liberté, c’est-
à-dire qu’une seule des variables peut prendre n’importe quelle valeur de R, les deux autres étant
immédiatement fixées. L’ensemble-solution est une ligne. Si on ajoute une dernière contrainte, le
système n’a plus aucun degré de liberté, l’ensemble solution est un point unique.
Ainsi, dans un système d’équations à n variables normal (c’est-à-dire dans lequel les équations ne

s
sont ni dépendantes les unes des autres, ni contradictoires), le nombre d’équations m fixe le degré de

ée
liberté de la solution n−m, et pour n variables, il faut n équations pour obtenir une unique solution.
ig
rr
co

Cas particuliers
n

Il existe 2 cas dans lesquels le raisonnement précédent ne marche pas :


no

1. Si les équations ne sont pas linéairement indépendantes.


s

Cela veut dire qu’on peut trouver une combinaison linéaire pour écrire une ligne en fonction
ve

des autres. Une contrainte combinaison des autres contraintes ne diminue pas le degré de
eu

liberté du système, puisqu’elle ne fait que répéter les informations déjà présentes dans les
r

autres lignes. Autrement dit, si on peut exprimer une ligne en fonction des autres, celle-ci est
Ép

redondante et peut être éliminée sans changer le problème.


2. Si les équations sont contradictoires.
Si deux équations sont contradictoires, c’est-à-dire qu’on demande à la solution d’être en
même temps sur deux lignes, plans ou espaces parallèles qui ne se rencontrent pas (exemple :
x1 = 1 et x1 = 3), alors le système n’a pas de solution.

En résumé

Soit un système d’équations à n variables et n équations : Ax = b. Si les équations sont li-


néairement indépendantes et non contradictoires, alors le système admet une unique solution. On
remarque que cette solution peut être exprimée comme x = A−1 b.

4.1.7 Systèmes d’équations lignes-équivalents


Deux systèmes d’équations linéaires sont dits ligne-équivalents si leurs matrices associées (membres
de droite compris) sont lignes-équivalentes (voir Section 4.1.5).
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 54

Le concept de systèmes lignes-équivalents est important car il nous permet de trouver rapidement
les solutions d’un système d’équations grâce à des opérations élémentaires de ligne faites sur le
système représenté sous forme matricielle :

Théorème 4.1.1 (Systèmes équivalents)


  l  
Si A|b ∼ D|c , alors l’ensemble des solutions des deux systèmes est le même.

Par exemple, reprenons le système d’équations 4.1 et résolvons le :


( (
3x1 +2x2 =8 3x1 + 2x2 =8
⇒ (4.2)
x2 =1 2x2 =2
( (
3x1 =6 x1 =2
⇒ ⇒ (4.3)
2x2 =2 x2 =1

Le système de départ peut également s’écrire sous forme matricielle :

s
" #

ée
  3 2 8
A|b =
0 1 1
ig
rr
De façon similaire, la solution finale du système d’équation (c’est-à-dire x1 = 2 et x2 = 1 obtenu
co

 
en 4.3) peut aussi s’écrire sous forme matricielle : D|c .
n
no

" #
  1 0 2
D|c =
0 1 1
s
ve

   
Montrons que les systèmes A|b et D|c sont ligne-équivalents :
r eu

" # " # " #


3 2 8 l 3 2 8 l 3 0 6
Ép

L2 ∼ 2L2 L1 ∼ L1 − L2
0 1 1 0 2 2 0 2 2
" # " #
l 1 0 2 l 1 0 2
L1 ∼ L1 /3 L2 ∼ L2 /2
0 2 2 0 1 1

Grâce au théorème 4.1.1, on peut donc affirmer que les deux systèmes ont le même ensemble-
solution. Or, la forme du deuxième système est particulièrement intéressante pour exprimer la
solution puisque chaque variable n’apparait que dans une équation, et est précédée d’un coefficient
1 (le système est dit sous forme canonique). On peut donc lire directement la valeur de la solution
dans le vecteur c : x1 = 2 et x2 = 1.
De façon générale, on pourra toujours chercher à transformer un système d’équations linéaires en
un système canonique ligne-équivalent, afin de lire aisément sa solution.

4.1.8 Systèmes d’équations linéaires en forme canonique et solutions de


base
i
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 55

Soit le système suivant :

x1 +3x3 +x4 =2
(4.4)
x2 +x3 +5x4 =1

Ce système est dit canonique car deux variables sont isolées (x1 et x2 ), c’est-à-dire (a) n’appa-
raissent que dans une seule équation, et (b) sont précédées d’un coefficient 1. Il y a ici autant de
variables isolées que de lignes d’équations. On le voit clairement dans la représentation matricielle
du système ci-dessous :
" #
1 0 3 1 2
0 1 1 5 1

La forme canonique est particulièrement utile car elle permet de trouver facilement une solution du
système. En effet, on peut vérifier facilement que le système 4.4 admet au moins une solution qui
est (2, 1, 0, 0). Cette solution est obtenue en imposant la valeur zéro à x3 et x4 , les variables non
isolées.
" # On peut alors lire directement les valeurs de x1 et x2 dans le vecteur de droite du système :
2
.
1

s
De façon plus générale un système en forme canonique peut s’exprimer comme suit :

ée
x1 0 0 +a1,m+1 +...
ig
+a1n xn = b1
rr
0 x2 0 +a2,m+1 +... +a2n xn = b2
co

.. .. .. .. .. .. ..
. . . . . . .
n

0 0 xm +am,m+1 +... +amn xn = bm


no

ou encore, en forme matricielle :


s
ve

 
Base HorsBase
eu

···
 
 1 0 0 . . . b1 
r

 
0 1 0 0 . . . b2 
 
 ⇐⇒ Im |N|b

Ép


 .. .. .. .. .. 

 . . . . . . . . 

0 0 ··· 1 . . . bm

où Im est la matrice Identité de dimension m, et N une matrice quelconque de dimension (m × (n −


m)). Dans ce système, les m premières variables sont isolées, c’est-à-dire qu’elles ne sont présentes
que dans une seule équation (leur colonne est composée de zéros et d’un seul coefficient 1). Ces
variables correspondant à la matrice Identité sont appelées les variables de base du système.
Les autres variables sont appelées variables hors base, ou encore variables indépendantes.
La caractéristique de ce type de systèmes est que l’on peut facilement leur trouver une solution
admissible (ce n’est pas la seule en général !), comme on l’a fait pour le système (4.4).
En effet, on peut construire facilement une solution d’un système canonique en imposant une
valeur nulle à toutes les variables hors base. Adoptons la notation xB pour les variables de base et
xN pour les variables hors base. On a : x = [xB , xN ]. Dans ce cas, les valeurs des variables de base
sont exactement les valeurs de b, puisque le système devient :
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 56

I · xB + N · xN = I · xB + N · 0 = b
⇐⇒ xB = b

On peut donc lire les valeurs des variables de base dans le vecteur de droite du système, c’est-à-dire
b. La solution x = [xB , xN ] = [b, 0] est appelée solution de base .

Par exemple, on peut vérifier que (6, −2, 7, 0, 0, 0) est solution de base du système suivant :

x1 + 3x4 + x6 = 6  
1 0 0 3 0 1 6
x2 + 2x4 + 5x5 = −2
 0 1 0 2 5 0 −2 
 
x3 + 3x4 − x5 + 2x6 = 7 0 0 1 3 −1 2 7

4.1.9 Méthode de Gauss-Jordan


i

s
ée
La méthode de Gauss-Jordan est une méthode qui permet de transformer un système pos-
ig
sédant au moins une solution en sa forme canonique. Elle consiste en une suite d’opérations élé-
rr
mentaires visant à éliminer les variables de base de toutes les équations sauf une. C’est exactement
co

ce que l’on a fait dans le système d’équation (4.3) pour trouver la solution : on a éliminé x2 en
l l
effectuant les deux opérations successives : L2 ∼ 2L2 puis L1 ∼ L1 − L2 . Gauss-Jordan est donc une
n
no

généralisation de la méthode de résolution de systèmes d’équations simples habituellement utilisée.


La méthode est la suivante :
s

Pour chacune des colonnes, c’est-à-dire pour j = 1..n :


ve

On veut transformer la colonne j en une colonne contenant un 1 sur la ligne j, et des 0 sur
eu

toutes les autres lignes. Pour cela :


r

l L
Ép

1. On multiplie la ligne j par un coefficient de façon à obtenir le 1 désiré (L¯j ∼ ajjj )


2. On effectue une opération élémentaire sur chacune des autres lignes successivement en leur
l
ajoutant la ligne j multipliée par le coefficient adéquat, de façon à obtenir un 0 (L̄i ∼ Li −
aij L¯j )
A titre d’exemple, appliquons la méthode de Gauss-Jordan au système suivant de 3 équations
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 57

à 3 inconnues :
   1 9
  1 9

2 2 1 9 1 1 2 2 1 1 2 2
l L1  l l
 2 −1 2 6  L1 ∼
 2 −1 2 6 L2 ∼ L2 − 2L1 0 −3 1 −3  L3 ∼ L3 − L1
    
2
1 −1 2 5 1 −1 2 5 1 −1 2 5
 1 9
  1 9
  5 7

1 1 2 2 1 1 2 2 1 0 6 2
 l  l l
 0 −3 1 −3 L2 ∼ − L32  0 1 − 31 1 L1 ∼ L1 − L2  0 1 − 31 1  L3 ∼ L3 + 2L2
   
3 1 3 1 3 1
0 −2 2 2  0 −2 2 2 0 −2 2 2
 5 7
 5 7

1 0 6 2 1 0 6 2 1 0 56 72
l l l
 0 1 − 13 1  L3 ∼ 65 L3  0 1 − 13 1  L2 ∼ L2 + L33  0 1 0 2  L1 ∼ L1 − 56 L3
     
5 5
0 0 6 2 0 0 1 3 0 0 1 3
 
1 0 0 1
0 1 0 2 
 

0 0 1 3

La solution du système est donc : x = (1, 2, 3).


La méthode de Gauss-Jordan est implémentée dans la calculatrice Texas Instruments à travers la
commande rref(A), A étant la matrice sur laquelle on veut appliquer la méthode.

s
ée
4.1.10 Calcul de la matrice inverse par Gauss-Jordan ig
i
rr
co
n

Définition 4.1.3 (Matrice de passage)


no

Soient A et B deux matrices de mêmes dimensions. Si une suite de transformations élémen-


taires de lignes transforme A en B, et que la même suite transforme l’identité en P, alors P
s
ve

est dite la matrice de passage de A à B, et elle est telle que : PA = B.


eu

En d’autres termes,
  l  
A|I ∼ B|P =⇒ PA = B
r
Ép

P garde en mémoire la suite d’opérations élémentaires effectuées pour transformer A en B.

  l  
Gauss-Jordan est une suite d’opérations élémentaires qui transforme A en I : A|I ∼ I|P .
Par conséquent : PA = I. La matrice de passage qui conserve les opérations de Gauss-Jordan est
donc l’inverse de A : P = A−1 . Ainsi, Gauss Jordan permet également de trouver l’inverse d’une
matrice, il suffit d’augmenter cette matrice de la matrice identité avant d’appliquer Gauss Jordan,
de façon à pouvoir y conserver les opérations qui transforment A en l’identité. Reprenons l’exemple
précédent :
   
2 2 1 9 1 0 0 1 0 0 1 0 1 −1
 GJ 
 2 −1 2 6 0 1 0  ∼ 0 1 0 2 2/5 −3/5 2/5  (4.5)
 

1 −1 2 5 0 0 1 0 0 1 5 1/5 −4/5 6/5


CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 58

On peut vérifier que :


  
0 1 −1 2 2 1
PA =  2/5 −3/5 2/5   2 −1 2  = I3
  

1/5 −4/5 6/5 1 −1 2

L’opération de calcul de la matrice de passage à travers Gauss-Jordan peut être faite très simplement
grâce à la commande rref de la calculatrice Texas Instruments :
1. On augmente la matrice [A|B] (appelée ab ci-dessous) de la matrice identité :
abi :=augment(ab,identity(3))
abi est la matrice de gauche de l’équation 4.5.
2. On applique Gauss-Jordan :
ixp :=rref(abi)
ixp est la matrice de droite de l’équation 4.5.

4.2 Forme standard d’un problème linéaire et solutions de


base

s
ée
4.2.1 Définition du problème linéaire en forme standard
ig
rr
co
n

Définition 4.2.1 (Problème linéaire en forme standard)


no

Un modèle linéaire en forme standard est un problème de minimisation ou maximisation soumis


à des contraintes d’égalité, et dans lequel toutes les variables sont positives. Il s’écrit :
s
ve

min ou max c1 x1 + c2 x2 + . . . cn xn = z
eu

s.a.c
r
Ép

a11 x1 + a12 x2 + . . . + a1n xn = b1


..
.
am1 x1 + am2 x2 + . . . + amn xn = bm
x1 ≥ 0, x2 ≥ 0, . . . , xn ≥ 0

Ou encore, sous forme matricielle :

min ou max cx = z
" #
c z
Ax = b ou :
A b
x≥0

Où c est la transposée du vecteur des coûts c de dimension (m × 1).


CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 59

Tout modèle linéaire peut être transformé en forme standard en effectuant des modifications sur
les variables pour s’assurer que les variables et les membres de droite des contraintes soient tous
positifs.

4.2.2 Forme canonique du problème linéaire en forme standard et solu-


tions de base
i
Tout comme un système d’équations linéaires peut être exprimé sous forme canonique (voir
section 4.1.8), un problème de programmation linéaire en forme standard peut aussi être exprimé
de façon canonique. En particulier, le système d’équations qui définit un problème de programmation
linéaire en forme canonique, est en forme canonique. Mais lorsqu’on ajoute la fonction-objectif, le
système n’est plus canonique puisqu’il peut y avoir des coefficients non nuls devant les variables de
base dans cette dernière. Par contre, on peut utiliser les lignes du système d’équations pour exprimer
chaque variable de base en fonction de variables hors base uniquement. On substitue ensuite les
variables de base dans la fonction-objectif par leur expression , et la fonction-objectif aura alors
bien des zéros sur les colonnes des variables de base.
Par exemple, considérons le problème de minimisation suivant :

s
ée
3x1 −2x2 +x3 +4x4 =z
ig
x1 +3x3 +x4 =2
(4.6)
rr
x2 +x3 +5x4 =1
co

x1 , x2 , x3 , x4 ≥0
n

On observe que le système d’équations définissant la région admissible (hors fonction objectif)
no

est déjà en forme canonique, avec variables de base x1 et x2 , et variables hors base x3 et x4 . La
s

solution de base correspondante est x1 = 2 et x2 = 1 pour les variables de base, et x3 = x4 = 0


ve

pour les variables hors base. Par contre, le problème de programmation linéaire correspondant n’est
eu

pas encore en forme canonique, à cause de la fonction-objectif.


r

Afin de mettre le problème sous forme canonique, il suffira de substituer les expressions de x1
Ép

et x2 dans la fonction-objectif. Ainsi, à partir du système d’équation (4.6) on obtient :

x1 = 2 −3x3 −x4
(4.7)
x2 = 1 −x3 −5x4

En substituant ces expressions dans la fonction-objectif, on obtient :

−6x3 +14x4 =z−4


x1 +3x3 +x4 =2
(4.8)
x2 +x3 +5x4 =1
x1 , x2 , x3 , x4 ≥0

Étant donné que x3 = x4 = 0, on peut observer que la valeur de la fonction-objectif de la solution


de base est exactement 4, c’est-à-dire, l’opposé du terme numérique à la droite de z.
Ce raisonnement est généralisé dans la définition 4.2.2 ci-dessous.
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 60

Définition 4.2.2 (Forme canonique du problème linéaire en forme standard)

Un problème linéaire de maximisation ou minimisation en forme standard à n variables et


m contraintes est dit canonique s’il est exprimé comme suit :

Base HorsBase
z }| { z }| {

0 0 ... 0 + cm+1 xm+1 + . . . +cn xn = z − c1 x̄1 + . . . + cm x̄m
x1 0 0 0 + a1,m+1 xm+1 + . . . +a1n xn = b1
0 x2 0 0 + a2,m+1 xm+1 + . . . +a2n xn = b2
.. .. . . .. .. .. .. ..
. . . . . . ..
0 0 0 xm + am,m+1 xm+1 + . . . +amn xn = bm

x1 ≥ 0, x2 ≥ 0, . . . , xn ≥0

Où b1 ≥ 0, b2 ≥ 0, . . . , bm ≥ 0, et x̄1 = b1 , x̄2 = b2 , . . . , x̄m = bm


Ou encore, sous forme matricielle :

s
0 · xB = z − cB x̄B

ée
+cN xN
Im xB +NxN =b (4.9)
ig
x≥0
rr
co

Où Im est la matrice identité de dimension m, et N une matrice de dimension (m × (n − m))


n

(voir paragraphe (4.1.8)). cB est le vecteur des coefficients de la fonction-objectif correspondants


no

aux variables de base xB et x̄B = b la solution de base correspondante. cN est le vecteur des
coefficients de la fonction-objectif correspondants aux variables hors base xN .
s
ve

La forme matricielle peut aussi être écrite de facon plus compacte :


eu

" #
0 cN z − cB x̄B
r
Ép

Im N b

On verra par la suite que cette écriture est à la base du tableau du simplexe.

À chaque forme canonique est donc associée la solution de base suivante :

x = [xB , xN ] = [b, 0] = (xB1 , . . ., xBm , 0, . . ., 0)


= (b1 , . . ., bm , 0, . . ., 0)
| {z }
(m-n) zéros

En effet, si on remplace x par [b, 0] dans le membre de gauche de l’équation 4.9, on obtient
exactement le membre de droite du système :

Im xB + NxN = Im b + N · 0 = Im b = b

[b, 0] est donc solution du système et on trouve la valeur de la fonction objectif en remplaçant x
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 61

par [b, 0] dans la ligne de la fonction-objectif : z = cB b .


Observation : de façon générale, il n’y a bien sûr aucune raison pour que les variables du
problème soient arrangées de façon à ce que toutes les variables de base (xB ) soient à gauche, et les
variables hors base (xN ) à droite. Cependant, on pourra toujours réarranger les colonnes de cette
façon pour conserver l’écriture matricielle du problème [Im |N]x = b.

4.2.3 Lien entre problème original et solution de base


Dans le cas d’un système d’équations linéaires classique, la section 4.1.9 nous a montré que
la méthode de Gauss-Jordan est une méthode qui nous permet de transformer n’importe quel
système d’équations linéaires en sa forme canonique. La méthode de Gauss-Jordan sera donc utilisée
de la même façon pour transformer un problème de programmation linéaire sous forme standard
(Définition 4.2.1) vers sa forme canonique (Définition 4.2.2). Cela permettra d’obtenir une solution
de base du problème.
On verra au paragraphe 4.4 sur la géométrie de la programmation linéaire que les solutions de
base ont une interprétation géométrique importante dans les problèmes d’optimisation linéaire. En
particulier, la solution optimale d’un problème de programmation linéaire peut être construite à
partir des solutions de base que constituent les points extrêmes (coins) du domaine admissible, ce

s
qui constitue le théorème fondamental de la programmation linéaire qui sera présenté à la section
4.5.
ée
ig
rr
4.3 Transformation d’un problème de PL en problème de
co

forme standard
n
no

L’utilisation de systèmes canoniques et des variables de base pour la recherche de solution


s

vue au paragraphe refstand s’applique uniquement à des systèmes linéaires en forme standard.
ve

Les problèmes de programmation linéaire n’étant généralement pas sous cette forme, il faut les
eu

transformer en forme standard, pour pouvoir utiliser leurs propriétés et leur appliquer le simplexe.
r

Cette section est dédiée aux techniques de transformation qui permettent de passer d’un problème
Ép

de programmation linéaire quelconque à sa forme standard.

4.3.1 Transformation d’un problème de PL de type ≤ en problème de


forme standard
Retournons à la formulation mathématique du problème de programmation linéaire. Pour trans-
former les inégalités en égalités et ainsi avoir à résoudre un problème linéaire en forme standard, on
introduit pour chaque contrainte une nouvelle variable qui représente l’écart au membre de droite
de la contrainte (la valeur de cette variable est donc nulle quand la contrainte est active, c’est-à-
dire quand les membres de droite et de gauche de la contrainte sont égaux). Ainsi le problème de
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 62

maximisation avec contraintes d’inégalités suivant :

max z = c1 x1 + c2 x2 + . . . cn xn
a11 x1 + a12 x2 + . . . + a1n xn ≤ b1
..
.
am1 x1 + am2 x2 + . . . + amn xn ≤ bm
x1 ≥ 0, x2 ≥ 0, . . . , xn ≥ 0

est transformé en un problème avec des contraintes d’égalité en ajoutant m variables d’écart,
c’est-à-dire autant que d’inégalités.

max z = c1 x1 + c2 x2 + . . . cn xn
s.a.c
a11 x1 + a12 x2 + . . . + a1n xn + e1 = b1
..
.
am1 x1 + am2 x2 + . . . + amn xn + e m = bm

s
ée
x1 ≥ 0, x2 ≥ 0, . . . , xn ≥ 0
e1 ≥ 0, e2 ≥ 0, . . . , em ≥ 0
ig
rr
co

En imposant que les variables d’écart (e1 , ..., em ) soient positives, on a donc transformé le pro-
n

blème de maximisation classique en un modèle linéaire en forme standard.


no

Observation importante : le système obtenu est aussi directement en forme canonique.


s

Le problème peut s’écrire sous forme matricielle :


ve
eu

min cx
r

Ax + Ie = b
Ép

x, e ≥ 0

Où I est la matrice identité, et e le vecteur de dimension (m × 1) des variables d’écart.

Remarquons qu’on peut conserver l’ensemble des informations du problème dans une matrice
unique construite  la concaténation de A, de la matrice Identité de dimension (m × m), et
 comme
du vecteur b : A|I|b . Cette matrice a pour dimension (m × (n + m)).

4.3.2 Cas des inégalités de type ≥


Si maintenant le problème comporte des inégalités de type ≥, c’est-à-dire que le domaine ad-
missible est au-dessus de la contrainte, l’écart à la contrainte est négatif, il faut retirer une quantité
positive pour redescendre à la contrainte. On utilise alors des variables d’excédent au lieu de
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 63

variables d’écart. Ainsi le problème de minimisation :

min z = c1 x1 + c2 x2 + . . . cn xn
s.a.c
a11 x1 + a12 x2 + . . . + a1n xn ≥ b1
..
.
am1 x1 + am2 x2 + . . . + amn xn ≥ bm
x1 ≥ 0, x2 ≥ 0, . . . , xn ≥ 0

devient le problème standard suivant quand on utilise les variables d’excédent :

min z = c1 x1 + c2 x2 + . . . cn xn
s.a.c
a11 x1 + a12 x2 + . . . + a1n xn −e1 = b1
..
.
am1 x1 + am2 x2 + . . . + amn xn −em = bm

s
ée
x1 ≥ 0, x2 ≥ 0, . . . , xn ≥ 0 ig
e1 ≥ 0, e2 ≥ 0, . . . , em ≥ 0
rr
co

Et, sous forme matricielle :


n

min cx
no

Ax − Ie = b
s
ve

x, e ≥ 0
eu

Observation importante : le système obtenu est en forme standard, mais n’est pas en forme
r
Ép

canonique. Pourquoi ? On laissera au lecteur le soin de répondre à cette question.


On peut bien sûr avoir un problème dans lequel certaines contraintes d’inégalités sont de type
≤ et d’autres de type ≥. On associe dans ce cas à chaque contrainte la variable qui lui correspond,
variable d’écart ou variable d’excédent, et le nouveau problème comprend autant de variables d’écart
que de contraintes de type ≤, et autant de variables d’excédent que de contraintes de type ≥. On
peut observer une interprétation géométrique des deux types de variables, écart et excédent, sur
la figure 4.1. Dans le cas d’une contrainte portant sur la disponibilité en temps d’une machine
de production par exemple (contrainte ≤), on devra rester en-dessous de la disponibilité de la
machine, et la variable d’écart correspond au temps disponible non utilisé. Au contraire, dans le cas
d’une contrainte portant sur la demande minimale à respecter, on produira toujours au-dessus de
la demande, et l’excédent sera la production excédentaire par rapport à la demande. Si on respecte
exactement la contrainte à l’égalité, l’écart ou l’excédent seront nuls.
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 64

Figure 4.1: Variables d’écart et variables d’excédent

4.3.3 Cas des variables libres


Pour que le problème transformé en changeant les inéquations en équations soit un modèle li-
néaire de forme standard, il faut aussi s’assurer que toutes les variables du problème soient positives.
Ce n’est pas forcément le cas en programmation linéaire, certaines variables peuvent varier dans
tout R et sont appelées variables libres. Pour contourner ce problème, on pourra toujours trouver
deux nouvelles variables positives, dont la différence est égale à la variable libre : Soit x1 libre. Soit

s
ée
u1 et v1 tels que :
ig
u1 ≥ 0
rr
co

v1 ≥ 0
x1 = u1 − v1
n
no

On peut alors éliminer x1 du problème en le remplaçant par u1 − v1 dans toutes les contraintes dans
s

lesquelles il apparait. Dans le problème ainsi formulé, x1 n’apparaît plus et toutes les variables sont
ve

positives.
r eu
Ép

4.4 Géométrie de la programmation linéaire


Cette section s’intéresse à l’interprétation géométrique des solutions de base, des domaines
d’admissibilité et des contraintes, ce qui nous sera utile pour comprendre comment fonctionne le
simplexe d’un point de vue géométrique. Retournons par exemple au problème de Windor, dont les
contraintes et le domaine d’admissibilité sont représentés sur la figure 4.2.
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 65

8 x
2 x1 = 4

6 2x2 = 12
D C G

3x
Région
B

1
+
d’admissibilité
2

2x
2
=
18
E A F x1
2 4 6 8

Figure 4.2: Interprétation géométrique du problème Windor

4.4.1 Points extrêmes du domaine et solutions de base


L’observation de la représentation géométrique du problème en deux dimensions permet une

s
remarque fondamentale, qui est que chaque point extrême (point extrême du domaine, c’est-à-

ée
dire intersection de contraintes) est une solution de base, telle que définie à la section 4.2.
ig
Écrivons en effet le problème de Windor sous sa forme standard, selon la méthode expliquée à
rr
la section 4.3 :
co

max 3x1 +5x2 =z


n
no

x1 +e1 =4
+2x2 +e2 = 12 (4.10)
s

3x1 +2x2 +e3 = 18


ve

xi , ei ≥ 0
r eu

Il s’agit d’un problème sous forme standard et canonique à n = 5 variables et m = 3 équations.


Ép

On peut donc directement lire dans le système une solution de base dans laquelle (x1 , x2 ) = (0, 0)
sont les n − m variables hors base, et (e1 , e2 , e3 ) = (4, 12, 18) les m variables en base. Cette solution
de base est le point E sur le graphique. Cependant, ce n’est pas la seule solution de base ! Il suffit
d’imposer la valeur nulle à deux des cinq variables pour définir une autre solution de base dans
laquelle les variables nulles sont hors base, et les valeurs des trois autres variables, en base, sont ls
solution unique du système d’équations résultant à 3 équations et 3 inconnues.
Prenons en effet le point extrême B défini par l’intersection entre les contraintes x1 + e1 = 4 et
3x1 + 2x2 + e3 = 18. En ce point, les variables d’écart e1 et e3 associées aux contraintes prennent
la valeur nulle : 3x1 + 2x2 vaut exactement 18 par exemple. Le point extrême B est donc aussi une
solution de base, dans laquelle (x1 , x2 , e2 ) non nulles sont variables de base, et (e1 , e3 ) nulles sont
variables hors base.
De même, l es valeurs des variables x1 à e3 sont résumées dans le tableau 4.1 pour tous les points
A à G constituant les intersections des contraintes. Rappelons que pour construire ce tableau et
trouver les valeurs de e1 , e2 , e3 , il suffit de les lire sur le graphique, ou encore de résoudre le système
d’équations 4.10 après y avoir imposé les valeurs de x1 et x2 du point. C’est alors un système à 3
équations et 3 inconnues ayant une solution unique.
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 66

On remarque que pour les points F et G, l’une des variables d’écart est négative, ce qui viole
la condition de positivité des variables d’écart. Ces points ne sont pas admissibles, comme observé
également sur le graphique : ce ne sont pas des points extrêmes du domaine.

Point x1 x2 e1 e2 e3 Type Valeur z


A 4 0 0 6 12 Admissible 12
B 4 3 0 6 0 Admissible 27
C 2 6 2 0 0 Admissible 36 (optimal)
D 0 6 4 0 6 Admissible 30
E 0 0 4 12 18 Admissible 0
F 6 0 -2 12 0 Non Admissible 18
G 4 6 0 0 -6 Non Admissible 42

Tableau 4.1: Points d’intersection des contraintes du problème Windor (les variables de base sont
soulignées. Les variables hors base sont associées aux contraintes définissant l’intersection.)

On pourra généraliser ce raisonnement à des problèmes comprenant plus de 2 variables. Dans un


espace à n dimensions (n variables), chaque point extrême du domaine est défini par l’intersection
entre n contraintes (hors cas de dégénérescence présentés en 4.9.1). Pour ce point extrême, les

s
ée
variables d’écart associées aux n contraintes le définissant sont les variables hors base, nulles, et
ig
les autres variables du problèmes sont les variables de base. Ce raisonnement peut être généralisé à
rr
tous les problèmes de programmation linéaire :
co

En programmation linéaire, l’ensemble des solutions de base est exactement l’ensemble des
points extrêmes du domaine.
n
no

4.4.2 Typologie des contraintes


s
ve

On peut classer les contraintes en fonction de leur impact sur la solution optimale. Cet aspect sera
eu

particulièrement important pour mieux comprendre l’analyse de sensibilité faite sur les solutions
au chapitre 5.
r
Ép

• Contrainte active
C’est le cas des contraintes 2x2 ≤ 12 et 3x1 + 2x2 ≤ 18 du problème Windor (voir figure 4.2).
Le point d’intersection des deux contraintes définit la solution optimale qui est le point (2, 6) :
au point-solution, l’inégalité est en fait une égalité ou, dit autrement, toutes les ressources
du membre de droite sont utilisées. x2 vaut exactement 6, et 3x1 + 2x2 vaut exactement
18. Cela signifie que les deux variables d’écart associées aux deux contraintes 2x2 ≤ 12 et
3x1 + 2x2 ≤ 18, e2 et e3 , prennent alors la valeur nulle et sont hors base.
Par ailleurs, on peut remarquer que si une contrainte active est modifiée (changement des
coefficients ou du membre de droite), le domaine admissible change, et les coordonnées de la
solution et la valeur de la fonction objectif changent immédiatement. Concrètement, si une
contrainte associée à la disponibilité d’une machine de production est active par exemple,
cela veut dire que cette machine est utilisée à pleine capacité durant toute sa période de
disponibilité. Sa disponibilité est limitante pour la solution et la définit dans le sens où la
solution s’améliore immédiatement si on augmente la disponibilité de cette machine. Ce ne
sera pas le cas pour une contrainte inactive.
• Contrainte inactive
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 67

Dans l’exemple Windor, les contraintes x1 ≤ 4, x1 ≥ 0 et x2 ≥ 0 sont inactives : la solution


optimale est loin de ces contraintes, une légère modification d’une contrainte inactive n’a aucun
impact sur la solution optimale. Il y a un écart entre la solution optimale et ces contrainte,
par exemple pour Windor il y a un écart de e1 = 2 entre la solution optimale et la droite
x1 = 4 (voir tableau 4.1, point C).
• Contrainte redondante
Une contrainte redondante est située hors du domaine d’admissibilité, elle ne participe pas à
sa définition. Par exemple une contrainte x1 ≤ 6 serait redondante pour le problème Windor.
Puisque x1 doit déjà être inférieur à 4, il est forcément inférieur à 6. On peut retirer une
contrainte redondante sans changer le problème ni à fortiori la solution optimale.

4.4.3 Typologie des régions et solutions admissibles


Une contrainte d’inégalité sépare le domaine en deux demi-plans si on travaille avec deux va-
riables (en 2 dimensions), ou demi-espaces si on travaille avec un nombre plus élevé de variables.
L’union de plusieurs contraintes construit un domaine d’admissibilité qui peut être fermé, non
borné, ou vide, comme présenté à la figure 4.3, où le domaine défini par les contraintes apparait en
zone grisée. Les flèches indiquent la direction admissible par rapport à chaque contrainte. Dans la

s
dernière figure, les contraintes sont contradictoires, et il n’y a pas de région admissible dans laquelle
les deux contraintes soient satisfaites.
ée
ig
rr
co

y y y
n
s no

x x x
ve

Figure 4.3: Domaines fermé, non borné, et vide


r eu

Par ailleurs, le domaine admissible peut ou non être convexe. Rappelons qu’un ensemble est dit
Ép

convexe si, quelque soient les points P et P 0 de cet ensemble, tous les points placés sur le segment
reliant P à P 0 font partie de l’ensemble. La figure 4.4 par exemple présente un domaine convexe et
deux domaines non-convexes. En programmation linéaire, on démontre facilement que le domaine
d’admissibilité sera toujours convexe.

P P’ P P’ P P’

Figure 4.4: Convexité

Tout comme on peut faire face à différents types de domaines admissibles, on peut rencontrer
différents types de solution optimale :
• la solution optimale peut être un point (comme dans le cas Windor),
• mais aussi un intervalle (tous les points de l’intervalle fournissent la même valeur de la fonction
objectif).
• L’ensemble des solutions peut aussi être non borné, dans le cas par exemple où l’ensemble des
points d’une droite ou demi-droite fournit la même valeur de la fonction-objectif.
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 68

• Enfin, il peut aussi ne pas y avoir de solution au problème, dans le cas d’un domaine vide,
c’est-à-dire qu’il n’y a pas de région admissible au sein de laquelle les points respectent toutes
les contraintes.

4.5 Théorème fondamental de la programmation linéaire


Le théorème fondamental de la programmation linéaire ne sera pas démontré ici, mais peut
maintenant être énoncé :

Théorème 4.5.1 (Théorème fondamental de la programmation linéaire)


Étant donné un problème de programmation linéaire en forme standard :

min cx
Ax = b
x≥0

où A est une matrice (m × n) de rang m (c’est-à-dire que les m lignes de A sont linéairement

s
ée
indépendantes),
ig
1. S’il existe une solution admissible, alors il existe une solution de base admissible.
rr
2. S’il existe une solution admissible optimale, alors il existe une solution de base admissible
co

optimale.
n
s no

Un problème linéaire standard a généralement une infinité de solutions admissibles. L’importance


ve

du théorème fondamental est que parmi cette infinité de solutions, la solution optimale peut être
eu

recherchée dans l’ensemble fini des solutions de base. Cependant cet ensemble peut rester très grand.
r

Pour un problème à n variables et m contraintes, le nombre de solutions de base est en effet :


Ép

 
n n!
=
m m!(n − m!)

Par exemple, dans un problème comprenant seulement 50 variables et 70 équations, le nombre de


solutions de base serait :
 
70
= 161 885 603 662 657 876
50

L’algorithme du simplexe décrit au paragraphe 4.6 est une méthode qui permettra, à partir d’une
première solution de base, d’orienter la recherche de la solution optimale au sein de l’ensemble de
solutions de base.

4.6 Aperçu du simplexe


Le principe de l’algorithme du simplexe est de trouver une solution de base (un point extrême
du domaine) en transformant le problème en sa forme standard, puis de vérifier si cette solution
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 69

est optimale, et, si elle ne l’est pas, de construire une nouvelle solution de base en avançant vers un
autre point extrême adjacent du domaine. On définit deux solutions de base adjacentes comme
deux solutions pour lesquelles les mêmes variables sont en base, sauf une. Il s’agit donc de partir
d’un coin du domaine puis de suivre les frontières du domaine de coin en coin jusqu’à trouver la
solution optimale.
Ainsi l’algorithme du simplexe qui sera explicité dans les sections suivantes, dans sa version de
base, est le suivant :
• Initialisation : On part d’une solution de base initiale donnée (un point extrême du do-
maine)
• Repeat {
— Test d’optimalité
• if (la solution est optimale) return la solution
• else
− On cherche une nouvelle variable à entrer dans la base, c’est-à-dire qu’on choisit une
contrainte sur laquelle se déplacer à partir de la solution en cours pour aller vers un point
extrême adjacent qui propose une meilleure solution.

s
− On calcule l’augmentation maximale admissible (pour rester dans le domaine) de la

ée
valeur de cette nouvelle variable qui rentre en base. Cela nous permet d’arriver au point
ig
extrême adjacent.
rr
• endif
co

• }
n
no

Dans les sections suivantes, on se concentrera sur l’exemple de Windor, un problème de maximi-
sation constitué uniquement de contraintes de type ≤, c’est-à-dire pour lequel on utilise uniquement
s

des variables d’écart (pas de variable d’excédent). Ce type de problème est parfois appelé problème
ve

PLS (Programmation Linéaire Simple) . Le cas général sera vu en section 4.8.


r eu
Ép

4.6.1 Compréhension géométrique du simplexe


Pour mieux comprendre, observons le cheminement du simplexe sur le graphique 4.5 représentant
le problème de Windor.

x2 max = 3x1 + 5x2


(0,6),z= 30 (2,6),z=36 x1 ≤ 4
2x2 ≤ 12
1 2 3x1 + 2x2 ≤ 18

Région (4,3),z=27
d’admissibilité

0 x1
(0,0),z=0 (4,0),z=12

Figure 4.5: Interprétation géométrique du simplexe


CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 70

— Initialisation : x = (0, 0), z = 0 ; (C’est le point extrême du domaine le plus simple à trouver,
on le choisit comme point de départ). x1 et x2 sont hors base (voir tableau 4.1).
— Itération 1 :
• Test d’optimalité : est-ce que x = (0, 0) est optimale ? Non, les deux solutions adjacentes
((0, 6) et (4, 0)) sont meilleures.
• On avance dans la direction la plus prometteuse (sur l’axe x2 , puisque le coût c2 est
supérieur à c1 , et qu’augmenter x2 d’une unité augmente donc la fonction-objectif plus
rapidement que d’augmenter x1 d’une unité)
• On s’arrête à la prochaine contrainte : x = (0, 6); z = 30 ; 6 est l’augmentation maximale
admissible pour x2 , nouvelle variable de base.
• On ne peut pas augmenter x2 de plus de 6 unités, sinon, on sort du domaine d’admissi-
bilité.
— Itération 2 :
• Test d’optimalité : est-ce que x = (0, 6) est optimale ?
• Non, en augmentant x1 en continuant le long des frontières du domaine, on peut aug-
menter la fonction-objectif.

s
ée
• On s’arrête à la prochaine contrainte : x = (2, 6); z = 36. 2 est l’augmentation maximale
admissible de x1 , nouvelle variable en base.
ig
rr
— Itération 3 :
co

• Test d’optimalité : est-ce que x = (2, 6), z = 36 est optimale ?


n

• Oui : les solutions adjacentes sont moins bonnes.


no

Ainsi, le simplexe a parcouru les frontières du domaine de point extrême en point extrême, en
s

choisissant d’avancer dans la direction la plus prometteuse, c’est-à-dire qui permet d’améliorer la
ve

fonction-objectif le plus vite possible, jusqu’à trouver la solution optimale. Chaque point extrême
eu

représente une solution de base du système.


r
Ép

4.6.2 Compréhension algébrique du simplexe


i
Répétons le processus du simplexe sur Windor, mais cette fois à partir des équations. On com-
mence par transformer le système en un modèle linéaire standard en ajoutant les variables d’écart,
afin de trouver une première solution de base à partir de laquelle implémenter l’algorithme :

max 3x1 +5x2 =z


x1 +e1 =4
+2x2 +e2 = 12 (4.11)
3x1 +2x2 +e3 = 18
xi , ei ≥ 0

On remarque alors que le système est un système canonique, ce qui nous permet de trouver facile-
ment une solution de base. Ce sera toujours le cas quand on transformera le système d’inéquations
de type (≤) en un modèle linéaire en forme standard en utilisant les variables d’écart.
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 71

Caractéristiques d’un système sous forme canonique

— Les variables sont non négatives


— Les coefficients du côté droit (rhs=right hand side) sont non négatifs
— Les contraintes fonctionnelles sont des égalités (=)
— Une variable est isolée avec coefficient +1 pour chaque contrainte. Dire qu’elle est isolée
signifie que cette variable n’apparaît pas ni dans les autres contraintes ni dans la fonction-
objectif, c’est-à-dire que sa valeur est entièrement déterminée par l’unique équation dans
laquelle elle apparait.

Initialisation - recherche d’une première solution de base

Les variables isolées sont ici e1 , e2 , e3 . On définit la solution de base suivante :


— Variables hors base : x1 et x2
— Variables de base=variables isolées : e1 , e2 , e3
— Solution de base : solution obtenue en imposant la valeur 0 aux variables hors base. On
peut le faire puisque le système a 5 variables et 3 équations, c’est-à-dire 2 degrés de liberté (le

s
nombre de variables hors base). Il y a autant de variables de base que de contraintes. Leurs
valeurs se lisent dans le membre de droite.
ée
ig
Dans notre cas, la solution de base est : (x1 , x2 , e1 , e2 , e3 ) = (0, 0, 4, 12, 18), et par conséquent
rr
co

z = 3x1 + 5x2 = 0.
n

Vérification de l’optimalité
no

Est-ce que la solution (0, 0, 4, 12, 18), avec z = 0 est optimale ? On dirait que non : en augmentant
s

la valeur de x1 ou x2 la fonction-objectif devrait augmenter également puisque les coûts liés à x1


ve

et x2 sont positifs (respectivement 3 et 5).


r eu
Ép

Choix d’une nouvelle solution de base

On choisit d’incrémenter x2 et de laisser x1 = 0, puisque le coefficient de x2 dans la fonction-


objectif est plus prometteur. Cependant, on ne peut pas incrémenter x2 indéfiniment, sinon on
sortira du domaine admissible. En gardant x1 nul, les équations du système 4.11 deviennent :

e1 = 4
2x2 + e2 = 12
2x2 + e3 = 18

Par conséquent, quand x2 augmente, e1 reste constant, mais e2 et e3 doivent diminuer pour respecter
les contraintes. Il y a une limite, puisque e2 et e3 doivent rester positifs.
— e2 = 12 − 2x2 ≥ 0 → x2 ≤ 6
— e3 = 18 − 2x2 ≥ 0 → x2 ≤ 9
Par conséquent, x2 peut augmenter jusqu’à 6 seulement, sinon e2 devient négatif. C’est la contrainte
(2) qui limite l’augmentation de x2 , comme on l’a observé également avec la démarche du graphique
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 72

4.5. Si x2 = 6, on a : e2 = 0, e3 = 6, z = 5, x2 = 30 ; La nouvelle solution est donc (0, 6, 4, 0, 6),


avec z = 30.
On remarque que e2 s’est annulé (est devenu hors base), alors que x2 est devenu non nul (est
entré en base). En d’autres mots : x2 a remplacé e2 dans la base (on a obtenu une solution de base
adjacente).
On peut retranscrire ce changement de variable de base dans le système d’équations pour faire
apparaître une nouvelle forme canonique dans laquelle x2 est variable de base, c’est-à-dire n’apparait
que dans une seule équation, et avec un coefficient +1. Pour cela, il suffit d’effectuer des combinaisons
linéaires des lignes (Gauss-Jordan). Le nouveau système est équivalent au précédent et possède les
mêmes solutions.
Voici la nouvelle forme canonique du problème avec les nouvelles variables de base (x2 , e1 , e3 ) :

max 3x1 − 25 e2 = −30 + z


x1 +e1 =4
xi , ei ≥ 0
+x2 + e22 =6
3x1 −e2 +e3 =6

On remarque qu’on a bien pris soin d’éliminer aussi x2 de la ligne de la fonction-objectif.

s
ée
Nouvelle itération ig
Est-ce que la nouvelle solution (0, 6, 4, 0, 6), avec z = 30 est optimale ? On dirait que non : en
rr
augmentant la valeur de x1 la fonction-objectif devrait augmenter. On choisit d’incrémenter x1 et
co

de laisser e2 = 0. Mais on ne peut pas incrémenter x1 indéfiniment.


n

— e1 = 4 − x1 ≥ 0 → x1 ≤ 4
no

— e3 = 6 − 3x1 ≥ 0 → x1 ≤ 2
s
ve

Donc : x1 peut augmenter jusqu’à 2, e1 = 2, e3 = 0, z = 30 + 3x1 = 36. La nouvelle solution est (2,
6, 2, 0, 0) Maintenant x1 = 2, tandis que e3 = 0. En d’autres mots : x1 a remplacé e3 dans la base
eu

(on a obtenu une solution de base adjacente).


r
Ép

Voici la nouvelle forme canonique du problème avec les nouvelles variables de base : x1 , x2 , e1 :

max − 23 e2 −e3 = −36 + z


e1 + e32 − e33 =2
xi , ei ≥ 0
+x2 + e22 =6
x1 − e32 + e33 =2

Comme on l’a fait avant, on se pose la question : est-ce que la solution (2, 6, 2, 0, 0), avec z = 36
est optimale ? On dirait que oui : les variables hors base (e2 , e3 ) ont des coefficients négatifs dans
la fonction-objectif. Comme elles sont positives, si on augmente leur valeur, elles diminueront la
fonction-objectif au lieu de l’augmenter.

4.7 Forme tabulaire du simplexe


i
Pour se faciliter la tâche, on peut organiser les informations nécessaires à l’algorithme du sim-
plexe dans un tableau après avoir obtenu une forme canonique. Reprenons donc encore une fois
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 73

l’algorithme du simplexe pour le problème Windor, mais cette fois sous forme tabulaire. Voici le
tableau de la première forme canonique de Windor (correspondant au système d’équations 4.11) :

x1 x2 e1 e2 e3 b
3 5 0 0 0 0
e1 1 0 1 0 0 4
e2 0 2 0 1 0 12
e3 3 2 0 0 1 18

La première ligne correspond aux coefficients (cj ) de la fonction-objectif, et les trois lignes suivantes
aux coefficients (aij ) des trois contraintes.
— Initialisation
La présentation sous forme de tableau permet de voir clairement les variables de base e1 , e2 ,
e3 : leur colonne est composée de 0, sauf un +1 sur la ligne qui définit leur valeur. Le nom de
la variable de base dont la valeur est définie par chacune des lignes est indiqué dans la colonne
de gauche. La solution de base est composée de 0 pour les variables hors base, et des valeurs
lues dans le vecteur b à droite de la matrice, pour les variables de base correspondantes :
x = (x1 , x2 , e1 , e2 , e3 ) = (0, 0, 4, 12, 18). La valeur de l’opposé de la fonction-objectif, −z = 0,
apparaît en haut à droite du tableau.

s
ée
— Test d’optimalité et choix de la nouvelle variable de base ig
La solution n’est pas optimale, car x1 et x2 peuvent améliorer la solution (elles ont des coûts
rr
marginaux positifs, lus dans la ligne de la fonction-objectif). x2 rentre dans la base car son
co

coût marginal (5) est plus élevé.


n
no

Définition 4.7.1 (Coûts marginaux (reduced costs))


Le coût marginal cj d’une variable j représente la variation de la fonction-objectif corres-
s
ve

pondant à l’augmentation d’une unité de cette variable, c’est-à-dire l’impact potentiel de


eu

cette variable sur la fonction-objectif si elle rentre en base.


Les coûts marginaux se lisent dans la première ligne du tableau du simplexe représen-
r
Ép

tant la fonction-objectif. Dans le tableau initial, les coûts marginaux sont aussi les coûts
(=coefficients) de la fonction-objectif. Par exemple, pour le tableau initial de Windor,
c̄1 = c1 = 3.
Le coût marginal des variables de base est toujours nul, puisqu’elles participent
déjà à la fonction-objectif au maximum de leur capacité. Par exemple, dans le tableau
initial, c̄e1 = c̄e2 = c̄e3 = 0.

Signe de c̄j Impact potentiel sur la FO Résultat


≤0 & si maximisation : détériore
si minimisation : améliore
≥0 % si maximisation : améliore
si minimisation : détériore

— Choix de la variable de base sortante


CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 74

Si x2 rentre dans la base, il faut faire sortir une des variables de base (e1 , e2 ou e3 ). Quand x2
augmente, cela n’a pas d’impact sur la variable e1 car x2 n’apparaît pas dans la contrainte (1) qui
définit la valeur de e1 . Par contre e2 va diminuer selon la contrainte (2) - et e3 selon la contrainte (3).
La valeur maximale que peut atteindre x2 est 12/2 = 6 quand e2 devient nul dans la contrainte (2),
et 18/2 = 9 quand e3 devient nul dans la contrainte (3). On remarque que cette valeur maximale
se lit directement comme la colonne de droite (b) divisée par la colonne de la variable entrante x2 .
Cependant, si x2 atteint 18/2 = 9 qui est plus grand, alors e2 deviendra négatif dans la contrainte
(2), ce qui n’est pas admissible. On augmente donc x2 jusqu’à 12/2 = 6, e2 devient nul et sort de
la base.
De façon générale, la variable sortante sera toujours celle qui mène à la plus petite augmen-
tation de la variable entrante, afin que la solution reste admissible (que l’on soit dans un cas de
minimisation ou de maximisation ne change rien).
On effectue maintenant les combinaisons linéaires pour que x2 apparaisse comme variable de base
dans le tableau, c’est-à-dire avec un coefficient +1 sur sa ligne (contrainte 2 puisqu’elle remplace
e2 ), et des zéros sur le reste de sa colonne :

x1 x2 e1 e2 e3 b
3 0 0 -5/2 0 -30

s
e1 1 0 1 0 0 4
x2 0 1 0 1/2 0
ée
6
ig
e3 3 0 0 -1 1 6
rr
co

La nouvelle solution de base est x =(0, 6, 4, 0, 1), z = 30. La solution n’est pas optimale, car x1
peut améliorer la solution (coût marginal de 3). x1 rentre dans la base. La variable sortante est e3
n
no

car 6/3 est la valeur la plus contraignante (l’autre est 4/1). Le nouveau tableau est :
s

x1 x2 e1 e2 e3 b
ve

0 0 0 -3/2 -1 -36
eu

e1 0 0 1 1/3 -1/3 2
r

x2 0 1 0 1/2 0 6
Ép

x1 1 0 0 -1/3 1/2 2

Solution de base (2,6,2,0,0). z = 36. La solution est optimale, car aucune variable n’a de coût
marginal positif qui permettrait d’améliorer la solution.

4.7.1 Forme tabulaire du Simplexe : exemple 2


Résoudre à l’aide de l’algorithme du simplexe le problème suivant :

max z = 1000x1 +1200x2


10x1 +5x2 ≤ 200
2x1 +3x2 ≤ 60
x1 ≤ 34
x2 ≤ 14
x1 ≥0
x2 ≥0

La forme canonique du problème s’écrit de la façon suivante :


CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 75

x1 x2 e1 e2 e3 e4 b
1000 1200 0 0 0 0 0
e1 10 5 1 0 0 0 200
e2 2 3 0 1 0 0 60
e3 1 0 0 0 1 0 34
e4 0 1 0 0 0 1 14

Solution de base (0,0,200,60, 34, 14). z = 0. La solution n’est pas optimale, car x1 et x2 peuvent
améliorer la solution (elles ont des coûts marginaux positifs). x2 rentre dans la base car son coût
marginal est plus élevé (1200). La variable sortante est e4 car 14/1 est la valeur la plus contraignante
(les autres sont 200/5, 60/3).

x1 x2 e1 e2 e3 e4 b
1000 0 0 0 0 -1200 -16800
e1 10 0 1 0 0 -5 130
e2 2 0 0 1 0 -3 18
e3 1 0 0 0 1 0 34
x@ 0 1 0 0 0 1 14

s
Solution de base (0, 14, 130, 18, 34, 0 ). z = 16800. La solution n’est pas optimale, car x1 a un
coût marginal positif et peut améliorer la solution. x1 rentre dans la base. La variable sortante est
ée
ig
e2 car 18/2 est la valeur la plus contraignante.
rr
co

x1 x2 e1 e2 e3 e4 b
0 0 0 -500 0 300 -25800
n
no

e1 0 0 1 -5 0 10 40
x1 1 0 0 1/2 0 -3/2 9
s
ve

e3 0 0 0 -1/2 1 3/2 25
x2 0 1 0 0 0 1 14
r eu

Solution de base (9,14,40,0,25,0). z = 25800. La solution n’est pas optimale, car e4 peut améliorer
Ép

la solution. e4 rentre dans la base. La variable sortante est e1 car 40/10 est la valeur la plus
9
contraignante. On remarque que la contrainte 2 donne une valeur limite de x1 de −3/2 , qui n’est
pas admissible puisqu’elle est négative. Cette ligne n’est pas prise en compte dans le choix de la
variable sortante.

x1 x2 e1 e2 e3 e4 b
0 0 -30 -350 0 0 -27000
e4 0 0 1/10 -1/2 0 1 4
x1 1 0 3/20 -1/4 0 0 15
e3 0 0 -3/20 1/4 1 0 19
x2 0 1 -1/10 1/2 0 0 10

Solution de base (15,10,0,0,19,4). z = 27000. La solution est optimale, car aucune variable ne peut
améliorer la solution.
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 76

4.8 Le simplexe pour la forme générale de la Programmation


Linéaire
Il n’est possible d’obtenir rapidement une solution de base que sur les systèmes en forme cano-
nique. Dans les exemples précédents, les problèmes présentaient uniquement des inégalités de type
≤, ce qui permettait d’obtenir immédiatement des systèmes canoniques en ajoutant des variables
d’écart, et de trouver facilement une première solution de base à partir de laquelle commencer la
recherche de solution. Dans le cas général, on peut aussi avoir des égalités, ou encore des inégalités
de type ≥. Pour transformer un système comprenant égalités et inégalités de type ≥ en système
canonique, on aura recours à des variables dites variables artificielles qui se comporteront comme
des variables d’écart, et pourront servir de la même façon pour trouver une solution initiale. La
méthode est expliquée ci-dessous.

4.8.1 Variables artificielles pour contraintes d’égalité


À priori, les contraintes d’égalité ne permettent pas de mettre facilement le système sous forme
canonique (pas de coefficient 1 devant une variable isolée), ni donc de trouver une solution de base
initiale à partir de laquelle développer le simplexe. Pour contourner cette difficulté, on construit un

s
ée
nouveau problème en ajoutant une variable artificielle dans le membre de gauche. Par exemple, la
contrainte :
ig
rr
−10x1 + 5x2 = 200
co

(4.12)
n

devient dans le nouveau problème :


no

−10x1 + 5x2 + a1 = 200 (4.13)


s
ve

a1 ≥ 0 étant la variable dite artificielle. Quand a1 = 0, on retrouve le problème initial. On remarque


eu

que cette nouvelle contrainte est équivalente à la contrainte suivante, et que a1 est l’équivalent d’une
r
Ép

variable d’écart pour cette contrainte :

−10x1 + 5x2 ≤ 200

Le nouveau problème obtenu en remplaçant 4.12 par 4.13 peut alors être mis sous forme canonique,
et une solution optimale peut être trouvée pour ce problème. Celui-ci est différent du problème
original et est moins contraint, puisque le domaine admissible de la contrainte est constitué de tous
les points sur et en-dessous de la contrainte, au lieu d’être constitué uniquement des points situés
exactement sur la contrainte, comme c’était le cas avec l’égalité imposée par le problème original.
Évidemment, les solutions admissibles au nouveau problème ne le sont pas toutes pour le problème
original, puisque l’égalité n’est pas imposée. On va cependant utiliser le nouveau problème pour
trouver une solution admissible au problème original en résolvant le nouveau problème avec une
fonction objectif dans laquelle l’objectif sera de minimiser a1 . Quand l’objectif sera atteint, a1 = 0,
et la solution trouvée sera donc admissible au problème original. Cette solution pourra être utilisée
comme solution de base à partir de laquelle développer l’algorithme du simplexe sur le problème
original.
L’objectif de cette étape préliminaire avec l’utilisation de variables artificielles et d’un nouveau
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 77

problème est donc de trouver une solution de base initiale au problème original avant de développer
le simplexe.

4.8.2 Variables artificielles pour contraintes d’inégalité de type ≥


Le principe est le même pour une contrainte d’inégalité de type ≥. Dans ce cas, on transforme
l’inégalité en égalité en retirant une variable d’excédent, mais cela ne permet pas d’avoir un système
canonique puisque le coefficient de la variable d’excédent est −1 et non +1. On va donc là-aussi
ajouter une variable artificielle qui sera la variable de base pour l’initialisation du simplexe. Par
exemple, la contrainte :
−10x1 + 5x2 ≥ 200

devient dans le nouveau problème :

−10x1 + 5x2 − e1 + a1 = 200

e1 ≥ 0 étant la variable d’écart et a1 ≥ 0 la variable artificielle (variable de base du premier tableau


du simplexe).
Cette méthode revient à transformer le domaine admissible, initialement au-dessus de la contrainte,

s
en un domaine en-dessous de la contrainte. Grâce à cette méthode, on peut de nouveau transformer

ée
le nouveau problème en un système canonique, et le résoudre avec une fonction-objectif dans lequel
ig
l’objectif est de minimiser la variable artificielle. De nouveau, on trouve ainsi une solution de base
rr
admissible au problème original, à partir de laquelle développer le simplexe et trouver la solution
co

optimale au problème original.


n
no

4.8.3 Elimination des variables artificielles


s

Pour être sûrs d’éliminer les variables artificielles pendant le processus du simplexe sur le pro-
ve

blème transformé, et revenir ainsi au domaine admissible initial et au problème original, l’idée est
eu

donc de modifier la fonction-objectif en y introduisant les variables artificielles, de façon à ce que les
r
Ép

variables artificielles pénalisent la fonction-objectif. C’est-à-dire que l’optimum ne peut être atteint
que si les variables artificielles sont nulles. Il existe deux méthodes pour cela :
— Méthode du grand M
On multiplie les variables artificielles par un coût très grand M par rapport aux autres coûts
dans la fonction-objectif, et de sens contraire à l’objectif (M ≤ 0 si on maximise et M ≥ 0 si
on minimise). Ainsi, même une valeur très faible de la variable artificielle rend très mauvaise
la valeur de la fonction-objectif, il faut absolument l’annuler pour atteindre l’optimum.

Maximisation Minimisation
max z = c1 x1 + ... + cn xn − M a1 − M a2 ... min z = c1 x1 + ... + cn xn + M a1 + M a2 ...

On ajoute autant de termes que de variables artificielles dans le problème pour pouvoir les
rendre toutes nulles. Dès qu’elles sont toutes nulles (sorties de la base), on retrouve la fonction-
objectif initiale.
— Méthode des 2 phases
Dans cette deuxième méthode, on effectue un premier simplexe avec les contraintes du pro-
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 78

blème modifié et la fonction-objectif suivante :

min z = a1 + a2 + ...

Ainsi, l’optimum est atteint quand les variables artificielles sont nulles. La solution obtenue
est alors admissible pour le problème de départ, et peut servir de première solution de base
pour démarrer le simplexe avec la fonction-objectif initiale. On voit bien encore une fois que
l’objectif de ce stratagème est de construire une première solution de base admissible, ce qui
n’était pas possible sans recours aux variables artificielles.

4.8.4 Exemple de résolution de programmation linéaire générale


Soit le problème suivant :

max z = 1000x1 + 1200x2


10x1 + 5x2 ≤ 200
2x1 + 3x2 = 60
x1 ≤ 12
x2 ≥ 6

s

ée
x1 0
x2 ≥ 0
ig
rr
On transforme le problème en un modèle linéaire standard sous forme canonique, en introduisant :
co

— Une variable d’écart pour chaque contrainte ≤


n

— Une variable artificielle pour chaque contrainte =


no

— Une variable d’excédent et une variable artificielle pour chaque contrainte ≥


s
ve

max z = 1000x1 + 1200x2


eu

10x1 + 5x2 + e1 = 200


r
Ép

2x1 + 3x2 + a2 = 60
x1 + e3 = 12
x2 − e4 + a4 = 6

avec x1 , x2 , e1 , e3 , e4 , a2 , a4 ≥ 0
Méthode des deux phases
Voici le tableau initial du simplexe correspondant, en utilisant la méthode des 2 phases.

x1 x2 e1 e3 e4 a2 a4 b
0 0 0 0 0 1 1 0
e1 10 5 1 0 0 0 0 200
a2 2 3 0 0 0 1 0 60
e3 1 0 0 1 0 0 0 12
a4 0 1 0 0 -1 0 1 6

Tableau 4.2: Tableau 0 de la phase I


CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 79

On remarque que le système n’est pas canonique, puisqu’on a un +1 sur la colonne des variables
de base a2 et a4 pour la ligne de la fonction-objectif. On effectue donc une combinaison linéaire de
lignes pour les éliminer, rendre le système canonique, et trouver la solution de base. Cette étape
devra toujours être suivie lorsqu’on utilise des variables artificielles.

x1 x2 e1 e3 e4 a2 a4 b
-2 -4 0 0 1 0 0 -66
e1 10 5 1 0 0 0 0 200
a2 2 3 0 0 0 1 0 60
e3 1 0 0 1 0 0 0 12
a4 0 1 0 0 -1 0 1 6

Tableau 4.3: Tableau 1 de la phase I

On peut maintenant poursuivre le processus du simplexe comme vu lors de la résolution du pro-


blème Windor, pour résoudre ce problème de minimisation. Ici x4 est la variable de coût marginal
le plus négatif qui améliore le plus la fonction-objectif, et rentre donc dans la base. a4 sort.

s
x1 x2 e1 e3 e4 a2
ée
a4 b
ig
-2 0 0 0 -3 0 4 -42
rr
e1 10 0 1 0 5 0 -5 170
co

a2 2 0 0 0 3 1 -3 42
n

e3 1 0 0 1 0 0 0 12
no

x2 0 1 0 0 -1 0 1 6
s
ve

Tableau 4.4: Tableau 2 de la phase I


eu

e4 rentre et a2 sort :
r
Ép

x1 x2 e1 e3 e4 a2 a4 b
0 0 0 0 0 1 1 0
e1 20/3 0 1 0 0 -5/3 0 100
e4 2/3 0 0 0 1 1/3 -1 14
e3 1 0 0 1 0 0 0 12
x2 2/3 1 0 0 0 1/3 0 20

Tableau 4.5: Tableau final de la phase I

On a obtenu la solution optimale de la phase 1 : la fonction-objectif ne peut plus être améliorée


(elle est minimale, à 0), et les deux variables artificielles sont bien sorties de la base et donc nulles.
La solution (x1 , x2 , e1 , e3 , e4 ) = (0, 20, 100, 12, 14) constitue donc une solution admissible pour le
problème original. On laisse au lecteur le soin de le vérifier en remplaçant les variables par leurs
valeurs dans les contraintes du problème original pour s’assurer qu’elles sont toutes respectées.
On peut donc partir de cette solution pour résoudre le problème original avec la fonction-objectif
original. On élimine les colonnes liées aux variables artificielles puisqu’elles ne font plus partie du
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 80

problème. On rétablit aussi les coûts de la fonction-objectif originale dans le tableau :

x1 x2 e1 e3 e4 b
1000 1200 0 0 0 0
e1 20/3 0 1 0 0 100
e4 2/3 0 0 0 1 14
e3 1 0 0 1 0 12
x2 2/3 1 0 0 0 20

Tableau 4.6: Tableau 0 de la phase II

On remarque que le tableau n’est pas sous forme canonique, puisque la colonne de la variable
de base x2 n’est pas constituée de 0 et de 1. On effectue les combinaisons linéaires nécessaires pour
parvenir au problème canonique.

x1 x2 e1 e3 e4 b
200 0 0 0 0 -24000

s
e1 20/3 0 1 0 0 100
e4 2/3 0 0 0 1
ée
14
ig
e3 1 0 0 1 0 12
rr
x2 2/3 1 0 0 0 20
co

Tableau 4.7: Tableau 1 de la phase II


n
no

On peut maintenant poursuivre le simplexe pour ce problème de maximisation.


s
ve
eu

x1 x2 e1 e3 e4 b
r

0 0 0 -200 0 -26400
Ép

e1 0 0 1 -20/3 0 20
e4 0 0 0 -2/3 1 6
x1 1 0 0 1 0 12
x2 0 1 0 -2/3 0 12

Tableau 4.8: Tableau optimal de la phase II

La solution optimale est x = (x1 , x2 ) = (12, 12) pour une fonction-objectif z = 26 400.

Méthode du grand M
Recommençons le processus, mais cette fois avec la méthode du grand M. On ajoute à la fonction-
objectif un terme de pénalisation pour chaque variable artificielle, associé à un coefficient négatif
−M dans ce cas, puisqu’on maximise :
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 81

x1 x2 e1 e3 e4 a2 a4 b
1000 2000 0 0 0 -M -M 0
e1 10 5 1 0 0 0 0 200
a2 2 3 0 0 0 1 0 60
e3 1 0 0 1 0 0 0 12
a4 0 1 0 0 -1 0 1 6

Tableau 4.9: Tableau 0 - Méthode du grand M

On effectue les combinaisons linéaires nécessaires pour que le tableau soit sous forme canonique,
c’est-à-dire pour qu’il n’y ait que des 0 et des 1 sur les colonnes des variables de base :

x1 x2 e1 e3 e4 a2 a4 b
2M+1000 4M+1200 0 0 -M 0 0 66M
e1 10 5 1 0 0 0 0 200
a2 2 3 0 0 0 1 0 60
e3 1 0 0 1 0 0 0 12
a4 0 1 0 0 -1 0 1 6

s
Tableau 4.10: Tableau 1
ée
ig
rr
co

On peut maintenant poursuivre le simplexe selon la méthode habituelle. On commence par en-
trer x2 en base car il a le coût réduit le plus haut. a4 sort :
n
no

x1 x2 e1 e3 e4 a2 a4 b
s
ve

2M+1000 0 0 0 3M+1200 0 -4M-1200 42M-7200


eu

e1 10 0 1 0 5 0 -5 170
a2 2 0 0 0 3 1 -3 42
r
Ép

e3 1 0 0 1 0 0 0 12
x2 0 1 0 0 -1 0 1 6

Tableau 4.11: Tableau 2

e4 est maintenant la variable la plus intéressante à entrer en base. a2 sort.

x1 x2 e1 e3 e4 a2 a4 b
200 0 0 0 0 -M+400 -M -24000
e1 20/3 0 1 0 0 -5/3 0 100
e4 2/3 0 0 0 1 1/3 -1 14
e3 1 0 0 1 0 0 0 12
x2 2/3 1 0 0 0 1/3 0 20

Tableau 4.12: Tableau 3

On peut encore améliorer la fonction-objectif en entrant x1 , e3 sort.


CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 82

x1 x2 e1 e3 e4 a2 a4 b
0 0 0 -200 0 -M+400 -M -26400
e1 0 0 1 -20/3 0 -5/3 0 20
e4 0 0 0 -2/3 1 1/3 -1 6
x1 1 0 0 1 0 0 0 12
x2 0 1 0 -2/3 0 1/3 0 12

Tableau 4.13: Tableau final

Le tableau est optimal, il ne reste lus de coût marginal positif. On retrouve bien la solution
x = (12, 12), et les variables artificielles ont bien été éliminées de la base, elles sont nulles.

4.9 Cas particuliers et pathologiques


Plusieurs cas particuliers communément rencontrés sont présentés dans cette section.

4.9.1 Choix de variables entrantes et sortantes

s
ée
Il peut arriver qu’on ait le choix entre plusieurs variables à entrer ou à sortir durant le processus
ig
du simplexe.
rr
co

— Dans le cas où on a le choix entre plusieurs variables entrantes (c’est-à-dire plusieurs va-
n

riables entrantes ont le même coût marginal améliorant la fonction-objectif), on regarde pour
no

chacune jusqu’à quelle valeur on pourra l’incrémenter sans que la variable sortante devienne
négative, et on choisit de faire entrer la variable qui aura la limite la plus élevée, c’est-à-dire
s
ve

qui permettra une plus forte amélioration de la fonction-objectif.


r eu

— Dans le cas où on a le choix entre plusieurs variables sortantes, cela veut dire qu’il y
Ép

a plusieurs chemins possibles pour arriver à la nouvelle solution, c’est-à-dire que la nouvelle
solution est un point défini par plus de m contraintes. C’est un cas de dégénérescence.
On peut observer un exemple de dégénérescence dans le problème ci-dessous :

max z = 3x +9y
x +4y ≤8
x +2y ≤4
x, y ≥0

Le tableau initial du simplexe est le suivant :

Base x y e1 e2 b
z 3 9 0 0 0
e1 1 4 1 0 8
e2 1 2 0 1 4
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 83

On part de la solution de base (0, 0, 8, 4) pour laquelle les variables de base sont e1 = 8 et
e2 = 4, visibles sur le graphique 4.6. La variable entrante est y, mais on voit que l’on peut choisir
indifféremment e1 ou e2 comme variable sortante ( ab12
1
= b2
a22 = 2).

Si par exemple on choisit de sortir e1 :

Base x y e1 e2 b
3 −9
z 4 0 4 0 -18
1 1
y 4 1 4 0 2 Si au contraire on choisit de sortir la variable
1
e2 2 0 − 21 1 0 e2 , le prochain tableau du simplexe est :

On vérifie que l’on est toujours sur le point Base x y e1 e2 b


3
(x, y) = (0, 2), mais cette fois y et e2 sont en z 2 0 0 − 92 -18
base. On rentre maintenant x et on sort e2 : e1 -1 0 1 -2 0
1 1
y 2 1 0 2 2
Base x y e1 e2 b
z 0 0 − 32 − 32 -18 La solution optimale est atteinte.On est tou-
1
y 0 1 2 − 12 2 jours sur le point (x, y) = (0, 2), mais cette
x 1 0 -1 2 0 fois e1 et y sont en base.

s
ée
La solution optimale est atteinte. On est tou-
ig
rr
jours sur le point (x, y) = (0, 2), mais cette
co

fois x et y sont en base.


n
no

Ainsi, les deux choix possibles de variable sortante mènent à la même solution (x = (0, 2), z =
s

36), mais les variables en base sont différentes dans les deux cas.
ve

— À gauche : le point solution est défini par le croisement entre les contraintes (1) et (2),
eu

correspondant à e1 et e2 hors base.


r
Ép

— À droite : le point solution est défini par le croisement entre les contraintes (2) et (axe x = 0),
correspondant à x et e2 hors base.
On peut observer sur le graphique 4.6 que le point solution est en effet le croisement de m + 1 = 3
contraintes et non de m = 2 contraintes comme dans le cas ordinaire : contrainte (1) ; contrainte
(2) ; et axe x = 0. Il y a donc plusieurs chemins possibles pour que l’algorithme parvienne à la
solution.
On remarque aussi que l’une des variables en base est nulle (x à gauche, et e1 à droite). Ce sera
toujours le cas pour une dégénérescence.
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 84

4 y

1 x + 4y ≤ 8

z = 18 x
−4 −2 2 4 6 8 10
−x + 2y ≤ 4
−1

Figure 4.6: Exemple de dégénérescence

Dans ce cas particulier, on parvient donc à trouver la solution quelque soit le chemin emprunté.
Cependant, dans d’autres circonstances, la situation de dégénérescence pourrait faire en sorte que
l’algorithme du simplexe cycle et que l’on ne parvienne pas à la solution optimale : on entrerait
et sortirait alors les mêmes variables successivement en retombant sur les mêmes tableaux du

s
ée
simplexe, sans parvenir à obtenir un tableau dans lequel tous les coûts réduits sont négatifs (pour
ig
une maximisation). Il existe des techniques pour empêcher le simplexe de cycler, et trouver la
rr
solution optimale (voir par exemple le critère de Bland).
co

4.9.2 Solutions particulières


n
no

On peut rencontrer différents cas particuliers en résolvant le simplexe, liés à la forme du domaine
d’admissibilité selon la typologie établie à la section 4.4.3, et qui sont résumés ici.
s
ve

— Aucune solution admissible


eu

Dans le cas des problèmes constitués uniquement de contraintes de type ≤, et pour lesquels les
r

éléments de b sont tous positifs, le problème admet toujours au moins une solution admissible
Ép

(mais non optimale en général !), qui est le vecteur nul : quelques soient les contraintes,
la somme de termes nuls sera toujours nulle et inférieure à n’importe quelle valeur de bi
positive. Cependant, pour les problèmes généraux, il peut arriver que le domaine admissible
soit vide. Dans ce cas, il sera impossible d’éliminer les variables artificielles durant la résolution
(puisqu’il n’existe pas de point dans l’espace admissible, il n’y a aucune façon de s’y rendre).
Par conséquent, si on ne parvient pas à éliminer les variables artificielles, on conclura que le
problème n’admet pas de solution admissible.
— Problème non borné
Il peut arriver qu’après avoir défini une nouvelle variable entrante, disons xj , dont le coût
marginal est intéressant, on se rende compte qu’on ne trouve pas de limite d’augmentation
acceptable pour définir la variable sortante : toutes les limites sont infinies ou négatives, donc
hors du domaine d’admissibilité. Dans ce cas, le problème est non borné et il n’y a pas d’op-
timum fini. on peut augmenter z (cas de maximisation) ou le diminuer (cas de minimisation)
indéfiniment tout en continuant à respecter les contraintes.
— Plusieurs solutions optimales
Il se peut également qu’en cherchant quelle variable entrer dans la base en observant les coûts
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 85

marginaux, on découvre une variable hors base dont le coût marginal est nul, c’est-à-dire
dont l’entrée n’aurait pas d’impact sur la valeur optimale. On conclura dans ce cas qu’il y a
plusieurs solutions optimales : celle que l’on a déjà obtenue, et celle que l’on obtient en entrant
la nouvelle variable et en sortant une autre variable de base. Les valeurs des fonctions-objectifs
sont bien sûr égales pour les deux solutions. Il peut aussi y avoir plus de 2 solutions optimales.

4.10 Exercices
Exercice 15 (L’usine de fenêtres Whitt)
La Whitt Window Company est une entreprise qui ne compte que trois (3) employés et qui fabrique
deux (2) types de fenêtres fabriquées à la main : une fenêtre à ossature de bois et une fenêtre à
cadre d’aluminium. Elle réalise un bénéfice de 180 USD pour chaque fenêtre à ossature de bois et
de 90 USD pour chaque fenêtre à cadre d’aluminium.
Doug fabrique les cadres en bois et peut en fabriquer 6 par jour. Linda fabrique les cadres en
aluminium et peut en fabriquer 4 par jour. Bob forme et coupe le verre et peut produire 48 pi2
de verre par jour. Chaque fenêtre à cadre de bois utilise 6 pi2 de verre et chaque fenêtre à cadre
d’aluminium utilise 8 pi2 de verre.
La société souhaite déterminer le nombre de fenêtres de chaque type à produire par jour afin de

s
ée
maximiser les bénéfices totaux.
ig
Formuler un modèle LP pour ce problème et utiliser la méthode graphique pour le résoudre.
rr
Vérifier la solution en utilisant la méthode du simplexe.
co

Un nouveau concurrent en ville a également commencé à fabriquer des fenêtres à ossature de bois.
Cela peut obliger l’entreprise à baisser le prix de vente de ces fenêtres, et à réduire les bénéfices
n
no

réalisés.
— Comment la solution optimale changerait-elle si le bénéfice sur x (les fenêtres en bois) passait
s
ve

de 180 à 120 dollars ? De 180 à 60 ?


eu

— Doug envisage de réduire ses heures de travail, ce qui réduirait le nombre de charpentes en
bois fabriquées par jour. Comment la solution optimale changerait-elle s’il ne fabriquait que
r
Ép

5 cadres en bois par jour ?

Exercice 16 (Problème général)


Résolvez le problème suivant par la méthode du simplexe :

max z = 2x1 + 3x2


x1 + 2x2 ≤ 4
x1 + x2 = 3
x1 , x2 ≥ 0

Exercice 17 (Observation graphique du cheminement du simplexe)

Résolvez le problème suivant par la méthode du simplexe. Observez le cheminement du simplexe


CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 86

dans la recherche de solution a travers sa représentation graphique.

min z = 5x1 + 7x2


2x1 + 3x2 ≥ 42
3x1 + 4x2 ≥ 60
x1 + x2 ≥ 18
x1 , x2 ≥ 0

Exercice 18 (Méthode des deux phases)

Résoudre par la méthode des deux phases :

minz = 2x1 + x2 + 3x3


5x1 + 2x2 + 7x3 = 420
3x1 + 2x2 + 5x3 ≥ 280
x1 , x 2 , x 3 ≥ 0

s
ée
ig
Exercice 19 (Cas particulier)
rr
co

Résolvez le problème suivant par la méthode du simplexe :


n

max z = 5x1 + 4x2


no

3x1 + 2x2 ≤ 6
s

2x1 − x2 ≥ 6
ve

x1 , x2 ≥ 0
r eu
Ép

Exercice 20 (Dégénérescence)
Résolvez le problème suivant par la méthode du simplexe :

max z = 2x1 + x2
4x1 + 3x2 ≤ 12
4x1 + x2 ≤ 8
4x1 + 2x2 ≤ 8
x1 , x 2 ≥ 0
Chapitre 5

Interprétation matricielle du simplexe et analyse de

sensibilité

Introduction
i

s
ée
La planification de la production d’une entreprise n’est évidemment pas statique : le nombre
ig
d’employés peut varier, la direction peut vouloir remplacer des machines de production ou en
rr
acheter de nouvelles, les prix pratiqués peuvent être revus en fonction de la concurrence, les prix
co

des matières premières peuvent être fluctuants... Quand ces données varient, le plan de production
change-t-il, autrement dit la solution optimale du problème de programmation reste-t-elle la même
n

sous ces nouvelles conditions ?


no

Par ailleurs, dans de nombreux contextes, l’estimation des paramètres peut comporter une in-
s

certitude (le nombre de produits assemblés par un employé par jour par exemple dépend de sa forme
ve

physique, etc.). Quel sera l’impact de cette incertitude sur la solution ? Est-ce qu’une petite varia-
eu

tion peut changer la solution optimale, ou dispose-t-on d’une marge de manœuvre ? Autrement dit,
r

la solution optimale est-elle stable, quels sont les paramètres les plus sensibles qui peuvent mener
Ép

rapidement à un changement de la solution ?


L’analyse de sensibilité est un outil puissant qui permet de répondre à ces questions sans avoir
à résoudre de nouveau le problème d’optimisation pour chaque nouvelle situation, ce qui pourrait
être très long. À partir de l’analyse des tableaux du simplexe, l’analyse de sensibilité permet en
effet de déterminer simplement pour quelles plages de valeurs des coûts et des ressources la solution
initialement trouvée restera optimale. Elle permet également d’ajouter de nouvelles contraintes ou
de nouvelles variables sans résoudre à nouveau tout le problème.

5.1 Interprétation algébrique du simplexe


Dans cette section, on présente l’expression sous formes de matrices des différentes parties des
tableaux initiaux et finaux du simplexe. Ces expressions matricielles seront nécessaires pour l’analyse
de sensibilité présentée à la section 5.2.

87
CHAPITRE 5: INTERPRÉTATION MATRICIELLE DU SIMPLEXE ET ANALYSE DE
SENSIBILITÉ 88

5.1.1 Expression du tableau initial du simplexe


i
Soit par exemple le problème de programmation linéaire suivant :

s
ée
ig
rr
co
n
s no
ve
r eu
Ép
CHAPITRE 5: INTERPRÉTATION MATRICIELLE DU SIMPLEXE ET ANALYSE DE
SENSIBILITÉ 89

max z =6x1 −14x2 +13x3


x1
+2x2 +x3 ≤ 24
2
x1 +2x2 +4x3 ≤ 60
x1 , x2 , x3 ≥ 0, (5.1)

Le système 5.1 est un problème comprenant uniquement des inégalités de type ≤, on utilise donc
des variables d’écart pour obtenir la forme canonique suivante :

max 6x1 −14x2 +13x3 =z


x1
2 +2x2 +x3 +e1 = 24
(5.2)
x1 +2x2 +4x3 +e2 = 60
x1 , x2 , x3 , e1 , e2 ≥ 0,

L’écriture du système en forme canonique nous fournit l’information nécessaire pour exprimer le
tableau initial du simplexe :

s
ée
x1 x2 x3 e1
ig
e2 b
rr
6 −14 13 0 0 0
co

e1 1/2 2 1 1 0 24
e2 1 2 4 0 1 60
n
no

On observe que le système 5.2 est équivalent à :


s
ve

−z +6x1 −14x2 +13x3 =0


eu

x1
2 +2x2 +x3 +e1 = 24
(5.3)
r

x1 +2x2 +4x3 +e2 = 60


Ép

x1 , x2 , x3 , e1 , e2 ≥ 0,

En forme matricielle, le système 5.3 devient :

−z x1 x2 x3 e1 e2 b
1 6 −14 13 0 0 0
1
0 2 2 1 1 0 24
0 1 2 4 1 1 60

Étant donné, d’un point de vue pratique, que la colonne correspondant à z n’est jamais modifiée par
les opérations du simplexe, cette colonne n’est pas reportée quand on construit le tableau initial.
Cependant, elle est visible dans la représentation vectorielle suivante, et on verra plus tard le rôle
important qu’elle joue :
(
−z+ cx + 0xs =0
(5.4)
Ax + Ixs =b

où :
CHAPITRE 5: INTERPRÉTATION MATRICIELLE DU SIMPLEXE ET ANALYSE DE
SENSIBILITÉ 90

— c est le vecteur des coûts (dans l’exemple 5.1, c = (6, −14, 13))
" #
1/2 2 1
— A est la matrice du système d’équations (dans l’exemple 5.1, A = )
1 2 4
— I est la matrice identité.
— xs est le vecteur des variables de base du tableau initial, c’est-à-dire des variables d’écart et
des variables artificielles (dans l’exemple 5.1, xs = (e1 , e2 ))
" #
24
— b est le vecteur des ressource (dans l’exemple 5.1,b = )
60
L’écriture matricielle de 5.4 est la suivante :

−z x e b
1 c 0 0
..
e1 0 1 0 ··· 0 .
.. ..
T̃I = e2 . 0 1 0 ··· 0 .
.. .. A .. .. .. ..
. . . . . ··· . b

s
.. .. .. .. .. .. .. ..

ée
. . . . . . . .
..
en 0
ig 0 ··· ··· ··· 1 .
rr
co

Tableau 5.1: Tableau initial augmenté du simplexe T̃I


n

En supposant que l’on connaisse à priori la solution finale, les colonnes correspondant aux
no

variables xj de x peuvent être réarrangées sans modifier le problème, de façon à placer d’un côté
s

les variables qui feront partie de la solution de base finale, notées xB et de l’autre les variables qui
ve

seront hors base dans la solution finale, notées xN . On a alors :


r eu

x = [xB |xN ]
Ép

c = [cB |cN ]
A = [B|N]

Pour l’exemple 5.1, on peut vérifier que le tableau final du simplexe est :

x1 x2 x3 e1 e2 b
0 −37 0 −11 −1/2 −294
x1 1 6 0 4 −1 36
x3 0 −1 1 −1 1/2 6

Les variables de base finales sont donc x1 et x3 , et on a :


— xB = (x1 , x3 ) et xN = (x2 )
— cB = (6, 13) et cN = (−14)
" # " #
1/2 1 2
— B= et N =
1 4 2
Les colonnes du tableau initial augmenté du simplexe (T̃I, dans le tableau 5.1) peuvent être
réarrangées pour être présentées sous la forme générique suivante :
CHAPITRE 5: INTERPRÉTATION MATRICIELLE DU SIMPLEXE ET ANALYSE DE
SENSIBILITÉ 91

cB cN
z }| { z }| {
z 1 c 0 0
..
e1 0 1 0 ··· 0 .
.. .. ..
. . 0 1 0 ··· 0 .
. .. A .. .. .. ..
T̃I = .. . . . . ··· . b
.. .. .. .. .. .. .. ..
. . . . . . . .
..
em 0 0 ··· ··· ··· 1 .
|{z} | {z } | {z } | {z }
−z xB xN xs
| {z }
x

Ou encore :

s
1 cB cN 0 0

ée ..
0
ig
1 0 ··· 0 .
rr
.. ..
. 0 1 0 ··· 0 .
co

.. B N .. .. .. ..
. . . . ··· . b
n

.. .. .. .. .. .. ..
T̃I = . . . . . . .
no

..
0 0 ··· ··· ··· 1 .
s
ve

|{z} | {z } | {z } | {z }
−z xB xN xs
r eu

| {z }
Ép

Tableau 5.2: Tableau initial augmenté du simplexe - Avec colonnes réarrangées

Le même tableau peut aussi s’écrire en utilisant les notations par colonne :

1 cBk cNj 0 0

0 Bk Nj el b
T̃I =

| {z } | {z } | {z } | {z }
−z xBk xNj xsl
1 col. m col. n − m col. m col. 1 col.

Tableau 5.3: Tableau initial augmenté du simplexe - Notation par vecteur-colonne

Dans ce dernier tableau, Bk est la k ième colonne de la matrice B, Nj la j ième colonne de la


CHAPITRE 5: INTERPRÉTATION MATRICIELLE DU SIMPLEXE ET ANALYSE DE
SENSIBILITÉ 92

matrice N, el la lième colonne de la matrice identité, etc.


Par la suite, on utilisera les deux notations suivantes :
— TI = [A|Im |b], le tableau initial du système d’équations (sans la ligne des coûts)
" #
1 | c | 0 | 0
— T̃I = , le tableau initial augmenté du système d’équations auquel est
0 | A | Im | b
ajoutée la ligne des coûts correspondant à la fonction-objectif, et une colonne correspondant
à −z.
Dans l’exemple 5.1, le tableau initial TI est :

x1 x3 x2 e1 e2 b
TI = e1 1/2 1 2 1 0 24
e2 1 4 2 0 1 60

Et le tableau initial augmenté T̃I est :

−z x1 x3 x2 e1 e2 b
1 6 13 −14 0 0 0
T̃I =

s
e1 0 1/2 1 2 1 0 24
e2 0 1 4 2 0
ée
1 60
ig
rr
Comme mentionné précédemment, dans la pratique, on omettra généralement la première colonne
co

correspondant à z dans l’écriture des tableaux successifs du simplexe.


n
no

5.1.2 Expression du tableau final du simplexe


i
s
ve

i
eu

On se souvient que passer du tableau initial du simplexe au tableau final se fait à travers une suite
r

d’opérations ligne-équivalentes et que c’est possible de conserver ces opérations dans une matrice
Ép

appelée matrice de passage (voir chapitre 4.1.10). De plus, on sait que la même suite d’opérations
appliquée aux colonnes des variables du tableau initial qui seront en base dans le tableau final (les
variables xB ) donne la matrice identité dans le tableau final. Autrement dit, la matrice de passage
est celle que l’on doit appliquer à la matrice B) pour obtenir la matrice Identité : elle n’est donc
autre que sa matrice inverse, B−1 . Elle est conservée dans la tableau final sur les colonnes des
variables de base du tableau initial (xs ), puisque dans ce dernier, les colonnes de xs étaient la
matrice Identité. " #
4 −1
Ainsi, dans l’exemple 5.1 : B−1 =
−1 1/2
−1
Appliquer la matrice de passage B à TI pour obtenir le tableau final TF revient à écrire,
sous la forme vectorielle proposée dans l’équation 5.4 :

B−1 (Bxb + NxN + Ixs ) = B−1 b


⇐⇒ Im xB + B−1 Nxn + B−1 xs = B−1 b (5.5)

Sous forme matricielle, ce système d’équations s’écrit :

TF = [Im |B−1 N|B−1 |B−1 b]


CHAPITRE 5: INTERPRÉTATION MATRICIELLE DU SIMPLEXE ET ANALYSE DE
SENSIBILITÉ 93

On retrouve cette écriture dans le tableau final TF du simplexe explicité ci-dessous. Pour construire
˜ on substitue l’expression de xB tirée de l’équation (5.5) dans l’ex-
le tableau final augmenté TF,
pression de z issue du tableau initial :

−z +cB xB +cN xN +0 · xs =0
−1 −1 −1
−z +cB (−B NxN − B xs + B b)+ cN xN +0 · xs =0
−z +(cN − cB B−1 N)xN −cB B−1 xs = −cB B−1 b
−z +0 · xB +(cN − cB B−1 N)xN −cB B−1 xs = −cB B−1 b

(5.6)

Dans l’équation (5.6), les coefficients associés à xB sont nuls. Il s’agit des coûts marginaux du
tableau final pour xB , et ils sont nuls puisque les variables xB sont en base dans le tableau final par
définition. De la même façon, l’équation (5.6) fournit une expression des coûts marginaux c̄ dans
le tableau final pour les variables xN et xs , et pour la valeur de la fonction objectif finale dans le
membre de droite : :
— variables de base finales xB : c̄B = cB − cB B−1 B = 0

s
— variables hors base finales xN : c̄N = cN − cB B−1 N
— variables de base initiales xs : c̄s = 0 − cB B−1 Im = cB B−1
ée
ig
rr
— fonction-objectif optimale : z = cB B−1 b
co

Dans l’exemple 5.1, le lecteur pourra vérifier les valeurs des coûts marginaux, à la fois en lisant
le tableau final et en utilisant les expressions fournies ci-dessus pour les calculer à partir du tableau
n
no

initial et de la matrice de passage : c̄ = (0, −37, 0), c̄B = (0, 0), c̄N = (−37) et c̄s = (−11, −1/2).
s
ve

Remarque: 5.1.1 (Expression générale des coûts marginaux)


eu

les différentes formulations des coûts marginaux ci-dessus ne sont que les déclinaisons d’une
r
Ép

même formule générale. En effet, pour chaque variable du tableau initial en position j, soit sa
colonne correspondante Aj . Le coût marginal de xj peut alors s’exprimer comme suit :

c̄j = cj − cB B−1 Aj (5.7)

ou encore, sous forme vectorielle :

c̄ = c − cB B−1 A. (5.8)

Par ailleurs, les coûts marginaux finaux des variables xs ont une signification importante dans
la théorie de la dualité qui sera présentée au chapitre 6. Leurs opposés sont appelés valeurs duales
ou shadow prices, et notés π : π = −c̄s = cB B−1 .

˜ s’écrit donc finalement :


Sous forme matricielle, le système final complet d’équations TF
CHAPITRE 5: INTERPRÉTATION MATRICIELLE DU SIMPLEXE ET ANALYSE DE
SENSIBILITÉ 94

c̄B c̄N −π -z
z }| { z }| { z }| { z }| {
1 c − cB B−1 A −cB B−1 −cB B−1 b
x B1
..
.
.. 0 B−1 A B−1 B−1 b
˜ =
TF .
..
.
xBm
|{z} | {z } | {z } | {z } | {z }
−z xB xN xs RHS
| {z }
x

˜
Tableau 5.4: Tableau final du simplexe TF

s
Ou encore, en séparant les variables en base et hors base du tableau final :

ée
ig
rr
c̄B c̄N −π -z
co

z }| { z }| { z }| { z }| {
−1 −1
1 0 cN − cB B N −cB B −cB B−1 b
n
no

x B1
s

B−1 N B−1 B−1 b


ve

.. 0 Im
˜ =
TF .
r eu
Ép

xBm
|{z} | {z } | {z } | {z } | {z }
−z xB xN xs RHS
| {z }
x

˜
Tableau 5.5: Tableau final du simplexe TF-Colonnes réarrangées

Le même tableau peut s’écrire en utilisant la notation par colonnes :


CHAPITRE 5: INTERPRÉTATION MATRICIELLE DU SIMPLEXE ET ANALYSE DE
SENSIBILITÉ 95

c̄B c̄N −π -z
z }| { z }| { z }| { z }| {
1 0 cNj − cB B−1 Nj −cB B−1 l −cB B−1 b

˜ =
TF 0 ek B−1 Nj B−1 B−1 b
l

| {z } | {z } | {z } | {z } | {z }
−z xB xN xs RHS
1 col. m col. n − m col. m col. 1 col.

˜
Tableau 5.6: Tableau final du simplexe TF-Notation par vecteur-colonne

Dans lequel ek est la k ième colonne de la matrice Identité Im , B−1 Nj la j ième colonne de la
matrice B−1 N, etc.

s
ée
On notera par la suite : ig
— TF = B−1 A|B−1 |B−1 b , le tableau final du système d’équation
 
rr
" #
1 | c̄ | −π | −z
co

— TF˜ = , le tableau final augmenté du système d’équations,


0 | B−1 A | B−1 | B−1 b
n

auquel a été ajoutée la ligne correspondant à la fonction-objectif, et une colonne correspondant


no

à z.
— xBk la variable de base correspondante à la ligne k du tableau final. Bk est l’indice de la
s
ve

variable. xBk est donc différente de xk , qui est la variable du tableau initial située sur la
eu

colonne k. Par exemple, dans le système 5.1, on voit dans le tableau final que : xB2 = x3 , qui
r

est différent de x2 .
Ép

5.1.3 Conséquences importantes


La décomposition des tableaux du simplexe sous cette forme nous permet d’observer que l’on
˜ à partir du tableau initial T̃I en prémultipliant ce
peut obtenir directement le tableau final TF
dernier par une matrice carrée opportune B̃−1 de dimension (m + 1), où m est le nombre de
contraintes.
B̃−1 T̃I = TF
˜

Avec :

1 −cB B−1
B̃−1 =
0 B−1
CHAPITRE 5: INTERPRÉTATION MATRICIELLE DU SIMPLEXE ET ANALYSE DE
SENSIBILITÉ 96

5.1.4 Quizz d’entraînement


Identifier, pour le modèle de programmation linéaire 5.1 présenté au début de la section 5.1.1 :
1. A, B, N, B−1
2. xs
3. xB1 , xB2
4. c1 , c2 , c3 , cB1 , cB2 , cB
5. c̄1 , c̄2 , c̄3
6. c1 − cB B−1 A1
7. B −1 b
8. B1−1 , B2−1
9. B −1 A1 , B −1 A2
10. −cB B1−1 , −cB B2−1
11. π1 , π2
12. cB B −1 b

s
13. B̃, B̃ −1

ée
ig
rr
5.2 Analyse de sensibilité
co

i
n

Utilisons maintenant la formulation matricielle du simplexe présentée au paragraphe 5.1 pour


no

étudier les conséquences sur la solution d’une variation des valeurs des coûts ou des ressources
s

dans le problème. Déterminer si la solution d’un problème donné reste optimale lorsque certains
ve

paramètres varient revient à vérifier si cette solution reste admissible et si elle reste optimale.
eu

Comment s’en assurer ?


r
Ép

— Conditions d’admissibilité
La solution reste admissible si les variables de base restent positives, c’est-à-dire :

x≥0
⇐⇒ x = (xB , 0) ≥ 0
⇐⇒ xB ≥ 0

Condition d’admissibilité :
B−1 b ≥ 0

En effet, à l’optimalité, les valeurs de xB , les variables de base finales, se lisent dans le membre
de droite du tableau final, qui est B−1 b selon es tableaux établis au paragraphe précédent.
Les autres variables, les variables hors base du tableau final, sont nulles par définition.
CHAPITRE 5: INTERPRÉTATION MATRICIELLE DU SIMPLEXE ET ANALYSE DE
SENSIBILITÉ 97

— Conditions d’optimalité
La solution reste optimale si tous les coûts marginaux restent négatifs (cas de la maximisation)
ou positifs (cas de la minimisation), c’est-à-dire, dans le cas de la maximisation :

c̄ ≤ 0
c − cB B−1 A ≤ 0

Ici on a utilisé l’expression des coûts marginaux proposée à l’équation 5.8. En se plaçant sur
la colonne j, la condition d’optimalité devient :

Conditions d’optimalité :
Maximisation : cj − cB B−1 Aj ≤ 0, ∀j
Minimisation : cj − cB B−1 Aj ≥ 0, ∀j

5.2.1 Modification d’un membre de droite bk


Dans un processus de production, on peut souvent avoir à ajouter ou retirer des ressources,
à modifier leur capacité : cela revient dans le problème d’optimisation à modifier le membre de

s
ée
droite. Le domaine admissible du problème change alors, comme on peut s’en rendre compte en
ig
pensant au domaine admissible tracé lors de la résolution graphique : en modifiant un bi , la droite
rr
correspondante à la contrainte sur le graphique est translatée, et les coordonnées des points extrêmes
co

(=des coins) du domaine sont déplacés.


On dira dans ce cas que la solution de base finale ne change pas tant que les variables
n
no

en base et hors base restent les mêmes. Graphiquement, cela revient à dire que le point
optimal reste l’intersection des mêmes contraintes, même si ces contraintes se sont déplacées sur le
s

graphique. Les coordonnées de la solution et la valeur de la fonction-objectif varient donc même si


ve

la solution de base ne change pas selon cette définition.


eu

L’objectif de l’analyse de sensibilité est donc de définir la plage de valeurs de bi pour laquelle la
r

solution de base ne change pas.


Ép

y
f.o.

f.o.
opt

6
opt
6x x +

.=
+
6

.=
8y y =

121

135
=
8

5
60 8

0
4

Région

d’admissibilité
2
initiale

x
2 4 6 8 10 12

Figure 5.1: Modification d’un membre de droite

Soit le problème représenté graphiquement sur la figure 5.1 par exemple. Lorsque le membre
de droite de la contrainte bleue (6x + 8h ≤ 48) passe de 48 à 60, les coordonnées de la solution
CHAPITRE 5: INTERPRÉTATION MATRICIELLE DU SIMPLEXE ET ANALYSE DE
SENSIBILITÉ 98

optimale passent de (6, 1.5) à (6, 3) et la valeur de la fonction-objectif de 1215 à 1350. Cependant,
la solution de base reste la même, intersection entre les droites x = 6, et 6x + 8y = 60. Quand on
continue d’augmenter le membre de droite de la contrainte bleue, la solution de base reste même
tant que la contrainte bleue ne passe pas au-dessus du point (6, 4). Dès qu’elle passe au-dessus, la
solution de base ne sera plus définie par l’intersection de la droite bleue et de la droite x = 6, mais
par l’intersection des droites y = 4 et x = 6. I y a donc une marge de variation du bi sur laquelle
la solution de base ne change pas.
Reprenons les conditions d’optimalité mentionnées au paragraphe 5.2, dans le cas spécifique
d’une modification d’un bi pour un problème de maximisation :

Admissibilité : B−1 b ≥ 0
Optimalité : cj − cB B−1 Aj ≤ 0, ∀ j

Les bi n’interviennent pas dans la condition d’optimalité, il suffit donc de vérifier la condition
d’admissibilité. Supposons qu’on modifie le membre de droite en le translatant de δ : b devient
b0 = b + δ. La solution xB
0
reste admissible si et seulement si :

B−1 b0 ≥0

s
ée
−1 −1
⇐⇒ B b+B δ ≥0
ig
−1
⇐⇒ xB + B δ ≥0
rr
co

Supposons maintenant qu’on ne modifie que l’une des composantes du membre de droite, sur la
ligne d’une contrainte d’indice k par exemple. Le vecteur δ est alors nul, excepté sur la ligne k où il
n

vaut δk . Le produit B−1 δ devient le produit de la colonne k de B−1 par le scalaire δk . La condition
no

d’admissibilité devient la suivante :


s
ve

0
La solution de base xB d’un problème reste optimale lors d’une modification δk du membre
eu

de droite bk tant que :


r
Ép

xB 0 = xB + δk B−1
k ≥0

où B−1
k est la colonne k de la matrice B
−1
.
La nouvelle valeur de la fonction-objectif est :

z 0 = z + δk cB Bk −1 = z + δk πk ,

où πk est la composante k du vecteur π appelé coût implicite (ou Shadow price ou coût
dual) de la contrainte k .

Remarque : pour chaque modification d’une unité du membre de droite bk , la fonction-objectif


varie d’une unité du coût implicite πk . Les coûts implicites (π = cB B−1 ) sont directement lisibles
dans le tableau final du simplexe (voir tableau 5.4), ce qui rend immédiate la détermination de
l’impact d’une modification d’un bk sur la fonction-objectif.

Exemple de modification d’un bk

Soit un problème dont les tableaux initial et final sont les suivants :
CHAPITRE 5: INTERPRÉTATION MATRICIELLE DU SIMPLEXE ET ANALYSE DE
SENSIBILITÉ 99

x1 x2 x3 x4 x5 b x1 x2 x3 x4 x5 b
z 2 7 −3 0 0 0 ⇒ z 0 −1 −1 0 −2 −20
x4 1 3 4 1 0 30 x4 0 −1 5 1 −1 20
x5 1 4 −1 0 1 10 x1 1 4 −1 0 1 10

Dans ce problème, les variables de base du tableau initial sont (x4 , x"5 ) et la#matrice de passage
1 −1
B−1 se lit donc dans les colonnes de (x4 , x5 ) du tableau final : B−1 = .
0 1
• Modification de la contrainte 1 :
— Combien de ressources peut-on ajouter/enlever sans changer la base ?
0
La nouvelle solution xB reste optimale si la condition d’admissibilité est respectée, c’est-
à-dire si :

" xB #
0
= " xB # + δ1"B1 −1#≥ 0
−1
x0B1 xB1 B11
⇐⇒ = + δ1 −1
≥0
x0B2 "xB2# B
" 21#

s
20 1
⇐⇒ + δ1 ≥0

ée
" # 10
ig 0
20 + δ1
⇐⇒ ≥0
rr
10
co

Par conséquent les variables de base restent les mêmes tant que δ1 ≥ −20, c’est-à-dire
n

qu’on peut ajouter autant de ressources que l’on veut sur la contrainte 1 sans changer la
no

base, mais qu’on ne peut pas retirer plus de 20 unités.


s

— Quelle est la nouvelle solution de base si b1 = 15 ? Quelle est la valeur de la fonction-ob-


ve

jectif ?
eu

Dans ce cas, δ1 = b01 − b1 = 15 − 30 = −15. La base optimale ne change pas, c’est-à-dire


r
Ép

que (x4 , x1 ) restent variables de base. La nouvelle solution est :


" # " # " # " #
0 x04 20 1 5
xB = = − 15 =
x01 10 0 10

Ou encore : x0 = (x01 , x02 , x03 , x04 , x05 ) = (10, 0, 0, 5, 0)


La nouvelle valeur de la fonction-objectif est :

z 0 = z + δ 1 π1
= 20 − 15 × 0 = 20

où π1 est l’opposé du coût marginal final de la première variable de base du tableau


initial, c’est-à-dire de x4 , qui est lu dans le tableau final. On remarque que la valeur de
la fonction-objectif ne change pas. Ce résultat n’est pas étonnant puisque x4 est variable
de base du tableau final, c’est-à-dire que la contrainte 1 n’est pas active.
• Modification de la contrainte 2 :
CHAPITRE 5: INTERPRÉTATION MATRICIELLE DU SIMPLEXE ET ANALYSE DE
SENSIBILITÉ 100

— Combien de ressources peut-on ajouter/enlever sans changer la base ?

0
" xB # = " xB # + δ2"B2 −1#≥ 0
−1
x0B1 xB1 B12
⇐⇒ = + δ2 −1
≥0
x0B2 "xB2# "B22#
20 −1
⇐⇒ + δ2 ≥0
" # 10 1
20 − δ2
⇐⇒ ≥0
10 + δ2

Par conséquent l’ensemble des variables de base ne change pas tant que −10 ≤ δ2 ≤ 20,
c’est-à-dire tant que la ressource b02 = b2 +δ2 est comprise entre 10−10 = 0 et 10+20 = 30.
— Quelle est la nouvelle solution de base si b02 = 20 ? Quelle est la valeur de la fonction-ob-
jectif ?
Dans ce cas, δ2 = 10 et les variables de base ne changent pas. Les coordonnées de la
solution optimale sont maintenant :
" # " # " #
20 −1 10

s
0
xB = + 10 =

ée
10 1ig 20
rr
co

Ou encore : x0 = (x01 , x02 , x03 , x04 , x05 ) = (20, 0, 0, 10, 0)


n

La valeur de la fonction-objectif cette fois change (car la contrainte 2 que l’on a translatée
no

est une contrainte active) :


s

z 0 = z + δ 2 π2
ve
eu

= 20 + 10 × (2) = 40
r
Ép

• Modification des 2 contraintes :


Que se passe-t-il pour un changement des deux membres de droite, pour lequel b01 = 20 et
b02 = 30 ? Dans ce cas, δ1 = −10 et δ2 = 20.
" # " # " # " #
0 20 1 −1 −10 −10
xB = xB + B−1 δ = xB + δ1 B−1 1 + δ2 B−1 2 = + × =
10 0 1 20 30

La nouvelle solution n’est plus admissible puisque xB1 devient négatif. La base change et il
faut reprendre l’algorithme du simplexe pour trouver la nouvelle matrice de passage et la
nouvelle solution de base.

5.2.2 Modification d’un coefficient de la fonction-objectif ck


Ce cas correspond par exemple à l’étude de la variation des prix d’achat ou de vente des produits.
Deux cas peuvent se présenter : que se passe-t’il si on fait varier le prix d’une variable hors base ? Et
d’une variable de base ? Faire varier un coefficient cj revient à faire varier la pente de la fonction-
objectif. Sur un certain intervalle, tant que la fonction-objectif ne passe pas "au-dessus" ou "au-
CHAPITRE 5: INTERPRÉTATION MATRICIELLE DU SIMPLEXE ET ANALYSE DE
SENSIBILITÉ 101

dessous" des contraintes qui définissent le point optimal, les coordonnées de la solution de base ne
changent pas, seule la valeur de la fonction-objectif est modifiée.

18

18

180
18

0x

0x
0x

x+
+
6

+
+

12

90
15

60 y
0y
0y

y
=

=
=

=1
12

12
13

60
05

185
15
4
C B

6x
Région +
8y
2 =
d’admissibilité 48
A

x
2 4 6 8

Figure 5.2: Modification du coefficient c2 de la fonction-objectif

s
ée
Dans l’exemple de la figure 5.2, on regarde l’impact de la modification du coefficient c2 de la
fonction-objectif. Les coordonnées de la solution optimale ne changent pas tant que la fonction-
ig
objectif oscille entre les contraintes rouge et bleue qui définissent le point optimal A. Dès que le
rr
coefficient c2 devient supérieur à 240, la pente de la fonction-objectif devient inférieure à −240/180 =
co

−4/3, qui est la pente de la contrainte bleue (−8/6 = −4/3), la fonction-objectif passe "en-dessous"
n

de la contrainte bleue et la solution optimale change. Elle devient le point B. De même, dès que le
no

coefficient c2 devient négatif, la fonction-objectif "dépasse" la contrainte rouge et le point optimal


s

change. Il devient le point C. La plage d’optimalité du point optimal initial correspond donc une
ve

valeur de c2 comprise entre 0 et 240.


eu

Reprenons maintenant les conditions d’optimalité mentionnées au paragraphe 5.2, dans le cas
r

spécifique d’une modification d’un cj pour un problème de maximisation :


Ép

Admissibilité : B−1 b ≥ 0
Optimalité : cj − cB B−1 Aj ≤ 0, ∀j

Les cj n’interviennent pas dans la condition d’admissibilité, ils ne changent pas le domaine d’ad-
missibilité du problème. On vient d’en observer un exemple sur le graphique. La solution initiale
reste donc admissible, mais pourrait ne pas être optimale.

— Cas du coût d’une variable hors base xk


Supposons que l’on change un ck en c0k = ck + δk . Le vecteur des coûts de la base, cB , ne
change pas puisque xk ne fait pas partie de la base.B−1 et Aj ne changent pas non plus Par
conséquent, les coûts marginaux c̄j = cj − cB B−1 Aj ne changent pas non plus, tant que j est
différent de k.
CHAPITRE 5: INTERPRÉTATION MATRICIELLE DU SIMPLEXE ET ANALYSE DE
SENSIBILITÉ 102

Pour j = k, la solution reste optimale si :

c̄0k = c0k − cB B−1 Ak ≤0


⇐⇒ ck + δk − cB B−1 Ak ≤0
−1
⇐⇒ (ck − cB B Ak ) + δk ≤0
⇐⇒ c̄k + δk ≤0

En résumé :

Supposons que l’on change le coût ck d’une variable hors base xk en c0k = ck + δk .
Alors la solution reste optimale seulement si :
— Maximisation : δk ≤ −c̄k
— Minimisation : δk ≥ −c̄k
Par ailleurs, la valeur de la fonction-objectif ne change pas puisque la variable xk est
hors base et que ck xk est donc nul quelque soit la valeur de ck .

Remarque : Le coût marginal c̄k est directement lisibles dans le tableau final du simplexe,

s
ce qui rend immédiate la détermination de l’impact d’une modification d’un ck hors base sur

ée
la solution. ig
— Cas du coefficient d’une variable en base xk
rr
Supposons que l’on change ck en c0k = ck + δk pour une variable en base cette fois. Le vecteur
co

cB est maintenant modifié, et par conséquent tous les c¯j sont modifiés pour tous les j. Dans
n

un problème de maximisation, la solution reste optimale si :


no

c̄0j ≤ 0, ∀j
s
ve

Le calcul de c̄0j dépend de j :


eu

— j = k : comme xk est dans la base, son coût marginal est nul par définition, il n’est pas
r
Ép

nécessaire de vérifier la condition d’optimalité.


— j 6= k : supposons que le variable xk est la variable de base correspondante à la ligne
l dans le tableau final (c’est à dire que xk et xBl sont la même variable, k = Bl ). Le
nouveau vecteur des coûts de base s’écrit :

c0B = [cB1 , · · · , cBl + δk , · · · , cBm ]


= [cB1 , · · · , cBl , · · · , cBm ] + δk [0, · · · , 1, · · · , 0]
= cB + δk el ,
où el est un vecteur (1 × m) composé de 0 et d’un 1 sur la colonne l.

On peut écrire le nouveau coût marginal c̄0j de la façon suivante :

c̄0j = cj − c0B B−1 Aj


= cj − (cB + δk el )B−1 Aj
= cj − cB B−1 Aj − δk el B−1 Aj
= c̄j − δk el B−1 Aj
CHAPITRE 5: INTERPRÉTATION MATRICIELLE DU SIMPLEXE ET ANALYSE DE
SENSIBILITÉ 103

B−1 Aj est la colonne j du tableau final, et el B−1 Aj est la lième ligne de cette colonne.
C’est donc l’élément en position (l, j) du tableau final, que l’on notera : T Flj . La condition
d’optimalité s’écrit alors :

c̄0j ≤ 0 ⇐⇒ c̄j − δk T Flj ≤ 0

Si la solution reste optimale, on peut aussi calculer la nouvelle valeur de z :

−1
z 0 = c0B B b
= cB B−1 b + δk el B−1 b
= z + δk el B−1 b.

Or, el B−1 b est le coefficient du tableau final présent sur la ligne l, et sur la colonne du
membre de droite, c’est donc la valeur de xk , puisque xk est la variable de base correspondant
à la ligne l ( Bl = k). Par conséquent :

z 0 = z + δ k xk

s
ée
En résumé : ig
Supposons que xk est une variable de base correspondante à la ligne l du tableau
rr
co

final, et supposons que l’on modifie son coût ck en ck + δk . Si on note T F la matrice


du tableau final, alors la solution reste optimale seulement si :
n

— Maximisation : δk T Flj ≥ c̄j , ∀j 6= k.


no

— Minimisation : δk T Flj ≤ c̄j , ∀j 6= k.


s
ve

Par ailleurs, si la solution reste optimale, alors : z 0 = z + δk xk


r eu
Ép

Exemple de modification d’un ck d’une variable en base

Soit un problème dont les tableaux initial et final sont les suivants :

x1 x2 x3 x4 x5 b x1 x2 x3 x4 x5 b
z 2 7 −3 0 0 0 ⇒ z 0 −1 −1 0 −2 −20
x4 1 3 4 1 0 30 x4 0 −1 5 1 −1 20
x5 1 4 −1 0 1 10 x1 1 4 −1 0 1 10

• Pour quelle plage de valeurs de c03 la solution courante reste-t-elle optimale ? Quel est l’impact
sur la fonction-objectif si δ3 = 1 ?
x3 est variable hors-base pour le tableau final. Dans ce cas, puisque le problème est un pro-
blème de maximisation, la solution reste optimale si :

δ3 ≤ −c̄3 = 1

C’est-à-dire que la solution ne change pas tant que c03 = c3 + δ3 ≤ −2. Si δ3 = 1, la solution
ne change pas. La fonction-objectif ne change donc pas non plus, puisque x3 reste hors base.
CHAPITRE 5: INTERPRÉTATION MATRICIELLE DU SIMPLEXE ET ANALYSE DE
SENSIBILITÉ 104

• Pour quelle plage de valeurs de c02 la solution courante reste-t-elle optimale ? Quel est l’impact
sur la fonction-objectif si δ2 = −2 ?
x2 est variable hors-base pour le tableau final. Dans ce cas, puisque le problème est un pro-
blème de maximisation, la solution reste optimale si :

δ2 ≤ −c̄2 = 1

C’est-à-dire que la solution ne change pas tant que c02 ≤ 8. Si δ2 = −2, la solution ne change
pas. La fonction-objectif ne change donc pas non plus, puisque x2 reste hors base.
• Pour quelle plage de valeurs de c01 la solution courante reste-t-elle optimale ? Quel est l’impact
sur la fonction-objectif si δ1 = 1 ?
x1 est la variable de base du tableau final correspondant à la ligne 2. Donc, k = 1 et l = 2.
Dans ce cas, puisque le problème est un problème de maximisation, la solution reste optimale
si :

δk T Flj ≥ c̄j , ∀j 6= k
⇐⇒ δ1 T F2j ≥ c̄j , ∀j 6= 1

s
ée
 
δ1 × (4) ≥ −1 (j ig = 2)
 
δ1 × (−1) ≥ −1 (j = 3)
⇐⇒ 
rr

 δ × (0) ≥ 0 (j = 4)
 1 
co

δ1 × (1) ≥ −2 (j = 5)
n

Par conséquent, la solution reste optimale tant que − 41 ≤ δ1 ≤ 1, c’est-à-dire tant que
no

7
4 ≤ c01 ≤ 3. Dans le cas où δ1 = 1, la solution optimale reste donc la même, c’est-à-dire
que les variables de base restent les mêmes. La fonction-objectif devient : z 0 = z + δk xk =
s
ve

20 + δ1 x1 = 20 + 1 × (10) = 30
r eu

5.2.3 Ajout d’une contrainte


Ép

On souhaite dans ce cas tester l’impact d’une nouvelle restriction sur la solution. Puisque la
procédure de résolution du simplexe est une suite de combinaisons linéaires, le système d’équa-
tions composé du système final du simplexe, augmenté de la nouvelle contrainte, est équivalent au
système initial, augmenté de la nouvelle contrainte. Pour résoudre ce nouveau problème, il suffit
donc d’ajouter la ligne de la nouvelle contrainte au tableau final, puis d’effectuer les combinaisons
linéaires nécessaires de façon à éliminer les coefficients non nuls que la nouvelle contrainte aurait pu
amener sur les colonnes des variables de base. On retrouve alors un tableau sous forme canonique.
Plusieurs cas peuvent se présenter :
— la solution reste optimale (tous les coûts marginaux sont négatifs par exemple dans le cas de
la maximisation). La nouvelle contrainte est une contrainte inactive et/ou redondante.
— la solution n’est plus optimale, car des coûts marginaux sont positifs par exemple dans le
cas d’une maximisation. Une nouvelle itération du simplexe peut être menée pour trouver la
nouvelle solution optimale.
— la solution n’est plus admissible, car des coefficients du membre de droite sont négatifs.
CHAPITRE 5: INTERPRÉTATION MATRICIELLE DU SIMPLEXE ET ANALYSE DE
SENSIBILITÉ 105

5.2.4 Ajout d’une variable


Ce cas correspond par exemple à la volonté d’une entreprise de lancer un nouveau produit sur
le marché. On peut ajouter la colonne correspondant à la nouvelle variable dans le tableau initial,
mais quelle sera la colonne correspondant à la nouvelle variable dans le tableau final ? Il suffit de
multiplier la colonne initiale par B̃−1 , la matrice de passage augmentée qui permet de passer du
tableau initial au tableau final. Si le coût marginal de la nouvelle variable est positif (dans le cas
d’une maximisation), ou négatif (dans le cas d’une minimisation), la nouvelle variable peut alors
rentrer dans la base et on effectue une nouvelle itération du simplexe. Dans le cas contraire, la
nouvelle variable est hors base et la solution ne change pas.

5.2.5 Valeur d’une variable fixée


Dans ce cas, on impose à un xj de prendre une valeur non optimale. Par exemple on pourrait
vouloir forcer la production d’un produit j, même si celui-ci n’est pas rentable, c’est-à-dire que la
variable correspondante xj est hors base. Par définition, le coût marginal c̄j de cette variable est la
variation appliquée sur la fonction-objectif pour chaque unité de xj produite. Par conséquent :

s
z 0 = z + c̄j xj

ée
ig
Si on traite un problème de maximisation, c̄j est négatif, et z diminue, alors que si l’on traite un
rr
problème de minimisation, c̄j est positif et z augmente.
co

Imposer une valeur non optimale à xj aura aussi une conséquence sur les valeurs des variables
n

en base, de façon à respecter les équations des contraintes. On peut déterminer ces nouvelles valeurs
no

en remplaçant xj par sa valeur forcée dans les équations du tableau final.


s
ve

5.3 Exercices
eu

Exercice 21 (Identification des composantes des tableaux du simplexe)


r
Ép

Voici les tableaux initial et final d’un problème d’optimisation.

x1 x2 x3 e1 e2 b x1 x2 x3 e1 e2 b
6 -14 13 0 0 0 0 -37 0 -11 -1/2 -294
Tableau initial Tableau final
1/2 2 1 1 0 24 1 6 0 4 -1 36
1 2 4 0 1 60 0 -1 1 -1 1/2 6

Identifier :
1. c1 , c2 , c3
2. xs
3. A, B, N
4. xB1 , xB2
5. cB1 , cB2 , cB
6. B −1 , B̃, B̃ −1
7. c̄1 , c̄2 , c̄3 c̄4 c̄5
8. c1 − cB B−1 A1 , c2 − cB B−1 A2 , c4 − cB B−1 A4 , c5 − cB B−1 A5
CHAPITRE 5: INTERPRÉTATION MATRICIELLE DU SIMPLEXE ET ANALYSE DE
SENSIBILITÉ 106

9. B −1 b
10. B1−1 , B2−1
11. B −1 A1 , B −1 A2
12. −cB B1−1 , −cB B2−1
13. π1 , π2
14. cB B −1 b

Exercice 22 (Modification d’un bk )


Soit un problème d’optimisation dont les tableaux initiaux et finaux du simplexe sont les suivants :

x1 x2 x3 e1 e2 b x1 x2 x3 e1 e2 b
6 -14 13 0 0 0 0 -37 0 -11 -1/2 -294
1/2 2 1 1 0 24 1 6 0 4 -1 36
1 2 4 0 1 60 0 -1 1 -1 1/2 6

— Combien de ressources de la contrainte 1 peut-on ajouter ou enlever sans changer le plan de


production ?

s
ée
— Quelle est la nouvelle solution de base si b1 = 26 ? Quelle est la nouvelle valeur de la fonction-
ig
objectif ?
rr
— Combien de ressources de la contrainte 2 peut-on ajouter ou enlever sans changer le plan de
co

production ?
n

— Quelle est la nouvelle solution de base si b2 = 50 ? Quelle est la nouvelle valeur de la fonction-
no

objectif ?
s

— Quelle est la nouvelle solution de base si b1 = 26 et b2 = 50 ? Quelle est la nouvelle valeur de


ve

la fonction-objectif ?
eu

Exercice 23 (Modification d’une composante du vecteur c)


r
Ép

Considérons les tableaux initiaux et finaux de l’exercice précédent 22.


— Pour quelle plage de valeurs de c3 la solution courante reste-t-elle optimale ? Quel est l’impact
sur la fonction-objectif si δ3 = 1 ?
— Pour quelle plage de valeurs de c2 la solution courante reste-t-elle optimale ? Quel est l’impact
sur la fonction-objectif si δ2 = −2 ?
— Pour quelle plage de valeurs de c1 la solution courante reste-t-elle optimale ? Quel est l’impact
sur la fonction-objectif si δ1 = 1 ?

Exercice 24 (Analyse de sensibilité complète)


Soit le problème suivant destiné à étudier les quantités optimales des produits 1, 2, et 3 à produire :

max z = −5x1 + 5x2 + 13x3


−x1 + x2 + 3x3 ≤ 20
12x1 + 4x2 + 10x3 ≤ 90
x1 , x2 , x3 ≥ 0

Le tableau final du simplexe est le suivant :


CHAPITRE 5: INTERPRÉTATION MATRICIELLE DU SIMPLEXE ET ANALYSE DE
SENSIBILITÉ 107

x1 x2 x3 e1 e2 b
z 0 0 -2 -5 0 -100
x2 -1 1 3 1 0 20
e2 16 0 -2 -4 1 10

— A partir de quel prix le produit 3 commence-t-il à être rentable ?


— Que se passe-t-il si le prix du produit 3 diminue à 8 CAD ?
— De combien peut-on diminuer le prix du produit 2 sans affecter le plan de production
— Combien de ressources peut-on ajouter à la contrainte 1 sans changer le plan de production ?
— Qu’arrive-t-il si on augmente de 3 la ressource liée à la contrainte 1 ?
— Et si les ressources des contraintes 1 et 2 deviennent respectivement 10 et 100 ?
— Je souhaite produire exactement 2 unités du produit 3. Quel est l’impact sur ma solution ?
— La contrainte suivante doit maintenant être prise en compte. Que se passe-t-il ? 2x1 + 3x2 +
5x3 ≤ 50

Exercice 25 (Analyse de sensibilité sur les variables artificielles)

s
— Soit le problème suivant :
ée
ig
max z = −3x1 + 6x2
rr
co

4x1 + x2 ≥ 16
n

4x1 + x2 ≤ 40
no

4x1 − x2 ≥ 8
s
ve

4x1 − x2 ≤ 32
eu

x2 ≤ 8
r
Ép

x1 , x2 ≥ 0

— Donner la solution graphique et par le simplexe.


— Répondre graphiquement et à partir du simplexe aux questions suivantes :
— Quelle est la solution et la valeur optimale de la fonction-objectif ?
— Quelles sont les contraintes actives ?
— De combien doit-on modifier c1 pour que la solution ne soit plus optimale ?
— De combien doit-on modifier b1 pour que la solution ne soit plus optimale ?
Chapitre 6

La dualité

Introduction
La théorie de la dualité introduit pour chaque problème de programmation linéaire appelé
primal, un problème de programmation linéaire complémentaire appelé dual. Les relations entre

s
ée
ces deux problèmes sont une application des multiplicateurs de Lagrange, et offrent une puissante
ig
méthode de résolution en PL. Ce chapitre présente les principales relations entre un problème primal
rr
et son dual, et la façon dont on peut utiliser ces relations pour trouver la solution optimale d’un
co

problème.
n
no

6.1 Approche intuitive : le problème mécanique


s
ve

Considérons le problème de mécanique qui consiste à trouver le point d’équilibre d’une balle
eu

qui tombe dans un saladier sous l’influence de la gravité. On peut résoudre ce problème de deux
façons :
r
Ép

• Formulation primale : interprétation géométrique du problème


Dans ce cas, on cherche à minimiser l’énergie potentielle de la balle, ce qui revient à trouver
son altitude minimale à l’arrêt, sachant qu’elle ne peut descendre plus bas que les parois.

Figure 6.1: Illustration du problème d’équilibre de la balle

Les parois définissent alors les limites du domaine admissible pour les positions de la balle.
Appelons (x1 , x2 ) les coordonnées d’un point sur le plan vertical. Écrivons l’équation de droite

108
CHAPITRE 6: LA DUALITÉ 109

de chacune des parois i sous la forme : ai1 x1 +ai2 x2 −bi = 0. Dans ce cas, on se souviendra que
ai = (ai1 , ai2 ) est le vecteur normal à la paroi i. C’est aussi son gradient (voir la définition 9.3.2
au chapitre 9 pour un rappel sur le gradient). Puisque la balle ne peut pas traverser les parois
du saladier et qu’elle doit rester au-dessus, on peut écrire le problème de la façon suivante
pour respecter la contrainte liée à chaque paroi tout en minimisant l’énergie potentielle de la
balle (mgx2 , m la masse de la balle et g constante de gravité) :

min z = mgx2 min z = mgx2


a11 x1 + a12 x2 − b1 ≥ 0 a1 x ≥ b1
min z = cx
a21 x1 + a22 x2 − b2 ≥ 0 ⇐⇒ a2 x ≥ b2 ⇐⇒ (6.1)
.. .. ai x ≥ bi , ∀ i
. .
a51 x1 + a52 x2 − b5 ≥ 0 a5 x ≥ b5

Dans 6.1, c = (0, mg) est un vecteur dirigé selon la verticale. On remarque que c’est aussi
le vecteur-poids de la balle qu’on utiisera dans le paragraphe suivant. Appelons problème
primal cette première formulation du problème de la balle.

• Formulation duale : interprétation physique du problème

s
ée
On peut modéliser le même problème de façon différente, en faisant le bilan des forces qui
ig
s’appliquent à la balle au point d’équilibre, c’est-à-dire l’équilibre entre la force de gravité et
rr
la réaction des parois. Appelons πi , la force de réaction de chaque paroi i. La réaction d’une
co

paroi étant dirigée selon la normale à cette paroi, le bilan des forces peut s’écrire :
n

X
no

c = π1 a1 + π2 a2 + π3 a3 + π4 a4 + π5 a5 = πi ai = πA (6.2)
i
s
ve

Les cinq réactions (π1 , ..., π5 ) correspondent aux cinq contraintes des cinq parois de la formu-
lation (6.1). Le problème (6.2) s’appelle le problème dual du problème (6.1).
eu

Dans les 4 paragraphes suivants, on présente une une première approche intuitive des proprié-
r
Ép

tés du primal et du dual(écarts complémentaires, dualité forte et faible). La définition exacte


de chacune de ces propriétés est proposée dans les sections 6.4 à 6.6.

• Écarts complémentaires
Au point d’équilibre C de la figure 6.1, seules les contraintes des parois A = {3, 4} sont
actives, la balle ne touche pas les autres parois. Autrement dit, les contraintes des parois 3
et 4 du problème (6.1) sont satisfaites à l’égalité et les réactions de ces parois sont non nulles
et strictement positives :

Primal Dual
a3 x = b3 π3 > 0
a4 x = b4 π4 > 0

Les contraintes A = {1, 2, 5} quant à elles sont non-actives, c’est-à-dire que l’inégalité est
stricte dans le primal. Cela équivaut à dire, dans le problème dual, que les parois {1, 2, 5}
CHAPITRE 6: LA DUALITÉ 110

n’exercent pas de réaction sur la balle, c’est-à-dire :

Primal Dual
a1 x > b1 π1 = 0
a2 x > b2 π2 = 0
a5 x > b5 π5 = 0

Le fait que seules les contraintes actives peuvent exercer une réaction s’appelle la propriété
des écarts complémentaires, que l’on peut exprimer mathématiquement sous la forme :

πi (ai x − bi ) = 0, ∀ i ∈ {1, 2, 3, 4, 5} (6.3)

Autrement dit, ou bien une contrainte est active (ai x − bi = 0) et il y a réaction (πi > 0),
ou bien elle est inactive (ai x − bi > 0) et il ne peut pas y avoir de réaction (πi = 0).

• Admissibilité duale et optimalité primale


À chaque angle du saladier, de coordonnées x = (x1 , x2 ) correspond une réaction duale π =
(π1 , π2 , π3 , π4 , π5 ). Cependant, la contrainte d’équilibre des forces (c = πA
πA) n’est valide qu’au

s
point d’équilibre, là où la solution est optimale. En ce point, πi ≥ 0, ∀ i.

ée
Regardons par exemple le point D de la figure 6.1 : il n’existe pas de combinaison linéaire
ig
positive des gradients a4 et a5 aux coefficients positifs qui permette d’obtenir c, ou autrement
rr
dit c n’est pas situé entre les vecteurs a4 et a5 . C’est-à-dire qu’on ne peut pas trouver de
co

solution π , telle que πi ≥ 0, ∀ i.


n

Par conséquent, si l’on peut trouver une solution primale x∗ telle que la solution duale
no

correspondante π ∗ soit admissible et satisfasse les conditions des écarts complémentaires,


alors x∗ est optimale.
s
ve

• Relation entre les solutions optimales primales et duales (Dualité forte)


eu

Soit x∗ la solution primale optimale et π ∗ la solution duale correspondante, elle est donc
r
Ép

admissible (c’est à dire c = π ∗A


A) et elle satisfait les conditions des écarts complémentaires
en x∗ . Cette solution nous donne des informations importantes sur la valeur de la fonction-
objectif en x∗ . En effet, en faisant la somme des équations de complémentarité (6.3) pour x∗
et π ∗ , on obtient :
X
πi∗ (ai x∗ − bi ) = 0 ⇐⇒ (6.4)
i
X X
(πi∗ ai )x∗ − (πi∗ bi ) = 0 ⇐⇒ (6.5)
i i

cx∗ = π ∗ bb, (6.6)

où la dernière équivalence vient du fait que c = π ∗ A, tel que vu dans la définition (6.2).
Cela veut dire que la valeur de la solution du primal, x∗ , peut être obtenue à partir de cette
dernière équation dès que l’on connait la valeur de la solution du dual, π ∗ .

Au point optimal : π ∗ b = cx∗

Cette propriété est appelée théorème de la dualité forte. On remarque aussi que cx∗ qui
apparait dans l’équation est exactement la fonction-objectif du primal à minimiser.
CHAPITRE 6: LA DUALITÉ 111

• Relation entre les solutions optimales primales et duales (Dualité faible)


Pour les solutions duales π admissibles (cc = πA
πA), mais qui ne satisfont pas la propriété des
écarts complémentaires, on peut montrer que la valeur πb est une borne inférieure de la
valeur de la fonction objectif du primal. En effet, grâce au fait que Ax ≥ b, on voit que
πb ≤ πAx = cx et donc
πb ≤ cx.

Cette propriété est appelée dualité faible. Le maximum de πb est atteint seulement à la
π∗ b = cx∗ ).
solution optimale, où la propriété de la dualité forte est valide (π

• Résumé des propriétés duales découvertes à travers le problème de la balle


À chaque problème d’optimisation appelé Primal, (variables (x1 , · · · , xj , · · · , xn ) ∈ A) cor-
respond un autre problème d’optimisation dans l’espace des contraintes appelé Dual, (va-
riables (π1 , · · · , πi , · · · , πm ) ∈ V).

Primal Dual
X X
min cj x j max bi πi

s
j∈A i∈V

ée
X X
aij xj ≥ bi , ∀i∈V ig aij πi = cj , ∀j∈A
j∈A i∈V
rr
xj non restreint, ∀j∈A πi ≥ 0, ∀i∈V
co

Ou encore, en forme matricielle :


n
no

Primal Dual
s
ve

min cx max bπ
eu

Ax ≥ b πA = c
r
Ép

x non restreint π≥0

Il y a une relation de complémentarité entre les solutions optimales primale x∗ et duale π ∗ ,


appelée propriété des écarts complémentaires :
Si la contrainte i du primal est active : (ai x∗ = bi ) alors πi∗ > 0
Si la contrainte i du primal est non-active : (ai x∗ > bi ) alors πi∗ = 0

Il y a une relation entre les valeurs optimales des fonctions objectifs du primal et du dual
appelée Propriété de la dualité forte. La valeur optimale cx∗ peut être obtenue par la
solution duale correspondante :

cx ∗ = π ∗ b

Une relation semblable, appelée Propriété de la dualité faible, est valide pour toutes les
solutions duales π et primales x admissibles mais pas nécessairement optimales, qui s’écrit,
dans notre exemple de minimisation du primal :

cx ≥ πb
CHAPITRE 6: LA DUALITÉ 112

Autrement dit, la fonction-objectif du dual constitue une borne inférieure de la fonction-objectif du


primal, quelque soit x et π admissibles aux contraintes. L’égalité sera obtenue quand x et π seront
optimaux.
Notons que dans un cas de maximisation du primal, le sens de l’inégalité serait inversé (la
fonction-objectif du dual serait une borne supérieure de celle du primal dans ce cas).

6.2 Interprétation économique de la dualité


Pour poursuivre notre découverte de la dualité, imaginons maintenant un éleveur qui aimerait
optimiser le régime alimentaire de ses poulets à partir de plusieurs aliments disponibles à l’achat.
Chaque aliment contient plusieurs types de vitamines dont les quantités sont connues. Afin de
s’assurer qu’un poulet se développe de manière saine, l’alimentation choisie doit fournir une quantité
minimale de certaines vitamines. L’éleveur veut alors déterminer le régime alimentaire au moindre
coût qui lui permettra d’assurer l’apport suffisant en vitamines à ses poulets.
Ce problème se modélise de la façon suivante :
• Ensembles :
— j ∈ A, l’ensemble des aliments

s
— i ∈ V , l’ensemble des vitamines
ée
ig
• Paramètres :
rr
co

— cj , le coût de l’aliment j, ∀j ∈ A
— bi , la quantité minimale de vitamine i nécessaire, ∀i ∈ V
n
no

— aij , l’apport en vitamine i fourni par l’aliment j, ∀i ∈ A, j ∈ V


• Variables :
s
ve

— xj , la quantité d’aliment j dans le régime, ∀j ∈ A


eu

• Modèle :
r
Ép

P
min cj xj
j∈A
P
aij xj ≥ bi ∀i∈V
j∈A
xj ≥0 ∀j∈A

Au lieu d’étudier le problème du point de vue de l’éleveur, plaçons-nous maintenant dans le


cas d’un producteur de vitamines qui souhaite convaincre l’éleveur de nourrir ses poulets avec
des pilules vitaminées pour remplacer les vrais aliments. Le producteur de vitamines veut alors
connaître, pour chaque vitamine, le prix maximal qu’il pourra proposer à l’éleveur pour que celui-ci
accepte d’acheter les vitamines : le coût total du régime à base de vitamines ne devra pas dépasser
le coût du régime à base d’aliments. Ce problème se modélise de la façon suivante :
• Ensembles :
— j ∈ A, l’ensemble des aliments
— i ∈ V , l’ensemble des vitamines
• Paramètres :
— cj , le coût de l’aliment j, ∀j ∈ A
CHAPITRE 6: LA DUALITÉ 113

— bi , la quantité minimale de vitamine i nécessaire, ∀i ∈ V


— aij , l’apport en vitamine i fourni par l’aliment j, ∀i ∈ V, j ∈ A
• Variables :
— πi , le prix unitaire de la vitamine i, ∀i ∈ V
• Modèle :
P
max bi π i
i∈V
P
aij πi ≤ cj ∀j∈A
i∈V
πi ≥0 ∀i∈V

Comparons maintenant les deux modèles, celui de l’éleveur et celui du producteur de vitamines :
Problème de l’éleveur Problème du producteur de vitamines
P
min cj xj
P
max bi π i
j∈A i∈V
P
aij xj ≥ bi ∀i∈V
P
aij πi ≤ cj ∀j∈A
j∈A i∈V

s
xj ≥0 ∀j∈A πi ≥0 ∀i∈V

ée
Ou encore, sous forme matricielle :
ig
rr
Problème de l’éleveur Problème du producteur de vitamines
co
n

min cx max bπ
no

Ax ≥b πA ≤c
x ≥0 π ≥0
s
ve

Le problème de l’éleveur et celui du producteur de vitamine sont donc deux problèmes complémen-
taires ; le problème du producteur de vitamines est le dual du problème de l’éleveur, et vice-versa.
r eu
Ép

6.3 Règles de conversion primal / dual


Exprimer le dual d’un problème linéaire revient à relaxer les contraintes de ce problème pour
faciliter la recherche de solution, comme on l’a fait lorsqu’on a introduit les variables d’écart,
d’excédent et artificielles pour utiliser la méthode du simplexe. Ainsi, à chaque contrainte du primal,
correspond une variable du dual (ce sont justement les variables d’écart, d’excédent et artificielles
du primal).
De même, à chaque variable du primal correspond une contrainte du dual. De plus, le signe des
variables du dual dépend du signe de la contrainte associée dans le primal, tout comme le choix de
variables d’écart, d’excédent ou artificielles dépend du signe de la contrainte dans le primal.
L’objectif du dual n’est alors plus de minimiser/maximiser les coûts du primal c , mais d’atteindre
le domaine admissible du primal, représenté par b , qui devient donc les coûts du dual. Inversement,
les coûts du dual sont les membres de droite du primal.
Les règles de conversion du primal en dual sont résumées dans le tableau ci-dessous :
CHAPITRE 6: LA DUALITÉ 114

Primal ou Dual Dual ou Primal


Maximisation Minimisation
Contrainte ≤ (direction naturelle) Variable ≥ 0
Contrainte ≥ Variable ≤ 0
Contrainte = Variable non restreinte
Variable ≥ 0 Contrainte ≥ (direction naturelle)
Variable ≤ 0 Contrainte ≤
Variable non restreinte Contrainte =

Théorème 6.3.1 (Le dual du dual est le primal)


Quelque soit le problème équivalent d’un dual que l’on construit, son dual est un problème
équivalent au primal.
Si une solution optimale existe, elle est la même pour tous ces problèmes équivalents.

s
Exemple :

ée
Soit le primal suivant : Son dual est :
ig
rr
max z = x1 +2x2 min w = 10y1 +20y2 +30y3
co

x1 +3x2 ≤ 10 y1 +2y2 +7y3 ≥1


2x1 +4x2 = 20 3y1 +4y2 +8y3 ≥2
n

≥ 30
no

7x1 +8x2 y1 ≥ 0, y2 libre, y3 ≤ 0


x1 , x2 ≥0
s
ve

Inversement, soit le primal suivant : Son dual est :


eu

min w = 10y1 +20y2 +30y3 max z = x1 +2x2


r
Ép

y1 +2y2 +7y3 ≥1 x1 +3x2 ≤ 10


3y1 +4y2 +8y3 ≥2 2x1 +4x2 = 20
y1 ≥ 0, y2 libre, y3 ≤ 0 7x1 +8x2 ≥ 30
x1 , x2 ≥0

6.4 Théorème de la dualité faible

Théorème 6.4.1 (Dualité faible)


Considérons le couple Primal / Dual suivant :

max cx min bππ


Ax = b ⇐⇒ πA ≥ c (6.7)
x≥0 π libre

Si x est une solution admissible du primal (pas forcément optimale), et π une solution admissible
CHAPITRE 6: LA DUALITÉ 115

du dual, alors :
cx ≤ π b

Attention, le sens de l’inégalité est inversé si le primal est une minimisation et le dual une
maximisation.

Preuve 1

Dual : πA ≥ c =⇒ cx ≤ π Ax
Primal : Ax = b =⇒ cx ≤ π b (6.8)
cx ≤ π b, ∀ x, π , admissibles

Par conséquent :
— La fonction-objectif de toute solution admissible d’un primal de maximisation (resp. minimi-

s
ée
sation), constitue une borne inférieure (resp. supérieure) de la fonction-objectif de la solution
duale correspondante.
ig
rr
— De même, la fonction-objectif de toute solution admissible d’un dual de minimisation (resp.
co

maximisation), constitue une borne supérieure (resp. inférieure) de la fonction-objectif du


primal correspondant.
n
no

Corollaire 6.4.1
s
ve

Si la fonction-objectif optimale d’un primal de maximisation est non borné (=→ ∞), alors le dual
n’a pas de solution admissible.
eu

De même si la fonction-objectif optimal d’un dual de minimisation est non borné (→ −∞), le
r
Ép

primal n’a pas de solution admissible.

Corollaire 6.4.2
Si x0 et π 0 sont deux solutions admissibles associées du primal et du dual, et que bπ 0 = cx0 , alors x0
et π 0 sont optimales.

6.5 Théorème de la dualité forte


Considérons le couple Primal / Dual suivant :

max cx min bππ


Ax = b ⇐⇒ π A ≥ c (6.9)
x≥0 π libre
CHAPITRE 6: LA DUALITÉ 116

Théorème 6.5.1 (Dualité forte)

Si le primal possède une solution x∗ optimale, alors le dual admet aussi une solution optimale
π ∗.
De plus, les valeurs optimales de leurs fonctions-objectifs sont égales :

π ∗ = cx∗

Preuve 2
Si la solution du primal x∗ est optimale, l’algorithme du simplexe fournit une base optimale B et

une solution xB = B−1 b que l’on peut lire dans le membre de droite du tableau final.

Par ailleurs, l’optimalité de xB est garantie par le fait que les coûts marginaux c sont tous négatifs
ou égaux à 0 (positifs s’il s’agit d’un problème de minimisation) :

c = c − cB B−1 A ≤ 0

s
ée
Définissons un vecteur π ∗ = cB B−1 , et montrons que π ∗ est un vecteur admissible pour le dual :
ig
c − cB B−1 A ≤ 0 (6.10)
rr
co

c − π ∗A ≤ 0 (6.11)

π A≥c (6.12)
n
no

C’est exactement l’expression des contraintes du dual, c’est-à-dire de l’admissibilité de π ∗ . On vient


s

de prouver que si x∗ est optimal, alors π ∗ est admissible.


ve

De plus,
r eu

π ∗ b = cB B−1 b = cB xB

= cx∗
Ép

Ainsi, on vient de montrer que les valeurs optimales des variables duales sont les opposés des coûts
marginaux des variables xs dans le tableau final, ce qui explique la notation π qui avait été utilisée
pour désigner ces coûts dans la formulation matricielle du tableau final du simplexe (voir tableau
5.4).

6.5.1 Théorème de la dualité forte : Exemple Windor


Construisons le dual du problème Windor :

max 3x1 +5x2


min 4π1 +12π2 +18π3
x1 ≤4
π1 +3π3 ≥3
2x2 ≤ 12 ⇐⇒
2π2 +2π3 ≥5
3x1 +2x2 ≤ 18
π1 , π2 , π3 ≥0
x1 , x2 ≥0

Le tableau final du simplexe du primal est le suivant :


CHAPITRE 6: LA DUALITÉ 117

Base x1 x2 e1 e2 e3 b
z 0 0 0 -3/2 -1 -36
e1 0 0 1 1/3 -1/3 2
x2 0 1 0 1/2 0 6
x1 1 0 0 -1/3 1/2 2

La solution du primal est x∗ = (2, 6). Les valeurs duales optimales, π ∗ sont les coûts marginaux
finaux des variables de base du tableau initial du primal :

π ∗ = −(c̄e1 , c̄e2 , c̄e3 ) = (0, 3/2, 1)

On peut vérifier que la solution (0, 3/2, 1) est admissible pour le dual :

0+3·1≥3
2 · 3/2 + 2 · 1 ≥ 5
0 ≥ 0, 3/2 ≥ 0, 1 ≥ 0

s
Par ailleurs, on peut vérifier que la valeur de la fonction-objectif est la même pour le primal et le
dual :
ée
ig
3 · 2 + 5 · 6 = 36 = 4 · 0 + 12 · 3/2 + 18 · 1
rr
co

6.6 Théorème des écarts complémentaires


n
s no
ve

Théorème 6.6.1 (Théorème des écarts complémentaires)


eu

Soit x et π des solutions admissibles associées pour un problème primal et son dual. x et π sont
optimales si et seulement si :
r
Ép

ai x − bi ) = 0,
πi (a ∀i (6.13)
Aj π − cj ) = 0,
xj (A ∀j (6.14)

Par conséquent :
— Si le problème primal est écrit sous forme standard, toutes ses contraintes sont des égalités et
le premier groupe de conditions (équation 6.13) est automatiquement satisfait. Le deuxième
groupe de contraintes (équation 6.14) constitue un système d’équations qui donne les valeurs
de la solution duale optimale quand on le résout.
— De façon générale, le théorème des écarts complémentaires permet toujours de construire la
solution duale optimale à partir d’une solution primale optimale non dégénérée.
CHAPITRE 6: LA DUALITÉ 118

6.6.1 Théorème des écarts complémentaires : Exemple


Soit le problème d’optimisation suivant :

max z = x1 − x2
−2x1 + x2 ≤ 2
x1 − 2x2 ≤ 2
x1 + x2 ≤ 5
x1 , x2 ≥ 0

1. Dual
Écrivons le dual du problème :

min z 0 = 2π1 + 2π2 + 5π3


−2π1 + π2 + π3 ≥ 1
π1 − 2π2 + π3 ≥ −1
π1 , π2 , π3 ≥ 0

s
ée
2. Écarts complémentaires
ig
rr
S’il existe une solution x du problème primal et une solution associée du dual π, elles doivent
co

vérifier les équations aux écarts complémentaires :


n

πi (ai x − bi ) = 0, ∀ i
no

xj (Aj π − cj ) = 0, ∀ j
s
ve

Application :
r eu

 
i=1: π1 (−2x1 + x2 − 2) =0
Ép

i=2: π2 (x1 − 2x2 − 2) = 0


 
 
i=3:  π3 (x1 + x2 − 5) = 0

j = 1 : x1 (−2π1 + π2 + π3 − 1) = 0
 

j=2: x2 (π1 − 2π2 + π3 + 1) =0

3. Solution optimale
Soit le point x = (1, 4). Vérifions si x est optimal pour le primal. Pour cela, on doit :
(a) vérifier que x est admissible =vérifie les contraintes du primal)
(b) déterminer la solution du dual associé π grâce aux équations aux écarts complémentaires
(c) vérifier l’admissibilité de π (=vérifie les contraintes du dual)
(d) Si x et π sont admissibles, le théorème de la dualité forte nous permet de conclure qu’elles
sont également optimales.




 −2 ∗ 1 + 4 = 2


1 − 2 ∗ 4 ≤ 4

Admissibilité de x :
1 + 4 = 5




1 ≥ 0, 4 ≥ 0

CHAPITRE 6: LA DUALITÉ 119


π2 = 0



Détermination de π : −2π1 + π3 − 1 = 0 =⇒ π1 = −2/3



π + π + 1 = 0
1 3
π3 = −1/3

π n’est pas admissible car ses valeurs sont négatives. x n’est donc pas optimale.
Qu’en est-il pour le point x = (4, 1) ?





 

 π1 = 0


−2 ∗ 4 + 1 ≤ 2 Détermination de π :


4 − 2 ∗ 1 = 2
 

 π2 + π3 − 1 = 0

Admissibilité de x : 

2 π + π + 1 = 0
2 3


4+1=5


4 ≥ 0, 1 ≥ 0

=⇒ π2 = 2/3
π3 = 1/3

s
ée

2/3 + 1/3 ≥ 1




ig
rr

−2 ∗ 2/3 + 1/3 ≥ −1

Admissibilité de π ∗ :
co



 2/3 ≥ 0, 1/3 ≥ 0


n

4 ≥ 0, 1 ≥ 0

no

La solution x est admissible au primal et sa solution associée π est admissible au dual, elles
s

sont donc toutes deux optimales pour leur problème respectif selon le théorème de la dualité
ve

forte. On peut vérifier que la fonction-objectif optimale des deux problèmes est z ∗ = 3.
r eu
Ép

6.7 Exercices
Exercice 26 (Conversion Primal / Dual)
Écrire le modèle dual du problème suivant :

min z = 8x1 + 8x2 + 10x3


2x1 + x2 ≥ 30
x1 + 3x2 + x3 ≥ 20
x1 , x 2 , x 3 ≥0

Exercice 27 (Conversion Primal / Dual - Exemple 2)


Écrire le modèle dual du problème suivant :

max z = −2x1 + x2 − 4x3 + 3x4


x1 + x2 + 3x3 + 2x4 ≤ 4
x1 − x3 + x4 ≥ −1
CHAPITRE 6: LA DUALITÉ 120

2x1 + x2 ≤ 2
x1 + 2x2 + x3 + 2x4 = 2
x2 , x 3 , x 4 ≥ 0

Exercice 28 (Écarts complémentaires)


Soit le modèle linéaire suivant :
max 5x1 + 10x2
x1 + 2x2 ≤50
4x1 + 2x2 ≤60
x1 ≤5
x1 , x2 ≥0

— Écrire le modèle dual


— Écrire les équations aux écarts complémentaires
— Pour chacun des points suivants du problème primal :

s
• Vérifier l’admissibilité par rapport au problème primal
• Déterminer la solution duale correspondante
ée
ig
• Vérifier l’admissibilité de la solution duale obtenue
rr
co

• Donner vos conclusions sur l’optimalité du point primal.


n

• x = (5, 20) x = ( 10 70
3 , 3 )
no

Exercice 29 (Condition d’optimalité à partir des variables duales)


s
ve
eu

— Construire le dual du problème suivant.


r
Ép

N = {1 .. n}
XX
min z = cij fij
i∈N j∈N
X X
fij − fji = bi , ∀ i ∈ N
j∈N j∈N

fij ≥ 0 ∀ (i, j) ∈ A

— Étant donnée la solution primale fij , ∀ (i, j) ∈ A, écrire la condition d’optimalité en fonction
des variables duales.
— Rappel : La condition pour que la solution d’un problème de minimisation soit optimale est
que les coûts réduits soient positifs.
CHAPITRE 6: LA DUALITÉ 121

Exercice 30 (Conversion Primal-Dual - Formulations algébriques)


Construire le dual du problème suivant.
n
X
min z = ci x i
i=1
n
X
ai xi ≥ d
i=1

xi ≤ Ri ∀ i = 1 .. n
xi ≥ 0 ∀ i = 1 .. n

Exercice 31 (Formulations algébriques - Autre exemple)


Formuler le dual du problème suivant :

n
X
min z = yj
j=1
n
X
pi xij ≤ U yj ∀ j = 1 .. m
i=1

s
ée
Xm
xij = 1 ∀ i = 1 .. n ig
j=1
rr
xij ≤ 1 ∀ i = 1 .. n, j = 1 .. m
co

xij , yj ≥ 0, ∀ i = 1 .. n, j = 1 .. m
n
s no
ve
r eu
Ép
Chapitre 7

Réseaux de flots

Introduction
De nombreux problèmes d’optimisation peuvent être modélisés sous forme de graphes ou réseaux
sur lesquels sont transportés des flots (de matériels, de personnes, de données...) : conception de

s
ée
réseaux de transport en commun, organisation de la livraison de marchandises, réseaux de télé-
ig
communication... On verra dans ce chapitre quelques problèmes-types et de possibles méthodes de
rr
résolution :
co

— problème de flot à coût minimal


n

— problème de flot maximal


no

— problème du plus court chemin


s

— problème d’arbre de recouvrement minimal


ve
eu

7.1 Graphes, nœuds, arbres : définitions


r
Ép

7.1.1 Graphes non orientés


Un graphe non orienté G est défini comme un couple G = (N, E) où :
— V = {1, 2, . . . , n} est l’ensemble des sommets (Vertices ou nœuds) du graphe
— E = {(i, j) | i, j ∈ N } est l’ensemble des arêtes (Edges) du graphe, c’est-à-dire des paires
non ordonnées (non-orientées) de sommets
Si i et j sont reliés dans le graphe, c’est-à-dire que l’arête (i, j) fait partie du graphe, on dit que i
et j sont adjacents. On dit aussi que l’arête (i, j) est incidente aux sommets i et j.
Le degré d’un sommet est défini comme le nombre d’arêtes incidentes à ce sommet.
Un graphe est dit connexe si, pour toute paire de sommets (i, j), il existe un chemin qui les relie.
Un cycle est un chemin du graphe composé d’au moins un arc et dont le premier et le dernier nœud
sont identiques.

122
CHAPITRE 7: RÉSEAUX DE FLOTS 123

D E
— V = {A, B, C, D, E} est l’ensemble des sommets du graphe.

C — L’ensemble des arêtes est :


E = {(A, B), (A, C), (A, D), (B, C), (C, D), (D, E)}.
Exemple : A — D et E ne sont pas adjacents, mais D et C le sont.
B
— Le nœud C est de degré 4.
Figure 7.1: Graphe non — Le chemin (A, B, C, D, A) est un cycle.
orienté connexe

7.1.2 Graphes orientés


En donnant une direction aux arêtes d’un graphe non orienté, on obtient un graphe orienté.
Un graphe orienté G est défini comme un couple G = (N, A) où :
— N = {1, 2, . . . , n} sont les sommets (Vertices ou nœuds )
— A = {(i, j) | i, j ∈ N } est l’ensemble des arcs (paires ordonnées de sommets)
Pour chaque arc (i, j) on dit que i est le nœud de départ (starting node) et j le nœud d’arrivée (end
node). L’arc (i, j) est sortant du nœud i et entrant au nœud j. On définit aussi :

s
ée
— O(i) = {j ∈ N | (i, j) ∈ A} (O = Out), l’ensemble des nœuds d’arrivée des arêtes sortant du
ig
nœud i
rr
— I(i) = {j ∈ N | (j, i) ∈ A} (I = In), l’ensemble des nœuds de départ des arêtes entrant au
co

nœud i
n

Un graphe orienté est connexe si son graphe non orienté correspondant est connexe, c’est-à-dire
no

qu’il n’est pas nécessaire de tenir compte de l’orientation pour définir si le graphe est connexe.
s

Exemple :
ve
eu

D E — C est le nœud de départ de l’arc (C, A), et


A le nœud d’arrivée. (C, A) sort de C et
r
Ép

C entre en A.
— O(C) = {A, D, E}
A
— I(C) = {B}
B

Figure 7.2: Graphe orienté connexe

7.1.3 Arbres
i
Un graphe G est un Arbre s’il réunit les conditions suivantes :
— il est non orienté
— il est connexe
— il ne comporte pas de cycle
Un nœud de degré 1 est appelé feuille.
Exemple :
CHAPITRE 7: RÉSEAUX DE FLOTS 124

D E — E, D et B sont des feuilles.

A
B

Figure 7.3: Arbre

Si on peut trouver un sous-graphe d’un graphe qui est un arbre pour ce graphe, celui-ci est
appelé arbre couvrant, arbre de recouvrement, ou arbre de couverture (spanning tree). Un
graphe peut bien sûr posséder plusieurs arbres couvrants.

s
A C

ée
ig
rr
B
co

Figure 7.4: Un arbre couvrant du graphe en rouge


n
s no
ve

Théorème 7.1.1 (Théorème des arbres)


Un graphe non orienté de N nœuds est un arbre si et seulement s’il est connexe et possède
eu

N − 1 arêtes.
r
Ép

Il existe un chemin unique entre chaque paire de nœuds . Si on ajoute une arête à un arbre, le
graphe résultant comportera exactement un cycle.

7.2 Problèmes de flot


Un graphe peut être très utile pour représenter et résoudre nombre de problèmes d’optimisation.
Un exemple immédiat serait de considérer un réseau de distribution d’eau potable qui approvisionne
des quartiers à partir de différents réservoirs (quartiers et réservoirs sont les nœuds du problème) et
qui se demande par quelles conduites du réseau passer (les conduites sont les arêtes) pour distribuer
l’eau à moindre coût. On devra alors associer à chaque conduite (arête) une information, qui serait
la longueur de la conduite (son coût). A chaque quartier (nœud), on peut associer le débit qui y est
attendu, et à chaque réservoir le débit sortant.
On pourrait aussi tenir compte de la capacité des conduites, qui peuvent être de différents
diamètres. Dans ce cas, on pourrait inclure de nouvelles informations à notre graphe : à chaque
conduite (arête), on peut associer le débit maximal qui peut y passer.
CHAPITRE 7: RÉSEAUX DE FLOTS 125

Le graphe ainsi construit contient toutes les informations présentes dans le problème d’optimisation
du réseau d’eau :
— Les Ensembles ( de nœuds) : L’ensemble des réservoirs, et celui des quartiers
— Les Variables : le débit d’eau à faire passer sur chaque conduite-arête
— Les Paramètres : la longueur de chaque conduite ; la capacité de chaque conduite ; le débit
entrant ou sortant à chaque nœud (quartier ou réservoir).
— La Fonction-Objectif : minimiser la longueur totale du trajet
— Les Contraintes : seules les conduites existantes peuvent être empruntées ; la demande des
quartiers et l’offre des réservoirs doivent être respectées, ainsi que la capacité des conduites.
On généralise l’utilisation des graphes pour la résolution de problèmes d’optimisation en utilisant
le vocabulaire suivant.

7.2.1 Définition d’un réseau de flot


i
Un réseau de flot (ou de transport) est un graphe orienté G = (N, A) comprenant des infor-

s
mations additionnelles.

ée
On peut associer à chaque nœud i ∈ N une disponibilité (ou une demande) bi . Dans l’exemple
ig
du réseau d’eau, bi est la demande (négative) du quartier i ou la disponibilité (positive) du réservoir
rr
i.
co

— Si bi > 0 le nœud i est une source avec disponibilité bi . Un flot bi entre dans le réseau à
n

travers ce nœud.
no

— Si bi < 0 le nœud i est un puits avec demande |bi | = −bi . Un flot |bi | sort du réseau à travers
s

ce nœud.
ve

— Si bi = 0 le nœud i est de transbordement. le flot venant des arcs entrant au nœud est
eu

entièrement transféré vers les arcs sortants du nœud.


r
Ép

Le réseau doit être équilibré, c’est-à-dire que le flot total entrant dans le réseau par les sources doit
être égal au flot total sortant du réseau par les puits. Autrement dit :
X
bi = 0
i∈N

Par ailleurs, à chaque arc (i, j) ∈ A on peut associer plusieurs informations telles que :
— Le coût unitaire cij pour chaque unité de flot traversant l’arc. Dans le cas du réseau d’eau,
il s’agit de la longueur de l’arc (i, j).
— Une capacité maximale de flot uij pouvant traverser l’arc. Dans le cas du réseau d’eau, il
s’agit du débit maximal d’eau de l’arc (i, j).
La figure 7.5 montre un exemple de réseau de flot comprenant l’ensemble des informations associées.
CHAPITRE 7: RÉSEAUX DE FLOTS 126

10 4 bi bj
1,10 cij ,uij
A B i j
8,7 2,4
1,2 C -7,3 Figure 7.5: Un réseau de flot
Les disponibilités sont identifiées en bleu, les de-
1,7 4,12
D E mandes en rouge. À chaque arc sont associés son
12,5
-6 -8 coût et sa capacité maximale. Le lecteur vérifiera
que le réseau est équilibré.

7.2.2 Problème de flot à coût minimum : le PFCM


i
Le Problème de Flot à Coût Minimum (PFCM) est un réseau de flot particulier pour lequel on
cherche par quels chemins faire passer un flot donné sur le réseau, de façon à ce que :
— Le coût total du transport est minimum
— La conservation du flot est respectée à chaque nœud.
— La contrainte de capacité de chaque arc est respectée

s
ée
Cela revient à trouver la quantité de flot fij qui doit passer sur chaque arc (i, j). La formulation
mathématique du PFCM est la suivante :
ig
rr
X
co

min cij fij (7.1)


(i,j)∈A
n

X X
fij − fji = bi , ∀i∈N (7.2)
no

j∈O(i) j∈I(i)
s

fij ≤ uij , ∀ (i, j) ∈ A (7.3)


ve

fij ≥ 0, ∀ (i, j) ∈ A (7.4)


r eu

P P
Dans l’équation 7.2, fji est la somme des flux entrants au nœud i, et fij est la somme
Ép

j∈I(i) j∈O(i)
des flux sortants du nœud. L’équation est équivalente à fiout − fiin = bi , et traduit l’équilibre entre
les flots entrants et sortants, et ce à chaque nœud du réseau.

Exemple de correspondance entre formulation sur réseau et formulation mathématique


du PFCM

Tout problème de PFCM peut indifféremment être formulé et résolu sur réseau ou sous forme
mathématique. Voici un exemple de correspondance entre les deux formulations.
CHAPITRE 7: RÉSEAUX DE FLOTS 127

Formulation sur réseau : Formulation explicite :


4
A min z = fAB +5fAC +3fBC +4fCD
5,2
−4 fAB +fAC =4
4,1
1,4 C D −fAB fBC =0
−fAC −fBC +fCD = −4
3,5
B −fCD =0
fAB ≤4
fAC ≤2
bj fBC ≤5
bi
cij ,uij fCD ≤1
i j
fij ≥ 0, ∀ (i, j) ∈ A

Formulation matricielle du PFCM

Tout comme on a pu exprimer les problèmes de programmation linéaire sous forme matricielle,
on peut exprimer le problème de réseau PFCM sous forme matricielle également, et ce de plusieurs
façons. L’une d’elles est d’utiliser la matrice d’incidence arc-nœud A.

s
Soit n, la dimension de l’ensemble des nœuds N , et m la dimension de l’ensemble des arcs A.
La Matrice A doit contenir :
ée
ig
rr
co

— n lignes correspondant aux n bilans d’équilibre des n nœuds du réseau


— m colonnes correspondant aux m arcs qui peuvent entrer ou sortir un flot sur chaque nœud.
n
no

La dimension de la matrice A est donc (n × m). Les colonnes-arcs sont classées de 1, ..., à m. Les
éléments aik de la matrice, que l’on trouve sur la ligne du nœud i et de l’arc k peuvent être définis
s
ve

de la façon suivante :
eu


 1 si i est le nœud de départ de l’arc k
r


Ép

aik = −1 si i est le nœud d’arrivée de l’arc k



0 autrement

On remarque que les aik ne se sont pas reliés à 2 nœuds (i, j), mais bien à un nœud i et un arc k,
et sont non nuls pour tous les arcs k qui entrent ou sortent de i. Par exemple, la matrice-nœud A
du réseau de la figure 7.5 est la suivante :

(AB) (AC) (AD) (BD) (CE) (CD) (EB) (DE)


 
 
1 1 1 0 0 0 0 A
0 


 −1 0 0 1 0 0 −1 B
0 
A =



 0 −1 0 0 1 1 0 C
0 

 0 0 −1 −1 0 −1 0 1 D
0 0 0 0 −1 0 1 −1 E

Si on note fk la variable-flot passant sur l’arc k, les équations des contraintes d’équilibre présentées
CHAPITRE 7: RÉSEAUX DE FLOTS 128

dans le système d’équations 7.1 peuvent être reformulées :


X X X
fij − fji = aik fk = ai f
j∈O(i) j∈I(i) k∈A

Par conséquent, l’équation 7.2 peut s’écrire :


ai f = bi , ∀ i ∈ N
C’est-à-dire, sous forme matricielle :
Af = b

Le problème de flot à coût minimum PFCM peut s’écrire sous forme matricielle :

min cf (7.5)
Af = b (7.6)
f ≤u (7.7)
f ≥0 (7.8)

avec c le vecteur des coûts associés aux arcs, f le vecteur des flots associés aux arcs, A la matrice

s
ée
indicielle nœud-arc, b le vecteur des disponibilités et demandes associées aux nœuds, et u le vecteur
ig
des capacités associées aux arcs.
rr
Si le réseau est équilibré, la somme des éléments du vecteur b est nulle.
co

Par conséquent, la somme des n lignes de l’équation 7.6 est égale à 0, et il existe au moins une
ligne linéairement dépendante des autres, qui fournit donc une information redondante : le système
n
no

a au plus n−1 degrés de liberté. Ainsi, on pourra s’affranchir de l’information redondante et utiliser
la matrice Ã, qui serait la matrice A à laquelle on a retiré la dernière ligne correspondant au nœud
s

n. Ã a pour dimensions (n − 1) × m.
ve
r eu

Proposition 7.2.1
Ép

Soit un graphe G connecté et équilibré. Soit Ã, de dimension (n − 1) × m la matrice indicielle


nœud-arc du graphe dont on a retiré la dernière ligne, et b̃, de dimension n − 1, le vecteur
des disponibilités des nœuds, dont on a retiré le dernier élément. Remarquons qu’on aurait pu
retirer n’importe laquelle des lignes de la matrice A pour obtenir n − 1 lignes indépendantes, la
dernière ligne est choisie par convention.
Alors, Ã a pour rang n−1 et toutes ses lignes sont linéairement indépendantes. Le problème
de flot à coût minimum s’écrit :

min cf
Ãf = b̃
f ≤u
f ≥0
CHAPITRE 7: RÉSEAUX DE FLOTS 129

7.3 Résolution du UPFCM sur réseau : flot à coût minimal


sans contraintes de capacité
Le UPFCM est un cas particulier du PFCM dans lequel le flot n’est pas soumis à des contraintes
de capacité : les contraintes d’équilibre des flots à chaque nœud doivent toujours être respectées,
mais la quantité de flot qui passe sur chaque arc n’est pas limitée. Le problème est moins contraint,
et devient :

min cf
Ãf = b̃
f ≥0

Il existe plusieurs façons de résoudre le problème du PFCM (et UPFCM) sur réseau, nous présentons
ici la méthode du simplexe. Selon cette méthode, les étapes suivantes, qui ont été présentées aux
chapitres 4 et 6, doivent être appliquées aux réseaux :
— Construire une solution de base admissible (section 7.3.1)

s
— Choisir une variable entrante pour améliorer la solution, grâce à l’application de la dualité
aux réseaux (section 7.3.2)
ée
ig
rr
— Construire une nouvelle solution de base à partir d’une solution de base existante (section
co

7.3.3)
Un exemple d’application complet est ensuite proposé à la section 7.3.4.
n
no

7.3.1 Construction d’un flot admissible


s
ve

Le UPFCM est un problème linéaire en forme standard comme rencontré dans la première partie
eu

du cours (section 4.2), sur lequel on peut appliquer le simplexe. Cependant, la structure particulière
r

du PFCM nous permet de le faire sans avoir à écrire tous les tableaux du simplexe de façon explicite.
Ép

Prenons l’exemple suivant sur lequel sont indiquées les demandes et disponibilités de chaque nœud
(les coûts ne sont pas pris en compte pour l’instant) :

10 4 bi bj
A B i j

Figure 7.6: Exemple de réseau équilibré sans


contraintes de capacité
C

D E
−6 −8

On peut vérifier que le réseau est équilibré : 14 unités rentrent aux nœuds A et B, et 14 en sortent
aux nœuds D et E. On se rappelle que la méthode du simplexe consiste à partir d’une première
CHAPITRE 7: RÉSEAUX DE FLOTS 130

solution de base admissible, pour ensuite parcourir les frontières du domaine admissible de solution
de base en solution de base jusqu’à trouver la solution optimale, en avançant toujours dans la
direction qui permet la plus grande amélioration de la fonction-objectif. La première étape ici est
donc de trouver une solution admissible pour notre réseau, c’est-à-dire qui respecte les contraintes,
y compris la positivité des variables.
La matrice des contraintes à comprend n − 1 lignes (contraintes), n étant le nombre de nœuds, il
nous faut donc :
— trouver n − 1 variables de base, c’est-à-dire faire passer un flot sur n − 1 arcs du réseau,
— tout en respectant les contraintes d’équilibre.

Les solutions-arbres
Un vecteur de flot f est appelé solution-arbre s’il peut être obtenu comme suit :
1. Choisir T ⊂ A, un ensemble de n − 1 arcs qui forme un arbre, si on ne tient pas compte
de la direction des arcs.
2. Imposer fij = 0 pour tous les arcs (i, j) ∈
/ T , c’est-à-dire que le flot est nul pour tous les
arcs qui ne font pas partie de l’arbre.

s
3. Utiliser les équations d’équilibre aux nœuds, afin de trouver les valeurs des flots sur

ée
chaque arc de l’arbre. On peut résoudre les équations simplement en partant des feuilles
ig
vers la racine.
rr
4. Une solution-arbre telle que tous les flots sont positifs est donc admissible.
co
n
no

Théorème 7.3.1 (Théorème des solutions-arbres)


s

Un flot f est une solution de base du PFCM ⇐⇒ f est une solution-arbre du PFCM.
ve
r eu
Ép

Appliquons cette méthode à l’exemple de la figure 7.6. Le réseau comprend 5 nœuds, on choisit
donc arbitrairement 4 arcs qui forment une solution de base (représentés en gras sur la figure 7.7)
pour construire une première solution de base. On impose la valeur 0 à tous les flots hors base. On
détermine ensuite les valeurs des flots sur les arcs en base en utilisant les équations d’équilibre aux
nœuds (fiout − fiin = bi , ∀ i ∈ N ) :
— On part d’une feuille, par exemple E pour laquelle seul le flot fDE est inconnu :

fEB − (fDE + fCE ) = −8 ⇐⇒ 0 − (fDE + 0) = −8 ⇐⇒ fDE = 8

— en D, la seule inconnue est maintenant fAD :

fDE − (fAD + fCD ) = −6 ⇐⇒ fAD = 14

— en A, deux flots sont inconnus et l’équation d’équilibre ne permet pas de trouver les valeurs
des flots sortants. On repart donc sur une nouvelle feuille, par exemple B :

fBC − (fAB + fBE ) = 4 ⇐⇒ fAB = −4


CHAPITRE 7: RÉSEAUX DE FLOTS 131

— En A :
fAD + fAC + fAB = 10 ⇐⇒ fAC = 0

— Enfin en C : On peut vérifier que l’équilibre est automatiquement vérifié dans le dernier nœud
C, puisque les lignes de la matrice des contraintes sont linéairement dépendantes :

fCD + fCE − (fAC + fBC ) = 0

Une solution-arbre vérifiant toutes les contraintes d’équilibre a donc été trouvée. Cependant,
elle n’est pas admissible puisque la variable fAB est négative.

10 4
-4 bj
A B bi
fij
i j
0
0
flot en base
14 C 0 i j

0 0 flot hors base

s
i j

ée
8
ig
D E
rr
−6 −8
co

Figure 7.7: Exemple de flot non admissible


n
no

La figure 7.8 propose un autre ensemble d’arcs T dont les flots sont déterminés avec la même
s

méthode. La solution-arbre obtenue est cette fois admissible car tous les flots sont positifs.
ve
eu

10 4
0
r

A B
Ép

10
4 bi bj
fij
0 C 0 i j

6 8

0
D E
−6 −8

Figure 7.8: Exemple de flot admissible

7.3.2 Choisir la variable entrante


Application de la dualité aux réseaux
i
Lors du simplexe sur tableau, pour trouver la variable qui devait entrer dans la base pour appor-
ter la meilleure amélioration possible à chaque étape, on recherchait la variable hors base possédant
CHAPITRE 7: RÉSEAUX DE FLOTS 132

le coût marginal le plus négatif (cas d’une minimisation, comme pour le PFCM). Comment calculer
les coûts marginaux dans le cas des réseaux pour trouver la variable entrante ?
Nous allons utiliser le dual du problème PFCM. Voici le couple primal/dual du PFCM :

min cf max bπ
Af = b Aπ ≥ c
f ≥0 π libre

Soit la solution primale fij , ∀ (i, j) ∈ A. On a vu que le vecteur des coûts marginaux pouvait
s’écrire (voir équation 5.8) :
c = c − cB B−1 A

Où c est le vecteur des coûts, cB le vecteur des coûts des variables de base, B la matrice de passage
et A la matrice des contraintes. On a vu également que cB B−1 était justement le vecteur des
variables duales π :
cB B−1 = π

Par conséquent, étant donné une solution primale f et la solution duale associée π, on peut exprimer

s
ée
les coûts marginaux du primal en fonction des variables duales :
ig
c = c − πA (7.9)
rr
co

Le coût marginal de chaque variable s’exprime donc en fonction des variables duales, et plus exac-
n

tement comme l’écart à la contrainte duale correspondante : ci − πAi


no

Reprenons la formulation mathématique du problème du PFCM sur l’ensemble N des nœuds


afin d’exprimer son dual. Supposons le cas le plus général dans lequel tous les nœuds sont reliés
s
ve

ensemble, c’est-à-dire que pour tout nœud i, l’ensemble des nœuds entrants I(i) et l’ensemble des
eu

nœuds sortants O(i) sont égaux à N − {i} :


r
Ép

PFCM Primal : Dual (voir exercice 29) :


XX X
min z = cij fij max z = πi bi
i∈N j∈N i∈N

πi − πj ≤ cij , ∀ (i, j) ∈ A
X X
fij − fji = bi , ∀ i ∈ N
j∈N j∈N
π libre, ∀ i ∈ N
fij ≥ 0 ∀ (i, j) ∈ A

Comme chaque contrainte du primal traduit l’équilibre à un nœud i et correspond aussi à une
variable duale πi , on en déduit que chaque variable duale πi est associée au nœud i.
CHAPITRE 7: RÉSEAUX DE FLOTS 133

Comme mentionné dans l’équation 7.9, les coûts marginaux peuvent être exprimés comme
les écarts à la contrainte correspondante dans la formulation duale :

cij = cij − (πi − πj ), ∀ (i, j) ∈ A (7.10)

Dans le cas des arcs-variables de base, les coûts marginaux sont nuls, et par conséquent,
l’équation devient :

Arcs (ij) en base : πi = cij + πj , (7.11)

où i est le nœud de départ de l’arc de base (i, j), et j son nœud d’arrivée.

Si on connaît la valeur d’une variable duale associée au nœud sortant d’un arc de base, il suffit
donc d’y ajouter le coût de l’arc pour trouver la valeur de la variable duale du nœud entrant de ce
même arc. On peut ainsi remonter le chemin constitué par les arcs en base pour trouver les valeurs
de toutes les variables duales.
Étant donné que l’une des conditions d’équilibre du réseau est dépendante des autres (voir 7.2.1),

s
ée
le système dispose d’un degré de liberté. On peut donc poser arbitrairement la valeur de l’une des
ig
variables duales au choix, puis déterminer les autres à partir de celle-ci.
rr
Une fois connues toutes les variables duales, on pourra ensuite calculer les coûts marginaux des
co

arcs-variables hors base grâce à la formule 7.10, puis déterminer lequel présente un coût marginal
minimal (on minimise) et devrait entrer dans la base.
n
no

Exemple
s
ve

Reprenons par exemple le réseau suivant, dans lequel on a cette fois indiqué les coûts en pus
des flots passant sur chaque arcs et des demandes de chaque nœud.
r eu

10 4
Ép

-2,0
A B
6,10
2,4 bi bj
cij , fij
i j
7, 0 C -12,0
cij est le coût de l’arc (i, j), et fij le flot
4,6 1,8
qui y passe
10,0
D E
−6 −8

La solution-arbre comprend bien n − 1 = 4 arcs (en gras), sans cycle, et les flots sont équilibrés.
Posons πD = 0. L’équation 7.11 nous permet de déterminer les valeurs des autres variables duales
en remontant de proche en proche les arcs en base. Il y a une variable duale par nœud :

πD = 0
πC = cCD + πD = 4
CHAPITRE 7: RÉSEAUX DE FLOTS 134

πB = cBC + πC = 6
πA = cAC + πC = 10
πE = −cCE + πC = 3

Puis, l’équation 7.10 nous permet de calculer les coûts réduits des arcs hors base :

c̄AB = cAB − πA + πB = −6
c̄AD = cAD − πA + πD = −3
c̄DE = cDE − πD + πE = 13
c̄EB = cEB − πE + πB = −9

Dans ce cas, c’est (EB) qui présente le coût marginal minimal et doit entrer en base.

7.3.3 Se déplacer d’une solution de base à une autre


Il existe une méthode simple pour construire une nouvelle solution de base admissible à partir

s
ée
d’une solution de base admissible connue sur un réseau : la circulation sur un cycle fondamental.
ig
rr
Notion de circulation
co

Un cycle fondamental est un cycle constitué d’un seul arc du réseau ne faisant pas partie
n

de la solution-arbre, et d’arcs de la solution-arbre. Dit autrement, il est composé d’une seule


no

variable hors base et de variables de base. Pour effectuer un pivot sur réseau, c’est-à-dire
passer d’une solution admissible à une autre, on construit un cycle fondamental basé sur l’arc
s
ve

entrant. Pour respecter les contraintes d’équilibre, chaque unité de flot ajouté sur l’arc entrant
eu

doit être retirée des arcs de base en sens contraire dans le cycle. Pour que la nouvelle solution
construite soit admissible, les flots obtenus par cette manipulation doivent rester positifs ou
r
Ép

nuls (et respecter les contraintes de capacité des arcs le cas échéant).
Ainsi, l’arc sortant de l’ancienne solution est le premier arc dont le flot devient nul lorsqu’on
pousse une circulation de plus en plus grande dans le cycle.

Par exemple, la figure 7.9 part de la solution admissible trouvée dans la figure 7.8. Admettons
qu’on ait déterminé en calculant les variables duales que l’on doit faire rentrer la variable fAD dans
la base. On crée alors le cycle fondamental (A − D − C − A), en bleu, et on pousse une circulation
de 6 unités dans le cycle, puisque c’est le maximum possible sans que les flots fCD ni fAC ne
deviennent négatifs.fCD devient nul et sort de la base. On peut vérifier que la nouvelle solution de
base obtenue, à droite, est admissible (on a bien 4 variables en base, les équilibres sont vérifiés à
chaque nœud, et les flots sont positifs). On peut maintenant réitérer l’algorithme avec cette nouvee
solution de base.
CHAPITRE 7: RÉSEAUX DE FLOTS 135

10 4 10 4
0 0
A B A B

10-6 4
4 4

0 +6 C 0 6 C 0

6-6 8 0 8

0 0
D E D E
−6 −8 −6 −8

Figure 7.9: Exemple de passage d’un flot admissible à un autre grâce à la circulation

Application de la dualité aux réseaux : synthèse


Pour déterminer si un flot admissible est optimal, on utilise finalement trois notions :
1. Les contraintes d’équilibre à chaque nœud permettent de construire un flot admissible.

s
ée
2. Les équations aux écarts complémentaires nous informent que soient les variables sont
nulles, soient les contraintes duales sont actives.
ig
rr
3. Par conséquent, l’expression des coûts marginaux en fonction des variables duales (c¯ij =
co

cij − (pii − πj ), ∀ (i, j) ∈ A) permet de calculer les valeurs duales, puis de calculer les
coûts marginaux des variables hors base.
n
no

7.3.4 Exemple d’application du simplexe-réseau


s
ve

Soit le réseau suivant, sur lequel les coûts (vert), demandes (rouge) et disponibilités (bleu) sont
eu

indiqués. On souhaite trouver le flot à coût minimum associé.


r
Ép

10 4
1
A B

8
2

1 C -7

1 4

12
D E
−6 −8

On peut vérifier que le réseau est équilibré : 14 unités rentrent aux nœuds A et B, et 14 en
sortent aux nœuds D et E.
CHAPITRE 7: RÉSEAUX DE FLOTS 136

1ère étape : Trouver une solution de base admissible

Voici un exemple de première solution de base admissible construit selon la méthode proposée
au 7.3.1. 4 arcs-variables sont en base (le nombre de nœuds - 1), et l’équilibre est respecté à chaque
nœud. De plus tous les flots sont positifs. Il y a bien sûr beaucoup d’autres flots admissibles qui
pourraient être choisis comme première solution de base.

10 4
1,0
A B
8,10
2,4 bi bj
cij , fij
i j
1, 0 C -7,0
cij est le coût de l’arc (i, j), et fij le flot
1,6 4,8
qui y passe
12,0
D E
−6 −8

s
ée
Figure 7.10: Étape 1 : choix d’un premier flot admissible.
ig
rr
Le coût de cette solution est trouvé en multipliant les coûts unitaires de chaque arc par les
co

quantités de flot qui y passent : z = 1 · 6 + 8 · 10 + 2 · 4 + 4 · 8 = 126.


Intéressons nous maintenant à vérifier si la solution de base proposée est optimale, et si non, à
n
no

trouver le pivot, c’est-à-dire les variables entrante et sortante.


s

2ème étape : Utiliser la dualité pour calculer les coûts marginaux


ve
eu

Calcul des variables duales :


r
Ép

10, 12 4, 6
1, 0 πE = 0
A B
πC = πE + 4 = 4
8,10 2, 4
πA = πC + 8 = 12
πD = πC − 1 = 3
1, 0 C -7, 0
πB = πC + 2 = 6
1,6 0,4 4,8
Calcul des coûts marginaux hors base :
12, 0
D E
cAD = cAD + πD − πA = −8
−6, 3 −8, 0
cAB = cAB + πB − πA = −5
Figure 7.11: Etape 2 : Valeurs duales des nœuds et cEB = cEB + πB − πE = −1
coûts marginaux
cDE = cDE + πE − πD = 9

Ainsi, la variable fAD a le coût marginal le plus négatif, qui permet d’améliorer au mieux la
solution optimale. C’est elle que l’on fera rentrer dans la base.
CHAPITRE 7: RÉSEAUX DE FLOTS 137

3ème étape : Se déplacer à une autre solution de base

10, 12 4, 6
1, 0
A B
8, 10-6 2, 4

bi bj
cij , fij
1, 0+6 C -7, 0 i j
1, 6-6 0,4 4, 8

12, 0
D E
−6, 3 −8, 0

Figure 7.12: Etape 3 : Choix de la variable sortante. Circulation de 6 unités sur A - D - C - A

L’arc (D, C) est le premier sur lequel le flot s’annule. Il sort donc de la base (figure 7.12).

s
On peut donc construire la nouvelle solution de base, et réitérer le processus jusqu’à atteindre la
solution optimale pour laquelle tous les coûts marginaux sont positifs.
ée
ig
rr
Calcul des variables duales :
co

10, 12 4, 6
1, 0 πE = 0
n

A B
πC = πE + 4 = 4
no

8, 4 2, 4
πA = πC + 8 = 12
s
ve

πD = πA − 1 = 11
1, 6 C -7, 0
eu

πB = πC + 2 = 6
0,4 4, 8
r

1, 0
Ép

Calcul des coûts marginaux hors base :


12, 0
D E cAB = cAB + πB − πA = −5
−6, 11 −8, 0 cEB = cEB + πB − πE = −1

Figure 7.13: 2ème itération du simplexe cDE = cDE + πE − πD = 1


cCD = cCD + πD − πC = 8

Pour cette nouvelle solution, la valeur de la fonction objectif est de 78, elle est bien améliorée
par rapport à l’étape précédente. Par ailleurs, fAB a le coût marginal le plus négatif qui permettra
de diminuer au plus la fonction-objectif, c’est la variable entrante.
CHAPITRE 7: RÉSEAUX DE FLOTS 138

10, 12 4, 6
1, 0 +4
A B
8, 4 -4 2, 4 +4

1, 6 C -7, 0

1, 0 0,4 4, 8

12, 0
D E
−6, 11 −8, 0

Figure 7.14: Recherche de la variable sortante : fAC selon la circulation (A − B − C − A)

On fait une nouvelle itération avec cette nouvelle solution de base :


Calcul des variables duales :
10, 7 4, 6

s
1, 4 πE = 0

ée
A B ig πC = πE + 4 = 4
8,0 2, 8
πB = πC + 2 = 6
rr
co

πA = πB + 1 = 7
1, 6 C -7, 0
πD = πA − 1 = 6
n

0,4
no

1, 0 4, 8
Calcul des coûts marginaux hors base :
s

12, 0
ve

D E cAC = cAC + πC − πA = 5
eu

−6, 6 −8, 0 cEB = cEB + πB − πE = −1


r
Ép

Figure 7.15: Calcul de la 3ème itération cDE = cDE + πE − πD = 6


cCD = cCD + πD − πC = 3

La nouvelle fonction-objectif est z = 58, et fEB est la variable entrante. Cherchons la variable
sortante en poussant une circulation à travers le cycle fondamental (E − B − C − E).
CHAPITRE 7: RÉSEAUX DE FLOTS 139

10, 7 4, 6
1, 4
A B
8,0 2, 8-8

1, 6 C -7, 0+8

1, 0 0,4 4, 8-8

12, 0
D E
−6, 6 −8, 0

Figure 7.16: Choix de la nouvelle variable sortante : fCE . On pourrait aussi choisir fBC .

Calcul des variables duales :

πE = 0

s
10, 8 4, -7

ée
1, 4
A B ig πB = πE − 7 = −7
πC = πB − 2 = −9
rr
8,0 2, 0
πA = πB + 1 = −6
co

πD = πA − 1 = −7
n

1, 6 C -7, 8
no

1, 0 0,-9 4, 0 Coûts marginaux hors base :


s
ve

12, 0 cAC = cAC + πC − πA = 5


D E
eu

cCE = cCE + πE − πC = 13
−6, 7 −8, 0
r

cDE = cDE + πE − πD = 19
Ép

cCD = cCD + πD − πC = 3

Figure 7.17: Solution optimale du PFCM

Tous les coûts sont positifs, la solution est optimale. La nouvelle valeur de la fonction-objectif
est z = −46.

7.4 Cas du PFCM général avec contraintes de capacité


Dans l’UPFCM, les flots devaient respecter uniquement des contraintes d’équilibre. Dans le
PFCM général, il faut ajouter également les restrictions sur les quantités de flot qui peuvent passer
sur chaque arc. Comment en tenir compte dans la résolution du problème avec le simplexe-réseau ?
Le dual du problème est modifié puisqu’il y a de nouvelles contraintes au primal. On peut utiliser
le théorème des écarts complémentaires pour montrer que les variables fij font maintenant partie
de 3 ensembles T, U et L :
CHAPITRE 7: RÉSEAUX DE FLOTS 140

— L’ensemble des n − 1 variables de base, (pour lesquelles le flot n’est pas saturé), appelé T
— L’ensemble des variables hors base pour lesquelles le flot est nul, appelé L
— L’ensemble des variables hors base pour lesquelles le flot est saturé, appelé U

La nouvelle condition d’optimalité pour obtenir un coût minimum s’écrit :


• cij ≥ 0, ∀ (i, j)|fij ∈ L (pour l’ensemble des variables hors base à 0)
• cij ≤ 0, ∀ (i, j)|fij ∈ U (pour l’ensemble des variables hors base saturées)

En effet, si une variable est saturée alors qu’elle est hors base, et que son coût marginal est positif,
diminuer sa valeur permettra de diminuer (=d’améliorer) la valeur de la fonction-objectif sans
changer la base. Exception faite de cette nouvelle condition d’optimalité pour le PFCM général,
les itérations du simplexe s’effectuent selon le même procédé que dans le cas de l’UPFCM sans
contraintes de capacité.
Soit le problème suivant par exemple :

10 4
10,10
A B

s
8,7 2,4
bi
ée bj
ig cij ,uij ,fij
rr
i j
co

1,2 C 7,3
uij est la capacité de l’arc (i, j), cij son
1,7 4,12 coût, et fij le flot qui y passe (le flot est
n
no

utilisé dans les réseaux suivants).

D E
s

12,5
ve

−6 −8
eu

Figure 7.18: Problème de PFCM avec contraintes de capacité


r
Ép

Choisissons par exemple la solution de base initiale suivante, représentée à la figure 7.19 :
— T = {AB, BC, CE, ED} (arcs en base, en gras)
— L = {DC} (arcs hors base à flot nul, en pointillés)
— U = {AD, AC, BE} (arcs hors base saturés, en rouge)
On vérifie que cette solution possède bien n − 1 arcs en base, et ne présente pas de cycle, c’est-
à-dire que c’est une solution-arbre. Parmi les variables hors base, l’une possède un flot nul, et trois
sont saturées (indiquées en rouge).
CHAPITRE 7: RÉSEAUX DE FLOTS 141

Calcul des variables duales :

πD = 0
10,28 4, 18
10,10,1 πE = πD + 12 = 12
A B
πC = πE + 4 = 16
8,7,7 2,4, 2
πB = πC + 2 = 18
0,16 πA = πB + 10 = 28
1,2,2 C 7,3,3
Calcul des coûts marginaux de L :
1,7, 0 4,12, 9

cDC = cDC + πC − πD = 17
D E
12,5,4 Calcul des coûts marginaux de U :
−6, 0 −8, 12

Figure 7.19: 1ère itération du PFCM cAC = cAC + πC − πA = −4


cAD = cAD + πD − πA = −27
cBE = cBE + πE − πB = 1

s
ée
ig
La valeur de la fonction-objectif est z = 177 (on compte bien sûr le coût des flots passant sur
rr
les arcs hors base saturés dans la fonction-objectif).
co

fBE est hors base et saturée, son coût marginal est positif, et on peut donc améliorer la fonction-
objectif en diminuant le flot qui y passe. Cependant, on ne peut éliminer le flot qui y passe tota-
n

lement, car dans le cycle fondamental (E − B − C − E), l’arc (B, C) sera saturé à 4 unités, et on
no

ne peut donc pas pousser plus de 2 unités sur (E, B) pour diminuer le flot (B, E). Ainsi, (B, E)
s

entre dans la base et (B, C) en sort en devenant saturé. Si on avait pu éliminer totalement le flot
ve

sur (B, E), il serait resté hors base, et on n’aurait pas eu à faire sortir la variable (B, C).
eu

Coût de la fonction-objectif : En observant les coûts des arcs, on peut prévoir que la fonction-
r

objectif sera améliorée de 2 : chaque unité retirée sur l’arc (B, E) diminue le coût de la fonction
Ép

de 7, chaque unité ajoutée sur l’arc (B, C) augmente le coût de la fonction de 2, et chaque unité
ajoutée sur l’arc (C, E) augmente la fonction-objectif de 4 : δz = −7 × 2 + 2 × 2 + 2 × 4 = −2. On
peut aussi faire un calcul plus rapide en utilisant directement les coûts marginaux : le coût marginal
de (B, E) est c̄BE = 1, diminuer son flot de 2 unités sur l’arc améliore donc la fonction de 1 × 2 = 2.
Effectuons maintenant une nouvelle itération :
CHAPITRE 7: RÉSEAUX DE FLOTS 142

Calcul des variables duales :


10,29 4, 19
10,10, 1 πD = 0
A B
πE = πD + 12 = 12
8,7,7 2,4,4
πC = πE + 4 = 16
0,16
πB = πE + 7 = 19
1,2,2 C 7,3, 1
πA = πB + 10 = 29
1,7,0 4,12,11
Calcul des coûts marginaux :

D E L : cDC = cDC + πC − πD = 17
12,5,4
−6, 0 −8, 12 U : cAC = cAC + πC − πA = −5

Figure 7.20: Solution optimale du PFCM cAD = cAD + πD − πA = −28


cBC = cBC + πC − πB = −1

Ainsi, tous les coûts marginaux des variables hors base non saturées (fDC seulement) sont posi-
tifs, et ceux des variables hors base saturées (fAC ,fBC ,fAD ) sont négatifs, la solution est optimale.

s
ée
z = 175. On vérifie que la valeur de la fonction-objectif a bien diminué de 2.
ig
rr
7.5 Le Problème de Flot Maximum
co
n

Dans le problème du Flot maximum, on ne s’intéresse plus aux coûts de transport, mais aux
no

capacités d’un réseau : l’objectif est de trouver le plus grand flot possible qu’on peut transporter
d’un point d’entrée (la source) vers une sortie (le puits) en utilisant tous les chemins possibles.
s
ve

Formulation du problème de Flot Maximum


eu

Soit un graphe G = (N, A), où chaque arc (i, j) ∈ A a une capacité uij .
r

Soient deux nœuds particuliers dans ce graphe : Une source s et un puits t. Pour tous les
Ép

autres noeuds, la demande est nulle (c’est-à-dire : bi = 0, ∀i ∈


/ {s, t})
L’objectif est de trouver le flot maximal que l’on peut envoyer de s à t. On ajoute donc deux
variables positives bs (le flot entrant en s) et bt (le flot sortant en t). Le problème se formule
alors ainsi :

max bs
X X
fij − fji = bi , ∀i∈N
j∈O(i) j∈I(i)

bs + bt = 0 ( ⇐⇒ bt = −bs )
fij ≤ uij , ∀ (i, j) ∈ A
fij ≥ 0 ∀ (i, j) ∈ A

bs , équivalente à une disponibilité à la source, et bt , équivalente à une demande au puits sont


maintenant des variables, et non pas des paramètres. Les demandes et disponibilités sont nulles
à l’intérieur du réseau.
CHAPITRE 7: RÉSEAUX DE FLOTS 143

5
1 2
10 10

bs s 2 8 t bt = −bs
8 8
10
3 4

Figure 7.21: Exemple de problème de flot maximal de s à t. Les capacités uij de chaque arc sont
indiquées. On vérifie qu’il n’y a ni coûts ni disponibilités sur ce type de réseau.

Une première possibilité pour résoudre le problème serait de se ramener au PFCM et d’utiliser
la méthode du simplexe. Pour cela, on pourrait ajouter un arc artificiel allant de t à s dont le
coût serait négatif, par exemple -1, alors que les coûts de tous les autres arcs seraient nuls. Ainsi,
chercher le coût minimal reviendrait à trouver le flot maximal pouvant traverser (t, s) et les deux
problèmes seraient équivalents. Il faudrait bien sûr associer une capacité infinie à cet arc artificiel
pour ne pas limiter le flot maximum.

0,5

s
1 2

ée
0,10 0,10

s 0,2
ig
0,8 t
0,8 0,8
rr
0,10
co

3 4
n
no

-1,∞
s

Figure 7.22: Transformation du problème de flot maximal en PFCM avec mention des coûts et
ve

capacités (cij , uij )


r eu

Cependant, il existe des méthodes plus efficaces, comme l’algorithme de Ford-Fulkerson,


Ép

qui utilise un outil dénommé graphe résiduel.

7.5.1 Le graphe résiduel


i
Étant donné un graphe G = (N, A), le graphe résiduel est un nouveau graphe G̃ = (N, Ã)
composé des mêmes nœuds, mais dont les arcs sont construits de la façon suivante sur chaque paire
(i, j) :
• Si l’arc est saturé (fij = uij ), c’est-à-dire qu’aucun flot ne peut plus y passer, on le remplace
par un arc en sens inverse (j, i) de même capacité uij .
• Si le flot est nul sur l’arc (fij = 0), on le conserve tel quel.
• Sinon (fij 6= 0, fij 6= uij ), on remplace l’arc (i, j) par deux arcs :
— L’arc (i, j) de capacité uij − fij , la capacité restante
— L’arc inverse (j, i) de capacité fij , c’est-à-dire le flot déjà passé.
Ainsi, on garde en mémoire sur le graphe résiduel à la fois :
• les capacités restantes pour trouver de nouveaux chemins non saturés
CHAPITRE 7: RÉSEAUX DE FLOTS 144

• les flots déjà passés sur chaque arc


Un exemple de flot est présenté à la figure 7.23, associé à son graphe résiduel sur la figure 7.24.

5,0 5 7
1 2 1 2
10,0 7,7 10

7 s 2,0 8,7 t −7 7 s 2 1 7 t −7
8,7 8,0 1 8
10,7 3
3 4 7 3 4
7
Figure 7.23: Le graphe G et son flot fs = 7. Sur
les arcs sont indiqués capacité et flot (uij , fij ) Figure 7.24: Le graphe résiduel G̃.

Le graphe résiduel nous informe par exemple qu’entre les nœuds 3 et 4, il est encore possible
d’augmenter le flot de 3 vers 4 de trois unités sans violer la contrainte de capacité associée à l’arc.
De façon similaire, on peut aussi envoyer un flot de sept unités de 4 vers 3.

7.5.2 Algorithme de Ford-Fulkerson

s
ée
Soit un graphe G = (N, A), comprenant une source s et un puits t, et dont les capacités des arcs
ig
sont connues. L’algorithme de Ford-Fulkerson permet de déterminer le flot maximal traversant ce
rr
graphe, et est construit de la façon suivante :
co

1. Choisir un flot admissible f , c’est-à-dire un flot allant de s à t en respectant les contraintes


de capacité des arcs.
n
no

2. Chercher s’il existe encore un chemin non saturé de s à t.


s

— Si oui : "Pousser" la plus grande quantité de flot possible à travers ce chemin. Réitérer à
ve

partir de l’étape 2.
eu

— Si non : on a atteint la solution optimale.


r
Ép

Voici par exemple la succession de graphes résiduels correspondant à la résolution du réseau de


la figure 7.21 par l’algorithme de Ford-Fulkerson :

5,0 5 7
1 2 1 2
10,0 7,7 10

s 2,0 8,7 t 7 s 2 1 7 t −7
8,7 8,0 1 8
10,7 3
3 4 7 3 4
7
Figure 7.25: 1ère itération. Chemin s−3−4−2−t.
fa = 7 Figure 7.26: Graphe résiduel correspondant.
. fst = 7
CHAPITRE 7: RÉSEAUX DE FLOTS 145

5 7 5 7
1 2 1 2
10 10

7 s 2 1 7 t −7 8 s 2 1 7 t −8
1 8 7
3 2
7 3 4 8 3 4
7 8 1

Figure 7.27: 2ème itération.Chemin (s−3−4−t). Figure 7.28: Graphe résiduel correspondant.
fa = 1 fst = 8

5 5
5 7
1 2 7
10 1 2
5
8 s 2 1 7 t −8
7 13 s 2 6 2 t −13
2
2
3 4 2
8 3 4
8
8 1
8 6

s
ée
Figure 7.29: 3ème itération.Chemin (s − 1 − 2 −
Figure 7.30: Graphe résiduel correspondant.
4 − t). fa = 5
ig
fst = 13
rr
co

5 5 5
n

1 2 7 7 1 2 7
no

5
3
13 s 2 6 2 t −13 15 s 2 6 2 t −15
s

2
ve

2
eu

8 3 4 8 3 4 8
6
r

8 10
Ép

Figure 7.31: 4ème itération.Chemin (s − 1 − 3 − Figure 7.32: Graphe résiduel correspondant.


4 − t). fa = 2 fst = 15.Optimal.

Il n’y a plus de chemin non saturé pour aller de s à t, la solution z = 15 est optimale. Seuls les
arcs (s, 1) et (4, 2) sont non saturés.

7.6 Le Problème du plus court chemin (PPCC)


L’objectif du PPCC est de trouver la distance parcourue selon le plus court chemin entre un
nœud donné et chacun des autres nœuds d’un réseau. Cette fois-ci, chaque arc possède un coût
(=une distance à parcourir), mais n’est pas soumis à une contrainte de capacité. Comme dans le
problème de flot maximum, il y a deux nœuds particuliers : le nœud source et le nœud-puits. Le
nœud-source possède une disponibilité de 1, et le nœud-puits une demande de -1 : on envoie 1
unité de la source vers le puits en cherchant par où passer pour que le coût soit minimal. On peut
également voir le problème de façon plus générale pour trouver la distance entre le nœud-source
et chacun des nœuds du réseau, en associant une demande de -1 à chaque nœud, excepté le nœud
source qui aura une disponibilité de n − 1.
CHAPITRE 7: RÉSEAUX DE FLOTS 146

On peut résoudre ce problème par la méthode du simplexe. Encore une fois cependant, il existe
des algorithmes plus efficaces pour résoudre ce type spécifique de problèmes, comme l’algorithme
de Dijkstra.

7.6.1 L’algorithme de Dijkstra


L’idée de l’algorithme de Dijkstra est d’avancer de proche en proche pour trouver le plus court
chemin à chaque étape, en s’éloignant progressivement de la source. Il ne s’applique qu’au cas
où les coûts sont positifs. On associe une étiquette di à chaque nœud i, qui indique le coût du
chemin pour arriver à ce nœud. Ce coût peut être temporaire, si on n’est pas encore sûr d’avoir
trouvé le plus court chemin, ou permanent, si le plus court chemin est trouvé. L’algorithme se
déroule de la façon suivante :
1. Initialisation : Toutes les étiquettes prennent la valeur ∞, c’est-à-dire que le coût pour y
parvenir est infini, excepté la source pour laquelle ds = 0. Toutes les étiquettes sont tempo-
raires.
2. Itération : L’étiquette k au coût le plus faible parmi toutes les étiquettes est marquée comme
permanente. Les étiquettes des nœuds adjacents j, c’est-à-dire des nœuds auxquels on peut

s
arriver à partir de k, prennent la valeur : min{dj , dj + ckj }.

ée
ig
Ainsi, les étiquettes temporaires constituent toujours une borne supérieure du plus court chemin
rr
pour parvenir à un nœud, et deviennent permanentes lorsque le plus court chemin a effectivement
co

été trouvé. L’algorithme permet donc de trouver le plus court chemin à chacun des nœuds du réseau.
n

7.6.2 Exemple
no

Soit le réseau suivant sur lequel sont indiqués les coûts cij de chaque arc (i, j). Trouver le chemin
s
ve

du nœud 1 au nœud 6 à un coût minimum. Dans cet exemple, les nœuds permanents sont indiqués
eu

en vert. Le chemin bleu indique le chemin le plus court obtenu à travers la définition successive des
nœuds permanents.
r
Ép

3
2 4
4 2
2
1 6

3 3 2
3 5

∞ ∞ 4 ∞
3 3
2 4 2 4
4 2 4 2
2 2
0 1 6 ∞ 0 1 6 ∞

3 3 2 3 3 2
3 5 3 5
∞ ∞ 3 ∞

Figure 7.33: Initialisation Figure 7.34: 1ère itération.


CHAPITRE 7: RÉSEAUX DE FLOTS 147

4 ∞ 4 7
3 3
2 4 2 4
4 2 4 2
2 2
0 1 6 ∞ 0 1 6 ∞

3 3 2 3 3 2
3 5 3 5
3 6 3 6

Figure 7.35: 2ème itération Figure 7.36: 3ème itération

4 7 4 7
3 3
2 4 2 4
4 2 4 2
2 2
0 1 6 8 0 1 6 8

3 3 2 3 3 2
3 5 3 5
3 6 3 6

s
Figure 7.37: 4ème itération

ée
Figure 7.38: Solution optimale
ig
rr
On peut remarquer dans cet exemple qu’il y a plusieurs façons d’obtenir le chemin le plus court :
co

chemin (1 − 3 − 5 − 6) ou (1 − 2 − 5 − 6).
Voici un autre exemple que le lecteur pourra résoudre pour trouver le plus court chemin de 1 à
n

7.
no

8
s

2 5
ve

18 7
eu

2 15
r
Ép

1 7 4 5 7

4
10 17 9

3 6
18

7.7 Le Problème d’Arbre couvrant minimal


L’objectif du problème d’arbre couvrant minimal, qui trouve beaucoup d’applications en infor-
matique, est de relier l’ensemble du réseau au coût minimal. Contrairement aux problèmes précé-
dents, c’est donc un problème dans lequel les arcs ne sont pas orientés. Il n’y a pas non plus de
puits ou de source, ni de capacités des arcs. On peut le résoudre simplement par l’algorithme de
Kruskal :

7.7.1 Algorithme de Kruskal


1. Initialisation : Trier les arcs en ordre croissant de coût
CHAPITRE 7: RÉSEAUX DE FLOTS 148

2. Itération : Ajouter l’arc ayant le coût minimum parmi les arcs triés, sans former de cycle
3. L’algorithme est terminé dès que tous les nœuds sont reliés par un arbre comprenant n − 1
arcs.

7.7.2 Exemple

8
8 2 5
2 5 18
18 6 6
2 15
2 15 1 7 4 5 7
1 7 4 5 7 4 17
4 17
10 9
10 9 3 6
3 6 18
18
Figure 7.40: 1ère itération. L’arc de coût mini-
Figure 7.39: Problème d’arbre couvrant
mum apparaît en bleu.

8 8
2 5 2 5

s
18 6 18

ée
6
2 15 2 15
1 7 4 5 7 1 7 4 5 7
4 17
ig 4
17
rr
10 9 10 9
3 6 3 6
co

18 18
n

Figure 7.41: 2ème itération Figure 7.42: Solution optimale


no

On a pris soin de ne pas inclure les arcs (2, 3) et (6, 7) qui introduisaient un cycle. Le coût
s
ve

optimal est de 35.


r eu

7.8 Exercices
Ép

Exercice 32 (Problème de UPFCM -Premier exemple)


Soit le réseau suivant sur lequel sont indiqués les coûts cij de chaque arc (i, j) ∈ A et les dis-
ponibilités ou demandes di de chaque nœud i ∈ N . Trouver le flot de coût minimal traversant ce
réseau.
20 0
6
A C
5 3
3
2 E -30

4
B D
5
10 0

Trouver la solution optimale de ce problème.

Exercice 33 (UPFCM - Deuxième exemple)


Soit le réseau suivant sur lequel sont indiqués les coûts cij de chaque arc (i, j) et les disponibilités
ou demandes di de chaque nœud i. Trouver f , le flot de coût minimal traversant ce réseau.
CHAPITRE 7: RÉSEAUX DE FLOTS 149

20 15 -5
25 10
A C E

15 20 25 30 20

B D F
5 5
-10 -5 -15

Exercice 34 (PFCM général)


Le réseau de l’exercice 32 est maintenant soumis à des contraintes de capacités uij sur chaque arc
(i, j). Trouver le flot de coût minimal traversant ce réseau.
20 0
6, 10
A C
5, ∞ 3, ∞
3, ∞ bi bj
2, ∞ E -30 cij ,uij
i j
4, ∞
B D
5, 25
10 0

s
On commencera le simplexe avec la solution-arbre constituant la solution de base suivante :(AB,
BD, CE, DE).
ée
20 0
ig
rr
6,10,10
A C bi bj
co

5,∞,0 3, ∞,10 cij ,uij ,fij


j
2 ,∞,10

i
3, ∞,0
n

E -30
no

4, ∞,20 Les arcs bleus sont les arcs sa-


s

B D turés.
ve

5, 25,20
10 0
r eu

Exercice 35 (Modélisation de réseau)


Ép

Une entreprise dispose de 2 usines, 2 entrepôts et 1 centre de distribution, dont les coûts et capacités
sont indiqués ci-dessous. Modéliser le problème sous la forme d’un problème de flot à coût minimal
sur réseau.

Coûts unitaires d’envoi


Centre Entrepôt Production (unités)
de distribution 1 2
Usine 1 3 7 - 80
Usine 2 4 - 9 70
Centre de distribution - 2 4
Capacité de stockage 60 90 -

Exercice 36 (Problème de flot maximal)


Soit le réseau suivant sur lequel sont indiqués les capacités uij de chaque arc (i, j). Trouver le flot
maximal traversant ce réseau.
CHAPITRE 7: RÉSEAUX DE FLOTS 150

7
B D

6
9
4

A 3 F

7
2 9

C E
6

Exercice 37 (Algorithme de Dijkstra)


Soit le réseau suivant sur lequel sont indiqués les coûts cij de chaque arc (i, j). Trouver le chemin
le plus court traversant le réseau à un coût minimum.

3 4
A D G

4 5 2 2 2 2 7

s
ée
6 2 5 8
O C F H
ig T
rr
3 4 5 1 2 3 4
co
n

B E I
6 5
no

Exercice 38 (Algorithme de Kruskal)


s
ve

Trouver l’arbre de coût minimal du réseau suivant.


eu

E
r
Ép

3 6

C 1 D

5 5

3 O 2

6 4

6
A B

Exercice 39 (Problème d’allocation de procédé d’inspection)

— Une ligne de production consiste en une séquence ordonnée de n étapes de production. Chaque
étape comporte une opération de fabrication suivie d’une éventuelle inspection. Le produit
entre à l’étape 1 en lots de B éléments.
CHAPITRE 7: RÉSEAUX DE FLOTS 151

— A chaque étape i, la probabilité de produit défectueux est de αi . On suppose qu’il faut éliminer
tout article défectueux. Après chaque étape, on peut inspecter tous les éléments ou aucun
d’entre eux.
— La ligne de production doit se terminer par une station d’inspection afin de n’expédier aucune
unité défectueuse (i = n).
— Le coût de production unitaire de l’étape i est noté pi ; fij (resp. gij ) le coût fixe (resp. unitaire)
lié à l’inspection faite à l’étape j, sachant que la dernière inspection a été faite à l’étape i.
— Quel type d’algorithme de résolution de problèmes sur réseau pourrait s’appliquer à ce pro-
blème ?
— Donner une expression de B(i), le nombre d’items non défectueux présents à l’étape i, en
fonction de α et de B.
— Pour n = 4, dessiner le réseau permettant de déterminer un plan d’inspection optimal qui
précise à quelles étapes on devrait inspecter les articles afin de minimiser le coût total de
production et inspection.
— Donner une expression du coût cij de chaque arc.

s
Exercice 40 (Alimentation en eau potable)

ée
ig
rr
— Le diagramme suivant représente un système d’aqueducs partant de 3 rivières (R1 , R2 , R3 ) et
co

desservant la ville T .
— Les débits journaliers maximaux qui peuvent être pompés par chaque aqueduc sont indiqués
n
no

dans le tableau ci-dessous.


— Le responsable du réseau souhaite déterminer le plan de pompage qui lui permettra de maxi-
s
ve

miser le débit arrivant en ville.


eu

— Quel type d’algorithme sur réseau permet de résoudre ce problème ?


r

— Dessiner le réseau correspondant et résolvez-le.


Ép

A
R1 D

R2 B
E

R3 C
F

de..à.. A B C de..à.. D E F de..à.. T


R1 75 65 - A 60 45 - D 120
R2 40 50 60 B 70 55 45 E 190
R3 - 80 70 C - 70 90 F 130
CHAPITRE 7: RÉSEAUX DE FLOTS 152

Exercice 41 (L’entreprise de construction)

— Une grande entreprise de construction doit sélectionner des projets à exécuter dans un en-
semble {1, ..., n}.
— Chaque projet est caractérisé par un jour de départ bi , un jour de fin d’échéance ei et un
revenu ri .
— Chaque projet, s’il est sélectionné, nécessite la mise en place d’une équipe de travail. L’entre-
prise dispose de k équipes de travail.
— Chaque équipe de travail peut travailler sur un projet à la fois pendant la période de référence,
mais peut exécuter plus de projets à condition qu’ils ne se chevauchent pas dans le temps.
— Formuler le problème de la sélection des projets à exécuter afin de maximiser le revenu total,
en termes de problème de flot de coût minimum sur un graphique approprié.
— Décrivez la construction du graphique en spécifiant l’équilibre des nœuds (quantité de demande
ou disponibilité), les coûts et les capacités des arcs.

s
ée
ig
rr
co
n
s no
ve
r eu
Ép
Chapitre 8

Résolution de la Programmation Linéaire en Nombres

Entiers

Introduction

s
La programmation linéaire en nombres entiers (Integer Linear Programming, ILP) modélise le

ée
même type de problèmes que la programmation linéaire, si ce n’est que les variables recherchées
ig
font partie de l’ensemble des entiers. Une première intuition mènerait à penser que les solutions
rr
seront proches, et qu’il suffira d’arrondir au nombre entier le plus proche la solution trouvée par
co

la résolution du programme linéaire correspondant, pour obtenir la solution en nombres entiers.


n

Cependant ce n’est pas le cas, et les solutions optimales entières et non entières peuvent même
no

être dans des régions totalement différentes du domaine d’admissibilité. Après avoir montré d’ou
s

viennent les différences entre les deux types de programmation, on présentera dans ce chapitre
ve

une puissante méthode de résolution de l’ILP, l’algorithme de séparation et d’évaluation


eu

(Branch-and-Bound).
r
Ép

8.1 Complexité de la Programmation Linéaire en Nombres


Entiers
Soit le problème suivant :

max z = 11x1 +21x2


4x1 +7x2 ≤ 13 (8.1)
x1 , x2 ≥ 0, x1 , x2 entiers

Sa représentation graphique est la suivante (le domaine admissible du problème linéaire sans
contrainte d’intégralité est le triangle grisé) :

153
CHAPITRE 8: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 154

y
Solution LP

11
x1
+ Solution ILP
1 11 21
x1 x 2
+ =
21 39
x
2 =
33 x
1 2 3 4 5

Figure 8.1: Solutions entières et non entières d’un problème linéaire

Si l’on ne tient pas compte des contraintes d’intégralité pour x1 et x2 , la solution optimale du
problème est z = 39, obtenue au point de coordonnées (x1 , x2 ) = (0, 1.86). Dans ce cas x2 n’est
pas entier. On peut observer sur le graphique 8.1 que seuls six points de coordonnées entières font
partie du domaine admissible. Parmi ces six points, c est le point de coordonnées (x1 , x2 ) = (3, 0) qui
donne la meilleure solution, avec z = 33. Les solutions du problème linéaire avec et sans contraintes

s
ée
d’intégralité sont donc très différentes, ce qui mène à s’intéresser à la programmation linéaire en
nombre entiers, et à sa relation avec la programmation linéaire.
ig
rr
co

Définition 8.1.1 (Programmation Linéaire en Nombres Entiers (ILP))


n

Un problème linéaire en nombres entiers est un problème linéaire dans lequel toutes ou une
no

partie des variables sont entières ou binaires. La programmation linéaire en nombre entiers
s

regroupe les cas suivants :


ve

— Programmation Linéaire en Nombres Entiers Pure (PILP)


r eu

min ou max z = cx
Ép

Ax ≤b
x ≥ 0, x entiers

— Programmation Linéaire en Nombres Binaires (BLP)

min ou max z = cx
Ax ≤b
x ≥ 0, x ∈ {0, 1}

— Programmation Linéaire en Nombres Entiers Mixtes (MILP)

min ou max z = cx +dy


Ax +By ≤b
x ≥ 0, x entiers (y compris binaires)
y ≥0
CHAPITRE 8: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 155

Définition 8.1.2 (Relaxation linéaire)

i
La relaxation linéaire d’un problème linéaire en nombres entiers s’obtient en relâchant (=en
enlevant) les contraintes d’intégralité.

Par exemple, la relaxation linéaire du problème précédent (système d’équations 8.1) est simple-
ment :

max z = 11x1 +21x2


4x1 +7x2 ≤ 13
x1 , x2 ≥0

L’ILP se distingue donc du problème équivalent relaxé de par son domaine d’admissibilité qui
est discret au lieu d’être continu. Dans la figure 8.1 par exemple, le domaine admissible du problème

s
ILP se résume aux six points entiers, alors que le domaine admissible du problème de relaxation
linéaire correspondant est tout le triangle grisé.
ée
ig
rr
co

Remarque: 8.1.1
n

Une conséquence directe de cette différence entre les domaines admissibles de l’ILP et et l’ILP
no

relaxée est bien sûr que la solution optimale d’un problème en ILP sera toujours
pire, ou au mieux égale, à la solution du problème relaxé, puisque le domaine est plus
s
ve

restreint, plus contraint, pour l’ILP que pour sa relaxation.


r eu
Ép

On remarque également que la solution entière n’est pas située dans un point extrême (coin) du
domaine défini par le problème relaxé. Par conséquent, l’algorithme du simplexe, qui recherche la
solution optimale de point extrême en point extrême (de solution de base en solution de base), ne
pourra pas être utilisé pour trouver la solution entière.
Peut-on alors trouver la solution du problème relaxé grâce au simplexe, puis dire que la solution
entière optimale est la solution relaxée arrondie à l’entier le plus près ? La figure 8.1 montre que
cela ne fonctionne pas non plus : la solution du problème relaxé est (0, 1.86) et son approximation
entière (0, 2) n’est pas admissible. La solution entière optimale est même dans une région tout à
fait à l’opposé du domaine.
De façon générale, la relation entre la solution optimale entière du problème ILP et la solution
du problème relaxé dépend du problème. Dans certaines familles de problèmes, l’approximation
entière de la solution du problème relaxé sera exactement la solution du problème ILP. C’est le cas
par exemple si la solution du problème relaxé est elle même entière (exemple figure 8.2).
CHAPITRE 8: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 156

5 y

max z = x +y 3
x +4y ≤7 x Solution LP et ILP
2 +
2x +3y ≤9 y
=
4
x, y ≥0 1

x, y ∈N x
1 2 3 4 5

Figure 8.2: Solutions ILP et ILP relaxée identiques

Mais il est aussi possible que la solution arrondie du problème en PL ne soit pas admissible,
comme l’illustre le cas de la figure 8.3.

s
ée
max z = y
ig
rr
−x +y ≤ 1/2
co

x +y ≤ 3/2
x, y ≥0
n
no

x, y ∈N
s
ve
eu

Figure 8.3: Exemple de solutions arrondies de la PL non


r

admissibles
Ép

Il est aussi possible que la solution entière optimale ne soit pas la solution entière admissible la
plus proche de la solution de la PL, comme l’illustre la figure 8.4 : la forme du domaine admissible
et la pente de la fonction-objectif font que la solution entière est loin de la solution non-entière et
de son arrondi.

max z = x +5y
x +10y ≤ 20
x ≤2
x ≥ 0, y ≥0
x, y ∈N

Figure 8.4: Exemple de solution ILP et ILP relaxée éloi-


gnées
On voit donc qu’il n’est pas possible d’utiliser l’approximation de l’ILP relaxée pour trouver
CHAPITRE 8: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 157

la solution de l’ILP. Peut-on par contre profiter du fait que le domaine de l’ILP soit discret pour
énumérer toutes les solutions admissibles et y évaluer la fonction-objectif (aux six points de la
figure 8.4 par exemple) pour trouver la meilleure ? Non, car d’une part, le domaine admissible peut
être discret mais l’ensemble des points admissibles infini (si le domaine est non borné), et d’autre
part, même si ce dernier est fini, le nombre de solutions entières peut être astronomique. Il n’est
donc pas efficace en termes de temps de calcul de tenir compte de cet avantage pour évaluer la
fonction-objectif en chaque point du domaine admissible et en déduire la solution optimale.
Comment faire dans ce cas pour trouver la solution d’une ILP ? La solution du problème relaxé
peut-elle tout de même être utile ? L’algorithme de séparation et d’évaluation propose de diviser le
domaine admissible en sous-domaines sur lesquels résoudre le problème d’ILP relaxé jusqu’à trouver
la solution optimale entière de l’ILP.

8.2 L’algorithme de Séparation et d’Evaluation - (Branch &


Bound)
On a déjà mentionné qu’une énumération explicite des solutions, c’est-à-dire l’évaluation de

s
la valeur de la fonction-objectif en chaque point du domaine pour trouver le point fournissant la

ée
meilleure valeur, pouvait être très coûteuse, même si le nombre de points du domaine était fini. Le
ig
Branch & Bound (BB) est une alternative qui propose également d’énumérer les solutions, mais de
rr
façon implicite, c’est-à-dire en procédant par sous-domaines et non sur chaque point du domaine.
co

L’idée de base est celle du Divide et impera, c’est-à-dire, diviser le problème original en plus petits
problèmes qu’on peut résoudre facilement. Une succession de trois types d’opérations est nécessaire
n
no

au B&B :
— Branching (divide) : partitionner le problème original en plus petits sous-problèmes, obte-
s
ve

nus en fixant la valeur de certaines variables


eu

— Bounding : obtenir une estimation optimiste de la valeur optimale d’un sous-problème donné
r

(très souvent on utilise la relaxation linéaire)


Ép

— Fathomming (impera) : si l’estimation optimiste d’un sous-problème est pire qu’une solu-
tion déjà connue, on écarte ce sous-problème

Remarque: 8.2.1
La relaxation linéaire d’une ILP étant moins contrainte que l’ILP, elle offre toujours une
estimation optimiste de la solution optimale de l’ILP, c’est-à-dire une borne supérieure dans le
cas d’une maximisation, ou une borne inférieure dans le cas d’une minimisation.
CHAPITRE 8: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 158

8.2.1 Exemple de Branch & Bound


Soit le problème de maximisation suivant.

max z = 5x1 +8x2


x1 +x2 ≤6
5x1 +9x2 ≤ 45
x1 , x2 ≥ 0 et entières

Évaluation du problème relaxé

On résout le problème linéaire relaxé, c’est-à-dire sans tenir compte des contraintes d’intégralité,
sur le domaine L0 présenté à la figure 8.5. On obtient une borne supérieure de la solution de l’ILP,
puisqu’il s’agit d’une maximisation et que le problème relaxé est moins contraint que l’ILP. La
borne est stricte, puisque x1 et x2 ne sont pas entiers, la solution du problème relaxé n’est donc
pas admissible pour le problème d’ILP.

s
ée
ig
rr
co
n
s no
ve
r eu
Ép

Figure 8.5: Initialisation du B&B : Résolution du problème relaxé

Étape de séparation
15
Dans la solution optimale du problème relaxé, x2 vaut 4 et est donc non entier, compris entre
les valeurs entières 3 et 4. On observe à la figure 8.5 que la solution admissible pour le problème
ILP sera soit au-dessus de la solution du problème relaxé (x2 ≥ 4), ou bien au-dessous (x2 ≤ 3).
On divise donc le domaine continu L0 en deux sous-domaines plus petits L1 et L2 , au-dessus et
au-dessous de la solution optimale du problème relaxé (figure 8.6).
CHAPITRE 8: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 159

Figure 8.6: 1ère séparation du problème

On aurait pu bien sûr séparer le domaine aussi selon x1 , donc en deux sous-domaines à gauche

s
et à droite de la solution optimale du problème relaxé. On verra par la suite qu’il existe plusieurs

ée
critères pour choisir la variable selon laquelle faire la séparation.
ig
Quelque soit le plan de coupe choisi (vertical ou horizontal), l’union des domaines résultants L1
rr
et L2 comprend l’ensemble des solutions entières admissibles au problème initial. Par contre, elle
co

ne comprend pas l’ensemble des solutions admissibles pour le problème relaxé, puisque la bande
n

située entre L1 et L2 n’est pas prise en compte.


no

Résoudre le problème relaxé sur le domaine L1 revient finalement à résoudre le problème initial
auquel on aura ajouté une nouvelle contrainte : x2 ≥ 4. La solution relaxée ainsi trouvée sera une
s
ve

borne supérieure de la solution du problème ILP sur le domaine L1 .


eu

De même, résoudre le problème sur le domaine L2 revient à ajouter la contrainte x2 ≤ 3, et


la solution du problème relaxé ainsi trouvée sera une borne supérieure du problème d’ILP sur le
r
Ép

domaine L2 .
On représente la séparation sous la forme d’un arbre d’énumération :

Figure 8.7: Arbre d’énumération


CHAPITRE 8: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 160

Itération du processus

Le principe du B&B est ensuite de réitérer le processus jusqu’à trouver la solution optimale du
problème d’ILP. Ainsi, la solution de la relaxation linéaire sur L1 est (1.8, 4) avec z=41. Étant
donné que x1 n’est pas entier et est compris entre 1 et 2, on divise L1 en x1 ≤ 1 (L4 ) et x1 ≥ 2
(L3 ) (figure 8.8).

s
Figure 8.8: 2ème séparation
ée
ig
rr
co

On peut observer sur la figure 8.8 que le domaine L3 est vide, c’est-à-dire qu’il n’y a pas de
solution admissible si on ajoute la contrainte x1 ≥ 2 au domaine L1 . On s’intéresse donc uniquement
n

à la solution sur L4 . Or, le problème à résoudre sur L4 est le problème initial auquel on a ajouté 2
no

contraintes (x2 ≥ 4 et x1 ≤ 1) :
s
ve

max z = 5x1 +8x2


eu

x1 +x2 ≤6
5x1 +9x2 ≤ 45
r
Ép

x2 ≥4
x1 ≤1
x1 , x2 ≥0

L’arbre d’énumération devient :


CHAPITRE 8: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 161

Figure 8.9: 2ème arbre d’énumération

La solution du problème relaxé sur L4 est : (x1 , x2 ) = (1, 4.4). On sépare donc L4 en deux

s
sous-domaines : x2 ≤ 4 (L5 ) et x2 ≥ 5 (L6 ) (figure 8.10).

ée
ig
rr
co
n
s no
ve
r eu
Ép

Figure 8.10: 3ème séparation

On remarque sur la figure 8.10 que le domaine L5 est en fait réduit au segment de droite [4 5],
et le domaine L6 au point 5. Les arbres de la figure 8.10 précisent les valeurs des solutions sur les
domaines L4 , L5 , L6 . Le domaine L2 quant à lui n’est pas subdivisé car il propose déjà une solution
entière.
CHAPITRE 8: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 162

s
ée
Figure 8.11: 3ème et 4ème arbres d’énumération
ig
rr
On peut vérifier sur l’arbre de gauche de la figure 8.10 que l’union des domaines {L2 , L3 , L5 , L6 },
co

c’est-à-dire de toutes les feuilles de l’arbre, comprend l’ensemble des solutions entières du problème
initial L0 . La meilleure solution trouvée sur l’arbre est donc la meilleure solution du problème initial.
n
no

Il s’agit de la solution du problème L6 : (x1 , x2 ) = (0, 5) et z = 40. Elle est inférieure à la solution
optimale du problème initial relaxé (z = 41.25) comme attendu.
s
ve

On remarque également sur la figure 8.10 que seules les solutions des problèmes {L2 , L5 , L6 }
sont admissibles pour l’ILP car les valeurs des variables sont entières. Il se trouve pour ce problème
eu

particulier que la valeur de la fonction-objectif est aussi entière, mais elle pourrait tout à fait être
r
Ép

non entière tout en restant une solution admissible pour l’ILP : la contrainte d’intégralité porte
bien sur les variables et non sur la fonction-objectif.
Enfin, on remarque que la valeur de la fonction-objectif optimale des sous-problèmes diminue
au fur et à mesure que l’on descend sur une branche de l’arbre. C’est logique, puisqu’on ajoute
à chaque nouvelle étape une contrainte qui restreint le domaine admissible. Si l’on traitait d’un
problème de minimisation, la valeur de la fonction-objective augmenterait au contraire au fur et à
mesure que l’on descend l’arbre.

Noeuds actifs et bornes de la solution

Le concept de noeuds actifs ou inactifs guide la recherche de solution et permet de trouver les
bornes inférieure et supérieure de la solution optimale au fur et à mesure de la descente de l’arbre.

• Nœuds actifs (ou ouverts) et inactifs (ou fermés)


A chaque étape, on peut classer les nœuds de l’arbre en nœuds actifs et nœuds inactifs. Les
nœuds actifs sont :
— soit une feuille que l’on n’a pas encore explorée
— soit une feuille qui propose la meilleure solution entière en cours ;
CHAPITRE 8: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 163

Les nœuds inactifs sont tous les autres nœuds :


— soient des feuilles qui n’ont pas de solution admissible
— soient des feuilles qui proposent une solution entière, mais pire que la meilleure solution
entière déjà trouvée
— soient des feuilles qui ne proposent toujours pas de solution entière, mais dont la solution
relaxée est pire que la meilleure solution entière déjà trouvée et qu’il n’est donc pas
intéressant d’explorer plus avant
— soit des nœuds des niveaux supérieurs qui ont déjà été séparés et explorés
On est certain que les nœuds inactifs n’amèneront pas à la solution optimale, seuls les nœuds
actifs portent l’espoir de l’atteindre. Ainsi, on ne continue à descendre que sous les nœuds
actifs.

• Bornes inférieure et supérieure


Après chaque résolution de sous-problème, on peut déterminer une borne supérieure z u
et une borne inférieure z l pour la valeur optimale de la fonction-objectif : z l ≤ z ∗ ≤ z u .
L’algorithme s’arrête quand la borne supérieure et la borne inférieure sont égales :z l = z ∗ = z u .

s
ée
— Dans le cas d’un problème de maximisation (resp. minimisation), la borne inférieure
ig
(resp. supérieure) sera toujours constituée par la meilleure des solutions entières trouvées
rr
jusqu’à présent : si on ne trouve pas mieux, on gardera cette solution. Au début de l’arbre,
co

quand on n’a encore trouvé aucune solution entière, cette borne est −∞ dans le cas d’une
n

maximisation, et +∞ dans le cas d’une minimisation.


no

— De même, dans le cas d’un problème de maximisation (resp. minimisation), la borne


s

supérieure (resp. inférieure) sera toujours constituée par la meilleure des solutions
ve

relaxées des nœuds actifs.


r eu
Ép

Après avoir compris le principe du B&B sur un problème à 2 variables observable sur un gra-
phique, intéressons-nous maintenant à un problème plus général, et regardons quels critères utiliser
pour choisir sur quelle variable faire la séparation, et dans quelle direction explorer.

8.2.2 Critères de séparation et d’exploration


Plusieurs critères existent pour essayer de trouver plus rapidement la solution optimale de l’ILP.
Ils très souvent dépendants du problème spécifique. Voici quelques règles générales :
• Séparation
On peut choisir l’un ou l’autre des critères suivants pour séparer un domaine en deux-sous
domaines :
1. Choisir la variable la plus distante à l’entier le plus près
Exemple : soit x1 = 4.5 et x2 = 4.25. Les deux variables sont non entières, on peut
choisir de séparer le domaine selon les valeurs de x1 ou de x2 (cela équivaut au choix de
séparer le domaine en deux sous-domaines horizontaux ou verticaux dans l’exemple du
paragraphe 8.2.1). On choisit de séparer selon x1 , qui est plus éloigné de 4 et de 5. Ainsi,
on crée deux sous-domaines les plus éloignés possibles de la solution du problème relaxé.
CHAPITRE 8: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 164

2. Choisir la variable au coût impactant le plus la fonction-objectif


Par exemple, si on travaille sur un problème de maximisation, on choisira de faire la
séparation des sous-domaines sur la variable non entière ayant le plus grand coefficient
dans la fonction-objectif.
• Exploration
Entre deux nœuds, on explore d’abord le nœud qui donne l’estimation la plus optimiste de la
fonction-objectif, c’est-à-dire la plus haute pour une maximisation, ou la plus basse pour une
minimisation. L’objectif est de parvenir plus rapidement à la solution.

Exemple

Soit le problème de maximisation suivant :

max z = 10x1 +50x2


−x1 +2x2 ≤5
x1 +2x2 ≤ 14
x1 ≤8
x1 , x2 ≥ 0, x1 , x2 entiers positifs

s
ée
La résolution du problème relaxé donne la solution suivante : (x1 , x2 ) = (4.5, 4.75), z = 282.5
ig
(voir figure 8.12). La solution du problème d’ILP sera donc au maximum égale à 282.5. Sur quelle
rr
variable séparer ?
co

— Selon le critère de l’entier le plus distant : x1


n
no

— Selon le critère du coût dans la fonction-objectif : x2


Choisissons le critère de l’entier le plus distant par exemple.
s
ve
r eu
Ép

Figure 8.12: Exemple - Étape 1

Après l’étape 1, le nœud le plus prometteur est P 2 et il fournit la borne supérieure sur la solution
optimale : z ∗ ≤ 275. On continue donc sous le nœud P 2, et on sépare selon x2 , la seule variable
non entière dans la solution du problème relaxé (figure 8.13).
CHAPITRE 8: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 165

Figure 8.13: Exemple - Étape 2

Le problème P 4 n’admet pas de domaine admissible : on ferme le nœud P 4. La branche P 2 de


l’arbre est donc réduite au problème P 3, dont la solution est entière, et qui offre donc une première
solution admissible au problème d’ILP (avec z = 260). C’est aussi la meilleure solution actuelle,
puisqu’elle est unique.
Cependant, selon la branche P 1 qu’on avait temporairement laissé de côté, la borne supérieure
est 265. Il est donc possible qu’en descendant cette branche, on trouve une solution entière supérieure

s
à 260 (mais toujours inférieure à 265), et donc meilleure que la solution qu’on a trouvée en P 3. On
choisit donc de continuer l’arbre en séparant P 1 (figure 8.14).
ée
ig
rr
co
n
s no
ve
eu

Figure 8.14: Exemple - Etape 3


r
Ép

En descendant le nœud P 1, on trouve bien une solution entière, mais elle n’est pas meilleure que
la solution P3 . La solution optimale du problème d’ILP est donc bien 260. Il nous a fallu résoudre
7 sous-problèmes pour atteindre la solution.
Que se serait-il passé si on avait choisi de séparer selon le critère du coût de la fonction-objectif
plutôt ?
On remarque sur la figure 8.15 qu’on atteint immédiatement la meilleure solution entière après
avoir résolu 3 problèmes, le critère est plus de deux fois plus efficace. Cependant ce ne sera pas
toujours le cas ! Et c’est également difficile d’évaluer à l’avance lequel des deux critères sera le plus
efficace.

Figure 8.15: Arbre d’énumération construit selon le critère de coût de la fonction-objectif


CHAPITRE 8: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 166

8.3 Utilisation du B&B pour des variables binaires


Le principe de séparation et évaluation peut être utilisé pour faciliter la résolution d’autres pro-
blèmes, par exemple avec des variables binaires. Dans ce cas, on ajoutera au système une contrainte
supplémentaire dès le problème P 0 relaxé : les variables qu’on voudrait binaires doivent être in-
férieures ou égales à 1. Elles pourront donc prendre uniquement la valeur 0 ou 1. On peut alors
résoudre le problème avec le BB en recherchant la solution ILP comme précédemment.

8.4 Exercices
Exercice 42 (Résolution en nombres entiers)
Résolvez le problème suivant en utilisant la méthode du Branch-and-Bound.

min z =5x1 + x2 + x3 + 2x4 + 3x5


x2 − 5x3 + x4 + 2x5 ≥ −2
5x1 − x2 + x5 ≥ 7

s
ée
x1 + x2 + 6x3 + x4 ≥ 4 ig
xj ≥ 0 ∀ j ∈ {1, 2, 3, 4, 5}
rr
xj entier ∀ j ∈ {1, 2, 3}
co
n
no

Exercice 43
Résolution en nombres binaires Résolvez le problème suivant en utilisant la méthode du Branch-
s
ve

and-Bound.
eu

max z =3x1 + 4x2 + 2x3 + x4 + 2x5


r
Ép

2x1 − x2 + x3 + x4 + x5 ≤3
− x1 + 3x2 + x3 − x4 − 2x5 ≤2
2x1 + x2 − x3 + x4 + 3x5 ≤1
xj ≥0 ∀ j ∈ {1, 2, 3, 4, 5}
xj ∈ {0, 1} ∀ j ∈ {1, 2, 3}

Exercice 44 (Problème d’assignation)


Résolvez le problème d’assignation suivant par la méthode du Branch & Bound. La table indique les
coûts horaires de l’emploi de chaque employé pour chaque tâche. Chaque tâche doit être réalisée et
chaque employé doit réaliser une tâche.
CHAPITRE 8: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 167

Tâche
1 2 3 4 5
1 39 65 69 66 57
2 64 84 24 92 22
Employés 3 49 50 61 31 45
4 48 45 55 23 50
5 59 34 30 34 18

Pour établir l’arbre de séparation, on relâchera la contrainte qui impose que chaque employé ne
réalise qu’une seule tâche.

s
ée
ig
rr
co
n
s no
ve
r eu
Ép
Chapitre 9

Programmation non linéaire

Introduction
Les problèmes d’optimisation réels comprennent souvent des composantes non linéaires. Par
exemple, les coûts de transport n’augmentent pas de façon linéaire avec la quantité, puisque des

s
ée
économies sont faites sur le transport de grandes quantités. Ou encore, le temps mis par un employé
ig
à réaliser une tâche dépend, de façon non linéaire, de son expérience. Autant que possible, on
rr
cherchera à formuler un problème sous forme linéaire pour simplifier l’optimisation et réduire le
co

temps de calcul, mais ce n’est pas toujours possible. Dans ce cas, il faudra employer d’autres
méthodes de résolution que le simplexe et le Branch-and-Bound. On pourra se tourner vers les
n
no

méthodes heuristiques, la programmation dynamique (voir cours GOL680), ou la programmation


non linéaire présentée ici.
s
ve
eu

9.1 Modèle général


r
Ép

En programmation non linéaire, les contraintes ne peuvent plus être exprimées sous la forme de
combinaisons linéaires des variables. La forme générale d’un problème d’optimisation non-linéaire
est la suivante :

max f (x)
hi (x) = 0, ∀ i = {1, 2, ..., m}
gi (x) ≤ 0, ∀ i = {1, 2, ..., k}

où x est le vecteur des n variables, f , hi , ∀ i = {1, 2, ..., m}, et gi , ∀ i = {1, 2, ..., k} sont des fonctions
non linéaires de Rn → R. Le problème peut également s’écrire en forme vectorielle :

max f (x)
h(x) = 0
g(x) ≤ 0

168
CHAPITRE 9: PROGRAMMATION NON LINÉAIRE 169

Définition 9.1.1 (Définition d’un maximum/minimum)


Soit f une fonction de domaine de définition Df . x0 est un minimum local pour f si et
seulement si il existe un voisinage de x0 sur lequel f (x0 ) est minimum c’est-à-dire :

∃ δ tel que :
f (x) ≥ f (x0 ), ∀ x ∈ Bδ(x0 )

où Bδ(x0 ) est un voisinage de x0 défini comme une sphère de centre x0 et de rayon δ. d(x, x0 )
est la distance entre x et x0 .

x0 est un minimum global pour f si et seulement si f (x0 ) est minimum sur tout le
domaine de définition de f, Df :

f (x) ≥ f (x0 ), ∀ x ∈ Df

s
ée
ig
rr
co
n
s no
ve
eu

9.2 Géométrie de la PNL


r
Ép

La non-linéarité d’un problème peut apparaître dans les contraintes, ou dans la fonction-objectif,
ou encore dans les deux. Modifions par exemple le problème WINDOR rencontré au chapitre 1 afin
d’observer les modifications que peut entraîner la non-linéarité.

9.2.1 Contrainte non linéaire. Domaine admissible convexe


Soit le problème suivant :

max 3x +5y
x ≤4
2 2
9x +5x ≤ 216
x, y ≥0

La solution graphique est représentée à la figure 9.1. On peut observer que la solution optimale
n’est plus un coin du domaine : la méthode du simplexe, qui passe d’un coin à l’autre (c’est-à-dire
d’une solution de base à l’autre), ne pourra plus être utilisée pour résoudre le problème.
CHAPITRE 9: PROGRAMMATION NON LINÉAIRE 170

Solution optimale

z=
36

Domaine
3
admissible

1 2 3 4 x

Figure 9.1: Contrainte non-linéaire. Domaine admissible convexe

9.2.2 Contrainte non linéaire. Domaine admissible non convexe

s
Soit le problème suivant :
ée
ig
rr
max 3x +5y
co

x ≤4
2 2
8x − x +14y − y ≤ 49
n
no

x, y ≥0
s

La solution graphique est proposée dans la figure 9.2. On remarque que le domaine admissible n’est
ve

pas convexe. Ainsi, en balayant le domaine avec les courbes de niveau de la fonction-objectif en
eu

partant de la pire solution (x = y = z = 0), on rencontre un premier maximum au point (4, 3).
r

Ce maximum est local (c’est-à-dire qu’il est maximum seulement par rapport à la partie la plus à
Ép

droite du domaine admissible). Cependant, en continuant à balayer les courbes de niveau, on saute
d’une partie du domaine admissible à l’autre, jusqu’à atteindre un autre maximum au point (0, 7),
maximum global cette fois.
CHAPITRE 9: PROGRAMMATION NON LINÉAIRE 171

Maximum global
y

z=
35

4 z=
27
Domaine
3 Maximum local
admissible

1 2 3 4 x

Figure 9.2: Contrainte non linéaire. Domaine admissible non convexe

s
9.2.3 Fonction objectif non linéaire

ée
Soit le problème suivant :
ig
rr
126x − 9x2 +182y − 13y 2
co

max
x ≤4
n

y ≤6
no

3x +2y ≤ 18
s

x, y ≥0
ve
eu

La solution graphique du problème est présentée sur la figure 9.3. Dans ce cas, le domaine admissible
initial du problème Windor n’est pas modifié puisque les contraintes sont les mêmes. La fonction-
r
Ép

objectif cependant n’est pas linéaire et le point optimal n’est pas un coin du domaine (il pourrait
l’être, en fonction de la fonction objectif). De nouveau, la méthode du simplexe ne peut pas être
appliquée pour résoudre le problème.
CHAPITRE 9: PROGRAMMATION NON LINÉAIRE 172

Solution optimale

4 z
z==895077
Domaine z=807
3
admissible

1 2 3 4 x

Figure 9.3: Fonction-objectif non linéaire. Exemple 1

Enfin, regardons le problème suivant :

s
max 54x − 9x2 +78y − 13y 2
ée
ig
x ≤4
rr
y ≤6
co

3x +2y ≤ 18
n

x, y ≥0
no

La solution graphique présentée à la figure 9.4 montre que le point optimal n’est cette fois pas sur
s

les bords du domaine. De nouveau, le simplexe ne peut pas s’appliquer.


ve
eu

y
r
Ép

4
z=117

z=162
z=189

3 Solution optimale

Domaine
1
admissible
1 2 3 4 x

Figure 9.4: Fonction objectif non linéaire. Exemple 2


CHAPITRE 9: PROGRAMMATION NON LINÉAIRE 173

9.3 Rappels de calcul : Optimisation non linéaire sans contraintes


L’optimisation non linéaire sans contraintes vise à trouver le minimum ou maximum d’une
fonction-objectif à plusieurs variables. Or les conditions pour qu’un point soit extremum d’une
fonction à plusieurs variables sont obtenues comme la généralisation des conditions correspondant
à une fonction à une variable. Ces dernières sont donc rappelées ici.

9.3.1 Rappel : Modèle à une variable


Dans cette section, f est une fonction continue de R → R, c’est-à-dire à une seule variable.

Théorème 9.3.1 (Conditions nécessaires de 1er ordre au minimum (maximum))


Soit f une fonction continue dérivable et dont la dérivée est continue.

df
x0 est un maximum ou un minimum local de f =⇒ (x0 ) = 0
dx

s
ée
ig
Définition 9.3.1 (Point critique)
rr
co

x0 est appelé point critique ou point d’inflexion pour la fonction f si :

df
n

(x0 ) = 0
no

dx
s
ve
r eu

Théorème 9.3.2 (Conditions nécessaires de 2nd ordre au minimum (maximum))


Ép

Soit f une fonction continue dérivable 2 fois et dont les dérivées sont continues.

df
dx (x0 ) =0

x0 est un minimum local de f =⇒ 2
d f

dx2 (x0 ) ≥0

df
dx (x0 ) =0

x0 est un maximum local de f =⇒ 2
d f

dx2 (x0 ) ≤0

Théorème 9.3.3 (Conditions suffisantes de 2nd ordre au minimum (maximum))


Soit f une fonction continue dérivable 2 fois et dont les dérivées sont continues.

df
dx (x0 ) =0

2
=⇒ x0 est un minimum local de f
d f

dx2 (x0 ) >0
CHAPITRE 9: PROGRAMMATION NON LINÉAIRE 174


df
dx (x0 ) =0

2
=⇒ x0 est un maximum local de f
d f

dx2 (x0 ) <0

Proposition 9.3.1 (Fonctions concaves et convexes)


Soit f une fonction continue dérivable 2 fois et dont les dérivées sont continues. Soit I un
intervalle inclus dans son domaine de définition.

d2 f
(x) ≥ 0, ∀x ∈ I =⇒ f est convexe sur I
dx2

d2 f
(x) ≤ 0, ∀x ∈ I =⇒ f est concave sur I
dx2

s
ée
ig
rr
co
n
sno
ve
eu

Figure 9.5: Concavité et convexité


r
Ép

Théorème 9.3.4 (Conditions suffisantes de 2nd ordre au minimum (maximum)


d’une fonction convexe (concave))
Soit f une fonction continue dérivable 2 fois et dont les dérivées sont continues. Soit Df son
domaine de définition.

df
dx (x0 ) =0

=⇒ x0 est un minimum global de f
d2 f

dx2 (x) ≥ 0, ∀x ∈ Df

df
dx (x0 ) =0

2
=⇒ x0 est un maximum global de f
d f

dx2 (x) ≤ 0, ∀x ∈ Df

Autrement dit, si une fonction est convexe (resp. concave) sur tout son domaine de définition,
alors un point auquel sa dérivée première est nulle est son minimum (resp. maximum).
CHAPITRE 9: PROGRAMMATION NON LINÉAIRE 175

9.3.2 Modèle à plusieurs variables


Dans cette section, f est une fonction continue de Rn → R, c’est-à-dire une fonction à n variables.
Les conditions pour qu’un point soit un extremum dans ce cas sont une généralisation vectorielle de
la condition exprimée pour le modèle à une seule variable. Deux outils sont utilisés pour généraliser
les dérivées première et seconde : le gradient et la matrice hessienne. La section 9.3.2 fournit des
rappels d’analyse concernant ces outils et leurs propriétés, et est suivie des théorèmes énonçant les
conditions d’optimalité pour les fonctions à plusieurs variables, dans la section 9.3.2.

Rappels d’analyse des fonctions à plusieurs variables

Le gradient premièrement est la généralisation à plusieurs variables de la dérivée, et se définit


ainsi :

Définition 9.3.2 (Gradient d’une fonction dérivable)


Soit f (x) = f (x1 , · · · , xn ) une fonction dérivable de Rn → R.
Le gradient de f, ∇f , est défini comme suit :

s
ée
 

f (x)
 ∂x

1
 ig
 ∂x f (x)  n
∇f (x) =   2
,∀ x ∈ R
rr

 ··· 
co


∂xn f (x)
n

Exemple :
no

f (x, y) = 2x3 − 5yx + y 4


s
ve

" #
6x2 − 5y
∇f (x, y) =
eu

−5x + 4y 3
r

" #
Ép

8
∇f (3, 2) =
17

Le gradient est l’équivalent, pour les fonctions à plusieurs variables, de la dérivée première pour
les fonctions à une variable.

Définition 9.3.3 (Matrice hessienne d’une fonction dérivable deux fois)


Soit f (x) = f (x1 , · · · , xn ) une fonction dérivable deux fois de Rn → R.
La matrice hessienne de f, ∇2 f , est définie comme suit :
 
∂ ∂ ∂
∂x21
f (x) ∂x1 x2 f (x) ··· ∂x1 xn f (x)
..
 
 ∂ ∂ 
 ∂x x f (x) ∂x22
f (x) . .
2  , ∀ x ∈ Rn

H(x) = ∇ f (x) =  2 1
 .. .. ..

 . . . . .

∂ ∂
∂xn x1 f (x) ··· ··· ∂x2n f (x)
CHAPITRE 9: PROGRAMMATION NON LINÉAIRE 176

Exemple :

f (x, y) = 2x3 − 5yx + y 4


" #
2 6 −5
∇ f (x, y) =
−5 12y 2
" #
2 6 −5
∇ f (3, 2) =
−5 48

∂2f ∂2f
Puisque, ∂xi ∂xj = ∂xj ∂xi , ∀ (i, j) ∈ 1, ..., n, la matrice hessienne est symétrique, c’est-à-dire
qu’elle est égale à sa transposée : H T = H.
La matrice hessienne est l’équivalent, pour les fonctions à plusieurs variables, de la dérivée
seconde pour les fonctions à une variable.

On a vu que le signe de la dérivée seconde était important pour déterminer si un point critique
d’une fonction à une variable était un optimum. Dans le cas d’une fonction à plusieurs variables,

s
ée
on s’intéresse de la même façon au signe de la matrice hessienne. Voyons maintenant ce que signifie
ig
que ∇2 f (x) soit positive ou négative grâce à la définition suivante :
rr
co

Définition 9.3.4 (Matrice définie positive/négative)


n

Une matrice symétrique H de dimension (n × n) est


no

— définie positive si :
s
ve

xT Hx > 0, ∀ x, vecteur de dimension (n × 1)


r eu

— semi-définie positive si :
Ép

xT Hx ≥ 0, ∀ x, vecteur de dimension (n × 1)

— définie négative si :

xT Hx < 0, ∀ x, vecteur de dimension (n × 1)

— semi-définie négative si :

xT Hx ≤ 0, ∀ x, vecteur de dimension (n × 1)

Une matrice qui n’est ni définie positive, ni semi-définie positive, ni définie négative, ni semi-
définie négative est dite indéfinie.

Les matrices définies et semi-définies possèdent plusieurs caractéristiques qui peuvent aider à
les reconnaître. Ainsi, leurs déterminants mineurs principaux respectent certaines règles.
CHAPITRE 9: PROGRAMMATION NON LINÉAIRE 177

Définition 9.3.5 (Déterminant mineur principal)


Soit une matrice A de dimension (m × n). Le k ième déterminant principal mineur de A, noté
Dk ici, est le déterminant de la sous-matrice carrée Ak des k premières lignes et colonnes de
A.
Exemples de calcul des déterminants mineurs

— Soit :
" # " #
−2 −1 h i −2 −1
A= A1 = −2 A2 = (9.1)
−1 0 −1 0
(9.2)
D1 = −2, D2 = −2 · 0 − ((−1) · (−1)) = −1 (9.3)

— Soit :
" # " #
−2 −1 h i −2 −1
B= B1 = −2 B2 = (9.4)
−1 −4 −1 −4

s
ée
ig (9.5)
D1 = −2, D2 = −2 · (−4) − ((−1) · (−1)) = 7 (9.6)
rr
co

— Soit :
n

   
3 −1 0 3 −1 0
no

" #
h i 3 −1
C = −1 2 0 C1 = 3 C2 = C3 = −1 2 0 (9.7)
   
−1 2
s

0 0 1 0 0 1
ve

(9.8)
eu

D1 = 3, D2 = 5, D3 = 3 · (2 · 1 − 0) − (−1) · (−1 − 0) + 0 · (0 − 0) = 5 (9.9)


r
Ép

Propriétés des déterminants des matrices définies

Soit Dk , le k ième déterminant mineur principal de H, pour tout k ∈ K = {1, ..., n}. On peut
démontrer les propriétés suivantes :

Dk > 0, ∀ k ∈ K =⇒ H est définie positive : H > 0 (9.10)

(−1)k Dk > 0, ∀ k ∈ K =⇒ H est définie négative : H < 0 (9.11)

(
ni 9.10, ni 9.11 ne sont respectées
=⇒ H est indéfinie
Dk 6= 0, ∀ k ∈ K
CHAPITRE 9: PROGRAMMATION NON LINÉAIRE 178

(
Dk ≥ 0, ∀ k ∈ K
=⇒ Aucune conclusion possible.
∃k / Dk = 0
H peut être semi-définie positive ou in-
définie
(
(−1)k Dk ≥ 0, ∀ k ∈ K
=⇒ Aucune conclusion possible.
∃k / Dk = 0
H peut être semi-définie négative ou in-
définie.

Cas particulier des déterminants mineurs des matrices (2 × 2)


Dans le cas particulier d’une matrice H de dimensions (2×2), on peut également déterminer
le type de matrice même" si l’un# des déterminants mineurs de H est nul.
a b
Soit la matrice H = . On peut conclure sur le signe de H selon les règles suivantes :
b c

D1 (= a) ≥0 >0 ≤0 <0
2
D2 (= ac − b ) ≥0 >0 ≥0 >0
≥0 ≤0

s
c >0 <0

ée
Conclusions : H≥0 H>0 H≤0
ig H<0
rr
Tableau 9.1: Règles des matrices (2 × 2)
co

A titre d’exemple, reprenons les matrices A, B et C des exemples 9.1, 9.4, et 9.7.
n
no

— 9.1 : Les deux déterminants mineurs principaux de A sont strictement négatifs, la matrice A
est indéfinie.
s
ve

— 9.4 : Le premier déterminant mineur est strictement négatif et le deuxième strictement positif,
la matrice B est définie négative.
eu

— 9.7 : Tous les déterminants mineurs principaux de C sont strictement positifs, la matrice C
r
Ép

est définie positive.


— Autre exemple
" utilisant
# la règle spécifique aux matrices (2 × 2) :
−1 1
Soit A = . D1 = −1, D2 = 0 : La règle générale ne permet pas de conclure, A peut
1 −1
être semi-définie négative ou indéfinie. Cependant, puisque c = −1, on peut conclure que A
est semi-définie négative selon la règle spécifique aux matrices (2 × 2) (cas 3 du tableau 9.1).

Formulation des conditions d’optimum

Les théorèmes 9.3.1, 9.3.2, 9.3.3 se généralisent ainsi aux fonctions à plusieurs variables :

Théorème 9.3.5 (Conditions nécessaires de 1er ordre au maximum / minimum)


Soit f (x) une fonction continue dérivable selon toutes ses variables et dont les dérivées sont
continues.

x0 est un maximum ou un minimum local de f =⇒ ∇f (x0 ) = 0


CHAPITRE 9: PROGRAMMATION NON LINÉAIRE 179

Théorème 9.3.6 (Conditions nécessaires de 2nd ordre au maximum / minimum)


Soit f une fonction continue dérivable 2 fois selon toutes ses variables, et dont les dérivées
sont continues.

 ∇f (x0 ) = 0
x0 est un minimum local de f =⇒
 ∇2 f (x ) ≥ 0
0


 ∇f (x0 ) = 0
x0 est un maximum local de f =⇒
 ∇2 f (x ) ≤ 0
0

Théorème 9.3.7 (Conditions suffisantes de 2nd ordre au maximum / minimum)


Soit f une fonction continue dérivable 2 fois selon toutes ses variables et dont les dérivées sont
continues.

s

ée
 ∇f (x0 ) = 0
=⇒ x0 est un minimum local de f
ig
 ∇2 f (x ) > 0
0
rr

co

 ∇f (x0 ) = 0
=⇒ x0 est un maximum local de f
 ∇2 f (x ) < 0
n

0
s no
ve

Preuve 3
eu

Soit x0 , un vecteur de Rn , et point critique de f . Bδ (x0 ), un voisinage de x0 . Le développement


de Taylor au deuxième ordre nous donne une approximation de la valeur de f (x) pour tout x
r
Ép

appartenant à Bδ (x0 ) :

f (x) ' f (x0 ) + ∇f (x0 )(x − x0 ) + (x − x0 )T ∇2 f (x0 )(x − x0 )

Puisque x0 est un point critique, ∇f (x0 ) = 0. Donc :

f (x) ' f (x0 ) + (x − x0 )T ∇2 f (x0 )(x − x0 )


f (x) − f (x0 ) ' (x − x0 )T ∇2 f (x0 )(x − x0 )

T
Par définition, si f est définie négative en x0 , alors (x − x0 ) ∇2 f (x0 )(x − x0 ) < 0. Par consé-
quent :

f (x) − f (x0 ) < 0


f (x) < f (x0 ), ∀ x ∈ Bδ (x0 )

Ainsi, si f est définie négative au point critique x0 , alors x0 est un maximum.

Les théorèmes 9.3.5, 9.3.6 et 9.3.7 sont résumés dans le tableau suivant :
CHAPITRE 9: PROGRAMMATION NON LINÉAIRE 180

Condition Fonction à 1 variable Fonction à plusieurs variables


er 0
Condition nécessaire de 1 ordre f (x) = 0 ∇f (x) = 0
( (
f 0 (x) = 0 ∇f (x) = 0
Condition nécessaire de 2nd ordre (max) 00
f (x) ≤ 0 ∇2 f (x) ≤ 0
( (
nd f 0 (x) = 0 ∇f (x) = 0
Condition nécessaire de 2 ordre (min) 00
f (x) ≥ 0 ∇2 f (x) ≥ 0
( (
f 0 (x) = 0 ∇f (x) = 0
Condition suffisante de 2nd ordre (max)
f 00 (x) < 0 ∇2 f (x) < 0
( (
f 0 (x) = 0 ∇f (x) = 0
Condition suffisante de 2nd ordre (min) 00
f (x) > 0 ∇2 f (x) > 0

Convexité et optimalité

Connaître le signe de la matrice hessienne d’une fonction équivaut à connaître la convexité de


cette fonction :

s
ée
Théorème 9.3.8 (Convexité et matrices hessiennes)
ig
rr
co

Une fonction f est convexe sur tout son domaine de définition si et seulement si sa matrice
hessienne est semi-définie positive sur tout ce domaine.
n

Une fonction f est strictement convexe sur tout son domaine de définition si et seulement
no

si sa matrice hessienne est définie positive sur tout ce domaine.


s

Une fonction f est concave sur tout son domaine de définition si et seulement si sa matrice
ve

hessienne est semi-définie négative sur tout ce domaine.


eu

Une fonction f est strictement concave sur tout son domaine de définition si et seulement
r

si sa matrice hessienne est définie négative sur tout ce domaine.


Ép

On peut maintenant énoncer le théorème suivant exprimant une condition suffisante d’optimalité
pour les fonctions convexes ou concaves.

Théorème 9.3.9 (Conditions suffisantes au maximum / minimum d’une fonction


convexe ou concave)
Soit f une fonction continue de Rn → R, dérivable deux fois selon chacune de ses variables,
et dont les dérivées première et seconde sont continues.

(
∇f (x0 ) = 0
=⇒ x0 est un minimum global de f
f est convexe
CHAPITRE 9: PROGRAMMATION NON LINÉAIRE 181

(
∇f (x0 ) = 0
=⇒ x0 est un maximum global de f
f est concave

9.3.3 Exemples d’application


— Exemple 1

Soit : f (x, y) = x2 − y 2 . f est une fonction polynomiale, donc continue, deux fois dérivable,
et toutes ses dérivées partielles sont continues sur R2 . On connaît son gradient et sa matrice
hessienne :
" #
h i
2 2 0
∇f (x, y) = 2x −2y , ∇ f (x, y) = , ∀ (x, y) ∈ R2
0 −2

Cherchons les points critiques de f , c’est-à-dire les points pour lesquels le gradient s’annule :

s
ée
(
2x = 0 ig
∇f (x, y) = 0 ⇐⇒ ⇐⇒ (x, y) = (0, 0)
−2y = 0
rr
co

f possède un seul point critique qui est le point (0,0). Est-ce un minimum, un maximum
ou un point de selle ? Calculons les déterminants mineurs de la matrice hessienne de f en ce
n

point :D1 = 2, D2 = −4. La matrice hessienne de f est indéfinie, et (0, 0) est un point de selle.
s no

— Exemple 2
ve

Soit la fonction suivante. Trouver ses extrema.


r eu

f (x, y) = 2xy + 2x − x2 − 2y 2
Ép

" #
h i −2 2
∇f (x, y) = 2y + 2 − 2x 2x − 4y ,∇2 f (x, y) = , ∀ (x, y) ∈ R2
2 −4
(
−2x + 2y = −2
∇f (x, y) = 0 ⇐⇒ ⇐⇒ (x, y) = (2, 1)
2x − 4y = 0
D1 = −2, D2 = 4

La matrice hessienne de f est définie négative en son seul point critique (2, 1) qui est donc un
maximum global pour f.

9.4 Optimisation non linéaire avec contraintes d’égalité

9.4.1 Conditions nécessaires d’optimalité


Nous venons de voir comment trouver les extrema d’une fonction non linéaire continue sur tout le
domaine réel, ajoutons maintenant m contraintes d’égalité non linéaires qui restreignent le domaine
CHAPITRE 9: PROGRAMMATION NON LINÉAIRE 182

d’admissibilité des points-solutions :

Soit f : Rn → R
hi (x) : Rn → R, ∀ i ∈ {1, ..., m}
On cherche :
max f (x1 , · · · , xn ) tel que :
hi (x1 , · · · , xn ) = 0, ∀ i ∈ {1, ..., m}
( ⇐⇒ h(x) = 0)

Par exemple, la figure 9.6 montre une interprétation graphique d’un problème non linéaire à
deux variables x et y. Les courbes de niveau de f ne sont plus des droites, comme dans le problème
linéaire, mais des courbes. On observe ainsi sur la figure cinq courbes de niveau de f , c’est-à-dire
cinq valeurs de la fonction objectif. En l’absence de contraintes, le minimum de la fonction est situé
au point A. Cependant, le problème est soumis à une contrainte d’égalité h(x, y) = 0, qui est la
courbe représentée en rouge sur le graphique. On cherche donc les points (x, y) de la courbe rouge,
pour lequel f est maximal ou minimal. Si on suit la courbe en partant de C vers D, on descend les
courbes de niveau de f , dont la valeur est 15 au point C, puis diminue jusqu’à 5 en arrivant au point
D. La courbe h(x, y) = 0 croise successivement les lignes de niveau de f , comme un promeneur

s
ée
qui descend une pente et dont l’altitude diminue. En D, la contrainte h(x, y) = 0 est parallèle à
ig
la courbe de niveau, puis elle remonte les courbes de niveau de f de 5 à 30 en arrivant au point
rr
E, point auquel la contrainte est de nouveau parallèle aux courbes de niveau de f . De même, F et
co

G sont respectivement minimum et maximum local. Le minimum global de f , pour tous les points
respectant la contrainte, est finalement en D.
n
s no
ve
r eu
Ép

Figure 9.6: Interprétation géométrique d’un problème de maximisation non linéaire à 2 variables.

Par conséquent, on observe sur cette figure que la contrainte est parallèle aux courbes de niveau
de la fonction en chaque extremum local, c’est-à-dire que le gradient de la contrainte est parallèle au
gradient des courbes de niveau, ou, dit autrement, que le gradient de f est un multiple du gradient
de h en chaque extremum.
De façon plus générale, dans le cas où le problème est soumis à plusieurs contraintes d’égalité
CHAPITRE 9: PROGRAMMATION NON LINÉAIRE 183

et non une seule, on peut montrer qu’aux points extrema, le gradient de f peut s’exprimer comme
une combinaison linéaire des gradients des différentes contraintes d’égalité.
On retrouve donc une généralisation de la condition d’optimalité rencontrée dans l’exemple
mécanique de la balle tombant dans un saladier présenté au chapitre 6 sur la dualité, dans la
section 6.1. Dans celui-ci, le vecteur c était une combinaison linéaire des gradients des parois actives
(c’et-à-dire des parois pour lesquelles les contraintes étaient satisfaites à l’égalité).
La généralisation des conditions d’optimalité aux problèmes non linéaires soumis à contraintes
d’égalité est exprimée pr le théorème 9.4.1 :

Théorème 9.4.1 (Conditions nécessaires d’optimum à plusieurs variables sous


contrainte d’égalité)
Soient f, h1 , · · · , hm : Rn → R. Soit x0 , un point de l’espace Rn régulier (C’est-à-dire que h
admet une tangente en ce point), et qui vérifie :

h(x0 ) = 0

Si x0 est un point auquel f est minimum ou maximum, alors :

s
∃ λ ∈ Rn /
ée
ig
∇f (x0 ) = λT ∇h(x0 )
rr
m
co

P
= λi ∇hi (x0 )
i=1
n

C’est-à-dire que le gradient de f est une combinaison linéaire du gradient de h.


s no
ve

Appliquons ce théorème à un problème de programmation linéaire du type :


r eu
Ép

max cx
Ax − b = 0
(c’est-à-dire h(x) =Ax − b)

On a :
 
c1
∇f (x) = · · · =c
 

cn
 
ai1
∇hi (x) =  · · ·  = ai , ∀i ∈ 1, · · · , m
 

ain

Donc :

∇f (x0 ) = λT ∇h(x0 ))
m
P
⇐⇒ c = λi ai
i=1
⇐⇒ c = λT A
CHAPITRE 9: PROGRAMMATION NON LINÉAIRE 184

On retrouve ici l’expression des contraintes du dual du problème considéré, dans lesquelles le vecteur
λ est le vecteur des variables duales. Ainsi, la condition d’optimalité exprimée dans le théorème 9.4.1
est l’équivalent des conditions d’admissibilité du dual. Ce théorème est donc une forme généralisée
du théorème de la dualité forte pour des fonctions non linéaires.
Pour faciliter la résolution de ce type de problèmes, nous allons introduire une nouvelle fonction
appelée fonction lagrangienne.

Définition 9.4.1 (Fonction lagrangienne)


Soient f, g : Rn → R. On définit une fonction L appelée fonction lagrangienne comme suit :

L(x, λ) = f (x) − λT h(x), ∀ x ∈ Rn

λT est appelé le vecteur des multiplicateurs de Lagrange.

Montrons alors que les conditions nécessaires d’optimalité énoncées au théorème 9.4.1 sont

s
équivalentes à trouver les points critiques de la fonction non linéaire L, ce que nous savons faire :

ée
Si (x, λ) est maximum pour L, alors : ig
rr
∇L(x, λ) = 0
co

h i
⇐⇒ ∇x L(x, λ) ∇λ L(x, λ) = 0
n

(
∇x L(x, λ) = ∇x f (x) − λT ∇x h(x) =0
no

⇐⇒
∇λ L(x, λ) = −h(x) =0
s

(
∇x f (x) = λT ∇x h(x)
ve

⇐⇒
h(x) = 0
r eu

Cela revient aux conditions d’optimalité exprimées dans le théorème 9.4.1. Par conséquent,
Ép

Trouver les extrema d’une fonction non linéaire soumise à des contraintes d’égalité
revient à trouver les points critiques de la fonction lagrangienne associée.
Dit autrement :
(
max f (x)
⇐⇒ max L(x, λ)
h(x) = 0

9.4.2 Exemple d’optimisation sous contraintes d’égalité


Soit le problème suivant :

min f (x1 , x2 ) = x1 + x2
h(x1 , x2 ) = x21 + x22 − 2 = 0

Résolvons de deux façons : en appliquant le théorème 9.4.1, puis grâce au Lagrangien.


1. Résolution en appliquant le théorème 9.4.1
CHAPITRE 9: PROGRAMMATION NON LINÉAIRE 185

Cherchons x = (x1 , x2 ) tels que ∇f (x) = λ∇h(x) :



1 = 2λx1
 h i
∇f (x) = 1 1 

h i =⇒ 1 = 2λx2 =⇒ x1 = x2 ± 1
∇h(x) = 2x 2x 
1 2 x21 + x22 −2=0

Il y a donc 2 extrema :
— (x1 , x2 , λ) = (1, 1, 1/2) pour f (1, 1) = 2
— (x1 , x2 , λ) = (−1, −1, −1/2) pour f (−1, −1) = −2
Le premier est maximum et le deuxième, minimum, est solution du problème.
2. Résolution à l’aide du Lagrangien
L’expression du Lagrangien est :L(x, λ) = f (x) − λh(x) = x1 + x2 − λ(x21 + x22 − 2). Son
gradient est :
 ∂L 
∂x = 1 − 2λx1
 ∂L1
= 1 − 2λx2

 ∂x2 
∂L
∂λ = −(x21 + x22 − 2)

s
ée
Annuler le gradient du Lagrangien revient donc bien aux mêmes solutions que précédemment :
ig
rr


 1 − 2λx1 = 0
co

1 − 2λx2 = 0 =⇒ x1 = x2 ± 1

x21 + x22 −2=0

n
no

9.4.3 Analyse de sensibilité


s
ve

Comme dans le cas de la programmation linéaire, on peut se demander ce qu’il se passe si l’on
eu

translate légèrement une contrainte.


r

Soit le problème suivant :


Ép

z = max f (x)
h(x) = 0

Au point optimal x∗ , les conditions nécessaires d’optimalité imposent :

∃λ∗ , tel que : ∇f (x∗ ) = λ∗T ∇h(x∗ )


h(x∗ ) = 0
z = f (x∗ )

L’analyse de sensibilité s’intéresse à définir la variation de z associée à de petites variations du


vecteur de droite 0. Supposons donc qu’on modifie légèrement le vecteur de droite (0), et qu’il
devient b, c’est-à-dire : h(x) = b. Le nouveau point optimal, la nouvelle valeur optimale de la
fonction objective, et les nouvelles valeurs des multiplicateurs de Lagrange vont dépendre de b :
CHAPITRE 9: PROGRAMMATION NON LINÉAIRE 186

x∗ (b), z(b) et λ∗ (b). Ainsi, les conditions d’optimalité peuvent s’écrire :

∃λ∗ (b), tel que : ∇x f (x∗ (b)) = λ∗T (b)∇x h(x∗ (b))
h(x∗ (b)) = b
z(b) = f (x∗ (b))

Trouver le taux de variation de z par rapport à b revient à évaluer la dérivée de z par rapport à b,

au point b = 0. Mathématiquement, cela s’écrit : ∇b z(b) .
b=0
Utilisons pour cela l’expression de la dérivation de fonctions composées :



∇b z(b) = ∇b f (x (b))
b=0 b=0

∗ ∗

= ∇x f (x (b))∇b x (b)
b=0

∗T
(b)∇x h(x (b))∇b x∗ (b)


=λ (9.12)
b=0

Or, par définition de la dérivation de fonctions composées :

s
∇x h(x∗ (b))∇b x∗ (b) = ∇b h(x∗ (b))
ée
ig
rr
Remplaçons h(x∗ (b)) par sa valeur selon l’expression des contraintes à l’optimalité :h(x∗ (b)) = b.
co

Alors :
n

∇b h(x∗ (b)) = ∇b b = I
no

Utilisons ce résultat dans l’équation 9.12 :


s
ve


∗T ∗ ∗

∇b z(b) = λ(b) ∇x h(x (b))∇b x (b)
eu

b=0 b=0

r

= λ(b)∗T ∇b h(x∗ (b))



Ép

b=0

∗T ∗T

= λ(b) I = λ(b)
b=0 b=0

= λ(b)∗T (0)

Autrement dit, le taux de variation de la fonction-objectif par rapport à b est exactement le vecteur
des multiplicateurs de Lagrange initial. Supposons par exemple que la translation des contraintes
se fait selon la contrainte i : hi (x) = bi :

= λ∗i

∇bi z(bi )
bi =0
z(bi ) − z(0)
' λ∗i
bi
z(bi ) ' z(0) + λ∗i bi

La fonction-objectif varie de λ∗i bi quand le second membre de la contrainte i varie de bi .


CHAPITRE 9: PROGRAMMATION NON LINÉAIRE 187

9.5 Optimisation non linéaire avec contraintes d’inégalité


Intéressons nous maintenant au cas général où le problème est soumis à la fois à des contraintes
d’égalité et à des contraintes d’inégalité.

max f (x)
hi (x) = 0, ∀ i = 1, ..., m
gj (x) ≤ 0, ∀ j = 1, ..., p

Au point optimal, certaines des contraintes de type ≤ seront satisfaites à l’égalité, d’autres
seront des inégalités strictes. Rappelons que les contraintes satisfaites à l’égalité sont appelées
contraintes actives. Supposons que J ∈ 1, · · · , p soient les indices correspondant à ces contraintes
actives à l’optimalité. Si on connaissait à l’avance l’ensemble J, on pourrait séparer les contraintes
d’inégalité en deux types de contraintes, actives et inactives :
— Soit : j ∈ J, gj est active. Donc gj (x0 ) = 0 (égalité comme dans la section 9.4)
— Soit : j ∈
/ J, gj est inactive et ne définit pas le point optimal, on peut l’éliminer du système

s
ée
d’équations. ig
Par conséquent, on pourrait appliquer directement le théorème 9.4.1 et la condition d’optimalité
rr
serait :
co

m
X X
∇f (x0 ) = λi ∇hi (x0 ) + µj ∇gj (x0 )
n

i=1 j∈J
no

µj serait alors la variable duale associée à la contrainte gj , tout comme λi est la variable duale
associée à la contrainte hi .
s
ve

Cependant, on ne connait pas l’ensemble J des contraintes actives à l’avance. La stratégie à


eu

adopter est alors semblable à l’utilisation des écarts complémentaires en programmation linéaire.
r

On devra s’assurer qu’à l’optimalité, soit une contrainte gj est active (gj (x0 ) = 0), soit la variable
Ép

duale correspondante µj est nulle (µj = 0). Ce choix est résumé par l’équation : gj (x0 ) · µj = 0.
De façon générale, on peut donc formuler une condition nécessaire d’optimalité pour un pro-
blème d’optimisation non linéaire de la façon suivante :

Théorème 9.5.1 (Conditions nécessaires d’optimalité de Karush-Kuhn-Tucker)


Soit le problème d’optimisation :

f, hi , gj : Rn → R, ∀ i ∈ 1, ..., m, j ∈ 1, ..., p
max f (x)
hi (x) = 0, ∀ i = 1, ..., m
gj (x) ≤ 0, ∀ j = 1, ..., p

Soit x0 , un point de l’espace Rn où f est un maximum local, et qui est régulier pour toutes les
fonctions (hi , tel que i ∈ {1, ..., m}, et gj , tel que j ∈ J).
CHAPITRE 9: PROGRAMMATION NON LINÉAIRE 188

Si x0 est un maximum local, alors il existe (λ, µ) tels que :




 i) Fonction et contraintes sont tangents :

∇f (x0 ) = λT ∇h(x0 ) + µT ∇g(x0 )





 m
P Pp
= λi ∇hi (x0 ) + µj ∇gj (x0 )






 i=1 j=1



 ii) Écarts complémentaires :

µT g(x0 ) = 0



 iii) Admissibilité de la solution :




 h(x0 ) = 0

g(x0 ) ≤ 0








 iv) Positivité des variables duales :

µ≥0

9.5.1 Cas particulier où les variables sont positives

s
ée
Dans le cas de la programmation linéaire, les variables doivent être positives pour résoudre le
ig
problème à l’aide du simplexe. Ce n’est pas le cas lors de la programmation linéaire. Si on souhaite
rr
résoudre un problème pour lequel on impose que les variables soient positives, il faut donc considérer
co

cette contrainte comme une contrainte à part entière.


n

Une autre possibilité (pas forcément plus simple !) est de décliner une version du théorème
no

de Karush-Kuhn-Tucker spécifique à cette situation, à utiliser le cas échéant. Voyons comment


l’obtenir. Soit le problème suivant :
s
ve
eu

max f (x)
r

hi (x) = 0, ∀ i = 1, ..., m
Ép

gj (x) ≤ 0, ∀ j = 1, ..., p
x≥0

Il faut d’abord transformer le problème pour se retrouver dans les conditions dans lesquelles on
peut appliquer les conditions KKT :

max f (x)
hi (x) = 0, ∀ i = 1, ..., m
gj (x) ≤ 0, ∀ j = 1, ..., p
−x ≤ 0

Appliquons KKT :

∇f (x) = λT ∇h(x) + µT ∇g(x) − ρT I (9.13)


h(x) = 0 (9.14)
g(x) ≤ 0 (9.15)
CHAPITRE 9: PROGRAMMATION NON LINÉAIRE 189

−x ≤ 0 (9.16)
µT g(x) = 0 (9.17)
T
ρ (−x) = 0 (9.18)
λ, µ, ρ ≥ 0 (9.19)

où I est la matrice identité. 9.18 implique qu’à l’optimalité, soit ρk = 0, soit xk = 0. En utilisant
l’expression de ρ tirée de 9.13, 9.18 (l’expression des écarts complémentaires) devient :

(∇f (x) − λT ∇h(x) − µT ∇g(x))T x = 0

Par ailleurs, puisque ρ est positif, −ρT I dans 9.13 est négatif et 9.13 implique donc :

∇f (x) ≤ λT ∇h(x) + µT ∇g(x)

On obtient donc une nouvelle formulation du KKT adaptée aux cas où les variables sont positives :
Conditions KKT pour un problème aux variables positives
Soit le problème de maximisation :

s
max f (x)
ée
ig
hi (x) = 0, ∀ i = 1, ..., m
rr
co

gj (x) ≤ 0, ∀ j = 1, ..., p
x≥0
n
no

x0 est un point optimum si l’ensemble des conditions suivantes est vérifié :


s
ve

∇f (x0 ) − λT ∇h(x0 ) − µT ∇g(x0 ) ≤ 0


eu

x0 T (∇f (x0 ) − λT ∇h(x0 ) − µT ∇g(x0 ) = 0


r
Ép

h(x0 ) = 0
g(x0 ) ≤ 0
−x0 ≤ 0
µT g(x0 ) = 0
ρT − (x0 ) = 0
λ, µ ≥ 0

9.5.2 Conditions suffisantes d’optimalité

Théorème 9.5.2 (Conditions suffisantes d’optimalité)


Soit le problème d’optimisation :

max(ou min)f (x)


hi (x) = 0, ∀ i = 1, ..., m
CHAPITRE 9: PROGRAMMATION NON LINÉAIRE 190

gj (x) ≤ 0, ∀ j = 1, ..., p




 i) f est concave sur tout son domaine de définition

 ii) Les fonctions h (x) sont linéaires, pour tout i
i
=⇒ x0 est un maximum global


 iii) Les fonctions g j sont convexes sur tout le domaine, pour tout j

 iv) Les conditions KKT sont réunies

De même :

 i) f est convexe sur tout son domaine de définition



 ii) Les fonctions h (x) sont linéaires, pour tout i
i
=⇒ x0 est un minimum global


 iii) Les fonctions gj (x) sont convexes sur tout le domaine, pour tout j

 iv) Les conditions KKT sont réunies

s
ée
ig
9.5.3 Exemple d’optimisation dans le cas général
rr
co

Soit le problème suivant :


n

max f (x1 , x2 ) = ln(x1 + 1) + x2


no

2x1 + x2 ≤ 3
s

x1 , x2 ≥ 0
ve
eu

Transformons le problème pour que KKT soit applicable.


r
Ép

max f (x1 , x2 ) = ln(x1 + 1) + x2


2x1 + x2 − 3 ≤ 0
− x1 ≤ 0
− x2 ≤ 0

On calcule les gradients de f et des fonctions gj :


h i
∇f (x1 , x2 ) = 1
x1 +1 1
h i
∇g1 (x1 , x2 ) = 2 1
h i
∇g2 (x1 , x2 ) = −1 0
h i
∇g3 (x1 , x2 ) = −1 0

Écrivons les conditions KKT pour tout point optimal (x1 , x2 ) (selon la formulation générale KKT) :

1
Lagrangien : = 2µ − ρ1 (9.20)
x1 + 1
CHAPITRE 9: PROGRAMMATION NON LINÉAIRE 191

1 = µ − ρ2 (9.21)
Contraintes : 2x1 + x2 − 3 ≤ 0 (9.22)
− x1 ≤ 0 (9.23)
− x2 ≤ 0 (9.24)
Écarts comp. : µ(2x1 + x2 − 3) = 0 (9.25)
ρ1 x1 = 0 (9.26)
ρ2 x2 = 0 (9.27)
Variables duales positives : µ, ρ1 , ρ2 ≥ 0 (9.28)

Nous pouvons choisir un point de l’espace pour vérifier s’il répond aux conditions KKT, et donc s’il
est un optimum. Prenons le point x = (0, 1).

9.25 =⇒ µ = 0
9.27 =⇒ ρ2 = 0
9.20 =⇒ 1 = −ρ1

s
ée
C’est impossible, puisque ρ1 doit être positif. le point (0, 1) n’est donc pas un optimum. Regardons
maintenant le point x = (0, 3).
ig
rr
co

9.27 =⇒ ρ2 = 0
9.20 =⇒ 1 = 2µ − ρ1
n
no

9.21 =⇒ µ = 1 =⇒ ρ1 = 1
s

On peut vérifier que toutes les autres conditions de 9.20 à 9.28 sont satisfaites. Le point est un
ve

optimum.
eu

Pour savoir s’il s’agit d’un minimum ou d’un maximum, intéressons nous à la convexité de f en
r

calculant sa matrice hessienne :


Ép

" #
1
2 − (x1 +1)2 0
∇ f (x1 , x2 ) =
0 0

1
Ses déterminants mineurs D1 = − (x1 +1)2 et D2 = 0 sont négatifs ou nuls en tout point du domaine

de définition. La matrice hessienne de f est donc semi-définie négative, et f est concave sur tout
son domaine. Le point optimal trouvé est un maximum global.

9.6 Exercices
Exercice 45 (Convexité)
Soit (1, 1) un point critique d’une fonction f ayant des dérivées secondes continues. Que peut-on
dire à propos de f dans chaque cas :
— fxx (1, 1) = 4 fxy (1, 1) = 1 fyy (1, 1) = 2
— fxx (1, 1) = 4 fxy (1, 1) = 3 fyy (1, 1) = 2
Rappel : si f est une fonction continue, que ses dérivées premières et secondes sont continues, que
son gradient est nul en x0 et sa matrice hessienne définie positive en x0 , alors f est en convexe en
CHAPITRE 9: PROGRAMMATION NON LINÉAIRE 192

x0 et x0 est un minimum local.

Exercice 46 (Solution graphique)


Utiliser les courbes de niveau de la figure pour prédire les emplacements des points critiques de f
et déterminer si f admet un point de selle, un maximum ou un minimum local en chaque point
critique. Expliquer le raisonnement. Utiliser ensuite la condition du deuxième ordre pour confirmer
les prédictions.

f (x, y) = 4 + x3 + y 3 − 3xy

s
ée
ig
rr
co
n
s no
ve
eu

Exercice 47 (Fonction à 3 variables)


r
Ép

Déterminer la nature de chacun des points critiques de la fonction, et préciser s’ils sont locaux ou
globaux.

f (x1 , x2 , x3 ) = x21 − 2x1 + x32 − 3x2 + x23 + 2x3

Exercice 48 (Résolution graphique sous contrainte)


La figure ci-dessous présente un diagramme de courbes de niveau de f et une courbe d’équation
g(x, y) = 8. Estimer le maximum et le minimum de la fonction f sous la contrainte g(x, y) = 8.
Expliquer le raisonnement.

Exercice 49 (Multiplicateurs de Lagrange)

— Utiliser les multiplicateurs de Lagrange pour trouver le maximum et le minimum de la fonction


CHAPITRE 9: PROGRAMMATION NON LINÉAIRE 193

sous les contraintes données :

f (x, y, z) = x + y + z

s
ée
s.a.c.
ig
h1 (x, y, z) = x2 + z 2 = 2
rr
h2 (x, y, z) = x + y = 2
co
n

— À l’aide des multiplicateurs de Lagrange estimer les valeurs optimales de la fonction f pour
no

la contrainte :
s
ve

h1 (x, y) = x2 + z 2 = 5/2
eu

Rappel : Soit un problème d’optimisation défini par f (x1 , ..., xn ), la fonction objectif, et h(x),
r

la matrice des m contraintes. Soit x∗ tel que : h(x∗ ) = 0. Alors,


Ép

∃ λ ∈ Rm tel que : ∇f (x∗ ) = λ∇h(x∗ )

Exercice 50 (PNL avec contraintes)


Trouver la solution optimale du problème suivant grâce au site : https: // www. desmos. com/
calculator/ d4na3fxmdx .

max f = x1 + 2x2 − x32


x1 + x2 ≤ 1
x1 , x2 ≥ 0

Que devient la solution si le membre de droite de la contrainte est 2 ? Vérifier graphiquement et


par le calcul.

Exercice 51 (Transformation d’un problème en problème KKT)


Considérer le problème suivant.
CHAPITRE 9: PROGRAMMATION NON LINÉAIRE 194

min f = x31 + 4x22 + 16x3


x1 + x2 + x3 = 5
x1 , x2 , x3 ≥ 1

— Convertir ce problème en un problème équivalent de PNL sous sa forme générale.


— Obtenir les conditions KKT pour ce problème.
— Trouver une solution qui vérifie les conditions KKT.

s
ée
ig
rr
co
n
s no
ve
r eu
Ép
Bibliographie

Bertsimas, D. and J. N. Tsitsiklis (1997). Introduction to linear optimization, Volume 6. Athena


Scientific Belmont, MA.

Hillier, F. S., G. J. Lieberman, F. Hillier, and G. Lieberman (2014). Introduction to operations


research.

s
Nobert, Y., R. Ouellet, and R. Parent (2001). La recherche opérationnelle, 3 e édition. Gaëten
Morin Éditeur, Canada.
ée
ig
rr
Williams, H. P. (2013). Model building in mathematical programming. John Wiley & Sons.
co
n
s no
ve
r eu
Ép

195

Vous aimerez peut-être aussi