Vous êtes sur la page 1sur 26

5.

Algorithme du simplexe
avec
variables bornées
Variante du simplexe pour
problème avec variables bornées

• Considérons le problème de programmation linéaire avec variables bornées


suivant

min c T g
Sujet à Ag = h
lj ≤ g j ≤ qj j = 1, 2,..., n

où g , c, l , q ∈ R n , h ∈ R m , et A est une matrice m × n

• Ramenons à 0 les bornes inférieures en faisant le changement de variables


suivant
xj = gj – lj (i.e., gj = xj + lj )
Variante du simplexe pour
problème avec variables bornées
le problème devient min c T g
Sujet à Ag = h
min c T ( x + l ) lj ≤ g j ≤ qj j = 1, 2,..., n
Sujet à A( x + l ) = h
lj ≤ xj + lj ≤ qj j = 1, 2,..., n

où c, x, l , q ∈ R n , h ∈ R m , et A est une matrice m × n

• Ramenons à 0 les bornes inférieures en faisant le changement de variables


suivant
xj = gj – lj (i.e., gj = xj + lj )
Variante du simplexe pour
problème avec variables bornées
le problème devient
min c T ( x + l )
Sujet à A( x + l ) = h
lj ≤ xj + lj ≤ qj j = 1, 2,..., n

où g , c, x, l ∈ R n , h ∈ R m , et A est une matrice m × n

et en remplaçant: uj = qj – lj et b = h – Al

min c T x + c T l
Sujet à Ax = b
0 ≤ xj ≤ uj j = 1, 2,..., n
Variante du simplexe pour
problème avec variables bornées

• Dans ce problème
c T l + min c T x + c T l
Sujet à Ax = b
0 ≤ xj ≤ uj j = 1, 2,..., n

puisque cTl représente une constante, nous pouvons la sortir de la


minimisation sans changer la solution optimale
et dans la suite de la présentation considérer le problème sans cette
constante sans perte de généralité.
min c T x + c T l
Sujet à Ax = b
0 ≤ xj ≤ uj j = 1, 2,..., n

• Considérons la formulation explicite du problème


n n
min ∑∑
minz =z = c j xc jj x j
j =1 j =1
n n
Sujet à à
Sujet ∑∑a ax ij x=jb
j =1
ij j i =i =bi1,2,...,im= 1,2,..., m
j =1
0 ≤ x j x≤ u+j y = ju= 1,2,...,j n= 1,2,..., n
j j j

xj , yj ≥0 j = 1,2,..., n
• Une façon de le résoudre est de le ramener sous une forme standard en
introduisant des variables d’écart yj,
et d’ensuite utiliser l’algorithme du simplexe
n
min z = ∑c x
j =1
j j Tableau avec m + n lignes
n
Sujet à ∑a
j =1
ij x j = bi i = 1,2,..., m

xj + yj =uj j = 1,2,..., n
xj , yj ≥0 j = 1,2,..., n

n
min z = ∑c x
j =1
j j Tableau avec m lignes

n
Sujet à ∑a
j =1
ij x j = bi i = 1,2,..., m

0≤ xj ≤uj j = 1,2,..., n

tenir compte de façon implicite


n
min z = ∑c x
j =1
j j

n
Sujet à ∑a
j =1
ij x j = bi i = 1,2,..., m
Non dégénérescence:
xj + yj =uj j = 1,2,..., n toutes les variables de
base sont positives à
xj , yj ≥0 j = 1,2,..., n chaque itération

• Considérons une solution de base réalisable de ce problème.


• La présence des contraintes xj + yj = uj implique qu’au moins une des deux
variables xj ou yj est variable de base, j = 1,2,…,n.
• Donc une des trois situations suivantes prévaut pour chaque j = 1,2,…,n:
a) xj = uj est variable de base et yj = 0 est variable hors base
b) xj = 0 est variable hors base et yj = uj est variable de base
c) 0 < xj < uj est variable de base et 0 < yj < uj est variable de base
n a) x j de base; y j hors base
min z = ∑c x
j =1
j j
b) x j hors base; y j de base
c) x j de base; y j de base
n
Sujet à ∑a
j =1
ij x j = bi i = 1,2,..., m

xj + yj =uj j = 1,2,..., n
xj , yj ≥0 j = 1,2,..., n
m + n variables de base requises Exactement m variables xj satisfont
il y a n variables yj 0 < xj < uj.
Par contradiction, si m0 ≠ m variables xj
satisfaisaient la relation, alors les
⇓ m0 variables yj correspondantes seraient
Il y a au moins m variables xj également dans la base.
dans la base De plus, pour les n – m0 autres indices j
xj = uj (cas a) ou bien yj = uj (cas b) serait
vérifié.
Alors le nombre de variables de base
serait égal à
2m0 + (n – m0) = m0 + n ≠ m + n
n
min z = ∑c x j j
La base a donc la forme suivante j =1
n
Sujet à ∑a x
j =1
ij j = bi i = 1, 2,..., m

xj + yj = uj j = 1, 2,..., n
xj , yj ≥ 0 j = 1, 2,..., n

min z = c T x
Sujet à Ax + 0 y = b
Ix + Iy = u
x, y ≥ 0
m
 A 0
 I I 

0 < xj < uj 0 < yj < uj xj=uj yj=uj


n
min z = ∑c x j j
La base a donc la forme suivante j =1
n
Sujet à ∑a x
j =1
ij j = bi i = 1, 2,..., m

xj + yj = uj j = 1, 2,..., n
xj , yj ≥ 0 j = 1, 2,..., n

m
min z = c T x
Sujet à Ax + 0 y = b
T
min z = c x Ix + Iy = u
Sujet à Ax + 0 y = b x, y ≥ 0
Ix + Iy = u
x, y ≥ 0

m
1 1  A 0
 I I 

n
2

0 < xj < uj 0 < yj < uj xj=uj yj=uj


m m n−m
B 0 D 0 
 I1 I1 0 0 
Ξ=  a b 
 0 0 I 0 
2 det   = ad − bc
0 0 0 I 3   c d 
 B 0 D 0 = d ( a − bd −1c )
 I1 
=  où la matrice I est n × n
 0 I 
 0 

   I1   
 
det ( Ξ ) = det ( I ) det ( B ) − det  [ 0 D 0] I −1 0   
 0   
    

{ ( )}
= det ( I ) det ( B ) − det 0ɶ
où la matrice 0ɶ est m × m puisque
[0 D 0] est une matrice m × n et
 I1 
 0  est une matrice n × m
0 
 

Donc det ( Ξ ) = det ( I ) det ( B ) .


Puisque Ξ est une base, alors det ( Ξ ) ≠ 0.
Par conséquent det ( B ) = det ( Ξ ) ≠ 0 et ainsi B est non singulière.
Donc B est une base de A.
La base a donc la forme suivante

m
Base de A
Les colonnes de
la base B de A
correspondent
aux variables
1 1 0<xj<uj

n
2

0 < xj < uj 0 < yj < uj xj=uj yj=uj


• Ainsi, nous pouvons développer une variante du simplexe pour résoudre
directement le problème
n
min z = ∑c
j =1
jxj

n
Sujet à ∑a
j =1
ij x j = bi i = 1,2,..., m

0≤ xj ≤uj j = 1,2,..., n
en traitant implicitement les bornes supérieures uj. À chaque itération, nous
allons considérer une solution (de base) associée à une base B de A ayant
m variables de base 0 < xj < uj j ∈ IB
n – m variables hors base x j = 0 ou u j j ∈ JB
n
min z = ∑c x
j =1
j j

n
Sujet à ∑a x
j =1
ij j = bi i = 1, 2,..., m

xj + yj = uj j = 1, 2,..., n
xj , yj ≥ 0 j = 1, 2,..., n
• À chaque itération, nous allons considérer une solution (de base) associée à
une base B de A ayant
m variables de base 0 < xj < uj j ∈ IB
n – m variables hors base x j = 0 ou u j j ∈ .JB
• Si on dénote les indices des variables de base IB = {j1, j2, …, jm} où ji est
l’indice de la variable de base dans la iième ligne, alors
x j = 0 ou u j j ∈ JB
x ji = b i − ∑a
j∈JB
ij x j i = 1,2,..., m

Nous retrouvons les


mêmes expressions que
pour les problèmes sans
bornes sauf que les
variables hors base
x j = 0 ou u j j ∈ JB
Nous retrouvons les Il suffit d’ajuster les critères d’entrée et de
mêmes expressions que sortie en conséquence pour retrouver la
pour les problèmes sans
bornes sauf que les
variante du simplexe.
variables hors base
x j = 0 ou u j j ∈ JB
Étape 1: Choix de la variable d’entrée

Le critère pour choisir la variable d’entrée est modifié pour tenir compte
des variables hors base xj à leur borne supérieure uj qui peuvent diminuer.
Ainsi, pour un indice j ∈ JB
si x j = 0 et c j < 0, il est avantageux d’augmenter xj
si x j = u j et c j > 0 , il est avantageux de diminuer xj

{
Déterminons c s1 = min c j : x j = 0 et
j∈JB
} {
c s2 = max c j : x j = u j
j∈JB
}
{
Soit c s = min c s1 , −c s2 } ( {
max c s1 , c s2})
Si c s ≥ 0 , alors la solution est optimale et l’algorithme s’arrête.

Si cs < 0 et cs = cs1 , alors la variable xs augmente; aller à l’étape 2.1.

Si c s < 0 et c s < c s1 , alors la variable xs diminue; aller à l’étape 2.2


Étape 2.1: Choix de la variable de sortie
la valeur de
• L’augmentation θ de la variable la variable de
Soit g i = b i − ∑ a ij x j
d’entrée xs est limitée par la j∈JB
base x ji
première des trois situations
  gi   u ji − g i 
suivantes qui se produit: θ = min u s , min  : a is > 0  , min  : a is < 0 
 1≤ i ≤ m  a is  1≤ i ≤ m  − a is 
i) xs atteint sa borne sup. us
ii) une variable de base x jr
décroît à 0 (dans ce cas a rs > 0 )
iii) une variable de base x jr
augmente pour atteindre sa Pour tout i tel que que aaisis <> 0,0, alors
alorsxxjiji augmente
diminue
borne sup. u jr (dans ce cas lorsqueSixsθs augmente = ∞, alorsde
augmente leθθproblème
de .. IlIl faut
fautdonc n’est
donc que
que pas
x ji =gi borné
− aisisθ inférieurement
≤≥ u0ji ⇔ ⇔ ais−θais≤θget ≤i l’algorithme
u ji − gi
)
a rs < 0 0 ≤ x = g − a 0 + θ ≤ u
j1 1s ( ) j1 s’arrête. ugjii − gi

1
⇔⇔ θθ ≤≤ . .
0 ≤ x jr = g − ars ( 0 + θ ) ≤ u jr
r
a−is ais

0 ≤ x jm = g − ams ( 0 + θ ) ≤ u jm
ugji − gi  
m Donc θ ≤ min min  : ais :>a0is< 0 
xs = 0 + θ ≤ u s
11≤≤ii≤≤m

m a−a
 is is  
Étape 2.1: Choix de la variable de sortie
la valeur de
• L’augmentation θ de la variable Soit g i = b i − ∑ a ij x j la variable de
d’entrée xs est limitée par la j∈JB base x ji
première des trois situations
suivantes qui se produit:   gi   u ji − g i 
θ = min u s , min  : a is > 0  , min  : a is < 0 
i) xs atteint sa borne sup. us  1≤ i ≤ m  a is  1≤ i ≤ m  − a is 
ii) une variable de base x jr
décroît à 0 (dans ce cas a rs > 0 )
iii) une variable de base x jr
augmente pour atteindre sa
borne sup. u jr (dans ce cas Si θ = us, alors l’ensemble des variables
a rs < 0 ) de base reste le même et la même base est
utilisée à la prochaine itération.
La variable xs demeure hors base
et sa valeur passe de 0 à us.
Retourner à l’étape 1.
Étape 2.1: Choix de la variable de sortie
la valeur de
• L’augmentation θ de la variable Soit g i = b i − ∑ a ij x j la variable de
d’entrée xsest limitée par la j ∈ JB base x ji
première des trois situations
suivantes qui se produit:   gi   u ji − g i 
θ = min u s , min  : a is > 0  , min  : a is < 0 
i) xs atteint sa borne sup. us  1≤ i ≤ m
 a is  1≤ i ≤ m  − a is 
ii) une variable de base x jr
décroît à 0 (dans ce cas a rs > 0 )
iii) une variable de base x jr
augmente pour atteindre sa
g  gi 
borne sup. jr (dans ce cas
u Si θ = r
= min  : a is > 0 
a rs < 0 ) a rs 1≤ i ≤ m
 a is 
alors la valeur de la variable d’entrée xs
augmente à θ.
La variable d’entrée xs devient variable de
base à la place de la variable de sortie x j
r
qui devient égale à 0.
Pivoter sur a rs et retourner à l’étape 1
Étape 2.1: Choix de la variable de sortie
la valeur de
• L’augmentation θ de la variable Soit g i = b i − ∑ a ij x j la variable de
d’entrée xs est limitée par la j ∈ JB base x ji
première des trois situations
suivantes qui se produit:   gi   u ji − g i 
θ = min u s , min  : a is > 0 , min  : a is < 0
i) xs atteint sa borne sup. us 

1≤ i ≤ m  is
a  1≤ i ≤ m 
 − a is 
ii) une variable de base x jr
décroît à 0 (dans ce cas a rs > 0 )
iii) une variable de base x jr
augmente pour atteindre sa
borne sup. u jr (dans ce cas Si u −g jr u − g ji 
= min  : a < 0
r i
θ = is
a rs < 0 ) −a rs −a 1≤ i ≤ m
is
alors la valeur de la variable d’entrée xs
augmente à θ.
La variable d’entrée xs devient variable de
base à la place de la variable de sortie x j
r
qui devient égale à u jr .
Pivoter sur a rs et retourner à l’étape 1
Étape 1: Choix de la variable d’entrée

Le critère pour choisir la variable d’entrée est modifié pour tenir compte
des variables hors base xj à leur borne supérieure uj qui peuvent diminuer.
Ainsi, pour un indice j ∈ JB
si x j = 0 et c j < 0, il est avantageux d’augmenter xj
si x j = u j et c j > 0 , il est avantageux de diminuer xj

{
Déterminons c s1 = min c j : x j = 0 et
j∈JB
} {
c s2 = max c j : x j = u j
j∈JB
}
Soit { }
c s = min c s1 ,−c s2
Si c s ≥ 0 , alors la solution est optimale et l’algorithme s’arrête.

Si cs < 0 et cs = cs1 , alors la variable xs augmente; aller à l’étape 2.1.

Si c s < 0 et c s < c s1 , alors la variable xs diminue; aller à l’étape 2.2


Étape 2.2: Choix de la variable de sortie
la valeur de
• La réduction θ de la valeur de la Soit g i = b i − ∑ a ij x j la variable de
variable d’entrée xs est limitée par j ∈ JB base x ji
la première des trois situations
  g  u − g 
suivantes qui se produit: θ = min u , min  s
i
: a < 0  , min 
is
ji i
: a > 0 
is
  −a
1≤ i ≤ m

1≤ i ≤ m
 a 
i) xs atteint sa borne inf. 0 is is

ii) une variable de base x jr


décroît à 0 (dans ce cas a rs < 0 )
iii) une variable de base x jr
augmente pour atteindre sa Pour Pourtout touti itel telque queaaisis <>0, 0, alors
alors xji diminue
augmente
lorsque
Si θ x=x udiminue
lorsque s, alors l’ensemble
diminue de
de θθ .. Il
Il faut
faut
des
i
donc variables
que
borne sup. u jr (dans ce cas s
xj j=ide gi base reste le même eta la même base est
s
x =g − −
a isis(
a (− −θθ )≥ 0
) ji itération.
≤ u ⇔ ⇔ − θ ≤ u
g − g
a rs > 0 ) i utilisée
i
à la prochaine is
is jii i
0 ≤ x j1 = g − a1s ( −θ ) ≤ u j1 ugjii − gi

1
La variable x s ⇔demeure
⇔ θθ ≤≤ hors. base .
0 ≤ x jr = g r − ars ( −θ ) ≤ u jr et sa valeur passe de us à− a0.aisis

0 ≤ x jm = g − ams ( −θ ) ≤ u jm Retourner àl’étape ugjii − gi 1.  
m Donc
Doncθθ≤≤min min : ais :<ais0 > 0
xs = u s − θ ≥ 0
1≤1i≤≤i m
 is is
≤ m −a a
 
Étape 2.2: Choix de la variable de sortie
la valeur de
• La réduction θ de la valeur de la Soit g i = b i − ∑ a ij x j la variable de
variable d’entrée xs est limitée par j ∈ JB base x ji
la première des trois situations
suivantes qui se produit:   g  u ji
−g 
θ = min u , min  : a < 0  , min 
i i
: a is > 0 
i) xs atteint sa borne inf. 0
s is
  −a 1≤ i ≤ m
is 
1≤ i ≤ m a is 
ii) une variable de base x jr
décroît à 0 (dans ce cas a rs < 0 )
iii) une variable de base x jr
augmente pour atteindre sa
Si θ = r = min  
g g
borne sup. u jr (dans ce cas 
i
: a < 0 
is

a rs > 0 ) − a rs
1≤ i ≤ m
 is− a 
alors la valeur de la variable d’entrée xs
est réduite de θ (i.e., xs← us– θ).
La variable d’entrée xs devient variable de
base à la place de la variable de sortie x jr
qui devient égale à 0.
Pivoter sur a rs et retourner à l’étape 1
Étape 2.2: Choix de la variable de sortie
la valeur de
• La réduction θ de la valeur de la Soit g i = b i − ∑ a ij x j la variable de
variable d’entrée xs est limitée par j ∈ JB base x ji
la première des trois situations
suivantes qui se produit:   g  u − g ji 
θ = min u , min  : a < 0  , min 
i i
: a is > 0 
i) xs atteint sa borne inf. 0
s is
  −a
1≤ i ≤ m
 is  a 1≤ i ≤ m
is 
ii) une variable de base x jr
décroît à 0 (dans ce cas a rs < 0 )
iii) une variable de base x jr
augmente pour atteindre sa
borne sup. u jr (dans ce cas Si θ =
u −g jr u − g  ji
= min  : a < 0
r i
is

a rs > 0 ) a rs  a 
1≤ i ≤ m
is

alors la valeur de la variable d’entrée xs


et réduite de θ (i.e., xs← us– θ).
La variable d’entrée xs devient variable de
base à la place de la variable de sortie x jr
qui devient égale à u j.r
Pivoter sur a rs et retourner à l’étape 1
Références

M.S. Bazaraa, J.J. Jarvis, H.D. Sherali, “ Linear Programming and Network
Flows”, 3rd edition, Wiley-Interscience (2005), p217

F.S. Hillier, G.J. Lieberman, “Introduction to Operations Research”, Mc Graw


Hill (2005), Section 7.3
D. G. Luenberger, “ Linear and Nonlinear Programming ”, 2nd edition,
Addison-Wesley (1984), Section 3.6