Home CAMA : ma30
Post
Cancel

CAMA : ma30

Lien de la note Hackmd

CAMA : ma30 Optimisation - Méthode du gradient

Cours du 17/05

Probleme d’optimisation

Soit une fonction $J : \mathbb{R}^n\to\mathbb{R}$, trouver le minimum de $J$, c.a.d trouver $u$ tel que \(J(u) = \inf_{v\in\mathbb{R}^n}J(v)\)

Problème d’optimisation avec contrainte

Exemple : On cherche le minimum de $J(x, y)$ avec $x \lt y$, on cherche dans la partie de $\mathbb{R}^2$ qui vérifie $x \lt y$.

La méthode du gradient

On imagine un problème d’optimisation en 2D comme un terrain avec du relief, $J(x, y)$ represente l’altitude en tout point $(x, y)$.

1
2
def J(x, y):
    return x**2 + 0.5 * y**2 - 2 * x + 3
1
2
3
4
5
x = np.linspace(-3,3,100) # genere des points a distance egale sur l'intervalle [-3,3]
y = np.linspace(-3,3,100)

mx, my = np.meshgrid(x,y)
mz = J(mx, my)

Le minimum obtenu en appelant $J(*x)$ est au point $[1. 0.]$ ayant pour valeur $2.0000001053122918$.

Etude de la convergence du gradient

On stocke les valeurs des points entre le point initial et le point final pour obtenir un ensemble de points et tracer des courbes de convergence.

1
2
3
4
5
6
def minimum_J(start_value, µ=0.1, e = 0.001):
    x = [np.array(start_value)]
    while True:
        x.append(x[-1] - µ * grad_J(*x[-1]))
        if np.square(x[-1] - x[-2]).sum() < e**2:
            break
1
x = minimum_J(start_value = (0,1)) # valeur initiale non alignee avec la solution

Impact de $\mu$

Comment est-ce que $\mu$ influence sur la convergence?

  • $\mu = 0.1$ : on fait des petits pas.
  • $\mu = 2$ : on diverge, les pas sont trop grands. On passe de $1$ a $-1$ puis $1$, $-1$ sans tomber sur la solution $0$.
  • $\mu = 0.8$ : on converge en $17$ iterations contre $46$ avec $\mu = 0.1$, c’est 3x plus rapide.
  • $\mu = 1$ : boucle infinie, on oscille infiniment entre $[0, 0]$ et $[2, 0]$.
This post is licensed under CC BY 4.0 by the author.