Programmation Linéaire

publicité
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Programmation Linéaire - Cours 5
P. Pesneau
[email protected]
Université Bordeaux 1
Bât A33 - Bur 265
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Sommaire
1
Algorithme du simplex dual
2
Analyse de sensibilité
3
Quelques Rappels
4
Simplex révisé
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Changement de notations
Primal :
P
cx
max
Pnj j j
s.c.
j=1 ai,j xj ≤ bi
xj ≥ 0
i = 1, . . . , m
j = 1, . . . , n
(yn+i : i = 1, . . . , m)
Variables d’écart :
xn+i = bi −
Dual :
min
s.c.
Pn
j=1 ai,j xj
Pm
i=1 bi yn+i
Pm
i=1 ai,j yn+i ≥ cj
yn+i ≥ 0
pour i = 1, . . . , m
j = 1, . . . , n
i = 1, . . . , m
(xj : j = 1, . . . , n)
Variables d’excès :
P
yj = m
i=1 ai,j yn+i − cj pour j = 1, . . . , n
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Complémentarité
Une solution x primale réalisable et une solution y duale réalisable
sont optimales si, et seulement si,
(
(
x1
×
y1
=
0
...
...
...
xn
×
yn
=
0
xn+1
×
yn+1
=
0
...
...
...
xn+m
×
yn+m
=
0
)
)
xi est en base si et seulement si yi est hors-base, et inversement.
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Dictionnaires Primaux / Duaux
max
s.c.
4x1
3x1
1x1
x1
min
s.c.
−
+
−
,
13x2
2x2
3x2
x2
5y4
3y4
2y4
5y4
y4
+
+
−
+
,
P. Pesneau [email protected]
+
+
+
,
3y5
1y5
3y5
2y5
y5
7x3
5x3
2x3
x3
≥
≥
≥
≥
≤
≤
≥
5
3
0
(y4 )
(y5 )
4
−13
7
0
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Dictionnaires Primaux / Duaux
Ajoutons les variables d’écarts :
max
s.c.
4x1
3x1
1x1
x1
−
+
−
,
13x2
2x2
3x2
x2
+
+
+
,
7x3
5x3
2x3
x3
+
1x4
,
x4
+
,
x5
x5
Ecrivons le dictionnaire initial :
z
x4
x5
=
=
=
0
5
3
+
−
−
4x1
3x1
1x1
P. Pesneau [email protected]
−
−
+
13x2
2x2
3x2
+
−
−
7x3
5x3
2x3
Programmation Linéaire - Cours 5
=
=
≥
5
3
0
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Dictionnaires Primaux / Duaux
Ajoutons les variables d’excès :
min
s.c.
5y4
3y4
2y4
5y4
y4
+
+
−
+
,
3y5
1y5
3y5
2y5
y5
−
,
y1
y1
−
y2
,
y2
−
,
y3
y3
=
=
=
≥
Ecrivons le dictionnaire initial :
z
y1
y2
y3
=
=
=
=
0
−4
13
−7
P. Pesneau [email protected]
+
+
+
+
5y4
3y4
2y4
5y4
+
+
−
+
3y5
1y5
3y5
2y5
Programmation Linéaire - Cours 5
4
−13
7
0
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Dictionnaires Primaux / Duaux
Primal :
z
x4
x5
=
=
=
0
5
3
z
y1
y2
y3
=
=
=
=
+
−
−
4x1
3x1
1x1
−
−
+
13x2
2x2
3x2
+
−
−
7x3
5x3
2x3
Dual :
0
−4
13
−7
+
+
+
+
5y4
3y4
2y4
5y4
+
+
−
+
3y5
1y5
3y5
2y5
Faisons entrer x1 en base et sortir x5 de la base dans le primal.
(Attention, on va perdre la réalisabilité.)
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Dictionnaires Primaux / Duaux
Primal :
z
x4
x1
=
=
=
12
−4
3
−
+
−
4x5
3x5
1x5
−
−
+
1x2
11x2
3x2
−
+
−
1x3
1x3
2x3
L’opération équivalente dans le dual consiste à faire entrer en base
y5 et sortir de la base y1 .
Dual :
z
y5
y2
y3
=
=
=
=
12
4
1
1
−
−
+
−
4y4
3y4
11y4
1y4
M
↔
−M T
P. Pesneau [email protected]
+
+
−
+
3y1
1y1
3y1
2y1
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Remarques
Conditions d’optimalité
du primal
⇔
Conditions de réalisabilité
du primal
conditions de réalisabilité
du dual
⇔
conditions d’optimalité
du dual
L’algorithme du simplex primal va de solutions réalisables en
solutions réalisables jusqu’à l’obtention de l’optimalité.
L’algorithme du simplex dual va de solutions “optimales” en
solutions “optimales” jusqu’à l’obtention de la réalisabilité.
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Forme algébrique
Soit B une base.
Primal :
z=
s.c.
cB B −1 b + (cN − cB B −1 N)xN
xB = B −1 b − B −1 NxN
xB , xN ≥ 0
Dual :
z=
s.c.
cB B −1 b + (B −1 b)T yB
yN = −(cN − cB B −1 N)T + (B −1 N)T yB
yN , yB ≥ 0
On pose :
b̄ = B −1 b,
c̄ = cN − cB B −1 N,
ā = B −1 A.
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Algorithme du simplex dual
On va appliquer l’algorithme du simplex dual, en suivant les
opérations à 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 Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Algorithme du simplex dual
Choix de la variable yk entrante dictée par la minimisation du
dual :
−1
k ∈ B telle que Bk,.
b = b̄k < 0
⇔ xk non réalisable.
La base courante du dual N est optimale si b̄ ≥ 0 ⇔ xB est
primale réalisable.
La variable duale sortante est la première variable de base du
dual à s’annuler :
o
n
s
s ∈ N telle que āk,s < 0 et āc̄k,s
= mini āc̄k,ii : āk,i < 0 .
⇔ la variable primale entrante s ∈ N est la première dont le
coût réduit s’annule.
Le problème dual est non borné (irréalisabilité du primal) si
āk,i ≥ 0 pour tout i ∈ N
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Exemple
Primal
Dual
z
x4
x1
z
y5
y2
y3
=
=
=
=
=
=
=
12
−4
3
−
+
−
4x5
3x5
1x5
12
4
1
1
−
−
+
−
4y4
3y4
11y4
1y4
−
−
+
+
+
−
+
1x2
11x2
3x2
−
+
−
1x3
1x3
2x3
3y1
1y1
3y1
2y1
La condition d’optimalité du primal est vérifiée ⇔ la solution duale
associée est réalisable
La solution du primal n’est pas réalisable ⇔ la solution duale
associée 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 Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Exemple
Après pivotage :
Primal
Dual
z
x3
x1
=
=
=
8
4
−5
−
−
+
1x5
3x5
5x5
z
y5
y2
y4
=
=
=
=
8
1
12
1
+
+
−
−
4y3
3y3
11y3
1y3
P. Pesneau [email protected]
−
+
−
−
−
+
+
12x2
11x2
19x2
−
+
−
5y1
5y1
19y1
2y1
Programmation Linéaire - Cours 5
1x4
1x4
2x4
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Utilité
Eviter la phase I : Si un dictionnaire est primal réalisable, on
applique le simplex primal.
Si un dictionnaire n’est pas réalisable mais satisfait aux
conditions d’optimalité, on utilise le simplex dual.
Si un dictionnaire n’est ni réalisable, ni optimal, alors on
applique la phase I.
Simplex primal plus efficace ? : La complexité empirique du
simplex primal est en Θ(m + log n). Il est ainsi préférable
d’avoir la plus grande valeur entre m et n dans le log. Si un
problème a plus de contraintes que de variables, il est
préférable d’utiliser le simplex dual.
Réoptimisation post-optimale : Si on perturbe un problème
et qu’on perd la réalisabilité, tout en gardant l’optimalité, il
est indiqué d’appliquer le simplex dual.
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Sommaire
1
Algorithme du simplex dual
2
Analyse de sensibilité
3
Quelques Rappels
4
Simplex révisé
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Analyse de sensibilité
L’analyse de sensibilité consiste à analyser l’optimalité et la
réalisabilité d’une base optimale lorsque l’on modifie le problème
initial.
Modification de l’objectif.
Modification de capacité.
Ajout d’une variable.
Ajout d’une contrainte.
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Modification de l’objectif
c
→
c′ = c + ∆
Est-ce que la base reste réalisable ?
Oui : b̄ = B −1 b ≥ 0 est indépendant de c.
Est-ce que la base reste optimale ?
′ − c ′ B −1 N ≤ 0.
Vérifier c̄ ′ = cN
B
Note : si cB′ = cB , alors
′
c̄N
=
′ − c ′ B −1 N
cN
B
′ − c + c − c ′ B −1 N
cN
N
N
B
∆N + c̄N
Réoptimisation : Si les conditions d’optimalité ne sont pas
satisfaites, comme on garde une base réalisable, on applique
l’algorithme du simplex primal à partir de la base courante.
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Modification de capacité
b
b′ = b + ∆
→
Est-ce que la base reste optimale ?
Oui : c̄ = cN − cB B −1 N ≤ 0 est indépendant de b.
Est-ce que la base reste réalisable ?
Vérifier b̄ ′ = B −1 b ′ ≥ 0.
Noter que :
b̄ ′
=
B −1 b ′
B −1 b + B −1 ∆
b̄ + B −1 ∆
Réoptimisation : Les conditions d’optimalité restant vérifiées, si
on perd la réalisabilité, on applique l’algorithme du simplex dual à
partir de la base courante.
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Ajout d’une variable (colonne)
Ajout de x0 → (c0 , a0 )
La nouvelle variable est ajoutée hors-base. La solution (x, x0 = 0)
reste réalisable.
La base reste-t-elle optimale ?
Vérifier que le coût réduit de la nouvelle variable
c0 − cB B −1 a0 ≤ 0.
Noter que y ∗ = cB B −1 = −c̄E est disponible dans le dictionnaire
optimal.
Réoptimisation : Comme la base est réalisable, si le coût réduit
de la nouvelle variable est > 0, on n’a pas l’optimalité. On applique
l’algorithme du simplex primal à partir de la base courante.
Attention à bien recalculer ā0 = B −1 a0 .
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Ajout d’une contrainte (ligne)
Ajout de dx ≤ d0
Ajouter une contrainte revient à ajouter une variable y0 dans le
dual. Quand on ajoute une contrainte, on ajoute aussi une nouvelle
variable d’écart qui sera en base (coût réduit nul). La nouvelle base
reste optimale.
La base reste-t-elle réalisable ?
Vérifier que dx ∗ ≤ d0 .
Réoptimisation : Comme la base reste optimale (dual-réalisable),
si la contrainte n’est pas satisfaite, on aura une solution irréalisable
(non optimale dans le dual) → simplex dual.
Note : lors de l’ajout de la nouvelle contrainte, il faudra penser à
identifier chaque variable de base présente dans la contrainte avec
leur valeur en fonction des variables hors-base.
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Retour dans le yaourt
Dictionnaire initial :
Max
4x1 +
2x1 +
1x1 +
0x1 +
5x2 +
1x2 +
2x2 +
1x2 +
0x3 +
1x3 +
0x3 +
0x3 +
0x4 +
0x4 +
1x4 +
0x4 +
0x5
0x5
0x5
1x5
=z
= 800
= 700
= 300
Dictionnaire final :
Max
0x1 +
0x1 +
1x1 +
0x1 +
0x2 −
0x2 +
0x2 +
1x2 −
1x3 −
1
3 x3 −
2
3 x3 −
1
3 x3 +
2x4 +
2
3 x4 +
1
3 x4 +
2
3 x4 +
0x5
1x5
0x5
0x5
= z − 2200
= 100
= 300
= 200
On en déduit B = {5, 1, 2} et N = {3, 4}.
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Informations issues des dictionnaires
A partir du dictionnaire initial :
Max

4x1 +
2x1 +
1x1 +
0x1 +
5x2 +
1x2 +
2x2 +
1x2 +

0 2 1
B =  0 1 2 ,
1 0 1
0x3 +
1x3 +
0x3 +
0x3 +
0x4 +
0x4 +
1x4 +
0x4 +
0x5
0x5
0x5
1x5


1 0
N =  0 1 ,
0 0
=z
= 800
= 700
= 300


800
b =  700 
300
cB = (0, 4, 5), cN = (0, 0)
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Informations issues des dictionnaires
A partir du dictionnaire final :
Max
0x1 +
0x1 +
1x1 +
0x1 +
0x2 −
0x2 +
0x2 +
1x2 −
1x3 −
1
3 x3 −
2
3 x3 −
1
3 x3 +
2x4 +
2
3 x4 +
1
3 x4 +
2
3 x4 +
0x5
1x5
0x5
0x5
= z − 2200
= 100
= 300
= 200
c̄N = cN − cB B −1 N = (−1, −2),
 1



2
100
3 −3
B −1 N =  32 − 13 , B −1 b =  300 
2
200
− 31
3
 1

2
3 −3 1
B −1 AE = B −1 I = B −1 =  23 − 31 0 
2
− 13
3 0
c̄E = cE − cB B −1 I = −cB B −1 = −y ∗ = (−1, −2, 0)
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Exemple analyse de sensibilité
Question : Dans quelle mesure puis-je modifier ma quantité de lait
en stock sans que cela change la réalisabilité ou l’optimalité de la
base ?
Changer b n’a d’influence que sur la réalisabilité de la base (et sur
la valeur de l’objectif) mais pas 
sur l’optimalité.

0
On pose b ′ = b + ∆ avec ∆ =  δ 
0

100 − 32 δ
δ ≤ 150
1 
−1
′
−1
−1

B b =B b+B ∆=
≥ 0 ⇔ δ ≤ 900
300 − 3 δ
δ ≥ −300
200 + 32 δ

On doit avoir −300 ≤ δ ≤ 150.
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Exemple analyse de sensibilité
Question : On veut produire un nouveau yaourt nature et sucré.
Chaque kilo de ce yaourt nécessitera l’utilisation de 2 kilos de lait
et 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 production
soit rentable, il faut que son coût réduit dans la base précédement
optimale soit > 0.
Soit c6 le profit réalisé sur ce nouveau yaourt. Calculons
c̄6 = c6 − cB B −1 N
.,6

0
c6 − (1, 2, 0)  2 
1
c6 − 4
Pour que c̄6 ≥ 0, on doit avoir c6 ≥ 4.
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Exemple analyse de sensibilité
Question : On veut maintenant prendre en compte la capacité de
la chambre froide où sont stockés les yaourts. Cette chambre froide
peut contenir au plus 400 kilos de yaourt. Quelle est l’influence sur
la solution optimale.
Il s’agit ici d’ajouter une contrainte :
x1 + x2 ≤ 400
On peut tout d’abord remarquer que la contrainte est violée par la
solution optimale.
Si x7 est la variable d’écart associée à cette on ctrainte, on ajoute :
x7 = 400 − x1 − x2
x7 = 400 − (300 − 23 x3 + 13 x4 ) − (200 + 31 x3 − 23 x4 )
x7 = −100 + 13 x3 + 31 x4
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Sommaire
1
Algorithme du simplex dual
2
Analyse de sensibilité
3
Quelques Rappels
4
Simplex révisé
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Convention d’indexation des composantes de y
Primal
Dual
Variables originales
xO = (x1 , . . . , xn )
↔
Variables d’écart
yO = (y1 , . . . , yn )
Variables d’écart
xE = (xn+1 , . . . , xn+m )
↔
Variables originales
yE = (yn+1 , . . . , yn+m )
Dictionnaire final :
z=
s.c.
cB B −1 b + (cN − cB B −1 N)xN
xB = B −1 b − B −1 NxN
xB , xN ≥ 0
Solution z ∗ = cB B −1 b = cx ∗ = y ∗ b
∗ , . . . , y∗
−1
avec y ∗ = yE∗ = (yn+1
n+m ) = −c̄E = cB B
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Sommaire
1
Algorithme du simplex dual
2
Analyse de sensibilité
3
Quelques Rappels
4
Simplex révisé
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Simplex révisé
Idée : ne calculer que ce qui est nécessaire. Ne pas calculer tous les
dictionnaires.
Exemple :
c = (19, 13, 12, 17, 0, 0, 0)


3 2 1 2 1 0 0
A= 1 1 1 1 0 1 0 
4 3 3 4 0 0 1
Avec B = {1, 3, 7}, N = {2, 4, 5, 6},




3 1 0
54
xB =  63  , B =  1 1 0  ,
4 3 1
15
P. Pesneau [email protected]

2 2 1 0
N= 1 1 0 1 
3 4 0 0

Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Simplex révisé
Trouver une variable entrante k de coût réduit positif :
Calculer c̄N = cN − cB B −1 N :
Calculer yE = cB B −1 en résolvant le système yE B = cB .


3 1 0
(y5 y6 y7 )  1 1 0  = (19 12 0)
4 3 1
On obtient yE = (3.5 8.5 0).
Calculer c̄N = cN − yE N


2 2 1 0
(13 17 0 0) − (3.5 8.5 0)  1 1 0 1 .
3 4 0 0
On obtient c̄N = (−2.5 1.5 − 3.5 − 8.5).
x4 entre en base.
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Simplex révisé
Trouver une variable sortante s en augmentant la variable entrante
jusqu’à la valeur t pour laquelle une variable de B s’annule :
max {t ≥ 0 : B −1 b − B −1 N.,k t ≥ 0}.
Calculer d = B −1 N.,k en résolvant le système Bd = N.,k
  


d1
2
3 1 0
 1 1 0   d2  =  1 
d3
4
4 3 1
Ce qui donne d T = (0.5 0.5 0.5).
b̄ = B −1 b, la valeur courante de xB est disponible. Calculer
max{t ≥ 0 : tdi ≤ b̄i , i = 1, . . . , m}
= min{ b̄dii , i = 1, . . . , m : di > 0}
54 63 15
, 0.5 , 0.5 }
= min{ 0.5
On obtient tmax = 30 pour s = 7.
x7 sort de la base.
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Simplex révisé
Remettre à jour la solution de base.
B = (B \ {s}) ∪ {k}
N = (N \ {k}) ∪ {s}
On obtient la solution associée en posant :
xk = tmax
xs = 0
xi = xi − tmax di pour i ∈ B \ {s}.
Il faut encore remettre à jour B et N.
B
{4} = {1, 
3,
 = ({1, 3,7} \ {7}) ∪
3 1 2
39
xB =  48  , B =  1 1 1  , N = 
4 3 4
30

P. Pesneau [email protected]
4}

2 0 1 0
1 0 0 1 
3 1 0 0
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Quelques remarques
L’ordre des colonnes de B n’a pas d’importance à partir du
moment ou il est cohérent avec l’ordre des composants de B.
La méthode du simplex révisé demande nettement moins de
travail que celle du simplex qui calcule tous les coefficients du
nouveau dictionnaire.
En pratique, la matrice B est factorisée, B = LU, pour une
plus grande efficacité de résolution des systèmes yE B = cB et
Bd = N.,k .
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Algorithme du simplex dual
Analyse de sensibilité
Quelques Rappels
Simplex révisé
Algorithme du simplex révisé
Soit B, xB et B une base initiale et la solution associée.
1
2
3
4
5
Résoudre yE B = cB .
Choisir une variable k ∈ N telle que
c̄k = ck − yE A.,k > 0.
S’il n’en existe pas, la solution est optimale, STOP.
Résoudre Bd = A.,k .
Trouver tmax = max{t ≥ 0 : xB − td ≥ 0}.
S’il n’en existe pas, le problème est non-borné, STOP.
Sinon, on choisi une variable s qui tombe à zéro dans
xB − tmax d.
Poser xB = xB − tmax d et remplacer xs par xk = tmax dans xB
Poser B = (B \ {s}) ∪ {k} et remplacer la colonne s de B par
A.,k .
Retourner au pas 1.
P. Pesneau [email protected]
Programmation Linéaire - Cours 5
Téléchargement