Vous êtes sur la page 1sur 113

Modles de Recherche Oprationnelle

Fabian Bastin
bastin@iro.umontreal.ca
Dpartement dInformatique et de Recherche Oprationnelle
Universit de Montral
IFT-1575
Hiver 2010
http://www.iro.umontreal.ca/~bastin
La prsente version du syllabus sinspire des notes de Patrice Marcotte, Bernard Gendron, ainsi que des livres
Introduction to Operational Research [1] et The Basics of Practical Optimization [3].
Le prsent document peut tre modi et redistribu des ns non commerciales, sous conditions dtre dius
sous les mme conditions.
Photographie de couverture: viaduc de Millau, France.
c Fabian Bastin, 2006
Table des matires
1 Introduction 1
1.1 Les origines de la recherche oprationnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 La nature de la recherche oprationnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Modlisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 Algorithmes et logiciels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4.1 Un exemple avec GAMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Programmation linaire 7
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 Modle gnral de programmation linaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3 Terminologie de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4 Hypothses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.5 La mthode du simplexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.5.1 Solution de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.5.2 Interprtations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.5.3 Critre doptimalit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.5.4 Adaptation dautres formes de modles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.5.5 Obtention dune base admissible initiale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.5.6 Variables valeurs quelconques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.6 Dualit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.6.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.6.2 Analyse de sensibilit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3 Programmation non linaire 31
3.1 Fonctions convexes et concaves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.1.1 Ensembles convexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2 Algorithmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2.1 Lalgorithme du simplexe dans le cas non-linaire . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2.2 Optimisation sans contrainte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.2.3 Mthode de la bissection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.2.4 Mthode du gradient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2.5 Optimisation sous contraintes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.2.6 Conditions doptimalit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4 Programmation mixte entire 41
4.1 Prsentation gnrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.2 Contraintes mutuellement exclusives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.2.1 Deux contraintes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.2.2 K contraintes parmi N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.2.3 Fonction ayant N valeurs possibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
iii
iv TABLE DES MATIRES
4.2.4 Objectif avec cots xes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.2.5 Variables entires en variables 01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.2.6 Problme de recouvrement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.3 Stratgies de rsolutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.3.1 Relaxation linaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.3.2 Approche par numration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.3.3 Les hyperplans coupants (mthode de coupe) . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.4 Modlisation avec GAMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.6 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5 Rseaux 63
5.1 Graphes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.1.1 Graphe orient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.1.2 Graphe non orient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.1.3 Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.1.4 Chemins et circuits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.1.5 Connexit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.2 Problme du chemin le plus court - algorithmes de corrections dtiquettes . . . . . . . . . . . . . . . 65
5.2.1 Algorithme de Dijkstra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.3 Flot dans un rseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.3.1 Rseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.3.2 Modle de ot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.3.3 Algorithme de Bellman-Ford . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.3.4 Modle du chemin critique (PERT/CPM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.4 Problme de larbre partiel minimum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.4.1 Algorithme de Prim (1957) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.5 Problme du ot maximum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.5.1 Algorithme de Ford-Fulkerson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.5.2 Flot maximum - Coupe minimum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.6 Problme de ot minimum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6 Modles stochastiques 77
6.1 Concepts de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.2 Variable alatoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
6.2.1 Variables alatoires discrtes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.2.2 Variables alatoires continues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.2.3 Esprance mathmatique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.2.4 Variance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.3 Loi de probabilit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.3.1 Loi de Bernouilli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.3.2 Loi uniforme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.3.3 Loi de Poisson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.3.4 Loi exponentielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.4 Modles stochastiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.4.1 Processus stochastiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
6.4.2 Chanes de Markov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
6.5 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
TABLE DES MATIRES v
7 Programmation dynamique 85
7.1 Principe doptimalit de Bellman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
7.2 Aectation de ressources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
7.3 Programmation dynamique dterministe et plus court chemin . . . . . . . . . . . . . . . . . . . . . . 90
7.4 Cas probabiliste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
7.5 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
8 Simulation 93
8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
8.2 Files dattente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
8.2.1 Concepts de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
8.2.2 Modle M/M/1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
8.3 Simulation vnements discrets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
8.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Annexe 99
8.5 Logiciels doptimisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
8.5.1 IOR Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
8.5.2 GAMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
8.5.3 Autres logiciels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
8.6 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Bibliographie 105
vi TABLE DES MATIRES
Chapitre 1
Introduction
1.1 Les origines de la recherche oprationnelle
Si la recherche oprationnelle, en abrg RO, est aujourdhui prsente dans la plupart des domaines civils, ses
racines sont habituellement attribus aux services militaires. La seconde guerre mondiale, de part son envergure,
cra une besoin urgent dallouer de manire ecace des ressources limites aux direntes oprations militaires
et aux activits au sein de chaque opration. En particulier, lorganisation militaire britannique, puis amricaine,
mis contribution un grand nombre de scientiques pour grer ces allocations, et soccuper dautres problmes
stratgiques et tactiques. Ce faisant, ils furent appels poursuivre des recherches sur des oprations (militaires),
et constiturent les premires quipes de RO. Leurs eorts furent signifactifs dans la marche vers la victoire, par
exemple en ce qui touche lutilisation du radar, nouvellement dvelopp. Ces succs encouragrent la poursuite de
lutilisation de la RO dans dautres domaines. La croissance importante de lindustrie daprs-guerre entrana des
problmes, causs par la complexit croissante et la spcialisation dans les organisations, problmes en fait proches
de ceux prsent lors du conit. Au dbut des annes 1950s, la RO avait pntr une multitude dorganisations
commerciales, industrielles, et gouvernementales. Et ce ntait que le dbut.
Au moins deux autres facteurs ont jou un rle cl dans la croissance rapide de la RO. Tout dabord, des
progrs substantiels ont t obtenus trs tt an damliorer les techniques de RO. Ces techniques, dans leur mise
en pratique, furent soutenues par lessor des outils informatiques.
1.2 La nature de la recherche oprationnelle
Rechercher sur des oprations touche tous les problmes relis la conduite et la coordination des oprations
(activts) au sein dune organisation. Cette organisation peut reprsenter des domaines trs divers: lindustrie
manufacturire, le transport, la construction, les tlcommuncations, la nance, les soins de sant,. . . . La RO,
associe la rvolution informatique, pntre pratiquement tous les secteurs dactivits de la vie courante, mme
si sa prsence est souvent invisible.
La premire tape de la recherche est lobservation attentive du problme et sa formulation, ainsi que la collecte
de donnes associes. Il convient par la suite de construire un modle scientique qui tente labstraire lessence du
problme rel. Tout modle est une simplication de la ralit, mais cette reprsentation doit tre sudsamment
prcise pour capturer les caractristiques essentielles de la situation, et de pouvoir tirer des conclusions valides pour
le problme relle. Il conviendra ds lors de tester ce modle, et de le modier au besoin.
Une caractristique additionnelle est que la RO essaye souvent de trouver une meilleure solution (dite solution
optimale) pour le problme examin. Cette solution peut ne pas tre unique. Cette recherche doptimalit est un
thme important en RO, mais si son interprtation en terme managriels peut tre dlicate.
Il est dicile pour un individu de pouvoir matrise tous les aspects du problmes ltude, de sorte que la RO est
gnralement plus un travail dquipe, avec des experts en mathmatiques, statistiques et probabilits, ingnierie,
conomie, administration, informatique, physiques, sciences comportementales, et les techniques spciques de la
RO.
1
2 CHAPITRE 1. INTRODUCTION
1.3 Modlisation
Un modle, telle que considr dans ce cours, est une construction mathmatique utilise pour reprsenter
certains aspects signicatifs de problmes du monde rel. Il y a beaucoup de types dirents de modles mathma-
tiques, mais nous nous focaliserons dans un premier temps sur les modles doptimisation. Il y a trois composantes
principales dans un modle doptimisation:
Variables: elles reprsentent les composantes du modle qui peuvent tre modies pour crer des congurations
direntes.
Contraintes: elles reprsentent les limitations sur les variables.
Fonction objection : cette fonction assigne une valeur chaque conguration dirente. Le terme objectif vient
du fait que lobjectif est doptimiser cette fonction.
Exemple 1 (Un exemples de dcisions binaires (oui/non)). Un tudiant en qute dune universit projette de
visiter les campus de trois universits du Maine au cours dun voyage unique, dbutant et nissant laroport de
Portland. Les trois tablissements sont dans les villes de Brunswick, Lewiston, et Waterville, et ltudiant ne veut
visiter chaque ville quune seule fois, tout en maintenant le trajet total le plus court possible. Les distances entre ces
villes sont donnes dans la Table 1.1.
Ville Portland Brunswick Lewiston Waterville
Portland 0 26 34 78
Brunswick 26 0 18 52
Lewiston 34 18 0 51
Waterville 78 52 51 0
Table 1.1 Distances entre les villes (miles)
Ltape la plus importante dans la construction dun modle est le choix des variables qui vont entrer en jeu.
Dans le prsent cas, puisque nimporte quel trajet consiste en une srie de petits dplacements entre deux villes, il est
raisonnable dassigner des variables aux dcisions de partir ou non dune ville vers une autre. Pour plus de faciliter,
numrotons les villes comme suit: 1 pour Portland, 2 pour Brunswick, 3 pour Lewiston et 4 pour Waterville. Ainsi,
nous aurons une variable x
1,2
gale 1 si ltudiant voyage de Portland Brunswick au cours de son parcours total,
et 0 sinon. Puisquil ny a pas de voyage dune ville vers cette mme ville, nous avons dores et dj les contraintes
x
i,i
= 0, i = 1, . . . , 4. (1.3.1)
Une fois les variables choisies, nous pouvons essayer de formuler le problme. Ce processus est en fait souvent une
manire utiles pour guider le choix des variables.
Chaque ville ne devant tre visite quune seule fois, elle ne peut apparatre quune seule fois comme ville
darriv. En dautres termes, pour j x, x
i,j
ne peut tre non-nul que pour un i donn, avec i ,= j. Une manire
plus simple dencoder cette information est dcrire, pour j = 1, . . . , 4,
x
1,j
+x
2,j
+x
3,j
+x
4,j
= 1,
ou de manire plus concise.
4

i=1
x
i,j
= 1, j = 1, . . . , 4. (1.3.2)
Les contraintes formules jusqu prsent ne garantissent aucune forme de trajet ayant mme dpart et arrive.
Par exemple, laectation x
1,2
= 1, x
1,3
= 1, x
1,4
= 1, x
2,1
= 1, et toutes les autres variables gales 0, satisfont
les contraintes 1.3.1 et 1.3.2. Cette solution dcrit toutefois un schma de visites impossible puisque Portland est
lorigine de tous les dplacements aux trois autres villes universitaires, mais nest destination que depuis Brunswick.
Nous avons videmment aussi besoin des contraintes
4

j=1
x
i,j
= 1, i = 1, . . . , 4, (1.3.3)
1.3. MODLISATION 3
an dassurer que chaque ville ne serve dorigine que pour exactement un dplacement vers une autre ville. Fi-
nalement, an dobtenir un vritable trajet ayant mme origine et dpart, nous devons rejeter les aectations qui
dcrivent des groupes dconnects de petits dplacements comme x
1,2
= x
2,1
= 1, x
3,4
= x
4,3
= 1, avec toutes les
autres variables gales 0. Nous pouvons forcer ceci avec les contraintes
x
i,j
+x
j,i
1, i = 1, . . . , 4, et j = 1, . . . , 4.
Cette contrainte exclut tout mini-cycle.
Les contraintes dnies, nous devons dcrire la distance totale associ nimporte quel parcours autoris. Puisque
nos variables ont seulement comme valeurs possibles 0 ou 1, nous pouvons multiplier chacune delle par la distance
correspondante entre les deux villes indexes, et les additionner:
4

i=1
4

j=1
x
i,j
a
i,j
.
Notre modle mathmatique consiste minimiser cette fonction, dite fonction objectif par rapport aux variables
x
i,j
, tout en satisfaisant les contraintes pralablement dcrites:
min
x
4

i=1
4

j=1
x
i,j
a
i,j
,
s.c. x
i,i
= 0, i = 1, . . . , 4,
4

i=1
x
i,j
= 1, j = 1, . . . , 4,
4

j=1
x
i,j
= 1, i = 1, . . . , 4,
x
i,j
+x
j,i
1, i = 1, . . . , 4, et j = 1, . . . , 4,
x
i,j
0, 1, i = 1, . . . , 4, et j = 1, . . . , 4.
Ici, x = (x
i,j
)
i=1,...,4,j=1,...,4
, et s.c., sous les contraintes. Le problme doptimisation ainsi construit constitue un
programme mathmatique.
Le problme de visites duniversits est assez petit que pour tre rsolu explicitement, sans recourir des m-
thodes doptimisation numrique. Puisquil y a seulement trois parcours signicativement dirents, la distance totale
associe chacun deux pourrait tre facilement calcule, et nous choisissons le parcours de longueur minimale, qui
est ici
Portland Brunswick Waterville Lewiston Portland.
avec une distance totale de 163 miles. Il est cependant clair quune telle stratgie de rsolution ne fonctionne plus
comme le nombre de villes augmente.
Exemple 2 (Un problme de mlange). Un armateur doit construire un navire de guerre partir de 50 tonnes
dacier contenant entre 0.5% et 1.25% de carbone (C), entre 0.3% and 0.5% de silicone (Si), pas plus de 0.05% de
sulfure (Su), et pas plus de 0.04% de phosphore (Ph). Un fournisseur produit de lacier partir de sept matires
premiress dont les qualits, les disponibilits en tonnes, et les cots en $/tonne sont donns dans la Table 2. Le
fournisseur veut dterminer la combinaison la moins coteuse de composants bruts quil peut utiliser pour produire
lacier rpondant aux besoins de larmateur.
Puisque les fournisseur peut changer les quantits de matries premires utilises dans la producton de lacier,
nous pourrions assigner une variable dirente pour reprsenter la quantiter de chaque matire premire:
x
1
= tonnes de limonite,
x
2
= tonnes de taconite,
x
3
= tonnes dhmatite,
x
4
= tonnes de magntite,
4 CHAPITRE 1. INTRODUCTION
Matire premire % C % Si % Su % Ph Disponibilit Cot
limonite 3.0 0 0.013 0.015 40 200
taconite 2.5 0 0.008 0.001 30 250
hmatite 0 0 0.011 0.05 60 150
magntite 1.2 0 0.002 0.008 50 220
silicone 1 0 90 0.004 0.002 20 300
silicone 2 0 96 0.012 0.003 30 310
charbon 90 0 0.002 0.01 25 165
Table 1.2 Donnes pour le problme de production dacier
x
5
= tonnes de silicone 1,
x
6
= tonnes de silicone 2,
x
7
= tonnes de charbon.
Notons que les variables sont ici continues, contrairement lexemple prcdent.
An de modliser les contraintes, observons tout dabord que les variables dans ce cas sont naturellement bornes
infrieurement par 0 (puisque des quantits ngatives ne feraient pas de sens), et bornes suprieurement par leur
quantit disponible, aussi avons-nous:
0 x
1
40,
0 x
2
30,
0 x
3
60,
0 x
4
50,
0 x
5
20,
0 x
6
30,
0 x
7
25.
En supposant que nimporte quelle quantit dune matire premire contribue pour la mme quantit dacier, et en
sachant que nous devons produire au moins 50 tonnes, nous avons
7

i=1
x
i
50.
Notons que nous ne supposons pas que nous produirons exactement 50 tonnes, puisquil peut tre ncessaire de
produire davantage an de satisfaire les autres exigences du problme.
Lautre caractristique contraignante dans ce problme que que lacier doit contenir un certain pourcentage de
carboine, de silicone, de sulfure et de phosphore. An de voir comment ces exigences de composition se traduisent en
contraintes par rapport nos variables, nous nous concentrerons dabord sur lexigence davoir entre 0.5% et 1.25%
de carbone, en esprant que les exigences sur le silicone, le sulfure et le phosphore se formulent de manire similaire.
A partir des donnes, nous connaissons le pourcentage de contribution en carbone de chaque matire premire, aussi
nous pouvons facilement calculer la quantit de carbone pour nimporte quel choix de variables comme
0.03x
1
+ 0.025x
2
+ 0.012x
4
+ 0.9x
7
.
Cependant, comme nous avons une exigences de proportion de carbone dans lacier, nous devons diviser cette
quantit de carbone par la quantit dacier:
%C = 100
_
tonnes de carbone
tonnes dacier
_
=
3.0x
1
+ 2.5x
2
+ 1.2x
4
+ 90x
7
x
1
+x
2
+x
3
+x
4
+x
5
+x
6
+x
7
.
La contrainte que lacier contienne entre 0.5% et 1.25% de carbone se traduit dans la paire de contraintes
0.5
3.0x
1
+ 2.5x
2
+ 1.2x
4
+ 90x
7
x
1
+x
2
+x
3
+x
4
+x
5
+x
6
+x
7
1.25. (1.3.4)
1.4. ALGORITHMES ET LOGICIELS 5
Les contraintes pour les autres composants se formulent de manire similaires.
Puisque ce problme implique de trouver la combinaison la moins coteuse de matires premires qui rencontre
la demande de 50 tonnes dacier, la fonction objectif est simplement le cot des matires premires utilises:
cot = 200x
1
+ 250x
2
+ 150x
3
+ 220x
4
+ 300x
5
+ 310x
6
+ 165x
7
,
o chaque matire premire contribue pour son propre cot au total. Le problme doptimisation est ds lors la
minimisation de cette fonction cot sur tous les choix des variables qui satisfont les contraintes modlises.
Il nest plus possible ici dnumrer les solutions possibles an de rsoudre le modle, en particuler puisque les
variables considres sont continues. Nous pouvons nanmoins obtenir une intuition de la solution en considrant le
comportement de la fonction objectif. Ainsi, il est vident que celle-ci dcrot quand une des variables diminue, et que
la contribution la plus faible en termes de cot vient des variabless avec les plus petits coecients (i.e. les matires
premires avec les cots moindres par unit). Si nous ignorons les contraintes de composition, le fournisseur devrait
produire exactement 50 tonnes dacier partir des matires premires disponibles les moins chres. Ceci signierait
utiliser 50 des 60 tonnes disponibles dhmatite (au cot de $150 par tonne), pour un cot total des $7,500.
Avant dessayer de rsoudre le problme doptimisation complet ( laide dun ordinateur), nous devrions r-
crire les contraintes de composition dans une forme plus simple. Par exemple, la contrainte 1.3.4 est nonlinaire,
mais peut tre rexprime comme deux contraintes linaires en multipliant chaque terme des ingalits par le d-
nominateur. Aprs la simplication de toutes les contraintes de composition de cette manire, et en utilisant un
logiciel doptimisation, nous obtenons la solution
x
1
= 13.7888, x
3
= 35.8097, x
5
= 0.166667, x
7
= 0.234818, x
2
= x
4
= x
6
= 0,
qui se traduit en exactement 50 tonnes dacier, produit partir de 13.7888 tonnes de limonite, 35.8097 tonnes
dhmatite, 0.166667 tonnes de silicone 1 et 0.234818 tonnes de charbon. Le cot total de production pour cette
solution est $8,217.96.
1.4 Algorithmes et logiciels
Au-del de la modlisation, la rsolution de problmes de recherche oprationnelle ncessite de recourir
des algorithmes adapats la nature du problme, et capables de traiter de quelques dizaines des millions de
variables. Leur tude consistera par consquent une partie importante du prsent document. Mme si de nombreux
logiciels mettant en oeuvre ces algorithmes sont commerciaux, le monde de lopen-source nest pas en reste avec
notamment des projets tels que COIN-OR (http://www.coin-or.org). Il existe aussi diverses versions dvaluations
de solveurs commerciaux, ainsi que linterface web NEOS (http://www-neos.mcs.anl.gov). Lutilisation de tels
outils ncessitent toutefois lapprentissage de langages de modlisation adapts ; dans ce cours, nous nous baserons
sur le langage GAMS (http://www.gams.com). Ces langages servent dcrire dans des termes comprhensibles par
le solveur le problme rsoudre. La dernire version de IOR-Tutorial, dvelopp en Java et propos en complment
Hillier et Lieberman [1], peut galement se rvler un complment prcieux pour se familiariser avec les techniques
de recherche oprationnelle.
1.4.1 Un exemple avec GAMS
GAMS est lacronyme de General Algebric Modeling System. Il consiste en un langage de description de pro-
blmes, qui peut tre compil, et en une interface vers dirent solveurs. Une version gratuite de dmonstra-
tion, permettant de rsoudre des problmes de petite taille, est disponible en tlchargement ladress http:
//www.gams.com. Ce langage peut galement tre utilis avec divers solveurs proposs sur NEOS. Nous reviendrons
plus en dtail ultrieurement sur la formulation dun programme mathmatique avec GAMS, et nous contenterons
dun petit exemple introductif ce stade.
Considrons un brasseur qui disposent des lments suivants dans son stock:
1. malt (75 kg) ;
2. houblon (60 kg) ;
3. levure (50 kg).
6 CHAPITRE 1. INTRODUCTION
Deux produits peuvent tre obtenus: de la bire lgre et de la bire noire. Pour un kg de bire lgre, il faut 2 kg
de malt, 3 kg de houblon, et 2 kg de levure. Pour un kg de bire noire, il faut 3 kg de malt, 1 kg de houblon, et 5/3
kg de levure. La bire noire est vendue la moiti du prix de la bire lgre. En supposant que toute la production
sera vendue, le brasseur souhaiterait dcider des quantits de bires noire et lgre produire pour optimiser son
prot. Le programme GAMS rsultant est
set b types of beer /light, dark/;
set i inputs /malt, hops, yeast/
parameter r(i) raw supplies /malt 75, hops 60, yeast 50/;
table a(i,b) input requirements
light dark
malt 2 3
hops 3 1
yeast 2 1.67
parameter p(b) selling price / light 2, dark 1/;
variables pi profit (maximand)
x(b) production level;
equations profit defines gross revenue
supply(i) input supply constraint;
profit.. pi =e= sum(b, p(b) * x(b));
supply(i).. sum(b, a(i,b)*x(b)) =L= r(i);
model beer /all/;
x.lo(b) = 0;
solve beer using lp maximizing pi;
1.5 Notes
Le contenu des Section 1.1 et 1.2 se base principalement sur Hillier et Lieberman [1], Chapitre 1. La Section 1.3
est construite partir du Chapitre 1 de Levy [3]. Lexemple GAMS est d Thomas F. Rutherford.
Chapitre 2
Programmation linaire
2.1 Introduction
Bien que la ralit soit souvent loin dtre linaire, un grand nombre de problmes peuvent scrire sous forme
linaire, soit directement, soit en premire simplication. Dautre part, un trs grand nombre de modles constituent
des extensions de programmes linaires. Sa comprhension est essentielle la comprhension de modles plus
sophistiqus.
Un programme linaire gnrique scrit sous la forme
max
x
c
1
x
1
+ . . . + c
n
x
n
a
11
x
1
+ . . . + a
1n
x
n
b
1
.
.
.
.
.
.
a
m1
x
1
+ . . . + a
mn
x
n
b
m
,
ou, sous une forme plus compacte,
max
x
n

j=1
c
j
x
j
n

j=1
a
ij
x
j
b
i
, i = 1, . . . , m.
La ligne
n

j=1
c
j
x
j
reprsente la fonction objectif, que nous souhaitons maximiser. La maximisation se fait en respectant les m
contraintes
n

j=1
a
ij
x
j
b
i
, i = 1, . . . , m.
Sous forme matricielle, le problme se recrit
max
x
c
T
x
Ax b,
7
8 CHAPITRE 2. PROGRAMMATION LINAIRE
avec
x =
_
_
_
x
1
.
.
.
x
n
_
_
_, c =
_
_
_
c
1
.
.
.
c
n
_
_
_, b =
_
_
_
b
1
.
.
.
b
n
_
_
_
A =
_
_
a
11
a
12
. . . a
1n
a
21
a
22
. . . a
2n
a
m1
a
m2
. . . a
mn
_
_
.
La terminologie linaire vient du fait que toutes les fonctions impliques sont linaires. Typiquement, nous
ajouterons galement des contraintes de non-ngativits:
x
i
0, i = 1, . . . , n,
ou, en abrg,
x 0.
Nous dirons aussi que le vecteur x appartient lorthant positif (i.e. x
n
+
).
Exemple 3 (Wyndor Glass). La compagnie Wyndor Glass Co. produit des produits verriers de haute qualit,
incluant des fentres et des portes vitres. Elle dispose cette n de trois usines (usine 1, usine 2, usine 3), qui ont
chacune une capacit de production limite. Les chssis en aluminium et les matriaux sont produits dans lusine 1,
les chssis en bois sont fabriqus dans lusine 2, et lusine 3 produit le verre et assemble les produits. La compagnie
a dcid de mettre en place de ligne de production:
produit 1: une porte vitre avec un chssis daluminium;
produit 2: une fentre double-vritage avec chssis en bois.
Un lot de 20 units donne lieu un prot de $3000 et $5000, respectivement pour le produit 1 et le produit 2.
Les donnes du problme sont synthtises dans la Table 2.1. Chaque lot dun produit est le rsultat combin de la
Produit 1 Produit 2 Capacit de
Temps de prod. (h) Temps de prod. (h) production (h)
Usine 1 1 0 4
Usine 2 0 2 12
Usine 3 3 2 18
Table 2.1 Donnes du problme Wyndor Glass
production dans les trois usines. Nous souhaitons dterminer le taux de production pour chaque produit (nombre de
lots par semaine) de faon maximiser le prot total.
Les variables de dcision sont
x
1
, le nombre de lots du produit 1 ;
x
2
, le nombre de lots du produit 2.
Le fonction objectif est le prot total, qui vaut 3x
1
+5x
2
, en lexprimant en miller de dollars. Nous voulons maximiser
ce prot.
Les contraintes concernent tout dabord les capacts de production:
x
1
4 (usine 1)
2x
2
12 (usine 2)
3x
1
+ 2x
2
18 (usine 3)
Viennent ensuite les contriantes de non-ngativit:
x
1
0, x
2
0. (nombre positif dunits produites)
2.2. MODLE GNRAL DE PROGRAMMATION LINAIRE 9
En rsum, nous avons le problme doptimisation suivant:
max
x
z = 3x
1
+ 5x
2
sous les contraintes
x
1
4 (usine 1)
2x
2
12 (usine 3)
3x
1
+ 2x
2
18 (usine 3)
x
1
0, x
2
0 (non-ngativit)
Avant de traiter de mthodes numriques, essayons de visualiser le problme an de dvelopper une intuition
quand sa rsolution. Le problme peut-tre reprsent comme sur la Figure 2.1. Pour le raliser, nous traons
dabord les droites correpondant aux contraintes, puis nous dterminons le domaine ralisable en vriant le sens
des ingalits pour chacune delle. Nous traons ensuite les droites correspondant la variation de lobjectif. Dans
lexemple
z = 3x
1
+ 5x
2
x
2
=
3
5
x
1
+
1
5
z.
Lordonne lorigine, dpendant de la valeur de z, est
1
5
z, et la pente vaut
3
5
. Maximiser revient augmenter z.
x
1
x
2
3x
1
+ 2x
2
18
2x
2
12
x
1
4
0 1 2 3 4 5 6 7 8 9
0
1
2
3
4
5
6
7
8
9
domaine
ralisable
Figure 2.1 exemple Wyndor Glass
La reprsentation graphique, bien quintressante pour voir comment se passe les choses, ne fonctionnent plus
ds que nous avons plus de deux variables. Il faut alors passer lutilisation de logiciels, utilisant lalgorithme du
simplexe ou de points intrieurs. Nous naborderons que le premier dans le cadre de ce cours introductif.
2.2 Modle gnral de programmation linaire
Le modle complet
max
x
c
T
x
Ax b,
x 0,
10 CHAPITRE 2. PROGRAMMATION LINAIRE
x
1
x
2
0 1 2 3 4 5 6 7 8 9
0
1
2
3
4
5
6
7
8
9
10 = 3x
1
+ 5x
2
20 = 3x
1
+ 5x
2
36 = 3x
1
+ 5x
2
(2, 6)
Figure 2.2 exemple Wyndor Glass: maximisation
est appel forme standard. Le modle complet
max
x
c
T
x
Ax b,
x 0,
est appel forme standard.
Dautres formes sont possibles et dnissent aussi des modles de programmation linaire:
minimiser au lieu de maximiser:
minf(x) = max f(x);
les ingalits peuvent tre remplaces par des galits, ou tre de sens contraire ;
certaines variables peuvent ne pas tre forcs tre suprieures 0. Par exemple, considrons la contrainte
x 4,
qui quivaut
x + 4 0.
Nous pouvons alors dnir y = x + 4, de sorte que la contrainte devient
y 0.
De mme, considrons
10 x 2.
En dnissons y = x + 10, nous avons la contrainte y 0.
2.3 Terminologie de base
Nous parlerons de solution ralisable propos dune solution (i.e. une instance particulire du vecteur x) pour
laquelle toutes les contraintes sont satisfaites. En dautres termes cette solution appartient au domaine ralisable.
2.4. HYPOTHSES 11
Par exemple, le point (1, 1) est une solution ralisable pour la Figure 2.1. A contrario, une solution non ralisable
est une solution pour laquelle au moins une contrainte est viole. Elle nappartient pas au domaine ralisable. Une
solution optimale est une solution donnant la meilleure valeur possible pour lobjectif. Cette valeur est dite valeur
optimale. Un modle na aucune solution optimale si son domaine ralisable est vide, ou si la fonction objectif est
non borne. Ajoutons par exemple la contrainte
3x
1
+ 5x
2
50
dans lexemple Wyndor Glass. Cette nouvelle contrainte ne peut tre satisfaite en mme temps que les contraintes
prcdentes, comme illustr dans la Figure 2.3. Plus aucun point nest ralisable. Si nous supprimons plutt les
contraintes
2x
2
12, 3x
1
+ 2x
2
18,
la fonction objectif devient non borne dans le domaine ralisable, comme illustr sur la Figure 2.4. Un modle peut
galement prsenter une innit de solutions optimales. Considrons dans lexemple la fonction objectif
z = 3x
1
+ 2x
2
.
Tout point sur le segment [(2, 6), (4, 3)] est alors solution optimale (voir Figure 2.5).
x
1
x
2
0 1 2 3 4 5 6 7 8 9
0
1
2
3
4
5
6
7
8
9
10
Figure 2.3 exemple Wyndor Glass: domaine non ralisable
2.4 Hypothses
La premire hypothse dun modle de programmation linaire est la proportionnalit:
la contribution de chaque variable la valeur de la fonction objectif est proportionnelle la valeur de cette
variable.
la contribution de chaque variable au terme de gauche de chaque contrainte fonctionnelle est proportionnelle
la valeur de cette variable.
Des cas o cette hypothse nest pas satisfaite sont
cot xe initial (Figure 2.6).
12 CHAPITRE 2. PROGRAMMATION LINAIRE
x
1
x
2
x
1
4
0 1 2 3 4 5 6 7 8 9
0
1
2
3
4
5
6
7
8
9
domaine
ralisable
Figure 2.4 exemple Wyndor Glass: objectif non born
x
1
x
2
3x
1
+ 2x
2
18
2x
2
12
x
1
4
0 1 2 3 4 5 6 7 8 9
0
1
2
3
4
5
6
7
8
9
domaine
ralisable
18 = 3x
1
+ 3x
2
s
o
l
u
t
i
o
n
s
o
p
t
i
m
a
l
e
s
Figure 2.5 exemple Wyndor Glass: innit de solutions
2.4. HYPOTHSES 13
x
1
x
2
p
r
o
p
o
r
t
i
o
n
n
e
l
n
o
n
p
r
o
p
o
r
t
i
o
n
n
e
l
cot xe initial
0 1 2 3 4
1
0
1
2
3
4
Figure 2.6 cot xe initial
x
1
x
2
c
o
n
s
t
a
n
t
n
o
n
c
o
n
s
t
a
n
t
0 1 2 3 4
0
1
2
3
4
5
6
7
Figure 2.7 prot marginal
14 CHAPITRE 2. PROGRAMMATION LINAIRE
prot marginal (prot par unit) croissant ou dcroissant (Figure 2.7).
Nous avons dautre part la proprit dadditivit: la fonction objectif est compose de la somme des contributions
individuelles de chaque variable, et le terme de gauche de chaque contrainte fonctionnelle est compos de la somme
des contributions individuelles de chaque variable. Ladditivit interdit les termes de la forme x
1
x
2
. Si une de ces
hypothses est invalide, nous sommes en prsence dun programme non linaire, tudi au Chapitre 3.
Dautre part, les variables sont continues. Si nous imposons des variables valeurs entires, nous obtenons
un modle de programmation en nombres entiers (Chapitre 4). De plus, les valeurs aectes chaque paramtre
sont des constantes connues avec certitude. Cette hypothse peut tre fort loigne de la ralit. Nous pouvons
tester cette hypothse en conduisant une analyse de sensibilit, qui consiste vrier la sensibilit du modle des
changements de valeurs des paramtres. Nous pouvons galement introduire des variables alatoires, ce qui conduit
typiquement un problme de programmation stochastique. La programmation stochastique dpasse cependant les
objectifs du prsent cours.
Exemple 4 (Horaire de personnel). Nous souhaitons tablir un horaire quotidien, sachant que chaque jour est
divis en priodes et en supposant que nous avons pu estimer un nombre minimum demploys devant tre aect
durant chaque priode. Chaque jour est divis en quarts de travail de 8 heures. Plusieurs quarts partagent une
mme priode, mais chaque quart exige un salaire particulier. Nous souhaitons savoir combien demploys doit-on
aecter chaque quart de travail de faon minimiser le total des salaires verss, en respectant le nombre minimum
demploys pour chaque priode. Les donnes du problme sont donnes dans la Table 2.2.
Priode Quart 1 Quart 2 Quart 3 Quart 4 Quart 5 Minimum employs
68 X 48
810 X X 79
1012 X X 65
1214 X X X 87
1416 X X 64
1618 X X 73
1820 X X 82
2022 X 43
2224 X X 52
06 X 15
Salaire 170 160 175 180 195
Table 2.2 donnes du problme dhoraire de personnel
Comme variables, nous pouvons choisir x
j
comme le nombre demploys aects au quart j. Lobjectif est
minz = 170x
1
+ 160x
2
+ 175x
3
+ 180x
4
+ 195x
5
.
Pour chaque priode, le nombre demploys aects aux dirents quarts doit couvrir le minimum demploys requis
pour cette priode. Par exemple, pour la priode de 14h 16h, nous aurons:
x
2
+x
3
64.
2.4. HYPOTHSES 15
Le programme linaire rsultant est
minz = 170x
1
+ 160x
2
+ 175x
3
+ 180x
4
+ 195x
5
,
s.c. x
1
48,
x
1
+x
2
79
x
1
+x
2
65
x
1
+x
2
+x
3
87
x
2
+x
3
64
x
3
+x
4
73
x
3
+x
4
82
x
4
43
x
4
+x
5
52
x
5
15
x
j
0, j = 1, 2, 3, 4, 5.
Nous pouvons remarquer la prsence de contraintes redondantes:
si nous avons x
1
+ x
2
79, alors x
1
+ x
2
65 ; cette dernire contrainte est donc redondante et peut tre
limine ;
de mme, x
3
+x
4
82 implique x
3
+x
4
73 ;
les contraintes x
1
0, x
4
0, x
5
0, sont aussi redondantes, mais il ny a aucun intrt les liminer.
La solution optimale du problme est
x

= (x

1
, x

2
, x

3
, x

4
, x

5
) = (48, 31, 39, 43, 15).
Une dicult est que le nombre demploys doit toujours tre entier, aussi lhypothse de continuit nest pas
satisfaite dans le modle (bien que la solution optimale dans ce cas particulier soit entire).
Exemple 5 (Rseau de distribution). Considrons deux usines (U1 et U2), un centre de distribution (CD), et
deux entrepts (E1, E2). Chaque usine manufacture un certain nombre dunits dun mme produit (ore). Chaque
entrept requiert un certain nombre dunits de ce mme produit (demande). Sur chaque lien (arc) du rseau, il y
a un cot de transport par unit de produit (cot unitaire). De plus, sur certains arcs, il y a une capactit sur le
nombre dunits transportes. Le rseau considr est reprsent dans la Figure 2.8. Lobjectif est de minimiser le
cot de transport total.
Comme dordinaire, pour formuler le modle, identions en premier lieu les variables dintrt. Nous dsignerons
par x
i,j
le nombre dunits du produit transportes sur larc (i, j) (i.e. entre les sommets i et j) La fonction objectif
(en chiifrant le montant total en centaines de dollars):
minz = 2x
U1,U2
+ 4x
U1,CD
+ 9x
U1,E1
+ 3x
U2,CD
+x
CD,E2
+ 3x
E1,E2
+ 2x
E2,E1
.
Les contraintes concernent tout dabord la conservation du ot: en chaque sommet du rseau, le ot sortant moins
le ot entrant est gal au nombre dunits produites dans le cas dusine, loppos du nombre dunits requises pour
un entrept, et zro pour le centre de distribution. Nous devons en outre tenir compte de la capacit sur certains
arcs. Par exemple, pour larc (U1, U2), nous avons
x
U1,U2
10.
Il nous reste prciser les traditionnelles contraintes de non-ngativit:
x
i,j
0.
16 CHAPITRE 2. PROGRAMMATION LINAIRE
50 units
produites
U
1
40 units
produites
U
2
30 units
requises
E
1
60 units
requises
E
2
CD
900$/unit
200$/unit 10
4
0
0
$
/
u
n
i
t

3
0
0
$
/
u
n
i
t

1
0
0
$
/
u
n
i
t

8
0
300$/unit 200$/unit
Figure 2.8 Rseau de distribution
Le modle dtaill peut ds lors scrire de manire dtaille comme suit:
minz = 2x
U1,U2
+ 4x
U1,CD
+ 9x
U1,E1
+ 3x
U2,CD
+x
CD,E2
+ 3x
E1,E2
+ 2x
E2,E1
.
s.c. x
U1,U2
+x
U1,CD
+x
U1,E1
= 50,
x
U1,U2
+x
U2,CD
= 40,
x
U1,CD
x
U2,CD
+x
CD,E2
= 30,
x
U1,E1
+x
E1,E2
x
E2,E1
= 30,
x
CD,E2
x
E1,E2
+x
E2,E1
= 60,
x
U1,U2
10,
x
CD,E2
80,
x
U1,U2
0, x
U1,CD
0, x
U1,E1
0, x
U2,CD
0, x
CD,E2
0, x
E1,E2
0, x
E2,E1
0.
Il sagit dun problme de ot cot minimum, que nous tudierons plus en dtail au Chapitre 5. La solution
optimale est
(x

U1,U2
, x

U1,CD
, x

U1,E1
, x

U2,CD
, x

CD,E2
, x

E1,E2
, x

E2,E1
) = (0, 40, 10, 40, 80, 0, 20).
Le nombre dunits transportes doit toujours tre une valeur entire, aussi lhypothse de continuit nest pas
satisfaite dans ce cas. Nanmoins, dans ce cas particulier, la solution entire. En fait, pour tout problme de ot
cot minimum (avec paramtres valeurs entires), il existe toujours une solution optimale entire.
2.5 La mthode du simplexe
Dvloppe en 1947 par George Dantzig, la mthode du simplexe reste dactualit pour rsoudre des problmes
de grande taille. Il sagit dune mthode algbrique base sur la rsolution de systmes dquations linaires ; nous
nous intressons ici uniquement aux systmes dquations linaires avec un nombre n de variables suprieur au
nombre m dquations:
Ax = b,
o x
n
, b
m
et A
mn
. Dans ce cas, il y a trois possibilits:
1. aucune solution ;
2. une et une seule solution ;
2.5. LA MTHODE DU SIMPLEXE 17
3. une innit de solutions.
Nous supposerons que toutes les variables sont positives. Le second cas, avec une et seule solution, ne peut survenir
que si n = m, et si la matrice A est inversible, ce qui revient exiger que nous avons limin au pralable
toute quation pour scrire comme combinaison linaire des autres quations. Si nous navons quune seule solution
admissible, elle est forcment optimale, par consquent, nous ignorerons ce cas dans le reste du chapitre, et prendrons
n strictement suprieur m.
Dans le cas o il y a une innit de solutions, la mthode dlimination de Gauss-Jordan permet didentier
trois types de variables:
variables xes ;
variables dpendantes ;
variables indpendantes.
Exemple 6 (Prliminaires lalgorithme du simplexe). Considrons le systme
x
1
+ x
2
+ x
3
+ x
4
= 4,
x
1
+ x
3
+ x
4
= 3,
x
1
+ x
2
+ 2x
4
= 2.
Nous pouvons le rcrire sous la forme
x
1
+ + 2x
4
= 1,
x
2
= 1,
x
3
x
4
= 2.
La variable x
2
est xe, comme elle ne peut prendre que la valeur 1, sans considration pour les autres variables.
A loppose, x
4
est indpendante, comme elle peut prendre nimporte quelle valeur dans . x
1
et x
3
sont quant
elles dpendantes: le choix de x
4
xe leur valeur, et de plus, il nest pas possible de les liminer en combinant des
quations entre elles (au contraire de x
4
).
2.5.1 Solution de base
Il sagit de la solution obtenue en xant toutes les variables indpendantes zro. Nous qualierons de variables
hors-base les variables indpendantes xes zro. Les autres variables seront dites variables de base. Une solution
de base est ralisable (ou admissible) lorsque toutes les variables de base ont une valeur positive. Une solution de
base ralisable est dgnre lorsquau moins une variable de base a la valeur 0. Il est possible de montrer quune
solution de base ralisable est un sommet du polydre.
Exemple 7 (Prliminaires lalgorithme du simplexe: solution de base). Dans lexemple, la solution de base est
x
1
= 1, x
2
= 1, x
3
= 2.
Elle est ralisable et non dgnre.
Pivot
Il est facile de changer le statut des variables par des opratins lmentaires.
Exemple 8 (Prliminaires lalgorithme du simplexe: pivot).
x
1
+ + 2x
4
= 1,
x
2
= 1,
x
3
x
4
= 2.
peut se rcrire comme
x
1
+ 2x
3
= 5,
x
2
= 1,
x
3
+ x
4
= 2.
Dans cette nouvelle solution de base, nous avons
18 CHAPITRE 2. PROGRAMMATION LINAIRE
variable hors-base: x
3
;
variables de base: x
1
, x
2
, x
4
;
solution de base non ralisable: x
1
= 5, x
2
= 1, x
4
= 2.
Le pivot est une opration consistant remplacer une variable de base par une variable hors base pour obtenir
une nouvelle solution de base, dite adjacente.
Exemple 9 (Wyndor Glass). Rappelons que pour cet exemple, les contraintes fonctionnelles sont
x
1
4
2x
2
12
3x
1
+ 2x
2
18
Au lieu dingalits, nous voudrions des galits. Pour ce faire, nous ajoutons des variables dcart (en anglais slack
variables) suprieures 0:
x
1
+x
3
= 4
2x
2
+x
4
= 12
3x
1
+2x
2
+x
5
= 18
Les variables hors-base sont x
1
et x
2
. Fixons-les 0. Nous obtenons comme solution de base
(x
1
, x
2
, x
3
, x
4
, x
5
) = (0, 0, 4, 12, 18).
Eectuons un pivot, en remplaant la variable hors-base par une des variables de base actuelles. Reste dterminer
comment la choisir. Nous souhaitons en premier lieu que la nouvelle solution de base soit ralisable. Dans cette
solution de base, on aura toujours x
1
= 0, et une des variables dcart deviendra une variable hors-base, donc
prendre la valeur 0. En exploitant le systme linaire prcdent et la positivit des variables, nous avons
x
1
= 4 x
3
0 4 x
3
x
4
= 12 2x
2
0 12 2x
2
0
x
5
= 18 3x
1
2x
2
0 18 2x
2
0
En exploitant les ingalits
x
4
= 12 2x
2
0
x
5
= 18 2x
2
0,
nous obtenons
x
2
12/2 = 6
x
2
18/2 = 9.
Par consquent, en posant x
2
= 6, nous obtenons x
4
= 0, alors que si nous augmentons davantage x
2
, la solution
devient non ralisable. Nous eectuons comme pivot le remplacement de la variable de base x
4
(qui deviendra hors-
base) par x
2
. Nous obtenons alors le systme suivant:
x
1
+x
3
= 4
x
2
+
1
2
x
4
= 6
3x
1
x
4
+x
5
= 6,
qui donne la solution de base:
(x
1
, x
2
, x
3
, x
4
, x
5
) = (0, 6, 4, 0, 6).
Nous eectuons ensuite un pivot pour que la variable x
1
entre dans la base (i.e. devienne une variable de base).
Comme x
4
= 0,
x
3
= 4 x
1
0
x
5
= 6 3x
1
0

x
1
4
x
1
2
2.5. LA MTHODE DU SIMPLEXE 19
En posant x
1
= 2, nous obtenons x
5
= 0. Le pivot revient remplacer la variable de base x
5
par x
1
. Le systme
obtenu est alors :
x
3
+
1
3
x
4

1
3
x
5
= 2
x
2
+
1
2
x
4
= 6
x
1

1
3
x
4
+
1
3
x
5
= 2
La solution de base correspondante est
(x
1
, x
2
, x
3
, x
4
, x
5
) = (2, 6, 2, 0, 0).
x
1
x
2
3x
1
+ 2x
2
= 18
2x
2
= 12
x
1
= 4
x
1
= 0
x
2
= 0
(0, 0)
(0, 6) (2, 6) (4, 6)
(4, 0) (6, 0)
domaine
ralisable
Figure 2.9 exemple Wyndor Glass
2.5.2 Interprtations
Interprtation gomtrique
Une solution de base ralisable correspond un point extrme du domaine ralisable. Un pivot correspond un
dplacement dun point extrme un autre qui lui est adjacente, i.e. toutes les variables hors-base sauf une sont les
mmes. La mthode du simplexe peut se rsumer comme suit.
1. Nous dbutons avec une solution de base ralisable initiale (un point extrme).
2. A chaque itration, nous eectuons un pivot, passant ainsi une solution de base ralisable adjacente (un
point extrme adjacent).
3. Lalgorithme sarrte lorsquil identie une solution de base ralisable optimale (un point extrme correspon-
dant une solution optimale).
Interprtation des variables dcart
Exemple 10. Dans la solution optimale du problme Wyndor Glass, nous avons x3 = 2, x4 = x5 = 0. Cela indique
que les deux dernires ressources (temps aux usines 2 et 3) sont pleinement utilises. Une partie de la premire
ressource (temps lusine 1) nest pas utilise: 2 heures
20 CHAPITRE 2. PROGRAMMATION LINAIRE
2.5.3 Critre doptimalit
Exemple 11 (Wyndor Glass: critre doptimalit). Exprimons lobjectif en fonction des variables hors-base dans
la solution optimale Rappelons que dans cette solution, nous avons
x
2
+
1
2
x
4
= 6
x
1

1
3
x
4
+
1
3
x
5
= 2
Aprs substitution dans lobjectif, nous obtenons
max z = 3x
1
+ 5x
2
= 3
_
2 +
1
3
x
4

1
3
x
5
_
+ 5
_
6
1
2
x
4
_
= 36
3
2
x
4
x
5
.
Toute solution ralisable (x
1
, x
2
, x
3
, x
4
, x
5
) satisfait
z = 36 + 0x
1
+ 0x
2
+ 0x
3

3
2
x
4
x
5
36.
Le critre doptimalit snonce ainsi comme suit: tant donn que lobjectif sexprime uniquement en fonction
des variables hors-base de la solution de base ralisable courante, si les coecients de ces variables dans lobjectif
sont tous ngatifs ou nuls, alors la solution de base ralisable courante est optimale. Les coecients des variables
hors-base dans lobjectif sont appels cots rduits (ou cots relatifs).
Si au moins un cot rduit est positif pour la solution de base courante, nous navons pas encore atteint une
solution optimale. Il faut par consquent eectuer au moins un pivot, mais quelle variable doit-on faire entrer dans
la base. Regardons celle dont le cot rduit est le plus grand parmis toutes les variables hors-base, vu que cette
variable fournit la plus grande augmentation marginale (par unit) de la valeur de lobjectif. Ce qui ne signie
toutefois pas la plus grande augmentation globale !
Vu que nous faisons entrer une variable dans la base, nous devons galement choisir la variable qui va sortir de
la base en tentant de garder toutes les variables non ngatives. Supposons que x
j
est la variable dentre. Chaque
variable de base x
i
sexprime alors en fonction de la variable dentre (puisque les autres variables hors-base sont
nulles):
x
i
= b
i
a
ij
x
j
.
Dans cette expression, les coecients b
i
et a
ij
sont obtenus suite plusieurs pivots. Mais nous avons ncessairement
b
i
positif (en partant dun b positif). Pour que toutes les variables demeurent non ngatives suite au pivot, nous
devons avoir
x
i
= b
i
a
ij
x
j
0,
soit, en dautres termes,
a
ij
x
j
b
i
.
Si a
ij
est ngatif, cette ingalit ne limite pas laugmentation de x
j
. Si cette condition est satisfaite pour tous les
i, nous pouvons donc augmenter indniment x
j
; lobjectif est non born. Si a
ij
est strictement positif, lingalit
limite laugmentation de x
j
. Nous prendrons comme variable de sortie celle qui atteint
min
_
b
i
a
ij

a
ij
> 0
_
.
Algorithm 2.1: Simplexe
1. Obtenir une solution de base ralisable.
2. Vrier le critre doptimalit: si les cots rduits de toutes les variables hors-base sont ngatifs ou nuls,
stop.
3. Choisir la variable x
j
, soit celle qui a le cot rduit le plus lev.
2.5. LA MTHODE DU SIMPLEXE 21
4. Dterminer la variable de sortie:
min
_
b
i
a
ij

a
ij
> 0
_
.
5. Eectuer un pivot et dterminer une nouvelle solution de base ralisable. Retour ltape 2.
Exemple 12 (Production). Une entreprise fabrique quatre produits. La fabrication de chaque produit ncessite une
certaine quantit de ressources. Les ressources consommes, les stocks des ressources et les bnces des produits
sont rcapituls dans la Table 2.3. Nous souhaitons tablir un plan de production de faon maximiser le chire
Produit 1 2 3 4 Stock
Ressource A 2 4 5 7 42
Ressource B 1 1 2 2 17
Ressource C 1 2 3 3 24
Prot 7 9 18 17 -
Table 2.3 Donnes de production
daaires.
Soient x
1
, x
2
, x
3
et x
4
les quantits respectives de produits 1, 2, 3, 4. Nous avons le problme de programmation
linaire sous forme standard
max z = 7x
1
+ 9x
2
+ 18x
3
+ 17x
4
s.c. 2x
1
+ 4x
2
+ 5x
3
+ 7x
4
42
x
1
+x
2
+ 2x
3
+ 2x
4
17
x
1
+ 2x
2
+ 3x
3
+ 3x
4
24
x
1
, x
2
, x
3
, x
4
0.
Introduisons trois variables dcart x
5
, x
6
, x
7
, qui mesurent pour chaque ressource lcart entre la quantit initiale-
ment disponible et la quantit consomme par le plan de fabrication donn par les variables de dcision x
1
, x
2
, x
3
,
x
4
:
max z = 7x
1
+ 9x
2
+ 18x
3
+ 17x
4
s.c. 2x
1
+ 4x
2
+ 5x
3
+ 7x
4
+x
5
= 42
x
1
+x
2
+ 2x
3
+ 2x
4
+x
6
= 17
x
1
+ 2x
2
+ 3x
3
+ 3x
4
+x
7
= 24
x
1
, x
2
, x
3
, x4 0.
Cette formulation permet dexprimer facilement les variables dcart comme fonctions anes des variables de dci-
sion:
x
5
= 42 2x
1
4x
2
5x
3
7x
4
x
6
= 17 x
1
x
2
2x
3
2x
4
x
7
= 24 x
1
2x
2
3x
3
3x
4
z = 7x
1
+ 9x
2
+ 18x
3
+ 17x
4
Le tableau ci-dessus est appel un dictionnaire. Les variables x
5
, x
6
, x
7
sont les variables de base et x
1
, x
2
, x
3
,
x
4
sont des variables hors-base. La solution de base associe au dictionnaire est obtenue en donnant la valeur 0
toutes les variables hors-base. La solution basique correspondant au dictionnaire ci-dessus est donc
(x
1
, x
2
, x
3
, x
4
, x
5
, x
6
, x
7
) = (0, 0, 0, 0, 42, 17, 24).
22 CHAPITRE 2. PROGRAMMATION LINAIRE
Le bnce correspondant est z = 0 ; on ne produit rien, on ne consomme aucune ressource et on ne gagne rien.
Nanmoins, cest une solution ralisable, car elle satisfait toutes les contraintes.
En partant de cette solution basique, nous cherchons amliorer le bnce. Nous slectionnons la variable
hors-base de cot rduit maximum, i.e. x
3
, et gardons les autres variables hors-base zro. Il est vident que si
on fait crotre x
3
partir de 0, les autres variables hors-base restant nulles, la valeur de la fonction z crot. Nous
cherchons augmenter au plus la fonction objectif tout en gardant la solution reste ralisable. Les contraintes sur
laugmentation de x
3
sont:
x
5
0 42 5x
3
0 x
3
8.4
x
6
0 17 3x
3
0 x
3
8.5
x
7
0 24 3x
3
0 x
3
8.
La plus restrictive de ces contraintes est x
3
8. Linterprtation gomtrique est la suivante: en partant du sommet
(0, 0, 0, 0) du polydre des contraintes, nous nous dplaons sur une arte de ce polydre. Le premier hyperplan
rencontr est x
7
= 0. Nous arrivons alors dans un nouveau sommet, lintersection des hyperplans x
1
= 0, x
2
= 0,
x
4
= 0, x
7
= 0.
Nous allons faire un changement de dictionnaire, i.e. un pivot, en changeant les rles de x
3
et x
7
. Nous utilisons
la troisime quation du premier dictionnaire pour exprimer x
3
en fonction de x
1
, x
2
, x
4
et x
7
:
x
3
= 8
1
3
x
1

2
3
x
2
x
4

1
3
x
7
.
Nous remplaons ensuite x
3
par cette expression dans les autres quations du dictionnaire:
x
5
= 2
1
3
x
1

2
3
x
2
+
5
3
x
7
2x
4
x
6
= 1
1
3
x
1
+
1
3
x
2
+
2
3
x
7
x
3
= 8
1
3
x
1

2
3
x
2

1
3
x
7
x
4
z = 144 +x
1
3x
2
6x
7
x4.
La variable x
7
est sortie de la base et la variable x
7
est entre dans la base. La nouvelle base est par consquent x
5
,
x
6
, x
3
. La solution basique associe au nouveau dictionnaire est x
1
= x
2
= x
7
= x
4
= 0, x
5
= 2, x
6
= 1, x
3
= 8.
Elle correspond au sommet de coordonnes (0, 0, 8, 0) du polydre de contraintes. Cette solution dnit un plan de
production beaucoup plus intressant: nous fabriquons 8 units du produit 3 (x
3
= 8) en consommant entirement
la ressource C (x
7
= 0). Il nous reste x
5
= 2 units de la ressource A et x
6
= 1 unit de B. Le bnce est z = 144.
Dans la nouvelle expression de la fonction z, nous voyons que seule la variable x
1
a un coecient positif. Nous
dcidons de faire entrer x
1
en base, et ainsi de parcourir une nouvelle arte du polydre des contraintes. Nous avons
les limites suivantes sur laugmentation de x
1
:
x
5
0 x
1
6x
6
0 x
1
3x
3
0 x
1
24
do x
1
3 Nous faisons sortir x
6
de la base faisons entrer x
1
sa place. Nous obtenons le dictionnaire suivant:
x
5
= 1 +x
6
x
2
+x
7
2x
4
x
1
= 3 3x
6
+x
2
+ 2x
7
x
3
= 7 +x
6
x2 x
7
x
4
z = 147 3x
6
2x
2
4x
7
x
4
.
La solution de base associe est x
6
= x
2
= x
7
= x
4
= 0, x
5
= 1, x
1
= 3, x
3
= 7, correspond au sommet (3, 0, 7, 0)
du polydre des contraintes. Elle dnit le plan de production suivant: nous fabriquons 3 units du produit 1 et 7
units du produit 3. Il ne nous reste quune unit de la ressource A. Le bnce est z = 147. De plus, tous les cots
rduits sont ngatifs, aussi la solution est optimale.
2.5. LA MTHODE DU SIMPLEXE 23
2.5.4 Adaptation dautres formes de modles
Tout modle de programmation linaire peut se ramener la forme suivante:
max
n

j=1
c
j
x
j
s.c.
n

j=1
a
ij
x
j
+x
n+i
= b
i
, i = 1, 2, . . . , m
x
j
0, j = 1, 2, . . . , n,
x
n+i
0, i = 1, 2, . . . , m.
Nous supposons de plus que b
i
est positif, i = 1, 2, . . . , m. Sous cette forme, il est facile dinitialiser la mthode
du simplexe en ajoutant des variables dcart, et en les prenant comme variables de base. Cela revient de plus
considrer lorigine comme solution initiale, et il est facile deectuer les oprations de pivot. Le situation se
complique avec dautres formes fonctionnelles pour les contraintes, en particulier dans la recherche dune solution
de base initiale.
Transformation du min au max
Supposons que nous devions minimiser lobjectif au lieu de le maximiser. Nous utilisons la proprit
min
n

j=1
c
j
x
j
= max
n

j=1
c
j
x
j
.
Nous rsolvons le problme de maximisation en changeant les signes des coecients dans lobjectif. La valeur
optimale du problme de minimisation est loppos de celle du problme de maximisation.
Transformation des ingalits en galits
Si

n
j=1
a
ij
x
j
b
i
, il y a deux cas:
1. b
i
0: nous ajoutons une variable dcart positive x
ni
:
n

j=1
a
ij
x
j
+x
n+i
= b
i
.
2. b
i
< 0: nous multiplions lingalit par -1, pour se ramener au cas dvelopp ci-dessous.
Si

n
j=1
a
ij
x
j
b
i
, nous avons nouveau deux cas possibles:
1. b
i
0: nous multiplions lingalit par -1, pour se ramener au cas dvelopp prcdemment.
2. b
i
> 0: nous soustrayons une variable de surplus positive x
0i
:
n

j=1
a
ij
x
j
x
0i
= b
i
.
Nous nous ramenons alors au cas dajout de variables articielles.
2.5.5 Obtention dune base admissible initiale
Ajout de variables articielles
Si

j=1,...,n
a
ij
x
j
= b
i
et quaucune variable nest isole (une variable est isole si elle coecient 1 dans cette
quation et coecient 0 dans les autres):
1. nous ajoutons une variable articielle x
n+1
0, dont lunique but est de fournir une variable de base initiale
pour cette contrainte ;
24 CHAPITRE 2. PROGRAMMATION LINAIRE
2. nous lui associons un prol trs ngatif: M
max

j=1,...,n
c
j
x
j
Mx
n+i
s.c. . . .

j=1,...,n
a
ij
x
j
+x
n+i
= b
i
. . .
Le seul but des variables articielles est de pouvoir initialiser lalgorithme du simplexe en produisant une solution
de base ralisable initiale. Si le problme est ralisable, nous devrions avoir x
n+i
= 0. Deux mthodes peuvent tre
considres.
1. La mthode du grand M consiste optimiser en utilisant une fonction objective forme de la fonction de cot
initiale et de la somme, trs fortement pnalise, des variables articielles.
2. La mthode deux phases se droule comme suit:
Phase 1 Trouver une solution ralisable en minimisant la somme des variables articielles.
Phase 2 Optimiser en revenant la fonction de cot initial partir de la solution initiale trouve dans la
phase 1.
Exemple 13. Considrons le programme
minz = 0.4x
1
+ 0.5x
2
s.c. 0.3x
1
+ 0.1x
2
2.7
0.5x
1
+ 0.5x
2
= 6
0.6x
1
+ 0.4x
2
6
x
1
0, x
2
0.
Nous devons tout dabord transformer le systme de contraintes an de pouvoir traiter un systme linaire:
0.3x
1
+ 0.1x
2
+x
s1
= 2.7
0.5x
1
+ 0.5x
2
= 6
0.6x
1
+ 0.4x
2
x
s2
= 6
x
s1
0, x
s2
0.
En ajoutant les variables articielles, nous obtenons
0.3x
1
+ 0.1x
2
+x
s1
= 2.7
0.5x
1
+ 0.5x
2
+x
a2
= 6
0.6x
1
+ 0.4x
2
x
s2
+x
a3
= 6
x
s1
0, x
s2
0, x
a2
0, x
a3
0.
An de dmarrer la mthode du simplexe, nous appliquons une des deux mthodes prcdentes. Mthode deux
phases:
Phase 1 minimiser x
a2
+ x
a3
jusqu obtenir une valeur optimale nulle (si le programme linaire une solution
ralisable).
Phase 2 minimiser 0.4x
1
+ 0.5x
2
.
Mthode du grand M:
min0.4x
1
+ 0.5x
2
+Mx
a2
+Mx
a3
2.6. DUALIT 25
2.5.6 Variables valeurs quelconques
Si une variable x
j
peut prendre des valeurs ngatives, nous introduisons deux variables x
+
j
0 et x

j
0. Nous
posons alors
x
j
= x
+
j
x

j
.
Une autre possible, si x
j
L
j
, o L
j
est une constante ngative, consiste poser
x
+
j
= x
j
L
j
0.
2.6 Dualit
2.6.1 Motivation
Exemple 14 (Wyndor Glass: dualit). Supposons quune compagnie partenaire de Wyndor Glass, appele Dual
Glass, aimerait louer du temps aux usines an de fabriquer des lots de produits. Quel prix horaire pour chaque
usine devrait-elle demander de telle sorte que le rsultat soit quitable, soit aucun prot ni perte pour aucun des
deux partenaires ?
Dnotons les nouvelles variables de dcision par y
i
, le prix de location horaire lusine i, et reprenons les
donnes du problmes telles quexprim prcdemment dans la Table 2.1.
Produit 1 Produit 2 Capacit de
Temps de prod. (h) Temps de prod. (h) production (h)
Usine 1 1 0 4
Usine 2 0 2 12
Usine 3 3 2 18
Dual Glass cherche a minimiser le prix total quelle devra payer pour le temps lou aux trois usines. Le prix total
pour chaque usine peut etre exprim comme
temps de production maximum (h) prix
pour louer du temps ($/h). Lobjectif est par consquent
minw = 4y
1
+ 12y
2
+ 18y
3
.
Les contraintes assurent que le prix total associ la fabrication dun lot de chaque produit ne doit pas tre infrieure
au prot ($/lot) quen retire Wyndor Glass. Le prix total associ un produit peut tre exprim comme le temps
consacr la production de chaque lot (h/lot) multipli par le prix pour louer du temps ($/h). La contrainte associe
au produit 1 peut sexprimer comme
y
1
+ 3y
3
3.
La contrainte associe au produit 2 est
2y
2
+ 2y
3
5.
Nous obtenons ainsi le modle pour Dual Glass, appel modle dual:
minw = 4y
1
+ 12y
2
+ 18y
3
s.c. y
1
+ 3y
3
3
2y
2
+ 2y
3
5
y
1
, y
2
, y
3
0.
Pour rappel, le modle pour Wyndor Glass, dit modle primal est
max z = 3x
1
+ 5x
2
s.c. x
1
4
2x
2
12
3x
1
+ 2x
2
18
26 CHAPITRE 2. PROGRAMMATION LINAIRE
Rappelons que pour la solution de base optimale du problme Wyndor Glass, lobjectif scrit:
z = 36
3
2
x
4
x
5
.
x
4
et x
5
sont les variables hors base et les coecients
3
2
et 1 sont leurs cots rduits. Si on augmente la valeur
de x
4
de une unit, le prot diminue de
3
2
. x
4
est galement la variable dcart associe la contrainte de ressource
pour lusine 2:
2x
2
+x
4
= 12.
Augmenter x
4
dune unit signie par consquent diminuer le terme de droite correspondant de 1. En eet, si
Wyndor Glass loue a Dual Glass une heure de temps de production lusine 2:
la capacit lusine 2 diminue de 1 heure (diminution dune unit du terme de droite) ;
la valeur de lobjectif diminue de
3
2
.
Pour retrouver un prot total gal, il faudra donc demander un prix de
3
2
(1500$) pour chaque heure de temps loue
lusine 2. De manire gnrale, la solution optimale du dual est donne par loppos des cots rduits des variables
dcart (aussi appels multiplicateurs optimaux, ou shadow prices en anglais). Dans notre exemple:
y
1
= 0, y
2
=
3
2
, y
3
= 1.
Le prix de la variable y
1
est x 0:
Wyndor Glass nexige rien pour une heure loue lusine 1, ce qui se justie par le fait quil lui reste du
temps de production non utilis (la variable dcart x
3
est strictement positive).
Un prix strictement positif ferait augmenter le prot, et la solution ne serait plus quitable.
Les prix des autres variables est strictement positif:
puisque le temps de production est utilis pleinement, louer une heure Dual Glass revient perdre une heure
de production, donc rduire le prot total ;
pour retrouver le mme prot, il faut exiger un prix gal au multiplicateur optimal, gal loppos du cot
rduit.
Nous pouvons constater des carts complmentaires: pour tout i, nous avons
x
n+i
.y
i
= 0.
Tout modle de programmation linaire possde un dual. A tout programme linaire sous forme standard
max z = c
T
x
s.c. Ax b,
x 0,
nous associons le programme dual
minw = b
T
y
s.c. A
T
y c,
y 0,
Nous obtenons ainsi un couple primal-dual, avec les relations suivantes entre les deux modles.
Primal Dual
Variable Contrainte
Contrainte Variable
max min
Prot unitaire Terme de droite
Terme de droite Cot unitaire
Ligne Colonne
Colonne Ligne
Contrainte Contrainte
2.6. DUALIT 27
Si un modele de programmation linaire possde une solution optimale, il en est de mme pour son dual, et les
valeurs optimales des deux modles sont gales.
La solution optimale du dual correspond aux multiplicateurs optimaux. Nous pouvons les lire directement dans
le tableau optimal du simplexe: ce sont les coecients dans la ligne correspondant lobjectif. Le cot rduit
(correspondant loppos du coecient dans la ligne de lobjectif) mesure la variation de lobjectif entran par
une augmentation dune unit de la valeur de la variable hors-base associe.
2.6.2 Analyse de sensibilit
En gnral, le cot rduit dune variable hors-base indique le changement dans lobjectif apport par une
augmentation dune unit de la valeur de cette variable. Pour les variables dcart, ce principe peut se formuler
ainsi: le cot rduit dune variable dcart hors-base indique le changement dans lobjectif apport par une diminution
dune unit du terme de droite associ. Ceci est un exemple danalyse de sensibilit: un paramtre (ici, un terme de
droite) est modi et nous mesurons la sensibilit de la solution optimale ce changement.
Nous pouvons aussi mesurer la sensibilit de la solution optimale un changement dun terme de droite ou dun
coecient dans lobjectif en resolvant nouveau le modle modi.
Exemple 15 (Wyndor Glass: sensibilit). Une analyse de sensibilit complte nous apprendrait ce qui suit.
Les multiplicateurs optimaux (Shadow Prices) sont 0, 1500 et 1000.
La capacit lusine 3 peut prendre nimporte quelle valeur entre 12h et 24h sans changer la solution optimale
du dual.
Le prot unitaire pour le produit 1 peut prendre nimporte quelle valeur entre 0 et 7500$ sans changer la
solution optimale du primal.
Exemple 16. Considrons un fermier cultivant trois types de plantes (mas, bl, coton), en utilisant des ressources
de terre et de main doeuvre. Les revenus nets venant de la culture du mas, du bl et du coton sont de $109/acre,
$90/acre et $115/acre, respectivement. Un acre de mas exige 6 heures de travail, un acre de bl, 4 heures, et un
acre de coton, 8 heures. Le fermier a disposition 100 acres de terre et 500 heures de travail ; il souhaite maximiser
le revenu net de ses plantations.
Nous obtenons le programme mathmatique linaire
max z = 109x
1
+ 90x
2
+ 115x
3
s.c. x
1
+x
2
+x
3
100,
6x
1
+ 4x
2
+ 8x
3
500,
x
1
, x
2
, x
3
0,
ce qui peut se traduire en GAMS comme suit:
SETS
Crop Crop production
/ Corn Corn production
Wheat Wheat production
Cotton Cotton production /
Resource Elment de ressources utilises dans le modle
/ Land Land used by crop
Labor Labord used by crop /;
VARIABLES
Profit Net income from crops;
POSITIVE VARIABLES
Production(Crop) Production by crop;
28 CHAPITRE 2. PROGRAMMATION LINAIRE
SCALAR LandAvailable Total Land / 100 /;
PARAMETER
Revenue(Crop) Revenues from crop production
/ Corn 109
Wheat 90
Cotton 115 /
ResourceAvailable(Resource) Resource availability
/ Land 100
Labor 500 /;
TABLE ResourceUse(Resource, Crop) Resource used in the model
Corn Wheat Cotton
Land 1 1 1
Labor 6 4 8 ;
EQUATIONS
Objective Maximimze farm income
ResourceEq(Resource) Resource Constraint;
Objective..
Profit =E= SUM(Crop, Revenue(Crop)*Production(Crop));
ResourceEq(Resource)..
SUM(Crop, ResourceUse(Resource,Crop)*Production(Crop))
=L= ResourceAvailable(Resource);
MODEL FarmIncome /ALL/;
SOLVE FarmIncome USING LP MAXIMIZING Profit;
Lexcution de GAMS sur ce chier donne
---- EQU ResourceEq Resource Constraint
LOWER LEVEL UPPER MARGINAL
Land -INF 100.000 100.000 52.000
Labor -INF 500.000 500.000 9.500
LOWER LEVEL UPPER MARGINAL
---- VAR Profit -INF 9950.000 +INF .
Profit Net income from crops
---- VAR Production Production by crop
LOWER LEVEL UPPER MARGINAL
Corn . 50.000 +INF .
Wheat . 50.000 +INF .
Cotton . . +INF -13.000
2.7. NOTES 29
La premire partie de cet extrait indique que les deux contraintes, sur la terre et la main doeuvre, sont actives:
toutes les resources sont employes. Les variables duales optimales correspondantes peuvent par consquent tre
non-nulles, et reprsentent la valeur marginale de ces contraintes (actives). Nous voyons en particulier ici que la
terre a la plus grande valeur marginale.
La seconde partie donnent les quantits de plantes cultives. Seuls le mas et le bl sont produits, mais pas le
coton. Le dual contient trois contraintes comme nous avons avons trois variables primales. Il est facile de vrier
que les deux premires contraintes sont actives, mais pas la troisime, mais dpasse la borne infrieure de 13 units.
Nous pouvons otenir les valeurs des variables dcart avec la ligne
OPTION SOLSLACK = 1;
avant la commande SOLVE, ce qui dans cas conrme que les contraintes sont actives.
LOWER SLACK UPPER MARGINAL
Land -INF . 100.000 52.000
Labor -INF . 500.000 9.500
Si nous ajoutons la commande
DISPLAY Profit.L, Production.L, ResourceEq.M, ResourceUse;
nous obtenons en sortie:
---- 53 VARIABLE Profit.L = 9950.000 Net income from crops
---- 53 VARIABLE Production.L Production by crop
Corn 50.000, Wheat 50.000
---- 53 EQUATION ResourceEq.M Resource Constraint
Land 52.000, Labor 9.500
---- 53 PARAMETER ResourceUse Resource used in the model
Corn Wheat Cotton
Land 1.000 1.000 1.000
Labor 6.000 4.000 8.000
La syntaxe .L conduit obtenir les valeurs optimales des variables primales (ou de la solution) quand appliqu
une variable, et la valeur du terme de gauche dune quation de contrainte, quand appliqu une contrainte. La
syntaxe .M permet dobtenir le multiplicateur optimal associe une quation, si appliqu une quation. Dans le
cas dune variable, il nous permet de connatre la valeur excdentaire pour la contrainte duale associe.
2.7 Notes
Ce chapitre se base essentiellement sur les notes de cours de Bernard Gendron, 2007. Lexemple 3 est tir de
Hillier et Lieberman [1], Section 3.1. Lexemple de production est d Stefan Balev.
30 CHAPITRE 2. PROGRAMMATION LINAIRE
Chapitre 3
Programmation non linaire
Nous pouvons gnraliser le programme linaire introduit au chapitre prcdent comme suit:
max
x
f(x
1
, . . . , x
n
)
s.c.g
1
(x
1
, . . . , x
n
) b
1
,
.
.
.
g
m
(x
1
, . . . , x
n
) b
m
.
Si f et g
i
, i = 1, . . . , m, sont linaires, nous retrouvons le programme linaire prcdemment introduit, mais il
nexiste pas de raison de se limiter de tels cas.
En gnral, nous supposerons aussi que toutes ces fonctions sont deux fois drivables.
3.1 Fonctions convexes et concaves
Soient a et b deux points dans
n
. Le segment de droite joignant ces deux points est lensemble des points
x
n
[ [0, 1] tel que x = a +(b a) = b + (1 )a.
Une fonction est convexe si tout point sur le segment de droite joignant f(a) et f(b) se trouve au-dessus du graphe
de f:
f(b + (1 )a) f(b) + (1 )f(a), (3.1.1)
pour toute paire de points (a, b). Si cette ingalit est stricte, la fonction f est dite strictement convexe. En
remplaant le sens de lingalit dans (3.1.1), la fonction f est dite concave:
f(b + (1 )a) f(b) + (1 )f(a),
pour toute paire (a, b). Si cette dernire ingalit est stricte, la fonction f est strictement concave. La Figure 3.1
illustre une fonction strictement convexe et une fonction strictement concave.
Tests de convexit et de concavit
Supposons que f est une fonction deux fois drivable dune seule variable. Alors,
1. f est convexe si et seulement si
x,
d
2
f(x)
dx
2
0;
2. f est strictement convexe si
x,
d
2
f(x)
dx
2
> 0;
31
32 CHAPITRE 3. PROGRAMMATION NON LINAIRE
x
f(x)
fonction convexe
x
f(x)
fonction concave
Figure 3.1 Fonctions convexe et concave
3. f est concave si et seulement si
x,
d
2
f(x)
dx
2
0;
4. f est strictement concave si
x,
d
2
f(x)
dx
2
< 0.
Supposons que f est une fonction deux drivable de deux variables. Dans ce cas, nous utilisons la Table 3.1
comme conditions ncessaires.
Convexe Strict. convexe Concave Strict. concave

2
f(x
1
,x
2
)
x
2
1
0 > 0 0 < 0

2
f(x
1
,x
2
)
x
2
2
0 > 0 0 < 0

2
f(x
1
,x
2
)
x
2
1
.

2
f(x
2
,x
2
)
x
2
2

2
f(x
1
,x
2
)
x
1
x
2
_
2
0 > 0 0 > 0
Table 3.1 Test de convexit et de concavit pour une fonction deux variables deux fois drivable
Ces tests se gnralisent des fonctions de plus de deux variables en utilisant le Hessien (la matrice des drives
secondes). Deux rsultats supplmentaires sont utiles pour tester la convexit:
une fonction qui sexprime comme la somme de fonctions convexes (concaves) est convexe (concave) ;
loppos dune fonction concave est convexe et vice-versa.
3.1.1 Ensembles convexes
Un ensemble est convexe si, pour toute paire de points de lensemble, le segment de droite joignant ces points
est contenu dans lensemble. Il est possible de dmontrer quun ensemble est convexe grce aux proprits suivantes:
si f est convexe, alors x[ f(x) b est convexe ;
si f est concave, alors x[ f(x) b est convexe ;
lintersection densembles convexes est convexe.
Exemple 17 (Wyndor Glass). Modions lexemple Wyndor Glass en remplaant certaines contraintes par une
3.1. FONCTIONS CONVEXES ET CONCAVES 33
contrainte non linaire.
max z = 3x
1
+ 5x
2
s.c. x
1
4
9x
2
1
+ 5x
2
2
216
x
1
0, x
2
0.
Le problme ainsi modi peut se reprsenter comme sur la Figure 3.2. Remarquons que lobjectif est concave (car
x
1
x
2
z = 36 = 3x
1
+ 5x
2
0 1 2 3 4 5 6
0
1
2
3
4
5
6
7
8
domaine
ralisable
(2, 6)
Figure 3.2 exemple Wyndor Glass
linaire) et que le domaine ralisable est convexe: cest un modle de programmation convexe. Dans le cas prsent,
la solution optimale est sur la frontire du domaine ralisable, mais ne correspond pas un coin (lintersection de
deux contraintes).
Modions encore lexemple Wyndor Glass, mais cette fois en remplaant lobjectif lineaire par une fonction non
lineaire, comme illustr sur la Figure 3.3:
max z = 126x
1
9x
2
1
+ 182x
2
13x
2
2
x
1
4
2x
2
12
3x
1
+ 2x
2
18
Nous pouvons nouveau remarquer que lobjectif est concave et que le domaine ralisable est convexe: cest aussi
un modle de programmation convexe. Ici, la solution optimale (8/3, 5) est sur la frontire du domaine ralisable,
mais ne correspond pas un point extrme du domaine ralisable.
Considrons le mme exemple, mais avec une fonction objectif dirente, tel que reprsent sur la Figure 3.4:
max z = 54x
1
9x
2
1
+ 78x
2
13x
2
2
x
1
4
2x
2
12
3x
1
+ 2x
2
18
Il sagit nouveau dun modle de programmation convexe, avec comme solution optimale (3, 3), laquelle se trouve
34 CHAPITRE 3. PROGRAMMATION NON LINAIRE
x
1
x
2
0 1 2 3 4 5 6 7 8 9
0
1
2
3
4
5
6
7
8
9
domaine
ralisable
z = 907
z = 857
z = 807
(8/3, 5)
Figure 3.3 exemple Wyndor Glass - cas 2
x
1
x
2
0 1 2 3 4 5 6 7
0
1
2
3
4
5
6
7
z = 189
z = 162
z = 117
z = 198
(3, 3)
Figure 3.4 exemple Wyndor Glass - cas 3
3.2. ALGORITHMES 35
lintrieur du domaine ralisable. La fonction objectif est la somme de deux fonctions dune seule variable. Si nous
annulons les drives de chacune de ces fonctions, nous obtenons la solution unique (3, 3), qui se trouve lintrieur
du domaine ; cest donc ncessairement la solution optimale.
Revenons sur la fonction objectif initiale, mais introduisons une contrainte non-linaire, qui dnit un domaine
ralisable non-convexe, comme illustr sur la Figure 3.5:
max z = 3x
1
+ 5x
2
s.c. x
1
4
x
2
7
8x
1
x
2
1
+ 14x
2
x
2
2
49
x
1
0, x
2
0.
Le problme ainsi modi peut se reprsenter comme sur la Figure 3.5. Dans ce modle de programmation non
x
1
x
2
0 1 2 3 4 5 6
0
1
2
3
4
5
6
7
8
domaine
ralisable
z = 35 = 3x
1
+ 5x
2
z = 27 = 3x
1
+ 5x
2
(0.7) = maximum global
(4.3) = maximum local
Figure 3.5 exemple Wyndor Glass - cas 4
convexe, nous remarquons la prsence de deux maxima locaux:
x est un maximum local si f(x) f(a) pour tout a ralisable susamment prs de a ;
(4, 3) et (0, 7) sont des maxima locaux, mais x

= (0, 7) est la maximum global: f(x) f(a) pour tout a


ralisable.
Les mthodes classiques de programmation non-linaire permettent didentier un maximum local, mais pas nces-
sairement le maximum global, alors quen programmation convexe, tout maximum local est global.
3.2 Algorithmes
3.2.1 Lalgorithme du simplexe dans le cas non-linaire
Le succs de lalgorithme du simplexe en programmation linaire a naturellement motiv le dveloppement de
techniques similaires pour loptimisation non-linaire. Une telle approche fut propose en par Nelder et Mead [5].
Nanmoins, la notion de point extrme est beaucoup plus dlicate exploiter en non-linaire, en particulier en
labsence de contraintes. Il convient de construire un polyhdre articielle, ce qui nest pas immdiat, et en pratique,
la mthode soure de labsence de garantie de convergence, except pour des fonctions convexes une variable [2].
Nous pouvons mme observer une convergence vers un point non-stationnaire [4]. Un algorithme doptimisation
36 CHAPITRE 3. PROGRAMMATION NON LINAIRE
sans garantie de convergence est appel heuristique.s Cette mthode est pourtant encore frquemment employe,
en particulier par les ingnieurs. La fonction fminsearch de Matlab
1
implmente ainsi cet algorithme. Malgr ce
succs, aucun algorithme doptimsation non-linaire moderne ne se fonde sur le simplexe, et il convient ds lors
dviter autant que possible de maintenir un tel usage. De meilleurs rsultats seront obtenus en employant des outils
plus appropris.
3.2.2 Optimisation sans contrainte
Considrons tout dabord le cas dun modle de programmation non-linaire dans lequel il ny a aucune
contrainte:
max f(x
1
, x
2
, . . . , x
n
).
Il est alors possible de montrer que si x

= (x

1
, x

2
, . . . , x

n
) est un maximum local, alors
f(x

)
x
j
, j = 1, 2, . . . , n.
En dautres mots, lorsque la drive sannule en un point donn, ce point peut tre un maximum local, mais linverse
nest pas ncessairement vri: ce point peut aussi tre un minimum local ou un point de selle. Par contre, si f
est concave, un point o la drive sannule est ncessairement un maximum global. De plus, si f est strictement
concave, un tel maximum global est unique.
Dans le cas dune fonction non concave, an de trouver un maximum global, il faut
identier tous les maxima locaux ;
identier celui de plus grande valeur ;
vrier que la fonction est borne suprieurement (sinon, il ny a pas de maximum global).
Le problme est quidentier tous les maxima locaux peut tre extrmement dicile.
3.2.3 Mthode de la bissection
Considrons en premier lieu le cas le plus simple: la fonction objectif f est concave et comporte une seule variable.
Il est alors possible de montrer que, si x

est une solution optimale et il existe x


i
et x
u
tels que x
i
x

x
u
et
f(x
i
) ,= f(x), f(x
u
) ,= f(x), alors il existe a et b tels que a x

b et
df(x)
dx
> 0, si x < a,
df(x)
dx
= 0, si x = x

,
df(x)
dx
< 0, si x > b.
Si f est strictement concave en x

, alors a = x

= b, comme illustr sur la Figure 3.6.


Algorithm 3.1: Mthode de la bissection
1. Nous xons dabord une borne infrieur x
i
pour laquelle la drive en ce point est strictement positive.
2. Nous dterminons galement une borne suprieure x
u
pour laquelle la drive en ce point est strictement
ngative.
3. Si les deux bornes ne sont pas susamment prs lune de lautre, i.e. la distance x
u
x
i
est trop grande,
nous prenons le point milieu entre les deux bornes comme point candidat x
c
:
x
c
=
x
i
+x
u
2
,
1. Nous nous rfrons ici la version 7.9, Release 2009b, mise en circulation le 4 septembre 2009.
3.2. ALGORITHMES 37
x
f(x)
df(x)
dx
= 0
x

Figure 3.6 Maximum dune fonction strictement concave


et nous passons ltape suivante. Sinon, cest--dire si
x
u
x
i
2,
avec > 0 susamment petit, nous nous arrtons: x
c
est une approximation susamment prcise de la
solution optimale.
4. Si la drive en x
c
est nulle, arrt: x
c
est la solution optimale.
5. Si la drive en x
c
est positive, nous posons x
i
= x
c
.
6. Si la drive en x
c
est ngative, nous posons x
u
= x
c
.
7. Retour ltape 3.
3.2.4 Mthode du gradient
Considrons une fonction concave f de plusieurs variables. La mthode de la bissection ne peut plus sappliquer,
aussi nous devons nous tourner vers une meilleure alternative. La gradient de f au point x

est dni comme

x
f(x

) =
_
_
_
_
_
_
f(x)
x1
f(x

)
x2
.
.
.
f(x

)
xn
_
_
_
_
_
_

.
Il est possible de montrer que le gradient correspond a une direction daugmentation de la valeur de f. Ainsi, dans
la mthode du gradient, nous nous dplaons dans la direction du gradient en tentant daugmenter au maximum
la valeur de lobjectif. A partir dun point initial x

, nous eectuons un deplacement dans la direction du gradient


vers un nouveau point x:
x = x

+s,
o s = t

x
f(x). Dans cette formule, t

est la solution du problme de maximisation suivant:


max
t0
f(x

+t
x
f(x

)).
Cest un problme de maximisation dune fonction concave dune seule variable: nous pouvons par consquent le
rsoudre, par exemple en employant la mthode de la bissection
38 CHAPITRE 3. PROGRAMMATION NON LINAIRE
Nous posons ensuite x

= x, et nous itrons ainsi jusqu ce que le gradient sannule (ou presque). Nous avons
par consquent lalgorithme suivant.
Algorithm 3.2: Mthode du gradient
1. Dterminer une solution initiale x
0
. Posons k = 0. Nous xons galement une constante > 0 susamment
petite.
2. Rsoudre le problme suivant:
max
t0
f(x
k
+t
x
f(x
k
)). (3.2.1)
3. Soit t

la solution optimale de (3.2.1). Posons


x
k+1
= x
k
+t

x
f(x
k
),
et incrmentons k.
4. Si

f(x
k
)
x
j

, j = 1, 2, . . . , n,
arrt. Sinon, nous retournons en 2.
3.2.5 Optimisation sous contraintes
Dans le cas dun modle de programmation non-lineire sans contrainte, nous avons vu la condition doptimalit
suivante: si x

= (x

1
, x

2
, . . . , x

n
) est un maximum local, alors
f(x

)
x
j
= 0, j = 1, . . . , n.
Cette condition nest plus valable lorsquil y a des contraintes, car une solution optimale peut se trouver sur la
frontire du domaine ralisable
Exemple 18. Nous souhaitons rsoudre le programme
max
x
f(x) = 6 x x
2
s.c. x 0.
Il est facile de se convaincre (voir Figure 3.7) que la solution optimale est x

= 0, pourtant
df(0)
dx
= 1 < 0.
3.2.6 Conditions doptimalit
Avec une contrainte de la forme x 0, les conditions doptimalit snoncent ainsi: si x

= (x

1
, x

2
, . . . , x

n
) est
un maximum local, alors
_
f(x

)
xj
= 0, si x

j
> 0,
f(x

)
xj
0, si x

j
= 0.
Il est plus dlicat de driver les conditions dans le cas gnral, o nous avons galement des contraintes sont de la
forme:
g
i
(x
1
, x
2
, . . . , x
n
) b
i
, i = 1, 2, . . . , m.
Elles sexpriment en fonction des multiplicateurs de Lagrange u
i
associs chaque contrainte.
3.2. ALGORITHMES 39
x
f(x)
0 1 2 3 4
0
1
2
3
4
5
6
7
df(x)
dx
< 0
Figure 3.7 Maximum dune fonction concave sous contrainte de positivit
Conditions KKT (Karush-Kuhn-Tucker)
Si x

= (x

1
, x

2
, . . . , x

n
) est un maximum local, alors il existe m nombres u
1
, u
2
, . . . , u
m
tels que
f(x

)
x
j

i=1
u
i
g
i
(x

)
x
j
0
x

j
_
f(x

)
x
j

i=1
u
i
g
i
(x

)
x
j
_
= 0
g
i
(x

) b
i
0, i = 1, 2, . . . , m,
u
i
(g
i
(x

) b
i
) = 0, i = 1, 2, . . . , m,
u
i
0, i = 1, 2, . . . , m,
Les conditions KKT peuvent galement sexprimer en omettant les contraintes de non-ngativit, lesquelles
peuvent tre recrites sous la forme
x
i
0,
ou tre tout simplement absentes. La forme qui suit est par consquent plus gnrale, et plus communment admise
en programmation non-linaire (voir par exemple Nocedal et Wright [6]). Si x

= (x

1
, x

2
, . . . , x

n
) est un maximum
local, alors il existe m nombres u
1
, u
2
, . . . , u
m
tels que
f(x

)
x
j

i=1
u
i
g
i
(x

)
x
j
= 0
g
i
(x

) b
i
0, i = 1, 2, . . . , m,
u
i
(g
i
(x

) b
i
) = 0, i = 1, 2, . . . , m,
u
i
0, i = 1, 2, . . . , m,
Exemple 19 (Conditions KKT). Considrons le problme
max f(x
1
, x
2
) = ln(x
1
+ 1) +x
2
s.c. 2x
1
+x
2
3,
x
1
0, x
2
0.
40 CHAPITRE 3. PROGRAMMATION NON LINAIRE
Nous pouvons donc considrer quil ny a quune seule contrainte avec
g
1
(x
1
, x
2
) = 2x
1
+x
2
,
et b
1
= 3. Nous associons cette contrainte un multiplicateur u
1
0. Outre les contraintes de non-negativit, nous
avons alors les conditions suivantes:
1
x

1
+ 1
2u
1
0,
1 u
1
0,
x

1
_
1
x

1
+ 1
2u
1
_
= 0,
x

2
(1 u
1
) = 0,
2x

1
+x

2
3 0,
u
1
(2x

1
+x

2
3) = 0.
Nous obtenons u
1
1. Puisque x

1
0, nous en dduisons
1
x

1
+ 1
2u
1
< 0.
Par consquent, x

1
= 0. Puisque u
1
,= 0, nous avons
2x

1
+x

2
3 = 0,
et par consquent x

2
= 3. Ds lors, u
1
= 1. Les conditions KKT sont donc satisfaites en un seul point: (0, 3). Il
sagit bien dun maximum global, car la fonction objectif est concave et le domaine ralisable est convexe (modle
de programmation convexe).
En utilisant la version plus gnrale des conditions KKT, nous avons les conditions
1
x

1
+ 1
2u
1
+u
2
0,
1 u
1
+u
3
0,
2x

1
+x

2
3 0,
u
1
(2x

1
+x

2
3) = 0,
x
1
0,
x
2
0,
u
2
x
1
= 0,
u
3
x
2
= 0.
Il est facile de vrier que la solution de ce systme est
x
1
= 0, x
2
= 3, u
1
= 1, u
2
= 1, u
3
= 0.
3.3 Notes
Ce chapitre se base en grande partie sur les notes de cours de Bernard Gendron, 2007.
Chapitre 4
Programmation mixte entire
4.1 Prsentation gnrale
Certaines quantits ne peuvent scrire sous forme de nombres rels, issus dun domaine continu. Au contraire,
certaines dcisions sont par nature discrtes, et doivent se reprsenter laide de nombres entiers. Considrons par
exemple une entreprise de transport, qui dcide de renouvellement sa otte de camions. Le nombre de camions
acheter est un nombre naturel.
La prsence de telles variables entires modie profondment la nature des programmes sous-jacents. Lorsquun
problme est linaire avec des variables entires, nous parlerons de programmation mixte entire. Si toutes les
variables sont entires, nous utiliserons la terminologie de de programmation (pure) en nombres entiers. Un exemple
de programme en nombres entiers a dj t rencontr dans la Sectionn 1. Si les variables entires sont valeurs 0
ou 1 (binaires), nous parlerons de programmatin 01 (binaire).
Nous pourrions bien entendu considrer le cas non-linaire, mais les complications sont telles qu ce jour,
aucune mthode pleinement satisfaisante nexiste, mme si dintenses recherches sont actuellement conduites ce
niveau, notamment au sein de lentreprise IBM.
Exemple 20 (Problme du sac dos). Considrons un cambrioleur muni dun sac (unique) pour transporter son
butin. Son problme consiste maximiser la valeur totale des objets quil emporte, sans toutefois dpasser une
limite de poids b correspondant ses capacits physiques. Supposons quil y a n type dobjets que le voleur pourrait
emporter, et que ceux-ci sont en nombre tel que quelle que soit la nature de lobjet considr, la seule limite au
nombre dunits que le cambrioleur peut prendre est que le poids total reste infrieur b. Si lon associe lobjet j
une valeur c
j
et un poids w
j
, la combinaison optimale dobjets emporter sera obtenue en rsolvant le programme
mathmatique
max
x
n

j=1
c
j
x
j
s.c.
n

j=1
w
j
x
j
b
x
j
^, j = 1, . . . , n.
Ici, x
j
^ signie que x
j
est un naturel, autrement dit un entier non ngatif. Intuitivement, nous pourrions penser
que la solution consiste choisir en premier lieu les objets dont le rapport qualit-poids est le plus avantageux,
quitte tronquer pour obtenir une solution entire (nous ne pouvons pas diviser un objet). Cette solution peut
malheureusement se rvler sous-optimale, voire mauvaise, comme on le constate sur lexemple suivant.
max
x
2x
1
+ 3x
2
+ 7x
3
s.c. 3x
1
+ 4x
2
+ 8x
3
14,
x
1
, x
2
, x
3
^.
41
42 CHAPITRE 4. PROGRAMMATION MIXTE ENTIRE
Si nous oublions la contrainte dintgralit, la solution, de valeur 12.25, est x = (0, 0, 14/8). En tronquant, on obtient
la solution entire x = (0, 0, 1) de valeur 7. Il est facile de trouver de meilleures solutions, par exemple x = (1, 0, 1).
La solution optimale du problme du cambrioleur peut sobtenir en numrant toutes les solutions admissibles
et en conservant la meilleure (voir Table 4.1, , o les solutions inecaces laissant la possibilit dajouter un objet
nont pas t considres).
x
1
x
2
x
3
objectif
0 1 1 10
2 0 1 11
0 3 0 9
2 2 0 10
3 1 0 9
4 0 0 8
Table 4.1 Problme du sac dos: numration des solutions
La solution optimale entire, x = (2, 0, 1), dire passablement de la solution optimale linaire. Cependant, il
est clair que cette technique dnumration ne peut sappliquer des problmes de grande taille.
Exemple 21 (California Mfg). Une entreprise doir choisir de nouveaux emplacements pour construire des usines et
des entrepts. Elle a le choix entre deux emplacements: Los Angeles (LA) et San Fransisco (SF). Nous ne pouvons
construire un entrept que dans une ville o nous disposons dune usine, et nous ne pouvons pas construire plus
dun entrept. Nous associons chaque construction (dune usine ou dun entrept dans chacun des lieux envisags)
sa valeur estime et son cot de construction. Lobjectif est de maximiser la valeur totale estime, en ne dpassant
pas une limite maximum sur les cots. Les donnes du problme sont rsumes dans la Table 4.2. Les variables sont
x
j
=
_
1 si la dcision j est approuve ;
0 si la dcision j nest pas approuve.
Lobjectif est de maximiser la valeur estime totale:
max z = 9x
1
+ 5x
2
+ 6x
3
+ 4x
4
.
Les contraintes fonctionnelles sont
1. la limite maximum sur les cots de construction:
6x
1
+ 3x
2
+ 5x
3
+ 2x
4
10;
2. nous ne pouvons construire plus dun entrept:
x
3
+x
4
1;
Valeur estime (millions $) Cot de construction (millions $)
Usine LA 9 6
Usine SF 5 3
Entrept LA 6 5
Entrept SF 4 2
Limite maximum - 10
Table 4.2 Donnes du problme California Mfg
4.1. PRSENTATION GNRALE 43
3. lentrept ne sera LA que si lusine est LA:
x
3
x
1
;
4. lentrept ne sera SF que si lusine est SF:
x
4
x
2
:
5. contraintes 01 (intgralit):
x
j
0, 1, j = 1, 2, 3, 4;
ou encore
0 x
j
1 et x
j
entier, j = 1, 2, 3, 4.
Par consquent, nous avons le programme mathmatique
max z = 9x
1
+ 5x
2
+ 6x
3
+ 4x
4
s.c. 6x
1
+ 3x
2
+ 5x
3
+ 2x
4
10;
x
3
+x
4
1;
x
1
+x
3
0;
x
2
+x
4
0;
x
1
, x
2
, x
3
, x
4
1;
x
1
, x
2
, x
3
, x
4
0;
x
1
, x
2
, x
3
, x
4
entiers.
Le modle illustre deux cas classiques dillustrations de variables binaires:
alternatives mutuellement exclusives: nous ne pouvons construire plus dun entrept, i.e.
x
3
+x
4
1;
dcisions contingentes: nous ne pouvons construire un entrept que l o nous avons construit une usine:
x
3
x
1
; x
4
x
2
:
Exemple 22 (Localisation). Une entreprise envisage plusieurs sites de construction pour des usines qui serviront
approvisionner ses clients. chaque site potentiel i correspond un cot de construction a
i
, une capacit de production
u
i
, un cot de production unitaire b
i
et des cots de transport c
ij
des usines vers les clients. Soit y
i
une variable
binaire prenant la valeur 1 si un entrept est construit sur le site i, d
j
la demande de lusine j et x
ij
la quantit
produite lusine i et destine au march j (ot de i j). Un plan de construction optimal est obtenu en rsolvant
le programme
min
x

i
a
i
y
i
+

i
b
i

j
x
ij
+

j
c
ij
x
ij
s.c.

i
x
ij
= d
j
,

j
x
ij
u
i
y
i
,
x
ij
0,
y
i
0, 1.
Cette formulation contient deux lments intressants: un cot xe (construction) modlis par une variable binaire
y
i
ainsi quune contrainte logique forant les ots provenant dun site tre nuls si aucune usine nest construite
en ce site. Notons aussi que certaines variables sont entires alors que dautres (ots) sont relles.
Exemple 23 (Contraintes logiques). Des variables binaires peuvent servir reprsenter des contraintes logiques. En
voici quelques exemples, o p
i
reprsente une proposition logique et x
i
la variable logique (binaire) correspondante.
44 CHAPITRE 4. PROGRAMMATION MIXTE ENTIRE
contrainte logique
p
1
p
2
= vrai
p
1
p
2
p
n
= vrai
p
1
p
2
. . . p
n
= vrai
p
1
p
2
p
1
p
2
forme algbrique
x1 +x2 = 1
x
1
+x
2
+. . . +x
n
1
x
1
+x
2
+. . . +x
n
n (ou = n)
x
2
x
1
x
2
= x
1
Exemple 24 (Fonctions linaires par morceaux). Considrons une fonction objectif maximiser, pour laquelle
dans chaque intervalle [a
i1
, a
i
] la fonction est linaire, ce que nous pouvons exprimer par:
x =
i1
a
i1
+
i
a
i

i1
+
i
= 1,

i1
,
i
0,
f(x) =
i1
f(a
i1
) +
i
f(a
i
).
Nous pouvons gnraliser cette formule sur tout lintervalle de dnition de la fonction f en contraignant les variables

i
ne prendre que deux valeurs non nulles, et ce pour deux indices conscutifs. Ceci se fait en introduisant des
variables binaires y
i
associes aux intervalles de linarit [a
i1
, a
i
]:
x =
n

i=0

i
a
i
,
f(x) =
n

i=0

i
f(a
i
),
n

i=0

i
= 1,

i
0, i = 0, . . . , n

0
y
1
,

1
y1 +y2,
.
.
.
.
.
.
.
.
.

n1
y
n1
+y
n
,

n
y
n
,
n

i=1
y
i
= 1(un seul intervalle actif )
y
i
0, 1, i = 1, . . . , n.
Si la fonction f est concave, les variables binaires y
i
et les contraintes associes peuvent tre limines de la
formulation. Cette approche est particulirement intressante lorsquon optimise des fonctions de plusieurs variables
de la forme

i
f
i
(x
i
).
4.2 Contraintes mutuellement exclusives
4.2.1 Deux contraintes
Prenons lexemple de deux contraintes. Lune ou lautre des deux contraintes doit tre satisfaite, mais pas les
deux simultanment. Par exemple,
soit 3x
1
+ 2x
2
18 ;
soit x
1
+ 4x
2
16.
Soit M un trs grand nombre ; le systme prcdent est quivalent
4.2. CONTRAINTES MUTUELLEMENT EXCLUSIVES 45
soit
3x
1
+ 2x
2
18,
x
1
+ 4x
2
16 +M;
soit
3x
1
+ 2x
2
18 +M,
x
1
+ 4x
2
16.
En introduisant une variable binaire y, nous obtenons le systme quivalent
3x
1
+ 2x
2
18 +M(1 y),
x
1
+ 4x
2
16 +My.
La signication de cette variable est
y = 1, si la premire contrainte est satisfaite ;
y = 0, si la seconde contrainte est satisfaite.
Nous avons de la sorte construit deux alternatives mutuellement exclusives.
Nous aurions pu aussi introduire deux variables binaires:
y
1
= 1, si la premire contrainte est satisfaite ;
y
2
= 1, si la seconde contrainte est satisfaite.
Nous devons avoir
y
1
+y
2
= 1.
An de se ramener au modle prcdent, il sut de poser
y
1
= y;
y
2
= 1 y.
Il sagit dun cas particulier de la situation suivante: K parmi N contraintes doivent tre satisfaites. Dans ce cas
plus gnral, nous introduisons N variables binaires.
4.2.2 K contraintes parmi N
Soit les N contraintes
f
j
(x
1
, x
2
, . . . , x
n
) d
j
, j = 1, 2, . . . , N.
Nous introduisons N variables binaires, avec y
j
= 1 si la j
e
contrainte est satisfaite:
f
j
(x
1
, x
2
, . . . , x
n
) d
j
+M(1 y
j
), j = 1, 2, . . . , N.
Il reste spcier que seulement K de ces contraintes peuvent tres satisfaites:
N

j=1
y
j
= K.
4.2.3 Fonction ayant N valeurs possibles
Soit la contrainte
f(x
1
, x
2
, . . . , x
n
) = d
1
, ou d
2
ou . . . ou d
N
.
Nous introduisons N variables binaires, avec y
j
= 1 si la fonction vaut d
j
. La contrainte scrit alors
f(x
1
, x
2
, . . . , x
n
) =
N

j=1
d
j
y
j
,
avec
N

j=1
y
j
= 1.
46 CHAPITRE 4. PROGRAMMATION MIXTE ENTIRE
Exemple 25 (Wyndor Glass). Supposons que le temps de production maximum lusine 3 nest pas toujours 18h,
mais pourrait galement tre 6h ou 12h. Cette contrainte scrit alors
3x
1
+ 2x
2
= 6 ou 12 ou 18.
Nous introduisons alors trois variables binaires
3x
1
+ 2x
2
= 6y
1
+ 12y
2
+ 18y
3
,
y
1
+y
2
+y
3
= 1.
4.2.4 Objectif avec cots xes
Supposons que le cot associ un produit j est compos de deux parties:
1. un cot xe initial k
j
encouru ds quune unit de j est produite ;
2. un cot c
j
proportionnel au nombre dunits de j produites.
Le cot total associ la production de x
j
units est
f(x
j
) =
_
k
j
+c
j
x
j
si x
j
> 0,
0 si x
j
= 0.
Supposons de plus que lobjectif consiste minimiser la somme de n fonctions avec cots xes
minz =
n

j=1
f
j
(x
j
).
Nous introduisons alors n variables binaires:
y
j
=
_
1 si x
j
> 0,
0 si x
j
= 0.
Lobjectif scrit alors
minz =
n

j=1
c
j
x
j
+k
j
y
j
.
Les valeurs de x
j
et de y
j
dpendent lune de lautre: il sagit dun exemple de dcisions contingentes. Nous devons
en particulier avoir une contrainte qui prcise que x
j
= 0 si y
j
= 0. Toutefois, les deux variables ne sont plus
binaires, vu que x
j
peut tre quelconque. Soit M
j
une borne suprieure sur la valeur de x
j
. Nous pouvons crire la
relation entre les deux variables de cette manire:
x
j
M
j
y
j
.
Ainsi,
si y
j
= 0, alors x
j
= 0 ;
si y
j
= 1, alors x
j
M
j
;
si x
j
> 0, alors y
j
= 1 ;
si x
j
= 0, alors toute soluton optimale satisfait y
j
= 0 lorsque k
j
> 0 (si k
j
= 0, la variable y
j
est inutile).
Nous obtenons par consquent le programme
min z =
n

j=1
c
j
x
j
+k
j
y
j
s.c. x
j
M
j
,
y
j
0, 1, j = 1, 2, . . . , n.
4.2. CONTRAINTES MUTUELLEMENT EXCLUSIVES 47
4.2.5 Variables entires en variables 01
Soit x une variable entire gnrale borne:
0 x u,
et soit N lentier tel que 2
N
u 2
N+1
. La reprsentation binaire de x est
x =
N

j=0
2
j
y
j
.
Lintrt de cette transformation est que les mthodes de programmation 01 sont souvent plus ecaces que les m-
thodes de programmation en nombres entiers. Elle engendre nanmoins une multiplication du nombre de variables.
Exemple 26. Nous considrons trois types de produits, et deux usines ; nous exprimons le prot par unit de
produit en milliers de dollars. Nous connaissons les ventes potentielles par produit (units/semaine), et la capacit
de production par usine (h/semaine). Nous avons toutefois comme contrainte que pas plus de deux produits ne
peuvent tre fabriqus, et une seule des deux usines doit tre exploite. Les donnes du problme sont rsumes dans
la Table 4.3. Les variables sont x
j
, le nombre dunits fabriques du produit j. Pour reprsenter la contrainte pas
Produit 1 Produit 2 Produit 3 Capacit de
temps de production temps de production temps de production production
(h/unit) (h/unit) (h/unit) (h/semaine)
Usine 1 3 4 2 30
Usine 1 4 6 2 40
Prot/unit 5 7 3
(1000$)
Ventes potentielles 7 5 9
(par semaine)
Table 4.3 Exemple de production avec variables entires.
plus de deux produits, nous devons introduire des variables 01:
y
j
=
_
1 si x
j
> 0;
0 si x
j
= 0.
An de reprsenter la contrainte une seule des deux usines, nous devons ajouter une variables 01:
y
4
=
_
1 si lusine 1 est choisie;
0 si sinon.
Lobjectif est
max z = 5x
1
+ 7x
2
+ 3x
3
.
Les ventes potentielles sont
x
1
7, x
2
5, x
3
9.
Lexigence interdisant davoir plus de deux produits se traduit mathmatiquement par
y
1
+y
2
+y
3
2.
La relation entre les variables continues et les variables 01 sexprime par
x
1
7y
1
, x
2
5y
2
, x
3
9y
3
.
La contrainte portant sur lutilisation dune seule usine est
48 CHAPITRE 4. PROGRAMMATION MIXTE ENTIRE
soit 3x
1
+ 4x
2
+ 2x
3
30 ;
soit 4x
1
+ 6x
2
+ 2x
3
40.
En utilisant la variable 01 (et M trs grand), elle se traduit par
3x
1
+ 4x
2
+ 2x
3
30 +M(1 y
4
),
4x
1
+ 6x
2
+ 2x
3
40 +My
4
.
En rsum, nous avons le modle
max z = 5x
1
+ 7x
2
+ 3x
3
s.c. x
1
7y
1
, x
2
5y
2
, x
3
9y
3
y
1
+y
2
+y
3
2,
3x
1
+ 4x
2
+ 2x
3
30 +M(1 y
4
),
4x
1
+ 6x
2
+ 2x
3
40 +My
4
,
x
1
, x
2
, x
3
0,
y
j
0, 1, j = 1, 2, 3, 4.
Exemple 27. Nous considrons nouveau trois types de produits, pour lesquels nous pouvons placer cinq annonces
publicitaires, avec un maximum de trois annonces par produit. Lestimation des revenus publicitaires est donne
dans la Table 4.4, o les prots sont exprims en millions de dollars. Les variables du problmes sont le nombre
Nombre dannonces Produit 1 Produit 2 Produit 3
0 0 0 0
1 1 0 -1
2 3 2 2
3 3 3 4
Table 4.4 Revenus publicitaires.
dannonces pour le produit i, dnot par x
i
, mais lhypothse de proportionnalit est alors viole: nous ne pouvons
reprsenter lobjectif sous forme linaire uniquement avec ces variables.
Prenons tout dabord comme variables
y
ij
=
_
1 si x
i
= j;
0 sinon.
Lobjectif est
max z = y
11
+ 3y
12
+ 3y
13
+ 2y
22
+ 3y
23
y
31
+ 2y
32
+ 4y
33
.
Nous utiliserons les 5 annonces disponibles:
3

i=1
3

j=1
jy
ij
= 5.
Enn, la dnition des variables 01 donne
3

j=1
y
ij
1, i = 1, 2, 3.
Nous pourrions aussi prendre comme variables
y
ij
=
_
1 si x
i
j;
0 sinon.
4.2. CONTRAINTES MUTUELLEMENT EXCLUSIVES 49
Autrement dit, nous avons remplac lgalit dans la premire condition par une ingalit. Cette dnition implique
x
i
= 0 y
i1
= 0, y
i2
= 0, y
i3
= 0;
x
i
= 1 y
i1
= 1, y
i2
= 0, y
i3
= 0;
x
i
= 2 y
i1
= 1, y
i2
= 1, y
i3
= 0;
x
i
= 3 y
i1
= 1, y
i2
= 1, y
i3
= 1.
Ce qui peut encore snoncer somme
y
i(j+1)
y
ij
, i = 1, 2, 3, j = 1, 2.
Supposons que x
1
= 3 (il y a trois annonces pour le produit 1). Le prot associ cette valeur doit tre 3. Mais
x
1
= 3 veut aussi dire que chaque variable binaire associe au produit 1 vaut 1 ; comment ds lors comptabiliser
correctement la contribution de ces trois variables au prot ? La solution consiste prendre comme prot associ
la variable y
ij
la dirence c
ij+1
c
ij
, o c
ij
est le revenu net si nous plaons j annonce pour le produit i. Dans
notre exemple, le prot associ
y
11
est 1-0 = 1 ;
y
12
est 3-1 = 2 ;
y
13
est 3-3 = 0 ;
Nous obtenons ainsi le programme mathmatique suivant:
max z = y
11
+ 2y
12
+ 2y
22
+y
23
y
31
+ 3y
32
+ 2y
33
s.c. y
i(j+1)
y
ij
, i = 1, 2, 3, j = 1, 2,
3

i=1
3

j=1
y
ij
= 5,
y
ij
0, 1, i = 1, 2, 3, j = 1, 2.
4.2.6 Problme de recouvrement
Exemple 28 (Aectation des quipages). Un problme important des compagnies ariennes consiste constituer
de faon ecace des quipages pour ses vols. Pour un quipage donn, une rotation consiste en une succession de
services de vol dbutant et se terminant en une mme ville. Comme il y a un cot associ chaque squence de vols,
la compagnie cherche minimiser les cots daectation des quipages aux squences tout en assurant le service sur
chacun des vols.
Considrons par exemple un problme avec 11 vols et 12 squences de vols, dont les donnes sont dcrites dans
la Table 4.5. Les variables sont
x
j
=
_
1 si la squence de vols j est aecte;
0 sinon.
Lobjectif est
minz = 2x
1
+ 3x
2
+ 4x
3
+ 6x
4
+ 7x
5
+ 5x
6
+ 7x
7
+ 8x
8
+ 9x
9
+ 9x
10
+ 8x
11
+ 9x
12
.
Nous devons aecter trois quipages
12

j=1
x
j
= 3.
Le service doit tre assur sur chacun des vols:
x
1
+x
4
+x
7
+x
10
1
x
2
+x
5
+x
8
+x
11
1
x
3
+x
6
+x
9
+x
12
1
x
4
+x
7
+x
9
+x
10
+x
12
1
. . .
50 CHAPITRE 4. PROGRAMMATION MIXTE ENTIRE
Vol | Squence 1 2 3 4 5 6 7 8 9 10 11 12
1 1 1 1 1
2 1 1 1 1
3 1 1 1 1
4 1 1 1 1 1
5 1 1 1 1
6 1 1 1
7 1 1 1 1 1
8 1 1 1 1
9 1 1 1
10 1 1 1 1
11 1 1 1 1 1
Cot 2 3 4 6 7 5 7 8 9 9 8 9
Table 4.5 Aectation dquipages.
En pratique, il faut tenir compte des contraintes imposes par les conventions collectives, ce qui complique singuli-
rement le problme.
Un problme de recouvrement densemble met en oeuvre
I: un ensemble dobjets (les vols dans lexemple prcdent) ;
: une collection de sous-ensembles de I (e.g. les squences de vols) ;
J
i
, i I: les sous-ensembles dans qui contiennent i.
Nous avons les variables binaires x
j
, prenant la valeur 1 si le sous-ensemble j est choisi, et 0 sinon. En considrant
un objectif linaire, avec c
j
le cot associ au sous-ensemble j. Nous obtenons le programme
min
x

jJ
c
j
x
j
s.c.

jJi
x
j
1, i I;
x
j
0, 1, j .
4.3 Stratgies de rsolutions
4.3.1 Relaxation linaire
Il est tentant doublier les contraintes dintgralit, et de rsoudre le problme en nombres continus ainsi
produit. Nous parlerons alors de relaxation. Ainsi, nous pourrons construire la relaxtion en programme linraire
dun programme mixte entier. Une fois le programme relch rsolu, nous pourrions arrondir aux valeurs entires
les plus proches. Dans certains cas, cela peut fonctionner, mais lexemple du sac dos montre que ce nest pas
toujours vri. Cette mthode par arrondissement est mme parfois dsastreuse.
Exemple 29. Considrons le programme
max z = x
2
s.c. x
1
+x
2

1
2
,
x
1
+x
2

7
2
,
x
1
, x
2
0 et entiers.
4.3. STRATGIES DE RSOLUTIONS 51
La relaxation en programme linaire donne
max z = x
2
s.c. x
1
+x
2

1
2
,
x
1
+x
2

7
2
,
x
1
, x
2
0.
Ce nouveau programme a pour solution
_
3
2
, 2
_
. Que nous arrondissions cette solution (1, 2) ou (2, 2), nous nob-
tenons pas de solution ralisable, comme illustr sur la Figure 4.1
x
1
x
2
0 1 2 3
0
1
2
3
domaine ralisable du
modle de PL
_
3
2
, 2
_
Figure 4.1 Exemple de relaxation linaire: problme dadmissibilit des solutions
Exemple 30. Considrons le programme
max z = x
1
+ 5x
2
s.c. x
1
+ 10x
2
20,
x
2
2,
x
1
, x
2
0 et entiers.
La version relche de programme est
max z = x
1
+ 5x
2
s.c. x
1
+ 10x
2
20,
x
2
2,
x
1
, x
2
0,
qui a pour solution optimale (2, 1.8). En arrondissant (2, 1) an de garantir ladmissibilit, nous obtenir la valeur
7 pour la fonction objectif, loin de la valeur optimale du programme mixte entier, avec pour valeur optimale 11, en
(0, 2) (voir Figure 4.2).
52 CHAPITRE 4. PROGRAMMATION MIXTE ENTIRE
x
1
x
2
0 1 2 3
0
1
2
3
z

= 10 = x
1
+ 5x
2
Figure 4.2 Exemple de relaxation linaire: solution mdiocre
4.3.2 Approche par numration
Un modle en nombres entiers born (par exemple, un modle avec uniquement des variables 01) possde un
nombre ni de solutions. Nous pourrions envisagear de toutes les numrer, mais le nombre de solutions explose
rapidement. Pour n = 20 variables 01, il y a plus dun million de solutions possibles. Pour n = 30, cest plus dun
milliard. Comme il apparat quil est vite draisonnable de procder une numration complte des solutions, nous
allons essayer de mettre prot la relaxation en programme linaire pour liminer certaines de ces solutions. Cette
technique dnumration partielle est connue sous le vocable de branch-and-bound (B&B). Il sagit dune approche
diviser-pour-rgner:
dcomposition du problme en sous-problmes plus simples ;
combinaison de la rsolution de ces sous-problmes pour obtenir la solution du problme original.
Dans lalgorithme de branch-and-bound, chaque sous-problme correspond un sommet dans larbre des solutions.
Nous rsolvons la relaxation linaire de chaque sous-problme. Linformation tire de la relaxation linaire nous
permettra (peut-tre) dliminer toutes les solutions pouvant tre obtenues partir de ce sommet.
Algorithme de branch & bound: cas 01
Un algorithme simple pour numrer toutes les solutions dun modle 01 consiste :
choisir un sommet dans larbre des solutions ;
choisir une variable x non encore xe relativement ce sommet ;
gnrer les deux variables x = 0 et x = 1 (la variable x est dite xe): chaque alternative correspond un
sommet de larbre des solutions ;
recommencer partir dun sommet pour lequel certaines variables ne sont pas encore xes.
A la racine de larbre, aucune variable nest encore xe, tandis quaux feuilles de larbre, toutes les variables ont
t xes. Le nombre de feuilles est 2
n
(pour n variables 01).
Le calcul de borne (ou valuation) consiste rsoudre la relaxation linaire en chaque sommet. Llagage (ou
limination) consiste utiliser linformation tire de la rsolution de la relaxation linaire pour liminer toutes les
solutions manant du sommet courant. Ds lors, le branch-and-bound est un algorithme de sparation et dvaluation
successives.
4.3. STRATGIES DE RSOLUTIONS 53
Exemple 31 (California Mfg). Rappelons le problme
max z = 9x
1
+ 5x
2
+ 6x
3
+ 4x
4
s.c. 6x
1
+ 3x
2
+ 5x
3
+ 2x
4
10;
x
3
+x
4
1;
x
1
+x
3
0;
x
2
+x
4
0;
x
1
, x
2
, x
3
, x
4
1;
x
1
, x
2
, x
3
, x
4
0;
x
1
, x
2
, x
3
, x
4
entiers.
La relaxation linaire permet aux variables de prendre les valeurs fractionnaires entre 0 et 1, ce qui conduit la
solution
_
5
6
, 1, 0, 1
_
,
avec comme valeur z = 16.5. Branchons sur la variable x
1
.
Dnotons sous-problme 1 celui obtenu avec x
1
= 0:
max z = 5x
2
+ 6x
3
+ 4x
4
s.c. 3x
2
+ 5x
3
+ 2x
4
10;
x
3
+x
4
1;
x
3
0;
x
2
+x
4
0;
x
2
, x
3
, x
4
binaires.
La solution de la relaxation linaire est (x
1
, x
2
, x
3
, x
4
) = (0, 1, 0, 1), avec z = 9.
Le sous-problme 2 est celui obtenu avec x
1
= 1:
max z = 5x
2
+ 6x
3
+ 4x
4
+ 9
s.c. 3x
2
+ 5x
3
+ 2x
4
4;
x
3
+x
4
1;
x
3
1;
x
2
+x
4
0;
x
2
, x
3
, x
4
binaires.
La solution de la relaxation linaire est alors
(x
1
, x
2
, x
3
, x
4
) =
_
1,
4
5
, 0,
4
5
_
,
avec z = 16 +
1
5
.
Nous obtenons ds lors les bornes suivantes:
sous-problme 1: Z
1
9 ;
sous-problme 2: Z
2
16 +
1
5
.
Notons que toutes les variables sont binaires et tous les paramtres dans lobjectif sont des valeurs entires. Ds
lors, la borne suprieure pour le sous-problme 2 est 16. Pour le sous-problme 1, la solution obtenue est entiere:
cest la meilleure solution courante. Nous savons que la valeur optimale cherche, Z, sera au moins
Z

= 9 : Z Z

.
Quels sous-problmes pouvons-nous prsent considrer an de nous approcher de la solution optimale ? Tous
les sous-problmes actuellement traits doivent-ils donner naissance dautres problmes. Si un sous-problme
54 CHAPITRE 4. PROGRAMMATION MIXTE ENTIRE
ne donne lieu aucun autre problme, nous parlerons dlagage, en rfrence avec lide de couper la branche
correspondante dans larbre dexploration.
Considrons tout dabord le sous-probleme 1: la solution optimale de la relaxation PL est entire. Il ne sert
donc rien de brancher sur les autres variables, puisque toutes les autres solutions entires (avec x
1
= 0) sont
ncessairement de valeur infrieures ou gales 9. Nous pouvons donc laguer ce sommet.
Pour le sous-probleme 2, la solution optimale de la relaxation PL nest pas entire:
Z

= 9 Z 16.
La branche (x
1
= 1) peut encore contenir une solution optimale. Mais si nous avions eu Z
2
Z, nous aurions pu
conclure que la branche ne pouvait amliorer la meilleure solution courante.
Un sous-problme est elagu si une des trois conditions suivantes est satisfaite :
test 1: sa borne suprieure (valeur optimale de la relaxation PL) est infrieure ou gale Z

(valeur de la
meilleure solution courante) ;
test 2: sa relaxation PL na pas de solution ralisable ;
test 3: la solution optimale de sa relaxation PL est entire.
Lorsque le test 3 est veri, nous testons si la valeur optimale de la relaxation PL du sous-problme, Z
i
, est suprieure
Z

. Si Z
i
> Z

, alors Z

:= Z
i
, et nous conservons la solution, qui devient la meilleure solution courante. En
rsum, nous obtenons lalgorithme ci-dessous.
Algorithm 4.1: Branch-and-Bound: cas binaire
1. Initialisation:
(a) poser Z

= ;
(b) appliquer le calcul de borne et les critres dlagage la racine (aucune variable xe).
2. Critere darrt : sil ny a plus de sous-problemes non lagus, arrter.
3. Branchement:
(a) parmi les sous-problmes non encore lagus, choisir celui qui a t cre le plus rcemment (sil y a
galit, choisir celui de plus grande borne suprieure) ;
(b) appliquer le Test 1: si le sous-problme est lagu, retourner en 2.
(c) brancher sur la prochaine variable non xe.
4. Calcul de borne:
(a) rsoudre la relaxation PL de chaque sous-problme ;
(b) arrondir la valeur optimale si tous les paramtres de lobjectif sont entiers.
5. Elagage: laguer un sous-problme si
(a) la borne superieure est infrieure ou gale Z

;
(b) la relaxation PL na pas de solution ralisable ;
(c) la solution optimale de la relaxation PL est entire: si la borne suprieure est strictement suprieure
Z

, Z

est mise jour et la solution de la relaxation PL devient la meilleure solution courante.


6. Retourner en 2.
A partir de quel noeud devrions-nous brancher ? Il y a plusieurs choix possibles ; dans cette version, on propose
comme rgle de slection de choisir le sous-problme le plus rcemment cr. Lavantage est que cette approche
facilite la roptimisation lors du calcul de borne, car il ny a que peu de changements apports par rapport au
dernier sous-probleme trait. Le dsavantage est que cela peut crer un grand nombre de sous-probmes. Une autre
option est la rgle de la meilleure borne: choisir le sous-problme ayant la plus grande borne suprieure.
Dans cette version, la rgle de branchement consiste choisir la prochaine variable non xe. Il est souvent plus
intressant de choisir une variable valeur fractionnaire. En branchant sur une telle variable, il est certain que les
deux sous-problmes cres mnent des solutions dierentes de la solution courante. De nombreux critres existent
pour choisir une telle variable de facon orienter la recherche vers un lagage rapide.
Exemple 32 (suite). Jusqu maintenant, voici larbre obtenu, en branchant sur la variable x
1
.
4.3. STRATGIES DE RSOLUTIONS 55
0
1
16
16
9 = Z

F(3)
F(3) indique que le sous-probleme a t lagu (fathomed) en raison du Test 3.
Slection: nous choisissons le sous-problme 2, le seul qui na pas encore t lagu. Nous branchons sur la
prochaine variable, soit x
2
. Deux nouveaux sous-problmes sont cres:
sous-problme 3: x
1
= 1, x
2
= 0 ;
sous-problme 4: x
1
= 1, x
2
= 1.
Considrons tout dabord le sous-problme 3 (x
1
= 1, x
2
= 0). Nous obtenons le problme
max z
3
= 6x
3
+ 4x
4
+ 9
s.c. 5x
3
+ 2x
4
4
x
3
+x
4
1
x
3
1
x
4
0
x
3
, x
4
binaire.
La solution de la relaxation PL est
(x
1
, x
2
, x
3
, x
4
) =
_
1, 0,
4
5
, 0
_
.
et
Z = 13 +
4
5
: Z
3
13.
Le sous-problme 4 (x
1
= 1, x
2
= 1) devient
max z
4
= 6x
3
+ 4x
4
+ 14
s.c. 5x
3
+ 2x
4
1
x
3
+x
4
1
x
3
1
x
4
1
x
3
, x
4
binaire.
La solution de la relaxation PL est
(x
1
, x
2
, x
3
, x
4
) =
_
1, 1, 0,
1
2
_
.
et
Z = 16 : Z
4
16.
Aucun des tests dlagage ne sapplique sur ces sous-problmes. Nous devons ds lors choisir un des deux sous-
problmes pour eectuer un branchement, puisque ce sont ceux cres le plus rcemment. Nous choisissons celui
de plus grande borne suprieure, soit le sous-problme 4. Nous branchons sur x
3
et nous gnrons deux nouveaux
sous-problmes.
Le sous-problme 5, dni avec x
1
= 1, x
2
= 1, x
3
= 0, scrit
max z
5
= 4x
4
+ 14
s.c. 2x
4
1
x
4
1
x
4
1
x
4
binaire.
56 CHAPITRE 4. PROGRAMMATION MIXTE ENTIRE
La solution de la relaxation PL est
(x
1
, x
2
, x
3
, x
4
) =
_
1, 1, 0,
1
2
_
et
Z = 16 : Z
5
16.
Le sous-problme 6, dni avec x
1
= 1, x
2
= 1, x
3
= 1, scrit
max z
5
= 4x
4
+ 20
s.c. 2x
4
4
x
4
0
x
4
1
x
4
binaire.
La relaxation PL na pas de solution realisable: ce sous-probleme est lagu.
Le sous-problme 5 ne peut pas tre lagu. Il est cre le plus rcemment parmi les sous-problmes non lagus (3
et 5), aussi choisissons-nous le pour eectuer un branchement. Nous branchons sur x
4
et gnrons les sous-problmes
suivants:
sous-problme 7: x
1
= 1, x
2
= 1, x
3
= 0, x
4
= 0 ;
sous-problme 8: x
1
= 1, x
2
= 1, x
3
= 0, x
4
= 1.
Toutes les variables sont xes, aussi pouvons-nous directement rsoudre ces sous-problmes. Le sous-problme 7 a
pour solution (x
1
, x
2
, x
3
, x
4
) = (1, 1, 0, 0), pour Z
7
= 14. La solution est entire, aussi nous laguons le sous-problme
en vertu du Test 3. Puisque Z
7
> Z

, Z

= 14 et la solution du sous-problme devient la meilleure solution courante.


Le sous-problme 8 a pour solution (x
1
, x
2
, x
3
, x
4
) = (1, 1, 0, 1). Cette solution nest pas ralisable, car la premire
contrainte (2x
4
1) est viole. Le sous-problme est par consquent lagu par le Test 2.
Le sous-problme 3 est le seul non encore lagu. Appliquons le Test 1: Z
3
= 13 14 = Z. Le sous-problme est
donc elagu. Comme il ny a plus de sous-problmes non lagus, nous pouvons nous arrter. La solution optimale
est:
(x
1
, x
2
, x
3
, x
4
) = (1, 1, 0, 0),
et la valeur optimale est Z

= 14.
Larbre obtenu suite lexcution de lalgorithme se prsente comme suit:
0
1
0
1
0
0
1
1
16
16
9
16
13
16
14
F(3)
F(3) F(1)
F(2)
F(2)
x
1
x
2
x
3
x
4
F(j): le sous-problme est lagu par le Test j
Algorithme de branch & bound: cas gnral
Considrons prsent le cas gnral dun modle de programmation (mixte) en nombres entiers: variables
entires gnrales et variables continues. Comme prcdemment, nous ignorons dans un premier temps les contraintes
dintgralit (les valeurs des variables entires sont traites comme variables continues), et rsolvons le programme
linaire rsultant. Si la solution optimale de ce programme satisfait aux contraintes dintgralit, alors cette solution
est aussi solution optimale du programme avec variables entires. Sinon, il doit exister au moins une variable x
j
dont la valeur est fractionnaire. La procdure de branchement se gnralise alors comme suit: nous sparons
alors le problme relax en deux sous-problmes ; un sous-problme contiendra la contrainte x
j
| et le second
4.3. STRATGIES DE RSOLUTIONS 57
la contrainte x
j
| = | + 1. Nous rptons le processus pour chacun des sous-problmes. Cette procdure
est habituellement reprsente sous forme dun arbre binaire o, chaque niveau, une partition du sommet pre
seectue suivant la rgle dcrite prcdemment. Il sagit alors de parcourir cet arbre dnumration an dy trouver
la solution optimale. Lexploration dun chemin de larbre peut prendre n pour trois raisons:
la solution devient entire ;
le domaine admissible dun sous-problme devient vide ;
la valeur de lobjectif correspondant la solution optimale du problme relax est infrieure (moins bonne)
celle dune solution admissible connue, possiblement obtenue un autre sommet de larbre.
Dans chacun de ces trois cas on dit que le sommet est sond, et il est inutile de pousser plus loin dans cette direction.
Lalgorithme sarrte lorsque tous les sommets sont sonds. La meilleure solution obtenue au cours du droulement
de lalgorithme est alors loptimum global de notre problme.
Algorithm 4.2: Algorithme de B&B: cas gnral
1. Initialisation:
(a) Poser Z

= .
(b) Appliquer le calcul de borne et les critres dlagage la racine (aucune variable xe).
(c) Critere darrt : sil ny a plus de sous-problmes non lagus, arrter.
2. Branchement:
(a) Parmi les sous-problmes non encore lagus, choisir celui qui a t cre le plus rcemment (sil y a
galit, choisir celui de plus grande borne suprieure).
(b) Appliquer le Test 1: si le sous-problme est lagu, retourner en 2.
(c) Brancher sur la prochaine variable entire valeur non entire dans la relaxation PL.
3. Calcul de borne: rsoudre la relaxation PL de chaque sous-problme.
4. Elagage: laguer un sous-problme si
(a) La borne superieure est infrieure ou gale Z

.
(b) La relaxation PL na pas de solution ralisable.
(c) Dans la solution optimale de la relaxation PL, toutes les variables entires sont valeurs entires: si la
borne suprieure est strictement suprieure Z

, Z

est mise jour et la solution de la relaxation PL


devient la meilleure solution courante.
5. Retourner en 2.
4.3.3 Les hyperplans coupants (mthode de coupe)
Vu que lnumration des variables entires peut tre coteuse, lide est dajouter des contraintes redondantes
pour le modle en nombres entiers, mais non pour la relaxation PL.
Exemple 33. Considrons le programme mathmatique
max
x
4x
1
+
5
2
x
2
x
1
+x
2
6
9x
1
+ 5x
2
45
x
1
, x
2
^.
Le dictionnaire optimal correspondant la relaxation linaire de ce programme contient les deux contraintes
x
1
=
15
4
+
5
4
x
3

1
4
x
4
,
x
2
=
9
4

9
4
x
3
+
1
4
x
4
,
58 CHAPITRE 4. PROGRAMMATION MIXTE ENTIRE
o x
3
et x
4
sont des variables dcart. Puisque la variable de base x
1
nest pas entire, cette solution de base nest
pas admissible. nous pouvons rcrire la premire contrainte sous la forme
x
1

5
4
x
3
+
1
4
x
4
=
15
4
.
En utilisant lidentit
a = a| + (a a|),
o (a a|) reprsente la partie fractionnaire de a (0 a a| < 1), nous obtenons
x
1
+
__

5
4
_
+
3
4
_
x3 +
__
1
4
_
+
1
4
_
x
4
=
__
15
4
_
+
3
4
_
,
cest--dire, en mettant tous les coecients entiers gauche et les coecients fractionnaires droite:
x
1
2x
3
3 =
3
4

3
4
x
3

1
4
x
4
.
Puisque les variables x
3
et x
4
sont non ngatives, la partie fractionnaire (constante du membre de droite) est
infrieure 1, le membre de droite est strictement infrieur 1. Puisque le membre de gauche est entier, le membre
de droite doit aussi tre entier. Or un entier infrieur 1 doit tre infrieur ou gal zro. Nous en dduisons une
contrainte additionnelle qui doit tre satisfaite par toute solution admissible du problme originel, et que ne satisfait
pas la solution de base courante:
3
4

3
4
x
3

1
4
x
4
0.
En utilisant les identits x
3
= 6x
1
x
2
et x
4
= 459x
1
5x
2
, nous obtenons la coupe sous sa forme gomtrique:
3x
1
+ 2x
2
15.
Cette contrainte linaire rend inadmissible la solution courante admissible, sans liminer aucune autre solution
entire. Si la solution du nouveau problme est entire, il sagit de la solution optimale de notre problme. Sinon,
nous construisons une nouvelle coupe et recommenons.
Exemple 34. Reprenons le problme, illustr sur la Figure 4.3,
max z = 3x
1
+ 2x
2
s.c. 2x
1
+ 3x
2
4,
x
1
, x
2
binaire.
Les solutions ralisables sont (0, 0), (1, 0) et (0, 1).
Une contrainte redondante est:
x
1
+x
2
1.
Suite lajout de la contrainte redondante, comme reprsent sur la Figure 4.4, le problme est rsolu la racine.
Il y a plusieurs algorithmes permettant de gnrer de telles ingalits redondantes, appeles coupes. Mais il est
rare que leur ajout permette de rsoudre le probleme la racine. Lajout de coupes permet toutefois de rduire le
nombre de sous-problmes traits par lalgorithme de Branch-and-Bound. Nous pouvons mme ajouter des coupes
pour chaque sous-problme (pas seulement la racine): nous obtenons alors un algorithme de branch-and-cut.
4.4 Modlisation avec GAMS
Exemple 35 (Echangeurs de chaleur). Considrons un problme simpli daection de ux de processus des
changeurs de chaleur ; les changeurs de chaleur ont pour but de transfrer la chaleur dun ux chaud un ux
4.4. MODLISATION AVEC GAMS 59
x
1
x
2
0 1
0
1
domaine
ralisable
solution optimale
solution optimale entire
Figure 4.3 Mthode de coupes
froid, an de limiter la consommation dnergie ncessaire pour chauer ou refroidir des ux liquides (par exemple
de leau) intervenant dans des processus de production industrielle. Le problme doptimisation correspondant est:
min z =
n

i=1
n

j=1
c
ij
x
ij
n

i=1
x
ij
= 1, j = 1, . . . , n,
n

j=1
x
ij
= 1, i = 1, . . . , n,
x
ij
0, 1, i = 1, . . . , n, j = 1, . . . , n,
ce qui nest rien dautre quun problme classique daection. i reprsente ici lindice des n ux, et j, lindice des
n changeurs. La variable binaire x
ij
vaut 1 si le ux i est aect lchangeur j, et 0 sinon. Les contraintes
indiquent que chaque changeur doit tre aect un ux, et rciproquement. Les cots c
ij
daectation des ux
aux changeur sont rsums dans la Table 4.5. Le problme peut se formuler en GAMS comme
HEAT.GMS
$TITLE Test Problem
$OFFSYMXREF
$OFFSYMLIST
SETS
I streams / A, B, C, D /
J exchangers / 1*4 / ;
TABLE C(I,J) Cost of assigning stream i to exchanger j
60 CHAPITRE 4. PROGRAMMATION MIXTE ENTIRE
x
1
x
2
0 1
0
1
domaine
ralisable
solution optimale entire
Figure 4.4 Mthode de coupes: ajout dune contrainte
X
X
X
X
X
X
X
X
X
X
X
Echangeur
Flux
1 2 3 4
A 94 1 54 68
B 74 10 88 82
C 73 88 8 76
D 11 74 81 21
Figure 4.5 cots daectation des changeurs de chaleur
1 2 3 4
A 94 1 54 68
B 74 10 88 82
C 73 88 8 76
D 11 74 81 21 ;
VARIABLES X(I,J), Z;
BINARY VARIABLES X(I,J);
EQUATIONS ASSI(J), ASSJ(I), OBJ;
ASSI(J).. SUM( I, X(I,J) ) =E= 1;
ASSJ(I).. SUM( J, X(I,J) ) =E= 1;
OBJ.. Z =E= SUM ( (I,J), C(I,J)*X(I,J) ) ;
4.4. MODLISATION AVEC GAMS 61
MODEL HEAT / ALL /;
OPTION LIMROW = 0;
OPTION LIMCOL = 0;
OPTION SOLPRINT = OFF;
SOLVE HEAT USING MIP MINIMIZING Z;
DISPLAY X.L, Z.L ;
La commende OPTION SOLPRINT=OFF supprime limpression de la solution ; la sortie sera contrle par la commande
DISPLAY plac juste la suite.
Exemple 36 (Problme de production). Nous souhaitons maximiser le prot que nous pourrions obtenir en consi-
drant 3 produits. Il ny a pas cot de productions unitaires, mais des cots xes sont prsent pour le premier et le
deuxime produits. Chaque produit est stock, et nous ne pouvons pas dpasser le volume disponible. Le code GAMS
du problme est
VARIABLES
z profit;
POSITIVE VARIABLES
x1 produit1
x2 produit2
x3 produit3;
BINARY VARIABLES
y1
y2 ;
EQUATIONS
Objective Maximize profit
Ressource
Upper1 limit on product 1
Upper2 limit on product 2
Upper3 limit on product 3;
Objective..
z =E= 2*x1 + 3*x2 + 0.8*x3 - 3*y1 - 2*y2;
Ressource..
0.2*x1 + 0.4*x2 + 0.2*x3 =L= 1;
Upper1..
x1 =L= 3*y1;
Upper2..
x2 =L= 2*y2;
1
Upper3..
x3 =L= 5;
MODEL example /ALL/;
62 CHAPITRE 4. PROGRAMMATION MIXTE ENTIRE
OPTION optcr = 0.05;
SOLVE example USING mip maximizing z;
Notons la ligne
OPTION optcr = 0.05;
qui nous donne le critre doptimalit sur la valeur optimale. Dans le cas prsent, nous exigeons que lcart relatif
entre la borne suprieur et la borne infrieure soit infrieur 5%.
4.5 Exercices
Exercice 1 (Hillier et Lieberman [1], Exercice 12.7-9). Utiliser lalgorithme de Branch & Bound pour rsoudre le
problme
max z = 3x
1
+ 4x
2
+ 2x
3
+x
4
+ 2x
5
,
s.c. 2x
1
x
2
+x
3
+x
4
+x
5
3,
x
1
+ 3x
2
+x
3
x
4
2x
5
2,
2x
1
+x
2
x
3
+x
4
+ 3x
5
1,
x
j
0, j = 1, 2, 3, 4, 5,
x
j
0, 1, j = 1, 2, 3.
4.6 Notes
Le contenu de ce chapitre est repris des notes de cours de Patrice Marcotte (2001) et de Bernard Gendron
(2007). Lexemple GAMS sur les changeurs de chaleur est d Grossmann.
Chapitre 5
Rseaux
5.1 Graphes
Les graphes sont un outil puissant de modlisation. Ils interviennent naturellement dans la reprsentation de
rseaux de transport ou de tlcommunication, par exemple, mais galement dans la reprsentation de structures
relationnelles abstraites. Mathmatiquement, un graphe G prend la forme G = (N, A) o N est un ensemble de
sommets et A N N un ensemble darcs. Le terme rseau est un terme gnrique dsignant un graphe dont les
sommets ou les arcs possdent des attributs: cots, capacits, longueurs, etc.
5.1.1 Graphe orient
Exemple 37 (Rseau de distribution). Nous reprenons lexemple 5, illustr sur la Figure 5.1. Les liens entre les
noeuds du graphe ne peuvent tre parcourus que dans un sens prcis ; nous parlerons de graphe orient. Les sommets
du graphe sont A, B, C, D, E, et le graphe possde les arcs (A, B), (A, C), (A, D), (B, C), (C, E), (D, E), (E, D).
A
B
D
E
C
Figure 5.1 Rseau de distribution
5.1.2 Graphe non orient
Exemple 38 (Parc Seervada). Considrons le graphe reprsent sur la Figure 5.2, tir de Hillier et Lieberman [1],
Section 9.1. Nous avons les sommets O, A, B, C, D, E, T, et les artes: O, A, O, B, O, C, A, B, A, D,
B, C, B, D, B, E, D, E, D, T, E, T. Le nombre sur chaque arte reprsente la distance entre les deux
sommets relis par cette arte
63
64 CHAPITRE 5. RSEAUX
A
O
C
B D
E
T
2
5
4
2
7
4
3
1
5
1
7
4
Figure 5.2 Graphe non orient
5.1.3 Transformations
Un graphe orient driv dun graphe non orient en introduisant deux arcs pour chaque arte, un dans chaque
direction. A linverse, nous qualierons de graphe sous-jacent un graphe orient le graphe obtenu en enlevant
lorientation des arcs. Si G est un graphe orient, le graphe driv du graphe sous-jacent G nest pas G.
5.1.4 Chemins et circuits
Un chemin [chane] est suite darcs [dartes] distinct[e]s reliant deux sommets. Il est non orient sil est constitu
dune suite darcs distincts qui relient deux sommets, sans considration de lorientation des arcs. En dautres mots,
un chemin non orient est une chane dans le graphe sous-jacent. Un circuit [cycle] est un chemin [chane] qui
commence et nit au mme sommet. Le circuit est non orient sil sagit dun cycle dans le graphe sous-jacent.
Exemple 39 (Rseau de distribution). Reprenons lexemple du rseau de distribution, illustr sur la Figure 5.3.
A C E D dcrit un chemin, et en ignorant lorientation des arcs, nous dcrivons galement un chemin
non orient. A D E C B est chemin non orient, mais pas un chemin. D E D est circuit, et en
omettant lorientation des arcs, un circuit non orient. A B C A est un circuit non orient (mais pas un
circuit).
A
B
D
E
C
Figure 5.3 Rseau de distribution
5.1.5 Connexit
Deux sommets sont connexes sil existe au moins un chemin non orient les reliant. Un graphe est connexe si
toute paire de sommets est connexe. Le plus petit graphe connexe n sommets possde n 1 artes ; il est appel
5.2. PROBLME DUCHEMINLE PLUS COURT - ALGORITHMES DE CORRECTIONS DTIQUETTES65
un arbre. Une dnition alternative consiste dire quun arbre est un graphe connexe sans cycle. Un arbre partiel
est un arbre obtenu partir dun graphe connexe en incluant tous les sommets.
Exemple 40. Retournons sur lexemple 38. Le graphe ci-dessous nest pas un arbre partiel, comme il nest pas
connexe.
A
O
C
B D
E
T
Le graphe ci-dessous est connexe, mais prsente des cycles. Par consquent, il ne sagit pas dun arbre.
A
O
C
B D
E
T
Le graphe ci-dessous est un arbre partiel.
A
O
C
B D
E
T
5.2 Problme du chemin le plus court - algorithmes de corrections dti-
quettes
Considrons un graphe non orient et connexe, sur lequel deux sommets ont un rle particulier:
source (ou origine): O;
puits (ou destination): T.
A chaque arte i, j, nous associons une distance c
ij
0. Nous cherchons le chemin non orient (ou chane) le plus
court reliant O T. Par chemin le plus court, nous dsignons celui dont la distance totale (somme des distances des
artes du chemin) est minimale parmi tous les chemins de O T. An de procder, nous aectons chaque noeud
du graphe une tiquette, reprsentant la meilleure distance connue un moment donn, de lorigine ce noeud.
5.2.1 Algorithme de Dijkstra
Il sagit dune mthode itrative A chaque itration, nous choisissons le sommet j le plus prs de O et nous
xons d(j), la variable calculant la distance entre 0 et j (le sommet j est dit marqu). Au dpart, seul O est marqu
et d(O) = 0. Le sommet le plus prs est choisi parmi les sommets non marqus relis au moins un sommet marqu.
Le sommet choisi j est celui qui atteint
min
sommets k non marqus
_
min
sommets i marqus
d(i) +c
ik
_
.
66 CHAPITRE 5. RSEAUX
d(j) est xe cette valeur. Nous nous arrtons lorsque T est marqu si nous cherchons connatre le chemin allant
de O T spciquement, ou sinon jusqu avoir marqu tous les sommets. Par la suite, nous supposerons dans la
description que nous voulons marquer tous les sommets. Plus spciquement, nous avons lalgorithme ci-dessous.
Lalgorithme de Dijkstra sapplique aussi sur un graphe orient.
Algorithm 5.1: Algorithme de Dijkstra
Soient G = (N, A) un graphe connexe, de longueur dartes non-ngative (la longueur des artes est donne
par une fonction : A
+
), une source O N. Dsignons par S lensemble des sommets marqus.
1. Initialisation. Pour tout u N, faire
dist(u) := ;
pred(u) := NULL.
o pred(u) indique le prdcesseur de u sur le plus court chemin de O u. Le noeud origine prend un rle
particulier, et comme il est vident que le plus court chemin de O O a une longueur nulle, nous posons
dist(O) = 0. Comme ce stade, aucun noeud na encore t marqu, nous posons S = .
2. Tant que S ,= N, prenons u tel que
dist(u) dist(v), v NS.
Posons S := S u, et, pour tout arc (u, v) existant, si
dist(v) < dist(u) +(u, v),
posons
dist(v) := dist(u) +(u, v),
pred(v) = u.
Il est possible de montrer quune fois un noeud u marqu, dist(u) donne la longueur du plus court chemin de O
u.
Exemple 41. Lapplication de lalgorithme de Dijkstra pour lexemple 38, repris la Figure 5.4, donne la srie
ditrations rsume dans la Table 5.1.
A
O
C
B D
E
T
2
5
4
2
7
4
3
1
5
1
7
4
Figure 5.4 Plus court chemin
Il est galement possible de trouver les chemins les plus courts entre la source et tous les autres sommets (il
sut de regarder la valeur de d(i) en chaque sommet i). Nous pouvons galement trouver les chemins les plus courts
entre toutes les paires de sommets, avec n applications de lalgorithme de Dijkstra (mais il est possible de faire
mieux). Si certaines distances sont ngatives, lalgorithme de Dijkstra ne sapplique cependant pas.
5.3. FLOT DANS UN RSEAU 67
Itration Sommet S NS Voisins Distance Prdcesseur
marqu non marqus
0 - N - - -
1 O O A, B, C, D, E, T A 2 O
B 5 O
C 4 O
2 A O, A B, C, D, E, T B 4 A
D 9 A
3 B O, A, B C, D, E, T D 8 B
C 4 O
E 7 B
4 C O, A, B, C D, E, T E 7 B
5 E O, A, B, C, E D, T D 8 B
T 14 E
6 D O, A, B, C, D, E T T 13 D
7 T N - - -
Table 5.1 Excution de lalgorithme de Dijkstra
5.3 Flot dans un rseau
5.3.1 Rseau
Un rseau est un graphe orient ayant
des capacits sur les arcs ;
des sommets dore (ou sources) ;
des sommets de demande (ou puits) ;
des sommets de transfert.
Le ot dans un rseau est le nombre dunits circulant sur les arcs du rseau de faon respecter les capacits et
les contraintes de conservation de ot. En chaque sommet, le ot sortant moins le ot entrant vaut
lore (si le sommet est une source) ;
la demande (si le sommet est un puits) ;
0 (en un sommet de transfert).
Soit A est lensemble des arcs du rseau. En dnotant par x
ij
la quantit de ot qui passe sur larc (i, j) A, nous
avons

(i,j)A
+
(i)
x
ij

(i,j)A

(i)
x
ji
= b
i
, i, j N
o
b
i
= 0 (transfert), ore (source), -demande (puits) ;
N dsigne lensemble des sommets ;
A
+
(i) est lensemble des arcs sortants du sommet i ;
A

(i) dsigne lensemble des arcs entrants au sommet i ;


avec 0 x
ij
u
ij
.
5.3.2 Modle de ot
Le chemin le plus court peut tre vu comme le ot dans un rseau, lequel est le graphe orient driv. On enlve
les arcs entrant O et les arcs manant de T. O est la seule source, avec une ore gale 1. T est le seul puits,
avec une demande valant 1. Le ot sur chaque arc (i, j) est soit 1, si larc appartient au chemin le plus court, soit
0, sinon.
68 CHAPITRE 5. RSEAUX
5.3.3 Algorithme de Bellman-Ford
La dcience majeure de lalgorithme de Dijkstra est quen prsence darcs (artes) de poids ngatif, ajouter un
arc un chemin peut faire dcrotre la longueur de ce chemin, de sorte que lors du marquage dun noeud u, dist(u)
ne correspond plus ncessairement la longueur du plus court chemin de O u. En particulier, si considrons le
plus court chemin
O v
1
v
2
. . . v
k
de O v
k
, alors il nest plus vrai que
d(O, v
i
) d(O, v
k
) i < k.
Il est pourtant frquent davoir des poids ngatifs sur certains arcs. Lalgorithme de Bellman-Ford permet de traiter
de tels cas, pour autant quil ny ait pas de cycles de longueur ngative, cest--dire un cycle dont les sommes des
poids des artes est strictement ngatif. En eet, sil est possible datteindre de O un cycle C de longueur ngative,
et quil est possible datteindre T depuis C, alors la longueur du plus court chemin de O T vaut .
Considrons un graphe G = (N, A) connexe, sans cycle ngatifs. Il existe alors un chemin
O v
1
v
2
. . . v
k
= T.
Nous allons garder trace des distances partir de O, en construisant pour chaque noeud des surestimations succes-
sives de la longueur du plus court chemin.
Algorithm 5.2: Algorithme de Bellman-Ford
Soient un graphe G = (N, A) connexe, sans cycle ngatifs, un sommet source O et un sommet destination T.
1. Initialisation. Pour tout u N, posons dist(u) := et pred(u) = NULL. Posons galement dist(O) = 0.
Poser i = 0.
2. Si i = [N[ 1, arrt. Sinon, pour chaque arte u, v, posons
dist(v) := mindist(v), dist(u) +(u, v).
Si dist(v) a t modi, poser pred(v) = u. Mettre jour i:
i := i + 1.
Retour en 2.
Considrons le plus court chemin O T:
O v
1
v
2
. . . v
k
= T.
Pour chaque i k,
O v
1
v
2
. . . v
i
.
est le plus court chemin de O v
i
. En eet
aprs litration 1, dist(v
1
) = d(O, v
1
),
aprs litration 2, dist(v
2
) = d(O, v
2
),
et ainsi de suite jusqu litration i.
5.3.4 Modle du chemin critique (PERT/CPM)
La thorie des graphes est utilise galement en ordonnancement de tches, en particulier sur base dun dia-
gramme de PERT
1
. Considrons un projet divis en tches diverses. Un graphe orient connexe (acyclique) repr-
sente les relations de prcdence entre les tches, avec pour chaque tape du projet un noeud i correspond. Larc
(i, j) reprsente une tche eectuer, et nous lui associons une pondration t
ij
, reprsentant la dure de la tche.
Sil existe galement un arc (j, k), cela signie que la tche (i, j) doit se terminer avant que (j, k) ne dbute. Les
1. PERT est un acronyme pour Program Evaluation and Review Technique
5.4. PROBLME DE LARBRE PARTIEL MINIMUM 69
noeuds 1 et N correspondent au dbut et la n du projet. Une chemin dans le graphe reprsente une squence de
travaux qui doivent tre excuts dans un certain ordre. Nous souhaitons connatre le temps requis pour terminer
le projet (i.e. avoir eectu toutes les tches, certaines pouvant saccomplir en parallle), ainsi que les activits
critiques, cest--dire celles qui dterminent le temps total du projet.
Un plus long chemin dans le rseau sappelle un chemin critique et sa longueur correspond la dure minimale
du projet. Le poids dun chemin critique est une borne infrieure du temps total ncessaire pour mener bien le
projet. Il est facile de calculer un tel chemin sur base des algorithmes de plus court chemin an de trouver un tel
chemin critique. Une premire approche consiste considrer loppos de chaque pondration t
ij
, ce qui conduit
un graphe avec des poids ngatifs. Dans ce cas, lalgorithme de Bellman-Ford sappliquera, pour autant quil ny
ait pas de cycles
2
.
Exemple 42. Nous souhaitons mener bien le dveloppement dun nouveau produit, depuis sa production jusquau
rapport de projet menant sa vente. Nous avons la liste des activits reprises dans la Table 5.2, Dnotons linstant
de dpart par O Nous pouvons les dirences tches, et leurs dpendances, suivant le graphe de la Figure 5.5. Il est
facile de voir que le chemin critique, de longueur 13, vaut
O A D G J.
Autrement, le projet prendra au minimum 13 mois, et les activits critiques sont, dans lordre, la conception du
produit, la mise au point du prototype, son test et le rapport de projet. Les autres tches peuvent seectuer en
parallle (en respectant les contraintes de prcdence). Le noeud O ne correspond aucune activit, mais permet
de dnir un point dentre dans le graphe. Le point de sortie peut tre identi J car cest lunique activit
terminale. Si plusieurs activits ont lieu de manires concomitantes en n de projet, il ny a pas dactivit terminale
que nous pourrions identi. Dans ce cas, nous ajoutons un noeud articiel, disons T, et traons un arc depuis
chaque activit de n vers ce noeud terminal T. Chaque arc portera le pondration 0, ainsi nous ne modions pas
la dure du projet de manire arbitraire.
Activit Description Tches pralables Dure (mois)
A Conception du produit - 5
B Recherche de march - 1
C Analyse de production A 2
D Prototype A 3
E Brochure de vente A 2
F Anayse de cot C 3
G Test de produit D 4
H Entranement de vente B, E 2
I Tarication H 1
J Rapport de projet F, G, I 1
Table 5.2 Tches dun projet commercial
5.4 Problme de larbre partiel minimum
Considrons un graphe non orient et connexe. A chaque arte i, j, nous associons une distance c
ij
0. Nous
cherchons construire un arbre partiel (plus petit graphe connexe contenant tous les sommets) dont la somme
des distances soit minimum parmi tous les arbres partiels du graphe. Cest un exemple simple de problme de
conception de rseaux (network design): choisir une conguration de rseau (sous-ensemble darcs) qui optimise un
certain critre.
2. Pourquoi ?
70 CHAPITRE 5. RSEAUX
0
A
B
C
D
E
F
G
H I
J
5
1
2
3
2
2
3
4
2
2
1
1
1
Figure 5.5 Graphe du projet commercial
5.4.1 Algorithme de Prim (1957)
Il sagit nouveau dune approche itrative. Lalgorithme est initialis en choisissant un sommet i (arbitrai-
rement) et en le reliant au sommet j le plus proche. En dautres termes, nous ajoutons larte i, j. chaque
itration, nous choisissons le sommet non reli j le plus prs dun des sommets dj relis i et nous ajoutons i, j.
Nous nous arrtons lorsque tous les sommets ont t relis. En cas dgalit, nous pouvons choisir arbitrairement.
De telles galits indiquent quil pourrait y avoir plusieurs solutions optimales.
Exemple 43. Considrons nouveau lexemple 38.
1. Linitialisation consiste choisir le sommet O et le relier au sommet le plus prs: on ajoute O, A.
2. Le sommet non reli le plus prs de O ou de A est B; comme il est plus prs de A, on ajoute A, B.
3. Le sommet non reli le plus prs de O, de A ou de B est C ; puisquil est plus prs de B, on ajoute B, C.
4. Le sommet non reli le plus prs dun des sommets relis est E ; nous ajoutons larte B, E,
5. Le sommet non reli le plus prs dun des sommets relis (E) est D; nous ajoutons larte E, D
6. Le sommet non reli le plus prs dun des sommets relis (D) est T ; nous ajoutons larte D, T. Tous
les sommets sont prsent relis, aussi, nous nous arrtons. La valeur optimale correspond la somme des
distances des artes ajoutes, soit 14.
Larbre partiel minimum est reprsent en rouge dans la Figure 5.6.
5.5 Problme du ot maximum
Considrons un graphe orient et connexe. chaque arc (i, j), nous associons une capacit u
ij
> 0. Il y a deux
sommets spciaux:
source (ou origine) O;
puits (ou destination) T.
Tous les autres sont des sommets de transfert. Lore en O et la demande en T sont variables. Lore en O doit
cependant correspondre la demande en T, et indique la valeur du ot entre O et T. Nous cherche maximiser la
valeur du ot entre O et T.
Supposons que nous avons dj aect un ot sur les arcs. La capacit rsiduelle dun arc (i, j) est comme
u
ij
x
ij
5.5. PROBLME DU FLOT MAXIMUM 71
A
O
C
B D
E
T
2
5
4
2
7
4
3
1
5
1
7
4
Figure 5.6 Arbre partiel minimum
Nous dnission le graphe rsiduel comme le graphe non orient sous-jacent, o, sur chaque arte, nous associons
deux valeurs: la capacit rsiduelle et le ot dj aect.
Exemple 44 (Parc Seervada). Continuons avec lexemple 38, mais en considrant prsent un graphe orient,
comme sur la Figure 5.7. Supposons quen priode de grande auence, nous disposions dune otte dautobus pour
faire visiter les dirents postes dobservation du parc. La rglementation limite le nombre dautobus pouvant circuler
sur chaque tronon de route. Comment faire circuler les autobus dans le parc de faon maximiser le nombre total
dautobus allant de lorigine (O) la destination (T) ?
A
O
C
B D
E
T
2
5
4
2
7
4
3
1
5
1
7
4
Figure 5.7 Parc Seervada
Exemple: nous avons aect 5 units de ot sur larc (O,B), de capacit 7.
O B
7 0
O B
2 5
Interprtation du graphe rsiduel: nous avons aect 5 units de ot sur larc (O, B). Si nous traverse O B,
2 est la capacit rsiduelle et le ot sur (O, B) vaut 5. Si nous traverse B O, la capacit rsiduelle est 5 et le ot
sur (B, O) vaut 2.
Un chemin daugmentation est un chemin allant de la source au puits dans le graphe orient driv du graphe
rsiduel. Pour chaque arte i, j, larc (i, j) possde une capacit rsiduelle u
ij
x
ij
, et larc (j, i) possde une
capacit rsiduelle x
ij
. Chaque arc du chemin possde une capacit rsiduelle strictement positive. La capacit
rsiduelle dun chemin daugmentation est le minimum des capacits rsiduelles de tous les arcs du chemin.
72 CHAPITRE 5. RSEAUX
5.5.1 Algorithme de Ford-Fulkerson
Algorithm 5.3: Ford-Fulkerson
1. Initialiser le ot: 0 unit sur chaque arc.
2. Si aucun chemin daugmentation ne peut tre identi, arrter: le ot est maximum.
3. Identier un chemin daugmentation P ; soit c sa capacit rsiduelle.
4. Sur chaque arc de P
(a) augmenter le ot de c ;
(b) diminuer la capacit rsiduelle de c.
5. Retourner ltape 2.
Algorithm 5.4: I dentier un chemin daugmentation
1. Marquer la source O (aucun autre sommet nest marqu) ; tous les sommets sont non visits.
2. Sil ny a aucun sommet marqu non visit, arrter: il nexiste aucun chemin daugmentation.
3. Choisir un sommet marqu non visit i.
4. Visiter i: pour chaque (i, j) de capacit rsiduelle strictement positive dans le graphe orient driv du
graphe rsiduel, marquer j.
5. Si T est marqu, arrter: un chemin daugmentation a t identi.
6. Retour ltape 2.
Exemple 45 (Parc Seervada: suite).
0. Le graphe rsiduel initial est reprsent sur la Figure 5.8.
O
7
5
4
A
3
0
1
C 0
0
4
B
0 4
0
2
5
D
0
0
0
9
E
0
0
6
1
T
0
0
Figure 5.8 Parc Seervada: initialisation.
1. Nous pouvons identier le chemin daugmentation O B E T. La capacit rsiduelle vaut alors
min7, 5, 6 = 5. En suivant lalgorithme, nous augmentons le ot et diminuons la capacit rsiduelle de 5
units sur tous les arcs de O B E T, ce qui conduit au graphe de la Figure 5.9.
2. Nous pouvons prsent identier le chemin daugmentation O A D T, qui donne une capacit
rsiduelle de min5, 3, 9 = 3. Nous augmentons le ot et diminuons la capacit rsiduelle de 3 units sur
tous les arcs de O A D T, comme reprsent sur la Figure 5.10.
3. Nous avons le chemin daugmentation O A B D T, et la capacit rsiduelle min2, 1, 4, 6 = 1.
Augmentons le ot et diminuons la capacit rsiduelle de 1 unit sur tous les arcs de O A B D T,
pour obtenir la Figure 5.11.
5.5. PROBLME DU FLOT MAXIMUM 73
5
5
O
5
2
4
A
0
3
1
B
5
0
4
0
2
C 0
0
4
D
0
0 9
0
E
0
5
1
1
T
0
5
Figure 5.9 Parc Seervada: itration 1.
8
8
O
2
2
4
A
3
0
1
B
5
0
4
0
2
C 0
0
4
D
0
3 6
0
E
0
5
1
1
T
3
5
Figure 5.10 Parc Seervada: itration 2.
9
9
O
1
2
4
A
4
0
0
B
5
1
3
0
2
C 0
0
4
D
1
3 5
0
E
0
5
1
1
T
4
5
Figure 5.11 Parc Seervada: itration 3.
74 CHAPITRE 5. RSEAUX
4. Identions le chemin daugmentation O B D T, ce qui donne comme apacit rsiduelle min2, 3, 5 =
2. Nous augmentons le ot et diminuer la capacit rsiduelle de 2 units sur tous les arcs de O B D T,
ce qui conduite la Figure 5.12..
11
11
O
1
0
4
A
4
0
0
B
7
1
1
0
2
C 0
0
4
D
3
3 3
0
E
0
5
1
1
T
6
5
Figure 5.12 Parc Seervada: itration 4.
5. Prenons le chemin daugmentation O C E D T, avec comme capacit rsiduelle min4, 4, 1, 3 =
1. Ceci nous conduit augmenter le ot et diminuer la capacit rsiduelle de 1 unit sur tous les arcs de
O C E D T. Nous obtenons ainsi le graphe de la Figure 5.13.
12
12
O
1
0
3
A
4
0
0
B
7
1
1
0
2
C 1
0
3
D
3
3 2
1
E
1
5
0
1
T
7
5
Figure 5.13 Parc Seervada: itration 5.
6. Nous pouvons choisir le chemin daugmentation O C E T. La capacit rsiduelle est min3, 3, 1 = 1.
En augmentant le ot et en diminuant la capacit rsiduelle de 1 unit sur tous les arcs de O C E T,
nous obtenons la Figure 5.14.
7. Considrons le chemin daugmentation: O C E B D T, de capacit rsiduelle min2, 2, 5, 1, 2 =
1. Par consquent, nous augmenter le ot et diminuons la capacit rsiduelle de 1 unit sur tous les arcs de
O C E B D T, ce qui donne la Figure 5.15.
8. Il ny a plus aucun chemin daugmentation possible ; nous avons atteint le ot maximum, lequel est rparti
comme reprsent sur la Figure 5.16.
5.5.2 Flot maximum - Coupe minimum
Supposons que nous partitionnions lensemble des sommets en deux sous-ensembles X, Y . Une coupe est un
sous-ensemble darcs allant dun sommet de X vers un sommet de Y . La capacit dune coupe est la somme des
capacits des arcs de la coupe. Une coupe minimum est une coupe dont la capacit est minimum parmi toutes les
coupes possibles. Le thorme ot maxcoupe min dit que la valeur du ot maximum est gale la capacit dune
5.5. PROBLME DU FLOT MAXIMUM 75
13
13
O
1
0
2
A
4
0
0
B
7
1
1
0
2
C 2
0
2
D
3
3 2
1
E
2
5
0
0
T
7
6
Figure 5.14 Parc Seervada: itration 6.
14
14
O
1
0
1
A
4
0
0
B
7
1
0
1
2
C 3
0
1
D
4
3 1
1
E
3
4
0
0
T
8
6
Figure 5.15 Parc Seervada: itration 7.
14
14
O
A
C
B D
E
T
4
7
3
1
3
4
4
3
8
1
6
Figure 5.16 Parc Seervada: n.
76 CHAPITRE 5. RSEAUX
coupe minimum. Les sommets marqus lors de la dernire itration de lalgorithme de Ford-Fulkerson dnissent la
coupe minimum, comme illustr sur la Figure 5.17 pour lexemple du parc Seervada.
O
7
5
4
A
3
0
1
C 0
0
4
B
0 4
0
2
5
D
0
0
0
9
E
0
0
6
1
T
0
0
Figure 5.17 Parc Seervada: coupe minimum.
5.6 Problme de ot minimum
Plutt que de maximiser le ot sur le rseau, nous pourrions chercher trouver la faon la plus conomique
denvoyer un certain ot travers un rseau. Considrons un rseau de ot G(N, A), avec une source s N et un
puits t N. On veut envoyer le ux d de s t. Soient (i, j) le cot unitaire sur larte i, i, et f(i, j) le ot i, j.
Nous avons le problme linaire
min

i,jN
(i, j)f(i, j),
f(i, j) c
ij
,
f(i, j) = f(j, i),

kN
f(i, k) = 0, k ,= s, t,

kN
f(s, k) =

kN
f(k, t) = d.
5.7 Notes
Ce chapitre se base partiellement sur les notes de cours de Bernard Gendron, 2007. La section sur les plus cours
chemins repose galement sur du matriel de cours mis en ligne par Otfried Cheong.
Chapitre 6
Modles stochastiques
6.1 Concepts de base
Une exprience alatoire est une exprience dont le rsultat nest pas connu avec certitude. Supposons que tous
les rsultats possibles de cette exprience soient connus. Lespace dchantillonnage est cet ensemble de rsultats
possibles dune exprience alatoire.
Exemple 46 (Espace dchantillonnage).
Tirage dune pice de monnaie: = P, F.
Lancement dun d: = 1, 2, 3, 4, 5, 6.
Temps coul avant larrive dun premier client dans un magasin ouvert durant 8 heures, depuis sont ouver-
ture: = [0, 8].
Un vnement E est un sous-ensemble de lespace chantillonnage. Supposons que nous rptions lexprience
alatoire un grand nombre de fois (n), et que lvnement E se produise m fois. La probabilit associe lvnement
E peut tre approche comme
P[E]
m
n
.
Une dnition empirique de la probabilit de E est (en version frquentiste)
P[E] = lim
n
m
n
,
De manire plus formelle
Denition 1. P est une mesure de probabilit si
0 P[E] 1, pour tout E ;
P[] = 0 et P[] = 1 ;
P[E
1
E
2
] = P[E
1
] +P[E
2
], si E
1
et E
2
sont disjoints (i.e. E
1
E
2
= ).
Exemple 47. Tirage dune pice de monnaie: P[P] = P[F] = 0.5.
Loccurence un vnement E
1
se produit peut inuencer la probabilit dun autre vnement E
2
. Par exemple,
la probabilit quil pleuve demain (E
2
) est plus leve sil pleut aujourdhui (E
1
) que sil ne pleut pas. Si P[E
1
] > 0,
nous dnissons la probabilit conditionnelle associe lvnement E
2
, tant donn E
1
, comme:
P[E
2
[ E
1
] =
P[E
1
E
2
]
P[E
1
]
.
La probabilit conditionnelle jouit des proprits suivantes:
0 P[E
2
[ E
1
] 1 ;
P[ [ E
1
] = 0 et P[[ E
1
] = 1 ;
77
78 CHAPITRE 6. MODLES STOCHASTIQUES
P[E
2
UE
3
[ E
1
) = P[E
2
[ E
1
] +P[E
3
[ E
1
], si E
2
et E
3
sont disjoints.
Deux vnements E
1
et E
2
sont indpendants si
P[E
2
[ E
1
] = P[E
2
].
De manire alternative, nous pouvons utiliser les dnition suivantes:
P[E
1
[ E
2
] = P[E
1
]
P[E
1
E
2
] = P[E
1
]P[E
2
].
En gnral, nous postulons lindpendance de deux vnements pour se servir des dnitions ci-dessus, plutt que de
dduire lindpendance de deux vnements partir des dnitions. K vnements E
1
, E
2
,. . . , E
k
sont indpendants
si
P[E
1
E
2
. . . E
k
] = P[E
1
]P[E
2
] . . . P[E
k
].
6.2 Variable alatoire
Une variable alatoire X est une fonction qui associe une valeur numrique X(s) chaque lment s de lespace
dchantillonnage:
X : .
Il existe deux types principaux de variables alatoires:
variable alatoire continue: valeurs relles ;
variable alatoire discrte: valeurs entires ou nombre ni de valeurs.
Exemple 48 (Lancer de ds). Considrons lexprience alatoire du lancer de deux ds. Lespace dchantillonnage
est = (1, 1), (1, 2), . . . , (6, 6). Une variable alatoire X serait la somme des rsultats des deux ds. Ainsi, par
exemple,
P[X = 2] = P[s : X(s) = 2] = P[(1, 1)] =
1
36
;
P[X 4] = P[s : X(s) 4] = P[(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (3, 1)] =
6
36
=
1
6
.
La fonction de rpartition associe une variable alatoire X est dnie comme
F
X
(b) = P[X b] = P[s [ X(s) b],
Elle a comme proprits:
non dcroissante ;
lim
b
F
X
(b) = 0 et lim
b
F
X
(b) = 1 ;
P[a < X b] = F
X
(b) F
X
(a), vu que
s : X(s) b = s : X(s) a s : a < X(s) b.
Exemple 49 (Lancer de ds). Soit X la somme des rsultats des deux ds. Nous avons
F
X
(1) = P[X 1] = 0;
F
X
(2) = P[X 2] = P[X = 2] =
1
36
;
F
X
(4) = P[X 4] =
6
36
=
1
6
;
F
X
(12) = P[X 12] = 1.
6.2. VARIABLE ALATOIRE 79
6.2.1 Variables alatoires discrtes
La fonction de masse associe une variable alatoire X est dnie comme
P
X
(k) = P[X = k] = P[s : X(s) = k].
Pour une variable alatoire discrte, nous avons
F
X
(b) = P[X b] =

kb
P[X = k] =

Xb
P
X
(k).
aussi,
P[a < X < b] = F
X
(b) F
X
(a) P
X
(b).
Exemple 50 (Lancer de ds). Soit X la somme des rsultats des deux ds. Alors,
F
X
(2) = P[X 2] = P[X = 2] = P
X
(2) =
1
36
;
F
X
(4) = P[X 4] = P[X = 2] +P[X = 3] +P[X = 4] = P
X
(2) +P
X
(3) +P
X
(4) =
6
36
=
1
6
.
6.2.2 Variables alatoires continues
Une variable alatoire X est continue si sa fonction de rpartition peut tre reprsente ainsi:
F
X
(b) =
_
b

f
x
(x)dx.
La fonction sous lintgrale est appele fonction de densit et satisfait les conditions suivantes:
f
x
(x) 0, x;
_

f
x
(x)dx = 1
Si la fonction de densit est continue, alors elle est gale la drive de la fonction de rpartition:
f
X
(x) =
dF
X
dx
(x).
La fonction de masse prend toujours la valeur 0:
P
X
(x) = 0, x.
Pour tout intervalle de la forme < a, b >, nous avons galement
P[X < a, b >] =
_
b
a
f(x)dx = F
X
(b) F
X
(a).
6.2.3 Esprance mathmatique
Lesprance mathmatique (moyenne) associe une variable alatoire X est dnote E[X] et dnie comme
suit:
E[X] =
_

k
kP
X
(k) =

k
P[X = k] si X est discrte,
_

xf
X
(x)dx si X est continue.
Exemple 51 (Lancer de deux ds). Soit X la somme des rsultats des deux ds.
E[X] =

k
P[X = k] =

k=2
1
2
kP[X = k] = 7.
80 CHAPITRE 6. MODLES STOCHASTIQUES
Nous pouvons galement considrer lesprance dune fonction g(X). Si X est une variable alatoire discrte,
cela donne
E[g(X)] =

k
g(k)P
X
(k).
Pour une variable continue, nous aurons
E[g(X)] =
_
+

g(X)f
X
(x)dx.
En particulier, nous avons, si a et X, Y sont deux variables alatoires,
E[aX] = aE[X],
E[X +Y ] = E[X] +E[Y ].
6.2.4 Variance
La variance associe une variable alatoire X, dnote
2
(X), est dnie par la formule

2
(X) = E[X
2
] E[X]
2
= E[(X E[X])
2
].
Exemple 52 (Lancer de deux ds). Soit X la somme des rsultats des deux ds.

2
(X) = E[X
2
] E[X]
2
=

k
k
2
P[X = k] E[X]
2
5.833.
6.3 Loi de probabilit
Une loi de probabilit est un modle dune exprience alatoire. Elle est habituellement reprsente par la
fonction de rpartition dune variable alatoire. Si cette dernire est discrte, la loi de probabilit est dite discrte.
Une loi de probabilit discrte peut tre reprsente par sa fonction de masse. Si la variable alatoire est continue,
la loi de probabilit est dite continue, et peut tre reprsente par sa fonction de densit.
6.3.1 Loi de Bernouilli
Lespace dchantillonnalle se limite deux lments, dnots par exemple par = S, E. Nous dnissons la
variable alatoire X comme suit:
X(S) = 1 et X(E) = 0.
La fonction de masse est
P
X
(1) = p et P
X
(0) = 1 p,
o p est un paramtre. De manire quivalente, nous pouvons lcrire comme
P
X
(x) = p
x
(1 p)
1x
.
Nous avons de plus
E[X] = p et
2
(X) = p(1 p).
Par exemple, le tirage dune pice de monnaie suit une loi de Bernouilli, avec p=1/2.
6.3.2 Loi uniforme
Une variable alatoire continue X (qui prend ses valeurs dans lintervalle [a, b]) suit une loi uniforme (note
U[a, b]) si sa fonction de densit est:
f
X
(x) =
1
b a
, x [a, b].
Celle loi modlise lexprience alatoire consistant choisir au hasard un point de [a, b] (la probabilit de choisir un
point dans un sous-intervalle est proportionnelle la longueur de ce sous-intervalle).
Si X est une variable alatoire continue (quelconque), nous avons la proprit suivante:
F
X
(x) U[0, 1].
6.4. MODLES STOCHASTIQUES 81
6.3.3 Loi de Poisson
Une variable alatoire X suivant une loi de Poisson est une variable alatoire qui sert compter le nombre
dapparitions dun phnomne alatoire durant un intervalle de temps de longueur t. Il pourrait s agit par exemple
du nombre dappels reus par un tlphoniste. X a alors pour fonction de masse
P
X
(k) = P[X = k] =
t
k
e
t
k!
, k = 0, 1, 2, . . . ,
o reprsente le taux moyen.
Exemple 53 (Tlphoniste). Un tlphoniste reoit en moyenne 2 appels par minute ; quelle est la probabilit de
recevoir moins de 5 appels en 4 minutes ? Nous avons
P[X < 5] =
4

k=0
P
X
(k) =
4

k=0
8
k
e
8
k
0.1.
6.3.4 Loi exponentielle
Soit une variable alatoire X reprsentant le temps dattente entre deux apparitions du phnomne alatoire en
supposant que le nombre dapparitions durant un intervalle t suit une loi de Poisson de paramtre . La fonction
de rpartition vrie alors
1 F
X
(x) = P[X > x] = e
x
, x 0.
Il sagit de la loi exponentielle de fonction de densit:
f
X
(x) =
_
e
x
si x > 0,
0 sinon.
Lesprance mathmatique est:
E[X] =
1

.
Cest le taux moyen entre deux apparitions du phnomne alatoire.
6.4 Modles stochastiques
Un systme stochastique est un systme voluant de manire probabiliste dans le temps. Les exemples sont
nombreux, avec par exemple la temprature quotidienne ou un centre dappels tlphoniques. Un modle stochas-
tique est une reprsentation mathmatique dun systme stochastique. Nous verrons brivement deux cas classiques
de modles stochastiques: les processus stochastiques et les les dattente.
6.4.1 Processus stochastiques
Un processus stochastique est une suite de variables alatoires voluant dans le temps, que nous dnoterons
X
t
, t T. En gnral, T est un ensemble discret: T = 0, 1, 2, . . .. De plus, chaque variable alatoire peut prendre
une valeur parmi M + 1 tats: X
t
0, 1, . . . , M.
Exemple 54 (Prcipitations quotidiennes).
X
t
=
_
1 sil y a des prcipitations,
0 sil ny a pas de prcipitations.
82 CHAPITRE 6. MODLES STOCHASTIQUES
6.4.2 Chanes de Markov
Un processus stochastique est une chane de Markov sil possde la proprit markovienne:
P[X
t+1
= j [ X
0
= k
0
, X
1
= k
1
, . . . , X
t1
= k
t1
, X
t
= i] = P[X
t+1
= j [ X
t
= i].
Cette proprit signie que la probabilit dun vnement futur, tant donn des vnements passs et un tat au
temps prsent, ne dpend pas du pass, mais uniquement de ltat actuel. La probabilit de transition entre les
tats i et j est dnie comme
p
ij
= P[X
t+1
= j [ X
t
= i].
Cette probabilit de transition est dite stationnaire si:
P[X
t+1
= j [ X
t
= i] = P[X
1
= j [ X
0
= i], t = 1, 2, . . .
Puisquil sagit de probabilit, nous devons en outre avoir
p
ij
0, i, j 0, 1, . . . , M;
M

j=0
p
ij
= 1 0, i 0, 1, . . . , M.
A partir des probabilits de transition, nous pouvons construire
La matrice des transitions, ayant M + 1 ranges (les tats prsents) et M + 1 colonnes (les tats futurs),
chaque entre (i, j) de la matrice correspondant p
ij
.
Le graphe (ou diagramme) des transitions, ayant M + 1 sommets et tel quil y a un arc entre les tats i et j
si p
ij
> 0.
Exemple 55 (Prcipitations). Supposons que la probabilit quil ny ait pas de prcipitations Montral demain,
tant donn:
quil ny en a pas aujourdhui est 0.8 ;
quil y en a aujourdhui : 0.6.
Ces probabilits ne changent pas, mme si nous tenons compte de ce qui se passe avant aujourdhui. La proprit
markovienne est satisfaite:
P[X
t+1
= 0 [ X
0
= k
0
, X
1
= k
1
, . . . , X
t1
= k
t1
, X
t
= 0] = P[X
t+1
= 0 [ X
t
= 0]
P[X
t+1
= 0 [ X
0
= k
0
, X
1
= k
1
, . . . , X
t1
= k
t1
, X
t
= 1] = P[X
t+1
= 0 [ X
t
= 1]
Nous avons donc une chane de Markov dont les probabilits de transition sont:
p
00
= P[X
t+1
= 0 [ X
t
= 0] = 0.8,
p
10
= P[X
t+1
= 0 [ X
t
= 1] = 0.6.
Grce aux proprits des probabilits de transition, nous pouvons dduire celles qui manquent :
p
01
= P[X
t+1
= 1 [ X
t
= 0] = 1 0.8 = 0.2.
p
11
= P[X
t+1
= 1 [ X
t
= 1] = 1 0.6 = 0.4.
Ceci donne la matrice de transition:
[P] =
_
0.8 0.2
0.6 0.4
_
Le graphe de transition est quant lui reprsent sur la Figure 6.1.
Exemple 56 (March boursier). A la n de chaque jour, nous enregistre le prix de laction de Google au march
de WallStreet:
X
t
=
_
1 si le prix de laction na pas augment la n du jour t;
0 si le prix de laction a augment la n du jour t.
6.5. NOTES 83
0 1
0.2
0.6 0.8 0.4
Figure 6.1 Graphe de transition
Nous supposons de plus que la probabilit que le prix augmente demain tant donn quil a augment aujourdhui
est de 0.7, et quil na pas augment aujourdhui, 0.5. Nous avons une chane de Markov avec comme matrice de
transition:
[P] =
_
p
00
p
01
p
10
p
11
_
=
_
0.7 0.3
0.5 0.5
_
Supposons maintenant que la probabilit que le prix de laction augmente demain dpend non seulement de ce
qui est arriv aujourdhui, mais galement de ce qui est arriv hier. Le processus stochastique dni prcdemment
nest alors plus une chane de Markov. Nous pouvons nanmoins nous en sortir en introduisant un tat pour chaque
combinaison dtats possibles sur deux jours conscutifs. Nous dnissons alors le processus stochastique suivant,
o lindice t reprsente deux jours conscutifs:
X
t
=
_

_
0 si le prix de laction a augment hier et aujourdhui;
3 si le prix de laction na pas augment, ni hier, ni aujourdhui;
2 si le prix de laction a augment hier, mais pas aujourdhui;
1 si le prix de laction a augment aujourdhui, mais pas hier.
Remarquons quil est impossible de passer de ltat 0 au temps t ltat 1 au temps t + 1, car X
t
= 0, si le prix
augmente hier et aujourdhui, et X
t+1
= 1, si le prix augmente demain, mais pas aujourdhui. La probabilit que le
prix de laction augmente demain vaut
sil a augment hier et aujourdhui: 0.9 ;
sil a augment aujourdhui, mais pas hier: 0.6 ;
sil a augment hier, mais pas aujourdhui: 0.5 ;
sil na pas augment, ni hier, ni aujourdhui: 0.3.
La matrice de transition est
P =
_
_
_
_
0.9 0 0.1 0
0.6 0 0.4 0
0 0.5 0 0.5
0 0.3 0 0.7
_
_
_
_
6.5 Notes
Ce chapitre se base essentiellement sur les notes de cours de Bernard Gendron, 2007.
84 CHAPITRE 6. MODLES STOCHASTIQUES
Chapitre 7
Programmation dynamique
Supposons un problme dcompos en tapes. Chaque tape possde un certain nombre dtats correspondant
aux conditions possibles au dbut dune tape. A chaque tape, nous devons prendre une dcision qui associe
ltat courant ltat au dbut de la prochaine tape. Dans le cas dun problme doptimisation, la programmation
dynamique identie une politique optimale: une dcision optimale chaque tape pour chaque tat possible.
7.1 Principe doptimalit de Bellman
tant donn un tat courant, la politique optimale pour les tapes venir est indpendante des dcisions prises
aux tapes prcdentes. Lorsque ce principe est satisfait, nous pouvons recourir lapproche suivante pour rsoudre
un problme ayant N tapes:
identier une dcision optimale pour la dernire tape (N) ;
pour chaque tape n, de N 1 1: tant donn une politique optimale pour ltape n + 1, identier une
politique optimale pour ltape n au moyen dune relation de rcurrence.
Lorsque n = 1, nous obtenons une politique optimale pour le problme.
Nous utiliserons les notations suivantes:
N: nombre dtapes ;
n: indice de ltape courante ;
s
n
: tat au dbut de ltape n;
x
n
: variable de dcision associe ltape n;
f
n
(s
n
, x
n
): contribution des tapes n, n + 1,. . . , N la valeur de lobjectif lorsquon se trouve ltat s
n
au
dbut de ltape n, que la dcision est x
n
, et que des dcisions optimales sont prises par la suite ;
x

n
: solution optimale ltape n;
f

n
(s
n
) = f
n
(s
n
, x

n
) = minf
n
(s
n
, x
n
) ou maxf
n
(s
n
, x
n
).
A chaque itration de la mthode, on construira un tableau reprsentant
la liste des tats possibles ltape n;
les valeurs possibles de la variable x
n
;
la contribution la valeur de lobjectif f
n
(s
n
, x
n
) ;
la valeur optimale f

n
(s
n
) et la solution optimale x

n
.
s
n
x
n
= a x
n
= b x
n
= c f

n
(s
n
) x

n
1 f
n
(1, a) f
n
(1, b) f
n
(1, c) f

n
(1)
2 f
n
(2, a) f
n
(2, b) f
n
(2, c) f

n
(2)
Exemple 57 (Production-inventaire). Une compagnie doit fournir son meilleur client trois units du produit P
durant chacune des trois prochaines semaines. Les cots de production sont donns dans la Table 7.1. Le cot pour
chaque unit produite en temps supplmentaire est 100$ de plus que le cot par unit produite en temps rgulier. Le
cot unitaire dinventaire est de 50$ par semaine Au dbut de la premire semaine, il y a 2 units du produit dans
linventaire. La compagnie ne veut plus rien avoir dans son inventaire au bout des trois semaines. Combien doit-on
produire dunits chaque semaine an de rencontrer la demande du client, tout en minimisant les cots ?
85
86 CHAPITRE 7. PROGRAMMATION DYNAMIQUE
Semaine Production max, Production max, Cot unitaire,
temps rgulier temps supp. temps rgulier
1 2 2 300$
2 3 2 500$
3 1 2 400$
Table 7.1 Cots de production
Une tape correspond ici une semaine, N = 3, n = 1, 2, 3, et
s
n
, ltat au dbut de la semaine n, est le nombre dunits de produit dans linventaire ;
x
n
: nombre dunits produites lors de la semaine n;
s
n+1
= s
n
+x
n
3 (puisque nous devons livrer 3 units au client chaque semaine) ;
s
1
= 2 (puisquil y a 2 units au dbut).
Soient c
n
, le cot unitaire de production au cours de la semaine n, r
n
la production maximale en temps rgulier
pendant la semaine n, et m
n
la production maximale durant la semaine n. Le cot au cours de la semaine n est
p
n
(s
n
, x
n
) = c
n
x
n
+ 100 max(0, x
n
r
n
) + 50 max(0, s
n
+x
n
3).
Le cot total vaut ds lors
f
n
(s
n
, x
n
) = p
n
(s
n
, x
n
) +f

n+1
(s
n+1
),
et le cot optimal rpond la rcurrence
f

n
(s
n
) = minp
n
(s
n
, x
n
) +f

n+1
(s
n+1
) [ 3 s
n
x
n
m
n
.
Si n = 3, nous devons poser
f

4
(s
4
) = 0.
De plus,
s
4
= 0 = s
3
+x
3
3,
aussi
x
3
= 3 s
3
.
Calculons dabord les valeurs f

3
(s
3
) et x

3
. Nous obtenons le tableau
s
3
f
3
(s
3
, 3 s
3
) f

3
(s
3
) x

3
0 1400 1400 3
1 900 900 2
2 400 400 1
3 0 0 0
Voyons maintenant comment nous pouvons calculer les valeurs f

2
(s
2
) et x

2
, lorsque s
2
= 0. Nous devons avoir
x
2
3 (car nous devons livrer au moins 3 units du produit). Dautre part,
f
2
(0, 3) = p
2
(0, 3) +f

3
(0) = 1500 + 1400 = 2900,
f
2
(0, 4) = p
2
(0, 4) +f

3
(1) = 2150 + 900 = 3050,
f
2
(0, 5) = p
2
(0, 5) +f

3
(2) = 2800 + 400 = 3200,
f

2
(0) = minf
2
(0, 3), f
2
(0, 4), f
2
(0, 5) = f
2
(0, 3).
Par consquent, x

2
= 3. Nous procdons de la mme manire pour s
2
= 1, 2, 3.
s
2
x
2
= 0 x
2
= 1 x
2
= 2 x
2
= 3 x
2
= 4 x
2
= 5 f

2
(s
2
) x

2
0 - - - 2900 3050 3200 2900 3
1 - - 2400 2450 2600 2850 2400 2
2 - 1900 1950 2000 2250 2900 1900 1
3 1400 1450 1500 1650 2300 2950 1400 0
7.1. PRINCIPE DOPTIMALIT DE BELLMAN 87
Pour la premire tape (n = 1), nous avons s
1
= 2 (il y a 2 units au dpart dans linventaire). Nous devons donc
avoir x
1
1. De plus,
f
1
(2, 1) = p
1
(2, 1) +f

2
(0) = 300 + 2900 = 3200,
f
1
(2, 2) = p
1
(2, 2) +f

2
(1) = 650 + 2400 = 3050,
f
1
(2, 3) = p
1
(2, 3) +f

2
(2) = 1100 + 1900 = 3000,
f
1
(2, 4) = p
1
(2, 4) +f

2
(3) = 1550 + 1400 = 2950.
Par consquent, f

1
(2) = f
1
(2, 4) et x
1
= 4. Sous forme de tableau, cela donne:
s
1
x
1
= 1 x
1
= 2 x
1
= 3 x
1
= 4 f

1
(s
1
) x

1
2 3200 3050 3000 2950 2950 4
La politique optimale est donc:
x

1
= 4, x

2
= 0, x

3
= 3
donnant lieu s
2
= 3, s
3
= 0. Le cot total est f

1
(2) = 2950$.
Exemple 58 (Aectation de ressources). Trois quipes de recherche travaillent sur un mme problme avec chacune
une approche dirente. La probabilit que lquipe E
i
choue est P[E
1
] = 0.4, P[E
2
] = 0.6, P[E
3
] = 0.8. Ainsi,
la probabilit que les trois quipes chouent simultanment est: (0.4)(0.6)(0.8) = 0.192. Nous voulons ajouter deux
autres scientiques an de minimiser la probabilit dchec. A quelles quipes faut-il aecter ces deux scientiques
an de minimiser la probabilit dchec ? La Table 58 reprsente les probabilits dchec pour chaque quipe en
fonction du nombre de scientiques ajouts.
Scientiques ajouts E
1
E
2
E
3
0 0.4 0.6 0.8
1 0.2 0.4 0.5
2 0.15 0.2 0.3
Table 7.2 Aectation de ressources.
Nous faisons correspondre lquipe n ltape n, pour n = 1, 2, 3 (N = 3). Ltat s
n
est le nombre de scientiques
non encore aects. La dcision x
n
correspond au nombre de scientiques aects lquipe E
n
. Soit p
n
(x
n
) la
probabilit dchec de lquipe E
n
si x
n
scientiques lui sont aects. Alors,
f
n
(s
n
, x
n
) = p
n
(x
n
).f

n+1
(s
n
x
n
)
f

n
(s
n
) = minf
n
(s
n
, x
n
) [ x
n
= 0, 1, . . . , s
n
,
avec f

4
(0) = 1. Calculons dabord f

3
(s
3
) et x

3
. Nous devons avoir s
3
= x
3
(nous aectons tous les scientiques
non encore aects), de sorte que nous avons le tableau
s
3
f
3
(s
3
, s
3
) f

3
(s
3
) x

3
0 0.8 0.8 0
1 0.5 0.5 1
2 0.3 0.3 2
Pour calculer les valeurs f

2
(s
2
) et x

2
, lorsque s
2
= 1, observons dabord que nous devons avoir x
2
1. Nous avons
f
2
(1, 0) = p
2
(1, 0) f

3
(1) = 0.6 0.5 = 0.3,
f
2
(1, 1) = p
2
(1, 1) f

3
(0) = 0.4 0.8 = 0.32,
f
2
(1) = minf
2
(1, 0), f
2
(1, 1) = f
2
(1, 0).
Ds lors, x

2
= 0. Nous pouvons procder de mme pour s
2
= 0 et 2. Ceci donne le tableau ci-dessous.
88 CHAPITRE 7. PROGRAMMATION DYNAMIQUE
s
2
x
2
= 0 x
2
= 1 x
2
= 2 f

2
(s
2
) x

2
0 0.48 - - 0.48 0
1 0.3 0.32 - 0.3 0
2 0.18 0.2 0.16 0.16 2
Pour la dernire tape (n = 1), nous avons s
1
= 2 (il y a 2 scientiques aecter). Nous avons
f
1
(2, 0) = p
1
(2, 0).f

2
(2) = 0.4 0.16 = 0.064,
f
1
(2, 1) = p
1
(2, 1).f

2
(1) = 0.2 0.3 = 0.06,
f
1
(2, 2) = p
1
(2, 2).f

2
(0) = 0.15 0.48 = 0.072.
Aussi, f

1
(2) = f
1
(2, 1) et x

1
= 1.
s
1
x
1
= 0 x
1
= 1 x
1
= 2 f

1
(s
1
) x

1
0 0.064 0.06 0.072 0.06 1
La politique optimale est donc : x
1

=
1 (do s
2
= 1), x

2
= 0 (do s
3
= 1), x

3
= 1. La probabilit dchec est:
f

1
(1) = 0.06.
7.2 Aectation de ressources
La programmation dynamique est souvent utilise pour rsoudre des problmes daectation de ressources.
Ctait le cas dans notre dernier exemple, o il y avait une ressource aecter (les scientiques). Que faire lorsquil
y a plus dune ressource ? Dans ce cas, chaque tat est un vecteur dont chaque coordonne i reprsente la quantit
de la ressource i non encore aecte.
Exemple 59 (problme Wyndor Glass). Nous considrons deux types de produits (produit 1, produit 2) et trois
usines (usine 1, usine 2, usine 3). La ressource i est la capacit de production pour lusine i, exprime en heures
par semaine. Nous connaissons le prot par lot (20 units) de chaque produit, et chaque lot du produit 1 (2) est
le rsultat combin de la production aux usines 1 et 3 (2 et 3). Nous souhaitons dterminer le taux de production
pour chaque produit (nombre de lots par semaine) de faon maximiser le prot total. Les donnes sont reproduites
dans la Table 59. Ltape n sera le produit n, n = 1, 2 (N = 2). Nous avons comme tat s
n
(R
1
, R
2
, R
3
)
n
, o R
i
Produit 1 (temps de Produit 2 (temps de Capacit de
production, h/lot) production, h/lot) production (h)
Usine 1 1 0 4
Usine 2 0 2 12
Usine 3 3 2 18
Prot($)/lot 3000 5000
Table 7.3 Allocation de ressources pour le problme Wyndor Glass
est la quantit de la ressource i (temps de production lusine i) non encore aecte. La dcision x
n
est le nombre
de lots du produit n, et
f
n
(s
n
, x
n
) = c
n
x
n
+f

n+1
(s
n+1
) (f

3
(s
3
) = 0),
f

2
(s
2
) = max5x
2
[ 2x
2
12, 2x
2
18 3x
1
, x
2
0
f

1
(s
1
) = max3x
1
+f

2
(s
2
) [ x
1
4, 3x
1
18, x
1
0
De plus,
s
1
= (4, 12, 18), s
2
= (4 x
1
, 12, 18 3x
1
).
An de rsoudre le problme, nous cherchons dabord f

2
(s
2
) et x

2
. Nous avons
f

2
(s
2
) = max5x
2
[ 2x
2
12, 2x
2
18 3x
1
, x
2
0.
7.2. AFFECTATION DE RESSOURCES 89
Les contraintes
2x
2
12 et 2x
2
18 3x
1
impliquent
x
2
min
_
6,
18 3x
1
2
_
.
Par consquent
f

2
(s
2
) = max
_
5x
2
[ 0 x
2
min
_
6,
18 3x
1
2
__
,
et
x

2
= min
_
6,
18 3x
1
2
_
. (7.2.1)
Nous avons donc
f

2
(s
2
) = 5 min
_
6,
18 3x
1
2
[ 3x
1
18
_
.
Calculons maintenant f

1
(s
1
) et x

1
. Nous avons
f

1
(s
1
) = max3x
1
+f

2
(s
2
) [ x
1
4, 3x
1
18, x
1
0.
Or,
x
1
4
implique
3x
1
18.
Ainsi
f

1
(s
1
) = max
_
3x
1
+ 5 min
_
6,
18 3x
1
2
_
[ 0 x
1
4
_
.
Or,
min
_
6,
18 3x
1
2
_
=
_
6 si 0 x
1
2,
183x1
2
si 2 x
1
4.
Par consquent,
f

1
(s
1
) = maxf
1
(s
1
, x
1
) [ 0 x
1
4,
avec
f
1
(s
1
, x
1
) =
_
3x
1
+ 30 si 0 x
1
2,
45
9
2
x
1
si 2 x
1
4.
Le maximum est atteint en x

1
= 2 et f

1
(s
1
) = 36.
Comme, de (7.2.1),
x

2
= min
_
6,
18 3x
1
2
_
,
et x

1
= 2, nous avons x

2
= 6. La politique optimale est donc: x

1
= 2, x

2
= 6 de valeur f

1
(s
1
) = 36.
En utilisant la mme approche, il est possible de rsoudre par la programmation dynamique des modles o
lobjectif ou les contraintes sont non linaires ;
certaines variables sont entires.
90 CHAPITRE 7. PROGRAMMATION DYNAMIQUE
7.3 Programmation dynamique dterministe et plus court chemin
Supposons que pour s
1
x, nous voulions rsoudre
min
0,...,
N1
g
N
(x
N
) +
N1

k=1
g
k
(s
k
, x
k
).
Nous pouvons calculer les dcisions optimales x
1
, . . . , x
N
ds le dpart, car aucune nouvelle information nest
obtenue en cours de route. Si les ensembles dtats et de dcisions sont nis chaque tape, rsoudre ce problme
quivaut trouver un plus court chemin dans un rseau, o les noeuds sont tous les tats (k, s
k
) possibles, pour
1 k N, auxquels nous ajoutons un noeud articiel t qui correspond ltat o tout est termin (tape N + 1).
Pour chaque noeud (k, s
k
), k < N, et chaque dcision x
k
, nous introduisons un arc de longueur g(s
k
, x
k
) partant
du noeud (k, s
k
) et allant au noeud (k + 1, s
k+1
), avec s
k+1
= g
k
(s
k
, x
k
). Chaque noeud (N, s
N
) est reli au noeud
t par un arc de longueur g(x
N
). Nous cherchons alors un plus court chemin de (0, s
0
) t.
. . .
. . .
. . .
St age 0 St age 1 St age 2 St age N - 1 St age N
Initial State
s
t
Artificial Terminal
Node
Terminal Arcs
with Cost Equal
to Terminal Cost
. . .
Si on numrote les noeuds couche par couche, par ordre croissant de valeur de k, on obtient un rseau sans cycle
et ordonn topologiquement (i.e., un arc (i, j) ne peut exister que si i < j). Dans le cas o il nest pas ncessaire
de mmoriser le numro dtape, on peut simplier le rseau en agrgeant des noeuds. Le rseau rsultant peut
ne plus tre ordonn topologiquement. Inversement, tout problme de recherche dun plus court chemin dans un
rseau peut se formuler comme un problme de programmation dynamique dterministe (avec des cots additifs
entre tapes).
7.4 Cas probabiliste
Dans la programmation dynamique probabiliste, la dcision optimale ltape n dpend de la loi de probabilit
de ltat ltape n + 1. Ainsi, nous passerons de ltape n ltape n + 1, se retrouvant ainsi dans ltat i, avec
une probabilit p
i
. Etant donn S tats ltape n + 1, nous aurons p
i
0 et
S

i=1
p
i
= 1.
La relation de rcurrence dpend de cette loi de probabilit et de lobjectif optimiser.
Exemple 60 (Jeu de hasard). Le jeu consiste miser un nombre quelconque de jetons. Si nous gagnons, nous
remportons le nombre de jetons miss. Si nous perdons, nous perdons le nombre de jetons miss. Un statisticien
croit pouvoir gagner chaque jeu avec une probabilit gale 2/3. Ses collgues parient avec lui quen misant au
dpart 3 jetons, il aura moins de 5 jetons aprs 3 parties. Combien de jetons miser chacune des 3 parties ?
Le modle peut se formuler comme suit: ltape n correspond la partie n, n = 1, 2, 3 (N = 3). Ltat s
n
est
le nombre de jetons au dbut de la partie n, et la dcision x
n
correspond au nombre de jetons parier la partie
n. Nous souhaitons maximiser la probabilit davoir au moins 5 jetons aprs 3 parties. Soit f
n
(s
n
, x
n
) la probabilit
de terminer avec au moins 5 jetons, tant donn que nous sommes dans ltat s
n
ltape n, que nous misons x
n
jetons et que nous eectuons des dcisions optimales aux tapes n + 1, . . . , N. Nous avons
f

n
(s
n
) = maxf
n
(s
n
, x
n
) [ x
n
= 0, 1, . . . , s
n
.
tant donn que nous dans ltat s
n
ltape n et que nous misons x
n
jetons, nous pouvons:
7.4. CAS PROBABILISTE 91
perdre et se retrouver dans ltat s
n
x
n
avec une probabilit 1/3 ;
gagner et se retrouver ltat s
n
+x
n
avec une probabilit 2/3.
Nous avons la fonction de rcurrence
f
n
(s
n
, x
n
) =
1
3
f

n+1
(s
n
x
n
) +
2
3
f

n+1
(s
n
+x
n
).
De plus,
f

4
(s
4
) =
_
0 si s
4
< 5,
1 si s
4
5.
Calculons dabord f

3
(s
3
) et x

3
. Nous avons le tableau
s
3
x
3
= 0 x
3
= 1 x
3
= 2 x
3
= 3 x
3
= 4 f

3
(s
3
) x

3
0 0 - - - - 0 0
1 0 0 - - - 0 0
2 0 0 0 - - 0 0
3 0 0
2
3
2
3
-
2
3
2
4 0
2
3
2
3
2
3
2
3
2
3
1
5 1 1 0
Voyons maintenant comment nous pouvons calculer les valeurs f

2
(s
2
) et x

2
, lorsque s
2
= 3. Il est clair que
nous devons avoir x
2
3. De plus,
f
2
(3, 0) =
1
3
f

3
(3) +
2
3
f

3
(3) =
2
3
;
f
2
(3, 1) =
1
3
f

3
(2) +
2
3
f

3
(4) =
4
9
;
f
2
(3, 2) =
1
3
f

3
(1) +
2
3
f

3
(5) =
2
3
;
f
2
(3, 3) =
1
3
f

3
(0) +
2
3
f

3
(6) =
2
3
.
Ainsi,
f

2
(3) = maxf
2
(3, 0), f
2
(3, 1), f
2
(3, 2), f
2
(3, 3) = f
2
(3, 0).
Ds lors, x

2
= 0, 2 ou 3. De la mme faon, pour s
2
, nous avons le tableau,
s
2
x
2
= 0 x
2
= 1 x
2
= 2 x
2
= 3 x
2
= 4 f

2
(s
2
) x

2
0 0 - - - - 0 0
1 0 0 - - - 0 0
2 0
4
9
4
9
- -
4
9
1, 2
3
2
3
4
9
2
3
2
3
-
2
3
0, 2, 3
4
2
3
8
9
2
3
2
3
2
3
8
9
1
5 1 1 0
Pour la premire tape (n = 1), nous avons s
1
= 3, comme nous pouvons aecter 3 jetons au dpart du jeu. Ceci
donne le tableau
s
1
x
1
= 0 x
1
= 1 x
1
= 2 x
1
= 3 f

1
(s
2
) x

1
3
2
3
20
27
2
3
2
3
20
27
1
92 CHAPITRE 7. PROGRAMMATION DYNAMIQUE
Ds lors
f
1
(3, 0) =
1
3
f

2
(3) +
2
3
f

2
(3) =
2
3
,
f
1
(3, 1) =
1
3
f

2
(2) +
2
3
f

2
(4) =
20
27
,
f
1
(3, 2) =
1
3
f

2
(1) +
2
3
f

2
(5) =
2
3
,
f
1
(3, 3) =
1
3
f

2
(0) +
2
3
f

2
(6) =
2
3
,
et par consquent,
f

1
(3) = maxf
1
(3, 0), f
1
(3, 1), f
1
(3, 2), f
1
(3, 3) = f
1
(3, 1).
Nous en dduisons
x

1
= 1.
La politique optimale est donc :
x

1
= 1 ;
Si nous gagnons (s
2
= 4), x

2
= 1.
Si nous gagnons (s
3
= 5), x

3
= 0.
Si nous perdons (s
3
= 3), x

3
= 2 ou 3.
Si nous perdons (s
2
= 2), x

2
= 1 ou 2.
Si nous gagnons (s
3
= 3 ou 4), x

3
= 2 ou 3 (si x

2
= 1) ou 1 x

3
4 (si x

2
= 2).
Si nous perdons (s
3
= 1 ou 0), x

3
0 (mais le pari est perdu !).
7.5 Notes
Ce chapitre se base essentiellement sur les notes de cours de Bernard Gendron, 2007. Le lien avec les plus courts
chemins est tir du cours IFT6521 (Pierre LEcuyer, Fabian Bastin).
Chapitre 8
Simulation
8.1 Introduction
Simuler un systme stochastique consiste imiter son comportement pour estimer sa performance Un modle
de simulation est une reprsentation du systme stochastique permettant de gnrer un grand nombre dvnements
alatoires et den tirer des observations statistiques.
Exemple 61 (Jeu de hasard). Chaque partie consiste tirer une pice de monnaie jusqu ce que la dirence
entre le nombre de faces et le nombre de piles soit gale 3. Chaque tirage cote 1$, et chaque partie joue rapporte
8$ au joueur. Nous aurons par exemple les jeux
FFF: gain de 8$-3$=5$ ;
PFPPP: gain de 8$-5$=3$ ;
PFFPFPFPPPP: perte de 8$-11$=3$.
Nous nous demandons par consquent sil est intressant de jouer. Pour rpondre cette question, nous allons
simuler le jeu. Il y a deux faons de le faire:
nous pouvons jouer pendant un certain temps sans miser dargent ;
nous pouvons simuler le jeu par ordinateur.
Nanmoins, simuler une seule partie ne nous aide pas prendre une dcision. Pour cela, il faudrait voir ce qui se
passe sur un grand nombre de parties et mesurer le gain moyen (ou la perte moyenne).
Dans cet exemple, nous pouvons dnir les lments dun modle de simulation comme suit
systme stochastique : tirages successifs ;
horloge : nombre de tirages ;
dnition de ltat du systme : N(t), le nombre de faces moins le nombre de piles aprs t tirages ;
vnements modiant ltat du systme : tirage de pile ou de face ;
mthode de gnration dvnements : gnration dun nombre alatoire uniforme ;
formule de changement dtat : N(t + 1) = N(t) + 1, si F est tire ; N(t) 1, si P est tire ;
performance : 8 t, lorsque N(t) atteint +3 ou -3.
8.2 Files dattente
8.2.1 Concepts de base
Un systme de le dattente consiste dun ou de plusieurs serveurs qui fournissent un service dune certaine
nature des clients qui se prsentent, et qui sont issus dune population donne. Les clients qui arrivent et trouvent
tous les serveurs occups rejoindront (gnralement) une ou plusieurs les (ou lignes) devant les serveurs, do la
qualication de le dattente. . Quelques exemples de les dattente sont repris dans la Table 8.1. Le systme de le
dattente est caractris par trois composants:
1. le processus darrive ;
93
94 CHAPITRE 8. SIMULATION
systme Serveurs Clients
Banque Guichets Clients
Hpital Docteurs, inrmires, lits Patients
Systme informatique Units centrales, dispositifs I/O Travaux
Manufacture Machines, travailleurs Composants
Centre dappel Serveurs Appels entrants
Table 8.1 Exemples de les dattente
2. le mcanisme de service ;
3. la discipline de le.
Spcier le processus darrive pour un systme de le dattente revient dcrire comment les clients arrivent
dans le systme. Soit A
i
le temps dinter-arrives entre les arrives des (i 1)
e
et i
e
clients. Si A
1
, A
2
, . . ., sont
supposs tre des variables i.i.d., nous dnoterons le temps dinterarrive moyen (ou espr) par E[A] et appellerons
= 1/E[A] le taux darrive des clients.
Le mcanisme de service pour un systme de le dattente est articul en spciant le nombre de serveurs
(dnot par s), o chaque serveur a sa propre le ou au contraire une seule le alimente tous les serveurs, et la
distribution de probabilit des temps de service des clients. Soit S
i
le temps de service du i
e
client. Si S
1
, S
2
, . . .,
sont des variables alatoires i.i.d., nous dnoterons le temps de service moyen dun client par E[S] et appelleront
= 1/E[S] le taux de service dun serveur.
Nous parlerons de situation transitoire lorsque ltat du systme dpend grandement de la situation initiale et
du temps coul, et de situation dquilibre lorsque ltat du systme peut tre considr indpendant de la situation
initiale et du temps coul. En situation dquilibre, nous avons la formule de Little:
L = W,
o L est le nombre moyen de clients dans le systme, , le taux moyen darrive des nouveaux clients, et W le temps
moyen dans le systme.
8.2.2 Modle M/M/1
Il sagit du modle de le dattente le plus courant, avec les caractristiques suivantes:
le dattente: nombre inni de clients ;
stratgie de service: premier arriv, premier servi (FIFO) ;
un seul serveur ;
les taux darrive et de service obissent des lois de Poisson. De manire quivalente, le temps entre larrive
de deux clients successifs et le temps de service obissent des lois exponentielles: on parle de processus
Markoviens.
La notation gnrale pour les modles de le dattente est X/Y/s, o X reprsente la loi du temps dinterarrive,
Y est la loi du temps de service, et s donne le nombre de serveurs.
Exemple 62 (File dattente M/M/1). En situation dquilibre, plusieurs rsultats analytiques (obtenus par analyse
du modle mathmatique) existent. Soit le taux moyen darrive et le taux moyen de service. Supposons que
< Le nombre moyen de clients dans le systme vaut
L =


.
Le temps moyen dattente dans le systme vaut quant lui
W =
1

.
Il est ais de vrier ces rsultats par simulation. Dans le cas prsent, les lments de la simulation sont:
8.2. FILES DATTENTE 95
systme stochastique : le dattente M/M/1 ;
horloge : temps coul ;
dnition de ltat du systme : N(t), le nombre de clients dans le systme au temps t ;
vnements modiant ltat du systme : arrive ou n de service dun client ;
formule de changement dtat : N(t + 1) = N(t) + 1, si arrive ; N(t) 1, si n de service.
Nous allons voir deux mthodes pour tudier levolution du systme dans le temps:
par intervalles de temps xe ;
par gnration dvnement.
Nous supposerons que les valeurs des paramtres de notre systme sont = 3 clients par heure, et = 5 clients
par heure.
Dans le cas dintervalles de temps xe, lide est
1. faire couler le temps dun petit intervalle t ;
2. mettre jour le systme en dterminant les vnements qui ont pu se produire durant lintervalle t, et
recueillir linformation sur la performance du systme ;
3. retourner en 1.
Ici, les vnements sont soit des arrives, soit des dparts (ns de service). Si t est susamment petit, nous
pouvons considrer quil ne se produira quun seul vnement (arrive ou dpart) durant cet intervalle de temps.
Prenons t gal 0.1 heure (6 minutes). La probabilit quil y ait une arrive durant cet intervalle de temps
vaut:
P
A
= 1 e
t
= 1 e
3/10
0.259.
La probabilit quil y ait un dpart durant cet intervalle de temps est:
P
D
= 1 e
t
= 1 e
5/10
0.393.
Pour gnrer un vnement, nous pouvons simplement tirer deux nombres alatoires selon une loi U[0, 1]. Si le
premier nombre est strictement plus petit que 0.259, nous aurons une arrive. Si le deuxime nombre est strictement
infrieur 0.393, nous considrerons un dpart (si un client tait en cours de service). Ceci pourrait par exemple
donner les chires de la Table 8.2.
t (min) N(t) Nombre 1 Arrive Nombre 2 Dpart
0 0
6 1 0.096 Oui -
12 1 0.569 Non 0.665 Non
18 1 0.764 Non 0.842 Non
24 1 0.492 Non 0.224 Oui
30 0 0.950 Non -
36 0 0.610 Non -
42 1 0.145 Oui -
48 1 0.484 Non 0.552 Non
54 1 0.350 Non 0.590 Non
60 0 0.430 Non 0.041 Oui
Table 8.2 Simulation par intervalles de temps xe.
Daprs cet exemple, il est possible destimer les performances du systme. Que se passe-t-il si nous voulons
mesurer W, le temps moyen pass dans le systme ? Nous avons deux clients qui sont entrs dans le systme
et chacun y est rest 18 minutes ou 0.3 heures, aussi peut-on estimer W par 0.3. Pourtant, la vraie valeur est
W = 1/( ) = 0.5. Il faudrait un chantillon beaucoup plus grand, et ce dautant plus que nous devrions simuler
le systme en tat dquilibre.
La gnration dvnement peut se rsumer comme suit:
96 CHAPITRE 8. SIMULATION
1. faire couler le temps jusquau prochain vnement ;
2. mettre jour le systme en fonction de lvnement qui vient de se produire et gnrer alatoirement le temps
jusquau prochain vnement ; recueillir linformation sur la performance du systme ;
3. retourner 1.
Nous pourrions ainsi obtenir la suite dvnements reprise dans la Table 8.3.
t (min) N(T) Temps Temps Prochaine Prochain Prochain
dinterarrive de service arrive dpart vnement
0 0 2.019 - 2.019 - Arrive
2.019 1 16.833 13.123 18.852 15.142 Dpart
15.142 0 - - 18.852 - Arrive
18.852 1 28.878 22.142 47.730 40.994 Dpart
40.994 0 - - 47.730 - Arrive
47.730 1
Table 8.3 Simulation par vnements.
Si nous considrons une simulation comportant larrive de 10000 clients, les rsultats montrent que:
le nombre moyens de clients dans le systme est L 1.5 ;
le temps moyen dans le systme est W 0.5.
Remarque: des rsultats analytiques existent pour des modles simples (comme M/M/1), mais pas pour des les
dattente plus complexes.
8.3 Simulation vnements discrets
Lapproche sest impose dans nombre de problmes de simulations. Le principe gnral est rsum dans lordi-
nogramme de la Figure 8.1.
8.4 Notes
Ce chapitre se base essentiellement sur les notes de cours de Bernard Gendron, 2007. Pour plus de dtails sur
la simulation vnements discrets, nous renvoyons le lecteur aux notes du cours IFT3245, du mme auteur: .
8.4. NOTES 97
Initialisation
Horloge de
simulation
mise 0
Planication
du ou des pre-
miers(s) v-
nement(s)
Gestion de
lvnement
actuel
Planication
du ou des
vnements
en dcoulant.
Dpilement
du prochain
vnement et
avancement
de lhorloge
de simulation
Liste
dvnements
vide ?
Arrt
non
oui
Figure 8.1 Schma dune simulation vnements discrets.
98 CHAPITRE 8. SIMULATION
Annexe
8.5 Logiciels doptimisation
8.5.1 IOR Tutorial
Le logiciel IOR Tutorial, qui accompagne le livre Introduction to Operational Research [1] est disponible gratuite-
ment ladresse http://highered.mcgraw-hill.com/sites/0073017795/student_view0/ior_tutorial.html.
Le logiciel est fourni sous la forme dun excutable sous lenvironnement Microsoft Windows, et comme archive
Java pour les autres plate-formes. Il est par consquent utilisable sur la majorit des systmes actuels. Le logiciel
est intressant pour rapidement tester des programmes doptimisation simples, mais ne peut tre considr comme
un solveur part entire. Son interface graphique le rend nanmoins adapt pour une exprimentation rapide avec
les exemples introduits dans lecours.
8.5.2 GAMS
GAMS est lacronyme de Generalized Algebric Modeling System. Il sagit avant tout dun langage servant
la formulation et la rsolution de modle de programmation mathmatique. En pratique, il sagit dun paquetage
intgr qui permet de
spcier la structure du modle doptimisation ;
spcier et calculer les donnes qui entrent dans le modle ;
rsoudre ce modle ;
produire un rapport sur un modle ;
conduire une analyse comparative.
GAMS peut tre tlcharg ladresse http://www.gams.com. La licence de GAMS et des solveurs acadmique est
passablement levs, toutefois il est utilisable de manire gratuite en version de dmonstration, ce qui permettra
dillustrer certains concepts de base du cours.
Sous des environnements de type UNIX (incluant Mac OS X et la majorit des distributions Linux), GAMS
sutilise uniquement en ligne de commande. Sous Microsoft Windows, il dispose dune interface graphique.
Formulation dun problme simple
Exemple 63. Considrons le problme doptimisation linaire
max
x
109x
1
+ 90x
2
+ 115x
3
s.c. x
1
+x
2
+x
3
100;
6x
1
+ 4x
2
+ 8x
3
500;
x
1
, x
2
, x
3
0.
Le chier GAMS dcrivant se problme est constitu des parties suivantes:
1. spcication des variables ;
2. spcication des quations:
dclaration ;
spcication de la structure algbrique ;
99
100 ANNEXE
3. dnition du modle ;
4. dnition de la mthode de rsolution.
Ce problme peut tre formul sous GAMS comme suit:
VARIABLES
Z Variable Z;
POSITIVE VARIABLES
X1 Variable X1
X2 Variable X2
X3 Variable X3;
EQUATIONS
Equation1 Equation 1
Equation2 Equation 2
Equation3 Equation 3;
Equation1..
Z =E= 109*X1 + 90*X2 + 115*X3;
Equation2..
X1 + X2 + X3 =L= 100;
Equation3..
6*X1 + 4*X2 + 8*X3 =L= 500;
MODEL Example1 /ALL/;
SOLVE Example1 USING LP MAXIMIZING Z;
Remarquons dores et dj que chaque instruction se termine par un point-virgule. Leur omission produit une erreur
de compilation. Dtaillons les instructions.
Spcication des variables
GAMS exige que les variables soient identies. Dans lexemple prcdent, nous avons les variables Z, X1, X2,
X3:
VARIABLES
Z Variable Z;
POSITIVE VARIABLES
X1 Variable X1 (Optional Text)
X2 Variable X2
X3 Variable X3;
Pour tout modle construit avec GAMS, il convient didentier lobjectif laide dune variable, ici Z. Autrement
dit,
max
x
c
T
x
devient
max z
s.c. z = c
T
x,
Z = CX.
8.5. LOGICIELS DOPTIMISATION 101
Les noms de variables peuvent avoir jusqu 31 caractres. Il est galement possible de spcier plus prcisment le
type des variables:
VARIABLE variables non restreintes
POSITIVE VARIABLE variables non ngatives
NEGATIVE VARIABLE variables non positives
BINARY VARIABLE variables binaires (dans 0, 1)
INTEGER VARIABLE variables entires (naturelles)
Dnomination des quations
La spcication dune quation consiste en deux parties. Il convient tout dabord de dclarer ces quations:
GAMS exige du modlisateur de nommer chaque quation loeuvre dans le modle. Dans lexemple, les quations
sont dclares aprs le mot-cl EQUATIONS
EQUATIONS
Equation1 Equation 1
Equation2 Equation 2
Equation3 Equation 3;
Comme pour les variables, le nom dune quation peut prendre jusqu 31 caractres. A droite du nom de lquation
gure un (bref) texte dexplications.
Il nous faut de plus spcier la structure algbrique: aprs avoir nomm les quations, la structure algbrique
exacte doit tre spcie en utilisant la notation ..:
Equation1..
Z =E= 109*X1 + 90*X2 + 115*X3;
Equation2..
X1 + X2 + X3 =L= 100;
Equation3..
6*X1 + 4*X2 + 8*X3 =L= 500;
La forme algbrique exige lutilisation dune syntaxe speciale an de dnir la forme exacte de lquation:
=E= contrainte dgalit
=L= infrieur ou gal
=G= suprieur ou gal
Spcication du modle
Le mot-cl MODEL est utilis pour identier les modles rsoudre. Il convient de
1. donner un nom au modle (par exemple Example1) ;
2. spcier les quations inclure, entre des barres italiques / /.
Ceci donne pour notre exemple
MODEL Example1 /ALL/;
Nous pourrions aussi avoir
MODEL Example1 /Equation1, Equation2/;
102 ANNEXE
Spcication du solveur
Le mot-cl SOLVE indique GAMS dappliquer un solveur au modle nomm, en utilisant les donnes dnies
juste avant linstruction SOLVE. Ainsi, dans notre exemple, nous avions:
SOLVE Example1 USING LP MAXIMIZING Z;
Si nous avions aaire un problme linaire de minimisation, nous pourrions crire
SOLVE Example1 USING LP MINIMIZING Z;
En place de LP, nous devrions crire MIP pour traiter un problme de programmation entire mixte:
SOLVE Example1 USING MIP MAXIMIZING Z;
De mme, nous spcierons un problme non-linaire avec le mot-cl NLP:
SOLVE Example1 USING NLP MAXIMIZING Z;
Rapport de solution
A la n de lexcution, GAMS produit un rapport indiquant la solution trouve, la valeur de la fonction
objectif en cette solution, ainsi que direntes informations permettant danalyser le comportement de lalgorithme
doptimisation, et diverses proprits du problme en cours dtude. En particulier, le rsum de rapport donne le
nombre total de cas non optimaux, non ralisables et non borns rencontrs.
**** REPORT SUMMARY : 0 NONOPT
0 INFEASIBLE
0 UNBOUNDED
Linformation sur les solutions peut tre ache de direntes manires:
1. sortie standard de GAMS;
2. utilisation des commandes DISPLAY ;
3. rappports additionels sur base des valeurs des solutions.
La sortie standard de GAMS prsente la solution sous forme dun tableau, qui dans le cas de lexemple est:
LOWER LEVEL UPPER MARGINAL
---- EQU Equation1 . . . 1.000
---- EQU Equation2 -INF 100.000 100.000 52.000
---- EQU Equation3 -INF 500.000 500.000 9.500
Equation1 Equation 1
Equation2 Equation 2
Equation3 Equation 3
LOWER LEVEL UPPER MARGINAL
---- VAR Z -INF 9950.000 +INF .
---- VAR X1 . 50.000 +INF .
---- VAR X2 . 50.000 +INF .
---- VAR X3 . . +INF -13.000
Le point simple . reprsente un zro, tandis que INF reprsente linni.
8.5. LOGICIELS DOPTIMISATION 103
Sommations
La notation mathmatique

j
x
j
se traduira par
SUM(j,x(j))
En dautres termes, nous avons la syntaxe
SUM( index of summation, names(index))
Il est possible dimbriquer les sommations. Ainsi,

j

i
xji donnera
SUM(j,SUM(i,x(j,i))
ou encore
SUM((j,i),x(j,i))
Dnition densemble
Spcier les variables une une est vite fastidieux, pour ne pas dire irraliste (par exemple si nous avons un
million de variables), cest pourquoi en modlisation algbrique, nous utilisons des indices. GAMS met disposition
le mot cl SET pour dnir des ensembles, parcouru par un indice spci juste avant:
SET ItemName optional explanatory text for item
/ element1 optional explanatory text for element,
element2 optional explanatory text for element /
Par exemple,
SET i index /1*10/
dni lensemble 1, 2, . . . , 10, qui peut tre parcouru avec lindice i. Il est possible dassocier un autre indice au
mme ensemble au moyen de la commande ALIAS, par exemple
Exemple 64. ALIAS (i,j) ;
permet dutiliser j au lieu de i. Cette commande est utile par exemple pour traduire une contrainte de la forme
x
ij
+x
ji
= 1, i = 1, . . . , n, j = 1, . . . , n,
j et i doivent indicer le mme ensemble, mais crire
SET i / 1*10 /
j / 1*10 /
mnerait GAMS considrer i et j comme indexant deux ensembles.
Entre de donnes
Les donnes sont entres au moyen de quatre dirents types de commandes GAMS:
SCALAR , pour les lments ne dpendant pas densembles ;
PARAMETERS , pour les lments qui sont des vecteurs ;
TABLES , pour des lments de deux dimensions ou plus ;
PARAMETERS , en aectation directe.
La manire la plus simple dentre des donnes est lemploi de la commande SCALAR, qui prend la syntaxe suivante
dans le format basique:
SCALAR ItemName optional text / value /;
104 ANNEXE
Dans le cas de vecteurs, nous utiliserons la syntaxe
PARAMETER ItemName(Set) optional text;
/ element1 value,
element2 value /;
Pour les entres multidimensionnelles, nous aurons
TABLE ItemName(set1dep,set2dep) optional text
set2elem1 set2elem2
set1element1 value11 value12
set1element2 value12 value22 ;
Plutt que dutiliser des constantes, nous pouvons aecter les valeurs au moyen dexpressions mathmatiques:
PARAMETER ItemName(set1dep,set2dep) optional text;
ItemName(set1dep,set2dep) = some expression;
Lindice set2dep est optionnel.
Lexemple 63 peut ainsi se reformuler comme
SETS
i Variables / X1, X2, X3 /;
PARAMETERS
c(i) Costs / X1 109
X2 90
X3 115 /
a(i) Coeff / X1 6
X2 4
X3 8 /;
VARIABLES
Z Variable Z;
POSITIVE VARIABLES
x(i) Variables;
EQUATIONS
Equation1 Equation 1
Equation2 Equation 2
Equation3 Equation 3;
Equation1..
Z =E= sum(i, c(i)*x(i));
Equation2..
sum(i, x(i)) =L= 100;
Equation3..
sum(i, a(i)*x(i)) =L= 500;
MODEL Example1 /ALL/;
SOLVE Example1 USING LP MAXIMIZING Z;
8.6. NOTES 105
8.5.3 Autres logiciels
Les solutions logiciels retenues sont loin dtre les seules envisageables, et les choix sont volontairement orients
an de rpondre aux objectifs dun cours dintroduction, mais ne reprsentent pas forcment un choix optimal.
Il existe dautres langages de modlisation intressant (on pensera par exemple AMPL), dautres solveurs com-
merciaux ou gratuits. Nous nous dsinteresserons cependant des solveurs intgrs dans les tableurs, les algorithmes
proposs par dfaut dans ceux-ci tant en gnral de faible qualit, en particulier en optimisation non-linaire, et
limits dans le nombre de variables qui peuvent tre traits. Il est toutefois bon de noter que des outils existent
pour importer/exporter des donnes entre un tableur et des outils tels que GAMS.
8.6 Notes
La section sur GAMS sinspire partiellement du cours Applied Mathematical Programming donn par Bruce A.
McCarl lUniversit Texas A&M.
106 ANNEXE
Bibliographie
[1] Frederick S. Hillier et Gerald J. Lieberman. Introduction to Operations Research. McGraw-Hill, New York,
USA, seventh dition, 2001.
[2] Jerey C. Lagarias, James A. Reeds, Margaret H. Wright et Paul E. Wright. Convergence properties of the
Nelder-Mead simplex method in low dimensions. SIAM Journal on Optimization, 9(1):112147, 1998.
[3] Adam B. Levy. The Basics of Practical Optimization. SIAM, Philadelphia, USA, 2009.
[4] Ken I. M. McKinnon. Convergence of the Nelder-Mead simplex method to a nonstationary point. SIAM Journal
on Optimization, 9(1):148158, 1998.
[5] John A. Nelder et Roger Mead. A simplex method for function minimization. Computer Journal, 7:308313,
1965.
[6] Jorge Nocedal et Stephen J. Wright. Numerical Optimization. Springer, New York, NY, USA, 1999.
107

Vous aimerez peut-être aussi