Vous êtes sur la page 1sur 58

INFO-F-310 - Algorithmique 3 et Recherche Oprationnelle

Yves De Smet

Bernard Fortz

2013-2014

Table des matires


I

Introduction

Aide la dcision et modles mathmatiques

Quelques exemples de modles mathmatiques

Tour dhorizon des techniques de recherche oprationnelle

II
4

III

Programmation linaire

Dfinition, exemples et mthode de rsolution


4.1 Notions de bases . . . . . . . . . . . . . . . . . . . . . . .
4.2 Exemples de modles linaires . . . . . . . . . . . . . . . .
4.3 Forme standard et forme canonique dun programme linaire
4.4 Rsolution de programmes linaires . . . . . . . . . . . . .
4.4.1 Rsolution graphique . . . . . . . . . . . . . . . . .
4.4.2 La mthode du simplexe . . . . . . . . . . . . . . .
4.4.3 La mthode des deux phases . . . . . . . . . . . . .
4.4.4 Cas particuliers . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

6
6
6
8
10
10
12
16
17

Dualit
5.1 Le problme dual . . . . . . . . . . . .
5.2 Relations primal/dual . . . . . . . . . .
5.3 Interprtation conomique de la dualit
5.4 Mthode simplexe duale . . . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

20
20
21
22
23

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

Solveurs et langages de modlisation

25

Le problme de transport

30

Dfinition et exemples

30

Algorithme pour le problme de transport

31

Le problme de transbordement

34

IV

Le flot maximum

36

10 Introduction

36

11 Formulation

36
1

12 Coupe minimum

36

13 Algorithme de Ford-Fulkerson

36

39

Flots de cot minimum

14 Dfinitions et exemples

39

15 Algorithme de chemins augmentants

39

16 Extensions

44

VI

46

Couplages

17 Introduction

46

18 Affectations bipartites

47

19 Le problme des mariages stables

52

VII

54

La programmation dynamique

20 Retour aux plus courts chemins

54

21 Le problme de sac--dos

54

22 Dtermination de la taille des lots

56

Premire partie

Introduction
1

Aide la dcision et modles mathmatiques

Un premier problme
Exemple 1 (Achat de billets davion).
Un homme daffaires doit effectuer 5 voyages entre Fayetteville (FYV) Denver (DEN), en partant le lundi de
FYV et revenant le mercredi de DEN FYV.
Billet aller-retour : $400.
Rduction de 20 % si un weekend est inclus.
Aller simple : 75 % du prix aller-retour.
Question
Comment acheter les billets pour les 5 semaines ( prix minimum) ?
Aide la dcision
Problme daide la dcision
1. Quelles sont les alternatives possibles ?
2. Quelles sont les restrictions cette dcision ?
3. Quel est lobjectif utilis pour valuer les alternatives ?
Restrictions
FYV-DEN le lundi et DEN-FYV le mercredi de la mme semaine.
Evaluation des alternatives
Alternatives
Acheter 5 FYV-DEN-FYV normaux. 5 x $400 = $2000
Acheter un FYV-DEN, 4 DEN-FYV-DEN comprenant un weekend et un DEN-FYV. 0.75 x $400 + 4 x 0.8 x
$400 + 0.75 x $400 = $1880
Acheter un FYV-DEN-FYV pour le lundi de la premire semaine et le mercredi de la dernire semaine, et 4
DEN-FYV-DEN comprenant un weekend pour les autres voyages. 5 x 0.8 x $400 = $1600
La troisime alternative est la meilleure.
Modle de recherche oprationnelle
Ingrdients principaux
Alternatives (variables, inconnues du problme).
Restrictions (contraintes).
Fonction objectif optimiser (minimiser ou maximiser).
Dfinition 1 (Solution admissible). Une solution admissible est un ensemble de valeurs donnes aux variables qui
satisfait toutes les contraintes.
Dfinition 2 (Solution optimale). Une solution optimale est une solution admissible qui optimise la fonction
objectif.
Dfinition 3 (Modle de recherche oprationnelle). Maximiser ou minimiser (fonction objectif) Sujet { contraintes
}
Variables : continues (relles), entires, boolennes (0/1), . . .
Objectif : linaire / non-linaire, concave / convexe, . . .

Contraintes : linaire / non-linaire, concave / convexe, galits / ingalits, . . .


Paramtres : connus avec certitude (modles dterministes) / incertains (modles stochastiques)
Exemple 2 (Maximisation de la surface dun rectangle). Supposons que lon veut plier un fil de fer de longueur L
en rectangle de manire maximiser la surface du rectangle.
l

Formulation
max
s.t.

A = lw
l + w = L2

Solution

2
A = L2 w w = Lw
2 w
L
dA
dw = 2 2w = 0
Solution optimale : w = l = L4
Mthodes de rsolution
Dans lexemple, solution analytique au problme.
La plupart des problmes pratiques sont trop grands ou trop complexes pour tre rsolus analytiquement.
Mthodes itratives
Dplacement de solution en solution pour atteindre loptimum (mthodes exactes) ou une "bonne" solution
(heuristiques).
Importance des algorithmes et des solutions informatiques.

Quelques exemples de modles mathmatiques

Un problme de placement
Une entreprise veut placer un capital K. Six modalits de placement sont offertes sur le march, les taux dintrt
tant respectivement 3%, 2, 5%, 3, 5%, 4%, 5% et 4, 5%.
Pour satisfaire aux contraintes lgales, lentreprise doit placer au moins 40% de son capital suivant les deux
premires modalits, au plus 35% suivant les deux suivantes et au plus 35% suivant les deux dernires.
Combien lentreprise doit-elle placer dans chaque modalit de faon maximiser son intrt total ?
Fabrication de crme glace
Un fabriquant dsire produire 100 kg dune prparation de base pour crme glace. Cette prparation doit contenir
21,5 kg de matires grasses, 21 kg de sucre, 1,2 kg doeufs et 56,3 kg deau. Les ingrdients dont il dispose
figurent ci-dessous, avec les pourcentages (en poids) de chaque constituant, et le cot au kg.
Crme

Matires gr. Sucre Oeufs Eau Cot


40
60
3

Jaune doeuf frais

50

40 10

Lait

12

88

Jaune doeuf surgel

30

40 16

Sirop

14
70

Eau

30 0,8
100

Le fabriquant dsire dterminer la composition du mlange de cot minimal.


4

Localisation dmetteurs de tlvision


Cinq sites ont t retenus pour construire des metteurs de tlvision destins desservir 10 localits. Le tableau
ci-dessous donne, pour chaque site, le cot de construction dun metteur sur ce site et les localits desservies par
cet metteur.
Site
1
2
3
4
5

Cot
4
7
11
6
10

Localits desservies
1, 3, 5, 7, 8, 10
2, 4
1, 6, 8, 9, 10
1, 2, 4, 8, 10
3, 5, 6, 7, 9

Un problme de localisation
Une socit de distribution dsire construire un ou plusieurs entrepts partir desquels elle servira 6 clients
importants. Quatre terrains appartenant la socit sont disponibles. Le tableau ci-dessous reprend, pour chacun
deux, la capacit maximum de lentrept qui pourrait y tre construit, le cot de construction et le cot unitaire
de transport de cet ventuel entrept vers chaque client. Sachant que les quantits demandes par les clients sont
respectivement de 200, 250, 300, 100, 150, et 175, o faut-il construire un (des) entrept(s) et comment faut-il
organiser la distribution de faon minimiser le cot total de lopration ?
Clients
Entrepts
1
2
3
4

2
3
4
6

3
1
1
1

1
1
2
1

4
2
3
1

5
2
2
2

2
1
5
0

Capacit
maximum
500
400
600
1000

Cot
construction
100
120
150
80

Tour dhorizon des techniques de recherche oprationnelle

Recherche oprationnelle
La recherche oprationnelle est une technique daide la dcision.
Etapes pratiques
1. Dfinition du problme
2. Construction dun modle
3. Solution du modle
4. Validation du modle
5. Implmentation de la solution
Mthodologie
Les tapes les plus importantes sont la dfinition du problme (suppose un dialogue avec le dcideur) et la
construction du modle (prendre conscience des hypothses simplificatrices et de leur impact).
La phase de validation doit permettre de remettre en cause la validit du modle.
Une approche globale ncessite donc un aller-retour constant entre le modle et les attentes du dcideur.
Techniques principales
Programmation linaire
Programmation en nombres entiers
Optimisation dans les rseaux
Programmation non linaire
"Optimisation" multi-critres
Programmation dynamique
Modles stochastiques
Simulation

Deuxime partie

Programmation linaire
4
4.1

Dfinition, exemples et mthode de rsolution


Notions de bases

Programmation linaire
Dfinition 4 (Programme linaire). Modle mathmatique dans lequel la fonction objectif et les contraintes sont
linaires en les variables.
Applications
Optimisation de lusage de ressources limites dans les domaines militaire, industriel, agricole, conomique, ...
Existence dalgorithmes trs efficaces pour rsoudre des problmes de trs grande taille (simplexe, points intrieurs)

4.2

Exemples de modles linaires

Exemple 3 (Production de peinture). Une socit produit de la peinture dintrieur et dextrieur partir de deux
produits de base M1 et M2.
Donnes

M1
M2
Profit par tonne

Quantit utilise
par tonne
Extrieure
Intrieure
6
4
1
2
5
4

Quantit disponible
par jour
24
6

Contraintes supplmentaires
Demande maximum en peinture dintrieur : 2 tonnes / jour.
La production en peinture dintrieur ne dpasser que dune tonne celle dextrieur.
Formulation (Production de peinture)
Alternatives (variables, inconnues du problme)
x1

= tonnes de peinture dextrieur


produites par jour

x2

= tonnes de peinture
dintrieur produites par jour

Fonction objectif optimiser


max z = 5x1 + 4x2
Restrictions (contraintes)

6x1 + 4x2

24

x1 + 2x2

x2

x2 x1

x1 , x2

Solutions et mthodes de rsolution


Solution admissible : satisfait toutes les contraintes.
x1 = 3, x2 = 1 ( z = 19)
Nous voulons trouver la solution (admissible) optimale.
Infinit de solutions admissibles !
Mthodes pour trouver loptimum
Mthode graphique
Simplexe
( Ellipsoide, points intrieurs )
Exemple 4 (Diet problem). On dsire dterminer la composition, cot minimal, dun aliment pour btail qui
est obtenu en mlangeant au plus trois produits bruts : orge et arachide.
La quantit ncessaire par portion est de 400g.
Laliment ainsi fabriqu devra comporter au moins 30% de protines et au plus 5% de fibres.
Donnes
Quantit par gramme daliment
Aliment
Protines Fibres
Orge
0.09
0.02
Arachide
0.60
0.06

Cot
(EUR / kg)
1.5
4.5

Formulation (Diet problem)


Variables
x1

= grammes dorge par portion

x2

= grammes darachide par portion

Objectif
min z = 0.0015x1 + 0.0045x2
Contraintes
Quantit totale : x1 + x2 400
Protines : 0.09x1 + 0.6x2 0.3(x1 + x2 )
Fibres : 0.02x1 + 0.06x2 0.05(x1 + x2 )
Non-ngativit : x1 , x2 0

4.3

Forme standard et forme canonique dun programme linaire

Forme standard
Dfinition 5 (Forme standard). Un programme linaire est sous forme standard lorsque toutes ses contraintes sont
des galits et toutes ses variables sont non-ngatives.
Reprsentation matricielle
max

cT x

s.c.

Ax = b
x0

n variables, m contraintes, m < n, c, x Rn ,

b Rm ,

A Rmn .

Forme canonique
Dfinition 6 (Forme canonique). Un programme linaire est sous forme canonique lorsque toutes ses contraintes
sont des ingalits et toutes ses variables sont non-ngatives.
Reprsentation matricielle
max
s.t.

cT x
Ax b
x0

n variables, m contraintes, c, x Rn ,

b Rm ,

A Rmn .

Thorme 1 (Equivalence des formes standard et canonique). Tout programme linaire peut scrire sous forme
standard et sous forme canonique.
Dmonstration.
Une containte dingalit aT x b peut tre transforme en galit par lintroduction dune variable dcart :
aT x + s = b,
s 0.
Une contrainte dgalit aT x = b peut tre remplace par deux ingalits :
aT x b
aT x b
aT x b aT x b.
min cT x = max cT x.
Variable x non restreinte : substitution par deux variables (partie positive et ngative)
x = x+ x
x+ , x 0.
Il existe toujours une solution optimale telle que x+ = 0 ou x = 0.

Forme standard du problme de production de peinture


max z =

5x1 + 4x2

s.c. 6x1 + 4x2

24

x1 + 2x2

x2

x2 x1

x1 , x2

Forme standard
max z =
s.c.

5x1 +4x2
6x1 +4x2 +s1
= 24
x1 +2x2
+s2
= 6
x2
+s3
= 2
x1 +x2
+s4 = 1
x1 , x2 , s1 , s2 , s3 , s4 0

Forme matricielle
max
s.t.

cT x
Ax = b
x0

c=

5
4
0
0
0
0

,x =

x1
x2
s1
s2
s3
s4

,A =

6
1
0
1

4 1 0 0 0

2 0 1 0 0
,b =

1 0 0 1 0
1 0 0 0 1

24
6

2
1

Variables pouvant prendre des valeurs ngatives


Exemple 5 (Vente de hamburgers).
Un fast-food vend des hamburgers et des cheeseburgers. Un hamburger utilise 125 g. de viande alors quun
cheeseburger nen utilise que 100 g.
Le fast-food dmarre chaque journe avec 10 kg de viande mais peut commander de la viande supplmentaire
avec un cot additionnel de 2 EUR par kg pour la livraison.
Le profit est de 0.02 EUR pour un hamburger et 0.015 EUR pour un cheeseburger.
La demande ne dpasse pas 900 sandwiches / jour, et les surplus de viande sont donns au Restos du Coeur.
Combien le fast-food doit-il produire de sandwiches de chaque type par jour ?
Variables
x1 = nombre de hamburgers / jour x2 = nombre de cheeseburgers / jour
Contraintes
Commande de viande supplmentaire :
125x1 + 100x2 + x3 = 10000,

x3 non restreint

Le cot pour la viande supplmentaire apparat seulement si x3 < 0.


9

Substitution de x3 par 2 variables non-ngatives :

x3 = x+
3 x3 , x3 , x3 0

125x1 + 100x2 + x+
3 x3 = 10000

Borne suprieure sur les ventes : x1 + x2 900.


Modle complet
max z =
s.c.

0.02x1 + 0.015x2 0.002x


3

125x1 + 100x2 + x+
3 x3

x1 + x2

x1 , x2 , x+
3 , x3

= 10000
900
0

Remarque : Il existe une solution optimale telle que x+


3 = 0 ou x3 = 0.

4.4

Rsolution de programmes linaires

4.4.1

Rsolution graphique

Reprsentation graphique
(5)

(1)

(4)

(2)

(3)
(6)

Production de peinture
max z = 5x1 + 4x2
sous les contraintes :
6x1 + 4x2

24

(1)

x1 + 2x2

(2)

x2

(3)

x2 x1

(4)

x1

(5)

x2

(6)

10

Gomtrie des solutions

D
E

z=10

Ensemble des solutions admissibles


Polydre (ABCDEF)
Courbes de niveaux de lobjectif
Ensemble de solutions ayant un profit (valeur de lobjectif) donn : intersection entre une droite et le polydre.
Amlioration de la solution
Recherche dune direction dans laquelle le profit z augmente.
Rsolution graphique (Production de peinture)

z=21
C
B

D
E

Recherche de la solution optimale


La droite mobile doit garder une intersection avec lensemble des solutions admissibles.
Solution optimale : x1 = 3, x2 = 1.5 (E)
La solution optimale est un sommet du polydre.
Cette observation est la base de lalgorithme du simplexe.

11

Rsolution graphique (Diet problem)

Diet problem
min z = 0.0015x1 + 0.0045x2
sous les contraintes
x1 + x2

400

0.21x1 0.30x2

0.03x1 0.01x2

x1

x2

Solution optimale
x1 =

4.4.2

4000
' 235.3
17

x2 =

2800
' 164.7
17

z=

186
' 1.094
170

La mthode du simplexe

Ides de base
Solution optimale : sommet (point extrme).
Ide fondamentale du simplexe : dplacement de sommet en sommet adjacent de manire amliorer la fonction
objectif.
Transformation des ingalits en galits : forme standard du programme linaire - systme de m quations
n inconnues (m < n).
Identification algbrique des sommets : correspondance avec les bases dun systme dquations.
Solutions de base
Systme de m quations linaires n inconnues (m < n) : infinit de solutions.
Si on fixe zro n m variables : systme de m quations m inconnues possdant une solution unique (si la
matrice est inversible). Cest une solution de base.
Dfinition 7 (Solution de base). Une solution de base dun programme linaire est la solution unique du systme
de m quations m inconnues obtenu en fixant zro n m variables (pourvu que la matrice du systme soit
inversible).
Les variables fixes zro sont appeles variables hors base et les autres variables en base.

12

Exemple 6 (Production de peinture). Prenons B = {s1 , s2 , s3 , s4 }.


z
s1
s2
s3
s4

= 0 +5x1
= 24 6x1
= 6 x1
= 2
= 1 +x1

+4x2
4x2
2x2
x2
x2

Si x1 = x2 = 0, alors s1 = 24, s2 = 6, s3 = 2, s4 = 1. Toutes ces valeurs sont non-ngatives et la solution est


ralisable.
Dfinition 8 (Solution de base ralisable). Une solution de base telle que toutes les variables prennent des valeurs
non-ngatives est appele solution de base ralisable.
Gomtrie des solutions de base

D
E

B
A

Prenons B = {s1 , s2 , s3 , s4 } x1 = x2 = 0, s1 = 24, s2 = 6, s3 = 2, s4 = 1.


Cette solution de base ralisable correspond au sommet (0, 0).
Base
Solution Objectif
Sommet
{s1 , s2 , s3 , s4 }
(0, 0)
0
A
{x1 , s2 , s3 , s4 }
(4, 0)
20
F
{s1 , x1 , s3 , s4 }
(6, 0)

Non ralisable
{x1 , x2 , s3 , s4 } (3, 1.5)
21
E
Thorme 2. Toute solution de base ralisable correspond un sommet du polydre.
Dtermination de la solution de base optimale
n!
Nombre maximum de solutions de base : m!(nm)!
Algorithme "bte et mchant" : numration de toutes les bases.
Mthode du simplexe : partir dune solution de base admissible et passer une solution de base voisine qui
amliore la valeur de lobjectif.
Solution voisine : changement dune variable en base.
3 etapes :
1. Dtermination de la variable entrante.
2. Dtermination de la variable sortante.
3. Pivotage.
Lalgorithme du simplexe
Variable entrante
z
s1
s2
s3
s4

= 0 +5x1
= 24 6x1
= 6 x1
= 2
= 1 +x1

+4x2
4x2
2x2
x2
x2

Si x1 (ou x2 ) augmente (entre en base), la valeur de la fonction objectif z augmente.


Quelle est la valeur maximale de x1 ?
13

Contraintes : les autres variables doivent rester positives.


Variable sortante
s1
s2
s3
s4

=
=
=
=

24 6x1
6 x1
2
1 +x1

0
0
0
0

Pivotage
Si x1 = 4, alors s1 = 0.
x1 entre en base, s1 sort de la base.
Substitution :

x1 4
x1 6
20
x1 1

toujours!
toujours!

x1 4

2
1
x1 = 4 s1 x2
6
3

Nouveau systme :
z
x1
s2
s3
s4

=
=
=
=
=

56 s1
16 s1
+ 16 s1

20
4
2
2
5

16 s1

+ 32 x2
32 x2
34 x2
x2
35 x2

Reprsentation matricielle (dictionnaire)


B = indices des variables en base, N = indices des variables hors base.
Dcomposition des donnes et variables (en rarrangeant lordre des variables) :





xB
cB
A = AB AN , x =
, c=
xN
cN
avec xB , cB Rm , xN , cN Rnm , AB Rmm , AN Rm(mn) .
Equations du simplexe
Si AB est inversible :
Ax = b AB xB + AN xN = b
1
xB + A1
B AN xN = AB b

z = cT x =

T
cTB xB + CN
xN

1
T
cTB (A1
B b AB AN x N ) + c N x N

cTB A1
B b+

(cT cTB A1
AN )
{z B
}
|N

cots rduits ou profits marginaux

Notation :
xl +

alk xk = bl

kN

z=z+

X
kN

14

ck x k

lB

xN

Rgles de pivotage
Variable entrante
Choisir la variable k hors base avec le profit marginal maximum (max z) ou le cot rduit minimum (min z).
max z

k = arg max ci

min z

k = arg min ci

iN

iN

Si ck 0 (max) ou ck 0 (min) pour tout k N , solution optimale, STOP.


z= 0
s1 = 24
s2 = 6
s3 = 2
s4 = 1

+5x1 +4x2
6x1 4x2
x1 2x2
x2
+x1 x2

Variable sortante
Choisir la variable l en base telle que
l = arg

min

jB:ajk >0

bj
ajk

Si alk 0 pour tout l B, problme non born, STOP.


z= 0
s1 = 24
s2 = 6
s3 = 2
s4 = 1

+5x1 +4x2
6x1 4x2
x1 2x2
x2
+x1 x2

Pivotage

lj
i=l
0
a
lk
aij =
a
a

aij ik lj i 6= l
alk

l
i=l
0
alk
bi =
a b

bi ik l i =
6 l
alk

z = 0 +5x1 +4x2

z = 20 56 s1 + 32 x2

z = 21 34 s1 12 s2

s1 = 24 6x1 4x2

x1 = 4 16 s1 32 x2
4
s2 = 2 + 16 s1 x2
3
s3 = 2
x2

x1 = 3 41 s1 + 12 s2

s2 = 6

x1 2x2

s3 = 2

x2

s4 = 1

+x1 x2

s4 = 5

16 s1

15

35 x2

x2 =
s3 =
s4 =

3
2
1
2
5
2

+ 81 s1 34 s2
81 s1 + 34 s2
83 s1 + 54 s2

Prsentation en tableau
Prsentation compacte pour effectuer les calculs sans rpter les systmes dquations.
Var. en base
z
xB

z
1
0

x
cT cT A1
B A=c
1
AB A = a

Solution
cTB A1
B b
1
AB b

Itration 1
Var. en base
z
s1
s2
s3
s4

z
1
0
0
0
0

x1
5
6
1
0
1

x2
4
4
2
1
1

Var. en base
z
x1
s2
s3
s4

z
1
0
0
0
0

x1
0
1
0
0
0

x2

Var. en base
z
x1
x2
s3
s4

z
1
0
0
0
0

x1
0
1
0
0
0

s1
0
1
0
0
0

s2
0
0
1
0
0

s3
0
0
0
1
0

s4
0
0
0
0
1

Solution
0
24
6
2
1

s1
56

s2
0
0
1
0
0

s3
0
0
0
1
0

s4
0
0
0
0
1

Solution
20
4
2
2
5

s2
12
12

s3
0
0
0
1
0

s4
0
0
0
0
1

Solution
21
3

Itration 2

2
3
2
3
4
3

1
6
61

5
3

1
6

x2
0
0
1
0
0

s1
34

Itration 3

4.4.3

1
4
18
1
8
3
8

3
4
34
54

3
2
1
2
5
2

La mthode des deux phases

Solution initiale artificielle


Une solution de base admissible nest pas toujours connue a priori.
Certains problmes nadmettent pas de solution admissible, donc il est impossible de trouver une base de dpart.
La mthode des deux phases va permettre de dterminer une base admissible ou prouver que le problme est
impossible.
Exemple 7 (Mthode des 2 phases).
min z = 4x1
s.c.
3x1
4x1
x1
x1 ,

16

+x2
+x2
+3x2
+2x2
x2

3
6
4

Introduction des variables dcart


min z = 4x1
s.c.
3x1
4x1
x1
x1 ,

+x2
+x2
+3x2
+2x2
x2 ,

x3
x3 ,

+x4
x4

R1

+R2

=
=
=
0

3
6
4

Pas de base admissible "triviale".


On voudrait voir apparatre une matrice identit.
Introduction de variables artificielles.
Introduction des variables artificielles
min z = 4x1
min r =
min r = 7x1
s.c.
3x1
4x1
x1
x1 ,

+x2
4x2
+x2
+3x2
+2x2
x2 ,

+x3
+R1
x3
x3 ,

+R2
R1 ,

R2 ,

+x4
x4

=
=
=
0

+9
3
6
4

R1 , R2 et x4 peuvent tre utilises comme base de dpart admissible.


Base pour le systme de dpart si R1 = R2 = 0 (hors base).
Rcrire lobjectif en fonction des variables hors base !
4.4.4

Cas particuliers

Bases dgnres
Si plusieurs choix sont possibles pour la variable sortante, une des variables en base sera nulle litration
suivante.
Base telle quune variable en base est nulle : base dgnre.
Correspond une contrainte redondante.
Risque de cyclage !
Exemple 8 (Bases dgnres).
max
s.c.

z=

3x1
x1
x1
x1 ,

17

+9x2
+4x2
+2x2
x2

8
4

Var. en base

x1

x2

s1

s2

Solution

s1
s2

0
0

1
1

4
2

1
0

0
1

8
4

94

18

1
0

1
4
12

0
1

2
0

32

23

18

1
0

1
2

21

2
0

x2
s2

0
0

3
4
1
4
1
2

x2
x1

0
0

0
1

En pratique, le risque de cyclage est quasiment nul.


Mthodes pour lviter : perturbations, ordre lexicographique pour les variables entrant en base, ...
Une bonne analyse a priori pour liminer les redondances est le meilleur moyen dviter ces problmes !
Solutions optimales multiples
Si la fonction objectif est parallle une contrainte active pour la solution optimale, la mme valeur de lobjectif
peut tre prise par plusieurs solutions admissibles.
Il y a une infinit de solutions optimales dans ce cas (toutes les combinaisons convexes de sommets optimaux).
Cela se traduit par un profit marginal nul pour une ou plusieurs variables hors base.
Exemple 9 (Solutions optimales multiples).
max
s.c.

z=

2x1
x1
x1
x1 ,

+4x2
+2x2
+x2
x2

5
4

Var. en base

x1

x2

s1

s2

Solution

s1
s2

0
0

1
1

2
1

1
0

0
1

5
4

10

x2
s2

0
0

1
2
1
2

1
0

1
2
12

0
1

5
2
3
2

10

x2
x1

0
0

0
1

1
0

1
1

1
2

1
3

Solution optimale :
x1 =
x2 =

0 + 3(1 )

= 3 3
3
5
2 + 1(1 ) = 1 + 2

(0 1)

Problmes non borns


Certains problmes sont non borns dans une direction donne.
Si cette direction est une direction damlioration de la fonction objectif, celle-ci peut prendre une valeur arbitrairement grande !

18

Exemple 10 (Problmes non borns).


max z =
s.c.

2x1
x1
2x1
x1 ,

+x2
x2

x2

1
4

Var. en base

x1

x2

s1

s2

Solution

s1
s2

0
0

1
2

1
0

1
0

0
1

1
4

Tous les coefficients (sauf le profit maginal) dans la colonne de x2 sont ngatifs ou nuls.
Cela signifie que toutes les contraintes de non-ngativit sont satisfaites quelle que soit la valeur de x2 .
Lobjectif peut donc augmenter indfiniment.
Problmes impossibles
Le systme de contraintes peut navoir aucune solution.
Mthode des 2 phases : termine avec des variables artificielles non nulles.
Gnralement, provient dune mauvaise formulation du problme.
Exemple 11 (Problmes impossibles).
max
s.c.

z=

3x1
2x1
3x1
x1 ,

+2x2
+x2
+4x2
x2

19

2
12

5
5.1

Dualit
Le problme dual

Problme primal et problme dual


Problme primal
max

cT x

s.c.

Ax = b
x0

n variables, m contraintes, m < n, c, x Rn ,

b Rm ,

A Rmn .

Problme dual
min

bT y

s.c.

AT y c
(y non restreint)

m variables, n contraintes, m < n, c Rn ,

b, y Rm ,

A Rmn .

Exemple 12 (Problme primal et dual - forme standard).


Problme primal :
max
s.c.

z=

x1
2x1
3x1
x1 ,

+x2
+x2
x2
x2

= 5 (y1 )
= 6 (y2 )
0

min w = 5y1
s.c
2y1
y1

+6y2
+3y2
y2

1
1

Problme dual :
(x1 )
(x2 )

Proprits et rgles de construction du dual


Thorme 3. Le problme dual du problme dual est le problme primal.
Rgles de construction
Problme max
Contrainte

=
Variable
0
non restreinte

Problme min
Variable
0
non restreinte
Contrainte

Exemple 13 (Problme primal et dual - forme gnrale).


Problme primal :
max
s.c.

z=

5x1
x1
2x1
x1 ,

+12x2
+2x2
x2
x2 ,

20

+4x3
+x3
+3x3
x3

10
=8
0

(y1 )
(y2 )

Problme dual :
min w =
s.c

5.2

10y1
y1
2y1
y1
y1

+8y2
+2y2
y2
+3y2

5
12
4
0

(x1 )
(x2 )
(x3 )

Relations primal/dual

Thorme 4 (Dualit faible). Considrons la paire primale-duale :


max

cT x

s.c.

Ax = b
x0

bT y

min

s.c. AT y c

Si x est une solution admissible du primal et y une solution admissible du dual, alors
cT x bT y
Sil y a galit, alors x est une solution optimale du primal et y une solution optimale du dual.
Thorme 5 (Dualit forte). Considrons la paire primale-duale :
max

cT x

s.c.

Ax = b
x0

min
bT y
s.c. AT y c

Si le primal et le dual admettent tous les deux une solution admissible, ils ont tous deux une solution optimale
finie et la mme valeur objectif optimale.
Si le primal (dual) est non born, le dual (primal) nadmet pas de solution admissible.
Thorme 6 (Complmentarit). Considrons la paire primale-duale :
max

cT x

s.c.

Ax = b
x0

min

bT y

s.c. AT y c

21

Si x est une solution optimale du primal et y une solution optimale du dual, alors
xi (aTi y ci ) = 0.
o ai est la i-me colonne de A.
En dautres termes :
xi > 0
aTi y > ci

aTi y = ci ,
xi = 0.

Exemple 14 (Rsolution du dual par les rgles de complmentarit).


Primal (P ) :
max z = 5x1 +12x2 +4x3
s.c.
x1
+2x2
+x3 10
2x1
x2
+3x3 = 8
x1 ,
x2 ,
x3
0

(y1 )
(y2 )

Dual (D) :
min w =
s.c

10y1
y1
2y1
y1
y1

+8y2
+2y2
y2
+3y2

5
12
4
0

(x1 )
(x2 )
(x3 )

Solution optimale de (P ) :


26 12
, ,0
(x1 , x2 , x3 ) =
5 5
274
z=
5

x1 > 0

y1 + 2y2 = 5

x2 > 0

2y1 y2 = 12

Solution optimale de (D) :




29 2
,
(y1 , y2 ) =
5
5
274
w=
5

5.3

Interprtation conomique de la dualit

La forme canonique dun programme linaire peut tre interprte comme un problme dallocation de ressources.
Paire primale-duale :
cT x

max

s.c. Ax b
x0

bT y

min
s.c.

A yc
y0

22

Donnes :
cj : profit par unit dactivit j.
bi : disponibilit de la ressource i.
aij : consommation de la ressource i par unit dactivit j.
Variables :
xj : niveau de lactivit j.
yi : valeur dune unit de la ressource i.
Interprtation de la dualit faible
zw:

profit valeur des ressources

Interprtation de la dualit forte


Le profit maximal est atteint si les ressources ont t exploites compltement, i.e. jusqu puisement de leur
valeur.
Exemple 15 (Dualit dans le problme de production de peinture).
max z =
s.c

5x1
6x1
x1

+4x2
+4x2
+2x2
x2
+x2
x2

x1
x1 ,
min w =

24y1
6y1
4y1
y1 ,

+6y2
+y2
+2y2
y2 ,

+2y3
+y3
y3 ,

24
6
2
1
0
+y4
y4
+y4
y4

5
4
0

x1 = 3, x2 = 1.5, z = 21
y1 = 0.75, y2 = 0.5, y3 = y4 = 0, w = 21
Le profit augmente de 0.75 par augmentation dune tonne de M1 et de 0.5 par tonne de M2.
Les "ressources" 3 et 4 sont abondantes, augmenter ces ressources napporte aucun profit supplmentaire.

5.4

Mthode simplexe duale

Relations primal / dual dans le tableau du simplexe


Tableau primal final
Var. en base
z
x1
x2
s3
s4

z
1
0
0
0
0

x1
0
1
0
0
0

x2
0
0
1
0
0

s1
34

t1
3
14

t2

y1
0
1
0

1
4
18
1
8
3
8

s2
12
12
3
4
34
54

s3
0
0
0
1
0

s4
0
0
0
0
1

Solution
21
3
3
2
1
2
5
2

Tableau dual final


Var. en base
w
y1
y2

w
1
0
0

1
2

3
2
1
8
43

23

y2
0
0
1

y3

y4

1
2
18
3
4

5
2
38
5
4

Solution
21
3
4
1
2

Ici, toutes les contraintes dans le primal et dans le dual sont des ingalits correspondance entre variable
originale du primal et variable dcart du dual (et vice-versa).
Primal
Dual

x1
t1

x2
t2

s1
y1

s2
y2

s3
y3

s4
y4

Observation :
Les valeurs des variables duales sont gales loppos des profits marginaux des variables correspondantes
du primal.
Les valeurs des variables primales sont gales aux cots rduits des variables correspondantes du dual.
Consquence de la complmentarit des solutions primale et duale.
Thorme 7. Considrons la paire primale-duale :
max

cT x

s.c.

Ax = b
x0

min

bT y

s.c.

AT y c

1. Pour toute solution de base non dgnre x du primal, il existe une et une seule solution y du dual complmentaire x.
2. x est admissible si et seulement si y satisfait les conditions doptimalit (cots rduits non ngatifs).
3. y est admissible si et seulement si x satisfait les conditions doptimalit (profits marginaux ngatifs ou nuls).
Dmonstration. Le dual peut se rcrire sous forme standard :
bT y

min
s.c.

A yt=c
t0

Considrons un ensemble de variables en base B et un ensemble de variables hors base N , tels que la base
correspondante est non dgnre :
xB = A1
xN = 0
B b>0
Par complmentarit, tB = 0 et ATB y = cB . Ds lors,
y T = cTB A1
B ,

tTB = 0 tTN = (cTN cTB A1


B AN )

(2) et (3) sont des consquences directes.

Simplexe dual : motivation


Il arrive souvent quune solution en base non admissible, mais satisfaisant les contraintes doptimalit soit
identifiable facilement (par exemple, variables dcart de contraintes ).
Cette base correspond une solution admissible du dual.
Ide de la mthode simplexe duale : rsoudre (implicitement) le dual par la mthode du simplexe (mais en
travaillant sur le tableau primal !)
Partir avec une solution de base satisfaisant les conditions doptimalit (= base admissible pour le dual) et
chercher la rendre admissible (= dual optimale).

24

Rgles de pivotage (simplexe dual)


Variable sortante
Choisir la variable l en base avec la valeur minimum (ngative). Si bl 0 pour tout l B, solution admissible,
STOP.
Variable entrante
Choisir la variable k hors base telle que
k = arg

min

iN :ali <0

|ci |
ali

Si ali 0 pour tout i N , problme non admissible, STOP.


Exemple 16 (Simplexe dual).
min z = 3x1
s.c. 3x1
4x1
x1
x1 ,

+2x2
+x2
+3x2
+x2
x2

3
6
3
0

Forme standard avec les variables dcart en base :


min z = 3x1
s.c. 3x1
4x1
x1
x1 ,

+2x2
x2
3x2
+x2
x2 ,

+s1
+s2
s1 ,

Var. en base
z
s1
s2
s3

z
1
0
0
0

x1
3
3
4
1

x2
2
1
3
1

Var. en base
z
s1
x2
s3

z
1
0
0
0

x1
1
3
53
4
3
13

x2
0
0
1
0

Var. en base
z
x1
x2
s3

z
1
0
0
0

x1
0
1
0
0

x2
0
0
1
0

s2 ,
s1
0
1
0
0

+s3
s3

= 3
= 6
=3
0

s2
0
0
1
0

s3
0
0
0
1

Solution
0
3
6
3

s2

s3
0
0
0
1

Solution
4
1
2
1

s3
0
0
0
1

Solution
21
5

s1
0
1
0
0

2
3
23
31
1
3

s1

s2

1
5
35
4
5
15

3
5
1
5
53
52

3
5
6
5
6
5

Solveurs et langages de modlisation

Exemple 17 (Production de jouets).


Une socit de jouets produit des trains, des camions et des voitures, en utilisant 3 machines.
Les disponibilits quotidiennes des 3 machines sont 430, 460 et 420 minutes, et les profits par train, camion et
voiture sont respectivement EUR 3, EUR 2 et EUR 5.
Les temps ncessaires sur chaque machine sont :

25

Machine
1
2
3

Train
1
3
1

Camion
2
0
4

Voiture
1
2
0

Primal
max z =
s.c.

3x1
x1
3x1
x1
x1 ,

+2x2
+2x2
+4x2
x2 ,

+5x3
+x3
+2x3

430
460
420
0

x3

x1 = 0
x2 = 100
x3 = 230
z = 1350

Dual
min w = 430y1
s.c.
y1
2y1
y1
y1 ,

+460y2
+3y2

+420y3
+y3
+4y3

+2y2
y2 ,

y3

3
2
5
0

y1 = 1
y2 = 2
y3 = 0

Var. en base
z
x2
x3
s3

z
1
0
0
0

x1
4
14
3
2

x2
0
1
0
0

x3
0
0
1
0

s1
1
1
2

s2
2
14

0
2

1
2

s3
0
0
0
1

Solution
1350
100
230
20

Base : B = {x2 , x3 , s3 }.
Solveurs
Logiciels pour rsoudre des programmes linaires :
Indpendants :
Commerciaux : CPLEX (IBM), XPRESS-MP (http ://www.fico.com/), Gurobi (http ://www.gurobi.com/), . . .
Gratuits : PCx, lpsolve, glpk, . . .
Tableurs : La plupart des tableurs intgrent un outil de rsolution de programmes linaires (Excel, Gnumeric,
. . .)
Langages de modlisation (ampl, GNU MathProg, mpl, OPL studio, mosel, . . .) : langages de haut niveau
permettant la sparation modle/donnes, se chargeant de linterface avec un solveur.

26

NAME
ROWS
L R0001
L R0002
L R0003
N R0004
COLUMNS
C0001
C0001
C0001
C0001
C0002
C0002
C0002
C0003
C0003
C0003
RHS
B
B
B
ENDATA

toys

R0001
R0002
R0003
R0004
R0001
R0003
R0004
R0001
R0002
R0004

1
3
1
3
2
4
2
1
2
5

R0001
R0002
R0003

430
460
420

F IGURE 1 Exemple de production de jouets au format MPS


Solveurs indpendants
Avantages
Puissance, efficacit
Intgrables dans des applications via des librairies
Dsavantages
Formats de fichiers (MPS)
Pas de sparation modle / donnes
R-utilisation difficile des modles
Solveurs intgrs aux tableurs
Avantages
Disponibles sur (quasi) tous les ordinateurs
Interface facile dutilisation
Prsentation des donnes / rsultats
Dsavantages
Difficult dimplmenter de grands modles
Sparation modle / donnes difficile
Solveurs moins efficaces (en gnral)
Langages de modlisation
Avantages
Sparation modle / donnes
R-utilisabilit des modles
Indpendance modle / solveur

27

#
# Data definition
#
set Toys;
param nMachines;
set Machines := 1..nMachines;
param profit {Toys};
param time {Machines,Toys};
param avail {Machines};
#
# Variables
#
var prod {Toys} >= 0;
#
# Objective
#
maximize total_profit:
sum{t in Toys} profit[t]*prod[t];
#
# Constraints
#
subject to machine_usage {m in Machines}:
sum{t in Toys} time[m,t] * prod[t] <= avail[m];

F IGURE 2 Exemple de production de jouets au format AMPL (modle)


Dsavantages
Apprentissage du langage
Prix des versions commerciales
Limitation en taille des versions dessai gratuites
Moindre efficacit (actuellement) des solveurs gratuits

28

#
# Data
#
data;
set Toys := Trains, Trucks, Cars ;
param nMachines := 3;
param profit :=
Trains 3
Trucks 2
Cars 5 ;
param
1 1 2
2 3 0
3 1 4

time :
1
2
0 ;

Trains Trucks Cars :=

param avail :=
1 430
2 460
3 420 ;
end;
F IGURE 3 Exemple de production de jouets au format AMPL (donnes)

29

Troisime partie

Le problme de transport
7

Dfinition et exemples

Un produit doit tre transport de sources (usines) vers des destinations (dpts, clients).
Objectif : dterminer la quantit envoye de chaque source chaque destination en minimisant les cots de
transport. Les cots sont proportionnels aux quantits transportes.
Contraintes doffre limite aux sources et de demande satisfaire au destinations.

Sources

a1

Destinations

a2

am

cm n xm n

b1

b2

bn

Exemple 18 (Modle de transport).


Une firme automobile a trois usines Los Angeles, Detroit et New Orleans, et deux centres de distribution
Denver et Miami.
Les capacits des trois usines sont de 1000, 1500 et 1200 respectivement, et les demandes aux centres de
distribution sont de 2300 et 1400 voitures.
Cots :
Denver Miami
Los Angeles
80
215
Detroit
100
108
New Orleans
102
68
Formulation
min z = 80x11 +215x12 +100x21 +108x22 +102x31 +68x32
s.c.
(Los Angeles) x11
+x12
= 1000
(Detroit)
x21
+x22
= 1500
(N ew Orleans)
x31
+x32 = 1200
(Denver) x11
+x21
+x31
= 2300
(M iami)
x12
+x22
+x32 = 1400
x11 ,
x12 ,
x21 ,
x22 ,
x31 ,
x32 0
Reprsentation tableau

30

New Orleans

Denver
80
1000
100
1300
102

Demande

2300

Los Angeles
Detroit

Miami
215

Offre
1000

108
200
68
1200
1400

1500

Miami
215

Offre
1000

108

1300

68
1200
0
200
1400

1200

1200

Problmes non balancs


Si loffre nest pas gale la demande : modle non balanc.
Introduction dune source ou destination artificielle.

New Orleans

Denver
80
1000
100
1300
102

Artif.

Demande

2300

Los Angeles
Detroit

200

Variantes
Le modle de transport nest pas limit au transport de produits entre des sources et destinations gographiques.
Exemple 19 (Modle de production).
Une socit fabrique des sacs dos, pour lesquels la demande arrive de mars juin et est de 100, 200, 180 et
300 units, respectivement.
La production pour ces mois est de 50, 180, 280 et 270, respectivement.
La demande peut tre satisfaite
1. par la production du mois courant ($40 / sac) ;
2. par la production dun mois prcdent (+ $0.5 / sac / mois pour le stockage) ;
3. par la production dun mois suivant (+ $2 / sac / mois de pnalit de retard).
Correspondances avec le modle de transport
Transport
Source i
Destination j
Offre la source i
Demande la destination j
Cot de transport de i j

Production - stocks
Priode de production i
Priode de demande j
Capacit de production la priode i
Demande pour la priode j
Cot unitaire (production + stock + pnalit)
pour une production en priode i pour la priode j

Algorithme pour le problme de transport

Algorithme pour le problme de transport


Bas sur lalgorithme du simplexe en tenant compte de la structure du problme.
1. Dtermination dune solution de base admissible.
2. Dtermination de la variable entrant en base.
31

3. Dtermination de la variable sortant de base.


Exemple 20 (Algorithme pour le problme de transport).

1
10

2
2

3
20

4
11

Offre
15

12

20

25

14

16

18

10

Demande

15

15

15

Dtermination dune solution de base admissible


Heuristiques "gloutonnes", pas besoin de mthode des deux phases.
Variantes :
1. Coin Nord-Ouest
2. Mthode des moindres cots
Coin Nord-Ouest
Partir du coin suprieur gauche du tableau.
1. allouer le plus possible la cellule courante et ajuster loffre et la demande ;
2. se dplacer dune cellule vers la droite (demande nulle) ou le bas (offre nulle) ;
3. rpter jusquau moment o toute loffre est alloue.
Exemple 21 (Coin Nord-Ouest).

1
10
5
12

Demande

2
2
10
7
5
14

3
20

4
11

Offre
15

9
15
16

20
5
18
10
15

25

5 15 15
Cot : 520

10

Moindres cots
Slectionner la cellule de cot minimum.
1. allouer le plus possible la cellule courante et ajuster loffre et la demande ;
2. slectionner la cellule de cot minimum ayant une demande et une offre non nulles ;
3. rpter jusquau moment o toute loffre est alloue.
Exemple 22 (Moindres cots).
1

1
10

12

3
Demande

2
2
15
7

3
20

4
11

Offre
15

9
15
16

20
10
18
5
15

25

4 14
5
5 15 15
Cot : 475
32

10

Formulation

min z =

s.c.

(ui )

m X
n
X

cij xij

i=1 j=1
n
X
j=1
m
X

(vj )

xij = ai

i = 1, . . . , m

xij = bj

j = 1, . . . , n

i=1

xij 0

i = 1, . . . , m, j = 1, . . . , n

Problme dual

max w =

m
X

ai ui +

i=1

s.c.

n
X

bj vj

j=1

ui + vj cij

i = 1, . . . , m, j = 1, . . . , n

Adaptation du simplexe
Critre doptimalit :
ui + vj cij 0
Complmentarit :
xij > 0 ui + vj cij = 0
Trois tapes : 1. dtermination des variables duales (multiplicateurs) ;
2. vrification du critre doptimalit et dtermination de la variable entrante ;
3. dtermination de la variable sortante pour prserver ladmissibilit et pivotage.
Dtermination des variables duales
1. m + n 1 quations m + n inconnues : fixer u1 = 0.
2. Rsoudre rcursivement le systme
ui + vj cij = 0 pour tout xij > 0.
Exemple 23 (Dtermination des variables duales).

1
10
5
12

2
2
10
7
5
14

Demande

15

u1 + v1 = 10
u1 + v2 = 2
u2 + v2 = 7
u2 + v3 = 9
u2 + v4 = 20
u3 + v4 = 18
33

3
20

4
11

Offre
15

9
15
16

25

15

20
5
18
10
15

u1 = 0
v1 = 10
v2 = 2
u2 = 5
v3 = 4
v4 = 15
u3 = 3

10

Vrification du critre doptimalit et dtermination de la variable entrante


1
0
2
5
3
3
Demande

1
10
5
12

10

3
4
9
5

2
2
10
7
5
14

3
20

4
11

-16
9
15
16
-9

15

-9
15

15

Offre
15

4
20
5
18
10
15

25
10

Dtermination de la variable sortante pour prserver ladmissibilit et pivotage


Objectifs :

1. loffre et la demande doivent continuer tre satisfaites ;

2. les quantits transportes doivent rester positives.


Mthode :

1. construction dun cycle parcourant des variables en base en partant de et revenant la variable
entrante ;

2. dplacement le long de lignes et colonnes en alternant ajout et retrait dune mme quantit.

1
0
2
5
3
3
Demande

10

1
10
5
12

3
+
9

4
5

2
2
10
7
5
14

2
+

3
20

9
15
16

4
11

-16

-9

-9

15

15

20
5
18
10
15

15

Offre
15

4
+

25

10

=5
1
0
2
5
3
3
Demande

1
10

2
2
15
7
0
14

-9
12
-6
4
5
5

3
20

9
15
16

4
11

-16

-9
15

-9
15

20
10
18
5
15

15
+
4

Offre
15
25
10

= 10
1
0
2
5
3
7
Demande

1
10

-3
-13

12
-10
4
5
5

2
2
5
7
10
14

3
20

4
-16

9
15
16
-5

15

11

Offre
15
25

-4
-5

15

4
11
10
20
18
5
15

10

Le problme de transbordement

Extension du modle de transport : il est parfois ncessaire (ou moins cher) dutiliser des noeuds intermdiaires
pour le transport.
Deux usines P 1 et P 2 servent 3 vendeurs D1, D2 et D3, via deux centres de transit T 1 et T 2.

34

D1

8
1000

P1

800

T1

4
D2

7
4

2
1200

P2

900

3
T2

9
D3

500

Transformation en problme de transport


3 types de noeuds :
Noeuds doffre purs : arcs sortants uniquement. offre = offre originale
Noeuds de demande purs : arcs entrants uniquement. demande = demande originale
Noeuds de transbordement : arcs entrants et sortants. offre/demande = offre/demande originale + buffer
Les noeuds de transbordement sont la fois sources et destinations pour le problme de transport.
Buffer : quantit ncessaire pour transporter toute la demande travers le noeud de transbordement.
Dans notre exemple : B = 2200.

P1
P2
T1
T2
D1
D2
Demande

T1
3
2
0
M
M
M
2200

T2
4
5
7
0
M
M
2200

D1
M
M
8
M
0
M
3000

35

D2
M
M
6
4
5
0
3100

D3
M
M
M
9
M
3
500

Offre
1000
1200
2200
2200
2200
2200

Quatrime partie

Le flot maximum
10

Introduction

Le problme de flot maximal consiste transporter la quantit maximale possible dune origine (source) une
destination (puits) donnes, sans dpasser les capacits des arcs.
Donnes : un graphe dirig G = (N, A), une capacit uij > 0 pour tout arc (i, j), une source s et un puits t.
Dfinition 9 (st-flot). Un st-flot dans le rseau est un vecteur dentiers f = (fij ) associs aux arcs tel que :

0 fij uij
X
fij =

j:(i,j)A

(i, j) A
fji

i N \ {s, t}

j:(j,i)A

La valeur du flot est


v(f ) =

fsj =

j:(s,j)A

11

Formulation

Formulation du problme de flot maximal


max
X
s.c.
fij

v
v
fji =

0
j:(i,j)A
j:(j,i)A
0 fij uij

12

fjt .

j:(j,t)A

i = s,
i = t,
sinon,

i N,
(i, j) A.

Coupe minimum

Dfinition 10 (Coupe). La coupe dans le graphe G = (N, A), dfinie par le sous-ensemble non vide de noeuds
S, est lensemble darcs not + (S) sortant de S.
+ (S) = {(i, j) A : i S, j N \ S}.
Une st-coupe est une coupe qui spare s et t, i.e. telle que s S et t N \ S.
La capacit dune coupe est la somme des capacits de ses arcs.
Thorme 8 (Dualit faible). La capacit dune st-coupe est suprieure ou gale la valeur dun st-flot.
Thorme 9 (Dualit forte). La valeur dun st-flot maximal est gale la capacit dune st-coupe minimale.

13

Algorithme de Ford-Fulkerson

Dfinition 11 (Arcs en avant / en arrire). Soit f un st-flot, et P un chemin dans le graphe non dirig obtenu en
remplaant chaque arc de A par une arte. Un arc travers dans P dans son orientation originale est appel arc en
avant, un arc travers dans lautre sens est appel arc en arrire.
Dfinition 12 (Chemin augmentant). Si pour tout arc (i, j) en avant de P , fij < uij et pour tout arc (i, j) en
arrire de P , fji > 0, alors P est appel chemin f -augmentant.
Thorme 10 (Critre doptimalit). Un st-flot f est maximal si et seulement si il nexiste pas de chemin f augmentant.

36

Algorithme de Ford et Fulkerson


Ide de lalgorithme : trouver un chemin augmentant et augmenter le flot sur ce chemin.
Initialisation : f = 0.
Alternance de deux phases :
1. Phase de marquage (recherche dun chemin augmentant).
2. Phase daugmentation (augmenter le flot sur le chemin trouv en phase de marquage).
Ces deux phases sont rptes jusquau moment o il nexiste plus de chemin augmentant.
Phase de marquage
1. Marquer s par [0, ], L = {s}.
2. Tant que L 6= et t non marqu :
(a) Slectionner i dans L et le retirer de L.
(b) Pour tout j non marqu tel que (i, j) A et fij < uij , marquer j par [i, j ] avec j = min(i , uij
fij ) et ajouter j dans L.
(c) Pour tout j non marqu tel que (j, i) A et fji > 0, marquer j par [i, j ] avec j = min(i , fji ) et
ajouter j dans L.
3. Si t est non marqu, STOP (plus de chemin augmentant).
Phase daugmentation
1. j = t.
2. Tant que j 6= s :
Soit [i, j ] la marque de j. Si (i, j) est en avant, fij = fij + t . Si (i, j) est en arrire, fji = fji t .
j = i.
[1, 10]
4
20

10

[0, ]

10

[4, 10]

[2, 20]

30
30
20

20
2

40

[1, 20]

[1, 30]
4
20

10 10

[0, ]

10

10

30
30
20

20
2

40

[1, 20]

[1, 30]

37

[3, 10]
4
20

10 10

[0, ]

1
30

10

10

[3, 20]

[4, 10]

30 20

20

20

20
2

40

[1, 30]
[3, 10]
4
20

10 10

[0, ]

1
30

20

10

10

30 20

20

20

20

20
2

40

[1, 10]
4
20

10 10

[0, ]

1
30

30

20

10
10

30 20

20

20

20

20
2

3
40
Les noeuds marqus la dernire itration dfinissent la coupe minimale
Complexit
Marquage : O(|N | + |A|).
Suppression des marques : O(|N |).
Examen de tous les successeurs et tous les prdcesseurs : O(|A|).
Augmentation : O(|N |).
Aprs ltape 2, retour letape 1. A chaque itration on augmente le flot dune unit au moins.
Si la valeur de ce flot maximal est F , la complexit maximale totale est en O(F (|N | + |N | + |A|)) =
O(F (|N | + |A|)).
Lalgorithme dEdmonds et Karp a une complexit en temps qui ne dpend pas de la valeur du flot maximum.

38

Cinquime partie

Flots de cot minimum


14

Dfinitions et exemples

Extension du problme de transbordement : ajout de capacits sur les arcs.


Donnes : un graphe dirig G = (N, A), une capacit uij > 0 et un cot cij > 0 pour tout arc (i, j), une offre
bi pour tout noeud i (si bi < 0, demande).
La somme des offres/demandes doit tre nulle.
Dfinition 13 (Flot compatible). Un flot compatible avec loffre b est un vecteur dentiers f = (fij ) associs aux
arcs tel que :
0 fij uij
X
fij
fji = bi

X
j:(i,j)A

(i, j) A
iN

j:(j,i)A

But : Trouver un flot f compatible avec loffre b de cot total


X
cij fij
(i,j)A

minimal.
Bornes infrieures
Dans certains cas, une borne infrieure sur les flots peut tre donne (quantit minimale prsente sur un arc).

lij fij uij


X
fij
fji = bi

j:(i,j)A

(i, j) A
iN

j:(j,i)A

Transformation :
0
fij
= fij lij ,

u0ij = uij lij ,

b0i = bi lij ,

b0j = bj + lij

Techniques de rsolution
1. Transformation en problme de st-flot et algorithme de chemins augmentants.
2. Formulation comme un programme linaire et application particulire du simplexe (simplexe rseau).
La premire mthode est la plus efficace pour des problmes de flots "purs".
La deuxime mthode peut tre applique quand le rseau apparat comme sous-structure dun programme
linaire plus gnral.

15

Algorithme de chemins augmentants

Transformation en problme de st-flot


1. ajouter une source s et un puits t artificiels ;
2. pour tout noeud i tel que bi > 0, ajouter un arc (s, i) de cot nul et de capacit bi ;
3. pour tout noeud i tel que bi < 0, ajouter un arc (i, t) de cot nul et de capacit bi .
Le problme devient :
P
Trouver un st-flot de cot minimum et de valeur B = i:bi >0 bi .

39

Dfinition 14 (Graphe rsiduel). Etant donn un flot f , le graphe rsiduel correspondant est le graphe G0 =
(N, A0 ) dfini par :
A0

= {(i, j) : (i, j) A et fij < uij }


{(j, i) : (i, j) A et fij > 0}

Pour dterminer les cots rduits, un potentiel wi est associ chaque noeud i (variable duale).
Dfinition 15 (Cots rduits). Etant donns des potentiels wi , i V , le cot rduit dun arc dans le graphe
rsiduel est
c0ij = cij wi + wj
c0ij

= cji wi + wj

si (i, j) A,
si (j, i) A.

Ides de base
Le st-flot trouver est un flot maximal.
Construction par laugmentation du flot sur des chemins augmentants.
Le chemin choisi dans le graphe rsiduel doit tre de cot rduit minimal (de manire augmenter le flot cot
minimum).
Au dbut de lalgorithme, le graphe rsiduel est le graphe de dpart et les potentiels sont tous nuls (donc les
cots rduits sont gaux aux cots originaux).
Algorithme de chemins augmentants
1. Initialisation : f = 0, wi = 0 pour tout noeud i.
2. Calculer le chemin augmentant de cot rduit minimal dans le graphe rsiduel (e.g. Dijkstra).
3. Phase daugmentation.
4. Mettre jour les potentiels des noeuds, le graphe rsiduel et les cots rduits.
Rpter (2), (3) et (4) jusquau moment o toute loffre est envoye.
Mise jour des potentiels
wi = wi d(s, i)

i N

o d(s, i) est le cot rduit du chemin minimal de s i dans le graphe rsiduel.


Exemple

40

5 35

50

-30

10

3
90

60

1 30

Itration 1

40

4
90
90
5

-60

5 35

40

50

50
2

60

90
5

1 30

30

4
90

2
3

60

10

3
90
2

90

5 35

40

30

4
90

1 30

60

10

3
90

60

Itration 2
1

5 35
7

40

30

-5
0

-2
3

50

10

3
90

60

1 30 30

41

30

4
90
90

30
5

0
-1

-1
60

0 35
5

40
0

20

30
2

10

3
90

8
90

0
9

60

90

30

0
5

0 30

30

30

Itration 3
1

5 35 30
7

40
30
30

-2

60

4 30

Itration 4

42

4
90
90

60

0
0

-5

-5

10
3

20
30

30
t

30
5

0 30

3
90

90

0 5
5

30

4
90

1 30 30

60

0
10
30
0
0
0

-5
0

50

10

3
90

30

0
0

30

30

5 35 35
7

40
35
30

-2

5
8

60

35

0
0

0 35

20
30
2

0
5

60

30

25

0
0

8 30

60

0
85

90

-9

-9

4
0

10

3
90

30
t

35

0
1

30

4
90

90

1 30 30

-5
0

50

10

3
90

35

Itration 5
1

5 35 35
7

40
35
50

-6
0

-2
3

50

10

3
90

60

5
8
20

20
1 30 30

43

90

4
90

30

55
5

30

0
-10

-10
60

0
1

5
0

35

3
90

50

10

0
5

20

0
2

4
3

1 35

40

0
85

70

20

30
t

9 30

3
55

Solution finale
1

40

10
-2
3

50

50

-9

5 3
90

16

5 35 35

40

60

5
8
25

25

90

30
t

60
5

1 30 30

-3

4
90

30

-13
60

-13

Extensions

Flots multi-produits
Le rseau sert transporter un ensemble K de produits. Chaque produit k K a son propre vecteur de demande
bk . Les cots peuvent galement dpendre du produit (ckij ).
La capacit est utilise par tous les produits simultanment.
Formulation
X X

min

k
ckij fij

kK (i,j)A

s.c.

k
fij

j:(i,j)A

k
fji
= bki

i N, k K,

j:(j,i)A

k
fij
uij

(i, j) A,

kK
k
fij
0

(i, j) A, k K.

44

Problme de routage en tlcommunications


Cas particulier : application dans les rseaux de tlcommunications.
Chaque produit correspond une paire de clients devant communiquer. Pour chaque produit, st-flot entre les
deux clients s et t de valeur gale la demande de ces clients.
Programme linaire de trs grande taille (exemple : 100 noeuds, 400 arcs, 1000 demandes 400 000 variables
et 100 400 contraintes).
Avec les solveurs actuels : quelques minutes de temps calcul.

45

Sixime partie

Couplages
17

Introduction

tant donn un graphe non orient, un couplage, ou matching en anglais, est un sous-ensemble dartes sans
sommet commun et dans lequel des sommets peuvent rester isols (ces sommets nont alors aucune arte entrante
ou sortante). Le couplage maximum est le couplage couvrant le plus grand nombre de sommets possibles, en
laissant donc le moins de sommets isols.
Pour illustrer cela, nous pouvons, par exemple, imaginer des jeunes universitaires diplms indiquant les entreprises dans lesquelles ils dsirent travailler, en les classant par ordre de prfrence. Dun autre ct, les entreprises
ralisent aussi un classement des jeunes diplms quelles dsirent prfrentiellement accueillir. Le problme rside en la rpartition des jeunes diplms au sein des entreprises en satisfaisant au mieux les choix des jeunes
diplms et des entreprises. En termes de graphes, cet exemple revient donc relier des sommets jeunes diplms et des sommets entreprises . Nanmoins, cet exemple considre, en plus de la dfinition ci-dessus, un
critre doptimalit, puisque des prfrences sont indiques. Ainsi, ici, chaque couplage doit aussi tre associ une valeur indiquant la qualit du couplage la lumire des prfrences annonces. Ce problme prcis sera
abord la section 19.
Considrons le graphe non dirig suivant, o chaque sommet peut potentiellement tre coupl avec nimporte quel
autre sommet :

Nous pouvons coupler tous les sommets, par exemple, de la manire suivante :

Nous avons six sommets et trois couplages, il ny a alors aucun sommet isol, cest une situation idale.
Par contre, considrons le graphe suivant :

46

Cette fois, nous ne pourrons coupler tous les sommets. Sinon, en effet, nous devons choisir un couplage reprenant
le sommet 1. Si on choisit le couple (1,3), les sommets 2 et 6 sont isols ; si on choisit le couple (1,2), le
sommet 6 est isol ; de mme si on choisit le couple (1,6), le sommet 2 est alors isol.
Il faut donc faire un choix tel que, sur lensemble du graphe, nous ayons le moins de sommets isols. Ici, il
apparat quil faille viter de coupler le sommet 1 avec le sommet 3, puisque cela a comme consquence disoler
deux sommets alors que le sommet 3 peut encore tre coupl avec le sommet 4 ou le sommet 5.
Un exemple de couplage maximum est alors :

Nous avons alors 6 sommets et 2 couplages. Dautres couplages maxima existent, comme par exemple : {(1,6),(3,4),2,5}
ou {(1,6),(3,5),2,4}, etc.

18

Affectations bipartites

Souvent une telle technique de couplage sapplique sur des graphes bipartis. Un graphe biparti est, ici, un graphe
non dirig dans lequel toutes les artes relient des sommets appartenant deux ensembles disjoints, aucune arte
ne pouvant relier deux sommets dun mme ensemble.
Dans notre exemple de la section 17, les entreprises forment un ensemble et les jeunes diplms en forment un
second.
Il apparat naturellement quun graphe biparti ne peut contenir de cycle de longueur impaire.
Le problme de laffectation bipartite (bipartite assignment) consiste, tant donn un graphe biparti, trouver un
ensemble darcs de cardinalit maximum tel que chaque sommet est connect un autre sommet au plus 1 .
Considrer tous les couples possibles reprsente un trop grand travail. Une meilleure solution consiste se baser
sur la technique de flot maximum que nous avons vue au chapitre IV.
Pour construire une solution, on cre un sommet source dont les arcs sortants pointent, un un, sur chaque lment
dun des deux ensembles de sommets du graphe biparti. Puis on ajoute un sommet puits vers lequel pointent tous
les sommets de lautre ensemble. Toutes les artes du rseau ainsi compos ont une capacit gale 1. On applique
alors lalgorithme de flot maximum sur ce rseau, en considrant que le sens des canalisations va toujours de la
source au premier ensemble de sommets, puis vers le second ensemble de sommets, et enfin vers le puits.
Lalgorithme de flot donne un couplage biparti admissible car chaque sommet du premier ensemble de sommets
est atteint par une unique arte de capacit gale 1. Un tel sommet ne peut donc laisser passer, depuis la source,
1. Il sagit donc dun couplage maximum.

47

quune seule unit de flux. De mme, chacun des sommets du second ensemble de sommets a une unique arte
les reliant au puits. Eux aussi ne peuvent donc ne laisser passer, chacun, quune seule unit de flux. Ainsi, chaque
sommet ne sera inclus quau plus une fois dans le couplage.
De plus, aucun autre couplage que celui produit par le flot maximum ne peut avoir plus dartes, car cela conduirait
un flot suprieur celui produit par le flot maximum.
Pour illustrer la ralisation dun tel couplage, considrons le graphe biparti suivant :

Pour transformer ce graphe biparti en rseau, nous y ajoutons une source et un puits. Nous considrons donc bien
que toutes les capacits valent 1 :

Appliquons prsent macroscopiquement lalgorithme de Ford et Fulkerson. Pour commencer, on identifie un


premier chemin entre la source et le puits.

48

Prenons le chemin s, 1, A et p :

Nous pouvons prsent itrativement amliorer le flot en lui ajoutant la plus petite quantit de capacit non utilise sur un arc faisant partie dun chemin entre la source et le puits. Considrons donc, dans un premier temps, le
chemin additionnel, s, 2, B et p :

49

Il est encore possible daugmenter le flot en suivant le chemin s, 3, C et p :

Nous ne pouvons augmenter le flot par un chemin partant de la source et allant au sommet 4, car tous les successeurs de ce sommet 4, savoir les sommets A et B, sont dj saturs. Nous prenons alors plutt un chemin s, 5, D
et p :

50

Il est toujours possible daugmenter le flot en suivant le chemin s, 6, E et p :

Les sommets 4 et F sont toujours isols. A prsent, pour augmenter encore le flot il est possible de rcuprer le
flot allant du sommet 2 au sommet B. Une partie de ltiquetage est alors tel quindiqu ci-dessous, o les arcs en
gras indiquent une canalisation sature, ayant donc un flux y passant gal la capacit :

51

Nous construisons le chemin s, 4, B, nous rcuprons le flux vers le sommet 2, puis nous continuons vers le
sommet F et enfin nous arrivons au sommet p :

A ce stade, nous ne pouvons plus augmenter le flot, le couplage maximal est atteint, produisant, sur notre graphe
biparti, laffectation bipartite recherche :

Remarquons que cette technique ne gre pas la notion de prfrences voque dans notre premier exemple impliquant les jeunes diplms et les entreprises. Cet aspect est abord la section suivante.

19

Le problme des mariages stables

Le problme de laffectatioon bipartite dans un digraphe biparti compltement interconnect (un arc existe dans
chaque sens pour chaque couple de sommets) o des prfrences sont indiques sur les arcs, peut correspondre
au problme des jeunes diplms et des entreprises voqu au dbut de ce chapitre. Nanmoins, ce problme est
classiquement voqu comme le problme des mariages stables.
Considrons donc n femmes et n hommes exprimant chacun, sous forme dune liste, leur prfrence parmi lensemble des reprsentants de lautre sexe (cette liste numre toutes les personnes de lautre sexe par ordre dcroissant de prfrence).
Le problme des mariages stables consiste trouver un ensemble de n mariages maximisant la satisfaction de
lensemble des hommes et femmes.
Un mariage sera dit instable si deux personnes qui ne sont pas maris se prfrent mutuellement leur conjoint.
Le but consiste donc chercher une configuration stable.
Une mthode possible de rsolution consiste faire en sorte que chaque homme, par exemple, se dclare une
femme (ou vice versa 2 ).
Dans un premier temps, chaque homme se dclare la premire femme de sa liste de prfrence.
Si cet homme se dclare une femme qui na pas encore de fianc, ils se fiancent.
2. Nous allons nanmoins, puisque le problme original le dcrit ainsi, considrer par la suite, le vieux systme injuste o ce sont les
hommes qui se dclarent aux femmes.

52

Si celle-ci est dj fiance un homme quelle prfre, le prtendant est conduit et se dclare alors la femme
suivante sur sa liste de prfrences, et ainsi de suite.
Si cet homme se dclare une femme fiance mais qui le prfre lui, selon la liste de prfrence de cette femme,
son fianc, elle rompt ses fianailles et se fiance avec notre homme. Lex-fianc prsent conduit redevient
un prtendant et se dclare nouveau en continuant l o il en tait dans sa liste de prfrences.
Une fois tous les hommes et femmes fiancs, nous procdons aux diffrents mariages de nos couples ainsi forms.
Cette mthode produit des mariages stables car une femme f quun homme h pourrait prfrer sa propre fiance
sera elle-mme fiance quelquun quelle prfre h.
Pour rsoudre ce problme, nous utilisons une liste indiquant pour chaque femme le rang de chacun de ses prtendants. Le rang est le numro dordre du prtendant dans la liste de prfrences dune femme. Ainsi, rang[f][p]
gale le rang du prtendant p sur la liste de prfrences de la femme f. Pour chaque femme f, la valeur sentinelle
+ est mise en rang[f][0] (ceci est ncessaire au bon fonctionnement de lalgorithme propos ci-dessous).
Puisquun fianc conduit doit nouveau se dclarer la femme suivante de sa liste de prfrences, nous devons
mmoriser lendroit o chaque prtendant est arriv dans sa liste, nous utilisons un vecteur suivante, initialis
zro.
Nous manipulerons aussi une matrice prfre[h][f] qui indique la fme femme dans la liste de prfrences
de lhomme h.
Enfin, le vecteur fianc est tel que fianc[f] indique le numro du fianc de la femme f, initialement ce
vecteur nest compos que de 0.
Lalgorithme 1 ralise bien le processus dtaill ci-dessus. On considre chaque homme tour tour comme un
prtendant, et on le fiance la premire femme de sa liste de prfrences qui est libre ou qui le prfre
son fianc actuel. Si un tel fianc est conduit, il devient le prtendant et continue la recherche, dans sa liste de
prfrences, dune femme laquelle se fiancer.
Remarquons que lorsquun fianc redevient un prtendant, donc lorsque nous excutons les trois instructions du
if, nous sommes dans la situation o le numro de lhomme qui tait fianc et qui redevient prtendant est
infrieur au numro de lhomme h initialement considr lors de ce tour de la boucle for.
Algorithme 1 Recherche des mariages stables
for(h=1 ; h <= n ; ++h)
{
p=h
while(p != 0)
{
++suivante[p]
f=prfre[p][suivante[p]]
if(rang[f][p] < rang[f][fianc[f]])
{
q=fianc[f]
fianc[f]=p
p=q
}
}
}

Au pire, chaque homme parcourt lensemble de sa liste de prfrences, la complexit maximale de cet algorithme
est donc linaire en la taille de lensemble de ces listes.

53

Septime partie

La programmation dynamique
20

Retour aux plus courts chemins

En tudiant les plus courts chemins, nous avons observ que dans un digraphe acyclique, le tri topologique permet
de ne traiter un sommet que si tous ses prdcesseurs sont traits.
Lide de lalgorithme de Bellman, que nous rappelons ci-dessous, est quune fois que tous les plus courts chemins
entre le sommet de dpart s et tous les prdcesseurs dun sommet x sont connus, il est facile de dterminer le plus
court chemin du sommet s au sommet x. Il suffit en effet, pour chaque prdcesseur y du sommet x, dadditionner
la taille du plus court chemin entre les sommets s et y la distance reprise sur larc entre les sommets y et x. Le
rsultat le plus petit indiquera le plus court chemin entre s et x.
Algorithme 2 Algorithme de Bellman
dist[0 ... n-1] = +infini
dist[s] = 0
renumroter les sommets dans lordre topologique
for(int k=1 ; k < ordre du graphe ; ++k)
{
j = i tel que pour tous les arcs (i,k) dans le graphe
on ait dist[i]+mat[i][k] qui soit minimum
dist[k] = dist[j]+mat[j][k]
pred[k]=j
}

Cet algorithme peut aussi tre interprt comme une application de la programmation dynamique. La programmation
dynamique est une mthode permettant de rsoudre un problme doptimisation en le dcomposant en tapes par
le principe doptimalit. Il sagit dune mthode rcursive dans laquelle la solution optimale dun sous-problme
sert rsoudre le sous-problme suivant. Les diffrentes tapes consistent en la rsolution de problmes de plus
en plus gros, jusqu obtenir la solution du problme de dpart.
Dans le cas de lalgorithme de Bellman, le principe doptimalit est bas sur le fait que si le plus court chemin
jusqu un noeud k passe par un noeud j, alors le sous-chemin jusque j doit tre un plus court chemin jusque j.
Vu que les noeuds sont tris topologiquement, le plus court chemin de 1 k ne peut visiter que des noeuds j
< k. A ltape k de lalgorithme, on connait les plus courts chemins jusquaux noeuds 1 k-1 et on calcule
rcursivement le chemin le plus court jusque k. Si la fonction dist(k) reprsente la distance du noeud 1 au noeud
k, on peut crire cette fonction sous la forme rcursive :
dist(k) =

min

j=1,...,k1

(dist(j) + mat(j, k))

avec dist(1) = 0. Lalgorithme de Bellman fournit un algorithme drcursifi pour calculer cette fonction.
Considrons lexemple suivant (o les noeuds sont dj numrots suivant un ordre topologique) :
Nous pouvons tablir rcursivement :
f (1) = 0
f (2) = 7, f (3) = 8, f (4) = 5
f (5) = 12, f (6) = 17
f (7) = 21

21

Le problme de sac--dos

Considrons un ensemble de n objets, chaque objet i ayant un profit pi et un poids wi . Le problme de sac--dos
revient dcider quels objets mettre dans un contenant ayant une capacit donne W de manire maximiser le
54

profit total des objets choisis. Nous nous intressons ici uniquement la version binaire du problme dans laquelle
un seul objet de chaque type est disponible.
Ce problme peut tre formul mathmatiquement comme :
n
P

z = max

pj xj

j=1

s.c.

n
P

w j xj W

j=1

xj {0, 1}

j = 1, . . . , n

Ce problme peut tre rsolu en utilisant nouveau la programmation dynamique. Une tape de lalgorithme de
programmation dynamique correspond ici un objet. On dfinit fi (w) pour i = 1, ..., n et w = 0, ..., W comme
tant le profit maximal pouvant tre obtenu avec les objets 1 i pour une capacit w.
Supposons que nous connaissons fi1 (w) cest--dire le profit maximal obtenu avec les i 1 premiers objets
pour toutes les valeurs de capacit w. Observons maintenant ce qui peut tre obtenu avec le i-me objet et une
capacit w donne. Si cet objet nest pas choisi dans la solution optimale, alors le profit maximal obtenu avec les
i premiers objets est le mme quavec les i 1 premiers objets, donc fi (w) = fi1 (w). Par contre, si lobjet
i est choisi dans la solution optimale, il reste une capacit gale w wi pour les i 1 premiers objets. Pour
que le profit soit optimal, ces i 1 premiers objets doivent maximiser le profit obtenu pour une capacit w wi .
Ce profit optimal tant fi1 (w wi ), et lobjet i rapportant un profit pi , on peut donc conclure dans ce cas que
fi (w) = pi + fi1 (w wi ).
Le calcul de f1 (w) tant immdiat (si w w1 , on prend lobjet, sinon on ne peut pas le prendre), la rcursion
pour le problme de sac--dos 0/1 est ds lors donne par :

0 pour w = 0, . . . , w1 1,
f1 (w) =
p1 pour w = w1 , . . . , W.

fi (w) =

fi1 (w)
max{fi1 (w), pi + fi1 (w wi )}

pour w = 0, . . . , wi 1,
pour w = wi , . . . , W.

Le profit optimal pour le problme de dpart est donn par la valeur finale fn (W ).
Illustrons cette rcursion avec lexemple dun sac de capacit 19 et un ensemble de 5 objets avec les caractristiques suivantes :
Objet
Profit
Poids

1
2
2

2
4
3

3
5
6

4
8
8

5
10
9

Les valeurs de fi (w) calcules par la rcursion sont donnes dans le tableau ci-dessous.

55

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

1
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2

2
0
0
2
4
4
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6

3
0
0
2
4
4
6
6
6
7
9
9
11
11
11
11
11
11
11
11
11

4
0
0
2
4
4
6
6
6
8
9
10
12
12
14
14
14
15
17
17
19

5
0
0
2
4
4
6
6
6
8
10
10
12
14
14
16
16
16
18
19
20

Le profit maximal est donc gal 20. La rcursion nous donne uniquement la valeur du profit optimal. Pour
retrouver les objets prsents dans la solution, on peut effectuer une rcursion en arrire.
En effet, observons dans le tableau que f5 (20) 6= f4 (20), ce qui signifie que lobjet 5 fait partie de la solution
optimale. Ds lors, la combinaison des 4 premiers objets est celle qui donne un profit gal f4 (19 9 = 10).
Comme f4 (10) 6= f3 (10), lobjet 4 fait galement partie de la solution optimale. La combinaison des 3 premiers
objets est celle qui donne un profit gal f3 (10 8 = 2). On observe alors que f3 (2) = f2 (2) = f1 (2), ce
qui signifie que les objets 3 et 2 ne sont pas slectionnes alors que lobjet 1 lest. La solution optimale est donc
compose des objets 1,4 et 5.
On peut observer normment de redondance dans le tableau. De plus, la taille du tableau peut "exploser" trs vite
si la valeur numrique de la capacit est grande. Or, nous ne sommes intresss que par les combinaisons de profit
et capacit o la capacit utilise est minimale pour un profit donn. A partir de cette observation, il est intressant
de dfinir la notion de solution domine : une solution est domine par une autre si elle utilise plus de capacit
pour un profit infrieur ou gal.
Au lieu de calculer les valeurs de fi (w) pour toutes les valeurs de w litration i, on peut se contenter de
construire uniquement les paires (profit, poids) non domines. A chaque tape, on ajoute un objet. Les paires
(profit, poids) considres sont celles de ltape prcdente, plus celles obtenues par ajout de lobjet courant aux
paires de ltape prcdente. Toutes les paires domines sont limines au fur et mesure de leur dtection.
Pour lexemple prcdent, nous obtenons :
Itration 0 : (0,0)
Itration 1 : (0,0), (2,2)
Itration 2 : (0,0), (2,2), (4,3), (6,5)
Itration 3 : (0,0), (2,2), (4,3), (5,6), (6,5), (7,8), (9,9), (11,11)
Itration 4 : (0,0), (2,2), (4,3), (6,5), (7,8), (8,8), (9,9), (10,10), (11,11), (12,11), (14,13), (15, 16), (17,17),
(19,19)
Itration 5 : (0,0), (2,2), (4,3), (6,5), (8,8), (9,9), (10,9), (10,10), (12,11), (14,13), (15,16), (16,14), (17,17),
(18,17), (19,18), (19,19), (20,19)
o les paires soulignes reprsentent les paires ajoutes, et les paires domines sont barres. Lcriture dun algorithme dtaill pour le calcul des paires non domines est laiss en guise dexercice.

22

Dtermination de la taille des lots

Le problme de la dtermination de la taille des lots (lot sizing en anglais) est un problme arrivant dans le contexte
de la gestion de production. Etant donns des besoins nets pour un produit, rpartis dans le temps, le problme
56

est de dcider quand produire et en quelles quantits pour satisfaire ces besoins nets de faon la plus conomique
possible.
La solution de ce problme reprsente un compromis entre le cot de lancement l encouru au dbut de chaque
priode pendant laquelle une production a lieu, et le cot de stockage s par unit stocke et par priode, qui
intervient lorsque la production pour satisfaire la demande de plusieurs priodes est regroupe afin de diminuer
les cots de lancement.
Nous nous intressons ici au cas particulier o les cots de lancement et de stockage sont constants (ne dpendent
pas de la priode). Dans ce cas, la programmation dynamique peut tre utilise pour obtenir une solution optimale
du problme.
Soit dt la demande pour la priode t. En introduisant les variables
xt
it
yt

quantit produite la priode t,


stock la priode t,
indicateur de production la priode t (0/1),

le problme peut tre formul mathmatiquement comme


min

T
P
t=1

s.c.

yt + s

T
P

it

t=1

it = it1 + xt dt

t = 1, . . . , T

xt M y t

t = 1, . . . , T

i0 = iT = 0
xt , it 0, yt {0, 1}

t = 1, . . . , T

Remarquons que si les priodes de productions (i.e. les valeurs des variables yt ) sont fixes, ce problme se ramne
un problme de flot de cot minimum dans un rseau particulier.
De plus, on peut montrer que les proprits suivantes sont satisfaites :
1. Il existe une solution optimale telle que it1 xt = 0 pour tout t (production uniquement quand stock vide).
t+k
P
2. Il existe une solution optimale telle que si xt > 0, xt =
dt pour un k > 0
i=t

En dautres termes, il existe toujours une solution optimale telle que la production a lieu uniquement lorsque le
stock est vide, et pour satisfaire la demande dun nombre entier de priodes conscutives. Cette observation nous
permet de construire un algorithme de programmation dynamique. Soit H(k) le cot minimum dune solution
couvrant la demande des priodes 1 k.
Si t k est la dernire priode de production entre 1 et k, alors le cot de production pour les priodes 1 t 1
doit tre optimal et gal H(t 1).
On en dduit la rcursion suivante :
H(k) = min {H(t 1) + l + s
1tk

k
X

(i t)di }

i=t+1

avec la condition initiale H(0) = 0.


Considrons un exemple avec 6 priodes et les demandes nettes suivantes :
Priode
Besoins nets

1
2
3
4
5 6
80 100 125 100 50 50

Supposons que le cot de lancement est l = 300, et le cot de stockage s = 2.5 par unit et par priode.

57

En appliquant la rcursion, nous obtenons :


H(0)

H(1)

0 + 300 = 300

H(2)

min{0 + 300 + 2.5 100, 300 + 300} = 550

H(3)

min{0 + 300 + 2.5 (2 100 + 125), 300 + 300 + 2.5 125, 550 + 300} = 850

H(4)

min{0 + 300 + 2.5 (3 100 + 2 125 + 100), 300 + 300 + 2.5 (2 125 + 100),
550 + 300 + 2.5 100, 850 + 300} = 1100

H(5)

min{0 + 300 + 2.5 (4 100 + 3 125 + 2 100 + 50), 300 + 300 + 2.5 (3 125 + 2 100 + 50),

H(6)

550 + 300 + 2.5 (2 100 + 50), 850 + 300 + 2.5 50, 1100 + 300} = 1275
min{0 + 300 + 2.5 (5 100 + 4 125 + 3 100 + 2 50 + 50),
300 + 300 + 2.5 (4 125 + 3 100 + 2 50 + 50), 550 + 300 + 2.5 (3 100 + 2 50 + 50),
850 + 300 + 2.5 (2 50 + 50), 1100 + 300 + 2.5 50, 1275 + 300} = 1525
La solution optimale a donc un cot de 1525. Les valeurs soulignes correspondent au choix pour lequel le minimum est atteint chaque tape. Pour retrouver les priodes de production, on peut soit appliquer une rcursion en
arrire, soit retenir chaque tape la valeur de la priode de production prcdente t pour lequel le minimum est
atteint. Dans ce cas-ci, on en dduit que la production lieu aux priodes 1, 3 et 5, avec les quantits produites
reprises dans le tableau ci-dessous.
Priode
Besoins nets
Production

1
2
3
4
5
6
80 100 125 100 50 50
180
225
100

Comme tout algorithme de programmation dynamique, la fonction H peut aussi tre interprte comme la calcul
de plus courts chemins dans un graphe o les noeuds reprsentent les priodes de production et un arc de t k
reprsente le fait de produire en priode t pour satisfaire les demandes de la priode t la priode k 1, avec un
Pk
cot gal l + s i=t+1 (i t)di .
Dans notre exemple, le problme se ramne trouver un plus court chemin du noeud A au noeud F dans le graphe
suivant :

Le chemin optimal est indiqu en gras.

58