Optimisation linéaire : Algorithme du simplexe

publicité
Optimisation linéaire : Algorithme du simplexe
PARTIE I
Optimisation linéaire :
Algorithme du simplexe
(Cours 3)
Optimisation linéaire : Algorithme du simplexe
Objectif
Objectif
I
I
Re-écrire l’algorithme du simplexe, version “forme dictionnaire” sous
forme matricielle.
En déduire l’algorithme du simplexe “forme matricielle”.
On rappelle que l’algorithme du simplexe permet de résoudre le problème
max cT x
x∈Rn
sous les contraintes

a11 x1 + · · · + a1n xn ≤ b1



···
Ax ≤ b
⇐⇒
a
x
+
·
·
·
+
a
x
≤
b
x≥0

m1
1
mn
n
m


x1 ≥ 0, · · · ,xn ≥ 0.
Optimisation linéaire : 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ération de l’algorithme du simplexe
Conclusion
Forme matricielle de l’algorithme du simplexe
Algorithme
Exemple
Optimisation linéaire : Algorithme du simplexe
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
telle sorte que l’on ait


x1

 ···
[A Im ]


| {z }

 xn
=b

m × (n + m) 

 xn+1 

 ···
xn+m
Optimisation linéaire : Algorithme du simplexe
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
telle sorte que l’on ait


x1

 ···
[A Im ]


| {z }

 xn
=b

m × (n + m) 

 xn+1 

 ···
xn+m
La fonction objectif peut se ré-écrire




T
T
c x = c 0···0 



x1
···
xn
xn+1
···
xn+m








Optimisation linéaire : Algorithme du simplexe
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
telle sorte que l’on ait


x1

 ···
[A Im ]


| {z }

 xn
=b

m × (n + m) 

 xn+1 

 ···
xn+m
La fonction objectif peut se ré-écrire




T
T
c x = c 0···0 



x1
···
xn
xn+1
···
xn+m








Le problème se re-écrit comme un problème d’optimisation dans Rn+m
Optimisation linéaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Notations
Notations (suite)
Dans toute la suite de ce cours
I A désigne une matrice de taille m × (n + m), de rang plein.
I x désigne un vecteur de Rn+m .
I c désigne un vecteur de Rn+m .
I b est inchangé.
Avec ces nouvelles notations, la forme canonique matricielle du problème
à n + m variables et m contraintes se re-écrit
max
x∈Rn+m
cT x
sous les contraintes
Ax=b
x ≥ 0.
Optimisation linéaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Notations
Notations (suite)
I
Quand on écrit un dictionnaire, on partitionne les variables
x1 , · · · ,xn+m en deux groupes
I
I
les variables de base que l’on collecte dans le vecteur
xB = (xj1 , · · · ,xjm ) ∈ Rm .
les variables hors base que l’on collecte dans le vecteur xN ∈ Rn .
Optimisation linéaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Notations
Notations (suite)
I
Quand on écrit un dictionnaire, on partitionne les variables
x1 , · · · ,xn+m en deux groupes
I
I
I
les variables de base que l’on collecte dans le vecteur
xB = (xj1 , · · · ,xjm ) ∈ Rm .
les variables hors base que l’on collecte dans le vecteur xN ∈ Rn .
On peut partitionner les colonnes de la matrice A
I
I
de facon à regrouper les colonnes j1 , · · · ,jm , et former la matrice
notée B (de taille m × m).
puis regrouper les autres colonnes dans une matrice de taille m × n,
notée AN .
Optimisation linéaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Notations
Notations (suite)
I
Quand on écrit un dictionnaire, on partitionne les variables
x1 , · · · ,xn+m en deux groupes
I
I
I
On peut partitionner les colonnes de la matrice A
I
I
I
les variables de base que l’on collecte dans le vecteur
xB = (xj1 , · · · ,xjm ) ∈ Rm .
les variables hors base que l’on collecte dans le vecteur xN ∈ Rn .
de facon à regrouper les colonnes j1 , · · · ,jm , et former la matrice
notée B (de taille m × m).
puis regrouper les autres colonnes dans une matrice de taille m × n,
notée AN .
On peut ré-ordonner les composantes de c
I
I
de facon à mettre tout d’abord les colonnes j1 , · · · ,jm , et former le
vecteur noté cB (de taille m).
puis mettre les autres composantes dans un vecteur de taille n, noté
cN .
Optimisation linéaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Notations
Notations (suite)
I
Quand on écrit un dictionnaire, on partitionne les variables
x1 , · · · ,xn+m en deux groupes
I
I
I
On peut partitionner les colonnes de la matrice A
I
I
I
les variables de base que l’on collecte dans le vecteur
xB = (xj1 , · · · ,xjm ) ∈ Rm .
les variables hors base que l’on collecte dans le vecteur xN ∈ Rn .
de facon à regrouper les colonnes j1 , · · · ,jm , et former la matrice
notée B (de taille m × m).
puis regrouper les autres colonnes dans une matrice de taille m × n,
notée AN .
On peut ré-ordonner les composantes de c
I
I
de facon à mettre tout d’abord les colonnes j1 , · · · ,jm , et former le
vecteur noté cB (de taille m).
puis mettre les autres composantes dans un vecteur de taille n, noté
cN .
Avec ces notations :
Ax = BxB + AN xN
cT x = cTB xB + cTN xN .
Optimisation linéaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Ecriture matricielle d’un dictionnaire
1.2. Ecriture matricielle d’un dictionnaire
I
Qu’est-ce qu’une base?
Définition
Une base est un ensemble de m variables (xj1 , · · · ,xjm )
(i) qui s’expriment de facon unique comme une fonction affine des n autres;
(ii) et cette expression est algébriquement équivalente aux m contraintes
d’égalité initiales.
Optimisation linéaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Ecriture matricielle d’un dictionnaire
1.2. Ecriture matricielle d’un dictionnaire
I
Qu’est-ce qu’une base?
Définition
Une base est un ensemble de m variables (xj1 , · · · ,xjm )
(i) qui s’expriment de facon unique comme une fonction affine des n autres;
(ii) et cette expression est algébriquement équivalente aux m contraintes
d’égalité initiales.
Théorème
Les variables (xj1 , · · · ,xjm ) forment une base ssi la matrice B associée
extraite de A, est inversible.
(A démontrer)
Optimisation linéaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Ecriture matricielle d’un dictionnaire
1.2. Ecriture matricielle d’un dictionnaire
I
La “partie supérieure d’un dictionnaire” résulte de
Ax = b ⇐⇒ BxB + AN xN = b ⇐⇒ xB = B−1 b−B−1 AN xN .
Optimisation linéaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Ecriture matricielle d’un dictionnaire
1.2. Ecriture matricielle d’un dictionnaire
I
La “partie supérieure d’un dictionnaire” résulte de
Ax = b ⇐⇒ BxB + AN xN = b ⇐⇒ xB = B−1 b−B−1 AN xN .
I
La “partie inférieure”, relative à la fonction objectif z résulte de
z = cT x = cTB xB + cTN xN = cTB B−1 b − B−1 AN xN + cTN xN
= cTB B−1 b + cTN − cTB B−1 AN xN .
Optimisation linéaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Ecriture matricielle d’un dictionnaire
1.2. Ecriture matricielle d’un dictionnaire
I
La “partie supérieure d’un dictionnaire” résulte de
Ax = b ⇐⇒ BxB + AN xN = b ⇐⇒ xB = B−1 b−B−1 AN xN .
I
La “partie inférieure”, relative à la fonction objectif z résulte de
z = cT x = cTB xB + cTN xN = cTB B−1 b − B−1 AN xN + cTN xN
= cTB B−1 b + cTN − cTB B−1 AN xN .
I
D’où le dictionnaire :
xB = B−1 b
z
= cTB B−1 b
−B−1 AN xN
+ cTN − cTB B−1 AN xN
Optimisation linéaire : 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é à la base B s’écrit :
xB
z
= B−1 b
= cTB B−1 b
−B−1 AN xN
+ cTN − cTB B−1 AN xN
Optimisation linéaire : 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é à la base B s’écrit :
xB
z
I
= B−1 b
= cTB B−1 b
−B−1 AN xN
+ cTN − cTB B−1 AN xN
la solution basique associée est le point de Rn+m donné par
x?N = 0Rn
x?B = B−1 b
Optimisation linéaire : 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é à la base B s’écrit :
xB
z
I
= B−1 b
= cTB B−1 b
−B−1 AN xN
+ cTN − cTB B−1 AN xN
la solution basique associée est le point de Rn+m donné par
x?N = 0Rn
I
x?B = B−1 b
la valeur de la fonction objectif en le sommet associé à cette base est
z? = cTB B−1 b
Optimisation linéaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Une itération de l’algorithme du simplexe
1.3. Une itération de l’algorithme du simplexe
Le dictionnaire associé à la base B s’écrit :
xB
z
I
= B−1 b
= cTB B−1 b
−B−1 AN xN
+ cTN − cTB B−1 AN xN
Rechercher une variable entrante, c’est rechercher un indice j tel que
cTN − cTB B−1 AN j > 0 ⇐⇒ [cN ]Tj − cTB B−1 [AN ]·,j > 0
Optimisation linéaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Une itération de l’algorithme du simplexe
1.3. Une itération de l’algorithme du simplexe
Le dictionnaire associé à la base B s’écrit :
xB
z
= B−1 b
= cTB B−1 b
−B−1 AN xN
+ cTN − cTB B−1 AN xN
I
Rechercher une variable entrante, c’est rechercher un indice j tel que
cTN − cTB B−1 AN j > 0 ⇐⇒ [cN ]Tj − cTB B−1 [AN ]·,j > 0
I
Rechercher la valeur maximale de cette variable entrante,
c’est
chercher le plus grand t ∈ R vérifiant B−1 b ≥ B−1 AN ·,j t
.
Optimisation linéaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Une itération de l’algorithme du simplexe
1.3. Une itération de l’algorithme du simplexe
Le dictionnaire associé à la base B s’écrit :
I
Rechercher une variable entrante, c’est rechercher un indice j tel que
cTN − cTB B−1 AN j > 0 ⇐⇒ [cN ]Tj − cTB B−1 [AN ]·,j > 0
I
Rechercher la valeur maximale de cette variable entrante,
c’est
chercher le plus grand t ∈ R vérifiant B−1 b ≥ B−1 AN ·,j t
I
.
Rechercher une variable sortante, c’est rechercher un indice k tel que
−1 B b k − B−1 AN k,j t = 0.
Optimisation linéaire : Algorithme du simplexe
Ecriture matricielle de l’algorithme du simplexe
Conclusion
Conclusion
Ainsi, l’algorithme du simplexe forme dictionnaire, a un équivalent sous
forme matricielle,
que nous allons maintenant résumer et mettre en oeuvre!
Optimisation linéaire : 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ération de l’algorithme du simplexe
Conclusion
Forme matricielle de l’algorithme du simplexe
Algorithme
Exemple
Optimisation linéaire : Algorithme du simplexe
Forme matricielle de l’algorithme du simplexe
Algorithme
Algorithme
1. Etant donné :
I
I
I
I
I
une base réalisable B
la liste des variables de base {j1 , · · · ,jm } et donc celle des variables
hors base H
le vecteur cB associé à la base
la solution basique associée x?B
la valeur de la fonction objectif en cette solution basique, z ?
Optimisation linéaire : Algorithme du simplexe
Forme matricielle de l’algorithme du simplexe
Algorithme
Algorithme
1. Etant donné :
B
{j1 , · · · ,jm }
H
cB
2. Choix de la variable entrante :
I
I
Trouver y ∈ Rm tel que yT B = cTB
Trouver j ∈ H tel que cj − yT A·,j > 0.
x?B
z?
Optimisation linéaire : Algorithme du simplexe
Forme matricielle de l’algorithme du simplexe
Algorithme
Algorithme
1. Etant donné :
B
{j1 , · · · ,jm }
H
cB
x?B
2. Choix de la variable entrante :
I
I
Trouver y ∈ Rm tel que yT B = cTB
Trouver j ∈ H tel que cj − yT A·,j > 0.
3. Choix de la variable sortante :
I
I
I
Trouver ω ∈ Rm tel que
Bω = A·,j .
Trouver le plus grand réel t tel que x?B − t ω ≥ 0.
Choisir k ∈ {j1 , · · · ,jm } tel que x?k = tω.
z?
Optimisation linéaire : Algorithme du simplexe
Forme matricielle de l’algorithme du simplexe
Algorithme
Algorithme
1. Etant donné :
B
{j1 , · · · ,jm }
H
cB
x?B
z?
2. Choix de la variable entrante :
I
I
Trouver y ∈ Rm tel que yT B = cTB
Trouver j ∈ H tel que cj − yT A·,j > 0.
3. Choix de la variable sortante :
I
I
I
Trouver ω ∈ Rm tel que
Bω = A·,j .
Trouver le plus grand réel t tel que x?B − t ω ≥ 0.
Choisir k ∈ {j1 , · · · ,jm } tel que x?k = tω.
4. Mise à jour :
I
I
I
I
I
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 cB : substituer la composante ck par cj .
de x?B : x?j ← t
x?jl ← x?jl − tωl pour jl 6= k
de la valeur de la fonction objectif : z? ← z? + (cj − yT A·,j ) t.
Optimisation linéaire : Algorithme du simplexe
Forme matricielle de l’algorithme du simplexe
Algorithme
Initialisation et Arrêt de l’algorithme
I
I
I
Si A est obtenu en ajoutant les variables d’écart, la matrice
constituée des m dernières colonnes est toujours une base.
Plus généralement, initialiser l’algorithme consiste à extraire de A
une matrice m × m inversible.
ATTENTION : cette base doit être réalisable (donc vérifier le signe
des composantes de la solution basique associée).
Optimisation linéaire : Algorithme du simplexe
Forme matricielle de l’algorithme du simplexe
Algorithme
Initialisation et Arrêt de l’algorithme
I
I
I
I
Si A est obtenu en ajoutant les variables d’écart, la matrice
constituée des m dernières colonnes est toujours une base.
Plus généralement, initialiser l’algorithme consiste à extraire de A
une matrice m × m inversible.
ATTENTION : cette base doit être réalisable (donc vérifier le signe
des composantes de la solution basique associée).
L’algorithme s’arrête quand il n’y a plus de candidats à entrer en
base càd quand pour tout j ∈ H, on a
cj − yT A·,j ≤ 0.
Optimisation linéaire : Algorithme du simplexe
Forme matricielle de l’algorithme du simplexe
Exemple
Exemple
Résoudre par la forme matricielle de la méthode du simplexe
max
x∈R4
24x1 + 15x2 + 34x3 + 12x4
sous les contraintes

 4x1 + x2 + x3 + 4x4 ≤ 5
3x1 + 3x2 + 6x3 + x4 ≤ 6

xi ≥ 0.
On initialisera l’algorithme en prenant la base associée au sommet
x? = (1,1,0,0,0,0).
(à faire)
Téléchargement