Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
GII-TI
1.
Implementaci
on de los algoritmos
Se pide realizar una implementaci
on en Python de los siguientes algoritmos:
Algoritmo de iteraci
on de valores: realiza un calculo aproximado de la valoracion optima de cada estado
de un MDP, actualiz
andola iterativamente mediante las ecuaciones de Bellman. Devuelve adem
as la
poltica (optima) asociada a esa valoracion.
Algoritmo de iteraci
on de polticas: devuelve lo mismo que el algoritmo anterior, pero mediante el
metodo de mejora de polticas a partir de una poltica inicial dada.
1.1.
Clase gen
erica MDP
En primer lugar, se pide definir un clase generica MDP, que va a servir para representar un proceso de
decision de Markov. La clase debe tener al menos los siguientes atributos y metodos:
estados: atributo para almacenar una lista con los estados del MDP
estado_inicial: atributo con el estado inicial del MDP.
descuento: atributo que almacena el descuento para la valoracion de las secuencias de estados.
R: metodo que recibe un estado como entrada y devuelve la recompensa en ese estado.
A: metodo que recibe un estado y devuelve la lista de acciones aplicables al estado.
T: metodo que implementa el modelo de transicion. Supondremos que recibe un estado s y una acci
on
aplicable a, y que va a devolver una lista de tuplas [(s1,p1),(s2,p2),...,(sn,pn)] en la que
s1,. . .,sn son los estados que se pueden obtener aplicando a a s, y p1,. . ., pn son las respectivas
probabilidades de que se obtengan.
El constructor de la clase debe recibir como entrada los valores de los tres atributos. Los metodos R, A
y T no hay que implementarlos en esta clase generica (poner pass) en la definicion), sino cuando se definan
MDPs concretos como subclase de esta clase generica.
IMPORTANTE: Los dos algoritmos que se piden en esta seccion se han de implementar usando s
olo
estos atributos y metodos. En la implementacion no se debe usar ninguna particularidad de los ejemplos de
las cuadrculas que se comentan m
as adelante.
1
1.2.
Algoritmo de iteraci
on de valores
1.3.
Algoritmo de iteraci
on de polticas
2.
Procesos de decisi
on de Markov basados en cuadrculas
En esta segunda parte, se pide definir procesos de decision de Markov que describen el movimiento de
un agente sobre una cuadrcula, del estilo de la cuadrcula que se muestra en las diapositivas del tema 4 (ver
figura 1).
+1
0.8
0.1
0.1
START
(a)
(b)
el ruido fuera por ejemplo 0.3, habra una probabilidad 0.7 de moverse en la direccion deseada, y 0.15 de
moverse a cada direcci
on perpendicular.
2.1.
La subclase Cuadr
cula de la clase MDP
Representaremos las cuadrculas en Python mediante listas de listas, como por ejemplo la siguiente, que
representa la cuadrcula anterior:
[[ , , ,+1],
[ ,#, ,-1],
[S, , , ]]
Los estados se representan mediante sus coordenadas columna y fila (en ese orden), teniendo en cuenta
que las columnas se numeran de de izquierda a derecha y las filas de abajo a arriba, empezando ambas
a contar desde 1. Los estados terminales se indican con un n
umero, que cuantifica su recompensa. Las casillas
bloqueadas se indican con la cadena # y el estado inicial con la cadena S. El resto de casillas se indican
con un espacio en blanco.
Se pide definir una clase Cuadr
cula, subclase de MDP. Ademas de los atributos y metodos de la clase
MDP, incluir en Cuadr
cula los atributos y/o metodos que se consideren convenientes. El constructor de la
clase Cuadr
cula debe recibir los siguientes argumentos de entrada:
cuadr
cula: una lista de listas como la indicada anteriormente.
recompensa_no_terminales: es la recompensa asociada a los estados no terminales. Por defecto ha
de ser 0.04.
descuento: la tasa de descuento que se aplica en la valoracion de secuencias de estados. Por defecto,
0.9.
ruido: el ruido a la hora de aplicar las acciones. Por defecto, 0.2.
Nota: Para gestionar bien los estados terminales, una posible manera es haciendo que sobre ellos la u
nica
accion aplicable sea una acci
on especial exit, y que el resultado de aplicar exit sobre un estado terminal sea
el propio estado pero con probabilidad 0.
2.2.
Experimentaci
on: c
alculo de polticas o
ptimas en cuadrculas
Se pide ahora experimentar los algoritmos implementados sobre las MDPs correspondientes a una serie
de cuadrculas. En particular, se pueden aplicar a la cuadrcula anterior y tambien las cuadrculas de las
figuras 2, 3, 4 y 5:
2.3.
Dada una poltica y un estado s, definimos la valoracion de ese estado respecto de la poltica (notada
V ), como la media esperada (es decir, ponderada por la probabilidad) de las valoraciones de las secuencias
que se pueden generar a partir de s siguiendo la pol
tica . La forma habitual de calcular V es resolviendo
P
el sistema de ecuaciones lineales V (s) = R(s) + s0 P (s0 |s, (s)) V (s0 ) (bien directamente, o mediante
iteracion, como se hace en nuestra implementacion del algoritmo de iteracion de polticas).
Podemos sin embargo calcular una aproximacion de V (s), usando tecnicas de muestreo. La idea es
generar mediante simulaci
on un n
umero grande de secuencias de estados que empiecen en s y que lleguen a
estados terminales, siguiendo la poltica . Cada secuencia la podemos valorar (sumando las recompensas de
5
los estados por donde pasa, con el correspondiente descuento) y finalmente podemos obtener la media de esas
valoraciones. Con un n
umero suficientemente grande de secuencias generadas, esa media se aproximar
a al
valor V (s).
Se pide:
Definir una funci
on estima_valor_muestreo que recibiendo un estado s , una poltica , un MDP y
un n
umero n de secuencias a generar, devuelve una estimacion de V (s) siguiendo el procedimiento
de muestreo descrito anteriormente.
Comprobar el comportamiento de esta funcion calculando el valor de un estado de alguna cuadrcula,
respecto de una poltica
optima de las calculadas en los algoritmos anteriores (recordar que dichos
algoritmos devuelven tanto una poltica como una valoracion).
Comparar el valor calculado con el valor calculado por los algoritmos anteriores.
Por ejemplo, en la siguiente sesi
on, calculamos, con el algoritmo de iteracion de polticas, la poltica
optima y su valoracion asociada (pi_rn y V_rn, respectivamente). Luego calculamos con el algoritmo de muestreo
las valoraciones (respecto de pi_rn) de algunos estados, y podemos ver que son bastante aproximadas.
>>> mdp_rn=Cuadr
cula(rn_grid,descuento=1)
>>> pi_rn,V_rn=iteraci
on_de_pol
ticas(mdp_rn,40)
>>> V_rn
{(1, 2): 0.7615582191780823, (3, 2): 0.6602739726027398,
(1, 3): 0.8115582191780822, (2, 3): 0.8678082191780823,
(3, 3): 0.9178082191780822, (4, 3): 1, (4, 2): -1,
(3, 1): 0.6114155251141552, (4, 1): 0.3879249112125825,
(1, 1): 0.7053082191780823, (2, 1): 0.6553082191780822}
>>> estima_valor_muestreo((2,3),pi_rn,mdp_rn,100000)
0.8675927999990032
>>> estima_valor_muestreo((3,1),pi_rn,mdp_rn,100000)
0.6109783999998482
>>> estima_valor_muestreo((1,1),pi_rn,mdp_rn,100000)
0.704708400000536
Nota: Para generar una secuencia de estados mediante muestreo a partir de un estado s, comenzamos
en s y vamos aplicando la acci
on que en cada momento recomiende la poltica, hasta que lleguemos a un
estado terminal. En la aplicaci
on de una accion a un estado, influye la aleatoriedad, pero ha de hacerse
siguiendo la distribuci
on de probabilidad indicada en el modelo de transicion.