Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Projet : Résolution d’un problème de gestion de stock par programmation dynamique et apprentissage par renforcement

Master M2 MIASHS | Enseignant: Stéphane Chrétien

Objectif général

Ce projet a pour objectif de mettre en œuvre l’apprentissage par renforcement sur un problème classique de gestion de stock stochastique déjà programmé ici. La mission consistera à implémenter, analyser et comparer :

  1. Les itérations de Bellman sur un modèle connu (avec dynamique de transition exacte),

  2. La méthode REINFORCE appliquée au même problème, sans connaissance du modèle (mais en supposant que la réalité est le modèle inconnu qui est déjà programmé).

Contexte

On considère un système de gestion de stock discret dans lequel :

L’objectif est de déterminer une politique optimale stationnaire π\pi^* minimisant le coût total espéré à horizon infini avec un facteur d’actualisation γ[0,1)\gamma \in [0, 1).

Partie 1 — Programmation dynamique

1. Implémentation de l’équation d’optimalité de Bellman

Pour une politique donnée π\pi, l’équation de Bellman est

Vπ(x)=E[R(x,Uπ(x),D)]+γE[p(xx,Uπ(x))]Vπ(x).V^\pi(x) = \mathbb{E} [R(x, U \sim \pi(x), D)] + \gamma \mathbb{E} [p(x' | x, U \sim \pi(x))] V^\pi(x').

où :

La version stationnaire de l’équation d’optimalité de Bellman à horizon infini est :

V(x)=maxπE[R(x,Uπ(x),D)]+γE[p(xx,Uπ(x))]V(x).V^*(x) = \max_\pi \mathbb{E} [R(x, U \sim \pi(x), D)] + \gamma \mathbb{E} [p(x' | x, U \sim \pi(x))] V^*(x').

où :

2. Itérations de Bellman

Implémentez l’algorithme d’itérations de Bellman pour un horizon infini :

Vk+1(x)=maxπE[R(x,Uπ(x))]+γE[p(xx,Uπ(x))]Vk(x),V_{k+1}(x) = \max_\pi \mathbb{E} [R(x, U \sim \pi(x))] + \gamma \mathbb{E}[p(x' | x, U \sim \pi(x))] V_k(x'),

jusqu’à convergence de VkV_k,

3. Visualisation des politiques

Reproduisez la figure finale du notebook de base et ajoutez la politique optimale π\pi^* trouvée par itérations de Bellman sur la même figure, afin de comparer visuellement les différentes stratégies.

Partie 2 — Méthode REINFORCE

Dans cette partie, on suppose que la dynamique du système est inconnue. L’objectif est d’apprendre une politique paramétrique πθ(ux)\pi_\theta(u | x) à partir de trajectoires simulées, sans utiliser les probabilités de transition suivies en réalité par le vrai modèle.

1. Implémentation de REINFORCE

L’algorithme REINFORCE (Williams, 1992) repose sur une mise à jour du gradient de politique à partir du retour total observé à chaque instant tt.

Pour chaque trajectoire générée par la politique courante :

(x0,u0,r0,x1,u1,r1,),(x_0, u_0, r_0, x_1, u_1, r_1, \dots),

on définit pour tout tt le retour (return) à partir de tt :

Gt=k=tγktrkG_t = \sum_{k=t}^\infty \gamma^{k-t} r_k

où :

La mise à jour des paramètres de la politique s’écrit alors :

θθ+αGtθlogπθ(utxt)\theta \leftarrow \theta + \alpha G_t \nabla_\theta \log \pi_\theta(u_t | x_t)

α\alpha est le taux d’apprentissage. L’espérance de cette mise à jour est proportionnelle au gradient du rendement moyen, ce qui garantit (sous certaines hypothèses) une amélioration progressive de la politique.

2. Expérimentation

  1. Faire un test avec 1000 pas de gradients et un α\alpha qui marche bien à découvrir en essayant plusieurs valeurs. N’oubliez pas de re-générer GtG_t à chaque itération de la méthode du gradient avec la nouvelle politique πθ\pi_\theta obtenue.

  2. Si vous générez plusieurs trajectoires, comment les combiner pour avoir un meilleur estimateur de GtG_t ? Entraînez la politique pour différents nombres de trajectoires simulées (par exemple : 100, 1000, 5000),

  3. Comparez la politique apprise avec :

    • Les politiques naives du notebook fourni.

    • La politique optimale obtenue par les itérations de Bellman.

3. Analyse comparative

Présentez vos résultats sous forme de graphiques (valeurs d’état, coûts moyens, politiques apprises) et commentez :