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 3
1 Aide la dcision et modles mathmatiques 3

2 Quelques exemples de modles mathmatiques 4

3 Tour dhorizon des techniques de recherche oprationnelle 5

II Programmation linaire 6
4 Dfinition, exemples et mthode de rsolution 6
4.1 Notions de bases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.2 Exemples de modles linaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.3 Forme standard et forme canonique dun programme linaire . . . . . . . . . . . . . . . . . . . . 8
4.4 Rsolution de programmes linaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.4.1 Rsolution graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.4.2 La mthode du simplexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.4.3 La mthode des deux phases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.4.4 Cas particuliers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

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

6 Solveurs et langages de modlisation 25

III Le problme de transport 30


7 Dfinition et exemples 30

8 Algorithme pour le problme de transport 31

9 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

V Flots de cot minimum 39


14 Dfinitions et exemples 39

15 Algorithme de chemins augmentants 39

16 Extensions 44

VI Couplages 46
17 Introduction 46

18 Affectations bipartites 47

19 Le problme des mariages stables 52

VII La programmation dynamique 54


20 Retour aux plus courts chemins 54

21 Le problme de sac--dos 54

22 Dtermination de la taille des lots 56

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

3
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 A = lw
s.t. l + w = L2

Solution
A = L2 w w = Lw
 2
2 w
dA L
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.

2 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.
Matires gr. Sucre Oeufs Eau Cot
Crme 40 60 3
Jaune doeuf frais 50 40 10 4
Lait 12 88 1
Jaune doeuf surgel 30 14 40 16 2
Sirop 70 30 0,8
Eau 100 0

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 Cot Localits desservies
1 4 1, 3, 5, 7, 8, 10
2 7 2, 4
3 11 1, 6, 8, 9, 10
4 6 1, 2, 4, 8, 10
5 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 1 2 3 4 5 6 Capacit Cot


Entrepts maximum construction
1 2 3 1 4 5 2 500 100
2 3 1 1 2 2 1 400 120
3 4 1 2 3 2 5 600 150
4 6 1 1 1 2 0 1000 80

3 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

5
Deuxime partie
Programmation linaire
4 Dfinition, exemples et mthode de rsolution
4.1 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 int-
rieurs)

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
Quantit utilise Quantit disponible
par tonne par jour
Extrieure Intrieure
M1 6 4 24
M2 1 2 6
Profit par tonne 5 4

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)

6
6x1 + 4x2 24
x1 + 2x2 6
x2 2
x2 x1 1
x1 , x2 0

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 Cot
Aliment Protines Fibres (EUR / kg)
Orge 0.09 0.02 1.5
Arachide 0.60 0.06 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

7
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 cT x
s.t. 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.

8
Forme standard du problme de production de peinture

max z = 5x1 + 4x2


s.c. 6x1 + 4x2 24
x1 + 2x2 6
x2 2
x2 x1 1
x1 , x2 0

Forme standard
max z = 5x1 +4x2
s.c. 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 cT x
s.t. Ax = b
x0


5 x1

4


x2
6 4 1 0 0 0 24
0 s1 1 2 0 1 0 0 6
c= ,x = ,A = ,b =

0


s2

0 1 0 0 1 0 2
0 s3 1 1 0 0 0 1 1
0 s4

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 = 0.02x1 + 0.015x2 0.002x


3

s.c. 125x1 + 100x2 + x+
3 x3 = 10000
x1 + x2 900

x1 , x2 , x+
3 , x3 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 6 (2)
x2 2 (3)
x2 x1 1 (4)
x1 0 (5)
x2 0 (6)

10
Gomtrie des solutions

C D
E
B
z=10
A F

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 D
E
B
A F

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
0.03x1 0.01x2 0
x1 0
x2 0

Solution optimale
4000 2800 186
x1 = ' 235.3 x2 = ' 164.7 z= ' 1.094
17 17 170

4.4.2 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 = 0 +5x1 +4x2
s1 = 24 6x1 4x2
s2 = 6 x1 2x2
s3 = 2 x2
s4 = 1 +x1 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

C D
E
B
A F

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 = 0 +5x1 +4x2
s1 = 24 6x1 4x2
s2 = 6 x1 2x2
s3 = 2 x2
s4 = 1 +x1 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 = 24 6x1 0 x1 4
s2 = 6 x1 0 x1 6
x1 4
s3 = 2 0 20 toujours!
s4 = 1 +x1 0 x1 1 toujours!

Pivotage
Si x1 = 4, alors s1 = 0.
x1 entre en base, s1 sort de la base.
Substitution :
1 2
x1 = 4 s1 x2
6 3
Nouveau systme :
z = 20 56 s1 + 32 x2
x1 = 4 16 s1 32 x2
s2 = 2 + 16 s1 34 x2
s3 = 2 x2
s4 = 5 16 s1 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
xB + A1 1
B AN xN = AB b

z = cT x = cTB xB + CN
T
xN
= cTB (A1 1 T
B b AB AN x N ) + c N x N
= cTB A1
B b+ (cT cTB A1 AN ) xN
|N {z B }
cots rduits ou profits marginaux

Notation :
X
xl + alk xk = bl lB
kN
X
z=z+ ck x k
kN

14
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


iN
min z k = arg min ci
iN

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

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

Variable sortante
Choisir la variable l en base telle que
bj
l = arg min
jB:ajk >0 ajk
Si alk 0 pour tout l B, problme non born, STOP.

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

Pivotage
a

lj
i=l
0
aij = a lk
a a
aij ik lj i 6= l

alk

b
l

0
i=l
bi = alk
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 x1 = 3 41 s1 + 12 s2
3
s2 = 6 x1 2x2 4 x2 = + 81 s1 34 s2
s2 = 2 + 16 s1 x2 2
s3 = 2 x2 3 s3 = 1
81 s1 + 34 s2
2
s4 = 1 +x1 x2 s3 = 2 x2 s4 = 5
83 s1 + 54 s2
2
s4 = 5 16 s1 35 x2

15
Prsentation en tableau
Prsentation compacte pour effectuer les calculs sans rpter les systmes dquations.

Var. en base z x Solution


z 1 cT cT A1
B A=c cTB A1
B b
1 1
xB 0 AB A = a AB b

Itration 1

Var. en base z x1 x2 s1 s2 s3 s4 Solution


z 1 5 4 0 0 0 0 0
s1 0 6 4 1 0 0 0 24
s2 0 1 2 0 1 0 0 6
s3 0 0 1 0 0 1 0 2
s4 0 1 1 0 0 0 1 1

Itration 2

Var. en base z x1 x2 s1 s2 s3 s4 Solution


2
z 1 0 3 56 0 0 0 20
2 1
x1 0 1 3 6 0 0 0 4
4
s2 0 0 3 61 1 0 0 2
s3 0 0 1 0 0 1 0 2
5 1
s4 0 0 3 6 0 0 1 5

Itration 3

Var. en base z x1 x2 s1 s2 s3 s4 Solution


z 1 0 0 34 12 0 0 21
1
x1 0 1 0 4 12 0 0 3
x2 0 0 1 18 3
4 0 0 3
2
1
s3 0 0 0 8 34 1 0 1
2
3
s4 0 0 0 8 54 0 1 5
2

4.4.3 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 +x2


s.c. 3x1 +x2 = 3
4x1 +3x2 6
x1 +2x2 4
x1 , x2 0

16
Introduction des variables dcart
min z = 4x1 +x2
s.c. 3x1 +x2 = 3
4x1 +3x2 x3 = 6
x1 +2x2 +x4 = 4
x1 , x2 , x3 , x4 0

Pas de base admissible "triviale".


On voudrait voir apparatre une matrice identit.
Introduction de variables artificielles.
Introduction des variables artificielles
min z = 4x1 +x2
min r = R1 +R2
min r = 7x1 4x2 +x3 +9
s.c. 3x1 +x2 +R1 = 3
4x1 +3x2 x3 +R2 = 6
x1 +2x2 +x4 = 4
x1 , x2 , x3 , R1 , R2 , x4 0

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 z= 3x1 +9x2
s.c. x1 +4x2 8
x1 +2x2 4
x1 , x2 0

17
Var. en base z x1 x2 s1 s2 Solution
z 1 3 9 0 0 0
s1 0 1 4 1 0 8
s2 0 1 2 0 1 4
3
z 1 4 0 94 0 18
1 1
x2 0 4 1 4 0 2
1
s2 0 2 0 12 1 0
z 1 0 0 32 23 18
1
x2 0 0 1 2 21 2
x1 0 1 0 1 2 0

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 z= 2x1 +4x2


s.c. x1 +2x2 5
x1 +x2 4
x1 , x2 0

Var. en base z x1 x2 s1 s2 Solution


z 1 2 4 0 0 0
s1 0 1 2 1 0 5
s2 0 1 1 0 1 4
z 1 0 0 2 0 10
1 1 5
x2 0 2 1 2 0 2
1
s2 0 2 0 12 1 3
2

z 1 0 0 2 0 10
x2 0 0 1 1 1 1
x1 0 1 0 1 2 3

Solution optimale :

x1 = 0 + 3(1 ) = 3 3
5 3
x2 = 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 arbi-
trairement grande !

18
Exemple 10 (Problmes non borns).

max z = 2x1 +x2


s.c. x1 x2 1
2x1 4
x1 , x2 0

Var. en base z x1 x2 s1 s2 Solution


z 1 2 1 0 0 0
s1 0 1 1 1 0 1
s2 0 2 0 0 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 z= 3x1 +2x2


s.c. 2x1 +x2 2
3x1 +4x2 12
x1 , x2 0

19
5 Dualit
5.1 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 z= x1 +x2
s.c. 2x1 +x2 = 5 (y1 )
3x1 x2 = 6 (y2 )
x1 , x2 0
Problme dual :
min w = 5y1 +6y2
s.c 2y1 +3y2 1 (x1 )
y1 y2 1 (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 Problme min
Contrainte Variable
0
= non restreinte
Variable Contrainte
0
non restreinte =

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


Problme primal :
max z= 5x1 +12x2 +4x3
s.c. x1 +2x2 +x3 10 (y1 )
2x1 x2 +3x3 =8 (y2 )
x1 , x2 , x3 0

20
Problme dual :
min w = 10y1 +8y2
s.c y1 +2y2 5 (x1 )
2y1 y2 12 (x2 )
y1 +3y2 4 (x3 )
y1 0

5.2 Relations primal/dual


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

max cT x
s.c. Ax = b
x0

min bT y
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 (y1 )
2x1 x2 +3x3 = 8 (y2 )
x1 , x2 , x3 0
Dual (D) :
min w = 10y1 +8y2
s.c y1 +2y2 5 (x1 )
2y1 y2 12 (x2 )
y1 +3y2 4 (x3 )
y1 0
Solution optimale de (P ) :  
26 12
(x1 , x2 , x3 ) = , ,0
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 res-
sources.
Paire primale-duale :

max cT x
s.c. Ax b
x0

min bT y
T
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 = 5x1 +4x2
s.c 6x1 +4x2 24
x1 +2x2 6
x2 2
x1 +x2 1
x1 , x2 0

min w = 24y1 +6y2 +2y3 +y4


6y1 +y2 y4 5
4y1 +2y2 +y3 +y4 4
y1 , y2 , y3 , y4 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 s1 s2 s3 s4 Solution


z 1 0 0 34 12 0 0 21
1
x1 0 1 0 4 12 0 0 3
x2 0 0 1 18 3
4 0 0 3
2
1
s3 0 0 0 8 34 1 0 1
2
3
s4 0 0 0 8 54 0 1 5
2

Tableau dual final

Var. en base w t1 t2 y1 y2 y3 y4 Solution


3 1 5
w 1 3 2 0 0 2 2 21
y1 0 14 1
8 1 0 18 38 3
4
1
y2 0 2 43 0 1 3
4
5
4
1
2

23
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 x1 x2 s1 s2 s3 s4
Dual t1 t2 y1 y2 y3 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 compl-
mentaire 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 :

min bT y
T
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
B b>0 xN = 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

|ci |
k = arg min
iN :ali <0 ali
Si ali 0 pour tout i N , problme non admissible, STOP.
Exemple 16 (Simplexe dual).
min z = 3x1 +2x2
s.c. 3x1 +x2 3
4x1 +3x2 6
x1 +x2 3
x1 , x2 0
Forme standard avec les variables dcart en base :
min z = 3x1 +2x2
s.c. 3x1 x2 +s1 = 3
4x1 3x2 +s2 = 6
x1 +x2 +s3 =3
x1 , x2 , s1 , s2 , s3 0

Var. en base z x1 x2 s1 s2 s3 Solution


z 1 3 2 0 0 0 0
s1 0 3 1 1 0 0 3
s2 0 4 3 0 1 0 6
s3 0 1 1 0 0 1 3

Var. en base z x1 x2 s1 s2 s3 Solution


1 2
z 1 3 0 0 3 0 4
s1 0 53 0 1 23 0 1
4
x2 0 3 1 0 31 0 2
s3 0 13 0 0 1
3 1 1

Var. en base z x1 x2 s1 s2 s3 Solution


1 3
z 1 0 0 5 5 0 21
5
x1 0 1 0 35 1
5 0 3
5
4
x2 0 0 1 5 53 0 6
5
s3 0 0 0 15 52 1 6
5

6 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 Train Camion Voiture
1 1 2 1
2 3 0 2
3 1 4 0

Primal
max z = 3x1 +2x2 +5x3
s.c. x1 +2x2 +x3 430
3x1 +2x3 460
x1 +4x2 420
x1 , x2 , x3 0

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

Dual
min w = 430y1 +460y2 +420y3
s.c. y1 +3y2 +y3 3
2y1 +4y3 2
y1 +2y2 5
y1 , y2 , y3 0

y1 = 1
y2 = 2
y3 = 0

Var. en base z x1 x2 x3 s1 s2 s3 Solution


z 1 4 0 0 1 2 0 1350
x2 0 14 1 0 1
2 14 0 100
3 1
x3 0 2 0 1 0 2 0 230
s3 0 2 0 0 2 1 1 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 toys
ROWS
L R0001
L R0002
L R0003
N R0004
COLUMNS
C0001 R0001 1
C0001 R0002 3
C0001 R0003 1
C0001 R0004 3
C0002 R0001 2
C0002 R0003 4
C0002 R0004 2
C0003 R0001 1
C0003 R0002 2
C0003 R0004 5
RHS
B R0001 430
B R0002 460
B R0003 420
ENDATA

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 time : Trains Trucks Cars :=


1 1 2 1
2 3 0 2
3 1 4 0 ;

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 Destinations
a1 1 1 b1

a2 2 2 b2

am m
cm n xm n
n
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
Denver Miami Offre
Los Angeles 80 215 1000
1000
Detroit 100 108 1500
1300 200
New Orleans 102 68 1200
1200
Demande 2300 1400

Problmes non balancs


Si loffre nest pas gale la demande : modle non balanc.
Introduction dune source ou destination artificielle.
Denver Miami Offre
Los Angeles 80 215 1000
1000
Detroit 100 108 1300
1300
New Orleans 102 68 1200
1200
Artif. 0 0 200
200
Demande 2300 1400

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


Source i Priode de production i
Destination j Priode de demande j
Offre la source i Capacit de production la priode i
Demande la destination j Demande pour la priode j
Cot de transport de i j Cot unitaire (production + stock + pnalit)
pour une production en priode i pour la priode j

8 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 2 3 4 Offre
1 10 2 20 11 15

2 12 7 9 20 25

3 4 14 16 18 10

Demande 5 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 2 3 4 Offre
1 10 2 20 11 15
5 10
2 12 7 9 20 25
5 15 5
3 4 14 16 18 10
10
Demande 5 15 15 15
Cot : 520

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 2 3 4 Offre
1 10 2 20 11 15
15
2 12 7 9 20 25
15 10
3 4 14 16 18 10
5 5
Demande 5 15 15 15
Cot : 475

32
Formulation

m X
X n
min z = cij xij
i=1 j=1
Xn
s.c. (ui ) xij = ai i = 1, . . . , m
j=1
Xm
(vj ) xij = bj j = 1, . . . , n
i=1
xij 0 i = 1, . . . , m, j = 1, . . . , n

Problme dual

m
X n
X
max w = ai ui + bj vj
i=1 j=1
s.c. 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 2 3 4 Offre
1 10 2 20 11 15
5 10
2 12 7 9 20 25
5 15 5
3 4 14 16 18 10
10
Demande 5 15 15 15

u1 = 0
u1 + v1 = 10 v1 = 10
u1 + v2 = 2 v2 = 2
u2 + v2 = 7 u2 = 5
u2 + v3 = 9 v3 = 4
u2 + v4 = 20 v4 = 15
u3 + v4 = 18 u3 = 3

33
Vrification du critre doptimalit et dtermination de la variable entrante

1 10 2 2 3 4 4 15 Offre
1 10 2 20 11 15
0 5 10 -16 4
2 12 7 9 20 25
5 3 5 15 5
3 4 14 16 18 10
3 9 -9 -9 10
Demande 5 15 15 15

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 10 2 2 3 4 4 15 Offre
1 10 2 + 20 11 15
0 5 10 -16 4
2 12 7 9 20 + 25
5 3 5 15 5
3 4 + 14 16 18 10
3 9 -9 -9 10
Demande 5 15 15 15

=5
1 1 2 2 3 4 4 15 Offre
1 10 2 20 11 + 15
0 -9 15 -16 4
2 12 7 + 9 20 25
5 -6 0 15 10
3 4 14 16 18 10
3 5 -9 -9 5
Demande 5 15 15 15

= 10
1 -3 2 2 3 4 4 11 Offre
1 10 2 20 11 15
0 -13 5 -16 10
2 12 7 9 20 25
5 -10 10 15 -4
3 4 14 16 18 10
7 5 -5 -5 5
Demande 5 15 15 15

9 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 800
8
3 5
1000 P1 T1
6
4
7 D2 900
4
2 3
5
1200 P2 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.

T1 T2 D1 D2 D3 Offre
P1 3 4 M M M 1000
P2 2 5 M M M 1200
T1 0 7 8 6 M 2200
T2 M 0 M 4 9 2200
D1 M M 0 5 M 2200
D2 M M M 0 3 2200
Demande 2200 2200 3000 3100 500

35
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 (i, j) A


X X
fij = fji i N \ {s, t}
j:(i,j)A j:(j,i)A

La valeur du flot est X X


v(f ) = fsj = fjt .
j:(s,j)A j:(j,t)A

11 Formulation
Formulation du problme de flot maximal
max v
X X v i = s,
s.c. fij fji = v i = t, i N,
0 sinon,

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

12 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, ]
5 10
1 5 [4, 10]
30
30
20
20
2 3
40
[1, 20] [1, 30]
4
20
10 10 10
[0, ]
5 10
1 5 [2, 20]
30
30
20
20
2 3
40
[1, 20] [1, 30]

37
[3, 10]
4
20
10 10 10
[0, ]
5 10
1 5 [3, 20]
30
30 20
20 20
20
2 3
40
[1, 30]
[3, 10]
4
20
10 10 10
[0, ]
5 10
1 5 [4, 10]
30
20 30 20
20 20
20 20
2 3
40
[1, 10]
4
20
10 10 20
[0, ]
5 10
1 10 5
30
30 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 (i, j) A


X X
fij fji = bi iN
j:(i,j)A 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 (i, j) A


X X
fij fji = bi iN
j:(i,j)A 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 si (i, j) A,


c0ij = cji wi + wj 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
5 35
40 1 4 -30
7
10
3 4
90 3 90
8
60 90
2

50 2 5 -60
1 30

Itration 1

40
5 35
1 4

7 0
40 10 30
0
3 4
s 90 3 90 t
8
60 90
0 2
50 60
0
2 5
1 30
0 5 35 5
1 4

7 0
40 10 30
0
0 3 2 4
s 90 3 90 t
8 1
60 90
0 2
50 60
0
2 5
0 1 30 1

Itration 2
0 5 35 -5
1 4

7 0
40 10 30
0
0 3 -2 4
s 90 3 90 t

30 8 -1
60 90
0 2 30
50 60
0
2 5
0 1 30 30 -1

41
0 0 35 0
1 4

5 4
40 10 30
0
0 3 0 8
0
s 20 90 3 90 t
9 30 4
60 90
0 0 0
30 30
0
2 5
0 0 30 4

Itration 3
0 5 35 30 -5
1 4

7 0
40 10 30
0 30
0 30 3 -2 4
s 90 3 90 t

30 8 -5
60 90
0 2 30
50 60
0
2 5
0 1 30 30 -5

0 5
0 0
1 4
0 30
10 5 0
10 30
0 30
0 0 3 0 4
s 90 3 90 t
0 5 30 4
60 90
0 20 0 0
30 30
0
2 5
0 4 30 4

Itration 4

42
0 5 35 35 -5
1 4

7 0
40 10 30
0 30
0 35 3 -2 4
90 5
s 3 90 t

30 8 -9
60 90
0 2 35
50 60
0
2 5
0 1 30 30 -9

0 1
1 4
0 35
5 5 4
10 30
0 35
0 0 3 0 0 0
s 90 3 5 85 t
0 1 25 1
60 90
0 20 0 0
30 35
0
2 5
0 8 30 1

Itration 5
0 5 35 35 -6
1 4

7 0
40 10 30
0 30
0 35 3 -2 4
90 5
s 3 90 t

50 8
60 90 -10
0 2 55
50 20 20 60
0
2 5
0 1 30 30 -10

43
0 3
1 4
1 35
5 5 4
10 30
0 35
0 0 0
3 3 0
90 5
s 3 85 t
40 5
0 3
0
3 70 0
20 0 55
50 0 0
20
2 5
3 9 30 3

Solution finale
0 5 35 35 -9
1 4

7 0
40 10 30
0 30
0 40 -2
5 3 5
4
s 90 3 90 t

50 8
60 90 -13
0 2 60
50 25 25 60
0
2 5
-3 1 30 30 -13

16 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 ckij fij
k

kK (i,j)A
X X
k k
s.c. fij fji = bki i N, k K,
j:(i,j)A j:(j,i)A
X
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 entre-
prises 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 r-
side 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 di-
plms 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 asso-
ci 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 utili-
se 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 succes-
seurs 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 impli-
quant 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 len-
semble des reprsentants de lautre sexe (cette liste numre toutes les personnes de lautre sexe par ordre dcrois-
sant 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 prten-
dants. 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 (dist(j) + mat(j, k))


j=1,...,k1

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
n
P
s.c. 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.

fi1 (w) pour w = 0, . . . , wi 1,
fi (w) =
max{fi1 (w), pi + fi1 (w wi )} 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 caractris-
tiques suivantes :
Objet 1 2 3 4 5
Profit 2 4 5 8 10
Poids 2 3 6 8 9

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

55
1 2 3 4 5
0 0 0 0 0 0
1 0 0 0 0 0
2 2 2 2 2 2
3 2 4 4 4 4
4 2 4 4 4 4
5 2 6 6 6 6
6 2 6 6 6 6
7 2 6 6 6 6
8 2 6 7 8 8
9 2 6 9 9 10
10 2 6 9 10 10
11 2 6 11 12 12
12 2 6 11 12 14
13 2 6 11 14 14
14 2 6 11 14 16
15 2 6 11 14 16
16 2 6 11 15 16
17 2 6 11 17 18
18 2 6 11 17 19
19 2 6 11 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 algo-
rithme 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 quantit produite la priode t,


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

le problme peut tre formul mathmatiquement comme


T
P T
P
min l yt + s it
t=1 t=1
s.c. 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 :
k
X
H(k) = min {H(t 1) + l + s (i t)di }
1tk
i=t+1

avec la condition initiale H(0) = 0.


Considrons un exemple avec 6 priodes et les demandes nettes suivantes :
Priode 1 2 3 4 5 6
Besoins nets 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) = 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),
550 + 300 + 2.5 (2 100 + 50), 850 + 300 + 2.5 50, 1100 + 300} = 1275
H(6) = 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 mini-
mum 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 1 2 3 4 5 6
Besoins nets 80 100 125 100 50 50
Production 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