Upload
others
View
4
Download
1
Embed Size (px)
Citation preview
Taller MATLABSesión 3
Enrique Ide Carvallo
¿Qué vamos a ver hoy?¿Qué vamos a ver hoy? Repasar Funciones Optimización Numérica Optimización Numérica Idea Conceptual Optimización Librep Optimización con restricciones Opciones Introduciendo Parámetros
Repaso FuncionesRepaso Funciones Tremendamente útil!!!! Usualmente Ahorra Tiempo Usualmente Ahorra Tiempo Clave para Optimización Numérica (próx. sesión)
La idea: diseñar un programa, una función, personalizada que continuamente requeriremos
M file separado, guardado misma carpeta del ‘ t ’‘proyecto’
Repaso FuncionesRepaso Funciones Sintaxis Basica
function [out1 out2 ] = nombre(in1 in2 )function [out1,out2,…] nombre(in1,in2,…)(Programa de Función)
endNote que es sin ‘ ; ‘
Debe coincidir con el nombre que se le da al m file
Después, la ‘invocamos’ así: [a,b,…] = nombres(x1,x2,….)
Repaso FuncionesRepaso Funciones Ej. 1function [beta] = OLS(x y)function [beta] = OLS(x,y)beta = (x'*x)\(x'*y);disp('La matriz de estimadores OLS es: ')disp(beta)
Ej. 2
end
Ej. 2function [mean,stdev] = stat(x) n = length(x); mean = sum(x)/n;mean = sum(x)/n;stdev = sqrt(sum((x-mean).^2/n));end
Optimización NuméricaOptimización Numérica
Desde mi punto de vista (quizás junto con los Desde mi punto de vista (quizás junto con los gráficos), el gran valor agregado de MATLAB. Traten de optimizar numéricamente en GAUSS!!!!! (Idem
con los gráficos en todo caso)
Optimización NuméricaOptimización Numérica Idea Conceptual: Tenemos una función (tanto el concepto! Como el Tenemos una función (tanto el concepto! Como el
MATLAB!) que queremos optimizar, sin utilizar métodos tradicionales (i.e. derivar e igualar a 0)L id La idea es: Partir de un determinado punto y evaluar la función. Ver si en un vecindario puedo “mejorar” (aumentar o disminuir p j (
su valor). Si la respuesta es afirmativa, me “muevo” hacia allá y repito
(itero) los pasos 1 y 2. Si la respuesta es negativa, hemos ( ) p y p gencontrado nuestro óptimo local.
Optimización NuméricaOptimización Numérica Implícitamente detrás de la idea anterior es la existencia de
una función “real-valorada”:f: Rn -> R
M ibl t últi l t t ( j l Me parece que es posible tener múltiples targets (por ejemplo en una calibración).
Hoy sin embargo, nos concentraremos solo en el caso en que f entrega un único valor (es mas intuitivo y [algo] más prístino el algoritmo después se verá por qué)el algoritmo, después se verá por qué)
Veremos algoritmos de minimización (nota min f = max –f )
Optimización Numérica - LibreOptimización Numérica Libre Optimización Libre
x = fminsearch(@fun x0)x = fminsearch(@fun,x0)
Donde ‘fun’ es la función a evaluar y x0 el puntoDonde fun es la función a evaluar, y x0 el punto inicial.
Ej. Minimicemos numéricamente f(x) = x2
function [y]=cuad(x)function [y] cuad(x)y = x^2;end
x = fminsearch(@cuad,100)
x = 0
Optimización Numérica - LibreOptimización Numérica Libre Otro ejemplo: Maximicemos: Maximicemos:
Suponiendo que A=100, α 0.3 y r 3
K=26 83 aproxK=26.83 aprox.Π 187.79 aprox.
Optimización Numérica - LibreOptimización Numérica Librefunction [y] = profit(K)A=100;
l h 0 3alpha=0.3;r=3;y=-(A*K^(alpha)-r*K);end
Optimización Numérica - LibreOptimización Numérica Libre Notas: Hasta el momento hemos optimizado solo funciones de Hasta el momento hemos optimizado solo funciones de
R->R. Obviamente esto es extensible a funciones con dominio Rn. Lo único que hay que tener cuidado es que x0 debe ser un vector de nx1x0 debe ser un vector de nx1
Fminsearch tiene variadas opciones Por ejemplo: Fminsearch tiene variadas opciones. Por ejemplo:[x,fval] = fminsearch(@fun,x0)
Luego MATLAB me entregará automaticamente el valor que minimiza la función (o sea x*) y el valor que tomó la función en el óptimoen el óptimo
Optimización Numérica - LibreOptimización Numérica LibreLa sintaxis mas completa posible sería algo así como:[x,fval,exitflag,output] = fminsearch(@fun,x0,options)[x,fval,exitflag,output] fminsearch(@fun,x0,options)
Donde options son las opciones (algoritmo, número max. De iteraciones, etc. [luego veremos como fijarlas])
exitflag una variable indicador que indica por qué paró laexitflag una variable indicador que indica por qué paró la iteración (por. Ej. podemos haber convergido, o haber alncanzado el max de iteraciones especificadas, etc.)
Output, una variable que arroja un resumen de la estructura de la optimización VER HELPde la optimización. VER HELP
Optimización Numérica - RestringidaOptimización Numérica Restringida Optimización Restringida
[x fval exitflag output lambda grad hessian] =[x,fval,exitflag,output,lambda,grad,hessian] = fmincon(@fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
!!!!!!!!!!!!!
Hartas Opciones…. Veámoslas por parte
Optimización Numérica - RestringidaOptimización Numérica Restringida Vamos al lado derecho: La clave para entender esta sintaxis es que las p q
restricciones usualmente se introducen de a pares:
{A b} -> restricciones de desigualdad lineales DE LA {A,b} -> restricciones de desigualdad lineales DE LA FORMA: A*x t i i d i ld d li l {Aeq,beq} -> restricciones de igualdad lineales: Aeq*x=beq
{lb,ub} -> fijan los ‘lower’ y ‘upper’ bounds que pueden tomar las variables independientes. Por ejemplo si el dominio son los reales: lb
Optimización Numérica - RestringidaOptimización Numérica Restringida {nonlcon} -> fijan restricciones no-lineales de la forma
c(x) opciones varias (de ahí las veremos) {options} -> opciones varias (de ahí las veremos)
El lado izq Por otro lado: El lado izq. Por otro lado: Tenemos lo mismo que en fminsearch y ademas
{lambda,grad,hessian} que corresponden a los lti li d d l l di t l h imultiplicadores de lagrange, el gradiente y el hessiano en
el óptimo.
Optimización Numérica - RestringidaOptimización Numérica Restringida Notas: Obviamente que las matrices que fijan las restricciones Obviamente que las matrices que fijan las restricciones
han de cumplir con reglas de conformidad y ser coherentes con el dominio de la función cuando corresponda Lo mismo va para x0 el punto inicialcorresponda. Lo mismo va para x0, el punto inicial.
Si queremos utilizar solo una de las opciones, pero esta q p , pestá más alla de varias, debemos rellenar con []. Por ejemplo, queremos imponerle solo que lb
Optimización Numérica - RestringidaOptimización Numérica Restringida Ejemplo 1: Resolvamos Resolvamos
S b l tSabemos que la respuesta es
Optimización Numérica - RestringidaOptimización Numérica Restringidafunction [u] = utilidad(x)alpha=0.5;beta=0.5;x1 = x(1,1);x2 = x(2,1);
u=-((x1)^(alpha))*((x2)^(beta));
end
Optimización Numérica - RestringidaOptimización Numérica Restringida Ejemplo 2: Resolvamos Resolvamos
Sabemos que la respuesta es
Optimización Numérica - RestringidaOptimización Numérica Restringida
function [u] = fun(x)
u=-x^(2);
end
Optimización Numérica - RestringidaOptimización Numérica Restringida Del ejemplo anterior: dos moralejas
1 El punto de partida importa!1. El punto de partida importa! o Como en la práctica no sabemos el resultado de la
optimización siempre es buena idea darse dos o mas ptos de partida y ver que tan sensibles son los resultadospartida y ver que tan sensibles son los resultados
2. El 0 nunca es buen pto de partida.o Usualmente tenemos que, o el 0 es solución trivial al
problema (por ejemplo en muchos sistemas de ecuaciones diferenciales no lineales). O el vecindario del 0 tiene mucha i i l l ti i d l d élinercia, por lo que el optimizador no sale de él.
Optimización Numérica - RestringidaOptimización Numérica Restringida Non-linear constraints ¿Cómo introducir restricciones no lineales a nuestra
optimización
-> Necesitamos crear una función auxiliar que me genere la restricción, y luego “llamarla” desde la optimización.
[x,fval] = fmincon(@fun,x0,A,b,Aeq,beq,lb,ub,@mycon,options)
Donde, Note el orden: primero desigualdad y luego igualdad
function [c,ceq] = mycon(x) c = ... % Restricciones no-lineales en desigualdad para x. ceq = ... % Restricciones no-lineales de igualdad para x.
gua dad
Optimización Numérica - RestringidaOptimización Numérica Restringida Ejemplo 5 – Nonlinear constraints: Resolvamos Resolvamos
S b l tSabemos que la respuesta es
Optimización Numérica - RestringidaOptimización Numérica Restringidafunction [u] = utilidad(x)alpha=0.5;beta=0.5;
function [c,ceq] = rest(x)a= x(1,1);b = x(2,1);
x1 = x(1,1);x2 = x(2,1);
u=-((x1)^(alpha))*((x2)^(beta));
c = [];ceq= 10*(a^0.5)+5*(b^0.5) -3;
endend
end
OpcionesOpciones Solo veremos una: como cambiar de algoritmo (para
el resto ver el HELP)el resto ver el HELP)
La sintaxis básicamente es
Note que se invoca en el archivo principal y antes de la optimización. La función es un panimal completamente aparte.
OpcionesOpciones Algunos algoritmos con fmincon: “Simplex Search” (el default) Simplex Search (el default) “Interior-Point” “sqp” Etc.
Como los optimizadores son en realidad unas “cajas negras”, siempre es buena idea testear que tan sensibles son los resultados a distintos algoritmossensibles son los resultados a distintos algoritmos
OpcionesOpciones Ejemplo: en el ejemplo 5, impusimos que el
algoritmo fuese ‘sqp’. ¿Qué sucede si lo cambiamos,algoritmo fuese sqp . ¿Qué sucede si lo cambiamos, por ej. a ‘interior-point’?
OpcionesOpciones
Introduciendo Parámetros ExtraIntroduciendo Parámetros Extra Volvamos al ejemplo
Pero suponga que a Ud. le interesa saber como cambia el óptimo al variar los exponentes de la función de p putilidad.
Obviamente, no es practico generar una función para cada posible exponentecada posible exponente.
La idea será entonces evaluar en un determinado exponente y luego optimizar. ¿Cómo se puede hacer aquello?aquello?
Introduciendo Parámetros ExtraIntroduciendo Parámetros Extra Paso 1: La función a optimizar debe quedar
dependiendo de las variables de elección y losdependiendo de las variables de elección y los parámetros:
Introduciendo Parámetros ExtraIntroduciendo Parámetros Extra Paso 2: En nuestro m-file, evaluamos entonces la
función en el parámetro que queremos:función en el parámetro que queremos:
Luego Optimizamos:g p
Note que ya no va el @Luego podemos utilizar loops para repetir el procedimientop
Introduciendo Parámetros ExtraIntroduciendo Parámetros Extra Otro ejemplo:
Pero deseamos ver como cambia el óptimo ante Pero deseamos ver como cambia el óptimo ante cambio en los precios
Introduciendo Parámetros ExtraIntroduciendo Parámetros Extra La restriccion la reescribimos:
Introduciendo Parámetros ExtraIntroduciendo Parámetros Extra Y en el m-file primero evaluamos la restricción:
Y luego optimizamos: Y luego optimizamos:
Aquí volvió el @, ya que no la
En cambio, aquí desapareció el @ya que no la
hemos evaluadop @