Facultad de Ciencias Económicas

Optimización y programación en Matlab

Etiquetas: , , , , , ,

En el presente proyecto de estudio aprenderás las bases de la programación en Matlab, para poder llegar a entender el uso de este software para la optimización estática y dinámica en economía.

 ¿Cómo programar en MATLAB?

El lenguaje m de MATLAB es de alto nivel y se encuentra orientado a objetos. Esto quiere decir que se pueden utilizar todas las herramientas tradicionales de la programación para construir diferentes estructuras funcionales. Además, existen funciones ya construidas que facilitan el uso de MATLAB, reduciendo una gran serie de problemas al uso de comandos. Así, el aprendizaje de la sintaxis del lenguaje m es relativamente sencillo.

En esta sección se presentan desde los operadores lógicos, pasando por variables, vectores, matrices, gráficas y concluyendo con funciones.

Fundamentos en optimización estática

La optimización estática es un conjunto de métodos análiticos y numéricos que buscan encontrar el mejor valor para una o varias variables, de tal forma que estos generen un valor óptimo en un problema. El valor óptimo será aquel que resuelva el problema de optimización, que en economía, generalmente, es un problema de decisión. 

En Matlab existen varias rutinas que, por medio de métodos numéricos, optimizan una función. Entre ellos encontramos: 

  1. fminbnd: Rutina que encuentra el mínimo de una función en una variable por medio de  un proceso de optimización no restringida. fminbnd toma principalmente tres argumentos: fx, X1 y X2. El primero se refiere a la función que se quiere optimizar, mientras X1  y  X2 son constantes que forman un intervalo sobre el cual se optimiza. Así, fminbnd devuelve un argumento minimizador  X tal que X1<  X < X2.
  2. fminsearch: Rutina que calcula el mínimo de una función de varias variables sin restricciones. Su forma funcional es similar a la de fminbnd. 
  3. fmincon: Rutina que haya los argumentos minimizadores de una función en varias variables sujeta a unas restricciones de la forma AX =< b. Donde A es una matriz de coeficientes, x un vector de variables y b un vector de constantes

Fundamentos en optimización dinámica

Matlab posee múltiples rutinas para resolver ODES, entre ellas se encuentran ode45 y ode23tb. Ode45 es un método de solución de ecuaciones diferenciales ordinarias y su sintaxis es:

[t,x]=ode45(@función,tinit,xinit)

Donde @función es la función que contiene la ecuación diferencial a resolver, tinit es el intervalo de tiempo sobre el que se resuelve la ecuación y xinit es un vector que actúa como condiciones iniciales para el problema.  Las salidas t y x corresponden, respectivamente, a los valores del tiempo y la solución de la función. Es importante recordar que la solución de una ecuación diferencial es una función del tiempo, es decir, una trayectoria tal que para cada valor de t, existe un valor de la función. Con el fin de configurar más salidas, es posible usar options. Options es configurada por medio del comando odeset, que genera salidas tales como la jacobiana, gráficos y estadísticas. Un ejemplo de esto es:

options=odeset('outputfcn','odeplot')
[t,x]=ode45(@función,tinit,xinit, options)

Options hará que se arroje un gráfico de la solución al problema.  Las opciones son muy amplias y la explicación sobre ellas en la página oficial de Matlab es detallada, por lo que no resulta útil resumirlas aquí.

Diagramas de fase:

Para realizar un diagrama de fase de un sistema de ecuaciones diferenciales ordinarias, basta con realizar un ciclo que genere y grafique las soluciones del sistema para una serie de condiciones iniciales. Así, se observa si las soluciones convergen, divergen o son del tipo lyapunov, lo que permite hacer el análisis cualitativo del sistema.  Dado esto, basta con modificar la anterior línea de script de la siguiente forma:

Programación dinámica

Con el fin de conocer cómo se resuelve un problema de programación dinámica en Matlab, se seguirá la metodología planteada por Seguí, M (sin fecha), quien resume cómo hacer uso de métodos numéricos para la solución de diferentes problemas de optimización. Entre ellos, el planteamiento de la ecuación de Bellman y el uso de Matlab para solucionar el problema del planificador social. A continuación, se encuentra una breve descripción de la ecuación de Bellman, también llamada la ecuación de la programación dinámica. 

La ecuación de Bellman y los modelos dinámicos

Un modelo dinámico es tal que se encuentra representado por la siguiente estructura de un problema de optimización:

Donde f es la función objetivo que depende de una variable de estado x, que representa como cambia el problema a través del tiempo; una variable de control u , que es la variable de decisión, y el tiempo t. Por su parte, beta es una tasa de redescuento, que trae a valor presente los valores de la función en el tiempo k. La sumatoria se usa  para tomar todos los periodos de tiempo en el problema y, como el problema es discreto, es una sumatoria y no una integral. Por último, la primera restricción muestra cómo cambia el estado y la segunda es una condición inicial para el problema. Note que beta debe ser menor a uno para que haya convergencia. 

La solución a este problema está dada por una función valor. La función valor V(x0) es el valor máximo del problema anteriormente planteado. Como se puede apreciar, el problema está expresado en infinitos tiempos, lo que hace que resolver el problema sea muy complicado. Por esto, Bellman introdujo una condición necesaria que simplifica el problema a uno de dos tiempos. 

Esta ecuación quiere decir que, si existe una trayectoria óptima para la solución del problema y se ha elegido esta, no importa desde dónde se solucione el problema, la trayectoria óptima sigue siendo la misma. En otras palabras, como indica Palomino, P(2014): “Una política óptima tiene la propiedad de que, cualesquiera sean el estado y las decisiones iniciales tomadas, las restantes decisiones deben constituir una política óptima con independencia del estado resultante de la primera decisión”. Basándose en esto, Bellman reduce el problema a través de una definición recursiva de la función valor. Ahora basta con optimizar la ecuación de Bellman para el problema que se posea para llegar a una solución, que será una función en el tiempo, la cual indica la decisión a tomar en cada momento t.

Créditos y Referencias

Bibliografía



Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *