Solucionadores de Programaci¶on Lineal para JMDP

44
Solucionadores de Programaci´on Lineal para JMDP Trabajo de Tesis presentado al Departamento de Ingenier´ ıa Industrial por Diego Mauricio Bello Garc´ ıa Asesor: Germ´an Ria˜ no, Ph.D. Para optar al t´ ıtulo de Ingeniero Industrial Ingenier´ ıa Industrial Universidad de Los Andes Febrero 2006

Transcript of Solucionadores de Programaci¶on Lineal para JMDP

Page 1: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 2: Solucionadores de Programaci¶on Lineal para JMDP

Solucionadores de Programacion Lineal para

JMDP

Aprobado por:

Andres Medaglia, Ph.D., Jurado

German Riano, Ph.D., Asesor

Fecha de Aprobacion

Page 3: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 4: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 5: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 6: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 7: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 8: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 9: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 10: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 11: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 12: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 13: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 14: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 15: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 16: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 17: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 18: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 19: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 20: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 21: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 22: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 23: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 24: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 25: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 26: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 27: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 28: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 29: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 30: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 31: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 32: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 33: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 34: Solucionadores de Programaci¶on Lineal para JMDP

II.05(20)8

clases de donde proviene la lınea.

Figura 3: Jerarquıa Solucionadores por medio de librerıas BCL

28

Page 35: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 36: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 37: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 38: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 39: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 40: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 41: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 42: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 43: Solucionadores de Programaci¶on Lineal para JMDP

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

Page 44: Solucionadores de Programaci¶on Lineal para JMDP

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