Vous êtes sur la page 1sur 11

Cinquième partie

Méthodes de points intérieurs pour la


programmation linéaire
14 Notions de base
Introduction
– L’algorithme du simplexe n’est pas un algorithme polynomial pour la programmation linéaire.
– En 1979, Khachiyan a développé le premier algorithme polynomial pour la programmation linéaire : la méthode
de l’ellipsoïde.
– Impact théorique important, mais performances pratiques mauvaises.
– En 1984, Karmarkar propose les méthodes de points intérieurs : polynomiales et efficaces en pratique sur des
problèmes creux de grande taille.
Simplexe : se déplace de point extême en point extrême le long de la frontière du polyèdre. Il y a un nombre fini
de points extrêmes → algorithme combinatoire.
Points intérieurs : déplacement le long de la direction admissible qui donne la meilleure amélioration de l’objec-
tif (après projection sur un sous-espace linéaire). En général, direction à l’intérieur du polyèdre → méthode
“non-linéaire”.

Transformations projectives
Considérons le problème sous forme standard :

max cT x
s.c. Ax = b
x≥0

et supposons que x0 > 0.


Meilleure direction d’amélioration : gradient de l’objectif → c.
Problème si cette direction n’est pas admissible (peut amener à une violation de Ax = b).
Une direction ∆x est admissible pour Ax = b si et seulement si

∆x ∈ H = {x ∈ Rn : Ax = 0}.

Comme x0 > 0, x0 + α∆x est admissible pour α suffisamment petit.


Nous voulons de plus que ∆x soit une direction d’amélioration, la plus proche possible de c ⇒ projection de c sur
H (gradient projeté).
Proposition 59 (Gradient projeté). La projection ∆x de c sur H = {x ∈ Rn : Ax = 0} est

∆x = I − AT (AAT )−1 A c.


– ∆x est une direction admissible :

A I − AT (AAT )−1 A c

A∆x =
= Ac − AAT (AAT )−1 Ac
= Ac − Ac = 0.

– ∆x est une direction d’amélioration si ∆x 6= 0.


T
cT ∆x = ∆x + AT (AAT )−1 Ac ∆x
T T T T −T
= ∆x ∆x + c A (AA ) A∆x
| {z }
=0
2
= ||∆x|| ≥ 0

60
Exemple

max z = 5x1 +4x2


s.c. 6x1 +4x2 +s1 = 24
x1 +2x2 +s2 = 6
x2 +s3 = 2
−x1 +x2 +s4 = 1
x1 , x2 , s1 , s2 , s3 , s4 ≥ 0
Considérons le point intérieur (x1 , x2 ) = (1, 1), c’est-à-dire
 
1
 1 
 
0
 14 
x =   cT x0 = 9.
 3 

 1 
1

Matrice de projection :

P = AT (AAT )−1 A
 
0.915441 0.091912 0.139706 −0.099265 −0.091912 −0.176471
 0.091912 0.856618 0.022059 0.194853 0.143382 0.235294 
 
 0.139706 0.022059 0.073529 −0.183824 −0.022059 0.117647 
= 
 −0.099265

 0.194853 −0.183824 0.709559 −0.194853 −0.294118 

 −0.091912 0.143382 −0.022059 −0.194853 0.856618 −0.235294 
−0.176471 0.235294 0.117647 −0.294118 −0.235294 0.588235
 
0.055147
 0.113971 
 
 −0.786765 
∆x = c − P c =  −0.283088 

 
 −0.113971 
−0.058824
x0
 
Pas maximal : α = min − i = 8.7742
i:∆xi <0 ∆xi
 
1.48387
 2.00000 
 
1 0
 7.09677 
x = x + α∆x =    cT x1 = 15.419
 0.51613 

 0.00000 
0.48387

61
Désavantages du gradient projeté
– Le gradient projeté ∆x peut être très différent de la direction de meilleure amélioration (le gradient c).
– Si le point x0 est trop près de la frontière, il n’est pas possible de faire un grand pas dans la direction ∆x sans
atteindre la frontière.
Solution : éviter d’être près de la frontière. Deux approches :
– Transformer le polyèdre de sorte que le point courant soit “centré” pour permettre des pas longs dans la direction
du gradient projeté (affine scaling).
– Eviter la frontière avec des fonctions barrières.

15 Affine scaling
Stratégie simple pour éviter la frontière du polyèdre : “scaling” du modèle pour que xk soit équidistant des
contraintes d’inégalités.
A l’itération k de l’algorithme, on définit la transformation affine Tk : Rn → Rn par

z = Tk (x) = Xk−1 x

où Xk est la matrice diagonale


xk1
 
0 ··· 0
 0 xk2 ··· 0 
Xk =  .
 
.. .. .. ..
 . . . . 
0 0 ··· xkn

Proposition 60. Si
xk1
 
0 ··· 0
 0 xk2 ··· 0 
Xk =  .
 
.. .. .. ..
 . . . . 
0 0 ··· xkn
et xki > 0, i = 1, . . . , n, alors, sous la transformation z ← Xk−1 x,
1. e ← Xk−1 xk ;
2. si z = Xk−1 x, alors x = Xk z ;
3. si P ⊂ Rn est un polyèdre, alors P 0 ← Xk−1 P est aussi un polyèdre de Rn et si x est un point intérieur de
P , alors z = Xk−1 x est un point intérieur de P 0 .
En appliquant la transformation affine à un programme linéaire sous forme standard, on obtient :

max cT Xk z
s.c. AXk z = b
z≥0

Dans cet espace transformé, le point courant xk est transformé en e (eT = (1, 1, . . . , 1)), et on se trouve donc à
une distance d’au moins une unité de la frontière créée par les contraintes de non-négativité.

Gradient projeté
Soit cˆk = Xk c et Aˆk = AXk .
 
∆z = I − (Aˆk )T (Aˆk (Aˆk )T )−1 Aˆk cˆk
= Xk c − Xk AT (AXk2 AT )−1 (AXk2 )c.

Longueur de pas :   
1
αk = α min −
i: ∆zi <0 ∆zi

62
avec 0 < α < 1 pour éviter d’atteindre la frontière.
Le nouveau point est défini par
z k+1 = z k + αk ∆z
dans l’espace transformé. En utilisant xk+1 = Xk z k+1 , on obtient :

xk+1 = xk + αk Xk (Xk c − Xk AT (AXk2 AT )−1 (AXk2 )c).

Remarque : Il existe une méthode travaillant dans l’espace dual (dual affine scaling).

Critère d’arrêt
Du pas primal, on peut aisément déduire une solution duale :

y k+1 = (AXk2 AT )−1 (AXk2 )c.

Cette solution est admissible si et seulement si

tk+1 = AT y k+1 − c ≥ 0,

et (xk+1 , y k+1 , tk+1 ) est primal-dual optimal si

(xk+1 )T tk+1 = 0.

Critère d’arrêt
tk+1 = AT y k+1 − c ≥ 0 et (xk+1 )T tk+1 < .

Exemple

max z = 5x1 +4x2


s.c. 6x1 +4x2 +s1 = 24
x1 +2x2 +s2 = 6
x2 +s3 = 2
−x1 +x2 +s4 = 1
x1 , x2 , s1 , s2 , s3 , s4 ≥ 0
Considérons le point intérieur (x1 , x2 ) = (1, 1), c’est-à-dire
 
1
 1 
 
 14 
x0 =  3 
 cT x0 = 9.
 
 1 
1

Itération 1  
0.11409
 0.65493 
y=
 1.62563 

−1.01746
 
−2.64309
 −1.62563 
 
 0.11409 
t=
 
 0.65493 

 1.62563 
−1.01746

63
 
2.21071

 1.74465 

 3.75716 
x= 

 0.30000 

 0.25535 
1.46606
cT x = 18.032 xT t = −9.1307
Itération 2  
0.22229
 3.15227 
y=
 −2.75226 

−0.38249
 
−0.131492
 0.058961 
 
 0.222292 
t=
 3.152268 

 
 −2.752258 
−0.382487
 
2.789078
 1.583128 
 
 0.933020 
x= 0.044666 

 
 0.416872 
2.205950
cT x = 20.278 xT t = −1.9163
Itération 3  
0.673240
 0.897135 
y=
 −0.413832 

−0.044704
 
−0.018720
 0.028694 
 
 0.673240 
t=
 0.897135 

 
 −0.413832 
−0.044704
 
2.920139
 1.518403 
 
 0.405554 
x= 0.043055 

 
 0.481597 
2.401736
cT x = 20.674 xT t = −0.0061021
Itération 4  
0.7377201
 0.5625209 
y= 
 −0.0620210 
−0.0076621

64
 
−0.0034962
 0.0062393 
 
 0.7377201 
t=
 
 0.5625209 

 −0.0620210 
−0.0076621
 
2.946970
 1.505456 
 
 0.296352 
x=
 
 0.042117 

 0.494544 
2.441514
cT x = 20.757 xT t = 0.19203

16 Barrières logarithmiques
16.1 Introduction
Idée : pénaliser la frontière x ≥ 0 par une barrière logarithmique.

Pn
(LPµ ) max cT x + µ i=1 ln(xi )
s.c. Ax = b
x≥0

et supposons que xk > 0.


Gradient de l’objectif :
c + µXk−1 e
Gradient projeté :
I − AT (AAT )−1 A (c + µXk−1 e)


Exemple

µ=0
µ=5 µ=1000

65
Conditions de Karush-Kuhn-Tucker
Les conditions nécessaires d’optimalité pour (LPµ ) s’écrivent :

c + µX −1 e − AT y = 0
Ax = b
x ≥ 0.

En posant t = µX −1 e, on obtient le problème :

AT y − t = c
Ax = b
x ≥ 0
t = µX −1 e.

Propriétés de convergence
Hypothèses :
1. {x ∈ Rn : Ax = b, x > 0} =
6 ∅.
2. {(y, t) ∈ Rm × Rn : AT y − t = c, t > 0} =
6 ∅.
3. La matrice des contraintes A est de rang m.
Proposition 61. Etant donné µ > 0, il existe une solution unique (x(µ), y(µ), t(µ)) aux conditions de Karush-
Kuhn-Tucker, et x(µ) est la solution optimale de (LPµ ).

Chemin central
Proposition 62. (x(µ), y(µ), t(µ)) converge vers une solution primale-duale optimale lorsque µ → 0.
Comme la solution des conditions de Karush-Kuhn-Tucker est unique pour tout µ > 0, la solution (x(µ), y(µ), t(µ))
trace un chemin (une trajectoire) dans Rn × Rm × Rn .
Chemin central (central path) :
Γ = {(x(µ), y(µ), t(µ)) : µ > 0}.

Difficultés
Résoudre les conditions de Karush-Kuhn-Tucker n’est pas facile à cause de l’équation non-linéaire t = µX −1 e.
Idée des algorithmes “path following” : ne pas suivre exactement la trajectoire centrale Γ, mais rester suffisamment
proche en approximant t = µX −1 e.

16.2 Primal Path Following


Nous voulons résoudre :

AT y − t = c
Ax = b
x ≥ 0
t = µX −1 e.

Idée : prendre une solution approchée (xk , y k , tk ) pour µ = µk doné, telle que AT y k − tk = c, Axk = b,
et xk , tk > 0. Utiliser cette solution comme point de départ pour générer une nouvelle solution approchée
(xk+1 , y k+1 , tk+1 ) par la méthode de Newton.
Rappel : soit le système d’équations
gi (x) = 0 i = 1, . . . , m
où gi : Rn → R, gi ∈ C 1 , i = 1, . . . , m.

66
Le pas de Newton en xk est la solution ∆x de
Dg(xk )∆x = −g(xk ).
où Dg(x) est le Jacobien de g au point x.
Pour notre système, le pas de Newton est la solution de
AT ∆y − ∆t = 0
A∆x = 0
∆t + µk Xk−2 ∆x = −tk + µk Xk−1 e.
Pour αk suffisamment petit, le point
(xk+1 , y k+1 , tk+1 ) = (xk , y k , tk ) + αk (∆x, ∆y, ∆t)
satisfait aussi AT y k+1 − tk+1 = c, Axk+1 = b, et xk+1 , tk+1 > 0.
Soit T k la matrice diagonale correspondant à tk . ∆t + µk Xk−2 ∆x = −tk + µk Xk−1 e peut se réécrire :
Xk ∆t + µk Xk−1 ∆x = −Xk Tk e + µk e
et comme AT ∆y − ∆t = 0,
Xk AT ∆y + µk Xk−1 ∆x = −Xk Tk e + µk e.
Multipliant à gauche par AXk , et vu que A∆x = 0, on a :
AXk2 AT ∆y = −(AXk )(Xk Tk e − µk e)
et donc
∆y = −(AXk2 AT )−1 (AXk )(Xk Tk e − µk e).

De
Xk AT ∆y + µk Xk−1 ∆x = −Xk Tk e + µk e,
on obtient :
1 1
∆x = − Xk (Xk Tk e − µk e) − Xk (Xk AT )∆y
µk µk
1
− Xk I − (Xk AT )(AXk2 AT )−1 (AXk ) (Xk Tk e − µk e)

=
µk
et on a également :
∆t = AT ∆y = −AT (AXk2 AT )−1 (AXk )(Xk Tk e − µk e).

Longueur de pas sélectionnée pour que xk+1 , tk+1 > 0, avec


xk+1 = xk + αP
k
∆x
k+1
t = tk + αD
k
∆t
y k+1 = y k + αD
k
∆y
et
xki
  
k
αP = α min −
i: ∆xi <0 ∆xi
tki
  
k
αD = α min − ,
i: ∆ti <0 ∆ti
avec 0 < α < 1.
Le processus pourrait être itéré plusieurs fois pour générer de meilleures solutions pour un µk donné. Cependant,
il est plus efficace de ne faire qu’un pas de Newton à chaque itération puis diminuer µk (en choisissant 0 < θ < 1
et en posant µk+1 = θµk ). √
On peut montrer qu’avec un choix approprié des paramètres, µ0 , θ et α, la méthode se termine en O( nL)
itérations (avec L la longueur de l’encodage binaire des données du primal) et qu’il est possible de trouver en
temps polynomial la solution optimale à partir de ce point intérieur.

67
Exemple

16.3 Dual Path Following


Philosophie identique à la méthode primale, mais en utilisant une barrière pour les contraintes de non-négativité
du dual.

Pn
(DLPµ ) min bT y + µ i=1 ln(ti )
s.c. AT y − t = c
t≥0

Les conditions nécessaires d’optimalité pour (DLPµ ) s’écrivent :

AT y − t = c
Ax = b
x = µT −1 e
t ≥ 0.

Pour notre système, le pas de Newton est la solution de

AT ∆y − ∆t = 0
A∆x = 0
∆x + µk Tk−2 ∆t = −xk + µk Tk−1 e.

Pour αk suffisamment petit, le point

(xk+1 , y k+1 , tk+1 ) = (xk , y k , tk ) + αk (∆x, ∆y, ∆t)

satisfait aussi AT y k+1 − tk+1 = c, Axk+1 = b, et xk+1 , tk+1 > 0.


Avec des transformations similaires à la méthode primale, on obtient :
1
∆y = (ATk−2 AT )−1 b
(ATk−2 AT )−1 (ATk−1 )e −
µk
∆x = (Tk−1 − Tk−2 AT (ATk−2 AT )−1 (ATk−1 ))(µk e − Tk xk )
1 T
∆t = AT (ATk−2 AT )−1 (ATk−1 )e − A (ATk−2 AT )−1 b
µk

Exemple

68
16.4 Primal-Dual Path Following
Expression des conditions de Karush-Kuhn-Tucker :
Primal Path Following :
t = µX −1 e.
Dual Path Following :
x = µT −1 e
Primal-Dual Path Following :
XT e = µe
Cette forme ne correspond à aucune fonction barrière connue, mais quand µ = 0, on retrouve la contrainte
des écarts complémentaires.
Nous voulons résoudre :

Ax = b
T
A y−t = c
XT e = µe
x, t ≥ 0.

Le pas de Newton est la solution de

A∆x = 0
AT ∆y − ∆t = 0
Tk ∆x + Xk ∆t = −Xk Tk e + µk e.

Vu que AT ∆y − ∆t = 0, on a :

Tk ∆x + Xk AT ∆y = −Xk Tk e + µk e.

En multipliant par ATk−1 , et comme A∆x = 0, on obtient :

ATk−1 Xk AT ∆y = −ATk−1 (Xk Tk e − µk e),

et donc

∆y = −(ATk−1 Xk AT )−1 ATk−1 (Xk Tk e − µk e)


∆t = −AT (ATk−1 Xk AT )−1 ATk−1 (Xk Tk e − µk e)
∆x = Tk−1 (Xk AT (ATk−1 Xk AT )−1 ATk−1 − I)(Xk Tk e − µk e)

69
Exemple

70

Vous aimerez peut-être aussi