Académique Documents
Professionnel Documents
Culture Documents
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
i
TABLE DES MATIÈRES ii
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
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
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
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
simplexe
no
et évaluation progressive
ve
— les problèmes sur réseaux et leur résolution par la théorie des graphes
eu
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
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
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.
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
contraintes à respecter, des variables sur lesquels prendre des décisions et qui auront un
no
• 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.
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
i
s
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
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,
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
grammation linéaire est une programmation mathématique dans laquelle la fonction-objectif et les
eu
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
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) :
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
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
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
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
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
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
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
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.
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.
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
• 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
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
• 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
s
ée
t∈T t2 ∈Tt
ig
rr
co
Après ces exemples particuliers, voici une formulation générale des modèles de programmation
linéaire.
s
ve
eu
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
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
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
1.4 Exercices
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
• Il ne doit pas y avoir plus de 90 vêtements de la marque E dans les 3 magasins (au total)
ve
doit pas être plus petite que le tiers de la somme des vêtements des marques C,D,E
r
Ép
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
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
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.
16
CHAPITRE 2: AUTRES PROBLÈMES-TYPES DE MODÉLISATION LINÉAIRE 17
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
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.
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
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.
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
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)
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.
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
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
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.
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
• 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
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
• uklm , nombre d’unités de matière première m nécessaires à la production d’1 unité de papier
no
• hkl , Nombre d’heures nécessaires pour produire 1 unité de papier type k sur la machine l,
eu
• 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.
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.
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
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
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.
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
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
s
ée
ig
rr
co
n
s no
ve
r eu
Ép
Chapitre 3
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
(
1 si le choix i est oui
Ép
xi =
0 si le choix i est non
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
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
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
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.
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
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
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
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
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 -
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
• Variables :
s
(
ve
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
s
ée
x9 ≤ 2 − (x3 + x8 )
ig
rr
Vérifions que cette équation traduit bien la contrainte énoncée :
co
− Si 2 alors 11 et réciproquement :
r
x2 = x11
Ép
− Si 4 ou 5, alors non 7 :
x7 + x4 ≤ 1
x7 + x5 ≤ 1
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 :
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
• 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
Dans ce modèle,
CHAPITRE 3: PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 34
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
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
• Ensembles :
− v ∈ V Les villes
− e ∈ E Les emplacements
• Paramètres :
CHAPITRE 3: PROGRAMMATION LINÉAIRE EN NOMBRES ENTIERS 35
• 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
Avec :
s
ve
− 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.
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.
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
• Ensembles :
− p ∈ P , Les types de chaises
s
ve
• Paramètres :
eu
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
• Ensembles :
eu
− p ∈ P , Produits
r
− u ∈ U , Usines
Ép
(
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
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.
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
• 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
• 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
X
xf 1 − qf xf c ≥ 0, ∀ f ∈ F
s
c∈C
ve
eu
2.2
1.8
s (T) s (T)
5 10 15 5 10 15
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
On introduit également une nouvelle variable lp , ∀ p ∈ {1, 2, 3}, telle que lp = 1 si des céréales sont
r
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
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.
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
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
s
ée
1 1 1 ig 1
2 2 5 3
rr
3 4 5
co
4 6
5 7
n
no
Exercice 14 (Progressive)
eu
de produits possibles. La direction doit maintenant décider lesquels de ces quatre produits seront
Ép
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
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
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
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).
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
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
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.
0 0 1
CHAPITRE 4: RÉSOLUTION DE LA PROGRAMMATION LINÉAIRE : LE SIMPLEXE 48
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
s
ée
4.1.3 Opérations sur les matrices et vecteurs
ig
rr
co
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
+ =
3 4 2 2 5 6
r eu
Ép
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
Exemple : " #
h i 3
2 3 =2·3+3·1=9
1
Produit de 2 matrices
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
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
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).
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
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
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
• mRow(c,A,i) : cette commande renvoie la matrice A, dans laquelle la ligne Li est remplacée
r
Ép
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
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
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
3x1 + 2x2 + x3 = 8
x2 + x3 = 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
.. .. .. .. ..
ve
. . . . .
eu
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
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
En résumé
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 :
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
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.
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
Base HorsBase
eu
···
1 0 0 . . . b1
r
0 1 0 0 . . . b2
⇐⇒ Im |N|b
Ép
.. .. .. .. ..
. . . . . . . .
0 0 ··· 1 . . . bm
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
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
On veut transformer la colonne j en une colonne contenant un 1 sur la ligne j, et des 0 sur
eu
l L
Ép
à 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
s
ée
4.1.10 Calcul de la matrice inverse par Gauss-Jordan ig
i
rr
co
n
En d’autres termes,
l
A|I ∼ B|P =⇒ PA = B
r
Ép
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)
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.
s
ée
4.2.1 Définition du problème linéaire en forme standard
ig
rr
co
n
min ou max c1 x1 + c2 x2 + . . . cn xn = z
eu
s.a.c
r
Ép
min ou max cx = z
" #
c z
Ax = b ou :
A b
x≥0
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.
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
pour les variables hors base. Par contre, le problème de programmation linéaire correspondant n’est
eu
Afin de mettre le problème sous forme canonique, il suffira de substituer les expressions de x1
Ép
x1 = 2 −3x3 −x4
(4.7)
x2 = 1 −x3 −5x4
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
s
0 · xB = z − cB x̄B
ée
+cN xN
Im xB +NxN =b (4.9)
ig
x≥0
rr
co
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
" #
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.
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
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
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
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
min cx
r
Ax + Ie = b
Ép
x, e ≥ 0
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)).
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
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
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
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
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
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
x1 +e1 =4
+2x2 +e2 = 12 (4.10)
s
xi , ei ≥ 0
r eu
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.
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.)
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
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
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
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’
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.
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
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
n n!
=
m m!(n − m!)
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.
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
Région (4,3),z=27
d’admissibilité
0 x1
(0,0),z=0 (4,0),z=12
— 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
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
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
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
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
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
— 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
Voici la nouvelle forme canonique du problème avec les nouvelles variables de base : x1 , x2 , e1 :
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.
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
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.
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.
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
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
que cette nouvelle contrainte est équivalente à la contrainte suivante, et que a1 est l’équivalent d’une
r
Ép
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.
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
— 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
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).
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 :
s
ée
La solution optimale est atteinte. On est tou-
ig
rr
jours sur le point (x, y) = (0, 2), mais cette
co
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
— À 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
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
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
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
— 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
s
ée
ig
Exercice 19 (Cas particulier)
rr
co
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
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
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
87
CHAPITRE 5: INTERPRÉTATION MATRICIELLE DU SIMPLEXE ET ANALYSE DE
SENSIBILITÉ 88
s
ée
ig
rr
co
n
s no
ve
r eu
Ép
CHAPITRE 5: INTERPRÉTATION MATRICIELLE DU SIMPLEXE ET ANALYSE DE
SENSIBILITÉ 89
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 :
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
x1
2 +2x2 +x3 +e1 = 24
(5.3)
r
x1 , x2 , x3 , e1 , e2 ≥ 0,
−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
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
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
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
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.
x1 x3 x2 e1 e2 b
TI = e1 1/2 1 2 1 0 24
e2 1 4 2 0 1 60
−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
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 :
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
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̄ = 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 .
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
.. 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
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
à 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
Avec :
1 −cB B−1
B̃−1 =
0 B−1
CHAPITRE 5: INTERPRÉTATION MATRICIELLE DU SIMPLEXE ET ANALYSE DE
SENSIBILITÉ 96
s
13. B̃, B̃ −1
ée
ig
rr
5.2 Analyse de sensibilité
co
i
n
é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
— 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
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
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
L’objectif de l’analyse de sensibilité est donc de définir la plage de valeurs de bi pour laquelle la
r
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
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
0
La solution de base xB d’un problème reste optimale lors d’une modification δk du membre
eu
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 .
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
jectif ?
eu
z 0 = z + δ 1 π1
= 20 − 15 × 0 = 20
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
La valeur de la fonction-objectif cette fois change (car la contrainte 2 que l’on a translatée
no
z 0 = z + δ 2 π2
ve
eu
= 20 + 10 × (2) = 40
r
Ép
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.
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
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
change. Il devient le point C. La plage d’optimalité du point optimal initial correspond donc une
ve
Reprenons maintenant les conditions d’optimalité mentionnées au paragraphe 5.2, dans le cas
r
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.
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
c̄0j ≤ 0, ∀j
s
ve
— j = k : comme xk est dans la base, son coût marginal est nul par définition, il n’est pas
r
Ép
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 :
−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
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
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
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
5.3 Exercices
eu
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
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
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
la fonction-objectif ?
eu
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
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
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
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
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é) :
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.
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
• É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
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 :
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).
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
Par conséquent, si l’on peut trouver une solution primale x∗ telle que la solution duale
no
Soit x∗ la solution primale optimale et π ∗ la solution duale correspondante, elle est donc
r
Ép
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, π ∗ .
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
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 (π
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
Primal Dual
s
ve
min cx max bπ
eu
Ax ≥ b πA = c
r
Ép
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
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
• Modèle :
r
Ép
P
min cj xj
j∈A
P
aij xj ≥ bi ∀i∈V
j∈A
xj ≥0 ∀j∈A
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
s
Exemple :
ée
Soit le primal suivant : Son dual est :
ig
rr
max z = x1 +2x2 min w = 10y1 +20y2 +30y3
co
≥ 30
no
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
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
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.
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∗
bπ
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
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).
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 :
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
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
max z = x1 − x2
−2x1 + x2 ≤ 2
x1 − 2x2 ≤ 2
x1 + x2 ≤ 5
x1 , x2 ≥ 0
1. Dual
Écrivons le dual du problème :
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
π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
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 :
2x1 + x2 ≤ 2
x1 + 2x2 + x3 + 2x4 = 2
x2 , x 3 , x 4 ≥ 0
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
• x = (5, 20) x = ( 10 70
3 , 3 )
no
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
xi ≤ Ri ∀ i = 1 .. n
xi ≥ 0 ∀ i = 1 .. n
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
122
CHAPITRE 7: RÉSEAUX DE FLOTS 123
D E
— V = {A, B, C, D, E} est l’ensemble des sommets du graphe.
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
C entre en A.
— O(C) = {A, D, E}
A
— I(C) = {B}
B
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
A
B
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
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.
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.
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
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é.
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
X X
fij − fji = bi , ∀i∈N (7.2)
no
j∈O(i) j∈I(i)
s
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.
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
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
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
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 :
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
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
min cf
Ãf = b̃
f ≤u
f ≥0
CHAPITRE 7: RÉSEAUX DE FLOTS 129
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
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
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
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 :
— 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 :
— 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 :
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
s
i j
ée
8
ig
D E
rr
−6 −8
co
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
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
ensemble, c’est-à-dire que pour tout nœud i, l’ensemble des nœuds entrants I(i) et l’ensemble des
eu
π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 :
Dans le cas des arcs-variables de base, les coûts marginaux sont nuls, et par conséquent,
l’équation devient :
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.
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
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
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
Soit le réseau suivant, sur lequel les coûts (vert), demandes (rouge) et disponibilités (bleu) sont
eu
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
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
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
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
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
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
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
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 .
π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
cCE = cCE + πE − πC = 13
−6, 7 −8, 0
r
cDE = cDE + πE − πD = 19
Ép
cCD = cCD + πD − πC = 3
Tous les coûts sont positifs, la solution est optimale. La nouvelle valeur de la fonction-objectif
est z = −46.
— 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
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
D E
s
12,5
ve
−6 −8
eu
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
π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
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
D E L : cDC = cDC + πC − πD = 17
12,5,4
−6, 0 −8, 12 U : cAC = cAC + πC − πA = −5
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
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
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
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
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.
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
— Si oui : "Pousser" la plus grande quantité de flot possible à travers ce chemin. Réitérer à
ve
partir de l’étape 2.
eu
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
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.
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.
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 ∞
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
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
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
On a pris soin de ne pas inclure les arcs (2, 3) et (6, 7) qui introduisaient un cycle. Le coût
s
ve
7.8 Exercices
Ép
4
B D
5
10 0
20 15 -5
25 10
A C E
15 20 25 30 20
B D F
5 5
-10 -5 -15
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
i
3, ∞,0
n
E -30
no
B D turés.
ve
5, 25,20
10 0
r eu
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.
7
B D
6
9
4
A 3 F
7
2 9
C E
6
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
E
r
Ép
3 6
C 1 D
5 5
3 O 2
6 4
6
A B
— 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
A
R1 D
R2 B
E
R3 C
F
— 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
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
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
(Branch-and-Bound).
r
Ép
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
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
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
min ou max z = cx
Ép
Ax ≤b
x ≥ 0, x entiers
min ou max z = cx
Ax ≤b
x ≥ 0, x ∈ {0, 1}
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 :
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
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
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
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
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.
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
— Bounding : obtenir une estimation optimiste de la valeur optimale d’un sous-problème donné
r
— 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
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
É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
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
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
domaine L2 .
On représente la séparation sous la forme d’un arbre d’énumération :
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
x1 +x2 ≤6
5x1 +9x2 ≤ 45
r
Ép
x2 ≥4
x1 ≤1
x1 , x2 ≥0
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
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.
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.
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
supérieure (resp. inférieure) sera toujours constituée par la meilleure des solutions
ve
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.
Exemple
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
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
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
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.
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.
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
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}
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
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
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
∃ δ 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
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é.
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
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
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
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
y
r
Ép
4
z=117
z=162
z=189
3 Solution optimale
Domaine
1
admissible
1 2 3 4 x
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
df
n
(x0 ) = 0
no
dx
s
ve
r eu
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
df
dx (x0 ) =0
2
=⇒ x0 est un maximum local de f
d f
dx2 (x0 ) <0
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
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
s
ée
∂
f (x)
∂x
∂
1
ig
∂x f (x) n
∇f (x) = 2
,∀ x ∈ R
rr
···
co
∂
∂xn f (x)
n
Exemple :
no
" #
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.
Exemple :
∂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éfinie positive si :
s
ve
— semi-définie positive si :
Ép
xT Hx ≥ 0, ∀ x, vecteur de dimension (n × 1)
— définie négative si :
— 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
— 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
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 :
(
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.
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
Les théorèmes 9.3.1, 9.3.2, 9.3.3 se généralisent ainsi aux fonctions à plusieurs variables :
∇f (x0 ) = 0
x0 est un maximum local de f =⇒
∇2 f (x ) ≤ 0
0
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
appartenant à Bδ (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 :
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
Convexité et optimalité
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
Une fonction f est concave sur tout son domaine de définition si et seulement si sa matrice
ve
Une fonction f est strictement concave sur tout son domaine de définition si et seulement
r
On peut maintenant énoncer le théorème suivant exprimant une condition suffisante d’optimalité
pour les fonctions convexes ou concaves.
(
∇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
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
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.
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 :
h(x0 ) = 0
s
∃ λ ∈ Rn /
ée
ig
∇f (x0 ) = λT ∇h(x0 )
rr
m
co
P
= λi ∇hi (x0 )
i=1
n
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.
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
min f (x1 , x2 ) = x1 + x2
h(x1 , x2 ) = 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
Comme dans le cas de la programmation linéaire, on peut se demander ce qu’il se passe si l’on
eu
z = max f (x)
h(x) = 0
∃λ∗ (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
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
∗T ∗ ∗
∇b z(b) = λ(b) ∇x h(x (b))∇b x (b)
eu
b=0 b=0
r
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
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
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 :
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
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
Une autre possibilité (pas forcément plus simple !) est de décliner une version du théorème
no
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 :
−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 :
Par ailleurs, puisque ρ est positif, −ρT I dans 9.13 est négatif et 9.13 implique donc :
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
h(x0 ) = 0
g(x0 ) ≤ 0
−x0 ≤ 0
µT g(x0 ) = 0
ρT − (x0 ) = 0
λ, µ ≥ 0
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
2x1 + x2 ≤ 3
s
x1 , x2 ≥ 0
ve
eu
É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
" #
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
f (x, y) = 4 + x3 + y 3 − 3xy
s
ée
ig
rr
co
n
s no
ve
eu
Déterminer la nature de chacun des points critiques de la fonction, et préciser s’ils sont locaux ou
globaux.
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
s
ée
ig
rr
co
n
s no
ve
r eu
Ép
Bibliographie
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