TP-optimisation-numerique-2/docs/src/Lagrangien_augmente.md

46 lines
2.4 KiB
Markdown
Raw Normal View History

2020-10-14 08:49:49 +00:00
# Principe
La méthode du lagrangien augmenté appartient à une classe d'algorithme qui
2020-11-07 14:50:16 +00:00
permettent la résolution des problèmes avec contraintes. Elle s'apparente aux méthodes de
2020-10-14 08:49:49 +00:00
pénalisation, dans lesquelles on résout le problème avec contraintes à travers une suite de
problèmes sans contraintes.
# Algorithme du Lagrangien augmenté pour contraintes d'égalité
2020-11-07 14:50:16 +00:00
On s'intéresse ici au cas où l'ensemble ``C`` est défini par un ensemble des contraintes d'égalités.
2020-10-14 08:49:49 +00:00
Le problème se met ainsi sous la forme :
2020-11-07 14:50:16 +00:00
``\min _{c(x) = 0; x \in \mathbb{R}^{n}} f(x)``
2020-10-14 08:49:49 +00:00
où ``c : \mathbb{R}^{n} \rightarrow \mathbb{R}^{m}``.
L'algorithme suivant est obtenu de Bierlaire, *Introduction à l'optimisation différentiable*.
### Données :
``\mu_{0} > 0, \tau > 0, \hat{\eta}_{0}=0.1258925[^1] , \alpha=0.1, \beta=0.9, \epsilon_{0}=1/\mu_{0}, \eta_{0}=\hat{\eta}_{0} / \mu_{0}^{\alpha}`` , et un point de départ du Lagrangien ``(x_{0},\lambda_{0})``. On pose ``k = 0``
2020-10-14 08:49:49 +00:00
### Sorties :
une approximation de la solution du problème avec contraintes.
### 1. Tant qu'il n'y a pas convergence, répéter
a. Calculer approximation un minimiseur ``x_{k+1}`` du problème sans contraintes suivant :
2020-11-07 14:50:16 +00:00
``\min _{x \in \mathbb{R}^{n}} L_{A}\left(x, \lambda_{k}, \mu_{k}\right)=f(x)+\lambda_{k}^{T} c(x)+\frac{\mu_{k}}{2}\|c(x)\|^{2},``
2020-10-14 08:49:49 +00:00
2020-11-07 14:50:16 +00:00
avec ``x_{k}`` comme point de départ, en terminant lorsque ``\| \nabla_{x} L_{A}\left(x, \lambda_{k}, \mu_{k}\right) \| \leq \epsilon_{k}``.
2020-10-14 08:49:49 +00:00
Si convergence de l'algorithme global, s'arrêter , sinon aller en b
b. Si ``\|c(x_{k+1})\| \leq \eta_{k}``, mettre à jour (entre autres) les multiplicateurs :
``\left\{\begin{array}{l}\lambda_{k+1}=\lambda_{k}+\mu_{k} c\left(x_{k+1}\right) \\ \mu_{k+1}=\mu_{k} \\\epsilon_{k+1}=\epsilon_{k} / \mu_{k} \\\eta_{k+1}=\eta_{k} / \mu_{k}^{\beta} \\k=k+1\end{array}\right.``
c. Autrement, mettre à jour (entre autres) le paramétre de pénalité :
``\left\{\begin{array}{l}\lambda_{k+1} =\lambda_{k} \\\mu_{k+1} =\tau \mu_{k} \\\epsilon_{k+1} =\epsilon_{0} / \mu_{k+1} \\\eta_{k+1} =\hat{\eta}_{0} / \mu_{k+1}^{\alpha} \\k=k+1\end{array}\right.``
### 2. Retourner ``x_{k},\lambda_{k},\mu_{k}`` .
2020-11-07 14:50:16 +00:00
### 3 Critère de convergence global
2020-12-10 21:18:30 +00:00
``(\| \nabla_{x} L_{A}\left(x_x, \lambda_{k}, 0 \right) \|\leq max(Tol\_rel\| \nabla_{x} L_{A}\left(x_0, \lambda_{0}, 0\right) \|,Tol\_abs))`` et ``(\|c(x_k)\|\leq max(Tol\_rel\|c(x_0)\|,Tol\_abs))``
2020-11-07 14:50:16 +00:00
[^1] : Pour que ``\eta_0=0.1``.