Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Programmation Lineaire - Cours 5
Universite Bordeaux 1
Bat A33 - Bur 265
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Sommaire
1 Algorithme du simplex dual
2 Analyse de sensibilite
3 Quelques Rappels
4 Simplex revise
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Changement de notations
Primal :
max∑
j cjxj
s.c.∑n
j=1 ai ,jxj ≤ bi i = 1, . . . , m (yn+i : i = 1, . . . ,m)
xj ≥ 0 j = 1, . . . , n
Variables d’ecart :
xn+i = bi −∑n
j=1 ai ,jxj pour i = 1, . . . ,m
Dual :
min∑m
i=1 biyn+i
s.c.∑m
i=1 ai ,jyn+i ≥ cj j = 1, . . . , n (xj : j = 1, . . . , n)yn+i ≥ 0 i = 1, . . . , m
Variables d’exces :
yj =∑m
i=1 ai ,jyn+i − cj pour j = 1, . . . , n
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Complementarite
Une solution x primale realisable et une solution y duale realisablesont optimales si, et seulement si,
( x1 . . . xn xn+1 . . . xn+m )× × × ×
( y1 . . . yn yn+1 . . . yn+m )= = = =0 . . . 0 0 . . . 0
xi est en base si et seulement si yi est hors-base, et inversement.
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Dictionnaires Primaux / Duaux
max 4x1 − 13x2 + 7x3s.c. 3x1 + 2x2 + 5x3 ≤ 5 (y4)
1x1 − 3x2 + 2x3 ≤ 3 (y5)x1 , x2 , x3 ≥ 0
min 5y4 + 3y5s.c. 3y4 + 1y5 ≥ 4
2y4 − 3y5 ≥ −135y4 + 2y5 ≥ 7y4 , y5 ≥ 0
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Dictionnaires Primaux / Duaux
Ajoutons les variables d’ecarts :
max 4x1 − 13x2 + 7x3s.c. 3x1 + 2x2 + 5x3 + 1x4 = 5
1x1 − 3x2 + 2x3 + x5 = 3x1 , x2 , x3 , x4 , x5 ≥ 0
Ecrivons le dictionnaire initial :
z = 0 + 4x1 − 13x2 + 7x3x4 = 5 − 3x1 − 2x2 − 5x3x5 = 3 − 1x1 + 3x2 − 2x3
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Dictionnaires Primaux / Duaux
Ajoutons les variables d’exces :
min 5y4 + 3y5s.c. 3y4 + 1y5 − y1 = 4
2y4 − 3y5 − y2 = −135y4 + 2y5 − y3 = 7y4 , y5 , y1 , y2 , y3 ≥ 0
Ecrivons le dictionnaire initial :
z = 0 + 5y4 + 3y5y1 = −4 + 3y4 + 1y5y2 = 13 + 2y4 − 3y5y3 = −7 + 5y4 + 2y5
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Dictionnaires Primaux / Duaux
Primal :
z = 0 + 4x1 − 13x2 + 7x3x4 = 5 − 3x1 − 2x2 − 5x3x5 = 3 − 1x1 + 3x2 − 2x3
Dual :
z = 0 + 5y4 + 3y5y1 = −4 + 3y4 + 1y5y2 = 13 + 2y4 − 3y5y3 = −7 + 5y4 + 2y5
Faisons entrer x1 en base et sortir x5 de la base dans le primal.(Attention, on va perdre la realisabilite.)
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Dictionnaires Primaux / Duaux
Primal :
z = 12 − 4x5 − 1x2 − 1x3x4 = −4 + 3x5 − 11x2 + 1x3x1 = 3 − 1x5 + 3x2 − 2x3
L’operation equivalente dans le dual consiste a faire entrer en basey5 et sortir de la base y1.Dual :
z = 12 − 4y4 + 3y1y5 = 4 − 3y4 + 1y1y2 = 1 + 11y4 − 3y1y3 = 1 − 1y4 + 2y1
M ↔ −MT
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Remarques
Conditions d’optimalite ⇔ conditions de realisabilitedu primal du dual
Conditions de realisabilite ⇔ conditions d’optimalitedu primal du dual
L’algorithme du simplex primal va de solutions realisables ensolutions realisables jusqu’a l’obtention de l’optimalite.
L’algorithme du simplex dual va de solutions “optimales” ensolutions “optimales” jusqu’a l’obtention de la realisabilite.
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Forme algebrique
Soit B une base.
Primal :
z = cBB−1b + (cN − cBB
−1N)xNs.c. xB = B−1b − B−1NxN
xB, xN ≥ 0
Dual :
z = cBB−1b + (B−1b)T yB
s.c. yN = −(cN − cBB−1N)T + (B−1N)T yB
yN , yB ≥ 0
On pose :b = B−1b,c = cN − cBB
−1N,a = B−1A.
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Algorithme du simplex dual
On va appliquer l’algorithme du simplex dual, en suivant lesoperations a partir des dictionnaires primaux.
yi est en base ⇔ xi hors-base.
yi est hors-base ⇔ xi en base.
Quand on va effectuer un pivotage :
yk entre en base et ys sort de la base.
xk sort de la base et xs entre en base.
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Algorithme du simplex dual
Choix de la variable yk entrante dictee par la minimisation dudual :
k ∈ B telle que B−1k,. b = bk < 0
⇔ xk non realisable.
La base courante du dual N est optimale si b ≥ 0 ⇔ xB estprimale realisable.
La variable duale sortante est la premiere variable de base dudual a s’annuler :
s ∈ N telle que ak,s < 0 et csak,s
= mini
{
ciak,i
: ak,i < 0}
.
⇔ la variable primale entrante s ∈ N est la premiere dont lecout reduit s’annule.
Le probleme dual est non borne (irrealisabilite du primal) siak,i ≥ 0 pour tout i ∈ N
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Exemple
Primal z = 12 − 4x5 − 1x2 − 1x3x4 = −4 + 3x5 − 11x2 + 1x3x1 = 3 − 1x5 + 3x2 − 2x3
Dual z = 12 − 4y4 + 3y1y5 = 4 − 3y4 + 1y1y2 = 1 + 11y4 − 3y1y3 = 1 − 1y4 + 2y1
La condition d’optimalite du primal est verifiee ⇔ la solution dualeassociee est realisableLa solution du primal n’est pas realisable ⇔ la solution dualeassociee n’est pas optimale.On va donc appliquer le simplex dual.Variable sortante (entrante pour le dual) : x4 (y4)Variable entrante (sortante pour le dual) : x3 (y3)P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Exemple
Apres pivotage :
Primal z = 8 − 1x5 − 12x2 − 1x4x3 = 4 − 3x5 + 11x2 + 1x4x1 = −5 + 5x5 − 19x2 − 2x4
Dual z = 8 + 4y3 − 5y1y5 = 1 + 3y3 − 5y1y2 = 12 − 11y3 + 19y1y4 = 1 − 1y3 + 2y1
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Utilite
Eviter la phase I : Si un dictionnaire est primal realisable, onapplique le simplex primal.Si un dictionnaire n’est pas realisable mais satisfait auxconditions d’optimalite, on utilise le simplex dual.Si un dictionnaire n’est ni realisable, ni optimal, alors onapplique la phase I.
Simplex primal plus efficace ? : La complexite empirique dusimplex primal est en Θ(m + log n). Il est ainsi preferabled’avoir la plus grande valeur entre m et n dans le log. Si unprobleme a plus de contraintes que de variables, il estpreferable d’utiliser le simplex dual.
Reoptimisation post-optimale : Si on perturbe un problemeet qu’on perd la realisabilite, tout en gardant l’optimalite, ilest indique d’appliquer le simplex dual.
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Sommaire
1 Algorithme du simplex dual
2 Analyse de sensibilite
3 Quelques Rappels
4 Simplex revise
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Analyse de sensibilite
L’analyse de sensibilite consiste a analyser l’optimalite et larealisabilite d’une base optimale lorsque l’on modifie le problemeinitial.
Modification de l’objectif.
Modification de capacite.
Ajout d’une variable.
Ajout d’une contrainte.
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Modification de l’objectif
c → c ′ = c +∆
Est-ce que la base reste realisable ?Oui : b = B−1b ≥ 0 est independant de c .
Est-ce que la base reste optimale ?Verifier c ′ = c ′N − c ′BB
−1N ≤ 0.
Note : si c ′B = cB, alors
c ′N = c ′N − c ′BB−1N
c ′N − cN + cN − c ′BB−1N
∆N + cN
Reoptimisation : Si les conditions d’optimalite ne sont passatisfaites, comme on garde une base realisable, on appliquel’algorithme du simplex primal a partir de la base courante.P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Modification de capacite
b → b′ = b +∆
Est-ce que la base reste optimale ?Oui : c = cN − cBB
−1N ≤ 0 est independant de b.
Est-ce que la base reste realisable ?Verifier b′ = B−1b′ ≥ 0.
Noter que :
b′ = B−1b′
B−1b + B−1∆b + B−1∆
Reoptimisation : Les conditions d’optimalite restant verifiees, sion perd la realisabilite, on applique l’algorithme du simplex dual apartir de la base courante.P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Ajout d’une variable (colonne)
Ajout de x0 → (c0, a0)
La nouvelle variable est ajoutee hors-base. La solution (x , x0 = 0)reste realisable.La base reste-t-elle optimale ?
Verifier que le cout reduit de la nouvelle variable
c0 − cBB−1a0 ≤ 0.
Noter que y∗ = cBB−1 = −cE est disponible dans le dictionnaire
optimal.Reoptimisation : Comme la base est realisable, si le cout reduitde la nouvelle variable est > 0, on n’a pas l’optimalite. On appliquel’algorithme du simplex primal a partir de la base courante.Attention a bien recalculer a0 = B−1a0.P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Ajout d’une contrainte (ligne)
Ajout de dx ≤ d0
Ajouter une contrainte revient a ajouter une variable y0 dans ledual. Quand on ajoute une contrainte, on ajoute aussi une nouvellevariable d’ecart qui sera en base (cout reduit nul). La nouvelle basereste optimale.
La base reste-t-elle realisable ?Verifier que dx∗ ≤ d0.
Reoptimisation : Comme la base reste optimale (dual-realisable),si la contrainte n’est pas satisfaite, on aura une solution irrealisable(non optimale dans le dual) → simplex dual.
Note : lors de l’ajout de la nouvelle contrainte, il faudra penser aidentifier chaque variable de base presente dans la contrainte avecleur valeur en fonction des variables hors-base.P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Retour dans le yaourt
Dictionnaire initial :
Max 4x1+ 5x2+ 0x3+ 0x4+ 0x5 = z
2x1+ 1x2+ 1x3+ 0x4+ 0x5 = 8001x1+ 2x2+ 0x3+ 1x4+ 0x5 = 7000x1+ 1x2+ 0x3+ 0x4+ 1x5 = 300
Dictionnaire final :
Max 0x1+ 0x2− 1x3− 2x4+ 0x5 = z − 22000x1+ 0x2+
13x3−
23x4+ 1x5 = 100
1x1+ 0x2+23x3−
13x4+ 0x5 = 300
0x1+ 1x2−13x3+
23x4+ 0x5 = 200
On en deduit B = {5, 1, 2} et N = {3, 4}.
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Informations issues des dictionnaires
A partir du dictionnaire initial :
Max 4x1+ 5x2+ 0x3+ 0x4+ 0x5 = z
2x1+ 1x2+ 1x3+ 0x4+ 0x5 = 8001x1+ 2x2+ 0x3+ 1x4+ 0x5 = 7000x1+ 1x2+ 0x3+ 0x4+ 1x5 = 300
B =
0 2 10 1 21 0 1
, N =
1 00 10 0
, b =
800700300
cB = (0, 4, 5), cN = (0, 0)
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Informations issues des dictionnaires
A partir du dictionnaire final :
Max 0x1+ 0x2− 1x3− 2x4+ 0x5 = z − 22000x1+ 0x2+
13x3−
23x4+ 1x5 = 100
1x1+ 0x2+23x3−
13x4+ 0x5 = 300
0x1+ 1x2−13x3+
23x4+ 0x5 = 200
cN = cN − cBB−1N = (−1, −2),
B−1N =
13
−23
23
−13
−13
23
, B−1b =
100300200
B−1AE = B−1I = B−1 =
13
−23
123
−13
0−1
323
0
cE = cE − cBB−1I = −cBB
−1 = −y∗ = (−1, −2, 0)P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Exemple analyse de sensibilite
Question : Dans quelle mesure puis-je modifier ma quantite de laiten stock sans que cela change la realisabilite ou l’optimalite de labase ?Changer b n’a d’influence que sur la realisabilite de la base (et surla valeur de l’objectif) mais pas sur l’optimalite.
On pose b′ = b +∆ avec ∆ =
0δ
0
B−1b′ = B−1b + B−1∆ =
100− 23δ
300− 13δ
200 + 23δ
≥ 0 ⇔δ ≤ 150δ ≤ 900δ ≥ −300
On doit avoir −300 ≤ δ ≤ 150.
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Exemple analyse de sensibilite
Question : On veut produire un nouveau yaourt nature et sucre.Chaque kilo de ce yaourt necessitera l’utilisation de 2 kilos de laitet 1 kilo de sucre. A partir de quel prix ce yaourt sera-t-il rentable ?Ici, on va ajouter une variable x6 hors-base. Pour que sa productionsoit rentable, il faut que son cout reduit dans la base precedementoptimale soit > 0.Soit c6 le profit realise sur ce nouveau yaourt. Calculons
c6 = c6 − cBB−1N
.,6
c6 − (1, 2, 0)
021
c6 − 4
Pour que c6 ≥ 0, on doit avoir c6 ≥ 4.
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Exemple analyse de sensibilite
Question : On veut maintenant prendre en compte la capacite dela chambre froide ou sont stockes les yaourts. Cette chambre froidepeut contenir au plus 400 kilos de yaourt. Quelle est l’influence surla solution optimale.Il s’agit ici d’ajouter une contrainte :
x1 + x2 ≤ 400
On peut tout d’abord remarquer que la contrainte est violee par lasolution optimale.Si x7 est la variable d’ecart associee a cette on ctrainte, on ajoute :
x7 = 400− x1 − x2x7 = 400− (300− 2
3x3 +
13x4)− (200 + 1
3x3 −
23x4)
x7 = −100 + 13x3 +
13x4
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Sommaire
1 Algorithme du simplex dual
2 Analyse de sensibilite
3 Quelques Rappels
4 Simplex revise
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Convention d’indexation des composantes de y
Primal Dual
Variables originales ↔ Variables d’ecartxO = (x1, . . . , xn) yO = (y1, . . . , yn)
Variables d’ecart ↔ Variables originalesxE = (xn+1, . . . , xn+m) yE = (yn+1, . . . , yn+m)
Dictionnaire final :
z = cBB−1b + (cN − cBB
−1N)xNs.c. xB = B−1b − B−1NxN
xB, xN ≥ 0
Solution z∗ = cBB−1b = cx∗ = y∗b
avec y∗ = y∗E = (y∗n+1, . . . , y∗n+m) = −cE = cBB
−1
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Sommaire
1 Algorithme du simplex dual
2 Analyse de sensibilite
3 Quelques Rappels
4 Simplex revise
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Simplex revise
Idee : ne calculer que ce qui est necessaire. Ne pas calculer tous lesdictionnaires.
Exemple :c = (19, 13, 12, 17, 0, 0, 0)
A =
3 2 1 2 1 0 01 1 1 1 0 1 04 3 3 4 0 0 1
Avec B = {1, 3, 7}, N = {2, 4, 5, 6},
xB =
546315
, B =
3 1 01 1 04 3 1
, N =
2 2 1 01 1 0 13 4 0 0
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Simplex revise
Trouver une variable entrante k de cout reduit positif :Calculer cN = cN − cBB
−1N :
Calculer yE = cBB−1 en resolvant le systeme yEB = cB.
(y5 y6 y7)
3 1 01 1 04 3 1
= (19 12 0)
On obtient yE = (3.5 8.5 0).
Calculer cN = cN − yEN
(13 17 0 0)− (3.5 8.5 0)
2 2 1 01 1 0 13 4 0 0
.
On obtient cN = (−2.5 1.5 − 3.5 − 8.5).x4 entre en base.
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Simplex revise
Trouver une variable sortante s en augmentant la variable entrantejusqu’a la valeur t pour laquelle une variable de B s’annule :max {t ≥ 0 : B−1b − B−1N
.,kt ≥ 0}.
Calculer d = B−1N.,k en resolvant le systeme Bd = N
.,k
3 1 01 1 04 3 1
d1d2d3
=
214
Ce qui donne dT = (0.5 0.5 0.5).b = B−1b, la valeur courante de xB est disponible. Calculermax{t ≥ 0 : tdi ≤ bi , i = 1, . . . ,m}
= min{ bidi, i = 1, . . . ,m : di > 0}
= min{ 540.5
, 630.5
, 150.5
}On obtient tmax = 30 pour s = 7.x7 sort de la base.
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Simplex revise
Remettre a jour la solution de base.
B = (B \ {s}) ∪ {k}
N = (N \ {k}) ∪ {s}
On obtient la solution associee en posant :xk = tmax
xs = 0xi = xi − tmaxdi pour i ∈ B \ {s}.
Il faut encore remettre a jour B et N.
B = ({1, 3, 7} \ {7}) ∪ {4} = {1, 3, 4}
xB =
394830
, B =
3 1 21 1 14 3 4
, N =
2 0 1 01 0 0 13 1 0 0
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Quelques remarques
L’ordre des colonnes de B n’a pas d’importance a partir dumoment ou il est coherent avec l’ordre des composants de B.
La methode du simplex revise demande nettement moins detravail que celle du simplex qui calcule tous les coefficients dunouveau dictionnaire.
En pratique, la matrice B est factorisee, B = LU, pour uneplus grande efficacite de resolution des systemes yEB = cB etBd = N
.,k .
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Algorithme du simplex dualAnalyse de sensibilite
Quelques RappelsSimplex revise
Algorithme du simplex revise
Soit B, xB et B une base initiale et la solution associee.
1 Resoudre yEB = cB.2 Choisir une variable k ∈ N telle que
ck = ck − yEA.,k > 0.S’il n’en existe pas, la solution est optimale, STOP.
3 Resoudre Bd = A.,k .
4 Trouver tmax = max{t ≥ 0 : xB − td ≥ 0}.S’il n’en existe pas, le probleme est non-borne, STOP.Sinon, on choisi une variable s qui tombe a zero dansxB − tmaxd .
5 Poser xB = xB − tmaxd et remplacer xs par xk = tmax dans xBPoser B = (B \ {s}) ∪ {k} et remplacer la colonne s de B parA.,k .
Retourner au pas 1.
P. Pesneau [email protected] Programmation Lineaire - Cours 5
Top Related