PW4 – Méthodes d’Optimisation
1. Introduction
Ce travail pratique présente deux méthodes d’optimisation : la descente de gradient (méthode
déterministe) et la recherche aléatoire (méthode stochastique).
2. Descente de Gradient
La fonction étudiée est : f(x) = x² + 4x + 4. Le minimum théorique est atteint pour x = −2.
Code Python – Descente de Gradient
import numpy as np
import [Link] as plt
def f(x):
return x**2 + 4*x + 4
def grad_f(x):
return 2*x + 4
alpha = 0.1
x = 5.0
epsilon = 1e-6
max_iter = 50
x_values = []
f_values = []
for i in range(max_iter):
x_values.append(x)
f_values.append(f(x))
x_new = x - alpha * grad_f(x)
if abs(x_new - x) < epsilon:
break
x = x_new
print("Minimum atteint en x =", x)
print("Valeur minimale f(x) =", f(x))
3. Recherche Aléatoire
La fonction étudiée est : f(x) = sin(x) sur l’intervalle [0, 2π]. Le maximum théorique est atteint pour x
= π/2.
Code Python – Recherche Aléatoire
import numpy as np
import [Link] as plt
N = 10000
x_random = [Link](0, 2*[Link], N)
f_random = [Link](x_random)
max_index = [Link](f_random)
x_max = x_random[max_index]
f_max = f_random[max_index]
print("Maximum atteint en x =", x_max)
print("Valeur maximale f(x) =", f_max)
Conclusion
Les résultats obtenus et les graphiques montrent que la descente de gradient converge
efficacement vers le minimum, tandis que la recherche aléatoire permet d’approximer le maximum
d’une fonction non linéaire.