taller matlab 3 - carlos rojas quiroz...microsoft powerpoint - taller matlab 3 author: enrique...

35
Taller MATLAB Sesión 3 Enrique Ide Carvallo

Upload: others

Post on 06-Feb-2021

4 views

Category:

Documents


1 download

TRANSCRIPT

  • 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 @