Vous êtes sur la page 1sur 131

C.

Prins MT14 Recherche Oprationnelle Slide #1

UV MT14
Recherche Oprationnelle
Prof. Christian PRINS
Directeur du Labo d'Optimisation des Systmes Industriels
Institut Charles Delaunay et STMR (UMR CNRS 6279)
christian.prins@utt.fr

C. Prins MT14 Recherche Oprationnelle Slide #2

Avertissement
Les chapitres Programmation Linaire et Programmation
Linaire en Nombres Entiers, ainsi que de nombreux
exercices de TD sont tirs du livre :
Programmation linaire
de Christelle Guret, Christian Prins et Marc Sevaux,
Editions Eyrolles, Paris, 1re dition en 2002.
Lutilisation pour un usage personnel par les tudiants et
intervenants de MT14 a t autorise par les auteurs et
lditeur. Tout autre usage ainsi que la reproduction et la
diffusion des tiers sont interdits par les lois en vigueur.

C. Prins MT14 Recherche Oprationnelle Slide #3

Contenu prvisionnel de lUV


1. Introduction la Recherche Oprationnelle
2. Programmation linaire (PL) :
rsolution graphique puis algbrique, optimisation avec Excel
cas spciaux, dualit, analyse de sensibilit
3. Programmation linaire en nombres entiers (PLNE) :
problmes quivalents au PL relax, techniques de modlisation
mthodes de Dakin (PLNE) et de Balas (PL en 0-1)
4. Notions de programmation dynamique
5. Notions de programmation non linaire :
optimisation unidimensionnelle sans contraintes
optimisation multidimensionnelle sans contraintes
programmation non linaire sensu stricto (avec contraintes)

C. Prins MT14 Recherche Oprationnelle Slide #4

Evaluation
Devoir rendre (optimisation avec Excel) : 30%
Examen mdian :
35%
Examen final :
35%
Pas de note liminatoire, pas de rattrapage :
absence injustifie au mdian = note zro,
si absence justifie, le final compte pour 70%.
Absence justifie = motif recevable + preuve.
Me prvenir par e-mail + votre responsable de TD.
Conseils :
attention, UV demandant un travail soutenu !
suivre toujours le mme groupe de TD (si possible).

C. Prins MT14 Recherche Oprationnelle Slide #5

Chapitre 1
Introduction la
Recherche Oprationnelle

C. Prins MT14 Recherche Oprationnelle Slide #6

Gnralits
1. Dfinition
Recherche Oprationnelle ou RO
Operational Research (UK), Operations Research (USA)
Ensemble de mthodes et techniques pour prendre les
meilleures dcisions dans des problmes quantitatifs
complexes rencontrs dans les organisations : armes,
entreprises, gouvernements etc.

C. Prins MT14 Recherche Oprationnelle Slide #7

Gnralits
2. Historique
Kantorovich, ex-URSS, 1935 : planification des changes
agricoles entre rpubliques de lURSS.
Domaine militaire :
Blackett, UK, 1941 : o placer les premiers radars antiariens (trs chers) pour une couverture optimale de la
cte anglaise?
Dantzig, USA, 1943 : organisation de convois dans
lAtlantique Nord pour prparer le dbarquement en
Normandie.

C. Prins MT14 Recherche Oprationnelle Slide #8

Gnralits
2. Historique (suite et fin)
Extension aux entreprises vers 1960.
Le dveloppement a suivi les progrs de linformatique :

gestion de projet (mthodes PERT et des potentiels)


planification et ordonnancement de la production
placement optimal de relais de tlvision,
optimisation du transport,
choix dinvestissement etc.

La RO peut aussi sappliquer au secteur primaire (mines,


pches, forts, agriculture), aux services, aux hpitaux,
aux gouvernements etc.

C. Prins MT14 Recherche Oprationnelle Slide #9

Gnralits
3. Caractristiques des problmes rels traits
Macroscopiques, grands systmes : loptimisation dun
moteur relve de la mcanique, pas de la RO.
Quantitatifs : il faut des donnes numriques.
Rsoudre au mieux un conflit social nest pas de la RO!
Complexit : aspect combinatoire (grand nombre de
variables, de contraintes, de solutions diffrentes),
donnes nombreuses, souvent incompltes ou peu
prcises.

C. Prins MT14 Recherche Oprationnelle Slide #10

Gnralits
4. Deux types de problmes
Optimisation Exemple : livrer du fioul 10 clients.
Quelle est la tourne de longueur minimale ?
Le but est de trouver la meilleure solution pour un critre
donn. On peut avoir de trs nombreuses solutions, mais on
sait calculer trs vite le critre pour une solution donne.
Evaluation de performance Exemple : structure datelier.
Un atelier en ligne ou en U aura-t-il la meilleure productivit ?
Le critre est long calculer pour une solution donne : il faut
en gnral une mthode de simulation. On ne peut valuer
que quelques solutions et recommander la meilleure.

C. Prins MT14 Recherche Oprationnelle Slide #11

Gnralits
5. Les outils de la RO
Ils sont emprunts aux maths et linformatique :

programmation linaire et non linaire (MT14)


graphes, rseaux de Petri, processus alatoires (SY18)
simulation (SY15) et statistiques (SY02)
algorithmique.

Les calculs peuvent tre faits par des logiciels


doptimisation (Cplex, solveur dExcel) ou de simulation
(Arena), mais souvent il faut concevoir des algorithmes!

C. Prins MT14 Recherche Oprationnelle Slide #12

Droulement dune tude de RO


1. Analyser le problme
dlimiter le primtre de ltude avec le dcideur
spcifier le problme (variables, contraintes, critre)
recenser les donnes disponibles
Attention !

cest au dcideur de choisir le critre optimiser !


si facteurs humains, problme vraiment quantitatif ?
la collecte de donnes peut prendre 90% du temps.
fuir les tudes donnes trop floues ou incompltes !

C. Prins MT14 Recherche Oprationnelle Slide #13

Droulement dune tude de RO


2. Elaborer un modle (= modliser le problme)
On a souvent le choix entre diffrents modles : graphes,
rseaux de Petri, programmes linaires etc.

3. Elaborer une mthode de rsolution


Parfois inutile si on dispose dun logiciel adapt.

4. Tester la mthode
Comparer les rsultats la ralit et les montrer au dcideur.
Raffiner si ncessaire le modle (processus itratif).

5. Remise des conclusions au dcideur, en clair.

C. Prins MT14 Recherche Oprationnelle Slide #14

Chapitre 2
Programmation linaire

C. Prins MT14 Recherche Oprationnelle Slide #15

Notion de programme linaire


1. Exemple et ordre de conception
Une usine produit 2 ciments, rapportant 50$ et 70$/t. Pour 1
tonne de ciment 1, il faut 40 minutes de four et 20 minutes de
broyage. Pour 1 tonne de ciment 2, 30 minutes et 30 minutes.
Four et broyeur sont disponibles 6h et 8h par jour. Quelles
quantits faire chaque jour pour maximiser le bnfice ?
a) On dfinit dabord les variables :
x1 et x2 quantits de ciment 1 et 2 fabriquer,
domaine : rel (quantits continment divisibles),
signe : positif.
On crit donc : x1, x2 0.

C. Prins MT14 Recherche Oprationnelle Slide #16

Notion de programme linaire


1. Exemple et ordre de conception (suite)
b) Puis les contraintes :
Les contraintes viennent souvent de ressources limites :
argent, capacit des stocks, personnel, temps-machine etc.
On a ici deux ressources, un four et un broyeur.
Attention aux units de temps mlanges : heures et minutes.
Capacits (disponibilits) : 360 et 480 minutes.
Une tonne de ciment 1 prend 40 min et 20 min.
Les x1 et x2 tonnes fabriques vont prendre 40.x1 et 20.x2
Contrainte de disponibilit du four : 40.x1 + 30.x2 360.
Pour le broyeur, mme raisonnement : 20.x1 + 30.x2 480.

C. Prins MT14 Recherche Oprationnelle Slide #17

Notion de programme linaire


1. Exemple et ordre de conception (suite et fin)
b) Enfin le critre ou fonction-objectif ou fonction conomique
En dernier car unique. Ici cest le profit total : 50.x1 + 70.x2
On ajoute Max car on veut le maximiser : Max 50.x1 + 70.x2
b) Programme linaire complet (noter lordre de prsentation)
Max 50.x1 + 70.x2
40.x1 + 30.x2 360
20.x1 + 30.x2 480
x1, x2 0

fonction-objectif maximiser en 1er


contrainte de disponibilit du four
contrainte de disponibilit du broyeur
dfinition des variables en dernier

C. Prins MT14 Recherche Oprationnelle Slide #18

Notion de programme linaire


2. Forme gnrale et extensions
Programme mathmatique : modle d'optimisation d'une
fonction de plusieurs variables sous contraintes.
Programme linaire (PL) si la fonction et les contraintes sont
toutes des combinaisons linaires de variables :
n

(1)

Max ou Min z = c j xj
j =1

( 2) i = 1K m : aij x j , = ou bi
j =1

(3) j = 1K n : xj 0

C. Prins MT14 Recherche Oprationnelle Slide #19

Notion de programme linaire


2. Forme gnrale et extensions (suite)
n variables non ngatives avec contraintes de signe (3),
m contraintes dgalit ou dingalit (2),
z fonction objectif optimiser (1).
cj coefficient de cot ou de profit de la variable xj
aij coefficient de xj dans la contrainte i
bi second membre constant de la contrainte i.
Une solution ralisable (SR) ou faisable vrifie toutes les
contraintes : x1=4 et x2=2 dans lexemple des ciments.
Une SR est optimale (est un optimum) si aucune solution nest
meilleure. NB : loptimum nest pas la valeur optimale de z !
Il y a plusieurs optimums !

C. Prins MT14 Recherche Oprationnelle Slide #20

Notion de programme linaire


2. Forme gnrale et extensions (suite et fin)
Si variables entires : PL en nombres entiers (PLNE).
PL en 0-1 : cas particulier de PLNE variables avec deux
valeurs 0 ou 1 (variables boolennes, binaires ou de dcision).
PL mixte : on a la fois des variables continues et entires.
Si au moins une contrainte ou la fonction-objectif nest plus
linaire, on a un programme non linaire (PNL).
Les PLNE et PL en 0-1 sont plus difficiles que les PL ordinaires.
Les PNL sont encore plus difficiles : les algorithmes actuels ne
trouvent souvent quun optimum local.

C. Prins MT14 Recherche Oprationnelle Slide #21

Notion de programme linaire


3. Formes matricielles et conversions
x = (x1, x2, ... , xn)
b = (b1, b2, ... , bm)
c = (c1, c2, ... , cn)
A matrice m n

vecteur-colonne des variables,


vecteur-colonne des seconds membres,
vecteur-ligne des cots ou profits,
matrice des coefficients aij

Forme canonique
Pour rsolution graphique

Forme standard
Rsolution algbrique

Max ou Min c.x


A.x b
x0

Max ou Min c.x


A.x = b (souvent b 0)
x0

Heureusement, les logiciels peuvent traiter des PL mme s'ils


ne sont pas dans ces deux formes!

C. Prins MT14 Recherche Oprationnelle Slide #22

Notion de programme linaire


3. Formes matricielles et conversions (suite)
Egalit deux ingalits :

n
aij x j bi
n
aij x j = bi j =1 n

j =1
aij x j bi
j =1
Ingalit galit grce une variable dcart ei 0.
Si la contrainte est une consommation dune ressource i,
ei peut tre vue comme la quantit inutilise de la ressource.
n

a
j =1

ij

x j bi et ei 0 aij x j + ei = bi
j =1

C. Prins MT14 Recherche Oprationnelle Slide #23

Notion de programme linaire


3. Formes matricielles et conversions (suite et fin)
Maximisation minimisation :
Maximiser z revient minimiser -z.
Ne pas oublier de multiplier par -1 le cot minimal trouv!
Variables de signe quelconque :
Si une variable xj peut tre ngative, on la remplace par une
diffrence x'j - x"j de deux variables 0.

C. Prins MT14 Recherche Oprationnelle Slide #24

Notion de programme linaire


4. Interprtation conomique de la PL
Soit un acteur conomique qui exerce n activits avec des
intensits xj dterminer, l'aide de m ressources.
On connat la quantit aij de ressource i ncessaire pour
exercer lactivit j avec une intensit 1.
On connat aussi le profit (en maximisation) ou le cot (en
minimisation) cj correspondant une intensit 1 de lactivit j.
On veut trouver les intensits des activits, compatibles avec
les ressources, pour maximiser le profit ou minimiser le cot.
Ce problme correspond un PL gnral en forme canonique!

C. Prins MT14 Recherche Oprationnelle Slide #25

Notion de programme linaire


4. Interprtation conomique de la PL (suite et fin)
Un problme peut se modliser par un PL sous 2 conditions :
proportionnalit des cots et consommations de ressources
aux intensits dactivits,
additivit des consommations de ressources
(pas dinteractions entre activits).
Sinon, on peut souvent "linariser" le problme.
Ainsi, le prix de revient d'un article diminue avec la quantit
produite (conomie d'chelle) : pas de proportionnalit.
Pourtant, on peut linariser facilement ce genre de fonction,
moyennant des variables supplmentaires.

C. Prins MT14 Recherche Oprationnelle Slide #26

Rsolution graphique
1. Contexte
Possible si PL en forme canonique avec n=2 ou 3 variables.

Max z = x1 + 2 x 2
x1 +
x2 6
x1 ,

x2 3
x2 0

On a ici m = 2, n = 2, c = (1,2), x = (x1, x2)T, b = (6,3)T et :

1 1

A =
0
1

C. Prins MT14 Recherche Oprationnelle Slide #27

Rsolution graphique
2. Mthode
On trace 2 axes pour x1 et x2. Puis les droites d'quations
x1+x2 = 6 et x2 = 3. Les flches donnent le demi-plan
conserv. On obtient le domaine des SR, le polygone OIJK.
x2

J
I
z =9
c
K
x
O

z=0

C. Prins MT14 Recherche Oprationnelle Slide #28

Rsolution graphique
2. Mthode (suite)
Une droite d'quation z = x1 + 2.x2 = k donne par intersection
avec le domaine un ensemble de solutions de profit k.
Pour z = 0, on a seulement le point O, solution triviale o on
ne produit rien, ce qui ne rapporte rien.
Pour k = 9, on a le point J : x1 = 3, x2 = 3. Cette solution est
optimale car si on augmente encore k, on sort du domaine.
On note avec des * la solution optimale et son cot :
x* = (3,3), z* = 9.
En remplaant dans le PL les variables par leurs valeurs, on
peut vrifier le cot et le respect des contraintes.

C. Prins MT14 Recherche Oprationnelle Slide #29

Rsolution graphique
3. Remarques valables en gnral (n quelconque):
Les contraintes de positivit confinent les solutions dans le
quart de plan positif. Chaque autre contrainte dfinit un
demi-espace (demi-plan si n=2).
Lintersection de ces espaces forme un polydre convexe non
vide (polygone si n=2). Un ensemble S de IRn est convexe si
pour deux points quelconques A et B dans S, le segment [A,B]
est contenu dans S.
Pour k croissant, les droites z=k sont parallles. z augmente le
plus vite dans la direction du vecteur c de la fonction objectif.
Loptimum x* est atteint en un sommet du polydre.

C. Prins MT14 Recherche Oprationnelle Slide #30

Rsolution graphique
4. Cas spciaux possibles
En supprimant x1 + x2 6, le domaine des solutions serait
non born, ainsi que loptimum.
Loptimum peut tre fini mme si le domaine est non born :
ce serait le cas pour c = (-1,2), qui donnerait le point I.
Si on ajoutait la contrainte x1 - x2 -4, le polydre serait vide
et il ny aurait aucune solution ralisable.
Enfin, si on maximisait z = x1+x2, il y aurait plusieurs optima :
tous les points de larte JK.
Remarquons cependant que lensemble des points optimaux,
sil est non vide, inclut toujours un sommet du polydre.

C. Prins MT14 Recherche Oprationnelle Slide #31

Rsolution graphique
4. Cas spciaux possibles (suite et fin)
Pour un problme rel (plan de production), un domaine vide
est anormal car il y a au moins une solution : le plan actuel de
lentreprise. De plus, loptimum est born en pratique cause
des ressources limites.
Linfaisabilit vient souvent d'un problme trop contraint.
Loubli dune contrainte peut donner un optimum non born.
Une erreur de saisie du modle dans un logiciel peut aussi
produire ces phnomnes. Il faut alors revoir la formulation.
Au-del de 3 variables, la rsolution graphique devient
impossible et il faut passer la rsolution algbrique.

C. Prins MT14 Recherche Oprationnelle Slide #32

Rsolution algbrique
1. Bases et solutions de base
Soit un PL en forme standard avec un systme A.x = b.
Rappel. A : matrice mn, c : vecteur 1xn, x : n1, b : m1.
On suppose quil ny a pas de contrainte redondante : le rang
de A vaut m et m n. Une base de A, ou matrice de base est
une sous-matrice carre inversible m m de A.
Pour une base B, on peut partitionner A et x, en renumrotant
ventuellement les colonnes : A=(B|N) et x=(xB|xN). Avec :
N : la matrice hors-base m(n-m) des colonnes hors-base.
xB : les m variables de base, associes aux colonnes de B.
xN : les n-m autres variables, appeles variables hors-base.

C. Prins MT14 Recherche Oprationnelle Slide #33

Rsolution algbrique
1. Bases et solutions de base (fin)
Pour une base B choisie, on peut rcrire le PL en exprimant
les variables de base en fonction des variables hors-base :

A x = b B x B + N x N = b x B = B 1 b B 1 N x N

z = c x = c B x B + c N x N = c B B 1 b + c N c B B 1 N x N
Solution vidente si xN = 0 : on a xB = B-1.b et z = cB.B-1.b.
C'est la solution de base (SB) associe la base B.
Cependant, elle peut violer des contraintes de positivit :
la SB est une solution de base ralisable (SBR) si xB 0.

C. Prins MT14 Recherche Oprationnelle Slide #34

Rsolution algbrique
2. Exemple d'numration des bases
Mettons en forme standard le PL de la rsolution gomtrique,
avec des variables dcart x3 et x4 (une par contrainte) :

Max z = x1 + 2 x 2
x1 +

x 2 + x3
= 6
x2
+ x4 = 3

x1 ,

x2 ,

x3 ,

x4 0

En notant ai la colonne i de A, la matrice 2 4 du PL est :

1 1 1 0

(a1 , a 2 , a3 , a 4 ) =
0
1
0
1

C. Prins MT14 Recherche Oprationnelle Slide #35

Rsolution algbrique
2. Exemple d'numration des bases (suite et fin)
Toutes les sous-matrices 2 2 sont inversibles, sauf (a1, a3).
Les solutions de base associes sont ralisables, sauf B4.
1
x
1 1 6 3
x B = 1 = B 1b =
=
1
1 3 3
0
x2
0
x
1 0 6 6
=
x B = 1 = B 1b =
1
0 1 3 3
x4
1 6 3
x
0
1 1
=
x B = 2 = B 1b =
B3 = (a 2 , a3 ) =
1 1 3 3
1 0
x3
x
1 0 6 6
1 0
=
x B = 2 = B 1b =
B4 = (a 2 , a 4 ) =
1 1 3 3
1 1
x4
1
B1 = (a1 , a 2 ) =
0
1
B2 = (a1 , a 4 ) =
0

x
1 0
1 0 6 6
x B = 3 = B 1b =
=
B5 = (a3 , a 4 ) =
x
0
1
0
1

3 3
4

C. Prins MT14 Recherche Oprationnelle Slide #36

Rsolution algbrique
3. Bases, sommets du polydre et pivotage
La forme standard a un polydre 4 dimensions mais celui de
la forme canonique (rsolution graphique) est une projection
2 dimensions, sans les variables dcart. On constate que les
SBR correspondent aux sommets J, K, I et O du polydre.
x2

J
I
z =9
c
K
x
O
z=0

C. Prins MT14 Recherche Oprationnelle Slide #37

Rsolution algbrique
3. Bases, sommets du polydre et pivotage (suite)
On peut manipuler le systme Ax=b sans notation matricielle.
Par exemple, pour la base B1=(a1,a2) associe au point J :

x1 + x 2 + x3 = 6
x2 + x4
=3
On exprime les variables de base x1, x2 en fonction des autres

x2 = 3 x4
x1 = 6 x2 x3 = 6 (3 x4 ) x3 = 3 x3 + x4
En mettant les variables hors-base x3 et x4 0, on retrouve la
SBR x1=3 et x2=3 du point J. En fait, on a mis le systme sous
la forme vue slide 33, sans calculer explicitement B-1.

C. Prins MT14 Recherche Oprationnelle Slide #38

Rsolution algbrique
3. Bases, sommets du polydre et pivotage (suite)
Les bases pour 2 sommets adjacents du polydre ont m-1
variables communes. On peut passer d'une base l'autre
sans inversion de matrice : opration appele pivotage.
Pivotage de B5 (x3 et x4, point O) B3 (x2 et x3, point I).
On doit remplacer x4 par x2 dans la base :
a) x2 passe dans le 1er membre de l'quation 2 pour x4.
b) on limine x2 dans les autres quations.

x3 = 6 x1 x 2
x4 = 3 x2

x3 = 6 x1 (3 x4 )
x2 = 3 x4

x3 = 3 x1 + x4
x2 = 3 x4

On obtient bien x2 et x3 en fonction de x1 et x4.

C. Prins MT14 Recherche Oprationnelle Slide #39

Rsolution algbrique
4. Proprits fondamentales
Les mthodes de rsolution algbriques reposent sur deux
proprits, vues intuitivement dans la rsolution graphique :
Si une fonction linaire a un optimum fini sur le polydre X
des contraintes, cet optimum a lieu en un sommet de X.
Si X est non vide (pour avoir au moins un sommet),
lensemble des sommets correspond aux SBR.
Ainsi, bien quun polydre non vide contienne une infinit de
SR, il suffit de consulter uniquement les sommets du polydre,
en nombre fini, pour trouver loptimum.

C. Prins MT14 Recherche Oprationnelle Slide #40

Rsolution algbrique
5. Algorithme du simplexe (Dantzig, 1947) sans tableau
Il visite des SBR de profits croissants (en maximisation),
jusqu ce quil ny ait plus de gain possible.
Gomtriquement, on visite une suite de sommets adjacents
du polydre, jusqu un sommet optimal.
Le passage dune base lautre se fait par pivotage.
Souvent, on part d'un PL contraintes de ressources (, b 0.
En ajoutant les variables d'cart, on obtient une base initiale
vidente (matrice identit), associe au point O (x=0).
Il sagit de la solution vidente o on ne fait rien !

C. Prins MT14 Recherche Oprationnelle Slide #41

Rsolution algbrique
5. Algorithme du simplexe sans tableau (suite)
Max z = x1 + 2 x 2
x1 +
x 2 + x3
= 6
x2
+ x4 = 3
x1 ,

x2 ,

x3 ,

x4 0

On exprime x3 et x4 en fonction de x1 et x2, y compris dans z :

x3 = 6 x1 x 2
x4 = 3 x2
z = 0 + x1 + 2 x 2

Vrification. SBR initiale associe : on met


les variables hors-base 0 : x = (0,0,6,3)
et z = 0.
Point O de la rsolution gomtrique.

C. Prins MT14 Recherche Oprationnelle Slide #42

Rsolution algbrique
5. Algorithme du simplexe sans tableau (suite)
Pour changer de SBR, on inspecte les coefficients des variables
hors-base (profits marginaux ou profits rduits) dans z. Ici, en
maximisation, on gagne 1 ou 2 si on augmente x1 ou x2 (nuls
dans la SBR actuelle) de une unit.
Critre heuristique : la variable hors-base xe choisie pour
entrer en base (variable entrante) est celle de profit rduit > 0
maximum (en maximisation).
On augmente xe jusqu ce qu'une variable de base xs
s'annule. On limine xs de la base (variable sortante).
Gomtriquement, on passe un sommet adjacent.

C. Prins MT14 Recherche Oprationnelle Slide #43

Rsolution algbrique
5. Algorithme du simplexe sans tableau (suite)
x3 = 6 x1 x 2
x4 = 3 x2
z = 0 + x1 + 2 x 2
xe est ici la variable hors-base de profit rduit maximal : x2.
Contrainte 1: x2 peut augmenter jusqu' 6 et x3 s'annule.
Contrainte 2: x2 peut augmenter jusqu 3 et x4 sannule.
xs est la variable qui s'annule en premier : x4.

C. Prins MT14 Recherche Oprationnelle Slide #44

Rsolution algbrique
5. Algorithme du simplexe sans tableau (suite)
Les nouvelles variables de base sont donc x3 et x2, et on doit
les crire, ainsi que z, uniquement en fonction des nouvelles
variables hors-base x1 et x4. On obtient :

x2 = 3 x4
x3 = 6 x1 x2 = 6 x1 (3 x4 ) = 3 x1 + x4
z = 0 + x1 + 2 (3 x4 ) = 6 + x1 2 x4
La nouvelle SBR se lit en mettant 0 les variables hors base :
x2 = 3, x3 = 3, x1 = x4 = 0, avec un profit z = 6 (point I).

C. Prins MT14 Recherche Oprationnelle Slide #45

Rsolution algbrique
5. Algorithme du simplexe sans tableau (suite et fin)
Pour augmenter le profit, on peut seulement augmenter x1,
seule variable hors-base de profit rduit > 0.
x1 peut augmenter jusqu 3 et remplace dans la base x3, qui
sannule. On crit donc x1, x2 et z en fonction de x3 et x4 :

x1 = 3 x3 + x 4
x2 = 3 x4
z = 6 + (3 x3 + x 4 ) 2 x 4 = 9 x3 x 4
La SBR associe est x = (3,3,0,0), de profit 9 (point J).
Optimum, car les variables hors-base ont un profit rduit < 0.

C. Prins MT14 Recherche Oprationnelle Slide #46

Algorithme forme tableau


1. Systme quivalent pour une base B (cf. slide 33)
x B = B 1 b B 1 N x N

z = c B B 1 b + c N c B B 1 N x N
La forme tableau qui facilite les calculs est peine diffrente :

x B + B 1 N x N = B 1 b

0 x B + c N c B B 1 N x N = c B B 1 b
Ou, si T=(I | B-1.N), b'=B-1.b et vecteur des profits rduits:

T x = b'
x = zB

C. Prins MT14 Recherche Oprationnelle Slide #47

Algorithme forme tableau


2. Tableau initial
PL vu pour la rsolution gomtrique, en forme standard.

Max z = x1 + 2 x 2
x1 +
x 2 + x3
x1 ,

= 6

+ x4 = 3
x3 ,
x4 0

x2
x2 ,

Les variables d'cart forment une base vidente (point O).


Dans ce cas, voici le tableau initial, avec 4 sous-tableaux.

C. Prins MT14 Recherche Oprationnelle Slide #48

Algorithme forme tableau


2. Tableau initial (suite)
T
b'

Base

:
:
:
:

initialis avec la matrice A du PL.


initialis avec le vecteur b des seconds membres.
initialis avec le vecteur c de la fonction-objectif.
indices des variables de base actuelles, x3 et x4.

Base
3

T
1

1
1

2
1

3
1

4
0

b'
6

b'i / Tie : Tie > 0


6

3s

0
-zB

C. Prins MT14 Recherche Oprationnelle Slide #49

Algorithme forme tableau


2. Tableau initial (suite et fin)
On peut utiliser un tableau condens : objectif ligne 0, indices
des variables de base colonne 0, seconds membres en colonne
n+1=5, cot zB dans la case (0,n+1)=(0,5). Mais risques
derreur (confondre la fonction-objectif avec une contrainte).
0
0
1

1
1
1

2
2
1

3
0
1

4
0
0

5
0
6

Attention ! Les variables de base ont des profits rduits nuls,


mais cest parfois le cas pour des variables hors-base !

C. Prins MT14 Recherche Oprationnelle Slide #50

Algorithme forme tableau


3. Premire itration
On prpare un tableau vide, puis :
Variable entrante (profit rduit > 0 maximal sur la ligne ) :
xe = x2. On note sa colonne (colonne-pivot) avec un e.
Variable sortante xs : celle sannulant en 1er si xe augmente,
c'est celle qui minimise les b'i /Tie tels que Tie > 0. Ceci se
produit la ligne s = 2, dite ligne-pivot. Base[s] donne
lindice de la variable de base correspondante : x4.
On entoure le pivot Tse. Pour exprimer x2 en fonction des
variables hors-base, on range dans le tableau suivant la
ligne du pivot, divise par le pivot, pour avoir un 1 la
place du pivot. Ici, on recopie directement car Tse = 1.

C. Prins MT14 Recherche Oprationnelle Slide #51

Algorithme forme tableau


3. Premire itration (suite)
On fait apparatre des 0 dans les Tie des lignes i s : on
multiplie la nouvelle ligne du pivot (mise dans le tableau
suivant) par Tie, puis on la soustrait la ligne i. Les lignes
obtenues sont ranges dans le tableau suivant. Ceci limine
xe des quations autres que la ligne s. Ici, le traitement
revient soustraire la ligne 2 la ligne 1.
On fait de mme pour la ligne , y compris pour -zB : la
ligne du pivot est multiplie par e et soustraite la ligne
pour obtenir la nouvelle ligne du tableau suivant. Ici, on
multiplie la ligne 2 par 2 et on la soustrait la ligne .
On met jour lindice de la variable de base correspondant
dsormais la ligne s dans Base : 2 au lieu de 3.

C. Prins MT14 Recherche Oprationnelle Slide #52

Algorithme forme tableau


3. Premire itration (suite et fin)
On obtient le tableau suivant.
On est au point I de la mthode gomtrique.
Base

b' b'i / Tie : Tie > 0

-1

3s

-2

-6
-zB

Les colonnes de base dfinissent toujours une matrice identit.


Elles peuvent tre dans le dsordre ou non contigus.

C. Prins MT14 Recherche Oprationnelle Slide #53

Algorithme forme tableau


4. Une petite pause
En fait, les calculs sur ce tableau sont strictement quivalents
ceux sans tableau qui ont donn la 2me solution slide 44 !
Lecture du tableau :
x1 + x3 x4 = 3

Slide 44 :
x2 = 3 x4

x2 + x4 = 3

x3 = 3 x1 + x4
z = 6 + x1 2 x4

x1 2 x4 = 6

Dans la mthode sans tableau, on met les variables de base


dans les premiers membres. Dans lalgorithme du simplexe,
cest le tableau Base qui les indique. Donc attention : la 1re
ligne du tableau (x3) correspond la 2me ligne slide 44 !

C. Prins MT14 Recherche Oprationnelle Slide #54

Algorithme forme tableau


4. Une petite pause (suite et fin)
Do vient la rgle pour choisir la variable sortante ?
Soit le systme suivant, les variables de base sont x1, x2, x3.
On veut faire entrer x4 (actuellement nulle) en base.
x1
x2
x3

+ 2 x4
x4

= 3 (1)
= 1 ( 2)

+ x4

= 2 (3)

(1) : x4 peut augmenter jusqu b1/T14 = 3/2.


(2) : x2 ne sannule pas si x4 augmente car T24 < 0.
(3) : x2 peut augmenter jusqu b3/T34 = 2/1 = 2.
xs est donc bien sur la ligne minimisant les b'i /Tie avec Tie > 0.

C. Prins MT14 Recherche Oprationnelle Slide #55

Algorithme forme tableau


5. Seconde itration
On peut encore accrotre le profit en augmentant x1.
On trouve e = 1, s = 1, Base[s] = 3. Le pivotage sur Tse = T11
revient soustraire la ligne du pivot la ligne pour faire
apparatre un 0 dans (1). On obtient le tableau suivant :
Base
1
2

T
1
2

1
1
0

2
0
1

3
1
0

4
-1
1

b'
3
3

-1

-1

-9 -zB

C. Prins MT14 Recherche Oprationnelle Slide #56

Algorithme forme tableau


5. Seconde itration (suite et fin)
Cest la fin car les profits rduits sont ngatifs ou nuls.
Rsultats en clair : x1 = 3, x2 = 3, autres = 0, profit= 9.
Systme quivalent :
ou, comme dans la x1 = 3 x3 + x4
x1 + x3 x4 = 3
mthode manuelle :

x2

+ x4 = 3

x3 x4 = 9

x2 = 3

x4

z = 9 x3 x4

On a retrouv le point J de la mthode gomtrique.

C. Prins MT14 Recherche Oprationnelle Slide #57

Cas spciaux
1. Optimum non born
Exemple de PL sans optimum born (forme canonique) :
contrainte 1

x2

Max z =

contrainte 2

x1 + 2 x 2
x2 2
2 x1 +

O:
I:
J:
K:

x1 + 2 x 2 5

x1 4 x 2 4

contrainte 3
c

x2 0

x1 ,

(0,0)
(0,2)
(1/3,8/3)
(4,0)

x1

C. Prins MT14 Recherche Oprationnelle Slide #58

Cas spciaux
1. Optimum non born (suite)
Algorithme du simplexe. Ajout de 3 variables dcart x3, x4, x5.
Le 1er tableau correspond au point O :
Base
3
4
5

T 1

b' b'i / Tie : Tie > 0

1 -2 1
2 -1 2
3 1 -4

1
0
0

0
1
0

0
0
1

2
5
4

0
-zB

2s
2.5

C. Prins MT14 Recherche Oprationnelle Slide #59

Cas spciaux
1. Optimum non born (suite)
Le 2me tableau correspond au point I :
Base
2

T 1
1 -2

2
1

3
1

4
0

5
0

b'
2

b'i / Tie : Tie > 0

4
5

2 3
3 -7

0
0

-2
4

1
0

0
1

1 1/3 s
12

-2

-4
-zB

C. Prins MT14 Recherche Oprationnelle Slide #60

Cas spciaux
1. Optimum non born (suite et fin)
Le 3me et dernier tableau correspond au point J.
On peut augmenter le profit en faisant entrer x3 en base.
Mais si x3 augmente, aucune variable hors-base ne s'annule.
Optimum non born : pas de b'i / Tie avec Tie > 0.
Base
2
1
5

T
1
2
3

1
0
1
0

2
1
0
0

3
4
-1/3 2/3
-2/3 1/3
-2/3 7/3

5
0
0
1

b'
8/3
1/3
43/3

b'i / Tie : Tie > 0

4/3 -5/3

-17/3 -zB

C. Prins MT14 Recherche Oprationnelle Slide #61

Cas spciaux
2. Absence de base initiale vidente
PL standard
Max z = x1 + 2 x 2

PL canonique
Max z = x1 + 2 x 2

x1 +
x1 +

x2 6
x2 3
x2 1

x1 +

x 2 + x3
= 6
x2
+ x4
= 3
x2
x5 = 1

x1 ,

x2 0

x1 ,

x 2 , x3 , x 4 , x5 0

x1 +

On na plus la matrice identit des variables d'cart, qui nous


fournissait une base initiale vidente.

C. Prins MT14 Recherche Oprationnelle Slide #62

Cas spciaux
2. Absence de base initiale vidente (suite)
Confirmation par la gomtrie (forme canonique): loptimum
est atteint en J=(3,3), mais lorigine O nest plus ralisable.
x2

J
I

U
K
x
O

C. Prins MT14 Recherche Oprationnelle Slide #63

Cas spciaux
2. Absence de base initiale vidente (suite et fin)
On pourrait rcrire le systme dquations pour commencer
avec la SBR correspondant aux points U ou V.
Mais lopration devient complexe pour n > 2.
Les logiciels prfrent donc ajouter des variables artificielles
pour avoir une matrice identit pour dmarrer.
Deux techniques :
mthodes des deux phases
mthode du grand M.

C. Prins MT14 Recherche Oprationnelle Slide #64

Cas spciaux
1. Mthode des deux phases
Ide : crer une matrice identit en ajoutant aux contraintes
qui en ont besoin une variable artificielle (VA) coefficient 1.
PL standard avec VA

PL standard
Max z = x1 + 2 x 2
x1 +
x 2 + x3
x1 +
x1 ,

Max z =

= 6

x2
+ x4
= 3
x2
x5 = 1
x 2 , x3 , x 4 , x5 0

x1

+ 2 x2

x1

x2
x2

x1

x2

x1

x2

= 6
= 3

x3
+

x4

, x3

, x4

x5

, x5

A loptimum, chaque VA doit tre nulle (hors-base) sinon


l'galit nest pas vrifie!

x6

, x6

C. Prins MT14 Recherche Oprationnelle Slide #65

Cas spciaux
1. Mthode des 2 phases (suite)
Phase 1. Soit xA le vecteur des VA :
Ignorer la fonction-objectif et minimiser la somme des VA.
Normalement, xA = 0 loptimum.
Si xA 0, le PL initial est sans solution.
Si xA = 0 avec des VA en base, les lignes associes ces VA
sont redondantes, on peut les liminer.
Phase 2, faite seulement si xA = 0 en fin de phase 1 :
Eliminer du tableau les colonnes des VA, devenues inutiles.
Remplacer ligne par la vraie fonction-objectif.
Continuer le simplexe sur le tableau obtenu.
Cest en phase 2 quon dtecte si le PL dorigine est non born.

C. Prins MT14 Recherche Oprationnelle Slide #66

Cas spciaux
2. Mthode des 2 phases (suite)
Appliquons la mthode lexemple (slide suivante).
La base est forme des colonnes 3, 4 et 6.
Mais x6 doit avoir un cot rduit nul !
On transforme en une ligne correcte ', en lui soustrayant la
ligne 3 du tableau.
Etant en minimisation, il faut faire entrer en base la variable
de cot rduit ngatif minimal. On a le choix entre e = 1 et
e = 2. Prenons e = 1.

C. Prins MT14 Recherche Oprationnelle Slide #67

Cas spciaux
1. Mthode des 2 phases (suite)
Base
3
4

T
1
2

1
1
0

2
1
1

3
1
0

4
0
1

5
0
0

6
0
0

b'
6
3

b'i / Tie : Tie > 0


6

-1

1s

0
' -1

0
-1

0
0

0
0

0
1

1
0

0
-1
-zB

Aprs pivotage sur T31, on obtient le tableau suivant :

C. Prins MT14 Recherche Oprationnelle Slide #68

Cas spciaux
2. Mthode des 2 phases (suite et fin)
Base
3
4
1

T
1
2
3

1
0
0
1

2
0
1
1

3
1
0
0

4
0
1
0

5 6
1 -1
0 0
-1 1

b'
5
3
1

0 -zB

Optimum : les cots rduits sont 0 (minimisation).


Fin phase 1: cot nul, pas de VA en la base. On est au point V.
On peut faire la phase 2 sans la colonne 6 et en mettant la
vraie fonction-objectif (attention : rcrite en fonction des
variables hors-base). Ceci est laiss titre dexercice.

C. Prins MT14 Recherche Oprationnelle Slide #69

Cas spciaux
3. Mthode du grand M
Une seule phase. Les VA sont ajouts la fonction-objectif,
avec un grand cot M > 0 en minimisation, exemple 106.
Normalement, le simplexe sort les VA de la base en quelques
itrations, cause de leur cot norme. On peut donc effacer
les colonnes des VA quand elles sont toutes hors-base.
Anomalies possibles :
PL modifi non born et xA = 0 : PL dorigine est non born.
PL modifi non born et xA 0 : PL dorigine sans solution.
PL modifi born, mais xA 0 : PL dorigine sans solution.
Cette mthode pose des problmes numriques aux logiciels
commerciaux, qui utilisent plutt la mthode des deux phases.

C. Prins MT14 Recherche Oprationnelle Slide #70

Cas spciaux
3. Mthode du grand M (suite)
Sur lexemple, la ligne est tendue avec un cot -M pour
chaque VA. On rend nuls les cots marginaux des variables de
base en ajoutant la ligne 3, multiplie par M, la ligne .
Base
3
4

T
1
2

1
1
0

2
1
1

3
1
0

4
0
1

5
0
0

6
0
0

b'
6
3

b'i / Tie : Tie > 0


6
3

-1

1s

0
0

0
0

0
-M

-M
0

0
M
-zB

1
2
' M+1 M+2

C. Prins MT14 Recherche Oprationnelle Slide #71

Cas spciaux
3. Mthode du grand M (suite et fin)
Une itration donne une solution ralisable (point U).
Base
3
4
2

1
0

2
0

3
1

4
0

5
1

6
-1

b' b'i / Tie : Tie > 0


5 5

2 -1
3 1

0
1

0
0

1
0

1
-1

-1
1

2
1

-1

-M-2

-2
-zB

T
1

2s

Les VA tant sorties de la base, on peut effacer la colonne 6 et


continuer normalement l'algorithme du simplexe.

C. Prins MT14 Recherche Oprationnelle Slide #72

Dualit
1. Dfinitions
A un PL canonique (P), on peut associer un PL dual (D),
en associant chaque contrainte i une variable yi.
PL de dpart (P), dit primal :

PL dual (D) :

Max z = c.x
A.x b
x0

Min w = y.b
y.A c
y0

y vecteur-ligne des m variables duales.


Objectif : c remplac par b, sens de loptimisation invers.
Contraintes : 2nd membre b remplac par c, et par .
Matrice A transpose.

C. Prins MT14 Recherche Oprationnelle Slide #73

Dualit
1. Dfinitions (suite et fin)
Primal (P)
Max z = 4 x1 + 7 x2

Dual (D)
Min w = 6 y1 + 8 y 2

3x1 + 5 x2 6

3 y1 + y 2 4

x1 + 2 x2 8

5 y1 + 2 y 2 7

x1 , x2 0

y1 , y 2 0

Pour un PL standard (P), le dual (D) est peine diffrent :


PL primal (P) :

PL dual (D) :

Max z = c.x
A.x = b
x0

Min w = y.b
y.A c
y de signe quelconque

C. Prins MT14 Recherche Oprationnelle Slide #74

Dualit
2. Interprtation conomique
PL canonique (P) reprsentant une firme A, voir slide 24.
B veut acheter chaque ressource i un prix unitaire yi.
A vendra si, pour tout produit j, la vente des ressources pour
faire une unit de j est au moins gal au profit unitaire cj
auquel elle renoncera.
Les prix yi optimaux pour B sont solutions du dual (D):
m

Min y i bi
i =1

j = 1K n : aij y i c j
i =1

i = 1K m : y i 0

C. Prins MT14 Recherche Oprationnelle Slide #75

Dualit
2. Interprtation conomique (suite et fin)
La dualit est utile aussi pour la firme A. On peut montrer que
yi* est l'augmentation de profit du primal si on augmente de 1
la capacit bi de la ressource i, pour une contrainte sature.
Pour ces raisons, yi* est souvent appel cot rduit ou
marginal de la contrainte i. Egalement appel shadow price
en anglais, il est trs utilis en conomtrie.
Les logiciels commerciaux fournissent pour tout PL un listing
de rsultats avec le cot rduit de chaque contrainte, sans
qu'on ait rsoudre le PL dual.

C. Prins MT14 Recherche Oprationnelle Slide #76

Dualit
3. Proprits
PL dual (D) :

Peut scrire (D) :

D dual de D:

Min y.b
y.A c
y0

-Max y.(-b)
(-AT).y -c
y0

-Min (-c).x
x.(-AT) -b
x0

D est quivalent au primal.


Le dual du dual est donc gal au primal.
Les notions de primal et de dual sont donc relatives, car on
peut faire la conversion dans les 2 sens. On peut appeler au
choix lun des PL le primal et lautre le dual.

C. Prins MT14 Recherche Oprationnelle Slide #77

Dualit
3. Proprits (suite)
Soit (P) et (D) ont un optimum fini, soit ils sont tous deux
infaisables, soit lun est sans solution et lautre non born.
Si (P) est en maximisation, le cot dune SR x est infrieur ou
gal au cot dune SR y de (D). Ces cots sont gaux si et
seulement si x et y sont optimales.
Relations d'exclusion. Pour toute contrainte du primal, soit la
contrainte est sature (vrifie avec galit), soit la variable
associe du dual = 0. Pour toute contrainte du dual, soit la
contrainte est sature, soit la variable associe du primal = 0.

C. Prins MT14 Recherche Oprationnelle Slide #78

Dualit
3.

Proprits (suite et fin)

Signification des relations dexclusion : une contrainte non


sature loptimum a un cot rduit nul : en effet, la
ressource ntant pas puise, augmenter sa capacit ne
rapporte rien.
Relations d'exclusion pour un primal canonique :
y*.(b - A.x*) = 0

et

(y*.A - c).x* = 0.

Primal standard. On a y*.(b - A.x*) = 0 grce aux galits.


Il reste :
(y*.A - c).x* = 0.

C. Prins MT14 Recherche Oprationnelle Slide #79

Dualit
4. Utilit de la dualit
La dualit est aussi utilise pour faciliter les calculs.

Max z = x1 + x 2

Min w = 24 y1 + 17 y 2 + 21 y 3 + 15 y 4

(1) 3 x1 + x 2 24
(2) 2 x1 + x 2 17
(3) x1 + 3 x 2 21

(5) 3 y1 + 2 y 2 + y 3 y 4 1
(6) y1 + y 2 + 3 y 3 + 3 y 4 1
y1 , y 2 , y 3 , y 4 0

(4) x1 + 3 x 2 15
x1 , x 2 0
Le PL droite avec m=2 et n=4 est ingrable graphiquement,
contrairement son dual ( gauche), avec m=4 et n=2.

C. Prins MT14 Recherche Oprationnelle Slide #80

Dualit
4. Utilit de la dualit (suite)
PL de gauche : on trouve graphiquement z =11, x1=6, x2=5.
On peut en dduire l'optimum du dual de droite.
Daprs la slide 77, le cot optimal du dual est donc w=11.
Contraintes (2) et (3) satures, mais pas (1) et (4).
D'aprs les relations d'exclusion, y1 et y4 sont donc nulles.
x1, x2 0 : les contraintes (5), (6) du dual sont donc serres.
Elles donnent les quations (7)-(8), solution y2=2/5 et y3=1/5.

(7) 2 y 2 + y 3 = 1
(8) y 2 + 3 y 3 = 1

C. Prins MT14 Recherche Oprationnelle Slide #81

Dualit
4. Utilit de la dualit (suite)
En fait, les logiciels dduisent une solution optimale du dual
partir du tableau final du simplexe pour le primal.
Dduction facile si le PL de dpart est sous forme canonique.
PL standard avec une variable dcart par contrainte.
Variables d'cart indexes de xn+1 xn+m.
Si la i-me variable dcart xn+i est dans la base, alors la
variable duale de la contrainte i est nulle : yi = 0.
Si xn+i est hors-base, son cot rduit dans la ligne est
simplement loppos de la valeur de yi (ou directement la
valeur de yi en minimisation).

C. Prins MT14 Recherche Oprationnelle Slide #82

Dualit
4. Utilit de la dualit (suite et fin). PL de la slide 26.
Max z = x1 + 2 x 2

Max z = x1 + 2 x 2

x1 + x 2 6
x2 3
x1 , x 2 0

x1 + x 2 + x3 = 6
x2 + x4 = 3
x1 , x 2 , x3 , x 4 0

Tableau final du simplexe de la slide 55 :


Base
1
2

T
1
2

1
1
0

2
0
1

3
1
0

4
-1
1

b'
3
3

-1

-1

-9

-zB

x3 et x4 sont hors-base. Leurs cots rduits ligne sont gaux


aux variables duales, -1 car on est en max : y1=1 et y2=1.

C. Prins MT14 Recherche Oprationnelle Slide #83

Analyse de sensibilit
1. Principe
Lanalyse de sensibilit consiste calculer les intervalles dans
lesquels peut varier un coefficient de cot cj ou un second
membre bi, sans que loptimum change.
Inutile de changer le coefficient et de rsoudre le nouveau PL :
les logiciels donnent ces intervalles avec les solutions.
Attention! Les informations fournies ne sont valides que si on
fait varier un seul paramtre la fois.

C. Prins MT14 Recherche Oprationnelle Slide #84

Analyse de sensibilit
2. Changement d'un cot
Max z = 3 x1 2 x 2
2 x1 x 2 30
x1 x 2 10
x1 , x 2 0

Tableau final du simplexe :


Base
2
1

T
1
2

1
0
1

2
1
0

3
1
1

4
-2
-1

b'
10
20

-1

-1

-40

Stabilit de l'optimum si c1 varie ?

-zB

C. Prins MT14 Recherche Oprationnelle Slide #85

Analyse de sensibilit
2. Changement d'un cot (suite)
Objectif initial, "paramtr" par c1 : z = c1.x1 - 2.x2.
Le tableau nous donne x1 et x2 en fonction des hors-base :

x1 = 20 x3 + x 4
x 2 = 10 x3 + 2 x 4
L'objectif rcrit en fonction des variables hors-base x3 et x4
redonne la ligne , mais paramtre par c1 :

z = c1 x1 2 x 2
= c1 (20 x3 + x 4 ) 2 (10 x3 + 2 x 4 )
= 20 (c1 1) + (2 c1 ) x3 + (c1 4) x 4

C. Prins MT14 Recherche Oprationnelle Slide #86

Analyse de sensibilit
2. Changement d'un cot (suite et fin)
La solution reste optimale si les cots rduits des variables
hors-base sont ngatifs ou nuls, donc si :
2 - c1 0
c1 - 4 0
Cest--dire si c1 [2,4].
Une analyse similaire pour c2 donne c2 [-3,-3/2].
Ainsi, si on modifie un coefficient la fois dans son intervalle,
les valeurs optimales de x1 et x2 ne changent pas.
Bien entendu, il faut recalculer le cot total!

C. Prins MT14 Recherche Oprationnelle Slide #87

Analyse de sensibilit
3. Changement d'un second membre
On peut passer au dual : les variations des seconds membres
du primal y deviennent des variations de coefficients de cots.
Montrons quon peut trouver directement l'intervalle pour b1.
La base optimale B est forme des colonnes de x1 et x2.
La SB actuelle est xB = B-1.b, elle doit rester 0 (SBR). Do :
2 1

B =
1

1 1

B 1 =
1
2

b 10 0
1 1 b1
0 1
xB = B 1b =
b1 ] 20,+]
b
20
0

1
2
10

Une analyse similaire trouve pour b2 lintervalle ]-,15].

C. Prins MT14 Recherche Oprationnelle Slide #88

Les algorithmes modernes


1. Raffinements dans lalgorithme du simplexe
Algorithme du simplexe forme tableau :
ncessite un PL mis sous forme standard (galits).
prend trop de place si PL peu dense (beaucoup de zros).
cumule les erreurs darrondi au cours des pivotages.
Citons six raffinements des logiciels modernes.
Formatage automatique en forme standard
On peut entrer des contraintes , et =, et des variables non
contraintes en signe. Les logiciels modifie ce PL pour se
ramener une forme standard avec variables non ngatives.

C. Prins MT14 Recherche Oprationnelle Slide #89

Les algorithmes modernes


1. Raffinements dans lalgorithme du simplexe (suite)
Gestion des cas problme
Dtection des PL infaisables ou non borns.
Absence de base vidente (point O du polydre) : calcul d'une
base initiale par la mthodes des 2 phases ou du grand M.
Contrle de la prcision
Une itration dduit linverse B-1 de la base actuelle B par
pivotage, partir de l'inverse de l'itration prcdente.
Prix payer : perte de prcision au cours des itrations.
Amlioration par un codage de matrice appel dcomposition
LU et par une rinversion explicite et priodique de la base.

C. Prins MT14 Recherche Oprationnelle Slide #90

Les algorithmes modernes


1. Raffinements dans lalgorithme du simplexe (suite)
Gestion efficace des matrices creuses
Les grands PL sont trs souvent creux au moins 90 % :
leurs matrices A ont au moins 90 % de zros.
Astuces pour ne stocker que les lments non nuls, par
exemple en crant des listes chanes dlments non nuls
dans chaque ligne et chaque colonne.
Outre un gain norme de place qui permet de traiter en
mmoire des PL plus grands, les calculs sont acclrs.

C. Prins MT14 Recherche Oprationnelle Slide #91

Les algorithmes modernes


1. Raffinements dans lalgorithme du simplexe (fin)
Le prtraitement
Techniques (preprocessing) pour simplifier le PL : limination
de contraintes redondantes, changements de variables, etc.
Elles permettent de diminuer notablement la taille du PL.
Variables duales et analyse de sensibilit
Les meilleurs logiciels incluent dans les rsultats les variables
duales et une analyse de sensibilit.

C. Prins MT14 Recherche Oprationnelle Slide #92

Les algorithmes modernes


2. Les mthodes de points intrieurs
En moyenne, le simplexe visite un nombre de sommets du
polydre proportionnel au nombre de contraintes m, et chaque
pivotage requiert de lordre de mn oprations.
Au pire, il visite tous les sommets, dont le nombre est gal au
nombre de faons de choisir m colonnes parmi n, soit Cnm .
Depuis 1990, il existe des algorithmes de points intrieurs, qui
traversent le polydre. Ainsi, celui dAdler et Gonzaga a un
temps de calcul proportionnel n3L, mme dans le pire cas.
L est le nombre de chiffres significatifs pour stocker le PL.
Ces algorithmes sont plus rapides sur certains problmes.

C. Prins MT14 Recherche Oprationnelle Slide #93

Chapitre 3
Programmation linaire
en nombres entiers

C. Prins MT14 Recherche Oprationnelle Slide #94

Introduction
Programmation Linaire en Nombre Entiers (PLNE)
Integer Linear Programming (ILP)
les variables doivent tre entires
en pratique, A et b sont souvent entiers
(sinon le systme A.x=b a rarement des solutions)
permet de modliser de nombreux problmes
d'optimisation discrte
mais difficults numriques : l'algorithme du simplexe ne
marche plus!

C. Prins MT14 Recherche Oprationnelle Slide #95

Notions de base
1. Dfinitions
PL ordinaire :
variables relles

PL en nombres entiers (PLNE):


variables, A et b entires

( P ) Min z = c x

(Q) Min z = c x
A x = b

A x = b

x IN n

x0

Remarques :
PL en 0-1 : variables binaires (= boolennes, de dcision).
PL mixte : prsence de variables entires et relles.
Les PLNE sont motivs par un besoin de variables entires,
ou par des contraintes ingrables par la PL ordinaire :
exemple, x + y 1 avec x et y binaires.

C. Prins MT14 Recherche Oprationnelle Slide #96

Notions de base
2. Difficults de la PLNE
x2

Max z = 2 x1 + x 2

x1 + x 2 5

x1 + x 2 0

6 x1 + 2 x 2 21

x1 , x 2 IN

B=(11/4,9/4)
D

C
0

x1
0

Optimum du PL dit "relax" : B = (11/4, 9/4), cot 7.75.


Optimum du PLNE : C = (3,1), cot 7.

C. Prins MT14 Recherche Oprationnelle Slide #97

Notions de base
2. Difficults de la PLNE (suite)
Loptimum entier est rarement un sommet du polydre, il peut
tre lintrieur, comme dans cet exemple.
Si le PL relax a un optimum entier, c'est loptimum du PLNE.
Sinon, le cot optimal du PL relax donne une borne
suprieure (infrieure en minimisation) du cot optimal du
PLNE : ici le PL relax donne 7.75 au lieu de 7.
Larrondi de la solution du PL relax, ici D=(2,2), nest pas
forcment optimum du PLNE et peut tre non ralisable.
Le polydre peut tre non vide, mais nadmettre aucune
solution entire!

C. Prins MT14 Recherche Oprationnelle Slide #98

Notions de base
2. Difficults de la PLNE (suite)
On peut construire des cas o les optima du PLNE et du PL
relax sont aussi loigns que lon veut.
Les algorithmes de PL ne conviennent pas : ils trouvent un
sommet du polydre, en gnral coordonnes non entires.
Arrondir la solution du PL relax?
OK si la solution a un sens, par exemple 217365,2 stylos-billes
produire. Par contre, si le simplexe trouve 0,5 pour une variable
de dcision qui doit valoir 0 ou 1, cette solution na aucune
signification relle.

C. Prins MT14 Recherche Oprationnelle Slide #99

Notions de base
2. Difficults de la PLNE (fin)
Un PLNE est en gnral un problme difficile et on ne connat pas
dalgorithme rapide comme pour les PL ordinaires.
Mme sans la fonction-objectif, on ne connat pas d'algorithme
rapide pour trouver une solution entire au systme A.x = b !
Donc attention! Les solveurs du commerce peuvent traiter des PL
100 000 variables mais seulement des PLNE quelques
dizaines de variables (quelques centaines pour les PL en 0-1).
Cependant, malgr ces difficults numriques, la PLNE reste un
langage de modlisation trs puissant.

C. Prins MT14 Recherche Oprationnelle Slide #100

Notions de base
3. Mthodes de rsolution des PLNE
A) Rsolution comme un PL ordinaire
Pour certains PLNE, l'optimum du PL relax est coordonnes
entires. On va voir quelques PLNE ayant cette proprit.
B) Mthodes arborescentes (branch-and-bound)
Utilises par les solveurs commerciaux. Principe :
on choisit une variable x et on spare le problme en
deux selon les valeurs de x.
PLNE gnral : on considre un entier p et on spare en deux
sous-problmes x p et x p+1.
PL en 0-1, on spare sur x = 0 et x = 1.

C. Prins MT14 Recherche Oprationnelle Slide #101

Notions de base
3. Mthodes de rsolution des PLNE (suite)
Les sparations forment une arborescence qui peut tre norme
: 230 109 nuds pour un PL en 0-1 avec n=30.
La majorit des nuds (sous-problmes) sont en fait limins
avec une valuation, c'est--dire une borne infrieure (si min)
ou suprieure (si max) du cot optimal du PLNE associ au
nud. Par exemple, on rsout le PL relax avec le simplexe.
PLNE gnral : mthode de Dakin (slide 112).
PL en 0-1 :
mthode de Balas (slide 117).

C. Prins MT14 Recherche Oprationnelle Slide #102

Notions de base
3. Mthodes de rsolution des PLNE (fin)
C) Mthodes de coupe (trop difficiles pour MT14)

Ajout de contraintes qui rognent le polydre sans perdre


l'optimum entier. Utilises comme techniques d'appoint dans les
mthodes arborescentes (mthodes de branch-and-cut).

C. Prins MT14 Recherche Oprationnelle Slide #103

PLNE quivalents leur PL relax


1. Unimodularit totale
Il existe une classe de PLNE dont le PL relax a un optimum
entier. Ces PLNE sont donc rsolubles par lalgorithme du
simplexe, sans prciser que les variables sont entires.
Ils ont une matrice A dite totalement unimodulaire (TU) : toute
sous-matrice carre a un dterminant -1, 0, ou +1.
Quelques proprits des matrices TU :
les lments (sous-matrices 1x1) valent -1, 0 ou +1.
si A est TU, sa transpose AT lest aussi.
si A est TU et I est la matrice identit, (A|I) est aussi TU.

C. Prins MT14 Recherche Oprationnelle Slide #104

PLNE quivalents leur PL relax


1. Unimodularit totale (fin)
Contenir des -1, 0 ou +1 nest pas suffisant. Ci-dessous,
A a des sous-matrices 1x1 et 2x2 dterminants -1, 0 ou +1,
mais sa premire sous-matrice 3x3 a un dterminant = 2 :
1 0 1 1

A = 1 1 0 1
0 1 1 1

1 0 1
1 1 0 = 2
0 1

On ne connait pas dalgorithme rapide pour tester si une matrice


est TU, mais certaines matrices TU sont dtectables par des
proprits comme celle de Heller et Tomkins.

C. Prins MT14 Recherche Oprationnelle Slide #105

PLNE quivalents leur PL relax


2. Proprit de Heller et Tomkins ( admettre)
Une matrice A lments dans {-1, 0, +1} est TU si :
Chaque colonne a au plus 2 lments non nuls.
On peut partitionner les lignes en L1 et L2 tels que :
a) si les 2 lments 0 dune colonne ont mme signe,
lun est dans L1, lautre dans L2,
b) sinon, ils sont tous les deux dans L1 ou bien dans L2.

1
A=
0

0
0 1 1

1 1
1 0
1 0
0 1

0 1 0 0

1
1 1 0

B = 1 0 1 1
1 1 0
0

A est TU :
L1={1,2}, L2={3,4}.
B est TU mais ne
vrifie pas la condition

C. Prins MT14 Recherche Oprationnelle Slide #106

PLNE quivalents leur PL relax


3. Unimodularit totale et solutions entires
PL en forme standard, matrice A m n et vecteur b entiers.
3 conditions quivalentes ( admettre) :
1) Le dterminant de toute matrice de base B vaut +1 ou -1.
2) Les sommets du polydre sont coordonnes entires.
3) Pour toute base B, la matrice inverse B-1 est entire.
Si A est TU, toute sous-matrice B, m m, a un dterminant 0, 1 ou +1. B est une base si elle est inversible : dt(B) 0. Donc,
si A est TU, le PL vrifie la condition 1). Ses solutions de base, y
compris la solution optimale, sont donc entires : 2).

C. Prins MT14 Recherche Oprationnelle Slide #107

PLNE quivalents leur PL relax


3. Unimodularit totale et solutions entires
Valable aussi pour la forme canonique A.x b : avec les
variables dcart, on a une matrice (A|I) qui est toujours TU.
Le programme dual a aussi un optimum entier, si les cots
unitaires dans la fonction-objectif du primal sont entiers.
Donc, si A est TU :

un PLNE est quivalent son PL relax.


les contraintes de variables entires sont redondantes.
lalgorithme du simplexe suffit pour rsoudre le PLNE.

C. Prins MT14 Recherche Oprationnelle Slide #108

PLNE quivalents leur PL relax


4. PL de rseaux
Si on ignore les contraintes de bornes comme x 3, un PL sous
forme canonique ou standard est dit de rseau si chaque colonne
de A a au plus 2 lments 0. Si 2 lments 0 : -1 et +1. Si
un lment 0 : -1 ou +1.
A vrifie la condition de Heller & Tomkins avec L2 = . Elle est
donc TU. A condition que b soit entier, les PL de rseau sont
rsolus optimalement par lalgorithme du simplexe.
Deux exemples classiques :
le PL de transport
le PL d'affectation.

C. Prins MT14 Recherche Oprationnelle Slide #109

PLNE quivalents leur PL relax


5. Le PL de transport
Exemple : le loueur de voitures (exos 4 et 7 des TD).
m

(1) Min cij xij

Exemple :

i =1 j =1

(2) i = 1...m : xij = ai


j =1

(3) j = 1...n : xij = b j


i =1

(4) i = 1...m, j = 1...n : xij IN

m sources avec des


disponibilits ai
n destinations avec des
besoins bj
cots de transports cj
quantits livres xij

C. Prins MT14 Recherche Oprationnelle Slide #110

PLNE quivalents leur PL relax


5. Le PL de transport (suite et fin)
PL dtaill pour le loueur de voitures:
Min 3 x11 + 5 x12 + 3x13 + 2 x 21 + 7 x 22 + x 23

Est-ce un PL de rseau?

x11 + x12 + x13 = 12

chaque variable figure


dans deux contraintes,
avec le coefficient 1.
multiplions les contraintes
de respect des demandes
par -1 : on obtient bien
un PL de rseau.

x 21 + x 22 + x 23 = 8
x11 + x 21 = 8
x12 + x 22 = 7
x13 + x 23 = 5
x11 , x12 , x13 , x 21 , x 22 , x 23 IN

C. Prins MT14 Recherche Oprationnelle Slide #111

PLNE quivalents leur PL relax


6. Le PL d'affectation
Cas particulier du PL de transport avec m=n et les ai et bj = 1.
n

(1) Min cij xij

Exemple :

i =1 j =1

(2) i = 1...n : xij = 1


j =1
m

(3) j = 1...n : xij = 1


i =1

(4) i = 1...n, j = 1...n : xij {0,1}

n tudiants, n projets.
prfrences cij, exemple de
1 (souhait) 5 ( viter).
trouver une affectation
(1 tudiant/projet et 1 projet
/tudiant) qui minimise la
somme des prfrences.

C. Prins MT14 Recherche Oprationnelle Slide #112

Mthode arborescente de Dakin


1. Exemple traiter

Max z = 4 x1 + 3 x 2
3x1 + 4 x 2 12
4 x1 + 2 x 2 9
x1 , x 2 IN

x2

3
A = (1.2,2.1)
2

PL relax :
x*=(1.2,2.1), cot z*=11.1
PLNE :
X*=(1,2), cot z*=10

x1

0
0

C. Prins MT14 Recherche Oprationnelle Slide #113

Mthode de Dakin
2. Principe
Chaque nud Si de larbre reprsente le PL relax, mais avec
des contraintes en plus. Le simplexe donne une solution dont le
cot est une valuation par excs ev(Si) du cot du PLNE
associ. On conserve seulement une liste L des feuilles de
larbre, chacune avec la solution du simplexe et lvaluation.
Initialisation :
L contient seulement la racine S0 de larbre (PL relax).
Le simplexe donne un majorant ev(S0) du cot du PLNE.
On initialise le cot de la meilleure solution entire, w, -.

C. Prins MT14 Recherche Oprationnelle Slide #114

Mthode de Dakin
2. Principe Itration principale
Si L=, FIN, sortir la meilleure solution entire trouve w
(si aucune, le PLNE est infaisable).
Enlever de L le nud Si dvaluation max (S0 au dbut).
Si ev(Si) w, ignorer Si : il ne peut pas amliorer w.
Si ev(Si) > w et la solution est entire, cest la meilleure
trouve depuis le dbut : mettre jour w.
Si ev(Si) > w et la solution n'est pas entire, prendre une
variable non entire x*j et sparer Si : un fils avec en plus la
contrainte xj x*j et un avec xj x*j . Evaluer les deux
nuds-fils avec le simplexe et les mettre dans L.

C. Prins MT14 Recherche Oprationnelle Slide #115

Mthode de Dakin
3. Application lexemple

S0

x = (1.2,2.1)
z = 11.1

x2 2

S1

x2 3

x = (5/4,2)
z = 11

x1 1

S3

x = (1,2)
z = 10

S2

x = (0,3)
z=9

x1 2

S4

x = (2,1/2)
z = 9.5

C. Prins MT14 Recherche Oprationnelle Slide #116

Mthode de Dakin
3. Application lexemple (fin)
On peut vrifier l'arborescence avec Excel, avec 5
programmes linaires rsoudre.
Heureusement, les solveurs commerciaux comme Excel
incluent une mthode de type Dakin pour les PLNE, qui va
gnrer automatiquement l'arborescence.
Cette mthode est appele la place du simplexe si on
prcise que les variables sont entires.
Ceci se fait avec des contraintes "ent" en Excel.

C. Prins MT14 Recherche Oprationnelle Slide #117

Mthode de Balas pour les PL en 0-1


1. Conditions d'utilisation
La mthode arborescente de Balas ou "mthode additive"
ncessite :

un PL en 0-1
sous forme canonique (contraintes )
en minimisation
avec c 0.

Il faut donc faire un changement de variable en remplaant


xj par xj = 1 - xj pour chaque cot cj < 0.

C. Prins MT14 Recherche Oprationnelle Slide #118

Mthode de Balas
2. Dfinition des nuds et sparation
Nud St de larbre : solution partielle dfinie par un
sous-ensemble F(t) de variables dj fixes 0 ou 1.
Les autres forment lensemble L(t) des variables libres
(= non encore fixes).
F(t) se dcompose en variables fixes 0, F0(t), et 1, F1(t).
Sparation de St : on choisit une variable xj de L(t) et on la fixe
0 ou 1, ce qui donne deux fils.

C. Prins MT14 Recherche Oprationnelle Slide #119

Mthode de Balas
3. Evaluation des nuds
On rcrit tout nouveau nud St dans le format suivant :

Min zt =

c .x

jL ( t )

i = 1K m :

jF1 ( t )

a .x

jL ( t )

ij

+
j

bi

j = 1K L(t ) : x j {0,1}

jF1 ( t )

ij

= si

si nouveau second membre. On a un minorant ev(St) du cot de


ce PL en fixant les variables libres de L(t) 0, car c 0 :

ev( S t ) =

jF1 ( t )

C. Prins MT14 Recherche Oprationnelle Slide #120

Mthode de Balas
4. Abandon de lexamen dun nud
Aprs avoir valu un nouveau nud St on fait dans lordre les
tests suivants :
Pas de meilleure solution ralisable :
On abandonne St si ev(St) zprov, cot de la meilleure solution
trouve jusqu prsent. Note : contrairement l'exemple pour
la mthode de Dakin, on est ici en minimisation!
Nouvelle meilleure solution :
Si si 0 pour tout i, on obtient immdiatement une nouvelle
meilleure solution en mettant 0 les xj de L(t).

C. Prins MT14 Recherche Oprationnelle Slide #121

Mthode de Balas
4. Abandon de lexamen dun nud (fin)
Nud sans solutions ralisables
Par exemple, soit la contrainte 3.x1 - 4.x2 + 3.x3 - 5.x4 -10.
La partie gauche est minimise en mettant 0 les variables
coefficients > 0, 1 celles coefficients < 0. Mme dans ce cas
on trouve -9 : la contrainte ne peut tre satisfaite!
Plus formellement, St peut tre cart (pas de solution) si :

i {1,2,K m}: ti =

Min (0, a ) > s

jL ( t )

ij

La somme ti des minima est simplement la somme des aij < 0.


Ce test ne concerne que les contraintes telles que si < 0.

C. Prins MT14 Recherche Oprationnelle Slide #122

Mthode de Balas
5. Implications
Pour acclrer les calculs, il existe des tests ou implications pour
dduire certaines variables, comme celui de Geoffrion.
Soit par exemple la contrainte -3.x1 + 2.x2 - 5.x3 + 6.x4 -4.
Le nud na pas t limin par le test prcdent, car la somme
des coefficients ngatifs (-8) est infrieure -4.
Si x3=0, il ny a plus de solution daprs le test prcdent.
Si x4=1, il ny a plus de solution daprs le test prcdent.
On peut donc fixer x3 1 et x4 0 dans tout le PL!

C. Prins MT14 Recherche Oprationnelle Slide #123

Mthode de Balas
5. Implications (suite)
Plus formellement :
Si la somme des aij < 0 sauf un (aip) dpasse si, alors xp = 1.
Si cette somme plus un aip > 0 dpasse si, alors xp = 0.
Do le test sous forme mathmatique :

x p = 0 si a ip > 0
Si i 1K m, p L(t ), Min(0, a ij ) + aip > si alors
x p = 1 si aip < 0
jL ( t )
Ce test se fait rapidement en calculant la somme des aij < 0, puis
en testant chaque aip dans une seconde passe.

C. Prins MT14 Recherche Oprationnelle Slide #124

Mthode de Balas
5. Implications (fin)
Contrainte i de l'exemple : -3.x1 + 2.x2 - 5.x3 + 6.x4 -4.
Somme des aij < 0 = -8
-8
-8
-8
-8

+
+
+
+

|ai1|
|ai2|
|ai3|
|ai4|

=
=
=
=

-8
-8
-8
-8

+
+
+
+

3
2
5
6

=
=
=
=

-5
-6
-3
-2

<
<

-4
-4
-4
-4

OK!
OK!
et ai3 < 0
et ai4 > 0

x3 = 1
x4 = 0

Plusieurs variables peuvent tre ainsi forces en cascade : il faut


repasser sur toutes les contraintes tant quon trouve au moins
une variable forcer, dans au moins une contrainte.

C. Prins MT14 Recherche Oprationnelle Slide #125

Mthode de Balas
6. Parcours de larborescence
En profondeur dabord : on teste en 1er le dernier nud cr.
Cette technique permet de trouver vite une premire solution.
En sparant un nud sur une variable xj, on traite dabord le fils
xj = 1. En effet, si le nud nest pas terminal, il faut fixer une
variable 1 pour amliorer la meilleure solution provisoire
Astuce de Geoffrion : stocker en tout nud lindice j de la
variable fixe : +j si xj fix 1, -j sinon. En remontant dans
larbre, si le pre a un indice < 0, il correspond un fils droit
dj trait (xj = 0) et on peut encore remonter. Si le pre a un
indice > 0, on le multiplie par -1 et on traite le fils droit.

C. Prins MT14 Recherche Oprationnelle Slide #126

Mthode de Balas
7. Choix de la dcision de sparation en un nud
Aprs le choix du nud St sparer, il faut fixer une variable
libre 1 ou 0. Balas a propos une heuristique de choix qui
diminue en moyenne la taille de l'arbre. Notons :
Q(t) = {i | si < 0} ensemble de lignes second membre < 0.
Non vide sinon on aurait une solution ralisable en mettant les
variables libres 0 et le nud St aurait t abandonn.
R(t) ensemble des indices de variables libres ayant un
coefficient ngatif sur au moins une des lignes de Q(t) :

R(t ) = { j L(t ), i Q(t ), aij < 0}

C. Prins MT14 Recherche Oprationnelle Slide #127

Mthode de Balas
7. Choix de la dcision de sparation en un nud (suite)
Pour satisfaire les contraintes de Q(t), il faut donc choisir dans
R(t) une variable et la fixer 1. Autant donc choisir une de ces
variables pour sparer!
Par exemple, si les contraintes sont :
(1) 7 x1
( 2)
2 x1

+ 2 x2
3x2

+ 4 x3
5 x3

(3)

4 x3

8 x1

x2

Alors Q(t)={2,3} et R(t)={2,3}. Pour satisfaire (2) et (3), il faut


forcer 1 au moins une des variables de R(t), x2 ou x3.

C. Prins MT14 Recherche Oprationnelle Slide #128

Mthode de Balas
7. Choix de la dcision de sparation en un nud (suite)
Comme on a une solution ralisable quand tous les si sont non
ngatifs, on dfinit une mesure de proximit dune solution :

P(t ) =

s = Min (0, s )

iQ ( t )

i =1, m

P(t) est donc la somme des seconds membres ngatifs. Plus il


est grand (proche de 0), plus on est prs de la "ralisabilit".
La proximit dune solution si on fixe xj 1 est alors :

P (t , j ) =

Min(0, s

i =1, m

a ij )

si - aij est la nouvelle valeur du second membre si xj = 1.

C. Prins MT14 Recherche Oprationnelle Slide #129

Mthode de Balas
Balas propose de sparer sur la variable j* de R(t) qui augmente
le plus la proximit dune solution si on la met 1 :

P (t , j*) = Max {P (t , j )}
jR ( t )

Dans lexemple prcdent, la sparation se fera sur x3, car :


R(t) = {2,3}
P(t,2) = min(0,3-2) + min (0,-2+3) + min (0,-3+1) = -2
P(t,3) = min(0,3-4) + min (0,-2+5) + min (0,-3+4) = -1
En d'autres termes, en fixant x3 1, la somme des seconds
membres < 0 s'approche plus vite de 0.

C. Prins MT14 Recherche Oprationnelle Slide #130

Mthode de Balas
8. Un exemple complet
Min

5 x1
x1
2 x1

+ 7 x2
+ 3x2
6 x2
x2

+ 10 x3
5 x3
+ 3 x3
2 x3

+ 3x4
x4
+ 2 x4
+ x4

+ x5
+ 4 x5
2 x5
+ x5

0
1

x {0,1}

Traitement du nud-racine S0
A la racine, on a L(0)={1,,5}, Q(0)={1,3} et R(0)={1,3,4}.
On a lvaluation triviale ev(S0) = 0 ! Prsentation en tableau
pour visualiser les PL rsiduels et calculer les proximits.

C. Prins MT14 Recherche Oprationnelle Slide #131

Mthode de Balas
Traitement du nud-racine S0 (suite)
PL des variables libres au nud S0 Second membre si - aij si
1
2
3
4
5
j
5
7
10
3
1
si
x1 = 1
x3 = 1 x4 = 1
-1
3
-5 -1
4
-2
-1
3
-1
2
-6
3
2 -2
0
-2
-3
-2
0
1
-2
1
1
-1
-1
1
-2
Ev(S0)
0
P(0,j)
-4
-3
-5
A droite, valeurs des seconds membres si on met 1 la variable
xj de R(t). La proximit P(t,j) est la somme des termes < 0 de la
colonne xj = 1. On spare sur x3 et on traite dabord le nud S1
(x3=1). Le cas x3=0 sera trait plus tard.

C. Prins MT14 Recherche Oprationnelle Slide #132

Mthode de Balas
Traitement du nud S1
PL des variables libres en S1
1
2
4
5
j
5
7
3
1
si
-1
3
-1
4
3
2
-6
2
-2
-3
0
1
1
1
1
Ev(S1)
10
P(1,j)

si - aij si
x2 = 1
0
3
0
0

x5 = 1
-1
-1
0
-2

x3 = 1, L(1)={1,2,4,5}, F1(1)={3}, Q(1)={2}, R(1)={2,5},


ev(S1) = 10.x3 = 10. On spare sur x2. Le nud S2 obtenu pour
x2 = 1 est en fait une premire solution ralisable x =
(0,1,1,0,0), de cot 17. Cest la meilleure solution provisoire.

C. Prins MT14 Recherche Oprationnelle Slide #133

Mthode de Balas
Traitement du fils gauche S3 de S1 (x3=1 et x2=0)
PL des variables libres en S3
1
4
5
j
5
3
1
s
-1
-1
4
3
2
2
-2
-3
0
1
1
1
L3={1,4,5}, F1(3)={3}, F0(3)={2}, Q(3)={2}, R(3)={5}.
Dans la 2me contrainte, t2 (somme des a2j < 0) = -2 > -3.
On laisse donc tomber S3 car il na pas de solution ralisable.

C. Prins MT14 Recherche Oprationnelle Slide #134

Mthode de Balas
Traitement du fils gauche S4 de S0
On remonte sur la racine S0 pour construire le nud S4 pour x3 =
0. Lensemble des variables libres est L(4) = {1,2,4,5}.
PL des variables
1
2
4
5
7
3
-1
3
-1
2
-6
2
0
1
1

libres en S4
5
j
1
s
4
-2
-2
0
1
-1

Somme des coefficients < 0 dans la contrainte 3 : t3 = 0 > -1.


Pas de solution. Fin de larbre : 5 nuds (63 dans le pire cas).

C. Prins MT14 Recherche Oprationnelle Slide #135

Mthode de Balas
S0

x3 = 1

S1

x3 = 0

10

x2 = 1

S2

17

Solution :
x = (0,1,1,0,0)
z = 17

x2 = 0

Noeud vide

10

Noeud vide

C. Prins MT14 Recherche Oprationnelle Slide #136

Modlisation en PLNE
1. Gnralits
La PLNE permet de modliser des contraintes intraitables sans
variables entires. Les techniques sont souvent astucieuses et
utilisent surtout des variables binaires.

2. Contraintes de sac dos (knapsack constraints)


Soit n objets de poids ai et de "valeur" bi et un sac de capacit B
qui ne peut pas contenir tous les objets. Le problme du sac
dos en 0-1 consiste trouver un sous-ensemble dobjets, de
poids total compatible avec la capacit du sac, et de valeur totale
maximale.

C. Prins MT14 Recherche Oprationnelle Slide #137

Modlisation en PLNE
2. Contraintes de sac dos (suite)
On obtient un PL en 0-1 trs simple une seule contrainte, avec
des variables binaires xi valant 1 si on prend lobjet i.
n

(1) Max ci xi
i =1

( 2)

a x b
i =1

(3) i = 1... n, xi {0,1}


Les contraintes comme (2), dites "de sac dos" sont frquentes
en PLNE pour exprimer des contraintes de capacit.

C. Prins MT14 Recherche Oprationnelle Slide #138

Modlisation en PLNE
3. Contraintes daffectation (assignment constraints)
Soit n objets affecter n places. Chaque objet i doit tre
affect une place j et chaque place j doit recevoir un objet i.
Si xi {1,2,,n} est le n de place o est affect lobjet i, les xi
doivent tre tous diffrents. Il est impossible dexprimer ce genre
de contrainte sous forme linaire. Seule solution : variables
binaires xij = 1 si objet i est affect la place j :
n

i : xij = 1
j =1

et

j : xij = 1
i =1

C. Prins MT14 Recherche Oprationnelle Slide #139

Modlisation en PLNE
4. Expressions logiques
Les variables binaires sont utiles pour traduire des expressions
logiques. On associe chaque proposition une variable binaire
valant 1 si et seulement si la proposition est vraie. Exemples
avec deux variables p et q pour deux propositions P et Q.
Expression logique vraie
non P
P ou Q (ou inclusif)
P ou bien Q (ou exclusif)
P et Q
P Q (P implique Q)
P Q (P quivalent Q)

Contrainte quivalente
p = 0 (ou 1 - p = 1)
p+q1
p+q=1
p = 1 et q = 1 (ou p + q = 2)
pq
p=q

C. Prins MT14 Recherche Oprationnelle Slide #140

Modlisation en PLNE
5. Variables discrtes
Soit une variable x qui ne peut prendre quun ensemble fini de
valeurs {v1, v2, , vk}. On introduit k variables boolennes yi, i =
1k et on fait le changement de variable :

x=

v .y

i =1, k

Puis on ajoute la contrainte :

i =1, k

=1

C. Prins MT14 Recherche Oprationnelle Slide #141

Modlisation en PLNE
6. Petites variables entires
13 scrit 1101 en binaire (1x8+1x4+1x1). En fait, un entier x
infrieur 2p peut scrire avec p chiffres binaires (bits) yi :

x=

2 .y
i

i = 0 , p 1

Si par exemple on a un PLNE avec des variables entires


infrieures 16 = 24, on peut remplacer chaque variable entire
par 4 variables binaires. Cette transformation est intressante
car les PL en 0-1 sont en gnral plus faciles rsoudre que les
PL variables entires quelconques.

C. Prins MT14 Recherche Oprationnelle Slide #142

Modlisation en PLNE
7. Variables nulles ou bien bornes infrieurement
Une usine peut faire un produit j. Sil est fabriqu, il faut en faire
au moins Qj units pour des questions de rentabilit.
On a donc xj = 0 ou bien xj Qj. Soit un indicateur (variable
binaire) yj = 1 si le produit est fabriqu et M un grand entier :

x j Q j .y j

x j M .y j

y j {0,1}
Si yj = 0, alors xj = 0, et si yj = 1, alors xj Qj.

C. Prins MT14 Recherche Oprationnelle Slide #143

Modlisation en PLNE
7. Variables nulles ou bornes infrieurement (suite)
Un des sens de lquivalence est souvent assur par loptimisation. Par exemple, soit un cot fixe cj si on dcide de faire le
produit : cj.yj va figurer dans la fonction-objectif minimiser.
La contrainte xj M.yj peut alors tre supprime : en thorie, on
pourra avoir xj = 0 et yj = 1, mais pas loptimum car la
minimisation du cot va mettre yj 0.
Cette technique dindicateur peut servir pour des implications.
Par exemple, pour positionner un indicateur y 1 si au moins
une des variables x1 ou x2 ou x3 sont non nulles :
x1 + x2 + x3 M.yi

C. Prins MT14 Recherche Oprationnelle Slide #144

Modlisation en PLNE
8. Contraintes disjonctives en ordonnancement
Soit deux tches i et j, de dures pi et pj, ordonnancer sur une
machine des instants ti et tj dterminer. Pour viter les
chevauchements, il faut que : ti + pi tj ou tj + pj ti.
Soit une variable binaire yij = 1 si et seulement si i est avant j,
puis deux contraintes avec une grande constante positive M :

t i + pi t j + M .(1 y ij )

t j + p j t i + M . y ij
Par exemple, si yij = 1, la premire contrainte devient active et la
seconde est redondante car trivialement vrifie.

C. Prins MT14 Recherche Oprationnelle Slide #145

Modlisation en PLNE
9. Respect dun sous-ensemble de contraintes
Parfois, on ne peut pas satisfaire toutes les contraintes dun
PLNE, par exemple des prfrences pour un emploi du temps.
Changement de contraintes si on accepte de respecter au moins
k contraintes sur les m contraintes du PLNE :

i = 1K m :

j =1, n

ij

.x j bi

i = 1K m : aij .x j bi + M . y i

j =1, n

yi = m k
i =1,m
y {0,1}m

Si la variable binaire yi = 1, la contrainte i d'origine peut ne pas


tre respecte!

C. Prins MT14 Recherche Oprationnelle Slide #146

Chapitre 4
Programmation dynamique

C. Prins MT14 Recherche Oprationnelle Slide #147

Partie 1
Principes de base

C. Prins MT14 Recherche Oprationnelle Slide #148

Introduction
Mthodes arborescentes et programmation dynamique (DP)
sont des mthodes d'numration intelligentes pour
rsoudre des problmes d'optimisation discrte.
Dans les premires, on divise implicitement l'espace des
solutions par des dcisions. On obtient une arborescence.
Programme linaire en 0-1
(mthode de Balas) :
on spare en forant une
variable 0 ou bien 1.

La plupart des nuds sont limins l'aide de bornes.

C. Prins MT14 Recherche Oprationnelle Slide #149

Introduction
La programmation dynamique consiste dcomposer le
problme en sous-problmes et assembler la solution
complte partir des solutions des sous-problmes.
Le gain par rapport une numration complte vient de la
rutilisation des rsultats des sous-problmes.
Nom donn par Bellman (1957) : cette poque, le sens
principal de programming tait planification. Un nom plus
adapt serait optimisation rcursive.
Nous allons voir quelques lments de mthodologie, mais
les mthodes de DP sont souvent astucieuses et demandent
un certain entrainement.

C. Prins MT14 Recherche Oprationnelle Slide #150

Problme de chemin optimal


1. Dfinition du problme
Graphe orient sans circuit G = (V,A,C) avec n nuds, m
arcs et des cots Cij sur les arcs. On veut calculer par DP un
chemin de cot minimal de s t.
7

a
2

g
4

1
2

t
4

C. Prins MT14 Recherche Oprationnelle Slide #151

Problme de chemin optimal


2. Sous-structure optimale et relations rcursives
Vers 1950, Bellman et Pontriaguine ont introduit le principe
d'optimalit : une politique (suite de dcisions) optimale est
compose de sous-politiques optimales.
Ce principe est soit vident, soit difficile prouver. Il faut
d'abord trouver comment dcomposer la construction d'une
solution optimale en une suite de dcisions.
Au lieu d'utiliser ce principe, nous dirons qu'un problme a
une sous-structure optimale si une solution optimale
contient des solutions optimales de sous-problmes.

C. Prins MT14 Recherche Oprationnelle Slide #152

Problme de chemin optimal


2. Sous-structure optimale et relations rcursives
Sous-structure optimale : tout sous-chemin d'un chemin
optimal est optimal! En particulier, un chemin optimal de
s j est optimal de s un prdcesseur i de j.
Soit F(j) le cot de (label de j) et i le prdcesseur de j
sur . On a F(i)+Cij = F(j), d'o les relations rcursives :

F ( s ) = 0 (condition initiale, pour arrter la rcursion)

j s : F ( j ) = min {F (i ) + Cij : i prdcesse ur de j}


Le rsultat recherch est F(t).

C. Prins MT14 Recherche Oprationnelle Slide #153

Problme de chemin optimal


3. Forme non rcursive Calculs bottom-up
L'utilisation directe des relations rcursives est appele
calcul du haut vers le bas ou top-down. Elle est peu efficace
car des sous-problmes sont rsolus plusieurs fois. Par
exemple, si 2 nuds ont un mme prdcesseur i, F(i) sera
calcul deux fois inutilement.
Un calcul du bas vers le haut ou bottom-up, non rcursif,
est plus efficace car on rsout une seule fois chaque sousproblme, ds que ses propres sous-problmes sont
rsolus. Ici, on peut calculer F(j) ds que le F(i) de chaque
prdcesseur i est prt.

C. Prins MT14 Recherche Oprationnelle Slide #154

Problme de chemin optimal


3. Forme non rcursive Dcomposition en niveaux
Elle est facile si on dcompose le graphe en niveaux.
Partition des nuds en p niveaux V = V0 V1 Vp-1 :
k := -1
repeat
k := k+1
ranger dans le niveau Vk tous les nuds sans prdcesseurs
effacer virtuellement dans G les nuds de Vk et leurs arcs
until tous les nuds sont rangs.

Vk contient les nuds i tel que le plus long chemin de s i


(en nombre d'arcs) ait k arcs. Le 1er niveau est donc V0.

C. Prins MT14 Recherche Oprationnelle Slide #155

Problme de chemin optimal


3. Forme non rcursive Calcul la main sur le graphe
Le graphe-exemple est dj dcompos en niveaux.
Les calculs sont faits niveau par niveau.
F(j) est crit sur chaque nud j. Chemin optimal en gras.
7
2

a
2
0

7
5

4
4

4
8

10
2

3
5

g
1

7
3
1

8
1

10
5

C. Prins MT14 Recherche Oprationnelle Slide #156

Problme de chemin optimal


4. Algorithme bottom-up si G dcompos en niveaux
Connu sous le nom d'algorithme de Bellman.
P(j) stocke le prdcesseur de j sur le chemin de s j.
F(s):=0; P(s) := 0
for k := 1 to p-1 do
//Pour chaque niveau sauf le 1er
//Pour chaque noeud du niveau
for each j in Vk do
F(j) := +
//Calcul de Min{F(i)+Cij: i prd. de j}
for each prdcesseur i de j with F(i) + Cij < F(j) do
F(j) := F(i) + Cij
P(j) := i
endfor
endfor
endfor

C. Prins MT14 Recherche Oprationnelle Slide #157

Problme de chemin optimal


5. Version quivalente mais avec les successeurs
On a utilis les prdcesseurs, mais les graphes sont le plus
souvent cods par des listes de successeurs.
F(s):=0; ; P(s) := 0
for each i s do F(i) := + endfor
for k := 0 to p-2 do
for each i in Vk do
for each successeur j de i with F(i) + Cij < F(j) do
F(j) := F(i) + Cij
P(j) := i
endfor
endfor
endfor

C. Prins MT14 Recherche Oprationnelle Slide #158

Problme de chemin optimal


6. Extraction de la solution optimale
Le chemin optimal de cot F(t) est extrait des P(j).
k est le nombre de nuds du chemin.
k := 0; j := t
repeat
k := k+1
path(k) := j
j := P(j)
until j = 0.

Le chemin est obtenu l'envers dans Path(1) Path(k),


mais il est facile de l'inverser.

C. Prins MT14 Recherche Oprationnelle Slide #159

Problme de chemin optimal


7. Analyse de complexit (estimation de l'effort de calcul)
La mthode teste chaque nud et ses prdcesseurs (slide
155) ou successeurs (156), ce qui revient tester une fois
chaque arc : l'algorithme est en O(m).
Exemple. Soit G avec p niveaux de n nuds chacun, plus
un niveau avec s et un avec t. Chaque nud du niveau k
est connect chaque nud du niveau k+1.
Enumration complte des chemins. Il y a np chemins de s
t, chacun avec p+1 additions : O(p.np) additions.
Mthode de DP : m=n2(p-1)+2n, d'o O(n2p) additions.

C. Prins MT14 Recherche Oprationnelle Slide #160

Conception d'une mthode de DP


Nous avons vu une analyse typique de mthode de DP :
1. Analyser la structure d'une solution optimale, en
essayant de dtecter une sous-structure optimale.
2. Dfinir rcursivement le cot d'une solution optimale.
3. Calculer le cot d'une solution optimale de bas en haut
(rutiliser les rsultats des sous-problmes).
4. Extraire une solution optimale.
La phase 2 est la plus difficile. La phase 4 ne sert que si on
veut la solution dtaille. Elle implique de stocker certaines
infos en phase 3, comme les P(j) de l'exemple.

C. Prins MT14 Recherche Oprationnelle Slide #161

Conception d'une mthode de DP


Souvent, mais pas toujours /, calculer une solution peut
tre vu comme l'volution d'un systme dans le temps.
A partir d'un tat initial e0 (solution vide), on doit choisir p
dcisions pour gnrer une suite d'tats (solutions
partielles) (e0, e1, e2, , ep), le dernier tant optimal.
Ceci revient calculer un chemin optimal dans un graphe
sans circuit (graphe d'tats) :
ensemble des nuds : les tats possibles
niveau k: ensemble d'tats aprs k dcisions
arc (i,j) et cij : une dcision et le cot associ.

C. Prins MT14 Recherche Oprationnelle Slide #162

Conception d'une mthode de DP


Ainsi, dans beaucoup de problmes, on doit juste trouver le
bon graphe d'tats et utiliser l'algorithme de Bellman.
La partie suivante est consacre ce type de problmes.
Le graphe d'tats doit tre sans circuit et les cots Cij ne
doivent pas dpendre des dcisions prises avant l'tat i,
sinon une gnralisation de la programmation dynamique
appele contrle optimal doit tre utilise.
Note: la seconde exigence rappelle la proprit sans
mmoire des processus de Markov.

C. Prins MT14 Recherche Oprationnelle Slide #163

Partie 3
Problmes se ramenant un
chemin optimal dans un
graphe d'tats

C. Prins MT14 Recherche Oprationnelle Slide #164

Chemins contraintes de ressources


1. Dfinition
Les problmes de chemins optimaux avec contraintes de
ressources (resource-constrained shortest path problem ou
RCSPP) sont frquents (gestion de projet).
Donnes d'un RCSPP gnral :

graphe sans circuit G = (V,A,C), cots Cij sur les arcs


un nud de dpart s et un nud d'arrive t
un ensemble R de r ressources
bk units disponibles pour la ressource k, k = 1,2,,r
un arc (i,j) consomme aijk units de ressource k.

C. Prins MT14 Recherche Oprationnelle Slide #165

Chemins contraintes de ressources


1. Dfinition (suite)
But : calculer un chemin de s t, de cot total minimal et
compatible avec les contraintes de ressources.
Pour toute ressource k, la consommation cumule le long
du chemin ne doit pas dpasser la disponibilit :

k R :

( i , j )

ijk

bk

Le RCSPP est bien plus difficile que le problme classique


du chemin optimal, il peut mme tre infaisable.

C. Prins MT14 Recherche Oprationnelle Slide #166

Chemins contraintes de ressources


2. Relations rcursives
La mthode gnralise celle de Bellman pour les graphes
sans circuit, en traitant les contraintes de ressources.
Soit F(j,x1,x2,,xr) le cot d'un chemin optimal de s j,
consommant xk units de ressource k, k=1,2,,r. On a :

F ( s, x1 , x2 ,K, xr ) = 0 pour 1 k r et 0 xk bk

j s : F ( j , x1 ,K, xr ) =
min{F (i, x1 aij1 ,K, xr aijr ) + Cij : (i, j ) A, 1 k r , xk aijk 0}

C. Prins MT14 Recherche Oprationnelle Slide #167

Chemins contraintes de ressources


3. Forme non rcursive (calculs bottom-up)
On utilise l'algorithme de Bellman avec successeurs (slide 156)
mais avec plusieurs labels (cot | consommation) par nud : on
ne sait pas si le moins coteux va tre prolong jusqu' t.
C12=10
a12=2
(0|0)

Labels:
(10|2)
(20|1)

(15|2)
(25|1)

2
C12=20
a12=1

(30|2)

3
C23=5
a23=0

4
C34=5
a34=1

Ici, s=1, t=1, r=1 et b1=2. On garde 2 labels au nud 2 car on


ne sait pas encore que le chemin de cot 10 va chouer.

C. Prins MT14 Recherche Oprationnelle Slide #168

Chemins contraintes de ressources


3. Forme non rcursive Labels et dominance
Soit Lab(j) l'ensemble des labels du nud j.
Un label L est not (F | x1,x2,,xr) :
F est le cot du chemin associ de s j,
x est le vecteur des consommations de ressources.
Tests de dominance pour supprimer des labels :
L = (F | x1,,xr) domine (faiblement) L = (F | x1,,xr)
si F F et xk xk pour k = 1, 2, , r.
Exemple. Pour r = 1, (10|2) domine (10|2), (11|2) et
(10|3) mais ne domine pas (8|3) ou (11|1).

C. Prins MT14 Recherche Oprationnelle Slide #169

Chemins contraintes de ressources


4. Algorithme G dcompos en p niveaux V0Vp-1
Lab(s) := {(0|0,,0)}
for each j s do Lab(j) := endfor
for each niveau k := 0 to p-2 do
for each nud i de Vk and each successeur j de i do
for each label L = (F | x1, , xr) in Lab(i) do
faire un nouveau label L = (F+Cij | x1+aij1, , xr+aijr)
if L faisable et domin par aucun label de Lab(j) then
ajouter L Lab(j) et mmoriser son prdcesseur L
endif
endfor
endfor
endfor

C. Prins MT14 Recherche Oprationnelle Slide #170

Chemins contraintes de ressources


5. Analyse de complexit
Chaque nud i et les arcs qui en partent sont inspects.
Les m arcs de G sont tests comme dans l'algorithme de
Bellman (slides 156 et 158). Mais chacun des |Lab(i)|
labels du nud i peuvent tre prolongs par un arc (i,j).
r

Lab (i ) q = bk
k =1

D'o une complexit en O(mq), sensible au nombre de


ressources et aux disponibilits. En pratique, beaucoup de
labels sont limins par les tests de dominance.

C. Prins MT14 Recherche Oprationnelle Slide #171

Chemins contraintes de ressources


6. Remarques finales
Normalement, on prend la fin le label le moins cher du
nud t, mais les autres labels peuvent tre intressants
(plus chers, mais avec moins de ressources).
On peut rsoudre de la mme manire des chemins
optimaux avec plusieurs objectifs, par exemple avec des
labels (F1,F2) pour deux objectifs.
Exemple : itinraire minimisant la dure du dplacement
(F1) et le cot total des pages d'autoroute (F2).

C. Prins MT14 Recherche Oprationnelle Slide #172

Gestion des stocks


1. Dfinition du problme
Un marchand achte et revend des camions. La table donne les
demandes pour p=5 jours et les prix d'achat. Le marchand peut
stocker seulement n=5 camions. Combien de camions acheter
chaque jour pour minimiser le cot total ?
Jour t
Demande dt
Prix unitaire ct

1
2
13

2
3
15

3
4
20

4
3
11

5
2
12

Conventions :
stock initial et stock final nul, quantits entires.
camions achets en dbut de journe, avant les ventes.
la capacit de stockage inclut les nouveaux camions.

C. Prins MT14 Recherche Oprationnelle Slide #173

Gestion des stocks


2. Modlisation possible avec un PLNE
xt quantit achete le jour t, st stock la fin du jour t.
p

(1) Min

ct xt
t =1

(2) st = st 1 + xt d t , t = 1K p
(3) s0 = 0
(4) s p = 0
(5) 0 st 1 + xt n, t = 1K p 1
(6) xt n et xt IN , t = 1K p
Note: (2),(3),(6) les st sont entiers si les dt sont entiers.

C. Prins MT14 Recherche Oprationnelle Slide #174

Gestion des stocks


3. Relations rcursives
Etat (st, t), cot F(st, t) : avoir st camions la fin du jour t.
Supposons qu'on achte xt camions (cot ct.xt) le jour t.
D'aprs (2), l'tat prcdent est donc (st + dt - xt, t-1).
D'o les relations rcursives :

t > 0, st : F ( st , t ) = min{F ( st + d t xt , t 1) + ct xt : 0 xt n}

F (0,0) = 0 et st > 0 : F ( st ,0) = +


But : trouver une suite de dcisions minimisant F(sp=0,p).

C. Prins MT14 Recherche Oprationnelle Slide #175

Gestion des stocks


4. Graphe d'tats (dbut, finir en TD)
x1
(0,0)

2
3
4
5

d1= 2
p1=13
(0,1)
26

x2
3
2

(1,1)

39

(2,1)
52

d2= 3
p2=15
(0,2)

Par exemple :

65

F(2,0) = min (26+3x15=71,


39+2x15=69,
52+1x15=67,
65+0x15=65)
= 65

(3,1)
65

C. Prins MT14 Recherche Oprationnelle Slide #176

Gestion des stocks


5. Analyse de complexit et remarques
On a encore un problme de chemin optimal dans un
graphe sans circuit, en O(n2.p) comme la slide 158.
On peut travailler avec un tableau de n+1 lignes et p+1
colonnes, au lieu de gnrer le graphe explicitement.
La DP marche bien en gestion des stocks et planification de
production (alternative la PLNE) : le nombre d'tats est
assez petit si les quantits sont entires.
On peut ajouter facilement des contraintes (personnel,
machines) et des cots (stockage, lancement).

C. Prins MT14 Recherche Oprationnelle Slide #177

Sac dos en 0-1


1. Dfinition des problmes de sac dos
Soit n objets de poids ai et profits ci. Dans le problme de
sac dos en 0-1 (PSD01), on veut placer dans un sac de
capacit b un sous-ensemble d'objets de profit maximal.
Soit xi une variable binaire = 1 si on prend l'objet i.
On peut crire un PL en 0-1 une seule contrainte :
n

(1) Max ci xi
i =1

( 2)

a x b
i =1

(3) i = 1... n, xi {0,1}

C. Prins MT14 Recherche Oprationnelle Slide #178

Sac dos en 0-1


1. Dfinition des problmes de sac dos
Malgr un nonc simple, le PSD01 est difficile. Noter que
sa relaxation linaire (xiIR) est facile : prendre les objets
par ci / ai dcroissant et couper si ncessaire le dernier
objet pris, pour remplir le sac compltement.
Si les poids sont gaux aux profits (ai = ci), le PSD01 est
appel subset-sum ou stick-stacking problem.
Dans le sac dos en nombres entiers, on peut prendre
n'importe quel nombre entier de chaque objet : xiIN.
Souvent, on a une borne suprieure ui pour chaque xi.

C. Prins MT14 Recherche Oprationnelle Slide #179

Sac dos en 0-1


2. Applications
Ces problmes font partie de la famille des problmes de
dcoupe et de placement. Les contraintes (2), dites "de sac
dos", sont utilises dans divers autres problmes pour
modliser des restrictions de capacit.
Il existe des extensions trs difficiles 2 dimensions :

couper des rectangles dans de grandes plaques,


placer des caisses non gerbables dans des camions.

Et 3 dimensions: placer des caisses dans des conteneurs.


Placer des cercles ou des polygones est encore plus dur.

C. Prins MT14 Recherche Oprationnelle Slide #180

Sac dos en 0-1


3. Relations rcursives
Pas vident! Un tat (k,p) est un sous-ensemble des k
premiers objets, de poids p et de profit maximal F(k,p).
Certains de ces tats peuvent tre non atteignables.
On prend ou pas l'objet k l'tape k (xk=1 ou 0). Donc :
k = 1K n, p = 0Kb : F (k , p) = max {F (k 1, p ), F (k 1, p ak ) + ck }

p = 0Kb : F (0, p) = 0

Comme on ignore si l'tat (n,b) est atteint (sac plein),


profit optimal est : max {F(n,p)|0 p b}.

le

C. Prins MT14 Recherche Oprationnelle Slide #181

Sac dos en 0-1


4. Graphe d'tats pour a=(3,2,1,2), c=(8,4,10,5), b=6.
(1,6)

(2,6)

(3,6)
10

(1,5)

(2,5)

12

23

22
(3,5)
12

(4,6)

0
5

(4,5)
19

4
(1,4)

(2,4)

(3,4)
10

(1,3)

8
8

(2,3)
8

(1,2)

(2,2)

0
10
0

18

0
5

(3,3)
14

18
0

(3,2)

(4,4)

(4,3)
15

0
5

(4,2)
5

4
(1,1)

(2,1)

(3,1)
10

(0,0)
0

0
a1= 3
c1= 8

(1,0)
0

0
a2= 2
c2= 4

(2,0)
0

0
a3= 1
c3=10

10
(3,0)
0

0
5
0
a4= 2
c4= 5

(4,1)
10
(4,0)
0

C. Prins MT14 Recherche Oprationnelle Slide #182

Sac dos en 0-1


5. Analyse de complexit
Enumration complte : 2n sous-ensembles d'objets!
L'numration cote donc au moins 2n sans compter le
calcul du poids et du profit de chaque ensemble. On dit
qu'elle est en (2n).
Mthode de DP : le graphe a 1+n(b+1) tats et 2 arcs par
tat, d'o O(nb) additions ou comparaisons.
La mthode de DP est donc rapide si b (capacit du sac)
n'est pas trop grand, sinon le nombre d'tats explose.

C. Prins MT14 Recherche Oprationnelle Slide #183

Partie 4
Un exemple non quivalent
un problme de chemin

C. Prins MT14 Recherche Oprationnelle Slide #184

Multiplication de matrices
1. Dfinition du problme
Produit C = A x B de 2 matrices A (m x n) et B (n x p) :
for i := 1 to m do
for j := 1 to p do
C(i,k) = 0
for k := 1 to n do
C(i,k) := C(i,k) + A(i,k) x B(k,j)
end
end
end.

On fait O(mnp) additions ou multiplications.

C. Prins MT14 Recherche Oprationnelle Slide #185

Multiplication de matrices
1. Dfinition du problme (suite)
4 matrices : A1 10x10, A2 10x50, A3 50x1, A4 1x20.
5 faons de calculer le produit, avec des cots diffrents:
A1 x (A2 x (A3 x A4))
A1 x ((A2 x A3) x A4)
(A1 x A2) x (A3 x A4)
(A1 x (A2 x A3)) x A4
((A1 x A2) x A3) x A4

13000 multiplications
2700 multiplications
...
...
...

Si le produit est calcul souvent, il est intressant de


trouver l'ordre qui minimise le nombre de multiplications.

C. Prins MT14 Recherche Oprationnelle Slide #186

Multiplication de matrices
2. Relations rcursives
Soit le produit de n matrices A1, A2 , , An.
Chaque matrice Ai a pi-1 lignes et pi colonnes.
Soit M(i,j) le nombre minimum de multiplications pour
calculer le sous-produit Ai x Ai+1 x x Aj.
Supposons que le dernier produit calcul pour M(i,j) soit
(Ai x x Ak) x (Ak+1 x x Aj) :
alors M(i,j) = M(i,k) + M(k+1,j) + pi-1.pk.pj
Les relations rcursives viennent du fait que k peut varier
de i j-1 pour le dernier produit dans Ai x Ai+1 x x Aj.

C. Prins MT14 Recherche Oprationnelle Slide #187

Multiplication de matrices
2. Relations rcursives
Si i = j, on a une seule matrice et M(i,i) = 0.

si i = j : 0

M (i, j ) = si i < j :
min { M (i, k ) + M ( k + 1, j ) + pi 1 p k p j : i k < j

Le nombre optimal de multiplications est donc M(1,n).


Une application directe des relations est inefficace. Ici, il
n'est pas vident de voir comment recycler les rsultats des
sous-problmes!

C. Prins MT14 Recherche Oprationnelle Slide #188

Multiplication de matrices
3. Forme non rcursive (calculs bottom-up)
On va calculer les M(i,j) pour tous les produits de 2
matrices, puis 3 matrices etc.
L'algorithme a besoin des tailles p0, p1, , pn mais pas des
contenus des matrices. Il fait ses calculs dans un tableau M,
n x n.
Pour sortir l'ordre des produits la fin, un tableau S n x n
est aussi utilis. S(i,j) est le point de coupure optimal
(valeur de k) pour calculer Ai x Ai+1 x x Aj.

C. Prins MT14 Recherche Oprationnelle Slide #189

Multiplication de matrices
3. Forme non rcursive Algorithme
initialiser M nxn 0
for u := 2 to n do
//Nb de matrices des produits
for i := 1 to nu+1 do
//Indice 1re matrice
j := i+u1
//Indice 2me matrice
M(i,j) :=
for k := i to j1 do
//Test des points de coupure
q := M(i,k) + M(k+1,j) + pi-1.pk.pj
if q < M(i,j) then M(i,j) := q; S(i,j) := k endif
endfor
endfor
endfor

C. Prins MT14 Recherche Oprationnelle Slide #190

Multiplication de matrices
4. Rsultats pour l'exemple de la slide 184
M
1
2
3
4

1
2
3
4
0 5000 600 800
0
0 500 700
0
0
0 1000
0

S
1
2
3
4

2
1

3
1
2

4
3
3
3

Le nombre minimal de multiplications est donc 800.


Mais dans quel ordre calculer le produit correspondant?

C. Prins MT14 Recherche Oprationnelle Slide #191

Multiplication de matrices
4. Rsultats pour l'exemple de la slide 184 (suite)
On peut calculer le produit optimal avec une fonction
rcursive Produit, dans laquelle A = (A1, A2 , , An).
function Produit (A, S, i, j): matrix
if i = j then return Ai
else
U := Produit (A, S, i, S(i,j))
V := Produit (A, S, S(i,j)+1, j)
return U x V
endif
end

Un appel Produit(A,S,1,n) calcule (A1 x (A2 x A3)) x A4.

C. Prins MT14 Recherche Oprationnelle Slide #192

Multiplication de matrices
5. Analyse de complexit
L'algorithme slide 188 a 3 boucles embotes avec des
indices u, i, k prenant O(n) valeurs chacun : O(n3).
Soit P(k) le nombre de faons de faire le produit de k
matrices (numration complte). On peut montrer :
1 si n = 1, sinon :

1 2(n 1) (2n 2)!


P(n) = n-1

=
P
(
k
)
P
(
n
k
)
= 4n / n3 / 2

k =1
n n 1 n!(n 1)!

L'numeration est bien plus lente que la mthode de DP !

C. Prins MT14 Recherche Oprationnelle Slide #193

Conclusion
On oublie souvent la DP en optimisation. Pourtant, elle
apporte des conomies normes en temps de calcul,
compare une numration complte.
Beaucoup de gens vitent la DP car ils doivent trouver les
relations de rcurrence et crire un petit programme.
En fait, on peut souvent deviner le graphe d'tats sans
trouver les relations rcursives, et le programme ncessaire
est en gnral trs petit.
De toute faon, on peut aussi tre bloqu avec un solveur
comme Excel si on ne trouve pas le bon modle!

C. Prins MT14 Recherche Oprationnelle Slide #194

Fin provisoire du cours !


Selon les annes, un chapitre supplmentaire
(programmation non linaire) peut tre distribu en mai.

C. Prins MT14 Recherche Oprationnelle Slide #195

MT14 Exercices de programmation linaire

TD 1 MODELISATION ET RESOLUTION GRAPHIQUE


Cette sance de TD concerne les slides 14 31 du cours.
Exercice 1 Modlisation d'un problme de mlange
Modliser sous forme de PL le problme suivant. Une usine doit faire 100 tonnes de granuls
pour btail en mlangeant trois matires premires : du bl, du soja et du tournesol, cotant
250, 200 et 300 euros/tonne. Le bl contient 60% damidon, 5% de protines et 15% de
graisses. Le soja 30, 20 et 10%. Le tournesol 30, 10 et 50%. Les granuls doivent avoir de 40
50% damidon, 15 20% de protines et 10 15% de graisses. Quelles quantits de
matires premires faut-il acheter pour minimiser le cot total des 100 tonnes de granuls ?
Exercice 2 Forme standard
Mettre en forme standard le PL suivant :

Max 4 x1 + 5 x 2
2 x1 + x 2 1
x1 x 2 3
3x1 + x 2 = 2
x1 0, x 2 de signe quelconque
Exercice 3 Problme des ciments
Rsoudre graphiquement le problme des ciments de la page 17 du cours.
Exercice 4 Le loueur de voitures
Un loueur de voitures a deux garages avec 12 et 8 voitures, et trois agences de location qui
veulent 8, 7 et 5 voitures. Les cots de transport des voitures des garages aux agences sont
donns par le tableau suivant. Le but est de transporter les voitures cot minimal.
Garages Agences

Voitures

12

Besoins

a) Modliser avec des variables xij, nombre de voitures livres par le garage i lagence j.
b) Montrer qu'on peut rduire ce problme un programme linaire de 2 variables seulement.
c) Rsoudre graphiquement le programme linaire obtenu.
Exercices de TD pour MT14 Page 1

TD 2 UTILISATION DEXCEL ET MODELISATION


Cette sance concerne le cours n 2 sur la prsentation du solveur d'Excel. Attention! Pour ce
TD il faut venir avec au moins un PC portable pour deux tudiants, et avec des batteries
charges vu le nombre rduit de prises de courant dans les salles de TD! Mettez-vous en
binme, en veillant intgrer les tudiants sans PC.

Exercice 5 Problme des ciments


A titre d'chauffement, refaire en Excel la version gnrique du problme des ciments, vue
dans la notice Excel, section IV.

Exercice 6 Le problme de mlange


Rsoudre avec Excel le problme de mlange modlis dans lexercice 1.

Exercice 7 Le loueur de voitures


Rsoudre avec Excel le modle de la question a) du loueur de voitures (exercice 4).

Exercice 8 Fabrication dalliages ( finir aprs le TD)


Lentreprise Steel a reu une commande de cinq tonnes dacier destin la fabrication de
coques de bateau. Cet acier doit avoir les caractristiques particulires du tableau suivant.
Elment chimique
Carbone (C)
Cuivre (Cu)
Manganse (Mn)

Pourcentage minimal
2
0,4
1,2

Pourcentage maximal
3
0,6
1,65

Pour fabriquer cet acier, Steel dispose de sept matires premires dont les caractristiques, les
quantits disponibles et les cots dachat sont donns dans le tableau ci-dessous.
Matire premire
Alliage de fer 1
Alliage de fer 2
Alliage de fer 3
Alliage cuivreux 1
Alliage cuivreux 2
Acier recycl 1
Acier recycl 2

C%
2,5
3
0
0
0
0
0

Cu %
0
0
0,3
90
96
0,4
0,6

Mn %
1,3
0,8
0
0
4
1,2
0

Stocks disponibles en kg
4 000
3 000
6 000
5 000
2 000
3 000
2 500

Cots en /kg
1,20
1,50
0,90
1,30
1,45
1,20
1

Modliser sous forme mathmatique le problme consistant dterminer la composition de


lacier fabriquer pour minimiser les cots de production. Rsoudre ensuite avec Excel.

Exercices de TD pour MT14 Page 2

TD 3 METHODE DU SIMPLEXE
Cette sance de TD correspond aux pages 32 68 du cours.
Si on a le temps, on peut finir ce TD en revenant sur le problme des alliages du TD 2.

Exercice 9 Mthode du simplexe


Rsoudre gomtriquement, puis avec la mthode du simplexe sans tableau, puis avec la
forme-tableau, le programme linaire suivant :
Max z =

2 x1

x2

x2
+ 2 x2

3
6

x1 + 2 x2
x1 ,
x2

2
0

x1
x1

Exercice 10 Placement sur un sommet donn


Rsoudre graphiquement le programme linaire suivant. Ensuite, le mettre sous forme
standard et donner directement le PL mis en forme pour la solution de base correspondant au
point (2,3) de la rsolution graphique. En clair, on ne doit pas passer par les itrations
successives de lalgorithme du simplexe.
Max x1 + 2.x2
x1 + x2 5
x1 + x2 1
2.x1 x2 4
x1 , x2 0

Exercice 11 Absence de base initiale vidente


Rsoudre gomtriquement le PL suivant, puis trouver une solution ralisable
algbriquement, par la mthode des deux phases :

Min z =

2 x2
+
x2
+
x2
+
x2
x1 ,
x2

x1
x1
x1

2
1
3
0

Exercices de TD pour MT14 Page 3

TD 4 DUALITE ET MODELISATION
Cette sance de TD porte sur les pages 72 82 du cours.

Exercice 12 Dualit
Montrer que le dual du programme linaire suivant, une seule contrainte, est facile
rsoudre, puis en dduire la solution optimale du primal.
Max z = 4 x1 + 3 x 2 + x3
2 x1 + x 2 + x3 6
x1 , x 2 , x3 6
On interprte maintenant ce PL comme le remplissage d'un camion de 6 tonnes avec 3
produits chimiques en poudre conditionns respectivement en bidons de 2 tonnes, 1 tonne et 1
tonne et de valeurs 4, 3 et 1 millier d'euros. On peut si ncessaire reconditionner chaque
produit dans des sacs de poids quelconque. Le PL modlise le problme suivant : quelles
quantits de produits faut-il mettre dans le camion pour maximiser la valeur du chargement?
Expliquer avec cette interprtation pourquoi la solution optimale est finalement vidente.

Exercice 13 Dualit
On reprend le primal de la page 73 du cours et son dual. On interprte le primal comme un
problme de production de deux objets avec deux ressources.

Max z = 4 x1 + 7 x2

Min w = 6 y1 + 8 y 2

3 x1 + 5 x2 6

3 y1 + y 2 4

x1 + 2 x2 8

5 y1 + 2 y 2 7

x1 , x2 0

y1 , y 2 0

La rsolution gomtrique du primal donne x* = (0,1.2) et z* = 8.4. En dduire la solution


optimale du dual en utilisant les relations d'exclusion. De combien augmente le profit du
primal si on augmente de 1 la capacit de la ressource 1 ? Mme question pour la ressource 2.
Voici le dernier tableau du simplexe pour le primal en forme standard. En dduire directement
les valeurs optimales des variables pour le dual en forme standard.

Base

b'

0.6

0.2

1.2

-0.2

-0.4

5.6

-0.2

-1.4

-8.4
-zB

Exercices de TD pour MT14 Page 4

Exercice 14 Modlisation
Lentreprise DeRoo fabrique des bicyclettes pour enfants. Les prvisions de ventes en milliers
dunits pour lanne venir sont donnes dans le tableau suivant. La capacit de production
de lentreprise est de 30 000 bicyclettes par mois. Elle peut produire plus en faisant faire des
heures supplmentaires ses employs. Mais le cot de revient dune bicyclette est alors plus
lev : 160 par unit, au lieu de 130 .
Janv

Fv

Mars

Avril

Mai

Juin

Juil

Aot

Sept

Oct

Nov

Dc

30

15

15

25

33

40

45

45

26

14

25

30

Actuellement, il y a 2 000 bicyclettes en stock. On peut calculer les cots de stockage en


considrant un cot de 20 par unit contenue dans le stock en fin de mois. On considre que
les capacits de stockage de lentreprise sont pratiquement illimites (ceci signifie que la
capacit relle, bien quvidemment limite, nest pas limitante ici). Nous sommes le premier
janvier. Modliser sous forme de PL gnrique le problme suivant : quelles quantits doivent
tre fabriques et stockes dans les douze prochains mois, de faon respecter les demandes
prvisionnelles tout en minimisant les cots ?

Exercices de TD pour MT14 Page 5

MT14 Exercices de PLNE

TD 5 PLNE EQUIVALENTS A LEUR PL RELAXE ET METHODE DE DAKIN


Exercice 15 PLNE quivalent son PL relax
Rappelez pourquoi les variables sont entires dans la solution du problme de transport. Dans
les exercices 4 et 7 sur le loueur de voitures, qui est un problme de transport, le nombre
maximum de voitures livr par un garage une agence est gal 7. La solution optimale estelle encore entire si on ajoute des contraintes pour descendre 6? Vrifier avec Excel.
On revient au problme sans la contrainte des 6 voitures, mais on veut que chaque destination
soit livre par une seule origine. Modliser ce problme avec un programme linaire
gnrique, avec des variables binaires xij valant 1 si et seulement si c'est le garage i qui livre
l'agence j. A votre avis, la solution optimale de ce PL est-elle entire? Vrifier avec Excel.

Exercice 16 Mthode de Dakin


Rsoudre le PLNE suivant avec la mthode de Dakin. En chaque nud, sparer sur la variable
fractionnaire la plus proche d'un nombre entier. Pour viter de rsoudre la main plusieurs PL
relaxs, on utilisera pour chaque nud la mthode de rsolution gomtrique.

Max z = 10 x + 20 y
5 x + 8 y 60
x 8, y 4
x, y IN

Exercice 17 Mthode de Dakin

En se basant sur les bornes des variables entires, combien de vecteurs x distincts doit-on
examiner pour rsoudre le PLNE suivant par numration complte? Le rsoudre avec la
mthode de Dakin. En chaque nud, on sparera sur la variable fractionnaire la plus proche
d'un nombre entier et on rsoudra le PL relax associ avec Excel.

Max z = 2 x1 + 3x 2 + x3 + 2 x 4
5 x1 + 2 x 2 + x3 + x 4 15
2 x1 + 6 x 2 + 10 x3 + 8 x 4 60
x1 + x 2 + x3 + x 4 8
2 x1 + 2 x 2 + 3x3 + 3 x 4 16
x1 3, x 2 7, x3 5, x 4 5
x1 , x 2 , x3 , x 4 IN
Rsoudre ensuite le PLNE en une seule fois avec Excel, avec des variables entires (ENT)
Exercices de TD pour MT14 Page 6

TD6 METHODE DE BALAS ET MODELISATION EN PLNE

Exercice 18 Mthode de Balas

Soit le programme linaire suivant, dans lequel on suppose que les variables sont binaires. Le
mettre en forme pour l'algorithme de Balas puis le rsoudre avec cet algorithme. Il est inutile
de faire des sparations : on peut conclure uniquement en utilisant des implications.
Min 2.x1
3.x1
x1

3.x2
+ 2.x2
3.x2

+
x3
4.x3
+
x3

+ 4.x4
+ 5.x4
3.x4

-1
-4

Vrifier ensuite la solution avec Excel, en dclarant des variables binaires (BIN).

Exercice 19 Mthode de Balas

Soit le programme linaire en 0-1 suivant. Le mettre en forme pour l'algorithme de Balas puis
le rsoudre avec cet algorithme.
Min 10 x1 + 14 x 2 + 21x3 + 42 x 4
8 x1 + 11x 2 + 9 x3 + 18 x 4 12
2 x1 + 2 x 2 + 7 x3 + 14 x 4 14
9 x1 + 6 x 2 + 3x3 + 6 x 4 10
x1 , x 2 , x3 , x 4 {0,1}

Vrifier ensuite la solution avec Excel, en dclarant des variables binaires (BIN).

Exercice 20. Problme daffectation gnralise (modlisation)

On considre n produits fabriquer dans un atelier avec m machines dges diffrents.


Chaque produit i peut tre fait sur nimporte quelle machine j, mais avec une dure aij en
heures et un cot cij. Pour des raisons de maintenance, chaque machine j nest disponible que
bj heures. Comment affecter les produits aux machines pour minimiser le cot total, tout en
respectant leurs capacits ? Proposer un PL en 0-1 pour ce problme appel problme
d'affectation gnralise.

Exercice 21 Problme de transport min-max (modlisation)

La fonction-objectif d'un PL classique est une somme de fonctions linaires une variable
fj(xj) = cj.xj. La version min-max consiste minimiser max {fj(xj) | j =1,2,,n}. Soit le
problme de transport min-max. Il est identique au problme de transport classique (comme le
loueur de voitures), sauf qu'on veut minimiser le cot de la liaison utilise la plus coteuse, au
lieu du cot total de transport. Modliser ce problme sous forme gnrique, en restant
linaire. Ensuite, le rsoudre avec Excel.

Exercices de TD pour MT14 Page 7

TD 7 MODELISATION EN PLNE

Exercice 22 Problme de transport avec nombre limit de fournisseurs (modlisation)

On considre un problme de transport dans lequel chaque destination doit tre livre par k
origines au maximum, k < m. Modliser ce problme sous forme d'un PLNE gnrique.

Exercice 23 Un problme cots fixes (modlisation)

On considre n usines ayant des demandes mensuelles de fioul dj, j = 1, 2, , n (en m3). Une
socit ptrolire dsire s'installer dans la rgion pour les livrer. Elle a trouv m terrains
possibles pour construire des dpts. Le terrain i, i = 1, 2, .., m, permet de construire un dpt
de cot fi et de capacit Ki (en m3 de fioul / mois). Les cots de transport cij par m3 de fioul
entre tout dpt i et tout client j sont connus.
Modliser sous forme de PL mixte gnrique le problme suivant : quels dpts construire et
quelles quantits livrer des dpts ouverts vers les clients, pour minimiser le cot total (cot
d'ouverture des dpts et cots de transport). Les quantits peuvent tre des nombres rels.

Exercice 24 Linarisation de fonctions linaires par morceaux (modlisation)

Les fonctions linaires par morceaux (piecewise linear functions) sont frquentes en
production. Par exemple, de nombreux fournisseurs proposent des tarifs dgressifs : un
produit peut coter 12 euros/tonne entre 0 et 100 tonnes, et 10 euros/tonne partir de 100
tonnes. Comment feriez-vous pour modliser linairement ce genre de fonction-objectif?

Exercices de TD pour MT14 Page 8

MT14 Exercices de Programmation Dynamique

EXERCICES POUR LE TD 8
Exercice 25 Le voleur en fuite

Un voleur doit aller de la ville s la ville t en se dplaant dans le rseau routier suivant. La
valeur sur chaque route (i,j) est la probabilit d'tre intercept sur cette route par la police.
Quel itinraire le voleur doit-il suivre pour maximiser ses chances d'arriver en t ?
0.7

a
0.2

0.4

0.5
0.4

0.2

0.3

0.1

d
0.4

0.4

0.7
0.2

0.1

0.3

0.4

0.5

0.2

0.4

Exercice 26 Chemin contraintes de ressources

Un explorateur habitant dans la rgion 1 a trouv une vieille carte indiquant l'emplacement de
l'Eldorado (nud 5). Il a un vhicule qui transporte 2 ressources : du carburant (2 tonnes) et
des vivres (3 tonnes). Le triplet sur chaque arc indique (i, j) donne la dure du voyage en jours
entre les rgions i et j, la quantit ncessaire de carburant et celle de vivres (en tonnes). Aidez
cet explorateur atteindre l'Eldorado le plus vite possible, si c'est possible.
(30,1,2)

(10,0,1)

(10,1,0)

(10,1,2)

(15,0,1)

(12,1,2)

(30,1,1)

Exercice 27 Gestion des stocks

On rappelle le problme de stocks de la slide 171. Un marchand achte et revend des camions.
La table donne les demandes pour p = 5 jours et les prix d'achat. Le marchand peut stocker
n = 5 camions. Le stock de dpart est nul et le stock final doit tre nul. Les camions sont
achets en dbut de journe, avant les ventes, et le stock inclut les nouveaux camions. Le but
est de dterminer le nombre de camions acheter chaque jour pour minimiser le cot total.

Exercices de TD pour MT14 Page 9

Jour t
Demande dt
Prix unitaire ct

1
2
13

2
3
15

3
4
20

4
3
11

5
2
12

On rappelle qu'un tat (st, t) consiste avoir st camions la fin du jour t. Une dcision le jour t
est le nombre de camions achets xt, elle a pour cot ct.xt. L'tat rsultant est (st + xt - dt , t+1).
Soit F(st, t) le cot total pour parvenir l'tat (st, t). L'objectif est de trouver une suite de
dcisions minimisant F(sp=0, p).

t > 0, st : F ( st , t ) = min{F ( st + d t xt , t 1) + ct xt : 0 xt n}

F (0,0) = 0 et st > 0 : F ( st ,0) = +


a) Finir les calculs de la slide 174, rappele ci-dessous :

x1
(0,0)

2
3
4
5

d1= 2
p1=13
(0,1)
26

x2
3

39

F(0,2) = min (26+3x15=71,


39+2x15=69,
52+1x15=67,
65+0x15=65)
= 65

(0,2)

(1,1)

Par exemple :

d2= 3
p2=15

65

(2,1)
52
(3,1)
65

b) Faire un algorithme sans le graphe, avec une matrice F de cots, (n+1) (p+1).

Exercice 28 Le marchand de fraises

Un picier possde trois magasins. Il achte aux Halles six cageots de fraises et dsire les
rpartir entre ses trois magasins pour maximiser son profit. Il ne souhaite pas fractionner un
cageot entre plusieurs magasins et connat le profit c(x, j) qu'il peut obtenir en vendant x
cageots dans le magasin j (tableau ci-dessous).
x
0
1
2
3
4
5
6

c(x,1)
0
3
4
4
4
4
4

c(x,2)
0
4
6
7
8
8
8

c(x,3)
0
2
4
6
7
8
9

Il s'agit donc de trouver des variables entires x1, x2, x3 (nombres de cageots par magasin),
avec x1 + x2 + x3 = 6, pour maximiser le profit obtenu avec cette rpartition. Noter que si on
connat les valeurs des variables, on peut calculer facilement le profit : c(x1,1) + c(x2,2) +
c(x3,3). Rsoudre ce problme par programmation dynamique.
Exercices de TD pour MT14 Page 10

EXERCICES POUR LE TD 9
Exercice 29 Problme du sac dos en 0-1 : un graphe d'tats trs compact

On reprend le problme de sac dos de la slide 180. Il y a n=4 objets, le vecteur des poids est
a=(3,2,1,2), celui des profits c=(8,4,10,5), et la capacit du sac est b=6. On va implmenter la
mthode de manire plus compacte, avec un graphe plus petit de b+1 tats indics de 0 b.
L'tat p, de cot Fp, est maintenant le meilleur sous-ensemble d'objets de poids total p.
Au dbut, un seul tat est utilis : l'tat 0 avec un sac vide : F0=0 et x=(0,0,0,0). A l'tape k, on
ajoute l'objet n k chaque tat (chargement) utilis. A l'tape k = 1, on obtient le graphe
suivant. L'arc signifie qu'on a ajout le premier objet de profit 8 et de poids 3 l'tat initial.
On a maintenant deux tats : chargement vide et chargement avec seulement l'objet 1.
8

0
(0,0,0,0)

8
(1,0,0,0)

a) Poursuivre les calculs en plaant les autres objets. Attention un pige l'tape 3 : ne pas
prendre deux fois le mme objet. Proposer une technique simple pour viter ce problme.
b) Pourquoi la complexit en O(nb) est-elle maintenue?
c) Proposer un petit algorithme pour la mthode. Le graphe n'a pas besoin d'tre gnr
explicitement. Il est possible d'utiliser seulement un vecteur F et une table de vecteurs X.

Exercice 30 Problme du voyageur de commerce

Soit n nuds et une matrice de distances entre nuds D=(dij). Le problme du voyageur de
commerce (PVC), en anglais Travelling Salesman Problem (TSP), consiste dterminer un
circuit partant du nud 1 (domicile du voyageur), visitant chaque autre nud exactement une
fois, et revenant finir au nud 1.
a) Montrer qu'une numration complte doit examiner (n-1)! tournes possibles.
b) Mthode de programmation dynamique
Soit un sous-ensemble de nuds S{2,3,,n} et un nud kS. Soit C(S,k) le cot minimal
d'un chemin partant du noeud 1, visitant chaque noeud de S, et finissant au nud k. Si on fixe
l'avant-dernier nud m du chemin, dduire C(S,k) de C(S \ {k},m) (faire un dessin). En
dduire les relations rcursives. En ajoutant le retour au nud 1, quel est le cot optimal?
n 1

c) Montrer que le nombre d'tats diffrents examins est

k C
k =1

k
n1

= (n 1) 2 n2 = O(n 2 n ) .

n
Note : C nk not aussi est le nombre de combinaisons de k objets choisis parmi n.
k

d) Calculer (n-1)! et n.2n pour n = 10, 20, 30 et le ratio entre la premire expression
(numration complte) et la seconde (mthode de programmation dynamique).
Conclusion ?
Exercices de TD pour MT14 Page 11

Exercices de TD pour MT14 Page 12

Algorithmes

ns

d'app

es

ma
Do in

licatio

Christian Prins - Marc Sevaux

Programmation

linaire avec Excel


55 problmes d'optimisation modliss
pas pas et rsolus avec Excel
Merci de citer ce livre sous la rfrence :
C. Prins et M. Sevaux (2011).
Programmation linaire avec Excel.
Eyrolles, Paris. ISBN : 978-2-212-12659-4

En complment sur
www.editions-eyrolles.com :
des exemples dapplications
supplmentaires
les fichiers Excel des 55 problmes

CHAPITRE 3
Le solveur dExcel

3.1 Introduction
Ce chapitre prsente le solveur dExcel, utilis pour rsoudre des programmes linaires
dans les chapitres 5 14. Le 3.2 indique comment installer et dmarrer le solveur tandis
que le 3.3 dcrit ses commandes. Dans le 3.4, nous reprenons le petit problme de
fabrication de ciments du 1.2 pour montrer comment le rsoudre avec Excel. Le 3.5
propose une mthodologie pour modliser pas pas des problmes plus complexes. Des
fonctions Excel utiles pour la programmation linaire sont rappeles au 3.6. Le 3.7
voque dautres solveurs du commerce et quelques rfrences sont donnes en conclusion.

3.2 Installation et dmarrage


Excel inclut un solveur de programmation mathmatique conu par Frontline Systems. Il
permet de dfinir et rsoudre des programmes linaires ou non linaires. Les variables
peuvent tre relles, entires ou binaires. La fonction-objectif peut tre minimise ou
maximise. Il faut savoir que le solveur est brid 200 variables. Le nombre de contraintes
est illimit pour les PL, mais restreint 100 pour les PNL, sauf pour les contraintes de
bornes comme x 3. Frontline Systems vend des versions non limites qui se substituent
la version dExcel (voir leur site web http://www.frontsys.com ou http://www.solver.com).
Le solveur nest pas toujours install. En Excel 2003, le choix Solveur doit figurer dans le
menu Outils. Sinon, il faut linstaller avec le choix Macros complmentaires. Ensuite, un
clic sur Outils/Solveur montre la bote de dialogue Paramtres du solveur (page suivante).
Depuis Excel 2007, le solveur est dans le groupe Analyse de longlet Donnes. Sinon,
cliquez sur le bouton daccueil dOffice puis sur Options Excel et Complments. Une liste
affiche alors les complments actifs et inactifs. Cliquez sur Atteindre pour voir les macros
complmentaires disponibles, cocher Complments Solver puis cliquez sur OK. On peut
ensuite afficher la bote de dialogue en cliquant sur le bouton Solveur de longlet Donnes.

54 ____________________________________________ Programmation linaire avec Excel

Pour raliser une capture dcran comme ci-dessous, il faut presser la touche Impr. Ecran
puis dmarrer Paint et appuyer sur Ctrl-V ou dition/Coller pour charger la copie. Ensuite,
on peut slectionner la zone copier avec loutil Slection et oprer un copier-coller vers
Word.

La bote de dialogue permet de dfinir les cellules de la feuille Excel qui correspondent la
fonction-objectif (Cellule-cible dfinir), aux variables (Cellules variables) et aux
contraintes (Contraintes). On peut choisir le type doptimisation : maximiser (Max),
minimiser (Min) ou trouver une solution de cot gal une valeur donne (Valeur). Il est
possible de choisir dautres paramtres avec le bouton Options. En cliquant sur Rsoudre, le
solveur rsout le modle et crit les valeurs des variables et de la fonction-objectif dans les
cellules choisies. Si la rsolution prend trop de temps, on peut la stopper avec la touche
Escape (chap). Le bouton Rtablir permet deffacer le modle saisi.

3.3 Les commandes du solveur


3.3.1 Cellule cible
Cest la cellule qui contient la fonction-objectif. Si cette cellule nest pas une variable (cas
le plus frquent), elle doit contenir une formule qui lie, directement ou indirectement, les
variables. Si cest aussi une variable, elle ne doit pas contenir de formule. La cellule cible
est facultative : si elle est absente, le solveur cherchera une solution vrifiant toutes les
contraintes, ce qui permet de rsoudre des systmes dquations ou dinquations.

3.3.2 Cellules variables


Elles sont dfinies par une liste de cellules ou de plages de cellules, spares par des pointsvirgules, par exemple : B1:B4; C1:C4; E8. Dans la feuille Excel, ces cellules ne doivent pas
contenir de formules. Il vaut mieux leur donner un format numrique avec un nombre fixe
de dcimales (groupe Nombre de longlet Accueil). En effet, les calculs sur ordinateur ont
une prcision limite et une variable thoriquement gale 1 peut avoir une valeur calcule
de 0.999999 Un format nombre deux dcimales donnera un arrondi et un affichage
correct : 1.00. Pour une variable entire, on peut spcifier 0 dcimale.

Chapitre 3 Le solveur dExcel

_________________________________________________________________________

55

3.3.3 Contraintes
Les contraintes ont le format suivant, o une paire daccolades avec des barres verticales
dsigne une liste de choix exclusifs :
{cellule | plage} oprateur {constante numrique | cellule | plage | formule},
Loprateur est =, <=, >=, ent ou bin. Il ny pas doprateurs , < ou > en optimisation,
cause des problmes de prcision. Les formules du second membre sont restreintes des
expressions constantes, sans rfrence des cellules Excel. Pour une plage de n cellules,
une contrainte du type plage oprateur {constante | cellule | formule} quivaut n
contraintes dans lesquelles chaque cellule de la plage est compare au second membre. Une
contrainte peut aussi comparer deux plages de mme taille : elle quivaut alors n
comparaisons entre les cellules de mme rang dans les deux plages. Exemples :

B4 <= 6

B4 infrieur ou gal 6 ;

B4:B5 <= C5

B4 et B5 infrieurs C5 ;

Stocks <= C5

criture quivalente si on a nomm Stocks la plage B4:B5 ;

B4:B5 = C6:C7

B4 infrieur ou gal C6 et B5 infrieur ou gal C7 ;

B4 <= 3*SIN(1)+2

B4 infrieur ou gal lexpression constante 3.sin(1)+2.

Pour limiter les erreurs de saisie, il vaut mieux utiliser la souris que taper les rfrences de
cellules. Ainsi, pour saisir la plage B4:B5, cliquez sur B4 dans la feuille Excel (B4 apparat
dans la zone de saisie de la contrainte), saisissez le deux-points puis cliquez sur B5. On
peut aussi slectionner la plage la souris : B4:B5 apparat directement dans la zone de
saisie.
Les oprateurs bin et ent sont utiliss pour spcifier quune cellule variable ou une plage de
variables doit tre binaire ou entire. Le solveur met automatiquement binaire et entier
dans les seconds membres.

B4 bin binaire

B4 est binaire, le mot binaire est ajout par Excel ;

B4:B5 ent entier

B4 et B5 sont entires, le mot entier est ajout par Excel.

On peut dfinir un domaine de dfinition plus complexe en combinant plusieurs contraintes,


par exemple en mettant simultanment les deux contraintes suivantes :

B4 ent entier

la variable B4 est un entier ;

B4 <= 3

cet entier est infrieur ou gal trois (valeurs possibles 0, 1, 2, 3).

Comme le solveur accepte des formules trs limites, et uniquement dans le second
membre des contraintes, on doit en gnral calculer les valeurs des premiers membres dans
la feuille Excel. Comme pour la fonction-objectif, le solveur se contente ensuite dappeler
Excel quand il veut rcuprer les valeurs de ces cellules. Ainsi, en plus du modle
mathmatique, un modle Excel contient souvent des quantits intermdiaires calcules et il
faut en tenir compte lors de la modlisation.

56 ____________________________________________ Programmation linaire avec Excel

3.3.4 Options du solveur


Le bouton Options permet de spcifier des options dont seules les six ci-dessous sont
vraiment utiles. Il est dconseill de modifier les autres options dans le cadre de ce livre.
Modle suppos linaire. Comme le solveur ne voit pas le contenu des formules dExcel, il
ignore si le modle est linaire et utilise par dfaut un algorithme de PNL. En cochant
Modle suppos linaire, il appelle lalgorithme du simplexe ou un algorithme de PLNE,
plus efficaces. Cette option est ncessaire pour les exemples du livre. Si vous avez coch la
case et que le solveur stoppe en disant que le modle nest pas linaire, il faut revoir votre
formulation : par exemple, pas de valeurs absolues, de produits de variables etc.
Suppos non ngatif. Cette case permet de spcifier que les variables sont positives ou
nulles par dfaut, ce qui vite dinclure les contraintes de positivit dans le modle. Les
contraintes de positivit sont implicites dans la plupart des logiciels de PL.
Tolrance. Cette valeur sert pour les PLNE et reprsente le seuil pour considrer quune
variable entire a atteint une valeur entire. Ainsi, 1.90 sera considre comme 2 pour la
valeur par dfaut de 5%. Cette valeur donne une solution errone pour certains problmes
du livre. Nous prciserons la tolrance indiquer pour chaque modle concern.
Itrations. Le solveur sarrte aprs le nombre spcifi, qui reprsente le nombre maximal
ditrations du simplexe (PL) ou de nuds construits dans larborescence (PLNE). La
valeur par dfaut (100) suffit pour la plupart des exercices. On peut bien sr laugmenter.
Temps max. Le solveur sarrte aprs le nombre de secondes spcifi. La valeur par dfaut
(100) convient pour le livre. Augmentez cette dure si elle est insuffisante. Si la rsolution
prend trop de temps, elle peut tre stoppe avec les touches Ctrl+Pause ou chap (Esc).
chelle automatique. Le solveur peut prsenter des problmes de prcision quand des
grands nombres coexistent avec des petits dans les donnes, par exemple un problme avec
des taux dinflation en % et des montants de plusieurs milliards. Dans de tels cas, cette
option augmente la prcision en oprant des changements dunits (scaling) pendant les
calculs.

3.4 Exemple de la production de ciments


3.4.1 Version simple
Rappelons le problme des ciments du 1.2. Une usine produit deux ciments rapportant
50$ et 70$/t. Pour 1 t de ciment 1, il faut 40 min de four et 20 min de broyage. Pour 1 t de
ciment 2, 30 min et 30 min. Four et broyeur sont disponibles 6 h et 8 h par jour. Quelles
quantits fabriquer pour maximiser le profit ? Ce problme se modlise avec le PL suivant :
Max 50.x1 + 70.x2

maximisation du profit

40.x1 + 30.x2 360

disponibilit du four

20.x1 + 30.x2 480

disponibilit du broyeur

x1, x2 0

quantits non ngatives

Chapitre 3 Le solveur dExcel

_________________________________________________________________________

57

Crez un classeur Excel vide et dfinissez les cellules suivantes. On a affich les formules
des cellules avec Ctrl+# ou Formules/Audit de formules/Afficher les formules (ces
commandes fonctionnent comme des bascules). On a choisi les cellules B3 et B4 pour les
variables, B5 pour le profit, B6 et B7 pour les contraintes. Prenez lhabitude dinitialiser les
variables 0.

Dfinissez le PL en ouvrant la bote de dialogue du solveur. Allez dans Cellule cible et


saisissez B5 ou, pour viter les erreurs, cliquez sur la cellule B5 de la feuille de calcul : le
nom de cellule est copi automatiquement dans le champ. Vrifier que le sens
doptimisation est bien Max. Allez sur Cellules variables et tapez la liste B3;B4 ou la plage
B3:B4. L encore, pour viter des erreurs, cliquez sur la cellule B3, puis pressez la touche
deux points et cliquez sur la cellule B4. Dfinissez les contraintes, en cliquant sur Ajouter
pour chaque contrainte. Noubliez pas de cocher Modle suppos linaire dans Options !

Cliquez sur Rsoudre : le solveur rsout le PL et on obtient lcran suivant :

58 ____________________________________________ Programmation linaire avec Excel

La solution optimale consiste donc fabriquer 0 tonne de ciment 1 et 12 tonnes de


ciment 2, pour un profit total de 840 $. On peut garder les rsultats dans la feuille (Garder
la solution du solveur) ou remettre zro (Rtablir les valeurs dorigine). Si on garde les
rsultats, il faudra remettre les variables 0 la main pour recommencer une rsolution.
Cliquez finalement sur OK pour fermer la bote Rsultat du solveur et sauvegardez votre
travail : le modle est enregistr avec la feuille Excel. Ce modle est dans la premire
feuille du classeur Excel C3-Ciments fourni avec les complments du livre (voir annexe 2).

3.4.2 Version gnrique


La traduction prcdente en Excel est caractrise par une mauvaise sparation entre
modle et donnes :

Pour chaque ciment, le profit par tonne et les temps dutilisation du four et du broyeur
sont cachs dans des formules de la feuille.

Les disponibilits des ressources sont dans le modle dfini par la commande Solveur.

Il faut ajouter une contrainte dans le modle pour chaque nouvelle ressource.

En rsum, le modle est peu lisible et sa modification est malaise.

En effet, il faudra modifier des formules dans la feuille Excel et/ou le modle si des valeurs
changent dans les donnes ou si on ajoute des ciments ou des ressources. Nous allons voir
une formulation dite gnrique, qui spare au maximum les donnes du modle. Un PL
gnrique est un PL dans lequel variables et contraintes de mme nature sont regroupes et
indices. On obtient une forme compacte qui met bien en vidence la structure du PL et
facilite le traitement par les logiciels. Voici une forme gnrique pour les ciments :
n

(1)

Max z = c j xj
j =1

(2) i = 1Km : aij x j bi


j =1

(3) j = 1K n : xj 0
Les donnes sont les suivantes. On a n = 2 ciments indics par j et avec des profits cj en
dollars par tonne. On a m = 2 ressources (four et broyeur) indices par i et de disponibilits
bi en minutes par jour. La quantit de ressource i consomme par le ciment j est aij. Les
variables xj sont les quantits produire de chaque ciment.
Ce modle est gnrique. On a dabord indic les ciments. Bien quil y ait deux ressources
distinctes, les contraintes de consommation ont la mme forme : on a donc indic les
ressources pour construire un groupe gnrique de contraintes, avec le quantificateur i.
La forme gnrique facilite la traduction en nimporte quel langage de modlisation list au
3.7, par exemple AMPL, GAMS, LINGO, MPL et OPL STUDIO. En effet, la syntaxe
accepte par ces logiciels permet de manipuler des donnes sous forme de tableaux
(vecteurs c, x, b, matrice A des consommations de ressources) et dexprimer un groupe de
contraintes gnriques en une seule ligne (lquivalent des quantificateurs).

Chapitre 3 Le solveur dExcel

_________________________________________________________________________

59

Dans le cas dExcel, la traduction dun modle gnrique va exploiter les caractristiques
suivantes du tableur et du solveur :

Excel et le solveur permettent de dfinir des plages de cellules, comme B3:B4.


La fonction Excel sommeprod sert calculer des produits scalaires de 2 plages.
Excel autorise la copie de formules contenant des rfrences relatives et absolues.
Le solveur peut comparer une plage une constante ou deux plages de mme taille.
Le signe des variables est implicite si on coche Suppos non ngatif dans Options.

Prparez la feuille suivante avec les donnes cots, consommations de ressources par
ciment et disponibilits des ressources. Par rapport au modle prcdent, lutilisateur voit
ainsi toutes les donnes dans la feuille de calcul et peut facilement les modifier. Rglez les
variables B5 et C5 0. Pour le profit total E4 (quation (1) du modle gnrique), saisissez
la formule "=sommeprod (B4:C4; B5:C5)" qui calcule la somme des produits des variables
ayant les mmes positions dans les deux plages (produit scalaire).

Pour lutilisation du four E8, indiquez "= sommeprod (B8:C8; $B$5:$C$5)". Avec la
poigne de recopie, copiez cette formule dans la cellule E9, o elle devient
" = sommeprod (B9:C9;$B$5:$C$5)". Sans la rfrence absolue (indique par des dollars)
pour la plage des cots B5:C5, les 5 auraient t changs en 6 ! Avec cette prsentation
mieux conue, la dfinition du modle dans la bote de dialogue du solveur devient facile :
les variables forment une plage et les contraintes de consommation de ressources sont
dfinies par des comparaisons entre plages.

60 ____________________________________________ Programmation linaire avec Excel

Il semble quil y ait un petit prix payer. Les deux contraintes de ressources sont
combines dans une seule comparaison de plages mais, comme le solveur naccepte pas de
fonctions comme sommeprod dans les contraintes, on doit calculer dans la feuille les
utilisations de ressources. La colonne Utilisation semble donc une verrue sur le modle
mathmatique, mais elle est en fait souvent employe pour visualiser les utilisations relles
des ressources.
On peut donner des noms plus parlants aux cellules. Par exemple, slectionnez E4 et
saisissez ProfitTotal dans la zone-nom, gauche de la barre de formule dExcel. Donnez de
mme aux plages B5:C5, E8:E9 et G8:G9 les noms Productions, Utilisations et Limites.
Ouvrez la bote du solveur : la cellule cible est devenue ProfitTotal, la plage de variables
Productions, et la contrainte Utilisations <= Limites. On peut aussi indiquer ces noms dans
le solveur, sils ont t dfinis au pralable. Si on insre des lignes ou des colonnes, on peut
vrifier et modifier si ncessaire les plages correspondant aux noms dfinis, en cliquant sur
Formules/Noms dfinis/Gestionnaire de noms
Comme dhabitude, cliquez sur Options et cochez les cases Modle suppos linaire et
Suppos non ngatif. Sans cette dernire option, il faudrait ajouter les contraintes de
positivit dans le modle, par exemple avec une seule plage : B5:C5 >= 0. Enfin, cliquez
sur Rsoudre ; on obtient les rsultats suivants :

On aboutit aux mmes rsultats quavec le premier modle mais la prsentation dans la
feuille Excel est plus lisible. De plus, on peut changer les donnes sans toucher aux
formules et au modle. Ce modle est contenu dans la deuxime feuille du classeur Excel
C3-Ciments des complments du livre (voir lannexe 2).

3.4.3 Exemple dextension du modle


Par exemple, ajoutons un ciment 3 de profit 80, ncessitant 50 min de four et 25 de
broyage, plus une ressource (ensacheuse) disponible 5 h/j. Les 3 ciments ncessitent 55, 35
et 40 min densacheuse par tonne. Les modifications sont assez simples :

Insrez une colonne devant la colonne D pour le nouveau ciment.


Ajoutez une ligne la fin pour lensacheuse.
Saisissez les nouvelles donnes (profit du ciment 3, temps dutilisation de
lensacheuse, disponibilit de cette dernire).

Chapitre 3 Le solveur dExcel

_________________________________________________________________________

La fonction-objectif, maintenant dans F4, devient "=sommeprod(B4:D4;B5:D5)".


La formule pour lutilisation du four devient "=sommeprod(B8:D8;$B$5:$D$5)".
Avec la poigne de recopie, copiez cette formule dans les autres utilisations.
Dans le solveur, augmentez la plage pour les variables devient B5:D5.

Slectionnez la contrainte, cliquez sur modifier et indiquez F8:F10 H8:H10.

61

Aprs rsolution, les quantits sont fractionnaires. Les affichages des cellules C5, D5 et
F10 sont disgracieux, mais on peut les arrondir deux dcimales en changeant leur type de
cellule par dfaut (Standard) en type Nombre. Les modifications seraient les mmes pour
100 ciments et 50 ressources, avec toujours une seule contrainte gnrique dans le solveur :
une comparaison entre la plage des utilisations de ressources et celle des disponibilits.
Elles seraient par contre considrables avec le premier modle, avec un gros risque
derreur.
Ce modle est contenu dans la troisime feuille du classeur Excel C3-Ciments des
complments du livre (voir lannexe 2). On peut donc placer plusieurs modles par
classeur, mais avec au plus un modle par feuille.

3.5 Mthode de modlisation


Dans cette section, nous tentons de dtailler et formaliser la dmarche suivie pour rsoudre
le problme des ciments du 3.4.2, car on peut lappliquer pour tout autre problme de
programmation linaire. Cette mthode sera rutilise pour le premier problme du
chapitre 5 et nous vous conseillons de consulter cette application. Par manque de place,
nous ne la dtaillerons pas pour les autres problmes doptimisation du livre, mais elle vous
sera trs utile chaque fois que vous aurez modliser un problme compliqu.

Phase 1 Construire un modle mathmatique gnrique


Cette tape ressemble au processus danalyse dun algorithme en informatique. On recense
dabord les donnes disponibles, on les groupe par type et on choisit un indice pour chaque
groupe. Grce cette discipline dindexation, un indice comme i dsignera toujours la
mme chose dans le modle. Puis on identifie les variables, les contraintes et la fonctionobjectif. Le but est darriver un PL gnrique indpendant du logiciel qui va tre utilis.

62 ____________________________________________ Programmation linaire avec Excel

tape 1.1 Analyse des donnes

Dans cette tape, on recense toutes les valeurs numriques disponibles pour le problme.
On identifie les entits (ensembles dlments ou de personnes de mme nature), leurs
cardinalits (nombre de membres dans chaque entit), lindexation (choix dun indice,
valeur minimale et maximale de lindice), puis les donnes disponibles.
a) Identifier les entits, les cardinalits et choisir un indice par entit

n = 2 ciments, indics par j variant de 1 n ;

m = 2 machines (four et broyeur), indices par i variant de 1 m.

b) Lister les donnes dpendant dune ou plusieurs entits et les regrouper en tableaux

profits : vecteur c de taille n, cj dsignant le profit du ciment j ;

disponibilits des machines : vecteur b de taille m, bi disponibilit de la machine i ;

temps-machines : matrice A m n, Aij temps de machine i ncessaire au ciment j.

On constate sur cet exemple, mais cest une rgle gnrale, que certaines donnes sont
associes une seule entit : cest le cas des profits et des disponibilits des machines et on
peut alors parler dattributs de lentit. Les valeurs dun attribut doivent tre stockes dans
un vecteur (tableau une dimension). Dautres donnes (temps-machines) sont associes
des couples dentits et seront stockes dans des matrices (tableaux deux dimensions).
Lors de cette tape, il faut faire trs attention aux units utilises : cest une source derreurs
courante. Ici, les disponibilits des machines sont donnes en heures, tandis que les tempsmachines sont indiques en minutes par tonne. Il faut videmment utiliser la mme unit de
temps : nous avons arbitrairement choisi les minutes.
c) Lister les autres informations ventuelles
Il peut sagir dun paramtre quon souhaite nommer pour rendre le modle plus parlant :
par exemple un taux de croissance, une probabilit. Il ny en a pas dans le cas des ciments.
tape 1.2 Identifier les variables et les regrouper en un ou plusieurs tableaux

Elles sont souvent suggres par les questions de lnonc. Les variables un indice sont
habituellement associes une entit : ici, ce sont les quantits produire pour chaque
ciment j. On peut les grouper dans un vecteur x de n variables xj. Nous verrons dans les
chapitres 5 14 des cas plus compliqus, comme des variables xij modlisant la quantit de
ressource i qui doit tre affecte une tche j.
tape 1.3 Identifier les contraintes, les crire en fonction des tableaux et les regrouper

Identifiez les contraintes, si ncessaire en dtaillant certaines au brouillon pour mieux


comprendre leur structure. Noubliez pas les contraintes de signe des variables et veillez
la compatibilit des units utilises ! Essayez ensuite de les rcrire en fonction des
tableaux crs aux tapes prcdentes. Enfin, tentez de constituer des groupes gnriques :
chaque groupe rassemble les contraintes de mme nature concernant une mme entit et
dbute par un quantificateur (quel que soit) avec lindice de lentit concerne. Pour les
ciments, on obtient le groupe de contraintes de ressources (2) du modle du 3.4.3.

Chapitre 3 Le solveur dExcel

_________________________________________________________________________

63

tape 1.4 Fonction-objectif

La formulation de la fonction-objectif scrit de manire similaire : dtaillez-la


compltement si elle nest pas trop longue, rcrivez-la en fonction des tableaux. Pour les
ciments, on obtient lexpression (1) du modle donn au 3.4.2.
tape 1.5 Rcapituler le PL gnrique sous forme mathmatique

ce stade, il est ensuite assez facile de transposer le modle dans nimporte quel logiciel.

Phase 2 Traduction en Excel


Cette phase a pour but de traduire le modle gnrique dans la logique deux dimensions
dExcel, avec des plages de cellules. Sans cette tape de prparation, on risque dobtenir un
modle Excel peu lisible ou qui ncessitera de nombreux ajustements.
tape 2.1 crire la disposition au brouillon

a) Identifier les valeurs intermdiaires calculer


Avant de placer les tableaux, il faut dtecter les valeurs calculer dans la feuille. En effet,
rappelons que le solveur refuse les formules dans les membres de gauche des contraintes et
naccepte que des formules simples (sans rfrences des cellules) dans les seconds
membres. Pour les ciments, il faut donc calculer les consommations de ressources,
correspondant aux sommes des contraintes (2). Comme les autres informations, il faut les
grouper en tableaux et les nommer, par exemple un vecteur U pour utilisation de ressource.
Dans certains cas, ces tableaux supplmentaires polluent la prsentation mais en gnral ils
sont utiles pour le dcideur. Si on omettait les consommations de ressources, ce dernier les
rclamerait, par exemple pour apprcier le taux dutilisation du broyeur et du four.
b) Placement (donnes, variables, valeurs intermdiaires et fonction-objectif)
Chaque vecteur doit tre reprsent par une plage horizontale ou verticale de cellules, une
matrice par un tableau rectangulaire de cellules. part cela, la prsentation est assez libre
mais attention : bizarrement, pour un SOMMEPROD sur deux plages une dimension,
Excel exige des plages de mme orientation, deux horizontales ou bien deux verticales.
Voici une prsentation possible :
Ciment j
Vecteur c
Vecteur x

1
50
0

2
70
0

Objectif z
0

Matrice A
1
2

40
20

30
30

Vecteur b
360
480

U
0
0

64 ____________________________________________ Programmation linaire avec Excel

c) Prparer les formules de la feuille Excel


Le brouillon sur papier ne doit pas faire rfrence aux cellules dExcel car ces dernires
vont dpendre de lemplacement exact des tableaux dans la feuille de calcul. Nous
conseillons donc de prparer les formules dExcel en remplaant les futures rfrences de
plages par les noms de tableaux du modle mathmatique. On note T(i, *) et T(*, j) la ligne
i et la colonne j dune matrice T. On obtient :

fonction-objectif : z = sommeprod (c; x)

consommation de ressource i : Ui = sommeprod (A(i, *); x)

Notez que les formules de consommations de ressources se ressemblent toutes, seul lindice
i de la ressource change. En Excel, il suffira donc de saisir uniquement la formule pour
i = 1 et dutiliser la poigne de recopie pour en dduire les autres.
d) Prparer le modle de la bote de dialogue du solveur
Les cellules spcifier pour les variables et la fonction-objectif correspondent x et z. Le
sens de loptimisation est Max. Pour les contraintes, il faut essayer de constituer des
groupes gnriques en utilisant la possibilit en Excel de comparer deux plages ou une
plage un nombre. Pour les ciments, on a x 0 (chaque lment de x doit tre non ngatif)
et U b (comparaison terme terme entre les consommations de ressources et les
disponibilits). Ainsi, on conserve la gnricit du modle mathmatique : chaque groupe
de contraintes du modle mathmatique (contraintes qui suivent un quantificateur ) donne
lieu une ligne de contrainte dans la bote de dialogue du solveur.
tape 2.2 Crer le fichier Excel et le modle

La traduction en Excel est immdiate partir du brouillon sur papier. Il faut dabord saisir
les tableaux des tapes a) (donnes et variables) et b) (valeurs intermdiaires calculer), en
remplaant les noms de tableaux du modle mathmatique par des libells plus clairs pour
les utilisateurs non spcialistes. Rappelons quil est conseill dutiliser un format nombre
2 ou 3 dcimales pour les cellules et dinitialiser 0 les variables (placez un 0 dans la
premire variable et utilisez la poigne de recopie).
On saisit ensuite les formules dans les cellules calculer et dans celle de la fonctionobjectif, en remplaant les noms de tableaux par les rfrences exactes aux cellules. ce
stade, on peut aussi dfinir des noms de plages. Pour viter des saisies inutiles dans les
groupes gnriques comme le tableau U, donnez la formule pour la premire contrainte et
utilisez la poigne de recopie. Pour visualiser toutes les formules et les vrifier, utilisez
Ctrl + accent grave ou Ctrl + # selon les PC. On retrouve ainsi lcran Excel du 3.4.2.
Enfin, ouvrez la fentre du solveur pour spcifier la cellule de la fonction-objectif, le sens
de loptimisation, les variables et les contraintes, en cliquant sur les cellules plutt quen
saisissant leurs rfrences. Noubliez pas de spcifier Modle suppos linaire et Suppos
non ngatif dans les options. Il ne reste plus qu rsoudre !
Nous conseillons de travailler la dcoration (libells parlants, couleurs, bordures de
tableaux etc.) en dernier, quand la solution semble correcte. On ne peut pas prouver que la
solution est optimale, mais on peut au moins vrifier que les contraintes sont respectes.

Chapitre 3 Le solveur dExcel

_________________________________________________________________________

65

3.6 Quelques fonctions Excel utiles


Excel offre des fonctions trs utiles et parfois peu connues, qui facilitent les oprations sur
des plages de cellules et donc la dfinition des programmes linaires. Dans ce qui suit,
plage dsigne une plage de cellules une dimension comme A1:A5 ou deux comme A1:E5.

3.6.1 Fonctions non matricielles


SOMME(plage) calcule la somme des nombres dune plage donne.
SOMME.SI (plage1; critre; plage2) calcule la somme des nombres de plage2 tels que la
cellule de mme rang dans plage1 vrifie le critre. Si plage2 est omise, les nombres de
plage1 vrifiant le critre sont cumuls. Exemple : SOMME.SI (A1:A3; ">0") calcule la
somme des lments positifs de la plage. SOMME.SI (A1:A3; C1; B1:B3) effectue la
somme des lments de B1:B3 tels que les lments de mme rang dans A1:A3 soient
gaux C1.
SOMMEPROD (plage1; plage2; ; plageN) calcule la somme des produits des nombres de
mme rang des plages, qui doivent possder les mmes dimensions et orientations.
Contrairement aux mathmatiques, Excel refuse donc le produit scalaire dune plage
horizontale et dune verticale, mais il accepte un SOMMEPROD de deux matrices !
INDEX (plage; n ligne; n colonne). Cette fonction trs puissante renvoie llment situ
lintersection de la ligne et de la colonne, ce qui permet dutiliser les plages comme des
tableaux. Si la plage a une seule ligne (colonne), lindice ligne (colonne) est facultatif. Par
exemple : INDEX (A1:A8; 3) renvoie le contenu de la troisime cellule de la plage A1:A8
(A3). Si lindice ligne (colonne) vaut zro, la fonction renvoie la colonne (ligne) complte
spcifie par lautre indice, mais il faut une formule matricielle (voir la section suivante).

3.6.2 Oprations matricielles


Excel permet des formules dites matricielles, qui renvoient un tableau de rsultats au lieu
dune valeur unique. Ces formules doivent tre crites entre accolades. Ainsi, la formule
=A1:A5+B1:B5 est refuse mais, si on indique {=A1:A5+B1:B5}, Excel comprend quon
veut la somme terme terme des deux vecteurs. On peut aussi saisir la formule sans
accolades et finir avec Ctrl + Ma j+ Entre au lieu de Entre : Excel ajoute les accolades.
Voici deux exemples gnrant des tableaux temporaires mais renvoyant un seul nombre :
{=SOMME (A1:A5*B1:B5)} : quivalent =SOMMEPROD (A1:A5; B1:B5).
{=SOMME (A1:A5^2)} : calcule la somme des carrs de la plage A1:A5.
Voici maintenant un exemple dutilisation bien commode, pour calculer une moyenne. Le
premier cran qui suit donne pour trois produits le prix conseill, le prix rel constat et la
moyenne. Il a fallu crer une colonne pour les carts en % puis calculer la moyenne de ces
carts. On peut ventuellement cacher cette colonne si elle surcharge la prsentation. Dans
le second cran, on vite la colonne des carts grce une formule matricielle.
Lexpression B2:B4/A2:A4 renvoie une plage dcarts qui na quune existence temporaire,
pendant le calcul de la formule. Ces deux exemples sont contenus dans les deux feuilles du
classeur C3-Moyennes inclus dans les complments du livre (voir lannexe 2).

66 ____________________________________________ Programmation linaire avec Excel

Une formule matricielle peut renvoyer une plage. Par exemple, si on veut placer dans
B1:B3 les lments de la plage A1:A3, multiplis par 3, il faut slectionner la souris la
plage pour le rsultat (B1:B3), saisir =3*A1:A3 puis appuyer sur Ctrl + Maj + Entre. Si
on dplace le curseur sur une des cellules de B1 B3, Excel indique la mme formule
matricielle {=3*A1:A3}.
Si une formule matricielle remplit un grand nombre de cellules, il nest pas vident de
retrouver toutes les cellules concernes. Pour identifier les cellules dune mme formule
matricielle avec Excel 2003, il faut cliquer dans une des cellules contenant la formule,
choisir dition/Atteindre/Cellules puis Matrice en cours : Excel slectionne alors toute la
plage concerne, ce qui permet de modifier ou deffacer la formule matricielle. Dans Excel
2007, cliquez sur Rechercher et slectionner dans le groupe dition de longlet Accueil puis
sur Slectionner les cellules puis Matrice en cours.
Dans les exemples prcdents, on a vu que des oprations simples peuvent tre interprtes
matriciellement si on les met entre accolades. Il existe aussi quelques fonctions purement
matricielles, comme :

PRODUITMAT (plage1; plage2) : calcule le produit matriciel des deux plages, qui
doivent tre de dimensions compatibles (le nombre de colonnes de la premire doit tre
gal au nombre de lignes de la seconde).

TRANSPOSE (plage) : transpose la matrice donne. Par exemple, pour effectuer un


produit de matrices entre un vecteur-colonne de 5 lments, A1:A5 et une matrice
5 5 C1:G5, il faut transposer : PRODUITMAT (TRANSPOSE (A1:A5); C1:G5).

Bien entendu, pour utiliser PRODUITMAT et TRANSPOSE, il faut dabord slectionner la


plage de cellules qui va recevoir la matrice rsultat.

Chapitre 3 Le solveur dExcel

_________________________________________________________________________

67

3.7 Excel et les autres solveurs


Quels sont les avantages et inconvnients de rsoudre des problmes doptimisation avec
Excel ?
Commenons par les avantages. Excel est un logiciel simple mais puissant. Il est trs
rpandu et la plupart des tudiants le connaissent. On peut lutiliser, ainsi que son solveur,
en dehors des cursus dinformatique car il nest pas ncessaire de connatre un langage de
programmation comme C++, Java ou Delphi. On bnficie aussi des outils dExcel comme
la visualisation immdiate des rsultats sous forme de graphiques. Si on possde en plus des
notions de programmation, le langage Basic intgr (VBA) permet dajouter une interface
plus labore (menus, boutons) et appeler le solveur en VBA. Ces facilits permettent de
raliser facilement de petits systmes interactifs daide la dcision (SIAD). Enfin, le
solveur dExcel inclut un algorithme de programmation non linaire.
Concernant les inconvnients, la logique bidimensionnelle dExcel exerce une contrainte
forte sur la traduction du modle mathmatique. Le solveur fourni par dfaut est brid et il
faut acheter une version plus puissante pour rsoudre de gros PL, mais cest le cas de la
plupart des logiciels doptimisation du commerce. Le solveur noffre pas de fonctions de
bas niveau permettant de contrler finement son excution, par exemple pour ajouter des
coupes ou faire de la gnration de colonnes. Enfin, les formules dans Excel sont
interprtes et la rsolution est plus lente quavec un langage compil.
Il existe dautres produits bass sur des tableurs. Whats Best de Lindo Systems est aussi un
complment pour Excel mais il utilise les solveurs de cet diteur. Le tableur de la suite
bureautique du domaine public OpenOffice inclut un complment dont linterface est
quasiment identique celle dExcel, mais le solveur est un freeware appel LP-Solve.
Enfin, il existe le complment Microsoft Solver Foundation qui propose de lier activement
Excel et un langage de modlisation propre. Le solveur est celui propos par GUROBI.
Les logiciels de calcul scientifique incluent souvent un solveur de PL. Cest par exemple le
cas de MATLAB avec son Optimization Toolbox, GAUSS, Mathematica et Scilab.
Parmi les logiciels plus spcialiss, on trouve les solveurs, cest--dire des librairies de
fonctions qui ncessitent lcriture dun programme informatique pour tre appeles. Ils
sont destins tre inclus dans des applications ncessitant la rsolution de problmes
doptimisation. Ces produits sont les plus performants mais ncessitent des comptences en
programmation. Les plus rpandus sont probablement CPLEX, XPRESS et GUROBI. Il
existe des freewares, comme GLPK (GNU Linear Programming Kit), LP-Solve et QSopt.
Outre le systme choisi pour Excel, on peut sparer le modle mathmatique des donnes
en utilisant un logiciel appel modeleur. Les modeleurs utilisent des langages proches de
lcriture mathmatique pour dcrire le modle sous forme gnrique, avec des sommes de
symboles indics et des quantificateurs. Au moment de lexcution, le modle gnrique et
les donnes sont combins et traduits en un modle de bas niveau rsolu par un solveur.
IBM propose ainsi OPL Studio pour le solveur CPLEX, tandis que la socit FICO offre un
langage de haut niveau appel MOSEL pour le solveur XPRESS. Certains modeleurs
comme AMPL sont ouverts et peuvent appeler diffrents solveurs du commerce. Mme si
les autres produits taient conus lorigine pour un solveur propritaire, la tendance est de
permettre lappel dautres solveurs, ce qui est utile pour la programmation non linaire.

68 ____________________________________________ Programmation linaire avec Excel

Certains logiciels peuvent tre considrs comme des environnements de dveloppement,


avec un diteur, un modeleur, un ou des solveurs et parfois des possibilits graphiques.
Cest le cas dOPL Studio, AIMMS, GAMS, LINGO, MPL et XPRESS Optimization Suite.
La liste suivante donne les principaux logiciels de programmation linaire et les adresses
Internet de leurs diteurs, sans le http:// pour allger. Ces produits incluent au minimum un
solveur de PL de type simplexe et un solveur de PLNE. Certains ajoutent un algorithme
dual-simplexe, une mthode de points intrieurs ou un solveur pour la programmation
quadratique (un programme quadratique a une fonction objectif contenant des carrs de
variables et des produits de deux variables). Certains logiciels comme AIMMS, Excel et
LINGO incluent mme un solveur de PNL.

AIMMS
AMPL
CPLEX, OPL Studio
Excel (solveur)
GAMS
GAUSS
GLPK
GUROBI
HS/LP, OMNI
LAMPS
LINGO, Whats Best
LOQO
LP-Solve
Mathematica
Solver Foundation
MOSEK
MPL
C-WHIZZ, OML
QSopt
Scilab
XA
XPRESS

www.aimms.com
www.ampl.com
www-01.ibm.com/software/websphere/products/optimization
www.frontsys.com ou www.solver.com
www.gams.com
www.aptech.com
www.gnu.org/software/glpk
www.gurobi.com
www.haverly.com
info@amsoft.demon.co.uk
www.lindo.com
www.princetn.edu/~rvdb
lpsolve.sourceforge.net/5.5/IDE.htm
www.wolfram.com
www.solverfoundation.com
www.mosek.com
www.maximalsoftware.com
www.keytronms.com
http://www.isye.gatech.edu/~wcook/qsopt
www.scilab.org
www.sunsetsoft.com
www.fico.com

La plupart de ces diteurs offrent des versions gratuites, soit brides, soit pleinement
fonctionnelles mais limites dans le temps. Sous certaines conditions, les universitaires
peuvent souvent obtenir gratuitement des versions compltes (contacter les diteurs).
Depuis notre livre de 2000 avec Visual Xpress, la socit ILOG qui dite CPLEX est
passe sous le contrle dIBM. Le concepteur de CPLEX, Robert Bixby, a fond avec deux
collgues la socit GUROBI, dont les solveurs sont appels un brillant avenir. Enfin,
nous regrettons que lexcellent solveur OSL dIBM ne soit plus maintenu.

Chapitre 3 Le solveur dExcel

_________________________________________________________________________

69

Ce livre naborde pas la programmation non linaire, mais le lecteur pourrait un jour avoir
besoin dun solveur de PNL. Certains des produits dj cits (AIMMS, Excel et LINGO)
incluent en fait un tel solveur. Voici quelques rfrences supplmentaires.

AOA
CONOPT
KNITRO
LANCELOT
LGO
MINOS, SNOPT

www.aimms.com
www.conopt.com
www.ziena.com
galahad.rl.ac.uk/galahad-www
www.pinterconsulting.com
sbsi-sol-optimize.com

3.8 Rfrences et complments


Ce chapitre a montr comment traduire sous Excel un programme linaire simple. Le
chapitre 4 expose comment utiliser le solveur en Visual Basic. Les chapitres 5 15 vont
traiter des problmes plus compliqus, souvent variables entires et insolubles la main.
La gense du solveur dExcel est dcrite dans un article de Fylstra et al. [Fylstra, 1998].
Fourer et al. ont publi des articles similaires sur le dveloppement dAMPL, un langage de
modlisation conu dans les laboratoires dATT [Fourer 1990, 2003]. Lintrt de ces
articles est de rvler les problmes de conception soulevs par ce genre de logiciel.
part les manuels dutilisation joints aux logiciels, il existe des livres pour prsenter
certains des produits cits au 3.7. Ces ouvrages sont souvent accompagns dune version
limite du logiciel. Il existe ainsi un livre sur GAMS, crit par ses concepteurs Brooke,
Kendrick et Meeraus [Brooke 1992], mais il reste proche dun manuel dutilisation.
Les livres suivants sont plus intressants, car plus axs sur la modlisation. Fourer, Gay et
Kernighan ont crit un livre trs clair sur AMPL [Fourer 2002]. Schrage est lauteur dun
livre sur LINDO qui fourmille dexemples [Schrage 1997]. Concernant la modlisation
dapplications choisies, Guret, Prins et Sevaux ont publi en 2000 un livre en franais bas
sur Visual XPRESS [Guret 2000]. Le prsent ouvrage en reprend la plupart des problmes,
mais en les rsolvant avec Excel. Quant au livre de 2000, il a t adapt en anglais pour le
langage de modlisation MOSEL qui a remplac Visual XPRESS [Guret 2002].
Parmi les autres ouvrages en anglais, Williams a publi un recueil de vingt tudes de cas
avec XPRESS [Williams 1993]. Plane [Plane 1994] a rdig un livre bas sur Whats Best,
le complment pour Excel de Lindo Systems. Par ailleurs, on trouve des ouvrages plus
gnraux comme [Powell 2009], [Albright 2010] et [Ragsdale 2010] qui prsentent des
modlisations avec Excel de nombreux problmes et utilisent de manire intensive des
codes VBA. Mais ils ne consacrent quune petite partie la programmation linaire.
Enfin, citons deux rfrences sur les logiciels existants. Fourer [Fourer 2009] publie tous
les ans un comparatif des principaux logiciels commerciaux, dans le magazine OR-MS
Today de la socit US de recherche oprationnelle (INFORMS). Un rpertoire de logiciels
et des FAQ (Frequently Asked Questions ou foires aux questions) sont disponibles sur le
site http://wiki.mcs.anl.gov/NEOS/.

Addendum Excel 2010


1. Installation du solveur
Dans Excel 2010, le solveur est normalement visible dans longlet Donnes, groupe Analyse. Si vous
ne le voyez pas, allez dans le menu Fichier et cliquez sur Options. Dans la fentre des options qui
saffiche, cliquer sur Complments pour avoir la liste des complments installs (actifs) ou inactifs.
Slectionner Complment solveur dans la liste des complments inactifs puis cliquer sur le bouton
Atteindre. La fentre des options se ferme mais une petite fentre Macros disponibles saffiche avec
une liste de macros et des cases cocher. Cocher la case Complment solveur puis le bouton OK. La
fentre se ferme et licne du solveur apparat aussitt dans le groupe Analyse de longlet Donnes.

2. Bote de dialogue du solveur


Elle ressemble celle dExcel 2003-2007, illustre au dbut de ce document. Il est fortement
dconseill de modifier les Options. Voici les diffrences :
la Cellule cible dfinir est maintenant nomme Objectif dfinir.
la case Suppos non ngatif figurant dans les Options dExcel 2003-2007 est maintenant dans la
bote de dialogue sous le nom Rendre les variables sans contrainte non ngatives. Nous vous
conseillons de toujours la cocher car elle rend implicites les contraintes de positivit des variables.
la case Modle suppos linaire dExcel 2003-2007 nexiste plus mais cest vous de choisir
lalgorithme de rsolution. Pour MT14, il faut slectionner Simplex PL dans Slectionner une
rsolution, mme si votre modle contient des variables entires (ent) ou binaires (bin).

3. Limitations
Comme en Excel 2003-2007, on a droit 200 variables. Hlas, le nombre de contraintes qui ntait pas
limit est maintenant limit 100. Cependant, les contraintes de bornes (une variable infrieure ou
gale ou suprieure ou gale une contrainte) ne sont pas comptes dans cette limite.

Vous aimerez peut-être aussi