Résolution de l'équation de Bellman : préliminaires

Nous allons manipuler des problèmes de décision de Markov et implanter plusieurs algorithmes. Il est utile de définir une structure de données en C, une classe en python, qui permettent de les représenter.

Dans cette UE, un PDM est défini par un quituplet : \( ({\cal S}, {\cal A}, {\cal P}, {\cal R}, \gamma) \), où :

Il est pratique de pouvoir lire la fonction de transition et la fonction de retour depuis un fichier. S'il y a N états et M actions, ce fichier aura cette structure :

Pour le problème du chauffeur de taxi, le fichier contiendra ce qui suit :

0.5    0.25   0.25
0.0625 0.75   0.1875
0.25   0.125  0.625
0.5    0      0.5
0      0      0
0.0625 0.875  0.0625
0.25   0.25   0.5
0.125  0.75   0.125
0.75   0.0625 0.1875

10  4  8 
 8  2  4 
 4  6  4 
14  0 18 
 0  0  0 
 8 16  8 
10  2  8 
 6  4  2 
 4  0  8

On voit que l'action \( a_1 \) est impossible dans l'état \( e_1 \).

À faire :

  1. Définir les structures de données en C, classe en python, qui permettent de représenter un problème de décision de Markov, ansi qu'une politique déterministe ou stochastique.
    Une politique déterministe est un tableau de N entiers naturels (l'action associée à chaque état).
    Une politique stochastique est un tableau de NxM réels (compris entre 0 et 1) : \( \pi (e, a) \) est la probabilité d'émettre l'action \( a \) dans l'état \( e \), donc comprise entre 0 et 1. \( \pi (e, .) \) est une distribution de probabilités, donc \( \sum_{a=0}^{a=M-1} \pi (e, a) = 1 \forall e \).
    En C, c'est l'occasion d'utiliser une union (dans une struct).
  2. Définir les fonctions nécessaires à la lecture de la fonction de transition et la fonction de retour depuis un fichier structuré comme indiqué ci-dessus. Le nombre d'états, le nombre d'actions et le facteur de décompte sont fournis par ailleurs.
  3. Définir une fonction qui simule une trajectoire dans un problème de décision de Markov et renvoie \( \sum_k \gamma^k r_{t+k} \). La trajectoire est interrompue après un nombre de transitions fourni en paramètre à la fonction ou quand \( \gamma^k \) est inférieur à un seuil fourni en paramètre.