Vous êtes sur la page 1sur 80

UNIVERSITE DU LITTORAL COTE D’OPALE

Master 1 “Économie et Gestion de l’Environnement et du Développement Durable”

Méthodes quantitatives
appliquées à l’environnement I.

Daniel DE WOLF.

Dunkerque, Septembre 2006


Table des matières

I Introduction à la modélisation mathématique 5

1 Introduction 7
1.1 Objectifs du cours . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2 Parties du cours . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3 La notion de matrice . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4 Calcul matriciel . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2 Les notions de graphe, de flot et de réseau. 19


2.1 Un exemple de transport . . . . . . . . . . . . . . . . . . . . . . 19
2.2 Notion de graphe . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3 Notion de flot . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3 Formulation en modèles d’optimisation. 27


3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2 Formulation des problèmes linéaires . . . . . . . . . . . . . . . . 27
3.3 Formulation des problèmes en nombres entiers . . . . . . . . . . 30
3.3.1 Problèmes avec coût fixe . . . . . . . . . . . . . . . . . . 30
3.3.2 Mélange avec nombre limité d’ingrédients . . . . . . . . 31
3.3.3 Choix parmi un nombre discret de valeurs . . . . . . . . . 32
3.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3
4 Table des matières

II Méthodes d’optimisation 35

4 Résolution des modèles linéaires 37


4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.2 Résolution graphique des problèmes à deux variables . . . . . . . 37
4.3 Principe de l’algorithme du Simplexe . . . . . . . . . . . . . . . 41
4.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

5 Résolution des modèles non linéaires. 45


5.1 Conditions de Kuhn et Tucker . . . . . . . . . . . . . . . . . . . 45
5.2 Application au calcul d’équilibre de l’utilisateur . . . . . . . . . . 48
5.3 La méthode de Frank-Wolfe . . . . . . . . . . . . . . . . . . . . 49
5.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

6 Résolution des modèles en nombres entiers 55


6.1 Méthode de “branch and bound” . . . . . . . . . . . . . . . . . . 55
6.2 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

III Résolution au moyen du solveur d’Excel 61

7 Le solveur d’EXCEL. 63
7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
7.2 Les rapports du solveur . . . . . . . . . . . . . . . . . . . . . . 68
7.2.1 Le rapport des réponses . . . . . . . . . . . . . . . . . . 68
7.2.2 Le rapport de sensibilité . . . . . . . . . . . . . . . . . . 69
7.2.3 Le rapport des limites . . . . . . . . . . . . . . . . . . . 70
7.3 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

8 Étude de cas 1 : la collecte de bouteilles 73


8.1 Énoncé du problème . . . . . . . . . . . . . . . . . . . . . . . . 73

9 Étude de cas 2 : le transport routier 77


Partie I
Introduction à la modélisation
mathématique

5
Chapitre 1

Introduction

1.1 Objectifs du cours

L’objectif de ce cours est double. Il s’agit, d’une part, de donner une introduction
à la modélisation mathématique, outil couramment utilisé en gestion de l’eau,
en gestion des transports (voir cours de Master 2). Il s’agit, d’autre part, de voir
quelques méthodes de résolution de ces modèles principalement en ce qui concerne
les modèles linéaires et les modèles non linéaires.
Nous introduirons la notion de modèle mathématique d’optimisation. On fait
face à ce type de modèle lorsqu’il y a des actions à prendre en vue de minimiser ou
maximiser un objectif en respectant un certain nombre de contraintes. Prenons un
exemple. En traitement des déchets ménagers, on peut vouloir minimiser le coût
de traitement de ces déchets tout en respectant un certain nombre de contraintes
environnementales (normes sur la qualité de l’air rejeté, proportion maximum de
déchets non recyclé, etc...). Les actions à prendre peuvent être représentée par les
quantités de déchets envoyées aux différentes filières (recyclage, enfouissement,
incinération, etc...).
En ce qui concerne les technique d’optimisation, nous nous limiterons à exposer
quelques techniques qui concernent :

• les problèmes linéaires que l’on rencontre lorsque toutes les relations mathé-
matiques du modèle sont purement linéaires;

• les modèles non linéaires que l’on rencontre lorsque soit la fonction objectif,
soit au moins une contrainte est non linéaire.

• les modèles en nombres entiers que l’on rencontre lorsque les variables de
décisions doivent être entières (par exemple, pour modéliser des décisions
d’investissement du type tout ou rien).

7
8 Chapitre 1. Introduction

1.2 Parties du cours

Le cours est divisé en trois parties.


La première sera consacrée à des notion de modèle mathématique. Nous
introduirons quelques outils mathématiques qui seront utiles pour comprendre
certaines parties plus techniques dans la suite du cours. On fera un rappel de
la notion de matrice qui est utilisée, notamment en gestion des transports pour
représenter la demande de transport sous la forme d’une matrice origine destina-
tion. On rappellera également la notion de graphe qui est utilisée, notamment en
gestion des transports pour représenter l’offre, c’est-à-dire le réseau de transport.
Nous verrons ensuite comment formuler un problème d’optimisation : on
parle de problème d’optimisation lorsque que l’on veut déterminer les valeurs de
variables de décision en vue de maximiser ou minimiser une fonction objectif tout
en respectant un certain nombre de contraintes. Un exemple classique est celui de la
détermination pour une entreprise des quantités à produire de ses différents produits
en vue de maximiser son profit tout en respectant les contraintes de capacité de ses
ateliers et de satisfaction de la demande de ses clients.
La deuxième partie sera consacrée à une introduction à la résolution des
modèles d’optimisation.
Nous verrons dans cette partie que si le problème d’optimisation est linéaire
(objectif et contraintes purement linéaires), et qu’il ne comporte que deux variables
de décision, il peut être résolu de manière purement graphique. S’il y a plus de
deux variables de décision, il faut recourir à l’algorithme du Simplexe dont nous
donnerons le principe.
En ce qui concerne les modèles non linéaires, il y a de nombreux algorithmes
en fonction du type de problème non linéaire à résoudre. Nous nous limiterons
au cas de problèmes à objectif non linéaire et à contraintes linéaires pour lequel il
existe un algorithme adapté : l’algorithme de Frank-Wolfe. Comme la plupart des
algorithmes non linéaires, il s’agit d’un algorithme itératif ayant à chaque itération
deux étapes : le calcul d’une direction de descente (en cas de minimisation) de la
fonction, ensuite une recherche unidimensionnelle le long de cette direction.
En ce qui concerne les modèles en nombre entiers, nous présenterons la mé-
thode de branch and bound.
Enfin, la troisième partie du cours sera consacrée à l’utilisation du solveur
d’Excel pour résoudre des problèmes d’optimisation en environnement. Nous
verrons notamment le problème de la gestion des déchets, de l’optimisation des
ressources en eau et du transport de marchandises, trois modèles utilisés dans les
cours de Master 2.
Section 1.3. La notion de matrice 9

1.3 La notion de matrice

Une matrice est un outil mathématique très pratique sur le plan des calculs. Une
matrice est un tableau de nombres sur lequel des opérations peuvent être effectuées.

Définition 1.1 Une matrice de genre (m × n) dans R est un tableau rectangulaire


de m lignes et n colonnes de nombres réels.

Elle est notée de la manière suivante :


 
 a11 a12 . . . a1n 
 

 a21 a22 . . . a2n 

 . (1.1)
 
 ... ... ... ... 
 
 
am1 am2 . . . amn

Définition 1.2 Le coefficient aij de la matrice l’élément du tableau en position


(i, j), à l’intersection de la ième ligne et de la j ème colonne.

Ainsi, par exemple, la matrice suivante :


   
 a11 a12   2 1 
   
   
 a21 a22  =  3 6 
   
   
a31 a32 4 5

est une matrice de genre (3, 2), c’est-à-dire qu’elle comporte 3 lignes et 2 colonnes.
Il y a deux façons de spécifier une matrice : la définition sous forme extensive
et la définition sous forme compréhensive. La forme extensive consiste à décrire
explicitement la matrice en tant que tableau rectangulaire de nombres, en mettant
un nombre ou un symbole pour chacun de ses coefficients. La matrice (1.1) illustre
cette forme.
Dans la définition sous forme compréhensive, on indique d’abord le symbole
utilisé pour représenter la matrice dans sa totalité, celui utilisé pour représenter
un élément quelconque, de ligne i et colonne j, enfin le genre de la matrice, en
indiquant les valeurs possibles des indices. Par exemple, on définit la matrice A
suivante :
A = {aij }i=1,2,...,m; j=1,2,...,n . (1.2)
Une formule accompagne cette description pour expliciter l’élément en fonction
de son indice de ligne et de colonne. Un cas remarquable est celui de la matrice
10 Chapitre 1. Introduction

identité. On la désigne par la notation I n . Il s’agit d’une matrice carrée d’ordre n


qui comporte des zéros partout sauf sur sa diagonale principale où les coefficients
sont égaux à un :  
 1 0 ... 0 
 

 0 1 ... 0 

In =  .
 
 ... ... ... ... 
 
 
0 0 ... 1
Une définition sous forme compréhensive la matrice identité est la suivante :
I n = {δij }i=1,...,n; j=1,...,n ,
où δij désigne l’indice de Kronecker qui est défini de la manière suivante :


 1 si i = j,
δij = 
 0 sinon.

Voyons maintenant quelques cas particuliers importants.

1. Si n = 1, c’est-à-dire si on a une seule colonne, on parle dans ce cas de


vecteur colonne. C’est, par exemple, le cas du vecteur x suivant :
 
x1 
x=
 .
x2

2. Si m = 1, c’est-à-dire si on n’a qu’une seule ligne, on parle de vecteur


ligne. C’est le cas, par exemple, du vecteur y suivant :

y= y1 y2 .

Lorsqu’on ne précise pas qu’un vecteur est un vecteur colonne ou ligne,


on convient de considérer qu’il s’agit d’un vecteur colonne. On parle du
nombre de composantes d’un vecteur plutôt que du nombre de ses éléments.
D’un vecteur qui a n composantes, on dit qu’il est de dimension n.
3. Dans le cas où m = n, on parle pour une raison évidente de matrice carrée :
le tableau rectangulaire représentant la matrice devient en effet dans ce cas
un carré. Plutôt que de dire d’une matrice carrée qu’elle est de genre (n×n),
on dit qu’elle est d’ordre n.
4. Dans le cas où m = n = 1, on a donc une matrice qui se réduit à un seul
coefficient réel : on parle dans ce cas de scalaire.
Section 1.4. Calcul matriciel 11

1.4 Calcul matriciel

Addition de deux matrices :

La motivation pour l’étude d’une telle opération sur les matrices est de pouvoir,
dans un modèle d’affectation du trafic, additionner les demandes de différents
groupes d’utilisateurs se déplaçant sur un même réseau. Ainsi, on additionnera, par
exemple, les matrices origine-destination des voitures particulières et des camions.

Définition 1.3 Deux matrices sont dites de même genre, si elles ont le même
nombre de lignes et de colonnes.

Définition 1.4 Pour deux matrices de même genre, A (m × n) et B (m × n), on


définit la somme des deux matrices comme une troisième matrice de même genre
(m × n), notée C. Elle est obtenue en additionnant les termes occupant des places
identiques dans les deux matrices A et B. On note

C = A + B,

avec
cij = aij + bij .

Exemple 1.1 Calculer :


   
2 3 −1   −3 5 2 
C=
 + .
4 −2 7 6 1 4

Solution :
   
2−3 3 + 5 −1 + 2  −1 8 1 
C=
  =

.
4 + 6 −2 + 1 7+4 10 −1 11

On remarquera qu’une des conséquences de la définition d’addition de matrices


est que cette opération est commutative, c’est-à-dire que :

A + B = B + A.
12 Chapitre 1. Introduction

Multiplication par un scalaire :

La motivation pour l’étude d’une telle opération sur les matrices est de pou-
voir, dans un modèle d’affectation du trafic, tenir compte d’une augmentation
générale de la demande de déplacements. Cela se traduira, pour la matrice origine-
destination par la multiplication par un scalaire.
Une autre motivation possible pour l’étude d’une telle opération est la trans-
formation d’une matrice origine-destination représentant la demande de transport
de camions en une matrice origine-destination d’équivalents voitures particulières.
Comme un camion représente l’encombrement de plusieurs voitures sur la voirie,
on multiplie chaque élément de la matrice camions par un scalaire (par exemple,
un camion est l’équivalent de 7 voitures).

Définition 1.5 La multiplication d’une matrice A par un scalaire α ∈ R donne


une matrice B, de même genre dont chaque élément est l’élément correspondant
de A multiplié par le scalaire.

Autrement dit :
B = αA,
avec
bij = αaij .
Exemple :    
1 2 7  2 4 14 
2
 

= .
−3 8 15 −6 16 30

La transposition d’une matrice :

La motivation pour l’étude d’une telle opération sur les matrices est de pouvoir,
dans un modèle d’affectation du trafic, passer de la demande d’heure de pointe
du matin à la demande d’heure de pointe du soir. Comme généralement les gens
retournent chez eux le soir, la matrice origine-destination du soir est la transposée
de celle du matin.

Définition 1.6 La matrice transposée d’une matrice A de genre (m × n) est une


matrice à n lignes et m colonnes, notée AT où l’élément en position (i, j) est aji

Autrement dit :
AT = {aij T },
Section 1.4. Calcul matriciel 13

avec
aij T = aji .
Exemple :  
3 −2   

  3 4 8 
  
A= 
 4 5 

AT =  .
  −2 5 −1
8 −1

Définition 1.7 Une matrice carrée A d’ordre n est dite symétrique si

∀i, j : aij = aji .

Ce qui peut encore se noter matriciellement par

A = AT .

L’interprétation sur le tableau est que les éléments situés symétriquement par rap-
port à la diagonale principale doivent être identiques.

Produit scalaire de deux vecteurs :

La motivation pour l’étude d’une telle opération est la suivante. Si cj est le coût
unitaire de transport d’une tonne de produit j et xj est le nombre de tonnes de
produit j transportées, le coût total de transport z se calcule comme suit :

n
z= cj xj = cT x.
j=1

Définition 1.8 Soient x et y, deux vecteurs colonnes de dimension n. Le produit


scalaire de x par y est défini comme la somme des produits des éléments occupant
des places identiques dans les deux vecteurs :

n
xT y = xi yi . (1.3)
i=1

En notation matricielle, on peut écrire le produit scalaire de la manière suivante :


 
y1
 
  y2 
 
x1 x2 . . . xn 



= x1 y1 + x2 y2 + . . . + xn yn .
 ... 
yn
14 Chapitre 1. Introduction

On vérifie bien, dans la notation reprise ci-dessus, que le ième élément du vecteur
ligne xT est multiplié par le ième du vecteur colonne y et qu’ensuite on effectue la
somme de ces produits. Il est à noter que cette opération peut être effectuée grâce
à la fonction SOMMEPROD d’EXCEL.

Exemple 1.2 Calculer de produit scalaire de :


   
3 1
   
 2   2 
   
x=  , y=  .
 1   4 
   
1 1

Solution : on a alors le produit scalaire suivant :

xT y = 3 · 1 + 2 · 2 + 1 · 4 + 1 · 1 = 12.

Remarquons que le produit scalaire est une opération commutative. En effet :



n
n
xT y = xi yi = yi xi = y T x.
i=1 i=1

Le produit matriciel :

La motivation pour l’étude d’une telle opération sur les matrices est de pou-
voir, dans un modèle d’affectation du trafic, faire des changements non uni-
formes de la matrice origine-destination. Par exemple, une augmentation du
nombre de véhicules quittant une zone ou arrivant dans une zone se traduit par
la prémultiplication ou la postmultiplication de la matrice origine-destination par
une matrice différente de la matrice identité par un seul élément diagonal.

Définition 1.9 Considérons deux matrices A et B de genre (m × n) et (n × p)


avec
   
 a11 a12 . . . a1n   b11 b12 . . . b1p 
   

 a21 a22 . . . a2n 


 b21 b22 . . . b2p


A=

 et
 B=

.

 ... ... ... ...   ... ... ... ... 
   
   
am1 am2 . . . amn bn1 bn2 . . . bnp

Le produit matriciel
C = AB
Section 1.4. Calcul matriciel 15

est une matrice C de genre (m × p) qui se calcule comme suit :


 
 c11 c12 . . . c1p 
 

 c21 c22 . . . c2p 

C=

,

 ... ... ... ... 
 
 
cm1 cm2 . . . cmp

avec l’élément cij qui est le produit scalaire de la ligne i de A par la colonne j de
B: n
cij = aik bkj .
k=1

On a visualisé, à titre d’exemple, dans les matrices A et B, les coefficients


concernés par le calcul du coefficient c21 . Il est obtenu en faisant le produit scalaire
de la deuxième ligne de A (i = 2) par la première colonne de B (j = 1).

Exemple 1.3 Calculez C = AB, où les matrices A et B sont données par :
 
2 1  
2 1
A= 3 6 

 B=
1 3
4 5

Solution : la matrice C est calculée comme suit :


     
2 1   2·2+1·1 2·1+1·3 5 5
  2 1    
AB =  3 6  =  3 · 2 + 6 · 1 3 · 1 + 6 · 3  =  12 21  .
1 3
4 5 4·2+5·1 4·1+5·3 13 19

Une autre motivation possible pour l’étude du produit matriciel est la suivante.
Notons A la matrice donnant le nombre de routes directes entre les villes a1 , a2 , a3 ,
d’une part, et les villes b1 , b2 , d’autre part (voir figure 1.1). Notons B la matrice
donnant le nombre de routes directes entre les villes b1 , b2 , d’une part, et les villes
c1 , c2 , , c3 d’autre part.
On a donc que :
 
1 0   

  1 1 0 
 
A=  1 1  B=
 .
 
  0 1 1
0 1
16 Chapitre 1. Introduction

a c
b
a c
b
a c

Figure 1.1: Illustration du produit matriciel.

Calculons le produit matriciel :


   
1 0   1 1 0
  1 1 0  
AB =  1 1  =  1 2 1 .
0 1 1
0 1 0 1 1

On constate que ci k donne le nombre de routes liant ai à ck en passant par une des
deux villes intermédiaires b1 ou b2 .
Voyons maintenant un cas particulier important. Il s’agit du cas où p = 1.
C’est le cas où l’on multiplie une matrice (m × n) par un vecteur. Le membre de
gauche d’un système d’équations linéaires rentre dans cette catégorie. En effet, le
système 

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






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



 ... ... ... ... ... ...




 am1 x1 +am2 x2 . . . +amn xn = bm
peut se noter matriciellement de la manière suivante :
    
 a11 a12 . . . a1n   x1   b1 
    

 a21 a22 . . . a2n   
  x2 

 b2 

   =  ,
    
 ... ... ... ...   ...   ... 
    
    
am1 am2 . . . amn xn bm

ou encore
Ax = b.

Enfin signalons que, contrairement au produit de réels, le produit de matrices


est une opération non commutative. En général, AB = BA.
Section 1.5. Exercices 17

1.5 Exercices

1.1. Transposition d’une matrice. Calculez la transposée des matrices sui-


vantes :
   
 2 5   1 3 1 
   
   
 1 −1 
A= ;B =  2 6 7 ;C =
  1 5 6 2 .
   
3 2 4 1 5

1.2. Le produit matriciel est non commutatif. Calculez les produits AB et


BA pour les matrices suivantes :
 
  5 1 

1 2 3   
  
A=   et B= 
 6 −2 

.
3 2 1  
−3 1

Quelle conclusion en tirez-vous ?


1.3. Multiplication par un scalaire. Calculez D = AB T + αC T avec
   
 
 −2   1 0 2 
 2     
  

 
  0  1  4 7 0 

A= 
 −1 

, B=

,
 α= et C = 

.

  1  2  3 −2 6 
   
3    
43 −1 5 1

1.4. Écriture en forme extensive. Écrire sous sa forme extensive la matrice


X = {xij }i=1,...3;j=1,...3 , où


 1
i+j
si i < j,
xij = 
 δij si i ≥ j.

Dans cette dernière expression, δij est l’indice de Kronecker (utilisé dans la
définition de la matrice identité) :


 1 si i = j,
δij = 
 0 sinon.
18 Chapitre 1. Introduction

1.5. Utilité du produit matriciel. Considérons le réseau ferroviaire de transport


régional du brabant flamant illustré à la figure 1.2. On y a également attribué
un numéro à chacune des villes pour faciliter l’écriture de la matrice.

Anvers(1) Herentals(7)

Liers(6)

Malines(2) Aarschot(5)

Leuven(4)

Bruxelles(3)

Figure 1.2: Utilité du produit matriciel.

(a) Représenter par la matrice A le nombre de liaisons directes (sans gare


intermédiaire) entre la ville i et la ville j.
(b) La matrice A est-elle symétrique ? Justifiez brièvement.
(c) Calculer A2 = AA.
(d) Donner l’interprétation de A2 .
Chapitre 2

Les notions de graphe, de flot et de réseau.

2.1 Un exemple de transport

Nous allons introduire la notion de graphe ainsi que la notion de flot sur un graphe
sur un exemple de transport non routier. Cet exemple va également nous permettre
d’introduire le concept de modèle d’optimisation. Considérons le problème d’une
société locale de transport de gaz dans une région comme la région du Nord.
Les données du problème utilisées ici sont purement fictives. En effet, seule la
société de transport, en l’occurrence, Gaz de France, dispose de ces informations
stratégiques que sont, par exemple, la consommation de ses gros clients industriels.
Supposons donc que la région du Nord soit alimentée en gaz naturel, d’une
part, par des importations de gaz arrivant par bateaux au terminal de Dunkerque,
et, d’autre part, par des importations de gaz norvégien et néerlandais qui arrivent
par gazoducs terrestres via la Belgique de Mons ou de Tertre (voir figure 2.1). Le
tableau 2.1 reprend les quantités injectées dans le réseau en ces différents points
d’offre.

Point Offre
Dunkerque 110
Mons 60
Tertre 0
Tableau 2.1: Quantités offertes.

Du côté demande, la société de transport doit satisfaire la demande domestique


d’une part (chauffage, cuisson, ...etc.), ainsi que la demande de grosses industries,
particulièrement les industries chimiques qui sont de grosses consommatrices de
gaz dans leur processus de fabrication. Les 4 grandes agglomérations et/ou centres
industriels importants de la région sont Lille, Lens, Denain et Valenciennes. Leurs
demandes journalières cumulées pour les secteurs domestique et industriel sont

19
20 Chapitre 2. Les notions de graphe, de flot et de réseau.

reprises au tableau 2.2.

Ville Demande journalière


Lille 60
Valenciennes 50
Lens 40
Denain 20
Tableau 2.2: Quantités demandées.

Pour acheminer le gaz depuis les points d’entrée dans le réseau régional jus-
qu’aux clients, Gaz de France dispose d’un réseau de gazoducs comparables au
réseau d’autoroutes liant les grands centres de la région entre eux. Le réseau est
représenté schématiquement à la figure 2.1.

0
Dunkerque
110 60 Lille |20| Tertre
|70| 0
60
0
50 |50| |20| |20| Valenciennes 60
0 60 Mons
|70|
Lens 10
|20| |40|
10 50
40
Denain

20
Figure 2.1: Représentation des principaux gazoducs.

Chacun de ces gazoducs a une capacité maximum que l’on a représentée à


la figure 2.1 par la quantité notée |c| le long de l’arc correspondant au gazoduc.
Par exemple, la capacité journalière maximum pour le gazoduc liant Dunkerque
à Lens est de 50. On a également repris le plan actuel d’exploitation du réseau,
c’est-à-dire l’ensemble des prélèvements et des flux de gaz dans le réseau. Par
exemple, on prélève 110 à Dunkerque dont 50 sont envoyés vers Lens et 60 vers
Lille. Le gazoduc de Lille vers Lens n’est pas utilisé.
Supposons maintenant qu’on enregistre une augmentation de la demande.
Comment la société se demande jusqu’à quel niveau de demande totale elle pourra
faire face avec le réseau actuel ? Nous allons voir comment formuler mathémati-
Section 2.2. Notion de graphe 21

quement ce problème. Pour cela, nous allons introduire le concept mathématique


de graphe qui permet de représenter le réseau.

2.2 Notion de graphe

Définition 2.1 Un graphe est défini comme la paire G = (N, A) ou N note un


ensemble de nœuds et A un ensemble de couples (i, j), appelés arcs, avec i ∈ N
et j ∈ N .

Dans l’exemple, chaque ville représente un nœud du réseau. Le tableau 2.3


reprend la liste des nœuds du réseau.

i Ville correspondante
1 Dunkerque
2 Lille
3 Lens
4 Tertre
5 Mons
6 Valenciennes
7 Denain
Tableau 2.3: Nœuds du réseau.

On a donc que :
N = {1, 2, 3, 4, 5, 6, 7}
Les arcs sont les gazoducs liant deux nœuds. Par exemple, si on attribue des
numéros comme indiqué à la figure 2.2 aux arcs, on peut décrire les arcs directement
comme au tableau 2.4.

Arc De A (i, j)
1 Dunkerque Lille (1, 2)
2 Dunkerque Lens (1, 3)
3 Lille Lens (2, 3)
4 Tertre Lille (4, 2)
5 Lille Valenciennes (2, 6)
6 Mons Valenciennes (5, 6)
7 Valenciennes Denain (6, 7)
8 Lens Denain (3, 7)
Tableau 2.4: Arcs du réseau.
22 Chapitre 2. Les notions de graphe, de flot et de réseau.

On a donc que :
A = {(1, 2), (1, 3), (2, 3), (4, 2), (2, 6), (5, 6), (6, 7), (3, 7)}

Dunkerque
1 arc 1 Lille
arc 4
4 Tertre
2
arc5
arc2 arc 3
Valenciennes
5 Mons
6
arc 6
Lens 3 arc 7

arc 8
7
Denain

Figure 2.2: Représentation du réseau via un graphe

2.3 Notion de flot

Nous allons maintenant introduire la notion de flot. Dans chaque arc, on va faire
circuler un flux, c’est-à-dire une quantité par unité de temps. Dans notre exemple,
il s’agissait de la quantité de gaz circulant par jour du nœud i au nœud j. On note
par fij cette quantité qui traverse l’arc (i, j) par unité de temps.
fij
i j

Figure 2.3: Notion de flux dans un arc


N’importe quel ensemble de quantités fij n’est pas acceptable. Il faut que ces
flux respectent :
• la conservation du flux en chaque nœud de N ,
• la capacité de l’arc en chaque arc de A.
Appliquons ceci à l’exemple que nous allons formuler comme un modèle d’op-
timisation. Comme variables de décision, désignons par :
fij , le flux journalier de gaz de i à j, ∀(i, j) ∈ A,
Oi , le prélèvement de gaz au nœud i, ∀i ∈ N,
Dj , la demande de gaz au nœud j, ∀j ∈ N.
Section 2.3. Notion de flot 23

Les contraintes du problèmes sont de deux types :

• Les contraintes de conservation aux nœuds expriment que ”tout ce qui entre
au nœud” est égal à ”tout ce qui sort”. On peut écrire, pour l’exemple, que :

O1 = f12 + f13
f12 + f42 = f23 + f26 + D2
f13 + f23 = f37 + D3
O4 = f42
O5 = f56
f26 + f56 = D6 + f67
f37 + f67 = +D7

En général, on peut écrire la relation suivante au nœud i (voir figure 2.4) :



fij + Di = fki + Oi (2.1)
j|(i,j)∈A k|(k,i)∈A

Oi

k j
fki i fij

Di

Figure 2.4: Conservation au nœud i

• Les contraintes de capacité des arcs s’expriment simplement comme :

f12 ≤ 70 f37 ≤ 20
f13 ≤ 50 f42 ≤ 20
f23 ≤ 20 f56 ≤ 70
f26 ≤ 20 f67 ≤ 40

En général, si cij note la capacité de l’arc (i, j), c’est-à-dire le flux maximum
qui peut traverser l’arc et semblablement, et si bij note la borne inférieure
(éventuelle) sur ce flot de sorte que l’on a :

bij ≤ fij ≤ cij (2.2)


24 Chapitre 2. Les notions de graphe, de flot et de réseau.

Remarquons qu’une façon de ne pas devoir définir les variables d’offre et de


demande est de relier tous les nœuds d’offre à un nœud fictif 0 qui sera l’entrée
dans le réseau et de relier tous les nœuds de demande à un nœud de sortie n + 1.

0
110
0
Dunkerque 60
1 60 Lille 0 4
2
Tertre
50 0
Valenciennes
6 5 Mons
60
Lens 3 10 10
Denain
40 50
60 7
20

Figure 2.5: Représentation du réseau avec arc de retour.

Comme la somme des entrées doit être égale à la somme des sorties, on peut
relier le nœud de sortie n + 1 au nœud d’entrée 0 par un arc de retour (n + 1, 0).

Définition 2.2 On appelle flot l’ensemble des flux d’arcs s’ils respectent :

• en chaque nœud i ∈ N , l’équation de conservation (2.1)

• en chaque arc (i, j) ∈ A, les inéquations de capacité (2.2).

Le flux traversant l’arc de retour est appelé le flot total traversant le réseau.

Dans l’exemple, le but était de déterminer le flux maximum qui pouvait traverser
le réseau. Aussi peut-on écrire l’objectif suivant :

max z = f80
Section 2.4. Exercices 25

2.4 Exercices

2.1. Amélioration d’un réseau routier. On prévoit une augmentation du trafic


entre les villes A et F (voir tableau 2.5). On veut déterminer le flot maximum
que le réseau routier actuel peut supporter entre les deux villes.

Arc Origine Destination Capacité


1 A B 3
2 A C 7
3 C B 2
4 C D 2
5 B D 4
6 C E 4
7 E D 2
8 D F 6
9 E F 5
Tableau 2.5: Capacités et flux actuels d’un réseau routier.

(a) Représenter le réseau sous forme d’un graphe. Compléter le graphe de


manière à y faire apparaı̂tre le flot total.
(b) Formuler le problème de la détermination du flot maximum.
(c) Représenter les équations de conservation sous forme matricielle Ax =
b. Qu’a de particulier la matrice A des coefficients ?

2.2. Migration entre la banlieue et le centre ville. Le trafic matinal entre une
banlieue dortoir (nœud 1) et le centre ville (nœud 9) est illustré à la figure 2.6.
On a représenté le trafic actuel ainsi que la capacité maximum de chacune

|500| 5 400 |450|


500 0 |200|
200
|100| 550 750
2 100 100 |100| 7 8 9
|700| |750|
350
|100| |700|
600 4 200 300
|700| 350 100 |200| |400|
|500| |100|
1 6
100 |150|
500 |500|
|500| 3 400

Figure 2.6: Migration entre banlieue et capitale.


26 Chapitre 2. Les notions de graphe, de flot et de réseau.

des routes (chiffres entre barres). On demande si l’on peut augmenter le


trafic entre 1 et 9 et la valeur de ce trafic maximum. Formuler le problème.
2.3. Gestion de la chaı̂ne d’approvisionnement. Le responsable logistique
d’un producteur de voitures allemandes doit répondre à une augmentation
des exportations en direction des États-Unis. Les voitures sont produites à
Stuttgart et de là sont transférées par train vers un des trois ports de départ.
Le tableau 2.6 reprend les capacités exprimées en moyenne par jour. Par
exemple, pour Rotterdam, un train de 150 voitures maximum arrive tous
les trois jours. Ce qui correspond à une capacité journalière de transport
de 50 voitures. De ces trois ports, les véhicules sont transportés par ba-

Départ arrivée capacité journalière


Stuttgart Rotterdam 50
Bordeaux 70
Lisbonne 40
Tableau 2.6: Capacités de transport par train

teau vers les ports d’arrivée aux États-Unis. Les capacités journalières de
transport par bateau sont données au tableau 2.7. Une barre dans ce tableau
indique que le transport est impossible. Enfin, depuis les ports d’arrivés, les

Départ vers New-York vers New-Orléans


Rotterdam 60 -
Bordeaux 40 50
Lisbonne - 30
Tableau 2.7: Capacités de transport par bateau

voitures sont transportées vers Los Angeles, le centre de distribution local


par camions. Les contrats journaliers de transport prévoient des quantités
maximum données au tableau 2.8. Quel est le flot maximum de voitures qui

Départ contrat vers Los Angeles


New-York 80
New-Orléans 70
Tableau 2.8: Capacités de transport par camion

peuvent en flux journalier arriver à Los Angeles en partant de Stuttgart.


(a) Représenter le problème sur un graphique de réseau.
(b) Formuler le problème.
Chapitre 3

Formulation en modèles d’optimisation.

3.1 Introduction

On parle de problèmes linéaires lorsque l’on veut minimiser une fonction linéaire
sous des contraintes purement linéaires.
On appelle programmes en nombres entiers les modèles comportant une
fonction objectif et des contraintes linéaires et des variables astreintes à des valeurs
entières. Si certaines variables du modèle sont continues et d’autres en nombres
entiers, on parle de programmation mixte entière. Enfin, un cas particulier très
fréquent de programmes en nombres entiers est celui où les variables ne peuvent
prendre que les valeurs 0 ou 1 : on parle alors de programmation zéro/un.
Comme nous le verrons à la section 3.3, la classe d’application des modèles
en nombres entiers est plus large que l’on ne le pense. Il y a certes les problèmes
où soit les quantités de facteurs mises en œuvre sont indivisibles (comme les per-
sonnes), soit les quantités produites sont indivisibles et en petite quantité (comme
la production d’avions). Mais, il y a toute une série de modèles où l’introduction
des variables zéro/un permet de modéliser des décisions d’investissement du type
tout ou rien.

3.2 Formulation des problèmes linéaires

Nous prenons un exemple tiré de Hillier et Lieberman [8]. Il s’agit d’une entreprise
de fabrication de chassis qui envisage la production de deux nouveaux modèles
au moyen des capacités résiduelles de ses trois ateliers. Il s’agit respectivement
d’un chassis en aluminium et d’un chassis en bois. Le premier produit nécessite
le passage dans le premier atelier pour fabriquer le cadre en aluminium et dans le
troisième atelier où le verre est monté sur le chassis. Tandis que le second produit
nécessite le passage dans le deuxième atelier pour fabriquer le cadre en bois et

27
28 Chapitre 3. Formulation en modèles d’optimisation.

dans le troisième atelier où le verre est monté sur le chassis. Les marges unitaires,
les temps de fabrication de chacun des produits dans chacun des ateliers ainsi que
les capacités hebdomadaires résiduelles de ces ateliers sont donnés au tableau 3.1.

Produit 1 Produit 2 Capacité disponible


(heures/produit) (heures/produit) (heures/semaine)
Atelier 1 1 0 4
Atelier 2 0 2 12
Atelier 3 3 2 18
Marge 3$ 5$

Tableau 3.1: Marges, temps d’usinage et capacités.

La question qui se pose est la suivante : “Combien faut-il produire de chassis


de chaque type par semaine pour maximiser le profit net ?”
La formulation d’un problème d’optimisation comporte toujours les trois étapes
suivantes :

1. choix des variables du modèle;

2. formulation de l’objectif;

3. formulation des contraintes.

La première étape consiste à choisir les variables du problème.

Définition 3.1 On appelle variable toute quantité utile à la résolution du problème


dont le modèle doit déterminer la valeur.

Cette définition permet de différencier les variables des paramètres, qui sont des
données qui peuvent varier, par exemple d’une période à l’autre ou d’un scénario
à l’autre. Ici les quantités que le modèle doit déterminer sont les productions de
chassis par semaine. Notons donc :

x1 = nombre de chassis de type 1 produits par semaine,


x2 = nombre de chassis de type 2 produits par semaine.

La deuxième étape consiste à formuler mathématiquement l’objectif.


Section 3.2. Formulation des problèmes linéaires 29

Définition 3.2 On appelle fonction objectif d’un problème d’optimisation le cri-


tère de choix entre les diverses solutions possibles.

Ici l’entreprise désire maximiser son profit net. La marge étant de 3 pour le premier
type de chassis et de 5 pour le second, l’objectif s’exprime comme suit :

max z = 3x1 + 5x2

La troisième étape est la formulation les contraintes du problème.

Définition 3.3 On appelle contraintes du problème toutes les relations limitant


le choix des valeurs possibles des variables.

Ces relations peuvent être de simples bornes sur les variables. Par exemple, les
quantité produites ne peuvent être négatives. Mathématiquement :

x1 , x2 ≥ 0.

Elles peuvent être plus complexes comme les contrainte de capacité de produc-
tion. Le temps pour assembler 1 chassis de type 1 dans l’atelier 1 est de 1 heure
où il reste 4 heures disponibles. D’où la contrainte de capacité de l’atelier 1 :

x1 ≤ 4

Semblablement, on peut construire les contraintes de capacités des deux autres


ateliers :

2x2 ≤ 12
3x1 + 2x2 ≤ 18

On peut résumer la formulation du problème d’optimisation de la manière


suivante :
max z = 3 x1 + 5 x2



 x1 ≤ 4



 2x2 ≤ 12


s.c.q. 
3x1 + 2x2 ≤ 18



 ≥ 0
 x1



x2 ≥ 0

On obtient un problème linéaire car aussi bien la fonction objectif que les
contraintes s’expriment comme des fonctions linéaires des variables.
30 Chapitre 3. Formulation en modèles d’optimisation.

3.3 Formulation des problèmes en nombres entiers

Dans cette section, nous voyons plus en détails les différents types de problèmes
où la programmation en nombres entiers est d’application.

3.3.1 Problèmes avec coût fixe

Ce sont les problèmes où l’on encoure un coût fixe de mise en route de la production.
Supposons que x note la quantité produite d’un bien au coût marginal c et que f
note le coût fixe de mise en route de la production. Le coût total de production,
noté z, s’exprime de la manière suivante :

0 si x = 0;
z=
f + cx si x > 0.

On a donc une condition logique : s’il y a production, le coût fixe doit être encouru.
Dans le cas contraire, il n’est pas encouru. La forme de cette fonction (non linéaire)
est représentée à la figure 3.1.

c(x)

x
Figure 3.1: Problème avec coût fixe de production

On peut modéliser la fonction par la programmation mixte zéro/un. En


effet, définissons la variable binaire y ∈ {0, 1} indiquant s’il y a production ou
non :

y = 1 si la production x > 0; (3.1)


y = 0 si la production x = 0. (3.2)

L’objectif peut alors se formuler de la manière suivante :

z = f y + cx
Section 3.3. Formulation des problèmes en nombres entiers 31

Le coût fixe de production ne sera, en effet, encouru que si y = 1, c’est-à-dire s’il y


a production. Il faut encore pourvoir exprimer sous forme de contraintes linéaires
les conditions (3.1) et (3.2). Ceci est fait en ajoutant la contrainte suivante :

x ≤ My (3.3)

où M est une borne supérieure sur la production.


Montrons l’équivalence. En effet, si x > 0, la contrainte (3.3) ne peut être
satisfaite que pour y = 1. Ce qui exprime la condition (3.1). Si, par contre, x = 0,
la contrainte (3.3) est satisfaite pour y = 0 ou y = 1. Cependant, l’objectif étant
de minimiser les coûts de production, l’optimiseur va choisir la valeur y = 0. On
a donc également exprimé la condition (3.2).

3.3.2 Mélange avec nombre limité d’ingrédients

Il s’agit également d’un problème générique conduisant à une formulation mixte


entière, les variables binaires indiquant la présence d’un ingrédient dans le mélange.
C’est le cas, par exemple, d’un problème de mélange d’huiles où cinq huiles
sont disponibles mais où des contraintes techniques impliquent que seulement trois
huiles différentes peuvent être présentes dans le mélange. Un autre exemple, est
celui du chargement de hauts fourneaux où le nombre de charbons disponibles
est souvent nettement supérieur au nombre de charbons qui peuvent être chargés
simultanément. Ce nombre étant limité par le nombre de portes de chargement du
haut fourneau.
Ce problème peut être résolu par la programmation mixte zéro/un. Si xi
note la quantité d’ingrédient i dans le mélange, définissons la variable binaire yi
indiquant la présence de l’ingrédient i dans le mélange. Autrement dit :

1 si xi > 0
yi =
0 si xi = 0

On introduit alors les contraintes suivantes :

mi yi ≤ xi ≤ Mi yi et yi ∈ {0, 1} (3.4)

où mi est une borne inférieure sur la teneur de xi dans le mélange et Mi est une
borne supérieure sur la teneur de xi dans le mélange.
La condition du nombre maximum d’ingrédients dans le mélange s’exprime
alors simplement par :

n
yi ≤ k, (3.5)
i=1
32 Chapitre 3. Formulation en modèles d’optimisation.

avec k, le nombre maximum d’ingrédients dans le mélange.


Démontrons l’équivalence. Deux cas sont possibles pour la variable xi :

1. Soit xi > 0. Alors, par les contraintes (3.4), la variable yi doit valoir 1 et
exprime bien que l’ingrédient i est dans le mélange.

2. Soit xi = 0. Alors, par la contrainte (3.4), la variable yi doit valoir 0. La


condition (3.5) exprimera donc bien que au plus k ingrédients seront pris
dans le mélange.

On a donc bien que yi est une indicatrice de présence de l’ingrédient i dans le


mélange.

3.3.3 Choix parmi un nombre discret de valeurs

Dans beaucoup de problèmes industriels, lors du dimensionnement d’un appareil-


lage, on doit choisir sa capacité parmi les valeurs commerciales existant sur le
marché. Par exemple, lors du dimensionnement d’une canalisation de transport
d’eau, on doit choisir parmi les valeurs suivantes pour le diamètre :

12 cm, 17 cm, 24 cm ou 47 cm.

On peut à nouveau modéliser ce choix par l’utilisation de variables binaires. En


effet, définissons la variable x comme étant le diamètre choisi et définissons yi une
indicatrice du fait que le diamètre numéro i a été choisi. On peut alors écrire la
relation suivante pour le choix du diamètre :

x = 12y1 + 17y2 + 24y3 + 47y4

avec la contrainte qu’un seul diamètre doit être choisi :

y1 + y2 + y3 + y4 = 1 (3.6)

et bien sûr en imposant le caractère binaire de chaque indicatrice :

yi ∈ {0, 1}, ∀i = 1, 2. . .4

La contrainte (3.6) fera, en effet, qu’une seule indicatrice vaudra un tandis que
toutes les autres seront à zéro.
Section 3.4. Exercices 33

3.4 Exercices

3.1. Recyclage du papier. Une société privée de tri de déchets et recyclage de


papier peut se fournir en déchets auprès de deux villes. Son rôle consiste à
séparer les listes d’ordinateur et les journaux. La répartition entre ménages
et sociétés est différente d’une ville à l’autre expliquant un pourcentage
différent de listes d’ordinateur et de journaux dans les déchets. Ces pour-
centages ainsi que la quantité maximum de déchets que peuvent fournir par
an ces deux villes sont reprises au tableau suivant :

Ville Listes Journaux Offre


(%) (%) (tonnes par an)
Ville 1 5 20 10.000
Ville 2 15 30 20.000

La société offre aux villes un prix de 35 euro par tonne de déchets. Elle
doit décider du montant optimal de déchets à acheter à chaque ville pour
minimiser son coût d’achat. Pour couvrir ses frais fixes, la société doit au
moins collecter 1.500 tonnes de listing d’ordinateur par an. Au delà de 6.000
tonnes de journaux mis sur le marché par an, le prix que la société reçoit
pour la vente de journaux chute et donc la compagnie ne désire pas vendre
plus que cette quantité. Combien la société doit-elle acheter de déchets par
an à chacune des deux villes ?
Formuler mathématiquement le problème comme un problème d’optimisa-
tion linéaire à deux variables (choix des variables, expression des contraintes
et de l’objectif).

3.2. Affectation de lignes aériennes. Une compagnie aérienne régionale désire


affecter sa flotte d’avions aux 4 lignes qu’elle exploite (lignes A, B, C et
D). Le nombre de passagers désirant effectuer chaque jour un parcours sur
la ligne A est 100, sur la B de 200, sur la C de 150 et sur la D de 300. La
compagnie dispose de deux types d’avions : 10 petits avions de 40 places et
5 avions moyens de 180 places. Le coût d’exploitation d’un avion dépend de
sa taille et de la ligne à laquelle il est affecté : ils sont donnés au tableau 3.2.
On désire minimiser le coût d’exploitation en satisfaisant la demande.

(a) Formuler mathématiquement le problème de la meilleure affectation


de la flotte de cette compagnie.
(b) Vos variables peuvent-elles prendre toutes les valeurs réelles non né-
gatives ? Si non, précisez la restriction à imposer.
34 Chapitre 3. Formulation en modèles d’optimisation.

Lignes A B C D
Petits avions 10 17 15 23
Grands avions 90 210 140 250

Tableau 3.2: Coûts d’exploitation.

3.3. Tournées de véhicules. Considérons le problème d’organisation de la col-


lecte des déchets. La collectivité locale dispose de 12 véhicules de collecte
répartis comme suit pour collecter dans 4 villes notées ville 1 à ville 4.

Ville 1 2 3 4
Nombre de camions 4 3 1 4

Les temps de trajets entre ces villes et l’incinérateur sont les suivants :

Vers ville 1 ville 2 ville 3 ville 4 incinérateur


De la ville 1 0 10 ∞ ∞ 45
De la ville 2 10 0 5 ∞ ∞
De la ville 3 ∞ 5 0 5 20
De la ville 4 ∞ ∞ 5 0 ∞
De l’incinérateur 45 ∞ 20 ∞ 0

(a) Représenter le problème par un graphique de réseau. En particulier,


indiquer à chaque ville par une flèche entrante ou sortante et un nombre
le nombre de véhicules qui entrent ou sortent du réseau à la ville.
(b) Formuler le problème de minimisation du temps total pour aller à l’in-
cinérateur comme un problème en nombres entiers. Pour l’objectif et
les contraintes, on donnera une formulation détaillée (pas de formule
générale).
(c) Donner la matrice d’incidence nœuds-arcs. Pour cela, mettre toute les
variables à gauche.
(d) Quelle est la particularité de la matrice ?
Partie II
Méthodes d’optimisation

35
Chapitre 4

Résolution des modèles linéaires

4.1 Introduction

Lorsqu’il n’y a que deux variables de décision, un problème linéaire peut être
résolu de manière purement graphique. Nous présentons à la section 4.2 cette
méthode de résolution graphique.
Lorsqu’il y a un plus grand nombre de variables, un algorithme mis en œuvre
sous la forme d’un programme informatique s’avère nécessaire. Il s’agit de l’al-
gorithme du Simplexe dont nous présenterons le principe à la section 4.3.
Cet algorithme est mis en œuvre dans de nombreux logiciels d’optimisation
tels que GAMS [2] ou OMP. Le solveur d’Excel que nous présenterons dans la
troisième partie du cours possède également une mise en œuvre de l’algorithme
du Simplexe.

4.2 Résolution graphique des problèmes à deux variables

Reprenons la formulation de l’exemple de production de chassis de la section 3.2 :

max z = 3 x1 + 5 x2


 x1
 ≤ 4



 2x2 ≤ 12

 (4.1)
s.c.q. 
3x1 + 2x2 ≤ 18



 x1 ≥ 0




x2 ≥ 0

Comme annoncé ci-dessus, dans le cas de deux variables de décision, un


problème linéaire peut être résolu de manière purement graphique en suivant le
processus en trois étapes :

37
38 Chapitre 4. Résolution des modèles linéaires

1. représentation graphique de la région réalisable,

2. représentation graphique des contraintes,

3. détermination de la solution optimale.

La première étape de la résolution consiste donc à représenter graphiquement


la région réalisable.

Définition 4.1 On appelle région réalisable, l’ensemble des valeurs de variables


de décision qui satisfont toutes les contraintes.

Dans le cas de l’exemple, c’est l’ensemble des points (x1 , x2 ) satisfaisant les
inégalités de (4.1).

x2
(4)
10

8 (1)
(2)
6

2 (3)
(5)
0 2 4 6 8 x1

Figure 4.1: Ensemble de production.

Graphiquement une inégalité telle que 3x1 + 2x2 ≤ 18 correspond à un demi-


plan limité par la droite obtenue en prenant l’inéquation à l’égalité (3x1 +2x2 = 18).
Lorsque l’on fait l’intersection des cinq demi-plans correspondant aux cinq inéga-
lités : 


 x1 ≤ 4 (1)



 2x2 ≤ 12 (2)



3x1 + 2x2 ≤ 18 (3)



 ≥ 0 (4)
 x1



x2 ≥ 0 (5)
on obtient le polygone hachuré à la figure 4.1.
Section 4.2. Résolution graphique des problèmes à deux variables 39

On voit ici clairement que le système est sous-déterminé. On va devoir choisir


entre ces différents plans de production. Pour ce faire, et c’est la deuxième étape
de la résolution, on va représenter graphiquement des lignes d’isovaleur de la
fonction objectif :
z = 3x1 + 5x2 .
En effet, on remarquera que l’expression de la fonction objectif fait intervenir trois
variables et ne peut donc être représentée que dans l’espace. Pour se ramener dans
le plan, on va considérer des valeurs successives de l’objectif :

z = k.

Ce qui correspond graphiquement à des droites parallèles

3x1 + 5x2 = k.

Les points d’une de ces droites sont donc le lieu de tous les points donnant la même
valeur du profit (d’où le nom de droite d’isovaleur de la fonction objectif). Ceci
est fait à la figure 4.2 où l’on a représenté z = 15 et z = 30.

x2

z = 30 (2, 6)
6
z = 15
4

2 z = 36

0 2 5 6 10 x1

Figure 4.2: Droites d’isoprofit.

La droite d’isovaleur z = 15, c’est-à-dire :

z = 3x1 + 5x2 = 15

passe par les points (5,0) et (0,3) tandis que la droite d’isovaleur z = 330, c’est-à-
dire :
z = 3x1 + 5x2 = 30
40 Chapitre 4. Résolution des modèles linéaires

passe par les points (10,0) et (0,6) . On obtient donc des droites parallèles qui
montent vers le haut si z s’accroı̂t.
Enfin, et c’est la troisième étape de la résolution, l’optimum sera déterminé
graphiquement comme le plan de production situé sur la droite d’isoprofit la plus
élevée, c’est-à-dire celle qui donne le profit le plus élevé. On voit à la figure 4.2
qu’il s’agit du point
x∗ = (2, 6).
Justifions ce choix. Comme on maximise le profit on a intérêt à prendre la droite
d’isovaleur la plus élevée possible. Bien sûr, il faut que le plan de production soit
encore réalisable : autrement dit, il faut se restreindre à la région réalisable. On a
alors la très important remarque suivante :

Observation 4.1 Pour maximiser l’objectif, il faut prendre la droite d’isovaleur


de l’objectif qui touche encore la région réalisable et qui donne la plus grande
valeur à l’objectif. Le point de contact est un point optimum.

Sur base de cet exemple, on déduit une deuxième observation.

Observation 4.2 On constate que la solution optimale est à un sommet de la


région réalisable.

On peut alors se poser la question suivante : La solution optimale d’un problème


d’optimisation linéaire sera-t-elle toujours trouvée en un sommet de la région
réalisable ?
En fait, le seul cas où se présentent des solutions qui ne sont pas en des sommets
de la région réalisable est la situation où tout un côté est optimal. Illustrons ce cas
en changeant l’objectif. Supposons que l’on aie un objectif de la forme :

max z  = 3x1 + 2x2

Il est facile, dans ce cas, de voir que les droites d’isovaleur de l’objectif seraient
toutes parallèles au côté :
3x1 + 2x2 = 18
On en déduit que tout le côté joignant le sommet (2,6) au sommet (4,3) est
optimal. Mais, même dans ce cas, on peut trouver une solution (même deux) en
un sommet de la région réalisable. Il suffit de choisir le point (2,6) ou le point
(4,3). Sur base de cet exemple, on tire une troisième observation :

Observation 4.3 Même si tout un côté du polygone est optimal, on peut toujours
choisir une solution optimale correspondant à un sommet.
Section 4.3. Principe de l’algorithme du Simplexe 41

4.3 Principe de l’algorithme du Simplexe

En conclusions, on voit qu’il suffit de limiter la recherche de l’optimum d’un


problème linéaire aux seuls sommets de la région réalisable. On peut faire mieux
que d’évaluer l’objectif en chaque sommet.
Ainsi, le principe de l’algorithme du Simplexe est, partant d’un sommet de la
région réalisable, d’aller de sommet en sommet adjacent jusqu’à détermination de
l’optimum.

Définition 4.2 On appelle sommets adjacents d’un polygone, deux sommets joints
par un côté du polygone.

Par exemple, à la figure 4.3, les points (0,0) et (0,6) sont des sommets adjacents
car situés aux deux extrémités d’un côté du polygone. Alors que les points (0,0) et
(2,6) ne sont pas adjacents car il faut parcourir deux côtés du polygone pour aller
de l’un à l’autre.
x1 = 0

10
(0, 9)
8 x1 = 4

(2, 6) (4 , 6)
(0, 6) 2x2 = 12

4 (4, 3)
2 3x1 + 2x2 = 18

(0 , 0) 2 (4, 0) (6 , 0) 8 x2 = 0

Figure 4.3: Notion de sommets adjacents

Le sommet de départ est ici évident : il suffit de prendre le point (0,0).


P 0 = (0, 0)
Notez que l’origine peut ne pas être un sommet de la région réalisable. Il faudra
alors recourir à un problème auxiliaire, connu sous le problème de phase I, pour
déterminer ce point de départ.
On peut donc suggérer l’algorithme suivant :
42 Chapitre 4. Résolution des modèles linéaires

i) Choisir comme point de départ un sommet x∗ de la région réalisable.

ii) Déterminer les côtés passant par ce sommet x∗ . Trouver un côté le long
duquel z croı̂t. S’il n’y en n’a pas, STOP : le x∗ courant est optimal.

iii) Déterminer le sommet y ∗ à l’autre bout du côté et poser x∗ = y ∗ . Retour


en ii).

Pour le choix du sommet adjacent à l’étape ii), l’algorithme du Simplexe utilise


le critère de choix de la direction suivant : prendre la direction qui assure le plus
grand accroissement de la fonction objectif pour un pas de un dans la direction.
Au départ, du point (0,0), deux directions sont possibles : la direction (x1 , 0) avec
x1 > 0, c’est-à-dire aller vers le point (4,0) et la direction (0, x2 ) avec x2 > 0,
c’est-à-dire aller vers le point (0,6). Au vu de la fonction objectif :

max z = 3x1 + 5x2

il vaut mieux prendre la direction de x2 .


Le fonctionnement de l’algorithme dans le cas de l’exemple est illustré à la
figure 4.4. A la première itération, partant du sommet initial P0 = (0, 0), on

x1

9
Itération 2
P 2 = (2, 6)
P 1 = (0, 6)

Itération 1

P 0 = (0, 0) 2 4 6 x2

Figure 4.4: Chemin de l’algorithme du Simplexe.

détermine la direction de l’axe vertical qui permet d’accroı̂tre l’objectif. On va


jusqu’au bout du côté et on obtient le point P1 = (0, 6) en fin d’itération 1. A
la deuxième itération, on se dirige vers le point P2 = (2, 6). A la troisième
itération, on constate qu’il n’y a plus de direction d’accroissement de l’objectif.
On est donc à l’optimum.
Section 4.4. Exercices 43

4.4 Exercices

4.1. Recyclage du papier. Pour l’exercice 3.1 formulé au chapitre 3, déterminez


graphiquement la solution optimale du problème linéaire.

4.2. La minimisation des coûts. Une entreprise peut fabriquer un même produit
dans deux usines différentes. Les capacités de production de ces deux usines,
exprimées en quantité de produit par jour, sont de 7 pour la première usine et
de 10 pour la seconde. D’autre part, on suppose que le nombre d’heures de
main d’œuvre que l’on peut affecter globalement à cette production est de 60
par jour. Or chaque unité produite nécessite 10 heures de main d’œuvre dans
la première usine alors qu’elle n’en nécessite que 5 dans la seconde. Enfin,
la production totale doit permettre de satisfaire au moins une demande de 8
unités par jour. Sachant que les coûts variables unitaires sont de 2 pour la
première usine et de 3 pour la seconde, l’entreprise désire produire à coût
minimum.

(a) Écrire le programme linéaire correspondant.


(b) Résoudre graphiquement.

4.3. Fabrication et transport de produits frais. La production d’une compa-


gnie se réduit à 2 produits frais, P et Q qu’un grossiste lui achète. La marge
unitaire de la compagnie, hors frais de transport, est de 42 euro pour P et 48
euro pour Q. Chaque soir, les produits frais sont acheminés chez le grossiste
par un transporteur qui facture à la compagnie 2 euro par kg transporté. Ce
coût de transport vient en déduction de la marge. La capacité de transport est
de 2.100 kg par jour. Les produits P et Q s’élaborent à partir de 2 matériaux
M et N selon les recettes présentées au tableau 4.1. Considérons une journée

Produit Poids (en kg) Poids (en kg) Poids total


du composant M du composant N (en kg)
P 4 3 7
Q 2 1 3

Tableau 4.1: Fabrication et transport de produits frais.

où la compagnie dispose de 1.600 kg de M et de 1.200 kg de N.

(a) Calculer la marge nette de frais de transport pour chacun des deux
produits.
44 Chapitre 4. Résolution des modèles linéaires

(b) Formuler le problème de la maximisation du revenu net de la compa-


gnie.
(c) Déterminer graphiquement la solution optimale.
Chapitre 5

Résolution des modèles non linéaires.

Un problème d’optimisation est dit linéaire s’il s’agit de la maximisation (ou de


la minimisation) d’une fonction linéaire sous des contraintes purement linéaires.
Un modèle est dit non linéaire si l’objectif ou au moins une contrainte est non
linéaire.
Nous verrons ci-dessous les conditions qui sont vérifiées à l’optimum d’un
problème non linéaire. Ces conditions sont particulièrement utiles pour calculer
la solution d’équilibre sur un réseau de transport (voir cours de “Transport et
Environnement”). Nous présenterons enfin la méthode de Franck-Wolfe qui est
particulièrement bien adaptée pour résoudre le problème du calcul de la solution
d’équilibre sur un réseau de transport.

5.1 Conditions de Kuhn et Tucker

Nous considérons le problème de minimisation sous contraintes suivant :

min f (x)

hi (x) = 0, i = 1, 2, . . .m (5.1)
s.c.q. 
gk (x) ≤ 0, k = 1, 2, p

où f (x), hi (x), i = 1, 2, . . .m et gk (x), k = 1, 2, . . .p sont des fonctions de Rn


dans R.
A titre d’illustration, considérons l’exemple suivant :

= −2x21 − 2x1 x2 − x22 + 10x1 + 10x2


max e(x) 
x21 + x22 ≤ 5
s.c.q.
3x1 + x2 ≤ 6

45
46 Chapitre 5. Résolution des modèles non linéaires.

Il se récrit sous la forme (5.1) de la manière suivante :

= 2x21 + 2x1 x2 + x22 − 10x1 − 10x2


min f (x) 
g1 (x) = x21 + x22 − 5 ≤ 0
s.c.q.
g2 (x) = 3x1 + x2 − 6 ≤ 0

Pour écrire les conditions d’optimalité, on a besoin de la notion de dérivées


partielles.

Définition 5.1 La dérivée partielle d’une fonction par rapport à une variable est
obtenue en dérivant la fonction en considérant que toutes les autres variables sont
des constantes.

Illustrons ceci sur l’exemple suivant :

f (x) = 2x21 + 2x1 x2 + x22 − 10x1 − 10x2

Les dérivées partielles se calculent comme suit :


∂f
= 4x1 + 2x2 − 10
∂x1
∂f
= 2x1 + 2x2 − 10
∂x2

Pour écrire les conditions d’optimalité, on a encore besoin de la notion de


Lagrangien.

Définition 5.2 La fonction de Lagrange est obtenue en multipliant le membre de


gauche de chaque contrainte d’égalité par un multiplicateur λi , le membre de
gauche de chaque contrainte d’inégalité par son multiplicateur µk et en addition-
nant le tout à la fonction objectif :

m
p
L(x, λ, µ) = f (x) + λi hi (x) + µk gk (x)
i=1 k=1

Écrivons le Lagrangien pour l’exemple :

L(x) = 2x21 + 2x1 x2 + x22 − 10x1 − 10x2


+µ1 (x21 + x22 − 5) + µ2 (3x1 + x2 − 6).

On peut alors écrire les très importantes conditions nécessaires suivantes :


Section 5.1. Conditions de Kuhn et Tucker 47

Théorème 5.1 Conditions de Kuhn-Tucker. Soit x∗ un minimum local pour le


problème
min f (x)
s.c.q. h(x) = 0,
g(x) ≤ 0
et supposons x∗ régulier pour les contraintes. Alors il existe des multiplicateurs
λ ∈ Rm et µ ∈ Rp tels que
∂L(x∗ , λ, µ)
= 0∀j = 1, . . .n (5.2)
∂xj
µk gk (x∗ ) = 0, ∀k = 1, . . .p (5.3)
µk ≥ 0, ∀k = 1, . . .p (5.4)

En écrivant le Lagrangien, on passe d’un problème d’optimisation sous cont-


raintes à un problème sans contrainte. Les conditions d’optimalité pour une fonc-
tion définie sur Rn sont l’annulation de ses dérivées partielles. Les conditions (5.2)
ne sont rien d’autre que l’annulation des dérivées partielles du Lagrangien.
Les conditions (5.3) sont les conditions de complémentarité disant que si une
contrainte n’est pas active, son multiplicateur µk doit être nul. Remarquez aussi
que les contraintes (5.3) peuvent s’interpréter en disant que L(x∗ ) = f (x∗ ).
Illustrons ceci sur l’exemple suivant :
= 2x21 + 2x1 x2 + x22 − 10x1 − 10x2
min f (x) 
g1 (x) = x21 + x22 − 5 ≤ 0
s.c.q.
g2 (x) = 3x1 + x2 − 6 ≤ 0
Ecrivons le Lagrangien pour ce problème :
L(x1 , x2 ) = 2x21 + 2x1 x2 + x22 − 10x1 − 10x2
+µ1 (x21 + x22 − 5) + (3x1 + x2 − 6)

Les conditions de Kuhn et Tucker s’écrivent ici simplement :


∂L
= 4x1 + 2x2 − 10 + 2µ1 x1 + 3µ2 = 0
∂x1
∂L
= 2x1 + 2x2 − 10 + 2µ1 x2 + µ2 = 0
∂x2

µ1 g1 = µ1 (x21 + x22 − 5) = 0
µ2 g2 = µ2 (3x1 + x2 − 6) = 0

µ1 ≥ 0
µ2 ≥ 0
48 Chapitre 5. Résolution des modèles non linéaires.

5.2 Application au calcul d’équilibre de l’utilisateur

Pour illustrer l’utilité des conditions de Kuhn et Tucker, nous allons les appliquer à
un exemple de calcul d’équilibre de l’utilisateur. Considérons l’exemple de réseau
très simple illustré à la figure 5.1 où deux chemins parallèles joignent le point
d’entrée O du point de sortie D du réseau.

qOD = 5 x1
O D

x2

Figure 5.1: Exemple d’équilibre des utilisateurs.

Notons x1 le flux de véhicules sur l’arc 1 et x2 , le flux sur le second axe.


Considérons les fonctions linéaires suivantes :

t1 = 2 + x1
t2 = 1 + 2x2

qui donnent le temps de traversée de l’arc en fonction du flux sur celui-ci. Le flux
total entre O et D est qOD = 5.

Définition 5.3 On a atteint une solution d’équilibre de l’utilisateur si tous les


chemins utilisés entre une même origine et une même destination ont un temps de
parcours identique et si tous les chemins non utilisés entre ces deux points ont un
temps supérieur ou égal à ce minimum.

Nous verrons au cours de “Transport et Environnement” que l’équilibre de l’utili-


sateur peut être déterminé en résolvant le problème non linéaire suivant :
 x1  x2
min z(x1 , x2 ) = t1 (x) dx1 + t2 (x2 )dx2
0 0
scq x1 + x2 = 5
x1 , x2 ≥ 0

Nous allons calculer l’équilibre pour cet exemple en écrivant la formulation sous
forme de minimisation et en résolvant les conditions de Kuhn et Tucker. Le
Section 5.2. Application au calcul d’équilibre de l’utilisateur 49

problème est équivalent à :


x21
min f (x1 , x2 ) = 2x1 + + x2 + x22
 2





h(x) = x1 + x2 − 5 = 0 ← λ

s.c.q.  g1 (x) = −x1 ≤ 0 ← µ1




 g2 (x) = −x2 ≤ 0 ← µ2
Ecrivons le Lagrangien :
L(x1 , x2 ) = f (x1 , x2 ) + λh(x) + µ1 g1 (x) + µ2 g2 (x)
x2
= 2x1 + 1 + x2 + x22 + λ(x1 + x2 − 5) + µ1 (−x1 ) + µ2 (−x2 )
2
Écrivons les conditions de Kuhn et Tucker :
2 + x 1 + λ − µ1 = 0
1 + 2x2 + λ − µ2 = 0
µ1 (−x1 ) = 0
µ2 (−x2 ) = 0
µ1 , µ2 ≥ 0
Supposons d’abord que x1 , x2 > 0. Donc µ1 = µ2 = 0. Les deux premières
conditions se récrivent :
2 + x1 + λ = t1 (x1 ) + λ = 0
1 + 2x2 + λ = t2 (x2 ) + λ = 0
On en déduit les temps de traversée des arcs sont identiques :
t1 (x∗1 ) = t2 (x∗2 )
On a donc bien une solution d’équilibre de l’utilisateur car tous les chemins utilisés
entre l’origine et la destination sont de temps de parcours identiques. Aucun usager
ne peut arriver plus rapidement à destination en changeant de chemin.
Supposons maintenant que seul x1 > 0. Donc µ1 = 0 et µ2 ≥ 0. Les deux
premières conditions se récrivent :
2 + x1 + λ = t1 (x1 ) + λ = 0
1 + 2x2 + λ = t2 (x2 ) + λ − µ2 = 0
On en déduit les temps de traversée des arcs sont identiques :
t1 (x∗1 ) = −λ ≤ −λ + µ2 = t2 (x∗2 )
A nouveau les conditions d’équilibre sont vérifiées : le chemin non utilisé est de
temps supérieur.
50 Chapitre 5. Résolution des modèles non linéaires.

5.3 La méthode de Frank-Wolfe

L’idée de la méthode est la suivante. Il s’agit d’un algorithme d’approxima-


tions linéaires successives. Appliquons cette idée au problème suivant dont les
contraintes sont purement linéaires :
max f (x) = 5x1 − x21 + 8x2 − 2x22

3x1 + 2x2 ≤ 6
s.c.q.
x1 , x2 ≥ 0
En effet, c’est le type de problème que nous allons rencontrer pour la résolution
du problème d’affectation du trafic.
Une itération de la méthode comporte les étapes suivantes :

a) Calcul de la direction. On calcule la direction de recherche en résolvant un


problème linéaire obtenu en remplaçant la fonction objectif par son approxi-
mation linéaire (points 1 et 2 ci-dessous).
b) Calcul du pas. On calcule le pas à faire dans la direction en minimisant la
fonction f (x) le long de la direction déterminée en a) (points 3 et 4 ci-
dessous).

Nous partons du point initial x0 = (0, 0).


Itération 1 :

1. Comme seul l’objectif est non linéaire, on va remplacer f (x) par son ap-
proximation de Taylor limitée à l’ordre 1 :
∂f ∂f
f (x) ∼ f (0, 0) + (0, 0)(x1 − 0) + (0, 0)(x2 − 0)
∂x1 ∂x2

Évaluons les dérivées partielles en x0 = (0, 0) :


∂f ∂f
= 5 − 2(0) = 5 = 8 − 4(0) = 8
∂x1 ∂x2
D’où l’approximation linéaire de la fonction en (0,0) :
g(x) = 5x1 + 8x2

2. On peut donc résoudre le problème linéaire :


max g(x) = 5 x1 + 8 x2

3x1 + 2x2 ≤ 6
s.c.q.
x1 , x2 ≥ 0
Section 5.3. La méthode de Frank-Wolfe 51

x2
P1
3
z = 5x 1 + 8x 2

P2
P0
1 2 x1

Figure 5.2: Méthode de Franck-Wolfe : itération 1

par l’algorithme du Simplexe en général. Comme il n’y a que deux variables,


ceci est fait graphiquement à la figure 5.2. La solution optimale est le point

x1LP = (0, 3).

3. Comme, plus on s’éloigne du point de départ x0 , plus l’approximation


linéaire g(x) s’éloigne de la fonction f (x), on a probablement été trop loin
en allant jusqu’au point x1LP . Cependant, en se dirigeant dans la direction
de x1LP , au début du mois, on pourra réduire f (x). On va déterminer le pas
dans la direction :

x1 = x0 + α(x1LP − x0 )
       
x1 0 0−0 0
= +α =
x2 0 3−0 3α

avec α ∈ [0, 1] qui minimise cette fois la vraie fonction :

h(α) = f (x0 + α(x1LP − x0 )).

On obtient donc le problème de minimisation unidimensionnelle :

max h(α) = 24α − 18α2

dont le maximum est obtenu en annulant la dérivée : α = 2/3.


4. Mise à jour de x :

x1 = (0, 0) + 2/3 [(0, 3) − (0, 0)] = (0, 2)

Itération 2 :
52 Chapitre 5. Résolution des modèles non linéaires.

1. Évaluation des dérivées partielles en x1 = (0, 2) :


∂f
= 5 − 2(0) = 5
∂x1
∂f
= 8 − 4(2) = 0
∂x2

2. Résoudre le problème linéaire :

max z = 5 x1 + 0 x2

3x1 + 2x2 ≤ 6
s.c.q.
x1 , x2 ≥ 0

Ceci est fait à la figure 5.3. La solution optimale est x2LP = (2, 0).
x2
P1
3

z = 5x 1
2

P2
P0
1 2 x1

Figure 5.3: Méthode de Franck-Wolfe : itération 2.

3. Recherche unidimensionnelle :

x2 = x1 + α(xLP − x1 )
       
x1 0 2−0 2α
= +α =
x2 2 0−2 2 − 2α
On obtient donc le problème de minimisation unidimensionnelle :

max h(α) = 8 + 10α − 12α2

qui est maximum pour α = 5/12.


4. Mise à jour de x :

x2 = (0, 2) + 5/12 [(2, 0) − (0, 2)] = (5/6, 7/6)


Section 5.4. Exercices 53

5.4 Exercices

5.1. Conditions de Kuhn et Tucker. On vous donne le problème de la maxi-


misation de la fonction 14x − x2 + 6y − y 2 + 7 sous les contraintes que
x + y ≤ 2 et x + 2y ≤ 3.
(a) Écrire les conditions nécessaires d’optimalité de Kuhn et Tucker pour
ce problème.
(b) Résoudre graphiquement en traçant les courbes d’iso-valeurs de la fonc-
tion objectif et la région réalisable. Pour cela, compléter les carrés pour
la fonction objectif.
(c) Vérifier si la solution déterminée graphiquement satisfait les conditions
de Kuhn et Tucker.
(d) Indiquez quelles sont les contraintes actives à l’optimum.
5.2. Méthode de Franck-Wolfe. Faire une troisième itération de la méthode de
Franck-Wolfe pour le problème considéré à la section 5.3.
5.3. Équilibre de l’utilisateur versus équilibre social. Considérons un réseau
de transport très simple reliant une banlieue au centre ville. Il y a deux routes
parallèles : l’autoroute, dont le flux en milliers de véhicules par heure est
noté x1 et une voie nationale, dont le flux de véhicule en milliers de véhicules
par heure est noté x2 . L’origine et la destination sont les mêmes pour les
deux axes. Seules varient leurs fonctions de performance donnant le temps
de traversée de l’axe (ta ) en fonction du flux sur l’axe (xa ). Ces fonctions
sont données par :
t1 (x1 ) = 3 + 0, 5x1
t2 (x2 ) = 1 + x2
Le nombre de voitures désirant se rendre de la banlieue vers le centre ville
est de 1500 (1,5 milliers) durant l’heure de point du matin (entre 8 heures et
9 heures).
(a) Déterminer un point d’équilibre de l’utilisateur en écrivant un problè-
me de minimisation équivalent et en résolvant les conditions de Kuhn
et Tucker pour ce problème équivalent (Examiner tous les cas possibles
pour les axes utilisés).
(b) On appelle équilibre social un point où les usagers se répartissent sur
le réseau de manière à minimiser le temps total passer sur le réseau :

min z = xa ta (xa ).
a
54 Chapitre 5. Résolution des modèles non linéaires.

Écrire le problème d’optimisation équivalent et le résoudre par les


conditions de Kuhn et Tucker.
(c) En déduire, dans les deux cas, le temps total passé par les usagers sur
le réseau. En comparant ces deux valeurs, quelle est votre conclusion
sur l’attitude des automobilistes donc le comportement est modélisé
par un équilibre de l’utilisateur ?
Chapitre 6

Résolution des modèles en nombres entiers

Une différence majeure avec la programmation linéaire réside dans la difficulté


de résoudre de tels problèmes. En effet, en programmation linéaire, il existe un al-
gorithme qui permet de résoudre des problèmes d’à peu près n’importe quelle taille,
à savoir l’algorithme du Simplexe. Par contre pour les problèmes en nombres
entiers, il existe une méthode connue sous le nom de méthode de branch and
bound, qui ne garantit pas que l’on puisse éviter l’énumération explicite, c’est-à-
dire d’envisager toutes les combinaisons de valeurs entières pour les variables.

6.1 Méthode de “branch and bound”

Nous illustrons la méthode sur l’exemple suivant tiré de Norbert et al [13] dont on
a légèrement modifié la fonction objectif :

zP∗ N E = max z = 15x1 + 50x2




 −x1 + 2x2 ≤ 5, (1)






 x1 + 2x2 ≤ 14, (2) (6.1)
s.c.q. 
 x1 ≤ 8, (3)





 x1 , x2 ≥ 0 et entiers

La région réalisable est représentée à la figure 6.1.


Remarquons qu’une façon de résoudre le problème serait de construire une
borne supérieure sur zP∗ N E et une borne inférieure sur zP∗ N E et ensuite de raffiner
ces bornes jusqu’à les égaliser.
Question 1 : comment construire une borne inférieure sur zP∗ N E ?
La réponse à cette question est à la fois simple et difficile. En effet, pour trouver
une borne inférieure, il suffit de donner une solution réalisable pour (6.1). Comme

55
56 Chapitre 6. Résolution des modèles en nombres entiers

(3)
(2)
x2 (1)
P0
5 P2
P1
P3
4
z = 150
3

0
0 1 2 3 4 5 6 7 8 9 10 x1

Figure 6.1: Représentation de la région réalisable.

l’objectif est de maximiser, l’optimum du problème ne pourra qu’être supérieur


à la valeur de z en ce point. Par exemple, le point (4,4) appartient à la région
réalisable :
z(4, 4) = 15 × 4 + 50 × 4 = 260 ≤ zP∗ N E
Cependant trouver en général une solution réalisable pour un problème en nombres
entiers n’est pas une mince affaire.
Question 2 : comment construire une borne supérieure sur zP∗ N E ?
Une façon de répondre à cette question est de résoudre le problème linéaire
que l’on obtient à partir de (6.1) en laissant tomber les contraintes d’intégralité des
variables. Comme on maximise sur un ensemble réalisable plus large, l’optimum
ainsi obtenu ne pourra qu’être supérieur à l’optimum du problème en nombres
entiers. C’est aussi le premier pas de la méthode de branch and bound que nous
allons maintenant décrire sur l’exemple.
Appliquons la méthode à l’exemple.
Pas 0. Résoudre la relaxation linéaire.
Pour cet exemple, on obtient comme solution de la relaxation linéaire le point noté
P0 à la figure 6.1 :

x1 = 4, 5 x2 = 4, 75 z0 = 305.

Cette solution est inacceptable car les variables ne sont pas entières. Cependant,
elle fournit une première borne supérieure sur zP∗ N E :

zP∗ N E ≤ 305 = zP∗ L .


Section 6.1. Méthode de “branch and bound” 57

Pas 1. Brancher sur une variable non entière.


La seconde idée de la méthode de branch and bound est (comme le nom l’indique)
d’opérer une séparation : la région réalisable va être séparée en deux sous-régions
dont aucune ne peut contenir la solution optimale non entière P0 . Cette séparation
nécessite le choix d’une variable de séparation. Le choix de cette variable est
heuristique. Différents choix sont possibles et de ce choix peut dépendre l’efficacité
de la méthode de résolution. Une façon simple de choisir cette variable est de
prendre la variable la plus distante d’un entier. Une alternative, parfois utilisée,
est de prendre la variable la plus proche d’un entier.
Le “critère de choix de la variable de branchement” adopté ici est de prendre
la variable la plus distante d’un entier.
Dans notre exemple, il s’agit de la variable x1 . On va effectuer un branchement
sur cette variable. Comme x1 ne peut prendre que des valeurs entières, il n’y a
aucune perte de généralité d’imposer que
soit x1 ≤ 4 soit x1 ≥ 5
Imposer cette condition va éliminer la solution courante P0 de la relaxation linéaire.
En général, si la variable choisie xk a une valeur non entière N +, on imposera
séparément :
soit xk ≤ N soit xk ≥ N + 1.

En imposant séparément l’une et l’autre conditions, on obtient deux sous-


modèles, un modèle fils et un modèle fille. Ce que l’on représente par une dia-
gramme du type de celui de la figure 6.2. Chaque nœud de cette figure correspond
à un problème linéaire. Le nœud 0 au modèle original. Le nœud 1 est le modèle
original avec en plus la restriction x1 ≤ 4, tandis que le nœud 2 correspond au
modèle original avec en plus la restriction x1 ≥ 5. On a ici numéroté les nœuds
dans l’ordre où ils ont été générés.
On peut maintenant résoudre les relaxations linéaires correspondant aux pro-
blèmes fils et fille. Dans notre exemple, on obtient les deux solutions suivantes :
Noeud 1 : x1 = 4, x2 = 4, 5, z1 = 285.
Noeud 2 : x1 = 5, x2 = 4, 5 z2 = 300.
Remarquez que les valeurs atteintes par la fonction objectif sont moins élevées
que dans la relaxation linéaire précédente. Ceci n’est pas étonnant : on a, en
effet, ajouté des contraintes et donc restreint l’espace des solutions réalisables.
Comme les deux sous-régions forment une représentation contenant l’ensemble
des solution entières, on peut en conclure que la borne supérieure sur zP∗ N E est :
zP∗ N E ≤ max(z1 , z2 ) = 300.
58 Chapitre 6. Résolution des modèles en nombres entiers

z 0 = 305
x1 = 4, 50
x2 = 4, 75
x1 4 x1 5

z1 = 285 z2 = 300
x1 = 4 x1 = 5
x 2 = 4, 5 x 2 = 4, 5
x2 4 x2 5

z3 = 290 z4 = ∞
x1 = 6 Problème
x2 = 4 non réalisable

Figure 6.2: Arbre de branch and bound.

Pas 2. Diviser à nouveau un nœud fils ou fille en deux.


Ici, aucune des deux solutions n’est acceptable car toutes les deux comportent des
parties fractionnaires. On va donc continuer en choisissant un des deux nœuds
pour le diviser à nouveau. Le choix du nœud à diviser est à nouveau heuristique
et peut à nouveau avoir une grande influence sur le temps total mis pour résoudre
le problème. Pour l’illustration de la méthode, nous adoptons la règle de choix
heuristique suivante :
Le “critère de choix du nœud à diviser” adopté ici est de prendre la la re-
laxation linéaire fournit la meilleure (c’est-à-dire la plus grande en cas de
maximisation) valeur de la fonction objectif.
Pour cet exemple, on choisit donc le nœud 2 et on répète le Pas 1.
Pas 1. Choisir une variable pour brancher.
Ici seule la variable x2 est non entière. On la choisit donc pour opérer le branche-
ment suivant :
soit x2 ≤ 4 soit x2 ≥ 5
On ajoute séparément chacune de ces contraintes aux contraintes du problème 2
et on génère ainsi les nœuds 3 et 4. Ceci est illustré à la figure 6.2. On résout
graphiquement les relaxations linéaires (voir figure 6.1) et on obtient les solutions
Section 6.1. Méthode de “branch and bound” 59

suivantes :

Noeud 3 : x1 = 6, x2 = 4, z3 = 290.
Noeud 4 : non réalisable

Noter que, au nœud 3, on a obtenu une solution entière dont la valeur correspon-
dante de la fonction objectif est 290. On a une première borne inférieure sur la
valeur optimale de la fonction objectif et on a donc que :

290 ≤ zP∗ N E

Il est clair également qu’il n’y a aucune raison de continuer à diviser le nœud 3
pour lequel la solution optimale du problème en nombres entiers a été obtenue.
On dit que le nœud 3 est coupé.
Remarquons aussi que le nœud 4 a conduit à un problème non réalisable. Ce
n’est pas étonnant vu que l’on rajoute de plus en plus de contraintes. A nouveau,
dans ce cas, il ne sert à rien de continuer à diviser ce nœud. On peut donc couper
le nœud 4.
Remarquons, pour terminer, que l’on peut également couper la branche du
nœud 1. En effet, la valeur de z1 = 285 est inférieure à la borne inférieure de 290
qui vient d’être trouvée. On n’a donc aucun espoir de trouver en poursuivant les
calculs à la branche 1 de trouver une solution entière meilleure que 290. Dans le
cas contraire, on aurait du diviser la branche 1.
La méthode est terminée puisqu’il n’existe plus de nœud à diviser. On déter-
mine la solution optimale comme étant la meilleure solution entière trouvée. Il
s’agit du point P3 suivant :

x∗1 = 6, x∗2 = 4, zP∗ N E = 290

On a ainsi, pour notre exemple, trouvé et aussi prouvé que la solution du nœud 3
était la solution optimale du problème en nombres entiers.
En conclusions, il y a trois raisons de couper une branche dans l’arbre :

1. lorsque la relaxation linéaire obtenue est non réalisable (cas du nœud 4),

2. lorsque la relaxation linéaire obtenue fournit une solution entière (cas du


nœud 3),

3. lorsque la valeur de la borne supérieure est inférieure à la valeur de la


meilleure solution entière obtenue (cas du nœud 1).
60 Chapitre 6. Résolution des modèles en nombres entiers

6.2 Exercices

6.1. Méthode de branch and bound. Considérons le problème en nombres


entiers suivant :

max z = x1 + 2x2





 −2x1 + 2x2 ≤ 1


scq  x1 + x2 ≤ 6, 5





 x1 , x2 ≥ 0 et entiers.
Résoudre par la méthode de branch and bound en résolvant les relaxations
linéaires de manière purement graphique.
6.2. Problème d’affectation de lignes aériennes. Une petite compagnie aérien-
ne dispose de six avions de 150 places. Elle désire affecter sa flotte d’avions
aux deux lignes intérieures ouvertes à la concurrence (les lignes OM et OT).
Le nombre de passagers désirant effectuer chaque jour un parcours sur la
ligne OM par cette nouvelle compagnie est 500, et de 200 sur la ligne OT. Le
coût marginal (frais variables tels que le carburant, les taxes d’atterrissage,
etc. . . ) d’un voyage sur la ligne OM est de 4 et de 3 sur la ligne OT. On
désire minimiser le coût d’exploitation en satisfaisant la demande.
(a) Formuler mathématiquement le problème de la meilleure affectation
de la flotte de cette compagnie.
(b) Résoudre par la méthode de branch and bound en résolvant chaque fois
la relaxation linéaire de manière purement graphique.
6.3. Méthode de branch and bound. Considérons le problème en nombres
entiers suivant :
zP∗ N E = max z = 5x1 + 4x2


 x1 +x2 ≤ 5, (1)


s.c.q.

10x1 +6x2 ≤ 45, (2)


 x1 , x2 ≥ 0 et entiers
On demande de résoudre le problème par la méthode de branch and bound
en résolvant les relaxations linéaires de manière purement graphique.
(a) Résoudre graphiquement la relaxation linéaire initiale.
(b) Représenter ici par un arbre la suite de vos calculs. Justifier les
différents pas de la méthode.
Partie III
Résolution au moyen du solveur d’Excel

61
Chapitre 7

Le solveur d’EXCEL.

7.1 Introduction

Le solveur d’EXCEL est un résolveur d’équation ainsi qu’un optimiseur exploitant


les techniques de la programmation linéaire, de la programmation en nombres
entiers et de la programmation non linéaire.
Illustrons ceci sur un exemple tiré de Hillier et Lieberman [8] déjà utilisé
au chapitre 3 pour illustrer le processus de formulation d’un problème linéaire.
Pour rappel, le problème s’énonce ainsi : une entreprise de fabrication de chassis
envisage la mise en production de deux nouveaux modèles, le chassis en aluminium
et le chassis en bois, au moyen des capacités résiduelles de ses trois ateliers : à
savoir l’atelier 1, où sont fabriqués les cadres en aluminium, l’atelier 2, où sont
fabriqués les cadres en bois et l’atelier 3 où le montage du verre sur le chassis est
réalisé pour les deux types de chassis.
Le nombre d’heures nécessaires par produit dans les trois ateliers et le nombre
d’heures encore disponibles par semaine dans ces ateliers sont donnés au ta-
bleau 7.1.

Atelier Chassis Chassis Capacité


aluminium bois disponible
1 1h 0h 4 h/semaine
2 0h 2h 12 h/semaine
3 3h 2h 18 h/semaine

Tableau 7.1: Temps nécessaires et capacités résiduelles

Les marges unitaires sont de 3 $ pour le chassis en aluminium et de 5 $ pour


le chassis en bois

63
64 Chapitre 7. Le solveur d’EXCEL.

On se pose la question suivante : combien produire de chassis de chaque type


par semaine pour maximiser le profit net ?
La formulation de ce problème est particulièrement simple. Elle a été faite
à la section 3.2. En posant x1 , le nombre de chassis en aluminium fabriqués par
semaine et x2 , le nombre de chassis en bois fabriqués par semaine, on obtient la
formulation suivante :
max z =
3x1 + 5x2


 x1 ≤ 4



 2x2 ≤ 12

s.c.q.  3x1 + 2x2 ≤ 18




 x1 ≥ 0


x2 ≥ 0

Comme vu au chapitre 3, pour un problème linéaire à deux variables, on peut


déterminer sa solution optimale graphiquement. Le point optimum est déterminé
comme étant le sommet de la région réalisable situé sur la droite d’isovaleur donnant
la valeur la plus élevée à l’objectif. Il s’agit ici du point :
x∗ = (2, 6)
donnant la valeur maximum du profit suivante :
z ∗ = 36.

Nous allons maintenant résoudre le problème au moyen du solveur d’Excel.


La première chose à faire est de rentrer les données numériques du problème et
les formules de calcul de la fonction objectif ainsi que du membre de gauche des
contraintes. Pour la clarté du modèle, il est indispensable de mettre également des
commentaires. Comme le problème est linéaire, on peut rentrer les coefficients
numériques sous forme d’une matrice. On remarquera au tableau 7.2 que les
coefficients d’une même équation ainsi que sa formule de calcul ont été rangés dans
une même ligne qui contient comme commentaire le nom de l’équation (Atelier
1, Atelier 2, . . . ). De même, les coefficients se rapportant à une même variable
ont été rangé en colonne sous le nom de la variable (x1 , x2 ). Remarquez ici, pour
comprendre les formules, que l’on a choisi de placer la valeur de x1 en cellule
$B$2$, tandis que celle de x2 est placée en cellule $C$2.
Il reste maintenant à indiquer à Excel, où se trouvent les variables, la fonction
objectif, le membre de gauche, de droite et le sens des contraintes. Ceci peut être
mis en œuvre en Excel (voir la copie d’écran 7.1) de la manière suivante :

1. Dans le menu “Outils”, choisir le sous-menu “Solveur”.


Section 7.1. Introduction 65

A B C D E
1 en alu en bois b
2 Production de chassis
3 Profit 3 5 =B3*$B$2+C3*$C$2
4 Capacité de l’atelier 1 1 0 =B4*$B$2+C4*$C$2 4
5 Capacité de l’Atelier 2 0 2 =B5*$B$2+C5*$C$2 12
6 Capacité de l’atelier 3 3 2 =B6*$B$2+C6*$C$2 18

Tableau 7.2: Exemple de problème linéaire.

Figure 7.1: Paramètres du solveur.

2. Dans la zone “Cellule à définir”, mettre la référence de la cellule de calcul


de l’objectif (ici $D$3).

3. Dans la zone “Égale à”, choisir Max ou Min (ici Max).

4. Dans la zone “Cellules variables”, mettre les références des cellules conte-
nant les variables (ici $B$2:$C$2) .

5. Dans la zone “Contraintes”, choisir “ajouter une contrainte”. Le menu


suivant apparaı̂t :

Cellule : Relation : Contrainte :

Pour chaque contrainte :


66 Chapitre 7. Le solveur d’EXCEL.

• Dans la zone “Cellule”, mettre la référence de la cellule contenant la


formule de calcul du membre de gauche (pour l’atelier 1 : $D$4). Il
faut donc préalablement avoir calculé ce membre de gauche.
• Dans la zone “Relation”, mettre le sens de la contrainte (par exemple,
pour l’atelier 1 : <=).
• Dans la zone “Contrainte”, mettre la référence de la cellule contenant
le membre de droite (pour l’atelier 1 : $E$4). On peut également
directement entrer une valeur. Mais cela n’est pas à conseiller sauf s’il
s’agit de la valeur ”0” qui n’est pas susceptible de varier.

6. Dans ”Option” (voir la copie d’écran 7.2), choisir ”Modèle supposé li-

Figure 7.2: Options du solveur.

néaire”. On doit également choisir l’option ”Supposé non négatif” qui


correspond aux contraintes de positivité des variables.

7. Lancer la commande “Résoudre”.

Le tableau 7.3 présente la solution du solveur. Il est à remarquer qu’il indique


directement dans les cases des variables la valeur de ces variables. On obtient
bien la solution déterminée graphiquement (2,6) à laquelle correspond une valeur
maximum de l’objectif (36).
Plusieurs remarques sur les particularités du solveur d’Excel s’imposent
ici :

1. On a rentré les trois contraintes en un bloc. On peut rentrer par groupe les
contraintes ayant même sens. Ainsi, dans l’exemple, on a rentré les trois
Section 7.1. Introduction 67

A B C D E
1 en alu en bois b
2 Production de chassis 2 6
3 Profit 3 5 36
4 Capacité de l’atelier 1 1 0 2 4
5 Capacité de l’atelier 2 0 2 12 12
6 Capacité de l’atelier 3 3 2 18 18

Tableau 7.3: Solution du solveur

contraintes de capacités en bloc par la commande suivante :


$D$4 : $D$6 <= $E$4 : $E$6

2. Excel détermine le nom d’une variable ou le nom d’une contrainte en prenant


le premier commentaire situé à gauche de la cellule et le premier commentaire
situé au dessus de la cellule de calcul de la variable ou de la contrainte. Ainsi
les noms des variables x1 et x2 seront respectivement “production de chassis
en alu” et “production de chassis en bois”.
3. Les contraintes de positivité des variables doivent être entrées explicitement,
ceci contrairement à la convention de certains optimiseurs qui considèrent
par défaut des variables non négatives. On a rentré ces contraintes, comme
indiqué plus haut, en sélectionnant l’option ”supposé non négatif”.
4. Seules les variables non calculées (les variables indépendantes du modèle)
doivent être rentrées dans la section variables. Ainsi, si l’on avait cal-
culé dans une cellule le nombre d’heures passées dans l’atelier 1, cette cel-
lule contiendrait une variable (au sens mathématique du terme) mais ne
devrait pas être rentrée dans les cellules variables pour Excel, sans quoi
Excel considérerait qu’il s’agit d’une variable indépendante et effacerait sa
formule de calcul pour y mettre une valeur numérique.
5. Si le modèle est linéaire (contraintes linéaires et fonction objectif linéaire),
on a tout intérêt à sélectionner l’option “Modèle supposé linéaire”, ce qui
déclenchera l’algorithme du Simplexe plutôt qu’un algorithme général de
programmation non linéaire.
6. Remarquez enfin que pour modifier le modèle on peut utiliser :
• la commande “supprimer la contrainte”;
• la commande “modifier la contrainte”.
68 Chapitre 7. Le solveur d’EXCEL.

7.2 Les rapports du solveur

Lorsque le solveur a terminé, soit qu’il ait trouvé la solution optimale, soit qu’il
ne parvienne pas à en trouver (problème non réalisable ou non convergence de
l’algorithme de résolution), la boı̂te de dialogue illustrée à la figure 7.3 apparaı̂t
(ici avec le message de sortie que l’on attendait, à savoir l’optimalité de solution).

Figure 7.3: Rapports possibles du solveur.

Elle laisse le choix entre garder dans les cellules variables la solution obtenue
par le solveur soit rétablir la solution initiale (généralement zéro partout). Cette
boı̂te permet également de générer à la demande trois types de rapport :

• le rapport des réponses,

• le rapport de sensibilité,

• le rapport des limites.

7.2.1 Le rapport des réponses

Le rapport des réponses (voir figure 7.4) fournit :

• les informations sur l’objectif : la référence de la cellule, le nom, la valeur


originale et finale de la “cellule cible (à Maximiser)”;

• les informations sur les variables : la référence de la cellule, le nom, la


valeur originale et finale des “cellules variables”;

• les informations sur les contraintes : la référence de la cellule, le nom, la


valeur finale du membre de gauche, la formule, son status (active ou non à la
solution finale), ainsi que la marge (valeur de l’écart entre les deux membres
de l’inégalité).
Section 7.2. Les rapports du solveur 69

Figure 7.4: Rapports des réponses.

Pour déterminer le nom, Excel fait la concaténation du premier commentaire


rencontré dans la même ligne et du premier commentaire rencontré dans la même
colonne. Ceci est particulièrement utile si l’on a des variables à deux indices
comme dans un problème de transport. En effet, les variables seront stockées
dans un tableau où les lignes correspondront aux origines et les colonnes aux
destinations. Il suffira de mettre “de i” à gauche de la ligne et “vers j” en haut de
la colonne pour que le nom de la variable soit “de i vers j” .

7.2.2 Le rapport de sensibilité

Le rapport de sensibilité (voir figure 7.5) fournit :

• les informations sur les variables : la référence de la cellule, le nom et la


valeur finale de la variable, le coût réduit, le coefficient objectif, l’accrois-
sement et la diminution maximale de ce coefficient avant qu’une variable ne
change de valeur.
• les informations sur les contraintes : la référence de la cellule, le nom et la
valeur finale du membre de gauche de la contrainte, le prix caché, la valeur du
membre de droite, l’augmentation et la diminution maximum de ce membre
de droite telle que le prix caché reste le même.
70 Chapitre 7. Le solveur d’EXCEL.

Figure 7.5: Rapport de sensibilité.

7.2.3 Le rapport des limites

Figure 7.6: Rapport des limites.

Le rapport des limites (voir figure 7.6) fournit pour chaque variable :

• sa limite inférieure, c’est-à-dire la plus petite valeur de la variable qui satisfait


les contraintes en maintenant les autres variables fixées à leur valeur;

• la limite supérieure, c’est-à-dire plus grande valeur de la variable qui satisfait


les contraintes en maintenant les autres variables fixées à leur valeur.
Section 7.3. Exercices 71

7.3 Exercices

7.1. Recyclage du papier. Pour l’exercice 31 formulé au chapitre 3,

(a) Résoudre au moyen du Solveur d’Excel.


(b) Donner la solution obtenue par Excel.

7.2. Organisation de la distribution d’eau. Une agence pour l’eau est chargé,
dans son district, du captage de l’eau et de la fourniture des agglomérations
situées dans son district. Le captage est possible auprès de 3 sources d’offre
maximum donnée (le captage est limité pour ne pas diminuer trop le niveau
des nappes souterraines). Le tableau 7.4 donne en dernière colonne l’offre
de chaque source. Il y a quatre villes à servir dans ce district. Le problème
est la répartition de l’eau disponible entre ces quatre villes durant la saison
sèche. Chaque ville, a des besoins vitaux en eau qui sont repris en avant
dernière ligne du tableau 7.4. La compagnie de transport d’eau est obligée
de fournir ces quantités au minimum. Chaque ville, a une demande effective,
qui peut être plus élevée (elle est donnée en dernière ligne du tableau 7.4).
Chacune des villes peut être alimentée par n’importe quelle source, sauf la
ville 4 qui ne peut être alimentée à partir de la source 3. Cependant, vu
l’éloignement géographique, le coût unitaire de fourniture dépend à la fois
du lieu de production et du lieu de consommation de l’eau (voir le tableau
7.4 pour les données.)

Coût de Destination Offre


fourniture Ville Ville Ville Ville de la
venant de 1 2 3 4 source
Source 1 16 13 22 17 50
Source 2 14 13 19 15 60
Source 3 19 20 23 - 50
Besoin 30 70 0 10
Demande 50 70 30 60

Tableau 7.4: Coût de fourniture

On se demande comment organiser le transport de toute l’eau disponible de


sorte à assurer à toutes les villes, leurs besoins minimaux tout en minimisant
les coûts de transport totaux pour le district

(a) Formuler le problème de transport de l’eau.


(b) Résoudre au moyen du Solveur d’Excel.
72 Chapitre 7. Le solveur d’EXCEL.

7.3. Transport de pondéreux. Une entreprise a 3 chantiers en cours : C1, C2,


C3. Elle possède 2 unités de production de béton, B1 et B2, et 2 carrières,
G1 et G2, où sont produits les gravillons qui entrent dans la fabrication du
béton. Si la production interne ne suffit pas, il est possible de faire appel
à la sous-traitance pour la production de gravillons (unité G3) et/ou pour
la production de béton (unité B3). Dans la mesure du possible, on évite
d’utiliser la sous-traitance. Il faut 1/2 tonne de gravillons pour 1 tonne de
béton. Les quantités de béton à fournir dans la période aux chantiers C1,
C2 et C3 sont respectivement 100, 200 et 130 tonnes. Les capacités de
production en gravillons des unités G1 et G2 sont respectivement 75 et 60
tonnes pendant la période. La carrière du sous-traitant G3 peut fournir 100
tonnes au maximum. Les capacités de production en béton des unités B1
et B2 sont respectivement de 60 et 120 tonnes. Le sous-traitant B3 a une
capacité de 600 tonnes pendant la même période. Les centrales à béton B1,
B2 et B3 utilisent uniquement les gravillons provenant de G1, G2 ou G3.
Les coûts de transport unitaire (en euro/tonne) des gravillons sont donnés

EURO/tonne vers B1 vers B2 vers B3


de G1 100 80 85
de G2 60 70 65
de G3 120 180 140

Tableau 7.5: Coûts de transport des gravillons

à la table 7.5 tandis que les coûts de transport unitaire (en euro/tonne) des
bétons sont donnés à la table 7.6. On veut déterminer comment satisfaire les
EURO/tonne vers C1 vers C2 vers C3
de B1 40 50 60
de B2 25 30 30
de B3 40 45 60

Tableau 7.6: Coûts de transport des bétons

commandes acceptées à coût de transport minimum tout en n’ayant recours


à la sous-traitance que pour les capacités manquantes de façon interne.
(a) Formuler le problème (choix des variables, expression de l’objectif et
des contraintes).
(b) Mettre sous la forme d’un modèle de calcul en Excel.
(c) Donner la solution obtenue par Excel.
Chapitre 8

Étude de cas 1 : la collecte de bouteilles

8.1 Énoncé du problème

Une entreprise spécialisée dans le recyclage de bouteilles en plastique possède deux


usines, l’une située à Liverpool et l’autre à Brighton. De plus, elle dispose de quatre
entrepôts de stockage intermédiaire situés à Newcastle, Birmingham, London et
Exeter respectivement. Cette entreprise achète son ingrédient à six fournisseurs :
six grosses villes avec lesquelles elle a un contrat d’achat des bouteilles à recycler.
Les bouteilles à recycler peuvent aller directement aux usines, soit transiter via les
dépôts. Les tableaux 8.1, 8.2 et 8.3 fournissent les coûts de transport unitaires (en
Livres par tonne). Une barre indique que le transport n’est pas possible entre les
deux lieux.

Coût de Réception
fourniture Usine de Usine de
venant de Liverpool Brighton
Newcastle 0,5 -
Birmingham 0,5 0,3
London 1,0 0,5
Exeter 0,2 0,2

Tableau 8.1: Coût de fourniture des dépôts vers les usines

Chaque usine a une capacité mensuelle de traitement qui ne peut être dépassée.
Elle est donnée au tableau 8.4 en tonnes par mois. Chaque dépôt a une capacité
maximum de transit par mois qui est donnée au tableau 8.5 en tonnes par mois.
Chaque ville a une fourniture mensuelle donnée dans le tableau 8.6 en tonnes par
mois. On se demande comment organiser la collecte des bouteilles pour minimiser

73
74 Chapitre 8. Étude de cas 1 : la collecte de bouteilles

Coût de Réception
fourniture Usine de Usine de
venant de Liverpool Brighton
Ville 1 1,0 2,0
Ville 2 - -
Ville 3 1,5 -
Ville 4 2,0 -
Ville 5 - -
Ville 6 1,0 -

Tableau 8.2: Coût de fourniture des villes vers les usines

Coût de Réception
fourniture Dépôt de Dépôt de Dépôt de Dépôt de
venant de Newcastle Birmingham London Exeter
Ville 1 - 1,0 - -
Ville 2 1,5 0,5 1,5 -
Ville 3 0,5 0,5 2,0 0,2
Ville 4 1,5 1,0 - 1,5
Ville 5 - 0,5 0,5 0,5
Ville 6 1,0 - 1,5 1,5

Tableau 8.3: Coût de fourniture des villes vers les dépôts

Usine de Usine de
Liverpool Brighton
Capacité 150 000 200 000

Tableau 8.4: Capacité des usines

Dépôt de Dépôt de Dépôt de Dépôt de


Newcastle Birmingham London Exeter
Capacité 70 000 50 000 100 000 40 000

Tableau 8.5: Capacité des dépôts

Ville 1 Ville 2 Ville 3 Ville 4 Ville 5 Ville 6


Offre 50 000 10 000 40 000 35 000 60 000 20 000

Tableau 8.6: Offre des villes


Section 8.1. Énoncé du problème 75

les coûts de transport.

8.1. Formuler mathématiquement le problème.

8.2. Écrire votre modèle en Excel et le résoudre au moyen d’Excel.

8.3. Il est maintenant possible de construire un nouveau dépôt à Bristol et à


Northampton. Il est également possible d’étendre celui de Birmingham. On
considère qu’il n’est pas possible d’avoir plus de quatre dépôts ouverts et
on peut, si nécessaire, fermer ceux de Newcastle et d’Exeter. Le tableau 8.7
donne les coûts d’ouverture (en milliers de Livres) et les capacités mensuelles
de transit (en milliers de tonnes par mois) des nouveaux dépôts.

Dépôt Coût Capacité


Bristol 12 30
Northampton 4 25
Extension de Birmingham 3 20

Tableau 8.7: Coûts d’ouverture

Le tableau 8.8 donne les économies due à la fermeture (en milliers de Livres)
des deux dépôts.

Dépôt Économie
Newcastle 10
Exeter 5

Tableau 8.8: Économie due à la fermeture

Le tableau 8.9 donne les coûts de fourniture pour les nouveaux dépôts.
Indiquer comment modifier votre formulation mathématique obtenue au cha-
pitre précédent pour pouvoir déterminer quel(s) nouveau(x) dépôt(s) faut-
il ouvrir, si le dépôt de Birmingham doit être étendu et quel(s) dépôt(s)
doit(vent) être fermé(s).

8.4. Résoudre au moyen d’Excel.


76 Chapitre 8. Étude de cas 1 : la collecte de bouteilles

Coût de Fournisseur
fourniture Usine de Usine de Dépôt de Dépôt de
vers Liverpool Brighton Bristol Northampton
Bristol 0,6 0,4
Northampton 0,4 0,3
Client 1 1,0 2,0 1,2 -
Client 2 - - 0,6 0,4
Client 3 1,5 - 0,5 -
Client 4 2,0 - - 0,5
Client 5 - - 0,3 0,6
Client 6 1,0 - 0,8 0,9
Tableau 8.9: Coût de fourniture (nouveaux dépôts)
Chapitre 9

Étude de cas 2 : le transport routier

On veut déterminer la manière dont se répartissent les usagers d’un réseau routier.
Pour cela, on va considérer que les usagers choisissent le chemin entre leur origine
à leur destination de temps minimum. Un équilibre sera atteint lorsque, pour tout
groupe d’utilisateurs du réseau ayant même origine et même destination :

• tous les chemins utilisés ont un temps de parcours identique.

• tous les chemins non utilisés ont un temps supérieur à ce temps.

Les arcs du réseau sont repris au tableau 9.1. Leur temps de traversée, noté ta (xa )
pour l’arc a est fonction de xa , le flux sur cet arc :

ta (xa ) = aa + ba xa

où le temps de traversée de l’arc est exprimé en minutes et le flux en véhicules par
heure. On considère ici deux paires origine destination. La première va du nœud

Origine Destination aa ba
A B 21 0,01
A C 8 0,1
B D 6 0,1
C B 4 0,02
C D 19 0,01

Tableau 9.1: Description des arcs

A vers le nœud D. La seconde va du nœud C vers le nœud D. Il y a un flot de qAD =


50 véhicules par heure allant de A vers D et un flux qCD = 50 véhicules par heure
allant de C vers D.

77
78 Chapitre 9. Étude de cas 2 : le transport routier

Considérons le problème d’optimisation non linéaire suivant :


 xa
min z(x) = ta (w)dw
 a 0

 fp δp,od = qod ∀od (9.1)

scq 
p

 fp ≥ 0 ∀p

où xa note le flux sur l’arc a et fp note le flux sur le chemin p et δp,od = 1 si le
chemin p relie o à d. La relation entre x et les variables fp étant donnée par la
relation suivante :
xa = fp ηa,p
p

où ηa,p = 1 si l’arc a appartient au chemin p.


En utilisant les conditions de Kuhn et Tucker de (9.1), on peut montrer que les
flux optimaux satisfont les conditions d’équilibre de l’utilisateur.

9.1. Exprimer le problème (9.1) en un modèle de calcul EXCEL.

9.2. Le résoudre afin d’en déduire flux ainsi que les temps de traversée des divers
arcs.

9.3. Vérifier les conditions d’équilibre de l’utilisateur de votre solution.


Bibliographie

[1] BAGLIN Gérard, Olivier BRUEL, Alain GARREAU, Michel GREIF et


Christian VAN DELFT, Management Industriel et Logistique, 3ème Édition,
Economica, Paris, 2001.

[2] BROOKE Anthony, David KENDRICK et Alexander MEERAUS, GAMS


User’s guide Release 2.25, The Scientific Press, San Francisco, 1992.

[3] EXCEL, Guide de l’utilisateur, Microsoft, 1992.

[4] FORD L.K. et D.K. FULKERSON, Flows in networks, Princeton University


Press, Princeton, New Jersey, 1962.

[5] GIARD Vincent, Gestion de la production et des flux, 3ème Édition, Econo-
mica, Paris, 2003.

[6] GUERET Christelle, Christian PRINS et Marc SEVAUX, Applications of


optimization with XPRESS-MP, Eyrolles, Paris, 2000.

[7] HEIZEZ Jay, Barry RENDER, Operations Management, 8ème édition, Pear-
son Education, Upper Saddle River, 2006.

[8] F.S. HILLIER et G.S. LIEBERMAN, Introduction to Operations Research,


6ème édition, Mac Graw-Hill International Editions, Singapour, 1995.

[9] F.S. HILLIER, M.S. HILLIER et G.S. LIEBERMAN, Introduction to Mana-


gement Sciences, 1ère édition, Mac Graw-Hill International Editions, Boston,
2000.

[10] Lee KRAJEWSKI, Manoj MALHOTRA et Larry RITZMAN, Operations


Management, 8ème édition, Pearson Education, Upper Saddle River, 2007.

[11] LACAZE Dominique, Optimisation appliquée à la gestion et à l’économie,


Economica, 1990.

[12] LUENBERGER D, Linear and Nonlinear Programming, Addison Wesley,


1984.

79
80 Bibliographie

[13] Y. NORBERT, R. OUELLET et R. PARENT, La recherche opérationnelle,


Gaëtan Morin Éditeur, Montréal-Paris, 1995.

[14] SHEFFI Yosef, Urban Transportation Networks: Equilibrium Analysis with


Mathematical Programming Methods, Prentice-Hall, New Jersey, 1985.

[15] Hamdy TAHA, Operations Resaerch: an Introduction, 8ème édition, Pearson


Education, Upper Saddle River, 2007.

[16] M.P. WILLIAMS, Model building in Mathematical Programming, John Wi-


ley, 1990.

[17] M.P. WILLIAMS, Model solving in Mathematical Programming, John Wiley,


1992.

Vous aimerez peut-être aussi