Académique Documents
Professionnel Documents
Culture Documents
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
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.
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).
Chapitre 1
Introduction la
Recherche Oprationnelle
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.
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.
Gnralits
2. Historique (suite et fin)
Extension aux entreprises vers 1960.
Le dveloppement a suivi les progrs de linformatique :
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.
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.
Gnralits
5. Les outils de la RO
Ils sont emprunts aux maths et linformatique :
4. Tester la mthode
Comparer les rsultats la ralit et les montrer au dcideur.
Raffiner si ncessaire le modle (processus itratif).
Chapitre 2
Programmation linaire
(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
Forme canonique
Pour rsolution graphique
Forme standard
Rsolution algbrique
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
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
1 1
A =
0
1
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
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.
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.
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.
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.
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.
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.
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
1 1 1 0
(a1 , a 2 , a3 , a 4 ) =
0
1
0
1
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
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
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.
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
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.
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 !
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
x3 = 6 x1 x 2
x4 = 3 x2
z = 0 + x1 + 2 x 2
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.
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.
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).
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.
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
Max z = x1 + 2 x 2
x1 +
x 2 + x3
x1 ,
= 6
+ x4 = 3
x3 ,
x4 0
x2
x2 ,
Base
:
:
:
:
Base
3
T
1
1
1
2
1
3
1
4
0
b'
6
3s
0
-zB
1
1
1
2
2
1
3
0
1
4
0
0
5
0
6
-1
3s
-2
-6
-zB
Slide 44 :
x2 = 3 x4
x2 + x4 = 3
x3 = 3 x1 + x4
z = 6 + x1 2 x4
x1 2 x4 = 6
+ 2 x4
x4
= 3 (1)
= 1 ( 2)
+ x4
= 2 (3)
T
1
2
1
1
0
2
0
1
3
1
0
4
-1
1
b'
3
3
-1
-1
-9 -zB
x2
+ x4 = 3
x3 x4 = 9
x2 = 3
x4
z = 9 x3 x4
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
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
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
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
4
5
2 3
3 -7
0
0
-2
4
1
0
0
1
1 1/3 s
12
-2
-4
-zB
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
4/3 -5/3
-17/3 -zB
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 +
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
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.
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
x6
, x6
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.
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.
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
-1
1s
0
' -1
0
-1
0
0
0
0
0
1
1
0
0
-1
-zB
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
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.
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
-1
1s
0
0
0
0
0
-M
-M
0
0
M
-zB
1
2
' M+1 M+2
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
2 -1
3 1
0
1
0
0
1
0
1
-1
-1
1
2
1
-1
-M-2
-2
-zB
T
1
2s
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
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
PL dual (D) :
Max z = c.x
A.x = b
x0
Min w = y.b
y.A c
y de signe quelconque
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
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.
Dualit
3. Proprits
PL dual (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
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.
Dualit
3.
et
(y*.A - c).x* = 0.
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.
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
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).
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
T
1
2
1
1
0
2
0
1
3
1
0
4
-1
1
b'
3
3
-1
-1
-9
-zB
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.
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
T
1
2
1
0
1
2
1
0
3
1
1
4
-2
-1
b'
10
20
-1
-1
-40
-zB
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
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!
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
Chapitre 3
Programmation linaire
en nombres entiers
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!
Notions de base
1. Dfinitions
PL ordinaire :
variables relles
( 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.
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
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!
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.
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.
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.
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).
Notions de base
3. Mthodes de rsolution des PLNE (fin)
C) Mthodes de coupe (trop difficiles pour MT14)
A = 1 1 0 1
0 1 1 1
1 0 1
1 1 0 = 2
0 1
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
Exemple :
i =1 j =1
Est-ce 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
Exemple :
i =1 j =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.
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
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, -.
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.
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
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.
un PL en 0-1
sous forme canonique (contraintes )
en minimisation
avec c 0.
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.
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
ev( S t ) =
jF1 ( t )
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).
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 =
jL ( t )
ij
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!
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.
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
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.
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) :
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
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 , j ) =
Min(0, s
i =1, m
a ij )
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 )
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.
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.
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
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.
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
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
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.
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
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
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
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
i =1, k
=1
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
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.
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
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.
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
Chapitre 4
Programmation dynamique
Partie 1
Principes de base
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.
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.
a
2
g
4
1
2
t
4
a
2
0
7
5
4
4
4
8
10
2
3
5
g
1
7
3
1
8
1
10
5
Partie 3
Problmes se ramenant un
chemin optimal dans un
graphe d'tats
k R :
( i , j )
ijk
bk
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}
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
Lab (i ) q = bk
k =1
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.
(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.
t > 0, st : F ( st , t ) = min{F ( st + d t xt , t 1) + ct xt : 0 xt n}
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
(3,1)
65
(1) Max ci xi
i =1
( 2)
a x b
i =1
p = 0Kb : F (0, p) = 0
le
(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
Partie 4
Un exemple non quivalent
un problme de chemin
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.
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
...
...
...
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.
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
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.
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
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
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
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 :
=
P
(
k
)
P
(
n
k
)
= 4n / n3 / 2
k =1
n n 1 n!(n 1)!
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!
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
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
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.
2 x1
x2
x2
+ 2 x2
3
6
x1 + 2 x2
x1 ,
x2
2
0
x1
x1
Min z =
2 x2
+
x2
+
x2
+
x2
x1 ,
x2
x1
x1
x1
2
1
3
0
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
Base
b'
0.6
0.2
1.2
-0.2
-0.4
5.6
-0.2
-1.4
-8.4
-zB
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
Max z = 10 x + 20 y
5 x + 8 y 60
x 8, y 4
x, y IN
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
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).
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).
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.
TD 7 MODELISATION EN PLNE
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.
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.
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 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
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)
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.
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}
x1
(0,0)
2
3
4
5
d1= 2
p1=13
(0,1)
26
x2
3
39
(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).
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.
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
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
Algorithmes
ns
d'app
es
ma
Do in
licatio
Programmation
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.
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.
_________________________________________________________________________
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
B4:B5 = C6:C7
B4 <= 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 ent entier
B4 <= 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.
maximisation du profit
disponibilit du four
disponibilit du broyeur
x1, x2 0
_________________________________________________________________________
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.
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 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
(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).
_________________________________________________________________________
59
Dans le cas dExcel, la traduction dun modle gnrique va exploiter les caractristiques
suivantes du tableur et du solveur :
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.
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).
_________________________________________________________________________
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.
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
b) Lister les donnes dpendant dune ou plusieurs entits et les regrouper en tableaux
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
_________________________________________________________________________
63
ce stade, il est ensuite assez facile de transposer le modle dans nimporte quel logiciel.
1
50
0
2
70
0
Objectif z
0
Matrice A
1
2
40
20
30
30
Vecteur b
360
480
U
0
0
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.
_________________________________________________________________________
65
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).
_________________________________________________________________________
67
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.
_________________________________________________________________________
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. 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.