Optimisation lin´eaire : Algorithme du simplexe

PARTIE I
Optimisation lin´eaire :
Algorithme du simplexe
(Cours 3)
Optimisation lin´eaire : Algorithme du simplexe
Objectif
Objectif

Re-´ecrire l’algorithme du simplexe, version “forme dictionnaire” sous
forme matricielle.

En d´eduire l’algorithme du simplexe “forme matricielle”.
On rappelle que l’algorithme du simplexe permet de r´esoudre le probl`eme
max
x∈R
n
c
T
x
sous les contraintes
_
¸
¸
_
¸
¸
_
a
11
x
1
+· · · + a
1n
x
n
≤ b
1
· · ·
a
m1
x
1
+· · · + a
mn
x
n
≤ b
m
x
1
≥ 0, · · · ,x
n
≥ 0.
⇐⇒
_
Ax ≤ b
x ≥ 0
Optimisation lin´eaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Objectif
Ecriture matricielle de l’algorithme du simplexe
Notations
Ecriture matricielle d’un dictionnaire
Une it´eration de l’algorithme du simplexe
Conclusion
Forme matricielle de l’algorithme du simplexe
Algorithme
Exemple
Optimisation lin´eaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Notations
1.1. Notations
On a commenc´e par introduire les variables d’´ecart x
n+1
, · · · ,x
n+m
de
telle sorte que l’on ait
[A I
m
]
. ¸¸ .
m×(n + m)
_
¸
¸
¸
¸
¸
¸
_
x
1
· · ·
x
n
x
n+1
· · ·
x
n+m
_
¸
¸
¸
¸
¸
¸
_
= b
La fonction objectif peut se r´e-´ecrire
c
T
x =
_
c
T
0 · · · 0
¸
_
¸
¸
¸
¸
¸
¸
_
x
1
· · ·
x
n
x
n+1
· · ·
x
n+m
_
¸
¸
¸
¸
¸
¸
_
Le probl`eme se re-´ecrit comme un probl`eme d’optimisation dans R
n+m
Optimisation lin´eaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Notations
1.1. Notations
On a commenc´e par introduire les variables d’´ecart x
n+1
, · · · ,x
n+m
de
telle sorte que l’on ait
[A I
m
]
. ¸¸ .
m×(n + m)
_
¸
¸
¸
¸
¸
¸
_
x
1
· · ·
x
n
x
n+1
· · ·
x
n+m
_
¸
¸
¸
¸
¸
¸
_
= b
La fonction objectif peut se r´e-´ecrire
c
T
x =
_
c
T
0 · · · 0
¸
_
¸
¸
¸
¸
¸
¸
_
x
1
· · ·
x
n
x
n+1
· · ·
x
n+m
_
¸
¸
¸
¸
¸
¸
_
Le probl`eme se re-´ecrit comme un probl`eme d’optimisation dans R
n+m
Optimisation lin´eaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Notations
1.1. Notations
On a commenc´e par introduire les variables d’´ecart x
n+1
, · · · ,x
n+m
de
telle sorte que l’on ait
[A I
m
]
. ¸¸ .
m×(n + m)
_
¸
¸
¸
¸
¸
¸
_
x
1
· · ·
x
n
x
n+1
· · ·
x
n+m
_
¸
¸
¸
¸
¸
¸
_
= b
La fonction objectif peut se r´e-´ecrire
c
T
x =
_
c
T
0 · · · 0
¸
_
¸
¸
¸
¸
¸
¸
_
x
1
· · ·
x
n
x
n+1
· · ·
x
n+m
_
¸
¸
¸
¸
¸
¸
_
Le probl`eme se re-´ecrit comme un probl`eme d’optimisation dans R
n+m
Optimisation lin´eaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Notations
Notations (suite)
Dans toute la suite de ce cours

A d´esigne une matrice de taille m×(n + m), de rang plein.

x d´esigne un vecteur de R
n+m
.

c d´esigne un vecteur de R
n+m
.

b est inchang´e.
Avec ces nouvelles notations, la forme canonique matricielle du probl`eme
`a n + m variables et m contraintes se re-´ecrit
max
x∈R
n+m
c
T
x
sous les contraintes
Ax=b x ≥ 0.
Optimisation lin´eaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Notations
Notations (suite)

Quand on ´ecrit un dictionnaire, on partitionne les variables
x
1
, · · · ,x
n+m
en deux groupes

les variables de base que l’on collecte dans le vecteur
x
B
= (x
j
1
, · · · ,x
j
m
) ∈ R
m
.

les variables hors base que l’on collecte dans le vecteur x
N
∈ R
n
.

On peut partitionner les colonnes de la matrice A

de facon `a regrouper les colonnes j
1
, · · · ,j
m
, et former la matrice
not´ee B (de taille m×m).

puis regrouper les autres colonnes dans une matrice de taille m×n,
not´ee A
N
.

On peut r´e-ordonner les composantes de c

de facon `a mettre tout d’abord les colonnes j
1
, · · · ,j
m
, et former le
vecteur not´e c
B
(de taille m).

puis mettre les autres composantes dans un vecteur de taille n, not´e
c
N
.
Avec ces notations :
Ax = Bx
B
+A
N
x
N
c
T
x = c
T
B
x
B
+c
T
N
x
N
.
Optimisation lin´eaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Notations
Notations (suite)

Quand on ´ecrit un dictionnaire, on partitionne les variables
x
1
, · · · ,x
n+m
en deux groupes

les variables de base que l’on collecte dans le vecteur
x
B
= (x
j
1
, · · · ,x
j
m
) ∈ R
m
.

les variables hors base que l’on collecte dans le vecteur x
N
∈ R
n
.

On peut partitionner les colonnes de la matrice A

de facon `a regrouper les colonnes j
1
, · · · ,j
m
, et former la matrice
not´ee B (de taille m×m).

puis regrouper les autres colonnes dans une matrice de taille m×n,
not´ee A
N
.

On peut r´e-ordonner les composantes de c

de facon `a mettre tout d’abord les colonnes j
1
, · · · ,j
m
, et former le
vecteur not´e c
B
(de taille m).

puis mettre les autres composantes dans un vecteur de taille n, not´e
c
N
.
Avec ces notations :
Ax = Bx
B
+A
N
x
N
c
T
x = c
T
B
x
B
+c
T
N
x
N
.
Optimisation lin´eaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Notations
Notations (suite)

Quand on ´ecrit un dictionnaire, on partitionne les variables
x
1
, · · · ,x
n+m
en deux groupes

les variables de base que l’on collecte dans le vecteur
x
B
= (x
j
1
, · · · ,x
j
m
) ∈ R
m
.

les variables hors base que l’on collecte dans le vecteur x
N
∈ R
n
.

On peut partitionner les colonnes de la matrice A

de facon `a regrouper les colonnes j
1
, · · · ,j
m
, et former la matrice
not´ee B (de taille m×m).

puis regrouper les autres colonnes dans une matrice de taille m×n,
not´ee A
N
.

On peut r´e-ordonner les composantes de c

de facon `a mettre tout d’abord les colonnes j
1
, · · · ,j
m
, et former le
vecteur not´e c
B
(de taille m).

puis mettre les autres composantes dans un vecteur de taille n, not´e
c
N
.
Avec ces notations :
Ax = Bx
B
+A
N
x
N
c
T
x = c
T
B
x
B
+c
T
N
x
N
.
Optimisation lin´eaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Notations
Notations (suite)

Quand on ´ecrit un dictionnaire, on partitionne les variables
x
1
, · · · ,x
n+m
en deux groupes

les variables de base que l’on collecte dans le vecteur
x
B
= (x
j
1
, · · · ,x
j
m
) ∈ R
m
.

les variables hors base que l’on collecte dans le vecteur x
N
∈ R
n
.

On peut partitionner les colonnes de la matrice A

de facon `a regrouper les colonnes j
1
, · · · ,j
m
, et former la matrice
not´ee B (de taille m×m).

puis regrouper les autres colonnes dans une matrice de taille m×n,
not´ee A
N
.

On peut r´e-ordonner les composantes de c

de facon `a mettre tout d’abord les colonnes j
1
, · · · ,j
m
, et former le
vecteur not´e c
B
(de taille m).

puis mettre les autres composantes dans un vecteur de taille n, not´e
c
N
.
Avec ces notations :
Ax = Bx
B
+A
N
x
N
c
T
x = c
T
B
x
B
+c
T
N
x
N
.
Optimisation lin´eaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Ecriture matricielle d’un dictionnaire
1.2. Ecriture matricielle d’un dictionnaire

Qu’est-ce qu’une base?
D´efinition
Une base est un ensemble de m variables (x
j
1
, · · · ,x
j
m
)
(i) qui s’expriment de facon unique comme une fonction affine des n autres;
(ii) et cette expression est alg´ebriquement ´equivalente aux m contraintes
d’´egalit´e initiales.

La “partie sup´erieure d’un dictionnaire” r´esulte de
Ax = b ⇐⇒Bx
B
+A
N
x
N
= b ⇐⇒x
B
= B
−1
b−B
−1
A
N
x
N
.

La “partie inf´erieure”, relative `a la fonction objectif z r´esulte de
z = c
T
x = c
T
B
x
B
+c
T
N
x
N
= c
T
B
_
B
−1
b −B
−1
A
N
x
N
_
+c
T
N
x
N
= c
T
B
B
−1
b +
_
c
T
N
−c
T
B
B
−1
A
N
_
x
N
.

D’o` u le dictionnaire :
x
B
= B
−1
b −B
−1
A
N
x
N
z = c
T
B
B
−1
b +
_
c
T
N
−c
T
B
B
−1
A
N
_
x
N
Optimisation lin´eaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Ecriture matricielle d’un dictionnaire
1.2. Ecriture matricielle d’un dictionnaire

Qu’est-ce qu’une base?
D´efinition
Une base est un ensemble de m variables (x
j
1
, · · · ,x
j
m
)
(i) qui s’expriment de facon unique comme une fonction affine des n autres;
(ii) et cette expression est alg´ebriquement ´equivalente aux m contraintes
d’´egalit´e initiales.
Th´eor`eme
Les variables (x
j
1
, · · · ,x
j
m
) forment une base ssi la matrice B associ´ee
extraite de A, est inversible.
(A d´emontrer)

La “partie sup´erieure d’un dictionnaire” r´esulte de
Ax = b ⇐⇒Bx
B
+A
N
x
N
= b ⇐⇒x
B
= B
−1
b−B
−1
A
N
x
N
.

La “partie inf´erieure”, relative `a la fonction objectif z r´esulte de
z = c
T
x = c
T
B
x
B
+c
T
N
x
N
= c
T
B
_
B
−1
b −B
−1
A
N
x
N
_
+c
T
N
x
N
= c
T
B
B
−1
b +
_
c
T
N
−c
T
B
B
−1
A
N
_
x
N
.

D’o` u le dictionnaire :
x
B
= B
−1
b −B
−1
A
N
x
N
z = c
T
B
B
−1
b +
_
c
T
N
−c
T
B
B
−1
A
N
_
x
N
Optimisation lin´eaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Ecriture matricielle d’un dictionnaire
1.2. Ecriture matricielle d’un dictionnaire

La “partie sup´erieure d’un dictionnaire” r´esulte de
Ax = b ⇐⇒Bx
B
+A
N
x
N
= b ⇐⇒x
B
= B
−1
b−B
−1
A
N
x
N
.

La “partie inf´erieure”, relative `a la fonction objectif z r´esulte de
z = c
T
x = c
T
B
x
B
+c
T
N
x
N
= c
T
B
_
B
−1
b −B
−1
A
N
x
N
_
+c
T
N
x
N
= c
T
B
B
−1
b +
_
c
T
N
−c
T
B
B
−1
A
N
_
x
N
.

D’o` u le dictionnaire :
x
B
= B
−1
b −B
−1
A
N
x
N
z = c
T
B
B
−1
b +
_
c
T
N
−c
T
B
B
−1
A
N
_
x
N
Optimisation lin´eaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Ecriture matricielle d’un dictionnaire
1.2. Ecriture matricielle d’un dictionnaire

La “partie sup´erieure d’un dictionnaire” r´esulte de
Ax = b ⇐⇒Bx
B
+A
N
x
N
= b ⇐⇒x
B
= B
−1
b−B
−1
A
N
x
N
.

La “partie inf´erieure”, relative `a la fonction objectif z r´esulte de
z = c
T
x = c
T
B
x
B
+c
T
N
x
N
= c
T
B
_
B
−1
b −B
−1
A
N
x
N
_
+c
T
N
x
N
= c
T
B
B
−1
b +
_
c
T
N
−c
T
B
B
−1
A
N
_
x
N
.

D’o` u le dictionnaire :
x
B
= B
−1
b −B
−1
A
N
x
N
z = c
T
B
B
−1
b +
_
c
T
N
−c
T
B
B
−1
A
N
_
x
N
Optimisation lin´eaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Ecriture matricielle d’un dictionnaire
1.2. Ecriture matricielle d’un dictionnaire

La “partie sup´erieure d’un dictionnaire” r´esulte de
Ax = b ⇐⇒Bx
B
+A
N
x
N
= b ⇐⇒x
B
= B
−1
b−B
−1
A
N
x
N
.

La “partie inf´erieure”, relative `a la fonction objectif z r´esulte de
z = c
T
x = c
T
B
x
B
+c
T
N
x
N
= c
T
B
_
B
−1
b −B
−1
A
N
x
N
_
+c
T
N
x
N
= c
T
B
B
−1
b +
_
c
T
N
−c
T
B
B
−1
A
N
_
x
N
.

D’o` u le dictionnaire :
x
B
= B
−1
b −B
−1
A
N
x
N
z = c
T
B
B
−1
b +
_
c
T
N
−c
T
B
B
−1
A
N
_
x
N
Optimisation lin´eaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Ecriture matricielle d’un dictionnaire
1.2. Ecriture matricielle d’un dictionnaire (suite)
Le dictionnaire associ´e `a la base B s’´ecrit :
x
B
= B
−1
b −B
−1
A
N
x
N
z = c
T
B
B
−1
b +
_
c
T
N
−c
T
B
B
−1
A
N
_
x
N

la solution basique associ´ee est le point de R
n+m
donn´e par
x

N
= 0
R
n x

B
= B
−1
b

la valeur de la fonction objectif en le sommet associ´e `a cette base est
z

= c
T
B
B
−1
b
Optimisation lin´eaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Ecriture matricielle d’un dictionnaire
1.2. Ecriture matricielle d’un dictionnaire (suite)
Le dictionnaire associ´e `a la base B s’´ecrit :
x
B
= B
−1
b −B
−1
A
N
x
N
z = c
T
B
B
−1
b +
_
c
T
N
−c
T
B
B
−1
A
N
_
x
N

la solution basique associ´ee est le point de R
n+m
donn´e par
x

N
= 0
R
n x

B
= B
−1
b

la valeur de la fonction objectif en le sommet associ´e `a cette base est
z

= c
T
B
B
−1
b
Optimisation lin´eaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Ecriture matricielle d’un dictionnaire
1.2. Ecriture matricielle d’un dictionnaire (suite)
Le dictionnaire associ´e `a la base B s’´ecrit :
x
B
= B
−1
b −B
−1
A
N
x
N
z = c
T
B
B
−1
b +
_
c
T
N
−c
T
B
B
−1
A
N
_
x
N

la solution basique associ´ee est le point de R
n+m
donn´e par
x

N
= 0
R
n x

B
= B
−1
b

la valeur de la fonction objectif en le sommet associ´e `a cette base est
z

= c
T
B
B
−1
b
Optimisation lin´eaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Une it´eration de l’algorithme du simplexe
1.3. Une it´eration de l’algorithme du simplexe
Le dictionnaire associ´e `a la base B s’´ecrit :
x
B
= B
−1
b −B
−1
A
N
x
N
z = c
T
B
B
−1
b +
_
c
T
N
−c
T
B
B
−1
A
N
_
x
N

Rechercher une variable entrante, c’est rechercher un indice j tel que
_
c
T
N
−c
T
B
B
−1
A
N
_
j
> 0 ⇐⇒[c
N
]
T
j
−c
T
B
B
−1
[A
N
]
·,j
> 0

Rechercher la valeur maximale de cette variable entrante, c’est
chercher le plus grand t ∈ R v´erifiant B
−1
b ≥
_
B
−1
A
N
¸
·,j
t .

Rechercher une variable sortante, c’est rechercher un indice k tel que
_
B
−1
b
¸
k

_
B
−1
A
N
¸
k,j
t = 0.
Optimisation lin´eaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Une it´eration de l’algorithme du simplexe
1.3. Une it´eration de l’algorithme du simplexe
Le dictionnaire associ´e `a la base B s’´ecrit :
x
B
= B
−1
b −B
−1
A
N
x
N
z = c
T
B
B
−1
b +
_
c
T
N
−c
T
B
B
−1
A
N
_
x
N

Rechercher une variable entrante, c’est rechercher un indice j tel que
_
c
T
N
−c
T
B
B
−1
A
N
_
j
> 0 ⇐⇒[c
N
]
T
j
−c
T
B
B
−1
[A
N
]
·,j
> 0

Rechercher la valeur maximale de cette variable entrante, c’est
chercher le plus grand t ∈ R v´erifiant B
−1
b ≥
_
B
−1
A
N
¸
·,j
t .

Rechercher une variable sortante, c’est rechercher un indice k tel que
_
B
−1
b
¸
k

_
B
−1
A
N
¸
k,j
t = 0.
Optimisation lin´eaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Une it´eration de l’algorithme du simplexe
1.3. Une it´eration de l’algorithme du simplexe
Le dictionnaire associ´e `a la base B s’´ecrit :

Rechercher une variable entrante, c’est rechercher un indice j tel que
_
c
T
N
−c
T
B
B
−1
A
N
_
j
> 0 ⇐⇒[c
N
]
T
j
−c
T
B
B
−1
[A
N
]
·,j
> 0

Rechercher la valeur maximale de cette variable entrante, c’est
chercher le plus grand t ∈ R v´erifiant B
−1
b ≥
_
B
−1
A
N
¸
·,j
t .

Rechercher une variable sortante, c’est rechercher un indice k tel que
_
B
−1
b
¸
k

_
B
−1
A
N
¸
k,j
t = 0.
Optimisation lin´eaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Conclusion
Conclusion
Ainsi, l’algorithme du simplexe forme dictionnaire, a un ´equivalent sous
forme matricielle,
que nous allons maintenant r´esumer et mettre en oeuvre!
Optimisation lin´eaire : Algorithme du simplexe
Forme matricielle de l’algorithme du simplexe
Objectif
Ecriture matricielle de l’algorithme du simplexe
Notations
Ecriture matricielle d’un dictionnaire
Une it´eration de l’algorithme du simplexe
Conclusion
Forme matricielle de l’algorithme du simplexe
Algorithme
Exemple
Optimisation lin´eaire : Algorithme du simplexe
Forme matricielle de l’algorithme du simplexe
Algorithme
Algorithme
1. Etant donn´e :

une base r´ealisable B

la liste des variables de base {j
1
, · · · ,j
m
} et donc celle des variables
hors base H

le vecteur c
B
associ´e `a la base

la solution basique associ´ee x

B

la valeur de la fonction objectif en cette solution basique, z

B {j
1
, · · · ,j
m
} H c
B
x

B
z

2. Choix de la variable entrante :

Trouver y ∈ R
m
tel que y
T
B = c
T
B

Trouver j ∈ H tel que c
j
−y
T
A
·,j
> 0.
3. Choix de la variable sortante :

Trouver ω ∈ R
m
tel que Bω = A
·,j
.

Trouver le plus grand r´eel t tel que x

B
−t ω ≥ 0.

Choisir k ∈ {j
1
, · · · ,j
m
} tel que x

k
= tω.
4. Mise `a jour :

de la base : substituer la colonne A
·,k
par A
·,j
dans l’expression de
B.

de la liste des variables en base : substituer k par j.

du vecteur c
B
: substituer la composante c
k
par c
j
.

de x

B
: x

j
←t x

j
l
←x

j
l
−tω
l
pour j
l
= k

de la valeur de la fonction objectif : z

←z

+ (c
j
−y
T
A
·,j
) t.
Optimisation lin´eaire : Algorithme du simplexe
Forme matricielle de l’algorithme du simplexe
Algorithme
Algorithme
1. Etant donn´e :
B {j
1
, · · · ,j
m
} H c
B
x

B
z

2. Choix de la variable entrante :

Trouver y ∈ R
m
tel que y
T
B = c
T
B

Trouver j ∈ H tel que c
j
−y
T
A
·,j
> 0.
3. Choix de la variable sortante :

Trouver ω ∈ R
m
tel que Bω = A
·,j
.

Trouver le plus grand r´eel t tel que x

B
−t ω ≥ 0.

Choisir k ∈ {j
1
, · · · ,j
m
} tel que x

k
= tω.
4. Mise `a jour :

de la base : substituer la colonne A
·,k
par A
·,j
dans l’expression de
B.

de la liste des variables en base : substituer k par j.

du vecteur c
B
: substituer la composante c
k
par c
j
.

de x

B
: x

j
←t x

j
l
←x

j
l
−tω
l
pour j
l
= k

de la valeur de la fonction objectif : z

←z

+ (c
j
−y
T
A
·,j
) t.
Optimisation lin´eaire : Algorithme du simplexe
Forme matricielle de l’algorithme du simplexe
Algorithme
Algorithme
1. Etant donn´e :
B {j
1
, · · · ,j
m
} H c
B
x

B
z

2. Choix de la variable entrante :

Trouver y ∈ R
m
tel que y
T
B = c
T
B

Trouver j ∈ H tel que c
j
−y
T
A
·,j
> 0.
3. Choix de la variable sortante :

Trouver ω ∈ R
m
tel que Bω = A
·,j
.

Trouver le plus grand r´eel t tel que x

B
−t ω ≥ 0.

Choisir k ∈ {j
1
, · · · ,j
m
} tel que x

k
= tω.
4. Mise `a jour :

de la base : substituer la colonne A
·,k
par A
·,j
dans l’expression de
B.

de la liste des variables en base : substituer k par j.

du vecteur c
B
: substituer la composante c
k
par c
j
.

de x

B
: x

j
←t x

j
l
←x

j
l
−tω
l
pour j
l
= k

de la valeur de la fonction objectif : z

←z

+ (c
j
−y
T
A
·,j
) t.
Optimisation lin´eaire : Algorithme du simplexe
Forme matricielle de l’algorithme du simplexe
Algorithme
Algorithme
1. Etant donn´e :
B {j
1
, · · · ,j
m
} H c
B
x

B
z

2. Choix de la variable entrante :

Trouver y ∈ R
m
tel que y
T
B = c
T
B

Trouver j ∈ H tel que c
j
−y
T
A
·,j
> 0.
3. Choix de la variable sortante :

Trouver ω ∈ R
m
tel que Bω = A
·,j
.

Trouver le plus grand r´eel t tel que x

B
−t ω ≥ 0.

Choisir k ∈ {j
1
, · · · ,j
m
} tel que x

k
= tω.
4. Mise `a jour :

de la base : substituer la colonne A
·,k
par A
·,j
dans l’expression de
B.

de la liste des variables en base : substituer k par j.

du vecteur c
B
: substituer la composante c
k
par c
j
.

de x

B
: x

j
←t x

j
l
←x

j
l
−tω
l
pour j
l
= k

de la valeur de la fonction objectif : z

←z

+ (c
j
−y
T
A
·,j
) t.
Optimisation lin´eaire : Algorithme du simplexe
Forme matricielle de l’algorithme du simplexe
Algorithme
Initialisation et Arrˆet de l’algorithme

Si A est obtenu en ajoutant les variables d’´ecart, la matrice
constitu´ee des m derni`eres colonnes est toujours une base.

Plus g´en´eralement, initialiser l’algorithme consiste `a extraire de A
une matrice m×m inversible.

ATTENTION: cette base doit ˆetre r´ealisable (donc v´erifier le signe
des composantes de la solution basique associ´ee).

L’algorithme s’arrˆete quand il n’y a plus de candidats `a entrer en
base c`ad quand pour tout j ∈ H, on a
c
j
−y
T
A
·,j
≤ 0.
Optimisation lin´eaire : Algorithme du simplexe
Forme matricielle de l’algorithme du simplexe
Algorithme
Initialisation et Arrˆet de l’algorithme

Si A est obtenu en ajoutant les variables d’´ecart, la matrice
constitu´ee des m derni`eres colonnes est toujours une base.

Plus g´en´eralement, initialiser l’algorithme consiste `a extraire de A
une matrice m×m inversible.

ATTENTION: cette base doit ˆetre r´ealisable (donc v´erifier le signe
des composantes de la solution basique associ´ee).

L’algorithme s’arrˆete quand il n’y a plus de candidats `a entrer en
base c`ad quand pour tout j ∈ H, on a
c
j
−y
T
A
·,j
≤ 0.
Optimisation lin´eaire : Algorithme du simplexe
Forme matricielle de l’algorithme du simplexe
Exemple
Exemple
R´esoudre par la forme matricielle de la m´ethode du simplexe
max
x∈R
4
24x
1
+ 15x
2
+ 34x
3
+ 12x
4
sous les contraintes
_
_
_
4x
1
+ x
2
+ x
3
+ 4x
4
≤ 5
3x
1
+ 3x
2
+ 6x
3
+ x
4
≤ 6
x
i
≥ 0.
On initialisera l’algorithme en prenant la base associ´ee au sommet
x

= (1,1,0,0,0,0).
(`a faire)

Optimisation lin´aire : Algorithme du simplexe e Objectif

Objectif
Re-´crire l’algorithme du simplexe, version “forme dictionnaire” sous e forme matricielle. En d´duire l’algorithme du simplexe “forme matricielle”. e On rappelle que l’algorithme du simplexe permet de r´soudre le probl`me e e
x∈Rn

max cT x

sous les contraintes   a11 x1 + · · · + a1n xn ≤ b1   ··· ⇐⇒  am1 x1 + · · · + amn xn ≤ bm   x1 ≥ 0, · · · ,xn ≥ 0.

Ax ≤ b x≥0

Optimisation lin´aire : Algorithme du simplexe e Ecriture matricielle de l’algorithme du simplexe

Objectif

Ecriture matricielle de l’algorithme du simplexe Notations Ecriture matricielle d’un dictionnaire Une it´ration de l’algorithme du simplexe e Conclusion

Forme matricielle de l’algorithme du simplexe Algorithme Exemple

xn+m de e e telle sorte que l’on ait   x1   ··· [A Im ]     xn =b  m × (n + m)    xn+1    ··· xn+m . · · · .Optimisation lin´aire : Algorithme du simplexe e Ecriture matricielle de l’algorithme du simplexe Notations 1.1. Notations On a commenc´ par introduire les variables d’´cart xn+1 .

xn+m de e e telle sorte que l’on ait   x1   ··· [A Im ]     xn =b  m × (n + m)    xn+1    ··· xn+m La fonction objectif peut se r´-´crire ee  cT x = cT 0 · · · 0        x1 ··· xn xn+1 ··· xn+m         . Notations On a commenc´ par introduire les variables d’´cart xn+1 .1.Optimisation lin´aire : Algorithme du simplexe e Ecriture matricielle de l’algorithme du simplexe Notations 1. · · · .

xn+m de e e telle sorte que l’on ait   x1   ··· [A Im ]     xn =b  m × (n + m)    xn+1    ··· xn+m La fonction objectif peut se r´-´crire ee  cT x = cT 0 · · · 0        x1 ··· xn xn+1 ··· xn+m         Le probl`me se re-´crit comme un probl`me d’optimisation dans Rn+m e e e . Notations On a commenc´ par introduire les variables d’´cart xn+1 .Optimisation lin´aire : Algorithme du simplexe e Ecriture matricielle de l’algorithme du simplexe Notations 1.1. · · · .

de rang plein. e x d´signe un vecteur de Rn+m . . e Avec ces nouvelles notations. la forme canonique matricielle du probl`me e ` n + m variables et m contraintes se re-´crit a e x∈Rn+m max cT x sous les contraintes Ax=b x ≥ 0.Optimisation lin´aire : Algorithme du simplexe e Ecriture matricielle de l’algorithme du simplexe Notations Notations (suite) Dans toute la suite de ce cours A d´signe une matrice de taille m × (n + m). e b est inchang´. e c d´signe un vecteur de Rn+m .

xjm ) ∈ Rm . · · · . les variables hors base que l’on collecte dans le vecteur xN ∈ Rn .xn+m en deux groupes les variables de base que l’on collecte dans le vecteur xB = (xj1 .Optimisation lin´aire : Algorithme du simplexe e Ecriture matricielle de l’algorithme du simplexe Notations Notations (suite) Quand on ´crit un dictionnaire. · · · . on partitionne les variables e x1 . .

not´e AN . e .Optimisation lin´aire : Algorithme du simplexe e Ecriture matricielle de l’algorithme du simplexe Notations Notations (suite) Quand on ´crit un dictionnaire. les variables hors base que l’on collecte dans le vecteur xN ∈ Rn . on partitionne les variables e x1 . et former la matrice a not´e B (de taille m × m).xjm ) ∈ Rm .xn+m en deux groupes les variables de base que l’on collecte dans le vecteur xB = (xj1 . · · · . · · · . · · · .jm . e puis regrouper les autres colonnes dans une matrice de taille m × n. On peut partitionner les colonnes de la matrice A de facon ` regrouper les colonnes j1 .

· · · . . et former la matrice a not´e B (de taille m × m). · · · . On peut partitionner les colonnes de la matrice A de facon ` regrouper les colonnes j1 . on partitionne les variables e x1 .Optimisation lin´aire : Algorithme du simplexe e Ecriture matricielle de l’algorithme du simplexe Notations Notations (suite) Quand on ´crit un dictionnaire. e puis mettre les autres composantes dans un vecteur de taille n. · · · . e On peut r´-ordonner les composantes de c e de facon ` mettre tout d’abord les colonnes j1 .xn+m en deux groupes les variables de base que l’on collecte dans le vecteur xB = (xj1 . not´e AN .xjm ) ∈ Rm . les variables hors base que l’on collecte dans le vecteur xN ∈ Rn . et former le a vecteur not´ cB (de taille m). e puis regrouper les autres colonnes dans une matrice de taille m × n.jm .jm . · · · . not´ e cN .

les variables hors base que l’on collecte dans le vecteur xN ∈ Rn .jm . B N . on partitionne les variables e x1 . e On peut r´-ordonner les composantes de c e de facon ` mettre tout d’abord les colonnes j1 . not´ e cN . et former la matrice a not´e B (de taille m × m). Avec ces notations : Ax = BxB + AN xN cT x = cT xB + cT xN .xjm ) ∈ Rm . · · · .xn+m en deux groupes les variables de base que l’on collecte dans le vecteur xB = (xj1 .jm . not´e AN . e puis regrouper les autres colonnes dans une matrice de taille m × n. · · · . · · · . e puis mettre les autres composantes dans un vecteur de taille n. · · · . On peut partitionner les colonnes de la matrice A de facon ` regrouper les colonnes j1 .Optimisation lin´aire : Algorithme du simplexe e Ecriture matricielle de l’algorithme du simplexe Notations Notations (suite) Quand on ´crit un dictionnaire. et former le a vecteur not´ cB (de taille m).

Ecriture matricielle d’un dictionnaire Qu’est-ce qu’une base? D´finition e Une base est un ensemble de m variables (xj1 . · · · . e e .2. (ii) et cette expression est alg´briquement ´quivalente aux m contraintes e e d’´galit´ initiales.Optimisation lin´aire : Algorithme du simplexe e Ecriture matricielle de l’algorithme du simplexe Ecriture matricielle d’un dictionnaire 1.xjm ) (i) qui s’expriment de facon unique comme une fonction affine des n autres.

· · · . (A d´montrer) e .xjm ) (i) qui s’expriment de facon unique comme une fonction affine des n autres. · · · . est inversible. Ecriture matricielle d’un dictionnaire Qu’est-ce qu’une base? D´finition e Une base est un ensemble de m variables (xj1 .Optimisation lin´aire : Algorithme du simplexe e Ecriture matricielle de l’algorithme du simplexe Ecriture matricielle d’un dictionnaire 1. e e Th´or`me e e Les variables (xj1 .2. (ii) et cette expression est alg´briquement ´quivalente aux m contraintes e e d’´galit´ initiales.xjm ) forment une base ssi la matrice B associ´e e extraite de A.

2. .Optimisation lin´aire : Algorithme du simplexe e Ecriture matricielle de l’algorithme du simplexe Ecriture matricielle d’un dictionnaire 1. Ecriture matricielle d’un dictionnaire La “partie sup´rieure d’un dictionnaire” r´sulte de e e Ax = b ⇐⇒ BxB + AN xN = b ⇐⇒ xB = B−1 b−B−1 AN xN .

La “partie inf´rieure”. Ecriture matricielle d’un dictionnaire La “partie sup´rieure d’un dictionnaire” r´sulte de e e Ax = b ⇐⇒ BxB + AN xN = b ⇐⇒ xB = B−1 b−B−1 AN xN .2. relative ` la fonction objectif z r´sulte de e a e z = cT x = cT xB + cT xN = cT B−1 b − B−1 AN xN + cT xN B N B N = cT B−1 b + cT − cT B−1 AN xN . B N B .Optimisation lin´aire : Algorithme du simplexe e Ecriture matricielle de l’algorithme du simplexe Ecriture matricielle d’un dictionnaire 1.

Optimisation lin´aire : Algorithme du simplexe e Ecriture matricielle de l’algorithme du simplexe Ecriture matricielle d’un dictionnaire 1. B N B D’o` le dictionnaire : u xB = B−1 b z = cT B−1 b B −B−1 AN xN + cT − cT B−1 AN xN N B .2. Ecriture matricielle d’un dictionnaire La “partie sup´rieure d’un dictionnaire” r´sulte de e e Ax = b ⇐⇒ BxB + AN xN = b ⇐⇒ xB = B−1 b−B−1 AN xN . relative ` la fonction objectif z r´sulte de e a e z = cT x = cT xB + cT xN = cT B−1 b − B−1 AN xN + cT xN B N B N = cT B−1 b + cT − cT B−1 AN xN . La “partie inf´rieure”.

Optimisation lin´aire : Algorithme du simplexe e Ecriture matricielle de l’algorithme du simplexe Ecriture matricielle d’un dictionnaire 1. Ecriture matricielle d’un dictionnaire (suite) Le dictionnaire associ´ ` la base B s’´crit : ea e xB z = B−1 b = cT B−1 b B −B−1 AN xN + cT − cT B−1 AN xN N B .2.

2. Ecriture matricielle d’un dictionnaire (suite) Le dictionnaire associ´ ` la base B s’´crit : ea e xB z = B−1 b = cT B−1 b B −B−1 AN xN + cT − cT B−1 AN xN N B la solution basique associ´e est le point de Rn+m donn´ par e e xN = 0Rn xB = B−1 b .Optimisation lin´aire : Algorithme du simplexe e Ecriture matricielle de l’algorithme du simplexe Ecriture matricielle d’un dictionnaire 1.

Ecriture matricielle d’un dictionnaire (suite) Le dictionnaire associ´ ` la base B s’´crit : ea e xB z = B−1 b = cT B−1 b B −B−1 AN xN + cT − cT B−1 AN xN N B la solution basique associ´e est le point de Rn+m donn´ par e e xN = 0Rn xB = B−1 b la valeur de la fonction objectif en le sommet associ´ ` cette base est ea z = cT B−1 b B .Optimisation lin´aire : Algorithme du simplexe e Ecriture matricielle de l’algorithme du simplexe Ecriture matricielle d’un dictionnaire 1.2.

j > 0 j B .3. Une it´ration de l’algorithme du simplexe e Le dictionnaire associ´ ` la base B s’´crit : ea e xB z = B−1 b = cT B−1 b B −B−1 AN xN + cT − cT B−1 AN xN N B Rechercher une variable entrante.Optimisation lin´aire : Algorithme du simplexe e Ecriture matricielle de l’algorithme du simplexe Une it´ration de l’algorithme du simplexe e 1. c’est rechercher un indice j tel que cT − cT B−1 AN N B j > 0 ⇐⇒ [cN ]T − cT B−1 [AN ]·.

Optimisation lin´aire : Algorithme du simplexe e Ecriture matricielle de l’algorithme du simplexe Une it´ration de l’algorithme du simplexe e 1. c’est chercher le plus grand t ∈ R v´rifiant B−1 b ≥ B−1 AN ·.3. Une it´ration de l’algorithme du simplexe e Le dictionnaire associ´ ` la base B s’´crit : ea e xB z = B−1 b = cT B−1 b B −B−1 AN xN + cT − cT B−1 AN xN N B Rechercher une variable entrante. c’est rechercher un indice j tel que cT − cT B−1 AN N B j > 0 ⇐⇒ [cN ]T − cT B−1 [AN ]·.j > 0 j B Rechercher la valeur maximale de cette variable entrante. .j t e .

c’est rechercher un indice k tel que k k. c’est chercher le plus grand t ∈ R v´rifiant B−1 b ≥ B−1 AN ·.j > 0 j B Rechercher la valeur maximale de cette variable entrante.Optimisation lin´aire : Algorithme du simplexe e Ecriture matricielle de l’algorithme du simplexe Une it´ration de l’algorithme du simplexe e 1. Rechercher une variable sortante. c’est rechercher un indice j tel que cT − cT B−1 AN N B j > 0 ⇐⇒ [cN ]T − cT B−1 [AN ]·.3.j t e B−1 b − B−1 AN . . Une it´ration de l’algorithme du simplexe e Le dictionnaire associ´ ` la base B s’´crit : ea e Rechercher une variable entrante.j t = 0.

a un ´quivalent sous e forme matricielle. que nous allons maintenant r´sumer et mettre en oeuvre! e . l’algorithme du simplexe forme dictionnaire.Optimisation lin´aire : Algorithme du simplexe e Ecriture matricielle de l’algorithme du simplexe Conclusion Conclusion Ainsi.

Optimisation lin´aire : Algorithme du simplexe e Forme matricielle de l’algorithme du simplexe Objectif Ecriture matricielle de l’algorithme du simplexe Notations Ecriture matricielle d’un dictionnaire Une it´ration de l’algorithme du simplexe e Conclusion Forme matricielle de l’algorithme du simplexe Algorithme Exemple .

Etant donn´ : e une base r´alisable B e la liste des variables de base {j1 . · · · .Optimisation lin´aire : Algorithme du simplexe e Forme matricielle de l’algorithme du simplexe Algorithme Algorithme 1. z .jm } et donc celle des variables hors base H le vecteur cB associ´ ` la base ea la solution basique associ´e xB e la valeur de la fonction objectif en cette solution basique.

Etant donn´ : e B {j1 . . · · · . Choix de la variable entrante : Trouver y ∈ Rm tel que yT B = cT B Trouver j ∈ H tel que cj − yT A·.j > 0.Optimisation lin´aire : Algorithme du simplexe e Forme matricielle de l’algorithme du simplexe Algorithme Algorithme 1.jm } H cB xB z 2.

.j > 0.jm } tel que xk = tω. Etant donn´ : e B {j1 .jm } H cB xB z 2. e Choisir k ∈ {j1 . Trouver le plus grand r´el t tel que xB − t ω ≥ 0. Choix de la variable entrante : Trouver y ∈ Rm tel que yT B = cT B Trouver j ∈ H tel que cj − yT A·.Optimisation lin´aire : Algorithme du simplexe e Forme matricielle de l’algorithme du simplexe Algorithme Algorithme 1. Choix de la variable sortante : Trouver ω ∈ Rm tel que Bω = A·. · · · .j . · · · . 3.

Choix de la variable sortante : Trouver ω ∈ Rm tel que Bω = A·.jm } tel que xk = tω. de xB : xj ← t xjl ← xjl − tωl pour jl = k de la valeur de la fonction objectif : z ← z + (cj − yT A·.j .jm } H cB xB z 2.Optimisation lin´aire : Algorithme du simplexe e Forme matricielle de l’algorithme du simplexe Algorithme Algorithme 1. de la liste des variables en base : substituer k par j. 4. e Choisir k ∈ {j1 . · · · . Etant donn´ : e B {j1 . Mise ` jour : a de la base : substituer la colonne A·.j dans l’expression de B. Choix de la variable entrante : Trouver y ∈ Rm tel que yT B = cT B Trouver j ∈ H tel que cj − yT A·.j ) t.j > 0. Trouver le plus grand r´el t tel que xB − t ω ≥ 0.k par A·. du vecteur cB : substituer la composante ck par cj . . · · · . 3.

la matrice e constitu´e des m derni`res colonnes est toujours une base. e .Optimisation lin´aire : Algorithme du simplexe e Forme matricielle de l’algorithme du simplexe Algorithme Initialisation et Arrˆt de l’algorithme e Si A est obtenu en ajoutant les variables d’´cart. initialiser l’algorithme consiste ` extraire de A e e a une matrice m × m inversible. ATTENTION : cette base doit ˆtre r´alisable (donc v´rifier le signe e e e des composantes de la solution basique associ´e). e e Plus g´n´ralement.

. la matrice e constitu´e des m derni`res colonnes est toujours une base. ATTENTION : cette base doit ˆtre r´alisable (donc v´rifier le signe e e e des composantes de la solution basique associ´e).j ≤ 0. e e Plus g´n´ralement. on a a cj − yT A·.Optimisation lin´aire : Algorithme du simplexe e Forme matricielle de l’algorithme du simplexe Algorithme Initialisation et Arrˆt de l’algorithme e Si A est obtenu en ajoutant les variables d’´cart. initialiser l’algorithme consiste ` extraire de A e e a une matrice m × m inversible. e L’algorithme s’arrˆte quand il n’y a plus de candidats ` entrer en e a base c`d quand pour tout j ∈ H.

0). (` faire) a .0. On initialisera l’algorithme en prenant la base associ´e au sommet e x = (1.0.1.0.Optimisation lin´aire : Algorithme du simplexe e Forme matricielle de l’algorithme du simplexe Exemple Exemple R´soudre par la forme matricielle de la m´thode du simplexe e e x∈R4 max 24x1 + 15x2 + 34x3 + 12x4 sous les contraintes   4x1 + x2 + x3 + 4x4 ≤ 5 3x1 + 3x2 + 6x3 + x4 ≤ 6  xi ≥ 0.

Sign up to vote on this title
UsefulNot useful