You are on page 1of 32

IFT1575 Modles de recherche oprationnelle (RO)

2. Programmation linaire
b. Mthode du simplexe c. Dualit d. Analyse de sensibilit

Interprtation des variables dcart


Dans la solution optimale du problme Wyndor Glass, on a x3 = 2, x4 = x5 = 0 Cela indique que les deux dernires ressources (temps aux usines 2 et 3) sont pleinement utilises Une partie de la premire ressource (temps lusine 1) nest pas utilise: 2 heures Voir lexemple dans le OR Tutor

2. Programmation linaire

Critre doptimalit
Exprimons lobjectif en fonction des variables horsbase dans la solution optimale Rappelons que dans cette solution, on a :

x x
1

1 + x 2 1 x 3

= 1 + x 3
5

6 2

2. Programmation linaire

Critre doptimalit (suite)


Aprs substitution dans lobjectif, on obtient :
Z = 3 x1 + 5 x2 = 3 (2 + (1/3) x4 (1/3) x5) + 5 (6 (1/2)x4) = 36 - (3/2) x4 x5

Toute solution ralisable (x1, x2, x3, x4, x5) satisfait


Z = 36 + 0 x1 + 0 x2 + 0 x3 - (3/2) x4 - x5 36

La valeur optimale est donc 36

2. Programmation linaire

Critre doptimalit (suite)


Le critre doptimalit snonce ainsi comme suit :
tant donn que lobjectif sexprime uniquement en fonction des variables hors-base de la solution de base ralisable courante Si les coefficients de ces variables dans lobjectif sont tous ngatifs ou nuls, alors la solution de base ralisable courante est optimale

Les coefficients des variables hors-base dans lobjectif sont appels cots rduits (ou cots relatifs)

2. Programmation linaire

Variable dentre
Si au moins un cot rduit est positif pour la solution de base ralisable courante :
On na pas encore atteint une solution optimale Il faut donc effectuer au moins un pivot Quelle variable doit-on faire entrer dans la base?

On propose de choisir celle dont le cot rduit est le plus grand parmi toutes les variables hors-base Cette variable fournit la plus grande augmentation marginale (par unit) de la valeur de lobjectif Attention : ce nest peut-tre pas la plus grande augmentation globale!
2. Programmation linaire 6

Variable de sortie
Lorsquon effectue un pivot, il faut choisir la variable qui va sortir de la base en tentant de garder toutes les variables non ngatives Supposons que xj est la variable dentre Chaque variable de base xi sexprime alors en fonction de la variable dentre (puisque les autres variables hors-base sont nulles) :

x =b a x
i i ij

Dans cette expression, les coefficients b i , a ij sont obtenus suite plusieurs pivots On a ncessairement b i 0 (pourquoi?)
2. Programmation linaire 7

Variable de sortie (suite)


Pour que toutes les variables demeurent non ngatives suite au pivot, on doit avoir :
i i ij j ij j i

x =b a x 0 a x b Si a 0 , lingalit ne limite pas laugmentation de


ij

Si cette condition est satisfaite pour tous les i , on peut donc augmenter indfiniment xj : lobjectif est non born Si a ij > 0, lingalit limite laugmentation de xj
i

Variable de sortie : celle qui atteint


2. Programmation linaire

b min | a > 0 a
ij ij

Mthode du simplexe: rsum


1. Obtenir une solution de base ralisable initiale 2. Vrifier le critre doptimalit: si les cots rduits de toutes les variables hors-base sont ngatifs ou nuls, arrter 3. Choisir la variable dentre xj , soit celle qui a le cot rduit le plus lev b i 4. Dterminer la variable de sortie: min | a ij > 0

ij

5. Effectuer un pivot et dterminer une nouvelle solution de base ralisable; retourner ltape 2 Voir lexemple dans le OR Tutor
2. Programmation linaire 9

Forme augmente
Tout modle de PL peut se ramener la forme suivante:
max

cx
j

j =1

ax
ij

+ xn

+ i

= bi

i = 1, 2 ,..., m

j =1

xj 0 xn + i 0

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

Hypothse: bi 0, i=1,2,,m But: obtenir une solution de base initiale


2. Programmation linaire 10

Transformation du min au max


Supposons quon doit minimiser lobjectif au lieu de le maximiser On utilise alors la proprit suivante:

min

cx
j

= max

cx
j

j =1

j =1

On rsout le problme de maximisation en changeant les signes des coefficients dans lobjectif La valeur optimale du problme de minimisation est loppos de celle du problme de maximisation

2. Programmation linaire

11

Transformation du en =
Si
i

a x b , il y a deux cas :
ij j i j =1

b 0 , on ajoute une variable dcart xn + i 0

a x + x
ij j j =1
i

n + i

=b

au cas de la page suivante

b < 0 , on multiplie lingalit par -1 et on se ramne

2. Programmation linaire

12

Transformation du en =
Si a ijxj
j =1
i

, il y a deux cas :

au cas de la page prcdente


i

b 0 , on multiplie lingalit par -1 pour se ramener

b > 0 , on soustrait une variable de surplus x0 i 0 n

ax x =b
ij j 0i j =1

On se ramne alors au cas de la page suivante

2. Programmation linaire

13

Ajout de variables artificielles


Si j=1,..,n aij xj = bi et quaucune variable nest isole (une variable est isole si elle est coefficient 1 dans cette quation et coefficient 0 dans les autres):
On ajoute une variable artificielle xn+i 0 On lui associe un profit trs ngatif : - M

max j=1,..,n cj xj - M xn+i

j=1,..,n aij xj + xn+i = bi


Si le problme est ralisable, on doit avoir xn+i = 0
2. Programmation linaire 14

Ajout de variables artificielles (suite)


Mthode du grand M Optimiser en utilisant une fonction objective forme de la fonction de cot initiale et de la somme, trs fortement pnalise, des variables artificielles Mthode deux phases Phase 1: trouver une solution ralisable en minimisant la somme des variables artificielles Phase 2: optimiser en revenant la fonction de cot initial partir de la solution intiale trouve dans la phase 1
2. Programmation linaire 15

Variables artificielles: exemple


min Z = 0.4 x1 + 0.5 x2

0.3 x1 + 0.1 x2 2.7 0.5 x1 + 0.5 x2 = 6 0.6 x1 + 0.4 x2 6 x1 0, x2 0

2. Programmation linaire

16

Transformations
Systme initial
0.3 x1 + 0.1 x2 2.7 0.5 x1 + 0.5 x2 = 6 0.6 x1 + 0.4 x2 6

Systme dquations
0.3 x1 + 0.1 x2 + xs1 = 2.7 0.5 x1 + 0.5 x2 =6 0.6 x1 + 0.4 x2 - xs2 = 6 xs1 0, xs2 0

2. Programmation linaire

17

Ajout de variables artificielles


Systme dquations
0.3 x1 + 0.1 x2 + xs1 = 2.7 0.5 x1 + 0.5 x2 =6 0.6 x1 + 0.4 x2 - xs2 = 6 xs1 0, xs2 0

Ajout de variables artificielles


0.3 x1 + 0.1 x2 + xs1 = 2.7 0.5 x1 + 0.5 x2 + xa2 =6 0.6 x1 + 0.4 x2 - xs2 + xa3 = 6 xs1 0, xs2 0, xa2 0, xa3 0

2. Programmation linaire

18

Dmarrer la mthode du simplexe


Ajout de variables artificielles
0.3 x1 + 0.1 x2 + xs1 = 2.7 0.5 x1 + 0.5 x2 + xa2 =6 0.6 x1 + 0.4 x2 - xs2 + xa3 = 6 xs1 0, xs2 0, xa2 0, xa3 0

Mthode deux phases


Phase 1: min xa2 + xa3 jusqu obtenir une valeur optimale nulle (si le PL a une solution ralisable) Phase 2: min 0.4 x1 + 0.5 x2

Mthode du grand M
min 0.4 x1 + 0.5 x2 + M xa2 + M xa3
2. Programmation linaire 19

Variables valeurs quelconques


Si une variable xj peut prendre des valeurs ngatives, on introduit deux variables xj+ 0 et xj- 0 On pose alors xj = xj+ - xjAutre possibilit : si xj Lj (Lj est une constante ngative) On pose alors xj+ = xj - Lj 0

2. Programmation linaire

20

Pour exprimenter
Pour des petits modles (moins de 6 variables et 6 contraintes fonctionnelles) : essayer le IOR Tutorial Pour des modles plus gros, modliser et rsoudre avec Excel Solver Revoir le cas Wyndor Glass Pour des modles encore plus gros, essayer Lindo/Lingo et CPLEX/MPL (CD)

2. Programmation linaire

21

Dualit : exemple Wyndor Glass


Supposons quune compagnie partenaire de Wyndor Glass, appele Dual Glass, aimerait louer du temps aux usines afin de fabriquer des lots de produits Quel prix (en $/h) pour chaque usine devrait-elle demander de telle sorte que le rsultat soit quitable, soit aucun profit ni perte pour aucun des deux partenaires?

2. Programmation linaire

22

Modle dual
Variables de dcision : yi = prix ($/h) pour louer du temps lusine i Dual Glass cherche minimiser le prix total quelle devra payer pour le temps lou aux trois usines Le prix total pour chaque usine peut tre exprim comme le temps de production maximum (h) * prix pour louer du temps ($/h) Objectif : min W = 4 y1 + 12 y2 + 18 y3

2. Programmation linaire

23

Modle dual (suite)


Les contraintes assurent que le prix total associ la fabrication dun lot de chaque produit ne doit pas tre infrieure au profit ($/lot) quen retire Wyndor

Glass
Le prix total associ un produit peut tre exprim comme le temps consacr la production de chaque lot (h/lot) * le prix pour louer du temps ($/h) Contrainte associe au produit 1 : y1 + 3 y3 3 Contrainte associe au produit 2 : 2y2 + 2 y3 5

2. Programmation linaire

24

Modle dual (suite)


Voici le modle pour Dual Glass, appel modle dual :
Min W = 4 y + 12 y + 18 y y + 3y 3 2y + 2y 5 y,y ,y 0
1 2 1 3 2 3 1 2 3 3

Rappel : modle pour Wyndor Glass, dit modle primal Max Z = 3 x + 5 x x 4 2 x 12 3 x + 2 x 18 x,x 0
1 2 1 2 1 2 1 2

2. Programmation linaire

25

Couple primal-dual
On remarque les relations suivantes entre les deux modles
Primal Variable Contrainte Max Profit unitaire Terme de droite Ligne Colonne Contrainte
2. Programmation linaire

Dual Contrainte Variable Min Terme de droite Cot unitaire Colonne Ligne Contrainte
26

Cots rduits
Rappelons que pour la solution de base optimale du problme Wyndor Glass, lobjectif scrit :

Z= 36 (3/2) x4 x5 x4 et x5 sont les variables hors base et les coefficients -3/2 et -1 sont leurs cots rduits Si on augmente la valeur de x4 de 1 unit, le profit

diminue de 3/2 Mais x4 est la variable dcart associe la contrainte de ressource pour lusine 2 : augmenter x4 de 1 veut dire diminuer le terme de droite correspondant de 1

2. Programmation linaire

27

Multiplicateurs optimaux
Si Wyndor Glass loue Dual Glass une heure de temps de production lusine 2 :
La capacit lusine 2 diminue de 1 h (diminution de 1 unit du terme de droite) La valeur de lobjectif diminue de 3/2 Pour retrouver un profit total gal, il faudra donc demander un prix de 3/2 (1500$) pour chaque heure de temps loue lusine 2

De manire gnrale, la solution optimale du dual est donne par: cots rduits des variables dcart (aussi appels multiplicateurs optimaux) Dans notre exemple : y1 = 0, y2 = 3/2, y3 = 1
2. Programmation linaire 28

carts complmentaires
Le prix de la variable y1 est fix 0
Wyndor Glass nexige rien pour une heure loue lusine 1
Bien sr, puisquil lui reste du temps de production non utilis (la variable dcart x3 est > 0) Un prix > 0 ferait augmenter le profit, et la solution ne serait plus quitable

Les prix des autres variables est > 0


Puisque le temps de production est utilis plein, louer une heure Dual Glass revient perdre une heure de production, donc rduire le profit total Pour retrouver le mme profit, il faut exiger un prix gal au multiplicateur optimal (= - cot rduit)

carts complmentaires : xn+i . yi = 0


2. Programmation linaire 29

Analyse de sensibilit
En gnral, le cot rduit dune variable hors-base indique le changement dans lobjectif apport par une augmentation de 1 unit de la valeur de cette variable Pour les variables dcart, ce principe peut se formuler ainsi : le cot rduit dune variable dcart hors-base indique le changement dans lobjectif apport par une diminution de 1 unit du terme de droite associ Ceci est un exemple danalyse de sensibilit : un paramtre (ici, un terme de droite) est modifi et on mesure la sensibilit de la solution optimale ce changement
2. Programmation linaire 30

Analyse de sensibilit (suite)


On peut mesurer la sensibilit de la solution optimale un changement dun terme de droite ou dun coefficient dans lobjectif
En rsolvant nouveau le modle modifi En utilisant le rapport de sensibilit dExcel Solver

Ce rapport (pour Wyndor Glass) nous apprend que:


Les multiplicateurs optimaux (Shadow Prices) sont 0, 1500 et 1000 La capacit lusine 3 peut prendre nimporte quelle valeur entre 12h et 24h sans changer la solution optimale du dual Le profit unitaire pour le produit 1 peut prendre nimporte quelle valeur entre 0 et 7500$ sans changer la solution optimale du primal

Voir la procdure graphique dans le IOR Tutorial


2. Programmation linaire 31

Dualit et analyse de sensibilit


Tout modle de PL possde un dual Si un modle de PL possde une solution optimale, il en est de mme pour son dual, et les valeurs optimales des deux modles sont gales Solution optimale du dual = multiplicateurs optimaux On peut les lire directement dans le tableau optimal du simplexe : ce sont les coefficients dans la ligne correspondant lobjectif Cot rduit (-coefficient dans la ligne de lobjectif): mesure la variation de lobjectif entran par une augmentation de 1 unit de la valeur de la variable hors-base associe Pour en savoir plus, suivre IFT2505
2. Programmation linaire 32

You might also like