Vous êtes sur la page 1sur 16

8 Méthodes de minimisation avec limitations

8.1 Changement de variables


♦ Pas de règle générale
♦ Attention aux non-linéarités introduites (y=sinx,...)

8.2 Méthode du gradient projeté (limitations linéaires)

C'est une des méthodes primales les plus classiques pour la résolution de problèmes avec des limitations linéaires. La
méthode du gradient projeté (Rosen, 1960) a pour principe de construire des directions s° qui permettent de
diminuer f(x) le plus possible tout en restant dans le domaine admissible.
Surface F° définie par
Soit le problème : Min f(x) gj(x)=aj x – bj = 0
Ax ≤ b -∇f(x°)
⎡ a1 ⎤

avec A (m, n)
⎢a ⎥
A=⎢ ⎥
2
x° Gradient ___
⎢ ! ⎥
⎢ ⎥ x1 x°

⎣ am ⎦ et

et b(m,1) bT = [b1 b2 … bm ] A gradient


projeté s° ___
Soit x° un point admissible et J°(x°) l’ensemble des indices
des limitations actives en x° :
aj x = bj pour j ∈ J°(x°)

On peut montrer que la direction de descente s° cherchée est obtenue par projection de -∇f(x°) sur la frontière F°
du domaine définie par les limitations actives. La matrice de projection (P°) sur F° se calcule explicitement (à partir
de la matrice A° des gradients des limitations actives : P°= I – A°T [A°A°T ]-1 A°) et la direction s° s’écrit : s° = - P°
∇f(x°)

UTC, MQ14, P2016 1


Algorithme du gradient projeté:

(a) x° point initial admissible, k=0

(b) déterminer l’ensemble des indices des limitations saturées en xk : I°(xk)

(c) construire la matrice A°

(d) calculer la matrice de projection P° et la direction de descente : sk = - P° ∇f(xk)

(e) si sk≠ 0, calculer le pas maximal possible permettant de vérifier encore les limitations :
α max = max {α tel que aj(xk + α sk) ≤ bj }

(f) calculer le pas optimal α (recherche unidirectionnelle), le point suivant xk+1 , k=k+1 et aller en (b)

(g) si sk= 0 , on a :

( I – A°T [A°A°T ]-1 A° ) ∇f(xk) = 0

qui s’écrit, en posant u = - [A° A°T]-1 A° ∇f(xk)

∇f(xk) + A°T u = 0

Ø si u ≥ 0 , comme A°T est la matrice des gradients des limitations actives en xk, cette relation exprime
les conditions de KKT en xk, qui est donc solution du problème. (fin des itérations)

Ø Si une composante de u au moins est ≤ 0, cela signifie que la limitation associée j n’est pas
‘réellement’ active : il faut recalculer la matrice de projection en modifiant J°
(prendre par exemple J° - {j} ) et aller en (c) (on projettera sur un autre sous-espace)

UTC, MQ14, P2016 2


8.3 Méthode des directions admissibles
Basée sur le principe suivant : à l’itération k, chercher une direction sk telle que, en un point où gj est saturée (j∈J°):

♦ sk soit admissible : xk + t sk ∈ A pour t ∈ [0, θ] ou encore (si qualif. contraintes): ∇gj T


( xk ) sk ≤ 0
j∈J°
♦ s soit direction de descente : f décroît dans la direction sk:
k
∇fT ( xk) sk < 0

Méthode de Zoutendijk : chercher sk comme solution de :


A
Min ∇fT ( xk) sk
(L) ∇gj T ( xk) sk ≤ 0 j∈J° (admissibilité, pour
contraintes saturées) ∇gj
kT k
s s =1 (normalisation) sk
directions
-∇f de descente
Si on prend comme condition de normalisation: admissibles
∑⏐si ⏐ = 1 au lieu de skT sk = 1,
on obtient un problème de programmation linéaire,
qui peut être résolu par l'algorithme suivant :

(a) Point initial x0, k=0


(b) Résoudre le problème linéaire (L) pour trouver sk
(c) Si ∇fT(xk) sk < 0, déterminer par une recherche unidirectionnelle :
- le pas maximal possible dans la direction yk , c’est-à dire α m tel que xk + α m y soit encore dans le domaine
admissible.
- le pas optimal α* ≤ α m
Faire xk+1= xk + α* sk, k=k+1 et aller en (b)
(d) Si ∇fT(x0) sk = 0, arrêt

Remarque : Très simple, mais n’est pas utilisée telle quelle car:
UTC, MQ14, P2016 3
♦ si les limitations sont non linéaires, les points sortent du domaine admissible il faut une procédure pour les
k
ramener dans le domaine admissible, ou bien imposer à s de s’écarter de la frontière,
♦ un changement de contrainte saturée implique une discontinuité de la direction, d'où risque de non convergence.

8.4 Méthodes de pénalité


9.4.1 Principe
Π(x)
Remplacer le problème contraint :
Minimiser f(x)
Φ(x)
avec gj(x) ≤ 0 j=1, ..., m

par une suite de problèmes sans contraintes f(x)

⎧ 0 si y ≤ 0 g(x)
Si l’on définit la fonction h telle que : h ( y) = ⎨
⎩ +∞ si y > 0
la résolution du problème d’optimisation revient à résoudre
le problème sans limitation suivant :

Min Π(x)=f(x)+H(x)
m
où H(x)= ∑hj(gj(x))
j=1

La fonction H étant discontinue et ‘infinie’ en dehors du domaine admissible, on ne peut utiliser cette méthode telle
quelle ; les méthodes de pénalité s’appuient cependant sur cette idée, et consistent à minimiser une fonction (dite
‘pénalisée’) de la forme :
Min Φ(x, α) = f(x) + Γ(x, α)
x

où la fonction Γ est telle : qu’elle force l’optimum à saturer approximativement les limitations qui doivent l’être
qu’ elle n’altère pas trop la solution approchée obtenue
UTC, MQ14, P2016 4
Le paramètre de pénalisation α règle l’importance de la pénalité par rapport à la fonction objectif ; il doit être calé pour
que la solution approchée soit précise sans que le système à minimiser soit trop mal conditionné. Il faudra résoudre
plusieurs problèmes successivement, correspondant à des valeurs de α progressives.

9.4.2 Pénalité extérieure

Modifier la fonction à minimiser pour qu’elle prenne de « grandes » valeurs en dehors du domaine admissible.

Exemple avec 1 variable, 1 limitation :


Φ
On définit : Φ
< gj (x) >+ = 0 pour gj (x) ≤ 0
gj (x) pour gj (x) > 0

et on considère la fonction obtenue en ajoutant à la


fonction f(x) à minimiser les termes : f
r < gj >+2
où r est un scalaire > 0 (facteur de pénalité), ceci pour
chaque contrainte gj . gj (x) > 0 gj (x) ≤ 0

m
On obtient la fonction : Φ(x, r) = f(x) + r ∑ <gj(x)>+2
j =1
m
et on considère le problème : Minimiser Φ(x, r) = f(x) + r ∑ <gj(x)>+2 (P’)
j =1
Soit (x*) la solution de (P’). Si on a choisi r « assez grand », les termes <gj(x*)>+2 seront « petits », ce qui signifie que x*
sera « presque » admissible.

UTC, MQ14, P2016 5


Mais en pratique, si r est très grand, Φ est mal conditionnée (courbures très grandes au voisinage des frontières du
domaine). C’est pourquoi on procède itérativement, en augmentant r progressivement, et en initialisant chaque
recherche par la solution précédente.

UTC, MQ14, P2016 6


Algorithme général de pénalité extérieure :

(a) k=1, choix de x1, r1(proportion coût/pénalité)

(b) Résoudre (par une méthode sans limitations) :


m
Minimiser Φ(x, rk) = f(x) + rk ∑ <gj(x)>+2 (Pk’)
j =1
avec pour point de départ xk
→ solution xk*
(c) Tester si les limitations sont « suffisamment » satisfaites : Max (gj(x)) ≤ ε ?
j=1,…,m
Si oui, fin, x* = xk
Si non,
(d) augmenter le facteur de pénalité : rk = rk × c ( par ex. 1 < c < 10 )
mettre à jour le point de départ : xk+1 = xk*
k=k+1, aller en (b)

♦ facile à implanter, mais pas très performant (conditionnement), solution toujours légèrement non admissible

Remarque : Dans le cas de limitations d’égalité (hl (x) = 0 l = 1, p), la fonction pénalisée à considérer est :
p
Φ(x, r) = f(x) + r ∑ (hj(x))2
j=1
Si on considère l’équilibre du ressort du paragraphe 8.3.1, le problème à résoudre est :
1 ⎡ k −k ⎤ ⎛ u1 ⎞ 2
Min Φ(u1,u2 ,r) = u1,u2 ⎢ ⎥ ⎜ ⎟ − Fu2 + r u1
2 ⎣ −k k ⎦ ⎝ u2 ⎠
u1,u2

ce qui donne : u1 = 1 F , u2 = k + 2r F
2r 2rk
Ces valeurs tendent vers la solution exacte quand r → + ∞ .

UTC, MQ14, P2016 7


9.4.3 Pénalité intérieure

Même principe que la pénalité extérieure, mais pour obtenir un minimum approché par l’intérieur du domaine (donc
toujours admissible). On définit :
m 1
Φ(x, r) = f(x) - r ∑
j = 1 g j (x )
ou bien :
m Φ
Φ(x, r) = f(x) - r ∑ log(- gj(x))
j =1
ou le facteur de pénalité r doit cette fois tendre vers 0 pour que
x s’approche de la frontière du domaine admissible.
On résout donc une succession de problèmes sans contraintes :
m 1
Φ(x, rk) = f(x) + rk ∑ k=1, …
j = 1 g j ( x)
avec : rk+1 = rk × c ( par ex. 0.1 < c < 1 ) f
Il faut connaître un point de départ admissible
gj (x) ≤ 0
gj (x) > 0
♦ cette pénalisation n’est pas valable sur la frontière
ni à l’extérieur du domaine admissible.

9.4.4 Pénalité pour des limitations d'égalité:

Minimiser f(x)
avec : hl(x) = 0 l=1, ..., L

L
La fonction à prendre en compte pour la minimisation sans limitations est alors: Φ(x, rk) = f(x) + rk ∑ hl(x)2
l=1

UTC, MQ14, P2016 8


9.4.5 Approximation des multiplicateurs de K.K.T. à l’optimum

Les méthodes de pénalité permettent d’obtenir les valeurs des multiplicateurs à l’optimum. Exemple avec la pénalité
extérieure :

La solution xk* du k-ième problème sans contraintes :


m
Minimiser Φ(x, rk) = f(x) + rk ∑ <gj(x)>+2 (Pk’)
j =1
est un point stationnaire de Φ :
m
∇Φ(xk*,rk) = ∇f(xk*) + 2 rk ∑ <gj(xk*)>+ ∇gj(xk*) =0 (1)
j =1
Par ailleurs, soit x* la solution du problème initial (Q) ; si les contraintes sont qualifiées en x* , les conditions nécessaires
de KKT s’appliquent, et il existe des nombres λ j* ≥ 0 j=1,…,m uniques tels que :
m
∇f(x*) + ∑ λ j* ∇gj(x*) = 0 (2)
j =1
λ j* gj(x*) = 0

Soit J° l’ensemble des indices des contraintes saturées en x*. Pour les autres indices j ∉J°, gj(x*) < 0 . On peut
supposer qu’à partir d’une certaine itération K, tous les points xk* vérifieront aussi gj(xk*) < 0 (on a trouvé les limitations
qui seront saturées à l'optimum)

Les termes associés : <gj(xk*)>+ sont donc nuls pour j ∉J° , et il reste dans (1) :
m
∇f(xk*) + 2 rk ∑ <gj(xk*)>+ ∇gj(xk*) =0 pour k > K (3)
j∈J0
∇f et ∇gj sont continues, les λ j sont uniques donc, en passant à la limite avec (2) et (3):
λ j* = lim 2 rk <gj(xk*)>+ pour j ∈ J°

Les valeurs des λ j* permettent, par exemple, d’estimer l’influence des limitations sur la valeur de f à l’optimum (par ex.
de combien varie f(x*) quand on impose gj (x) ≤ ε j au lieu de gj(x) ≤ 0 , voir paragraphe 6) .
UTC, MQ14, P2016 9
9.5 Méthode d'Uzawa (méthode duale)

Soit le problème : Minimiser f(x)


avec : gj(x) ≤ 0 j=1, ..., m (Q)
x = (x1, ..., xn )

Principe : résoudre par une méthode de gradient le problème dual associé: Maximiser w(λ) (D)
λ≥0
m
où w est la fonction duale définie par : w(λ) = Min {L(x,λ)} = f(x) + ∑ λ j g j (x)
j=1
x∈A
Pour cela, deux étapes sont exécutées alternativement à chaque itération k:

• minimisation de L(x,λ k) par rapport à x, pour λ k fixé (par un algorithme sans limitations). Soit x k la solution obtenue.

• maximisation de w(λ), pour x = x k fixé. A cette étape on peut aussi utiliser un algorithme de gradient. La direction de
⎡ g (xk) ⎤
⎢ 1 ⎥
k
∂w (λ) = g(xk)= g2(x ) ⎥

montée de w est : ∂λ ⎢ ⎥
⎢ ⎥
⎢gm(xk)⎥
⎣ ⎦

La solution obtenue est λ k+1 , qui doit être ≥ 0 (projection si nécessaire)

Le test de convergence s'effectue sur λ qui converge vers λ* , multiplicateurs de KKT.


Cette méthode est assez peu utilisée sous cette forme, mais a donné lieu aux algorithmes de Lagrangiens augmentés,
qui sont présentés dans le paragraphe suivant.

UTC, MQ14, P2016 10


9.6 Méthodes de Lagrangien Augmenté
9.6.1 Généralités
Les méthodes de pénalité permettent d’obtenir des solutions approchées qui convergent vers la solution théorique avec
les facteurs de pénalisation (vers l’infini pour la pénalité extérieure, vers 0 pour la pénalité intérieure).
Toutefois le processus de convergence est confronté à des problèmes de conditionnement (hessien de Φ de plus en
plus mal conditionné quand r augmente en pénalités extérieures) pour les valeurs limites des paramètres. La méthode
du lagrangien augmenté mixe la stationnarité du lagrangien et la méthode des pénalités extérieures. Elle est
associée à un processus itératif permettant d’obtenir des solutions précises même pour des valeurs finies du
paramètre de pénalisation. On définit la fonction Lagrangien augmenté par (d’autres choix sont possibles):
+2
m λj L
A ( x, λ,r ) = f ( x ) + r ∑ + gj + ∑µl hl (x) + r (hl (x))2
j=1 2r l=1
a) Dans le cas de limitations d'inégalités seulement la stationnarité de A implique :
+
∂A ∂f m λ
j ∂g j
= + 2r ∑ + gj =0
∂x i ∂x i j=1 2r ∂x i
∂f m ∂gj
Les relations de Kuhn et Tucker s’écrivent : + ∑ λj = 0, λ jgj = 0, λ j ≥ 0
∂xi j=1 ∂xi
En comparant les deux dernières relations, on peut introduire un processus itératif, afin d’améliorer l’estimation des
multiplicateurs de Lagrange, en prenant : λ j = max λ j + 2 r g j ,0
Justification de ce choix :
- si λ j + 2 r gj < 0, la limitation est satisfaite, le multiplicateur associé doit donc être nul
λj
- sinon, comme on veut trouver un point où les conditions de KKT sont satisfaites , le terme: 2r ( 2r
+ gj )
λkj
doit converger vers λ j . On prendra donc la formule d'itération suivante : λj k+1
= 2 r ( 2r + gj (xk)) = λ jk + 2r gj (xk)

UTC, MQ14, P2016 11


b) Une propriété très intéressante des méthodes de Lagrangien augmenté est qu'elles permettent d'atteindre la solution
exacte avec des valeurs finies du paramètre r.

Par exemple, pour un problème avec limitations d'égalités seulement, quand on est en µ*, et qu’on résout en x :

Min A(x, µ*, rp)

on trouve un point stationnaire de A, qui vérifie donc:


∂A = ∇f(x) + µ* ∇h (x) + 2r h (x) ∇h (x) = 0
∂x ∑ l l ∑ l l
l

Le point solution x* peut-il vérifier cette relation même si r a une valeur finie? Réponse: oui, car en x*, on aura KKT et x*

admissible, donc ∇f(x*) + ∑ µl* ∇hl (x*) + 2r∑ hl (x*) ∇hl (x*)
l

=0 =0

cette expression s'annule donc indépendamment de r, ce qui n'était pas le cas avec les méthodes de pénalité:
∂Φ (x*)= ∇f(x*)) + 2r h (x*) ∇h (x*)
∂x ∑ l l =0

≠0

La solution x* ne peut donc pas être trouvée exactement avec une méthode de pénalité car hl(x*) doit être ≠ 0.

UTC, MQ14, P2016 12


9.6.2 Algorithme de Lagrangien augmenté

(a) k=1, choix de x1, r, λ 1 (souvent nul)

+2
m λkj
(b) Résoudre par une méthode sans limitations : Min A(x, λk , r ) = f(x) + r ∑ 2r
+ gj
x j=1

(Point de départ xk, solution xk*)

(c) Actualiser les multiplicateurs : λkj +1 = max ( λkj + 2r g j (xk *) , 0 )


(d) Tester si les limitations sont « suffisamment » satisfaites : Max (gj(xk*)) ≤ ε ?
j=1,…,m
Si oui, fin, x* = xk, λ*= λ k+1
Si non,

(e) augmenter éventuellement le facteur de pénalité :


rk = rk × c ( par ex. 1 < c < 10 )

mettre à jour le point de départ : xk+1 = xk*


k=k+1
aller en (b)

♦ La méthode est assez faiblement dépendante du facteur de pénalisation r.

UTC, MQ14, P2016 13


9.7 Exemple à une variable: comparaison pénalités/Lagrangien augmenté

Soit à minimiser la fonction f(x)=0.5 x sous la limitation g(x)=4-x ≤ 0 par les différentes méthodes de pénalité.

a. Pénalités extérieures.
+2
La fonction pénalisée s’écrit : Pext (x,r) = 0.5x + r 4 − x
0.5
Sa minimisation induit les solutions approchées dépendant de r : xr = 4 − (r → ∝)
2r
b. Pénalités intérieures
t
La fonction pénalisée s’écrit : Pint (x, t) = 0.5x −
4−x
t
La solution approchée associée est : x t = 4 + (t → 0)
0.5

+2
λj
c. Lagrangien augmenté A(x, λ,r) = 0.5x + r +4−x
2r
+
∂A λj λj 0.5
La stationnarité de A par rapport à x donne : (x, λ,r) = 0.5 − 2 r +4−x =0 → x* = 4 + −
∂x 2r 2r 2r
On part de l’estimation initiale : λ 1=0
0.5
La minimisation de A(x,0,r) donne x1 = 4 −
2r
La nouvelle estimation du multiplicateur est : λ2 = max λ1 + 2rgj (x2* ),0 = 0.5
et la minimisation de A(x, λ 2,r) donne : x2 = 4

On a donc obtenu la solution exacte au bout de 2 itérations, ceci pour r quelconque.

UTC, MQ14, P2016 14


9.8 Evaluation de la sensibilité de l'optimum à l'aide des multIplicateurs de Lagrange
La valeur des multiplicateurs de Lagrange à l'optimum donne une approximation de la variation de la solution lorsqu'un
paramètre quelconque p du problème (autre qu'une des variables de conception) est modifié. Si on considère les
fonctions comme dépendant de ce paramètre p, on a :

Minimiser f(x, p)
avec : gj(x, p) ≤ 0 j=1, ..., m (Qp)

Soit x*(p) la solution et f*(p) = f(x*(p), p) la valeur de f associée. On cherche à calculer df * (p)
dp
Si on suppose que l'ensemble des limitations actives à l'optimum (indices j =1, ..., ma) ne change pas pour les variations
de p considérées, on a:

• conditions de KKT: ∇f (x*,p) + N λ* = 0 (1)


∂g j
où N est la matrice des gradients des limitations actives : Nij = j=1, ..., ma
∂x i
df * (p) ∂f ∂x* ∂f dx * df
• = ∂x * ∂p + ∂p = ∇fT (x*,p) dp + dp
dp
• avec (1) on obtient : df * (p) = - λ*T NT dx * + df (2)
dp dp dp

Pour toute limitation active à l'optimum, on a: gj(x*(p), p) = 0 j=1, ..., ma (3)


∂g j ∂x * ∂g j
et en dérivant (car (3) est vraie sur un voisinage de p): + =0 j=1, ..., ma
∂x * ∂p ∂p
dx * ∂g
soit: NT dp + ∂p =0 (4)

df * (p) T
dg df
et (2) et (3) donnent: dp = λ* dp + dp (5)
UTC, MQ14, P2016 15
Exemple:
On suppose qu’on a résolu le problème :
Minimiser f(x) (minimiser la masse)
avec uj(x) ≤ u° j=1, …, m (limites en déplacements)

pour une valeur de u° fixée (=2mm), et on veut évaluer la masse optimale qu’on obtiendrait si on imposait :

uj(x) ≤ 2.5 mm
uj(x) ≤ 1.5 mm

sans faire de nouvelles résolutions numériques.

On étudie donc l'influence de p = u°, valeur limite imposée aux déplacements, sur la valeur de la fonction objectif
optimale f(x*)

pour avoir uj(x) ≤ u° on impose: g(x) = u(x) – u° ≤ 0

df * (p) T
dg df
on a alors (5) : dp = λ* dp + dp

df df dg df * (p) T
ici dp = =0 =-1 donc dp = - λ*
du 0 du 0

Ceci permet d'interpréter les multiplicateurs de KKT à l'optimum comme l'effet d'une perturbation d'une
limitation active sur la valeur de la fonction à l'optimum (le coût marginal)

UTC, MQ14, P2016 16

Vous aimerez peut-être aussi