solucionadores de programaci¶on lineal para jmdp
TRANSCRIPT
Solucionadores de Programacion Lineal para
JMDP
Trabajo de Tesispresentado al
Departamento de Ingenierıa Industrial
por
Diego Mauricio Bello Garcıa
Asesor: German Riano, Ph.D.
Para optar al tıtulo deIngeniero Industrial
Ingenierıa IndustrialUniversidad de Los Andes
Febrero 2006
Solucionadores de Programacion Lineal para
JMDP
Aprobado por:
Andres Medaglia, Ph.D., Jurado
German Riano, Ph.D., Asesor
Fecha de Aprobacion
II.05(20)8
Tabla de Contenido
Lista de Tablas V
Lista de Figuras VI
I. Introduccion 1
II. Marco Teorico 4
2.1. Bases para Modelos de Horizonte Infinito . . . . . . . . . . . . . . . 4
2.1.1. Valoracion de polıticas para Horizonte Infinito . . . . . . . . 5
2.1.2. Costo Descontado . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.3. Costo Promedio . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.4. Criterios de Optimalidad para polıticas de Horizonte Infinito 5
2.2. Problemas de Decision de Markov Descontados . . . . . . . . . . . . 6
2.2.1. Ecuacion de Optimalidad . . . . . . . . . . . . . . . . . . . . 7
2.2.2. Solucion por medio de Programacion Lineal . . . . . . . . . . 9
2.3. Problemas de Decision de Markov Promedio . . . . . . . . . . . . . 10
2.3.1. Teorıa Matricial . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3.2. Costo Promedio . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3.3. Ecuaciones de Evaluacion . . . . . . . . . . . . . . . . . . . . 13
2.3.4. Ecuacion de Optimalidad . . . . . . . . . . . . . . . . . . . . 15
2.3.5. Solucion por medio de Programacion Lineal . . . . . . . . . . 16
III. Implementaciones en JAVA 18
3.1. Solucionador de MDP por medio de archivos MPS . . . . . . . . . . 19
3.1.1. Formato MPS . . . . . . . . . . . . . . . . . . . . . . . . . . 19
iii
II.05(20)8
3.1.2. Implementacion . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2. Solucionador de MDP por medio de Xpress-BCL . . . . . . . . . . . 26
3.2.1. Implementacion . . . . . . . . . . . . . . . . . . . . . . . . . 27
IV. Resultados y Conclusiones 29
Apendice A. — User’s Manual 33
Referencias 38
iv
II.05(20)8
Lista de Tablas
1. Lınea de datos del formato MPS . . . . . . . . . . . . . . . . . . . . . 19
2. Codigos para los distintos tipos de Fila . . . . . . . . . . . . . . . . . 20
3. Cota superior e inferior de restricciones . . . . . . . . . . . . . . . . . 21
4. Cota superior e inferior de variables . . . . . . . . . . . . . . . . . . . 22
5. Solucion Xpress-Optimizer . . . . . . . . . . . . . . . . . . . . . . . . 24
6. Comparacion de Resultados . . . . . . . . . . . . . . . . . . . . . . . 29
v
II.05(20)8
Lista de Figuras
1. Jerarquıa de los Solucionadores . . . . . . . . . . . . . . . . . . . . . 18
2. Jerarquıa Solucionadores por medio de archivos MPS . . . . . . . . . 26
3. Jerarquıa Solucionadores por medio de librerıas BCL . . . . . . . . . 28
4. Tiempo total de Ejecucion . . . . . . . . . . . . . . . . . . . . . . . . 30
5. Porcentaje de tiempo para el planteamiento del programa lineal . . . 30
6. Porcentaje de tiempo para hallar la solucion del programa lineal . . . 31
7. Porcentaje de tiempo para construir la solucion del MDP . . . . . . . 31
8. Step 1 Classpath Variable . . . . . . . . . . . . . . . . . . . . . . . . 34
9. Step 2 Classpath Variable . . . . . . . . . . . . . . . . . . . . . . . . 35
10. Step 3 Classpath Variable . . . . . . . . . . . . . . . . . . . . . . . . 35
11. Step 4 Classpath Variable . . . . . . . . . . . . . . . . . . . . . . . . 36
vi
II.05(20)8
Capıtulo I
Introduccion
La propuesta de este trabajo era desarrollar una herramienta que diera solucion a
problemas de decision de Markov por medio de optimizacion basada en programacion
lineal, aunque ya existıa un trabajo previo en esta area, se querıa dar este enfoque
para ver su eficacia y dar una mayor versatilidad al paquete JMDP desarrollado
bajo la tutorıa del Doctor German Riano.
Para el desarrollo de la herramienta se busco ofrecer la mayor flexibilidad posible,
ya que el modulo tiene la opcion de generar un tipo de archivo que puede ser leıdo
y resuelto por cualquier software comercial o de distribucion libre de programacion
lineal, su formato es conocido como MPS.
El formato MPS es un archivo de texto que se enfoca en la distribucion de las
columnas dentro de la matriz que va a ser optimizada, de esta forma se construye
la matriz paso a paso y luego se procede con el algoritmo de optimizacion para dar
solucion.
Para dar solucion al archivo MPS se decidio utilizar Xpress-Optimizer [2], esta
interface de XpressMP permite cargar el archivo MPS y posteriormente escribe su
solucion en un archivo de texto con formato ASC.
Debido a que la escritura y lectura de archivos de texto toma mas tiempo com-
parativamente con una estructura especıfica que tenga cierto software para dar solu-
cion a problemas de programacion lineal, se creo otra opcion que busca explotar esta
ventaja haciendo uso del software XpressMP, debido al reconocimiento del software
dentro de la comunidad de investigacion de operaciones.
Por lo tanto, al usar XpressMP se puede utilizar las dos opciones planteadas, ya
1
II.05(20)8
que el formato MPS es universal y la librerıa Xpress-BCL [1] tienen un formato pre-
definido que permite tener mayor velocidad para obtener una solucion al problema
que sea planteado.
Dado que JMDP brinda la informacion necesaria de cualquier proceso de decision
markoviano; tal como: el conjunto de estados y el de acciones, cuando una accion
esta disponible para ser tomada, que estados se pueden alcanzar y con que proba-
bilidad, que costo se adquiere por tomar cada decision, se genera el problema a ser
optimizado con base en esto y se obtiene el mınimo costo asociado al problema,
usando los modulos anteriormente presentados.
Luego de haber sido implementada la anterior herramienta se vio que las solu-
ciones por medio de Xpress-BCL tenıan un mejor desempeno computacional que las
soluciones proveıdas por las herramientas inicialmente planteadas dentro de JMDP.
De igual forma, se ve que la generacion y procesamiento de archivos MPS toma
mas tiempo, pero teniendo como contraparte que cualquier software de programacion
lineal puede leer y resolver el problema planteado.
Por otro lado, a pesar que algunos textos muestren que soluciones a problemas
de decision de Markov a partir de otros algoritmos como Value Iteration son mas
eficientes computacionalmente, se refuta este hecho a partir de los resultados que se
obtienen. De esta manera se ve que el aporte a la solucion de problemas planteados
dentro de JMDP hacen que el software sea mas atractivo para el usuario y este a su
vez tenga mas alternativas eficientes para resolver esta clase de problemas.
El sustento teorico de los modulos anteriormente nombrados se expone en el
capıtulo II, aquı se muestra el marco teorico para la solucion de procesos de deci-
sion markoviano por medio de programacion lineal; se abordan las soluciones para
horizonte infinito descontado y horizonte infinito promedio.
En el capıtulo III se explica como es la implementacion de los modulos en JAVA,
y se da una breve introduccion al formato MPS para poder entender el modulo que
hace uso de este formato.
El capıtulo IV muestra los resultados y conclusiones que se obtuvieron por me-
dio de la herramienta implementada, de igual forma se comparan los resultados
obtenidos con los anteriores modulos implementados.
2
II.05(20)8
Finalmente se incluye un manual de usuario en el apendice para hacer uso de los
modulos descritos dentro del trabajo, el cual por medio de ejemplos e instrucciones
paso a paso, muestra como estos deben ser instalados y usados.
3
II.05(20)8
Capıtulo II
Marco Teorico
En este capıtulo se asume que el lector tiene un conocimiento previo en procesos
de decision markovianos (MDP, Markov Decision Process), de lo contrario el lector
debe revisar [9]. A continuacion se explicara como se llega a los modelos de progra-
macion lineal para MDP, con base al marco teorico de Putterman[8]. Otros autores
que complementan este topico son Bertsekas [4] y Stidham[10].
2.1. Bases para Modelos de Horizonte Infinito
Una regla de decision es una funcion dt = St → A(s)t, la cual especifica la accion
que es seleccionada cuando el sistema esta en el estado s y el tiempo t. Una polıtica
π, especifica las reglas de decision que deben ser usadas para cada tiempo t ∈ T ,
π = {d1, d2, d3, . . . , dN}, donde N ≤ ∞.
En un MDP estacionario e infinito, cada polıtica π = (d1, d2, . . .) induce un pro-
ceso bivariable discreto estocastico en el tiempo; {[Xπt , c(Xπ
t , dt(Xπt ))]; t = 1, 2, . . .}.
La primera componente Xπt es el estado del sistema en el tiempo t y la segunda com-
ponente es el costo recibido si el sistema esta en Xπt y la regla de decision dt(X
πt )
es usada. Cuando π es aleatoria, la distribucion marginal de c depende de de la
distribucion del espacio de acciones inducido por la regla de decision. Cuando π es
Markov, el anterior proceso estocastico es llamado un proceso de costo de Markov.
Se asume que los costos son acotadas en cualquier MDP, a menos que se diga lo
contrario, matematicamente:
sups∈S
supa∈A(s)
|c(s, a)| = M < ∞ (1)
4
II.05(20)8
Donde S es el espacio de Estados, S = {1, 2, . . . , M} , A(s)={1,2,. . . ,K } el
conjunto de Acciones permitidas y c(s, a) el costo obtenido al estar en el estado s y
usar la accion a.
2.1.1. Valoracion de polıticas para Horizonte Infinito
Aunque existe tres posibles valoraciones de MDP, solo se incluiran dos ya que el
costo total no fue implementada.
2.1.2. Costo Descontado
El costo descontado esperado de una polıtica π esta dado por:
vπλ = Eπ,s{
∞∑t=1
λt−1c(Xπt , dt(X
πt ))} (2)
2.1.3. Costo Promedio
Si se define vπN(s) de la siguiente manera:
vπN(s) = Eπ,s{
N∑t=1
ct(Xπt , dt(X
πt )) + cn+1(X
πn+1)} (3)
La recompensa promedio o ganancia de una polıtica π esta dada por:
gπ(s) = lımN→∞
1
Nvπ
N(s) (4)
2.1.4. Criterios de Optimalidad para polıticas de Horizonte Infinito
2.1.4.1. Costo Descontado
Una polıtica π∗ se dice que es optima descontada con λ fijo entre 0 ≤ λ < 1 sı,
vπ∗λ (s) ≤ vπ
λ(s) para todo s ∈ S y toda π ∈ Π (5)
Sı se cumple lo anterior el valor del MDP es:
v∗λ(s) = ınfπ∈Π
vπλ(s) (6)
5
II.05(20)8
Una polıtica descontada optima π∗ existe siempre que:
vπ∗λ (s) = v∗λ(s) para todo s ∈ S (7)
2.1.4.2. Costo Promedio
Una polıtica π∗ se dice que es de promedio optimo o perdida optima sı,
gπ∗(s) ≤ gπ(s) para todo s ∈ S y toda π ∈ Π (8)
La perdida del MDP es:
g∗(s) = ınfπ∈Π
gπ(s) (9)
Si el limite de gπ(s) no existe, existe dos criterios de optimalidad. Una polıtica π∗
se dice que es de promedio optimo en un sentido fuerte, si su punto mas grande del
limite es por lo menos tan pequeno como cualquier punto de cualquier otra polıtica.
gπ∗(s) = lım supN→∞
1
Nvπ∗
N (s) para todo s ∈ S
≤ lım infN→∞
1
Nvπ
N(s) para todo s ∈ S y toda π ∈ Π
(10)
Una polıtica π∗ se dice que es de promedio optimo en un sentido debil, si su
punto mas pequeno del limite es por lo menos tan pequeno como cualquier punto
de cualquier otra polıtica.
gπ∗(s) = lım infN→∞
1
Nvπ∗
N (s) para todo s ∈ S
≤ lım infN→∞
1
Nvπ
N(s) para todo s ∈ S y toda π ∈ Π(11)
2.2. Problemas de Decision de Markov Descontados
Si se quiere funciones que satisfagan el criterio de optimalidad anteriormente
nombrado, se llega a la conclusion que la ecuacion de Bellman es la unica en cumplir
esto. Demostracion en [10].
6
II.05(20)8
2.2.1. Ecuacion de Optimalidad
Ecuacion de Bellman
v(i) = ınfa∈A(i)
{c(i, a) +∑
j∈S(i,a)
λp(j|i, a)v(j)}, i ∈ S (12)
Donde S(i, a), son los estados alcanzables, si se esta en el estado i y se aplica la
accion a.
En forma matricial:
v = ınfd∈D
{cd + λPdv} (13)
Donde d es una regla de decision, y D es el conjunto de reglas permitidas.
Ahora si se define el operador T : V → V , por
Tv ≡ ınfd∈D
{cd + λPdv} (14)
y para cada d ∈ D se define el operador Td : V → V , por
Tdv ≡ {cd + λPdv} (15)
Si se mira la transformacion (14) y la ecuacion (13), se puede ver que la ecuacion
de Bellman puede ser expresada como v = Tv. Por lo tanto una solucion v de la
ecuacion de Bellman es un punto fijo de T .
Las principales propiedades de la ecuacion de Bellman son:
Si existe una solucion a la ecuacion de Bellman, esta es igual al valor del MDP
descontado.
El valor del MDP descontado satisface la ecuacion de Bellman.
La solucion de la ecuacion de Bellman es unica.
La ecuacion de Bellman da como resultado polıticas optimas.
Las anteriores propiedades son demostradas en [8].
Si miramos la ecuacion (2) y tomamos una polıtica arbitraria π = {d1, d2, . . .},se puede llegar a tener una ecuacion recursiva para poder calcular (2).
7
II.05(20)8
vπλ(s) =
∞∑n=1
λn−1P n−1π cdn
= cd1 + λPd1cd2 + λ2Pd1Pd2cd3 + . . .
= cd1 + λPd1(cd2 + Pd2cd3 + . . .)
= cd1 + λPd1vπ′λ
(16)
Donde π′ = {d2, d3, . . .}, sin embargo, si π es estacionaria, π′ = π, entonces la
polıtica estacionaria esta compuesta por π = {d, d, . . .}, dado que no importa el
periodo de tiempo en que se este, se utiliza siempre la misma regla de decision.
Dado lo anterior, la ecuacion recursiva que se obtuvo, se modifica ası:
vdλ(s) = cd + λPdv
πλ ≡ Tdv
dλ (17)
Quedando entonces que vdλ es una solucion de v = cd + λPdv y tiene como
resultado la siguiente proposicion.
Proposicion 1 Para cualquier polıtica estacionaria d, vdλ es la unica solucion de:
v = cd + λPdv = Tdv (18)
Adicionalmente,
vdλ = (I − λPd)
−1cd =∞∑
n=1
λn−1P n−1d cd (19)
A continuacion se muestra dos teoremas que son importantes para la ecuacion
de Bellman y su solucion. Demostraciones en [5].
Teorema 1 Suponga que v ∈ V satisface:
v ≤ (≥) ınfd∈D
{cd + λPdv} (20)
Por lo tanto v ≤ (≥)v∗λ.
8
II.05(20)8
El anterior teorema establece que cualquier solucion a la ecuacion de Bellman
debe satisfacer ambas desigualdades, y esta solucion es igual al valor la funcion en
su optimo y como consecuencia es unica su solucion.
Teorema 2 Si la ecuacion v = Tv tiene una solucion, esta es unica e igual a v∗λ.
Por lo tanto el valor de la funcion es una solucion de la ecuacion de Bellman y
si v ≤ (≥)Tv, v es la cota mas baja (cota mas alta) para v∗λ.
2.2.2. Solucion por medio de Programacion Lineal
Si miramos el Teorema 1, se ve que v ≤ cd + λPdv, para toda d ∈ D, quedando
entonces que v es la cota mas baja para el MDP descontado, v∗λ. Dado que v∗λ,
tambien satisface la desigualdad (Teorema 2), esta debe ser la solucion con mayor
valor. Lo anterior es la base para el planteamiento del programa de programacion
lineal.
2.2.2.1. Programa Lineal Primal
Maximizar∑i∈S
αiv(i)
sujeto a
v(i) ≤ c(i, a) +∑
j∈S(i,a)
λp(j|i, a)v(j), a ∈ A(i) y i ∈ S
∑i∈S
αi = 1
Donde las constantes αi deben ser positivas y pueden ser arbitrariamente esco-
gidas y v(i) es libre para todo i ∈ S.
A pesar que el anterior programa da la solucion al MDP descontado, no da una
explicacion clara sobre como da solucion al problema. Por otro lado el Programa
Lineal Dual, da la explicacion concreta que es la de minimizar el costo global, esto
se ve a continuacion.
9
II.05(20)8
2.2.2.2. Programa Lineal Dual
Minimizar∑i∈S
∑
a∈A(i)
c(i, a)x(i, a)
sujeto a
∑
a∈A(i)
x(j, a)−∑
a∈A(i)
∑
i:j∈S(i,a)
λp(j|i, a)x(i, a) = αj, j ∈ S
x(j, a) ≥ 0 para todo i ∈ S, a ∈ A(i)
La variable de decision x(i, a) es la probabilidad conjunta descontada de que el
sistema este en el estado s y la accion a haya sido seleccionada, promediada sobre
la distribucion inicial de αj.
Si se revisa los conceptos de dualidad [3], se puede ver que una solucion es factible
si la variable dual x(i, a) es no negativa (factibilidad dual), dado esto se produce el
siguiente corolario,
Corolario 1 Cualquier solucion basica factible tiene la propiedad que para cada
i ∈ S, x(i, a) > 0, para solo una a ∈ A(i). Si x∗ es una solucion basica factible, una
polıtica optima determinista se obtiene al fijar d∗(i) = a siempre que x(i, a) > 0.
Si se llegara a tener recompensas en vez de costos para el MDP que se mode-
la, el problema de optimizacion, buscarıa maximizar la recompensa global, y sus
restricciones serıan las mismas. De igual manera aplicarıa el anterior corolario.
2.3. Problemas de Decision de Markov Promedio
Si se tiene {Xt, t = 1, 2, . . .} una cadena de Markov con espacio de estados S y
una matriz de transicion de probabilidad P con entradas p(j|s). Las probabilidades
del n-esimo paso de la matriz P n son escritas como pn(j|s). Las cadenas de Markov
puede tener estructura unichain si consta de una clase recurrente mas otros estados
transiente, irreducible si solo tiene una clase recurrente y multichain si se tiene mas
de una clase recurrente y estados transiente, sin embargo en este documento solo se
analizara el caso unichain.
10
II.05(20)8
2.3.1. Teorıa Matricial
Se explicara algo de Teorıa matricial, la cual sera util para la solucion de MDP
promedio.
La matriz limite P ∗ se define por:
P ∗ = lımN→∞
1
N
N∑t=1
P t−1 cuando P es aperiodica se tiene que,
P ∗ = lımN→∞
PN
(21)
La matriz de desviacion Hp se define por:
Hp = (I − (P − P ∗))−1(I − P ∗) (22)
Cuando el sistema es unichain con clase recurrente R, para todo s ∈ S, se tiene
que,
p∗(j|s) =
p∗(j), j ∈ R,
0, de lo contrario.
Donde p∗(j) es estrictamente positivo, y representan la distribucion estacionaria
correspondiente a cada estado.
2.3.2. Costo Promedio
Si se considera una cadena de Markov junto con una funcion c de costo esperado
definida sobre S, se tiene un proceso de costo de Markov (Markov cost process,
MCP), el costo promedio o perdida es:
g(s) = lımN→∞
1
NEs
N∑t=1
{c(Xt)} (23)
Al evaluar el valor esperado, se tiene como resultado,
g = lımN→∞
1
N
N∑t=1
P t−1c = P ∗c (24)
El anterior resultado, da lugar a la siguiente proposicion,
11
II.05(20)8
Proposicion 2 Si s y j estan en la misma clase recurrente, g(s) = g(j). Adicional-
mente si la cadena es unichain o irreducible, g(s) es constante.
Dando como consecuencia que el costo promedio en el caso unichain sea expre-
sado como g1, donde g es un escalar y 1 es un vector de unos.
Para poder llegar a la solucion del caso de costo promedio, se desarrollaran unas
transformaciones a vλ y se parametrizara en terminos de la tasa de interes. Donde
la tasa de interes ρ, esta relacionada con el factor de descuento λ, de la siguiente
manera, λ = (1 + ρ)−1, o, ρ = (1− λ)λ−1.
vλ = (I − λP )−1c = (1 + ρ)((1 + ρ)I − P )−1c
= (1 + ρ)(ρI + (I − P ))−1c(25)
La cantidad (ρI +(I−P ))−1 se llama el resolvente de I−P , donde su expansion
de series de Laurent alrededor de ρ = 0, se muestra a continuacion,
Teorema 3 Dado v, el valor propio de P menor a 1 con el modulo mas grande. Si
0 ≤ ρ ≤ 1− |v|, se tiene que,
(ρI + (I − P ))−1 = ρ−1P ∗ +∞∑
n=0
(−ρ)nHn+1p (26)
vλ = (1 + ρ)(ρ−1y−1 +∞∑
n=0
(−ρ)nyn) (27)
Donde,
y−1 = P ∗c y yn = Hn+1p r, n = 0, 1, . . .
La cantidad y0 = Hpc tiene un rol importante para el analisis de MDP promedio,
esta cantidad sera escrita como h. Usualmente es llamada como bias o costo tran-
siente y puede ser interpretada al expandirse (I− (P −P ∗))−1 en series de Neumann
para obtener:
12
II.05(20)8
hp = Hpc = (I − (P − P ∗))−1(I − P ∗)c
=∞∑
n=0
(P − P ∗)(I − P ∗)c =∞∑
n=0
(P n − P ∗)c
=∞∑
n=0
P n(c− g) = E{∞∑
n=0
(c(Xn)− g(Xn))}
(28)
El resultado obtenido de hp en (28), puede ser interpretado como el costo total
esperado para un MCP, con costo igual a c − g. Si P es aperiodica, la distribucion
de Xn converge a un limite de la distribucion , y por lo tanto (c(Xn) − g(Xn))
sera cercano a 0. En conclusion, h puede verse como el costo total antes de la
convergencia.
Si se esta en el contexto de MDP promedio, es suficiente usar la expansion de
Laurent truncada para vλ, la cual es un caso de (26). Demostracion en [5].
Corolario 2
vλ = (1− λ)−1g + h + f(λ) (29)
Donde f(λ) es un vector que converge a cero componente a componente cuando
λ ↑ 1
El siguiente Corolario es util para establecer la estructura de problemas de costo
promedio, gracias a la estructura extendida del caso descontado.
Corolario 3
g = lımλ↑1
(1− λ)vλ (30)
2.3.3. Ecuaciones de Evaluacion
Si se utiliza las serie de Laurent (26) y la expresion (25) se expresa de la siguiente
manera,
c + (P − I − ρI)(1 + ρ)−1vλ = 0
Se tiene el siguiente resultado,
13
II.05(20)8
Teorema 4 Los coeficientes de la serie de Laurent para vλ satisface el sistema de
ecuaciones:
(P − I)y−1 = 0 (31)
c− y−1 + (P − I)y0 = 0 (32)
−yn + (P − I)yn+1 = 0, n ≥ 0 (33)
Opuestamente, si w−1, w0, . . . , wm, wm+1 satisfacen el anterior sistema de ecua-
ciones, entonces w−1 = y−1, w0 = y0, . . . , wm = ym y wm+1 es un vector unico en el
espacio nulo de I − P .
Los siguientes 2 corolarios muestran una forma reducida del anterior teorema, y
sirven para ser aplicados en MDP promedio.
Corolario 4 Los vectores g y h satisfacen
(P − I)g = 0 (34)
y
c− g + (P − I)h = 0 (35)
Opuestamente si g′ y h′, satisfacen el sistema de ecuaciones (34) y (35), g′ = g
y h′ = h + w, donde (P − I)w = 0.
El anterior Corolario da las ecuaciones que deben ser resueltas para determinar
el costo promedio para matrices de probabilidad de transicion que tengan cualquier
estructura (unichain, irreducible y multichain). Sin embargo si la estructura de P
es unichain, debe recordarse que g es un vector constante y es escrito como g1.
Corolario 5 Si P es de tipo unichain, el costo promedio y el costo transiente sa-
tisfacen,
c− g + (P − I)h = 0 (36)
14
II.05(20)8
De manera opuesta, si si g′ y h′, satisfacen (36), g′ = g y h′ = h + w, donde
(P − I)w = 0.
Este Corolario es la base para la evaluacion de polıticas en el caso unichain.
2.3.4. Ecuacion de Optimalidad
Si se recuerda los principios de optimalidad para que una polıtica π∗ sea de
promedio optimo o perdida optima, se necesita que,
gπ∗ = lımn→∞
1
nvπ∗
n ≤ lımn→∞
1
nvπ
n = gπ para toda π ∈ Π
La ecuacion para el caso MDP promedio unichain que cumplirıa la anterior
condicion de optimalidad se muestra a continuacion. Demostracion en [4].
0 = mına∈A(i)
{c(i, a)− g +∑
j∈S(i,a)
p(j|i, a)h(j)− h(i)}, i ∈ S. (37)
En forma matricial
0 = mınd∈D
{cd − g1 + (Pd − I)h} ≡ B(g, h) (38)
A continuacion se muestra dos teoremas que son importantes para la ecuacion
de optimalidad y su solucion.
Teorema 5 Suponga que existe un escalar g y uno h ∈ V que satisfacen. (V es el
conjunto valores de cotas reales para funciones sobre S)
0 ≤ mınd∈D
{cd − g1 + (Pd − I)h} (39)
Luego,
g ≤ ınfπ∈Π
(lım infn→∞
1
nvπ
n) (40)
Pero si existe un escalar g y uno h ∈ V que satisfacen,
0 ≥ mınd∈D
{cd − g1 + (Pd − I)h} (41)
15
II.05(20)8
Luego,
g ≥ ınfπ∈Π
(lım supn→∞
1
nvπ
n) (42)
Al combinar los resultados (39)y (40), se obtiene el siguiente teorema:
Teorema 6 Si la ecuacion (24) tiene una solucion (g, h) ∈ R1 × V , entonces,
Existe un escalar g∗ que satisface:
g∗ = ınfπ∈Π
( lımn→∞
1
nvπ
n)
g es unico e igual a g∗.
2.3.5. Solucion por medio de Programacion Lineal
El programa lineal primal se basa en los resultado obtenidos por los anteriores
Teoremas.
A partir del teorema 5 , el cual dice que g ≤ g∗ siempre que exista una solucion
(g, h) ∈ R1 × V que satisfaga,
g ≤ cd + (Pd − I)h para toda d ∈ D (43)
Debido al teorema 6, g∗ es la perdida mas grande g para la cual existe un h ∈ V
que satisface la ecuacion (43), de esta forma se puede decir que g∗ es una solucion
optima para el siguiente problema de programacion primal.
2.3.5.1. Programa Lineal Primal
Maximizar g
sujeto a
g ≤ c(i, a) +∑
j∈S(i,a)
p(j|i, a)h(j)− h(i), i ∈ S y a ∈ A(i)
g y h libres
16
II.05(20)8
De manera analoga al problema descontado, se presenta el programa dual, debido
a que explica la optimizacion de la perdida global del sistema.
2.3.5.2. Programa Lineal Dual
Minimizar∑i∈S
∑
a∈A(i)
c(i, a)x(i, a)
sujeto a
∑
a∈A(i)
x(j, a)−∑
a∈A(i)
∑
i:j∈S(i,a)
p(j|i, a)x(i, a) = 0, j ∈ S
∑i∈S
∑
a∈A(i)
x(i, a) = 1
x(i, a) ≥ 0 , a ∈ A(i), i ∈ S
Una polıtica optima para un MDP promedio se halla por medio de condiciones
de factibilidad dual, las cual tiene la siguiente forma,
d∗(i) =
a si x(i, a) > 0, i ∈ S∗
arbitraria si i ∈ S − S∗(44)
donde
S∗ = {i ∈ S : x(i, a) > 0 para algun a ∈ A(i)} (45)
Si se llegara a tener recompensas en vez de recompensas para el MDP que se
modela, el problema de optimizacion buscarıa maximizar la recompensa global y
sus restricciones serıan las mismas. Tambien aplicarıa la regla (44) para obtener una
polıtica optima.
17
II.05(20)8
Capıtulo III
Implementaciones en JAVA
Las implementaciones que se hicieron en JAVA para JMDP, constan de dos so-
lucionadores de programacion lineal que resuelven MDP promedio o descontado,
desde la optica del programa dual. Estos a su vez utilizan XpressMP, el cual da la
solucion a los problemas introducidos por los solucionadores. El primer solucionador
usa el formato universal MPS para la generacion del problema que se desea opti-
mizar y luego mediante el Xpress-Optimizer [2] se da solucion al problema. El otro
solucionador utiliza unas librerıas en JAVA proveıdas por Xpress-BCL [1], donde
esta permite el modelamiento del problema y su solucion en un solo paso.
Los solucionadores implementados en JAVA que usan las librerıas Xpress-BCL
tienen por nombre LPBCLDiscountedSolver y LPBCLAverageSolver, mientras que
los solucionadores que usan archivos MPS y los resuelven por medio del Xpress-
Optimizer, se llaman MPSXpressDiscountedSolver y MPSXpressAverageSolver, y
su jerarquıa dentro del paquete JMDP es la siguiente,
Solver
AbstractInfiniteSolver
AbstractDiscountedSolver AbstractAverageSolver
LPBCLDiscountedSolver MPSXpressDiscountedSolver LPBCLAverageSolver MPSXpressAverageSolver
Figura 1: Jerarquıa de los Solucionadores
18
II.05(20)8
3.1. Solucionador de MDP por medio de archivos MPS
Primero se hara una introduccion al formato MPS para luego explicar la forma
en que se implemento los solucionadores.
3.1.1. Formato MPS
Los archivos con formato MPS son archivos de texto que indican paso a paso los
coeficientes de las matrices del problema de programacion lineal.
En principio cualquier software de programacion lineal debe estar en la capacidad
de poder leer y dar solucion a estos archivos, por esta razon, fue escogido este formato
y no otro.
Para este formato existe bastante informacion en internet, aunque casi toda esta
hace referencia a [7].
campo 1 campo 2 campo 3 campo 4 campo 5 campo 6columnas 2-3 5-12 15-22 25-36 40-47 50-61contenido Indicador Nombre Nombre Valor Nombre Valor
Tabla 1: Lınea de datos del formato MPS
Cada seccion de datos dentro del archivo MPS cumple el siguiente orden:
NAME
ROWS
COLUMNS
RHS
RANGES (opcional)
BOUNDS (opcional)
ENDATA
NAME: Esta seccion tiene la palabra NAME en las columnas 1-4 y el tıtulo del
problema se escribe en el campo 3.
19
II.05(20)8
ROWS: En esta seccion se define el nombre de la funcion objetivo y las res-
tricciones (filas), como tambien el tipo de inecuacion que tiene cada restriccion. En
el campo 1 se indica el tipo de fila que es asignado, y en el campo 2 se asigna el
nombre.
Tipo de fila Indicador , campo 1= E (igualdad)< L (menor o igual)> G (mayor o igual)Funcion Objetivo Nlibre N (sin restriccion)
Tabla 2: Codigos para los distintos tipos de Fila
Esta seccion es precedida por el indicador ROWS, escrito entre las columnas 1-4
y seguido en el siguiente renglon por las especificaciones del tipo de filas. El primer
identificador igual a N que sea encontrado, se asignara como funcion objetivo.
COLUMNS: En esta seccion se asigna el valor que tiene una variable (columna)
en una restriccion o funcion objetivo (fila). Estos valores deben ser escritos conti-
nuamente. Para hacer esto, se escoge el nombre de la columna, el cual debe ir en el
campo 2, luego el nombre de la fila, campo 3, y finalmente el valor que tiene esta
columna en la fila se pone en el campo 4. En esta seccion solo se deben entrar los
valores diferentes a 0, ya que cuando no son escritos los valores dentro del archivo,
el software que procesa el archivo pone en 0 los valores que no son especificados.
Adicionalmente esta seccion va precedida por el indicador COLUMNS, el cual es
escrito en las columnas 1-7.
RHS: En esta seccion es precedida por el identificador RHS, el cual es escrito
en las columnas 1-3. Aquı se especifica el valor que tiene un inecuacion a su lado
derecho, para hacer esto, se escribe en el campo 2 un nombre para este vector (solo
se permite un mismo nombre en el campo 2), se recomienda RHS, en el campo 3 se
escribe la fila, y en el campo 4 el valor que tiene a la derecha la inecuacion.
RANGES: Esta seccion sirve para restricciones que tienen la siguiente forma,
hi ≤ ai1x1 + ai2x1 + . . . + ainxn ≤ ui. El rango de una restriccion se define como
ri = ui−hi. Para que una fila tenga este tipo de restriccion en la parte de RHS debe
20
II.05(20)8
especificarse hi o ui y luego el valor del rango es especificado en RANGES. Por lo
tanto al combinar la informacion de RANGES y RHS se obtienen las cotas para las
restricciones.
Si bi es una entrada en RHS para cierta restriccion y ri especifica el rango en
RANGES para dicha restriccion, entonces los valores hi y ui toman los siguientes
valores
Tipo de Fila Signo de ri cota inferior, hi cota superior, ui
G(≥) + o - bi bi + |ri|L(≤) + o - bi − |ri| bi
E(=) + bi bi + |ri|E(=) - bi − |ri| bi
Tabla 3: Cota superior e inferior de restricciones
Esta seccion es precedida por la palabra RANGES, que debe ser escrita en las
columnas 1-6. Los valores ri son especificados aquı y tienen el mismo formato que
COLUMNS, sin embargo en el campo 2, se escribe un nombre que da el usuario para
el rango ri de la respectiva fila.
BOUNDS: Esta seccion es precedida por el indicador BOUNDS, escrito en las
columnas 1-6. Aquı se especifica las cotas de cada variable (columna) y el orden en
que se especifica las cotas para cada variable debe ser el mismo en que se especifico
en la seccion COLUMNS. Los cotas por defecto de una variable xj son: 0 ≤ xj ≤ ∞.
Mas de una cota puede ser especificada por una variable. Por ejemplo, cuando se
tiene cota superior e inferior. Cuando solo se especifica una cota para una variable, se
asume que el valor de la otra cota debe ser 0 o ∞ segun el caso en que se especifique
la cota.
campo 1: Indicador que especifica el tipo de cota (los valores entre() que apa-
recen en la tabla 4 son valores que se toman por defecto).
campo 2: Se especifica el nombre que da el usuario para las cotas (debe ser
unico), se recomienda BOUNDS.
campo 3: Se especifica el nombre de la variable que quiere ser acotada.
21
II.05(20)8
campo 4: Especifica el valor de la cota.
Indicador Significado cotas para la variableLO cota inferior bj ≤ xj ≤ (∞)UP cota superior (0) ≤ xj ≤ bj
FX variable fija xj = bj
FR variable libre −∞ ≤ xj ≤ +∞MI cota inferior −∞ −∞ ≤ xj ≤ (0)PL cota superior +∞ (cota por defecto) (0) ≤ xj ≤ ∞
Tabla 4: Cota superior e inferior de variables
ENDATA: Esta seccion indica el final de la especificacion del problema y debe
ser escrito con el indicador ENDATA en las columnas 1-6.
3.1.2. Implementacion
3.1.2.1. Creacion del archivo MPS
Para la creacion de los archivos MPS se implementaron dos clases en JAVA:
MPSBuilderDiscounted y MPSBuilderAverage. Estas dos clases extienden una in-
terface, MPSBuilder; la cual no extiende ninguna clase en JMDP, sin embargo, tiene
como cota superior a sus variables las clases State y Action. Esto se debe a que los
constructores de archivos MPS no son solucionadores como tales, sino que son sim-
plemente generadores de archivos de optimizacion que se basan en la informacion
brindada por JMDP.
Adicionalmente la clase MPSBuilderDiscounted fue implementada de manera
que pudiera ser un objeto de MPSBuilderAverage, ya que los problemas de pro-
gramacion lineal para el caso promedio y descontado difieren en muy poco. Si se
mira detenidamente el programa para el caso promedio, este podrıa ser el mismo
del caso descontado con coeficientes de descuento igual a 1, coeficientes para las
restricciones iguales a 0 en vez de αj, y la adicion de una restriccion (restriccion
de normalizacion). Por lo anterior se explicara la forma en que fue implementada
MPSBuilderDiscounted.
Lo primero que se hace en esta clase es guardar por medio del constructor la
informacion del problema a ser optimizado y el path donde quiere guardarse el
22
II.05(20)8
archivo. Luego es inicializado el valor de αj, el cual depende del numero de estados
que se tenga en el problema, ya que existe un αj para cada estado y se debe garantizar
que la suma αj debe ser igual a 1. Por lo tanto, αj es definido como el inverso
multiplicativo al numero de estados, pero si se da el caso en que el factor de descuento
es igual a 1, αj es igual a 0, ya que esto estarıa diciendo que se quiere resolver el
problema promedio y no el descontado.
La seccion NAME se crea con el nombre que se desee, por defecto es MDP.
La seccion ROWS define que cada restriccion es de igualdad, donde el numero de
restricciones es igual al numero de estados del problema si el problema es descontado,
de lo contrario sera igual al numero de estados mas la restriccion de normalizacion
para el caso promedio.
En la seccion COLUMNS se hace uso del siguiente algoritmo:
Crear statesMap, es un mapa que tiene como key el estado y como value un
numero asociado al estado.
for all i ∈ S do
for all a ∈ A(i) do
(i, OBJ) ← r(i, a)
for all j ∈ S(i, a) do
coeficiente = (i==j) ? 1.0 : 0.0 - p(j|i,a)
restriccion = statesMap.get(j)
(i, restriccion) ← coeficiente
end for
if discountFactor == 1.0 then
(i, NORM) ← 1.0
end if
end for
end for
La seccion RHS define el coeficiente del lado derecho igual al inverso multiplica-
tivo del numero de estados si es un MDP descontado, de lo contrario sera igual a 0
y para el caso de la restriccion de normalizacion este coeficiente sera 1. Finalmente
para terminar el archivo de texto se escribe ENDATA.
23
II.05(20)8
3.1.2.2. Lectura de la solucion proveniente de Xpress-Optimizer
Despues que Xpress-Optimizer da solucion al archivo MPS, escribe un archivo
en formato .ASC, el cual es un archivo de texto que tiene el formato explicado en la
tabla 5.
Seccion Filas# nombre tipo estado valor holgura n/a n/a valor dual RHS
Seccion Columnas# nombre tipo estado valor costo cota inf cota sup costo reducido
Tabla 5: Solucion Xpress-Optimizer
A pesar que se haga una subdivision en la forma en que se presenta el archivo de
respuesta, este es un archivo continuo, donde cada columna es separada por comas.
Los nombres, tipos y estados, van entre comillas.
Dado lo anterior, se implementa la clase MPSXpressSolutionReader, la cual por
medio del objeto StringTokenizer, coge la informacion que es relevante para dar una
solucion al usuario.
Al momento de ir leyendo el archivo es facil diferenciar cuando se esta en una
informacion de filas o columnas, ya que las primeras tienen diez columnas mientras
que los ultimos tienen solo nueve columnas.
La informacion que nos importa de las filas es su nombre, el cual se encuentra en
la columna dos, y su valor dual que aparece en la columna nueve. Esta informacion es
necesaria para poder dar solucion al valor que toma las funciones en cada estado. En
cuanto a las columnas, se toma el nombre de la variable, el cual esta en la columna
dos y el valor de esta se encuentra en la columna 5, esta informacion sera importante
para poder saber la regla de decision del MDP.
Aunque se crea que para el solucionador MPSBuilderAverage las variables duales
no deben ser seleccionadas para dar solucion al valor que toma las funciones de valor
en cada estado, es falso; ya que el valor de estas funciones es constante e igual al
valor de la variable dual de la restriccion de normalizacion.
24
II.05(20)8
3.1.2.3. Solucionador
Los solucionadores MPSXpressDiscountedSolver y MPSXpressAverageSolver uti-
lizan las herramientas anteriormente descritas para dar solucion a los problemas. Sin
embargo, es suficiente explicar la clase MPSXpressDiscountedSolver ya que la clase
MPSXpressAverageSolver utiliza un objeto de la primera. Si se recuerda la estruc-
tura de programas de optimizacion para el caso descontado y promedio, es obvio que
el solucionador para casos promedio tenga como entradas un problema sin factor de
descuento, pero se crea artificialmente uno, con valor igual a 1; de manera que la
implementacion hecha para el caso descontado sea usada para dar solucion al caso
promedio.
La clase MPSXpressDiscountedSolver tiene en su constructor la definicion del
problema, la tasa de interes (recordar que el factor de descuento es igual a (1+r)−1),
y el path donde desea guardarse el archivo MPS.
Lo primero que se hace es crear un archivo MPS, el cual dependiendo del factor
de descuento sera una archivo MPS para un MDP descontado si λ < 1, de lo
contrario sera para un MDP promedio. Luego por medio de unos comandos de
consola de Xpress-Optimizer ejecutados desde JAVA se procesa el archivo MPS y
su respuesta es guardada en un archivo .ASC. Este archivo luego es procesado por
medio de la clase XpressSolutionReader, la cual da la informacion que es necesaria
para visualizar por medio de la consola de JAVA.
Finalmente, se construye la solucion del problema que consta de una sola regla
de decision, ya que nuestra polıtica es estacionaria, y de un valor por cada funcion
de valor en cada estado.
La regla de decision se obtiene recorriendo la respuesta proveniente de Xpress-
SolutionReader en la seccion de variables. Aquı se revisa que variable es mayor a 0
y dependiendo del estado y accion a que pertenezca la variable, se ajusta la regla
decision.
Para el valor de las funciones de valor se tienen dos posibilidades. La primera,
si el factor de descuento es menor a uno, se tendra que las variables duales de las
restricciones seran el respectivo valor para su estado correspondiente. La segunda, si
25
II.05(20)8
se tiene un valor de descuento igual a uno, en este caso se fijara para todos los estados
un valor de funcion igual a la variable dual de la restriccion de normalizacion. Este
valor se obtiene de la respuesta proveniente de XpressSolutionReader en la seccion
de restricciones.
A continuacion se muestra como es la jerarquıa de los solucionadores que hacen
uso de los archivos MPS, la lınea punteada significa que se esta haciendo uso de
objetos de las clases de donde proviene la lınea, las lıneas continuas son extensiones
de las clases de donde proviene la lınea.
Figura 2: Jerarquıa Solucionadores por medio de archivos MPS
3.2. Solucionador de MDP por medio de Xpress-BCL
Las clases LPBCLDiscountedSolver y LPBCLAverageSolver resuelven problemas
MDP descontado y promedio, respectivamente. Como se ha explicado antes, los pro-
blemas de optimizacion lineal para MDP descontado y promedio son parecidos, por
esto, la clase LPDiscountedSolver es hecha de forma que la clase LPAverageSolver
pueda usar objetos de la primera.
26
II.05(20)8
3.2.1. Implementacion
En esta seccion se explica la clase LPBLCDiscountedSolver debido a la anterior
explicacion. Donde el algoritmo que se muestra a continuacion muestra como es
generado el problema para ser optimizado por medio de las librerıas BCL.
Crear statesMap, es un mapa que tiene como key el estado y como value un
numero asociado al estado.
for all i ∈ S do
for all a ∈ A(i) do
funcion objetivo ← r(i, a)x(i, a)
for all j ∈ S(i, a) do
coeficiente = (i==j) ? 1.0 : 0.0 - p(j|i,a)
restriccion j = statesMap.get(j)
restriccion j ← coeficiente ∗ x(i, a)
end for
if discountFactor == 1.0 then
restriccion Normalizacion ← x(i, a)
end if
end for
end for
Despues de minimizar el problema se crea la solucion, esta consta de una regla
de decision y su valor de funcion de valor por cada estado. Para la regla de decision
se recorre la solucion del programa lineal, de manera que si la variable que pertenece
al estado s y accion a llega a ser mayor que cero, la regla de decision tendra que
para el estado s su accion sera a. Para el valor de la funcion de valor se ajusta de
manera que cada una tiene el valor dual de su respectiva restriccion, en caso que el
factor de descuento sea uno, se ajustara una funcion de valor igual al valor obtenido
de la minimizacion del problema para todas los estados.
La jerarquıa de los solucionadores que hacen uso de las librerıas BCL se muestra
a continuacion, donde la lınea punteada significa que se esta haciendo uso de objetos
de las clases de donde proviene la lınea, las lıneas continuas son extensiones de las
27
II.05(20)8
clases de donde proviene la lınea.
Figura 3: Jerarquıa Solucionadores por medio de librerıas BCL
28
II.05(20)8
Capıtulo IV
Resultados y Conclusiones
Los resultados de los solucionadores de programacion lineal llegaron a ser los
mismos que los solucionadores que utilizan los algoritmos de Value Iteration y Policy
Iteration. Aunque se querıa tener una comparacion con el algoritmo de Relative
Value Iteration, no fue posible ya que la implementacion no habıa sido finalizada en
el paquete de JMDP, por esto en la tabla 6 se muestra solo los resultados para el
problema de control de produccion planteado dentro del paquete de JMDP, con una
tasa de interes de 10% y un maximo de 5 items en la bodega.
Value Iteration Solver Policy Iteration SolverIn every stage do: In every stage do:STATE ——> ACTION STATE ——> ACTIONLEVEL 0 ——> ORDER 5 UNITS LEVEL 0 ——> ORDER 5 UNITSLEVEL 1 ——> ORDER 4 UNITS LEVEL 1 ——> ORDER 4 UNITSLEVEL 2 ——> ORDER 3 UNITS LEVEL 2 ——> ORDER 3 UNITSLEVEL 3 ——> ORDER 0 UNITS LEVEL 3 ——> ORDER 0 UNITSLEVEL 4 ——> ORDER 0 UNITS LEVEL 4 ——> ORDER 0 UNITSLEVEL 5 ——> ORDER 0 UNITS LEVEL 5 ——> ORDER 0 UNITSValue Function: Value Function:LEVEL 0 : -16856,77 LEVEL 0 : -16856,77LEVEL 1 : -17176,77 LEVEL 1 : -17176,77LEVEL 2 : -17496,77 LEVEL 2 : -17496,77LEVEL 3 : -17837,93 LEVEL 3 : -17837,93LEVEL 4 : -18456,95 LEVEL 4 : -18456,95LEVEL 5 : -18956,77 LEVEL 5 : -18956,77Programacion Lineal con BCL Programacion Lineal con MPSIn every stage do: In every stage do:STATE ——> ACTION STATE ——> ACTIONLEVEL 0 ——> ORDER 5 UNITS LEVEL 0 ——> ORDER 5 UNITSLEVEL 1 ——> ORDER 4 UNITS LEVEL 1 ——> ORDER 4 UNITSLEVEL 2 ——> ORDER 3 UNITS LEVEL 2 ——> ORDER 3 UNITSLEVEL 3 ——> ORDER 0 UNITS LEVEL 3 ——> ORDER 0 UNITSLEVEL 4 ——> ORDER 0 UNITS LEVEL 4 ——> ORDER 0 UNITSLEVEL 5 ——> ORDER 0 UNITS LEVEL 5 ——> ORDER 0 UNITSValue Function: Value Function:LEVEL 0 : -16856,77 LEVEL 0 : -16856,78LEVEL 1 : -17176,77 LEVEL 1 : -17176,78LEVEL 2 : -17496,77 LEVEL 2 : -17496,78LEVEL 3 : -17837,93 LEVEL 3 : -17837,93LEVEL 4 : -18456,95 LEVEL 4 : -18456,95LEVEL 5 : -18956,77 LEVEL 5 : -18956,78
Tabla 6: Comparacion de Resultados
A pesar que los resultados son los mismos, se pueden hacer comparaciones de
29
II.05(20)8
eficiencia computacional entre los solucionadores y ver que solucionador es mejor,
ya que todos tienen misma respuesta.
Las comparaciones se realizaran con: ValueIterationSolver y Error Bounds acti-
vado, LPDiscountedSolver y MPSXpressDiscountedSolver. Donde el tiempo esta en
el eje y y es transformado a logaritmo en base 10.
Tiempo de Ejecución Solvers
01234567
0 100 200 300 400
Estados
log10
(t)_ ValueIterationSolver
LPBCLDiscountedSolver
MPSXpressSolver
Figura 4: Tiempo total de Ejecucion
A continuacion se muestra los porcentajes en relacion con el tiempo total de
ejecucion del solucionador para cada una de las tareas que se realizan en los solu-
cionadores de programacion lineal.
Porcentaje de tiempo de construccion Programa Lineal
0.00%
20.00%
40.00%
60.00%
80.00%
100.00%
120.00%
0 50 100 150 200 250 300 350
Estados
LPDiscountedSolver
MPSXpressSolver
Figura 5: Porcentaje de tiempo para el planteamiento del programa lineal
Los anteriores solucionadores brindan otra posibilidad de solucion de problemas
de decision de Markov y son mas eficientes computacionalmente que Value Iteration
con error bounds activado. A pesar que la generacion de archivos MPS toma un
30
II.05(20)8
Porcentaje de tiempo para solución del problema
0.00%
10.00%
20.00%
30.00%
40.00%
50.00%
0 100 200 300 400Estados
LPDiscountedSolver
MPSXpressSolver
Figura 6: Porcentaje de tiempo para hallar la solucion del programa lineal
Porcentaje de tiempo en construir la solución
-2.00%
0.00%
2.00%
4.00%
6.00%
8.00%
10.00%
12.00%
0 50 100 150 200 250 300 350
Estados
LPDiscountedSolver
MPSXpressSolver
Figura 7: Porcentaje de tiempo para construir la solucion del MDP
tiempo considerable, se ve que ese tiempo es corto al compararse con el solucionador
de Value Iteration.
Tambien se puede observar que la mayor parte de tiempo que se toma con los
solucionadores de programacion lineal, es el tiempo en armar el programa lineal a
ser optimizado, porque el tiempo de solucion del programa lineal y escritura de la
solucion del MDP, es relativamente corto.
Otra aspecto importante es que el solucionador planteado por medio de archivos
MPS es un ejemplo de como puede ser utilizado estos archivos para la produccion
de una solucion por medio de XpressMP. Por esto, si se llegara a tener otro software
diferente a XpressMP, el usuario podrıa plantear otro solucionador, donde la funcion
de este seria pasar el archivo MPS al software y luego procesar la respuesta del
31
II.05(20)8
programa de lineal, para producir la solucion que es requerida por el paquete JMDP.
Para futuros trabajos en este tema, serıa bueno implementar el programa lineal
primal del MDP y ver en que casos es mas rapido plantearse el primal y dar so-
lucion, ya que puede suceder que existan casos que se tenga una mayor eficiencia
computacional.
Otro aporte que se podrıa hacer es quitar una restriccion en el programa para
el caso promedio la cual no sea la de normalizacion, ya que una de estas es siempre
redundante, esto se haria debido a que si no se tiene probabilidades que sumen uno,
Xpress-Optimizer no podrıa encontrar que renglon que es redundante dando como
consecuencia incosistencias.
32
II.05(20)8
Apendice A
User’s Manual
A.1. Solvers with Xpress-BCL libraries
The public class LPBCLDiscountedSolver and public class LPBCLAverageSolver
are designed to solve only infinite horizon, discounted and average problems. This
is restricted in the arguments of its constructor, that only receives DTMDP<S, A>
objects as an argument. The interest rate is valid only for discounted problems, thus
LPBCLDiscountedSolver allows the interest rate to be used as a parameter which
is modified to become a discount factor (λ = (1 + ρ)−1).
Constructors:
public LPBCLDiscountedSolver(DTMDP<S, A> problem, double interestRate)
public LPBCLAverageSolver(DTMDP<S, A> problem)
A.1.1. Classpath Variable
A.1.1.1. Windows XP
Before you can use these classes you must define a classpath variable for the
project, if your OS is Windows XP, use the following instructions, else consult [11].
Control Panel > System > Advanced > Environment Variables
In System variables > New
Variable Name : CLASSPATH
33
II.05(20)8
Variable Value : The path where is xprb.jar into the folder lib tied to JMarkov
project, for example :
C:\JAVA\JMarkov\lib\xprb.jar
A.1.1.2. Eclipse 3.1
The following explanation is based on Eclipse 3.1.
step 1: Alt + Enter, or right click on the project, then properties.
Figura 8: Step 1 Classpath Variable
step 2: Add Variable, Configure Variables
step 3: New, Name: XPRB HOME, Path: search xprb.jar in lib folder, for
example c:/My Documents/Java/JMarkov/lib/xprb.jar.
step 4: Select XPRB HOME from New Variable Classpath Entry menu
A.1.2. Using Solvers
Once the problem is defined as discounted, you have to instantiate an object of
type LPBCLDiscountedSolver. If average, you instantiate a LPBCLAverageSolver
object.
34
II.05(20)8
Figura 9: Step 2 Classpath Variable
Figura 10: Step 3 Classpath Variable
Solver<State , Action> solverLP = new
LPBCLDiscountedSolver<State , Action >(problem , i n t e r e s tRa t e ) ;
So lver<State , Action> solverLP = new
LPBCLAverageSolver<State , Action >(problem ) ;
Then you have to import the corresponding library. If you use the discoun-
ted solver, import jmdp.solvers.LPBCLDiscountedSolver, else import jmdp.solvers.
LPBCLAveragedSolver.
A.2. Solvers with MPS archives
If the user doesn’t have XpressMP, he could use the MPS files that could be
generated using the MPSBuilder interface, then the files generated could be use by
other lineal program software to solve the MDP problem.
35
II.05(20)8
Figura 11: Step 4 Classpath Variable
There are two classes included into the MPSBuilder interface one for discounted
MDP and the other for average MDP , the following constructors are used depending
the problem you have and they assume that you want to save the file into a folder
tied to your project, labeled MPSFolder.
Discounted MDP.
public MPSBuilderDiscounted(DTMDP<S, A> problem, double interestRate)
Average MDP.
public MPSBuilderAverage(DTMDP<S, A> problem)
If the user have the XpressMP professional version, he could use the following sol-
vers. The public class MPSXpressDiscounted and public class MPSXpressAverage
solve the same problems as above solvers. However, its constructors could differ if
the user defines the path where he wants the MPS archive will be saved and read,
but the default constructor defines that this archive will be saved and read in a
folder that is tied to your project, its name is MPSFolder.
Default Constructors:
public MPSXpressDiscounted(DTMDP<S, A> problem, double interestRate)
public MPSXpressAverage(DTMDP<S, A> problem)
36
II.05(20)8
A.2.1. Using Solvers
Once the problem is defined as discounted, you have to instantiate an object
of type MPSXpressDiscounted. If average, you instantiate a MPSXpressAverage
object.
So lver<State , Action> solverMPS = new
MPSXpressDiscounted<State , Action >(problem , i n t e r e s tRa t e ) ;
So lver<State , Action> solverMPS = new
MPSXpressAverage<State , Action >(problem ) ;
Then you have to import the corresponding library. If you use the discounted sol-
ver, import jmdpExamples.solvers.MPSXpressDiscounted, else import jmdpExam-
ples.solvers.MPSXpressAverage.
37
II.05(20)8
Referencias
[1] Dash Optimization, Xpress-BCL, Release 2.6, 2005,http://www.dashoptimization.com.
[2] Dash Optimization, Xpress-Optimizer, Release 16, 2005,http://www.dashoptimization.com/.
[3] Mokhtar S. Bazaraa. Programacion Lineal y Flujo en Redes. Limusa NoriegaEditores, Mexico, 1999.
[4] Dimitri Bertsekas. Dynamic Programming and Optimal Control. Athena Scien-tific, Belmont, Massachusetts, 1995.
[5] D. Blackwell. Annals of Mathematical Statistics, 33, chapter Discrete DynamicProgramming, pages 719–726. 1962.
[6] Lindo Systems Inc. LINDO System’s index page, 2004.
[7] Bruce Murtagh. Advanced Linear Programming: Computation and Practice.McGraw-Hill International Book Co, 1981.
[8] Martin L. Puterman. Handbooks in Operations Research and ManagementScience, volume 2, chapter Markov Decision Processes, pages 331–434. ElsevierScience Publishers, Amsterdam, 1990.
[9] Andres Sarmiento. Implementacion algorıtmica de mdp. Technical report,Universidad de los Andes, 2005.
[10] Shaler Stidham Jr. 9: Optimal control of markov chains. In Winfried K. Grass-man, editor, Computational Probability. Kluwer’s International Series in Ope-rations Research and Management Science, Massachusetts, USA, 2000.
[11] Sun Microsystems. The Java Tutorial, 2004.
38