program lineal matlab

Upload: jose125

Post on 01-Mar-2018

230 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/25/2019 Program Lineal Matlab

    1/27

    Reporte de Investigacin

    2007-09

    Optimizacin de Funciones Lineales conRestricciones en MATLABTM:

    Teora y Ejemplos

    Responsables: William MarchenaCarlos Ornelas

    Supervisor: Francisco M. Gonzlez-Longatt

    Lnea de Investigacin:

    Fuentes Alternas de EnergaY

    Generacin Distribuida

    27-Feb-2007

  • 7/25/2019 Program Lineal Matlab

    2/27

    Optimizacin de Funciones Lineales con Restricciones en MATLABTM: Teora y Ejemplos

    W. Marchena, C Ornelas. F. Gonzalez-Longatt, Febrero 2007 REPORTE 2007-09

    2

    Soloparaserempleadoconobjetivodeevaluacin,oacadmicos.Proh

    ibidolareproduccintotaloparciald

    eestedocumentosinconsentimientod

    elosautores.Optimizacin en MATLABTM

    La caja de herramientas de optimizacin o denominado Toolbox extiende la capacidad de MATLAB,

    acercndolo a un ambiente numrico computacional. Toolboxincluye rutinas de muchos tipos, incluyendo

    la optimizacin [1]:

    Minimizacin no lineal sin restricciones.

    Minimizacin no lineal con restricciones, problemas de minimizar y maximizar, y problemas deminimizacin semi-infinitos.

    Programacin cuadrtica y lineal. No lineal, mnimos cuadrados y curvas adecuadas. Solucin de ecuaciones de sistemas no lineales. Restricciones lineales de mnimos cuadrados. Problemas de larga escala.

    Funciones de OptimizacinTodas las funciones de la caja de herramientas son (m-files) de MATLAB, haciendo de MATLAB un

    instrumento especializado en algoritmos de optimizacin. Se puede ver de MATLAB los cdigos de las

    funciones usando la presentacin [1]:

    type function_name

    Se puede extender la capacidad de optimizacin de la caja de herramientas escribiendo sus propios m-files,o usando la caja de herramienta con otras cajas de herramientas, o con MATLAB o Simulink.

    Caja de Herramienta de Optimizacin GUILa herramienta de optimizacin (optimtool), es un GUI (Grafics Unit Interface), para seleccionar la

    solucin, especificando las opciones de optimizacin y los problemas corrientes. Se puede definir ymodificar los problemas rpidamente con GUI [1].

    Usando Funciones de OptimizacinAqu se describir como se deber realizar la utilizacin de cada una de estas funciones de optimizacin:

    Definicin de la Funcin ObjetivoMuchas de las funciones de optimizacin requieren que se cree una funcin de MATLAB que calcule la

    funcin objetivo. La funcin, en la entrada debe aceptar vectores, y retornar a la salida un escalar de tipo

    doble.

    Existen dos maneras de crear la funcin objetivo:

    1) Se crea una funcin annima en la lnea de comando. Por ejemplo, si se crea una funcin annima

    para x

    2

    , se coloca:

    squar e = @ [ ( x)] * x. 2;

    Y se llama a la funcin de optimizacin con el cuadrado del primer argumento de la entrada. Se puede usar

    este mtodo si la funcin objetivo es relativamente sencilla, y no requiera ser utilizada en una sesin futura

    de MATLAB.

    2) Si se escribe un M-file para la funcin, por ejemplo, para escribir la funcin x2como un m-file, se

    debe abrir un nuevo archivo en el editor MATLAB y se deber colocar el siguiente cdigo:

  • 7/25/2019 Program Lineal Matlab

    3/27

    Optimizacin de Funciones Lineales con Restricciones en MATLABTM: Teora y Ejemplos

    W. Marchena, C Ornelas. F. Gonzalez-Longatt, Febrero 2007 REPORTE 2007-09

    3

    Soloparaserempleadoconobjetivodeevaluacin,oacadmicos.Proh

    ibidolareproduccintotaloparciald

    eestedocumentosinconsentimientod

    elosautores.

    f unct i on y = squar e( x)y = x. 2;

    Se puede llamar la funcin de optimizacin con @ al cuadrado como el primer argumento de entrada. El

    signo @ crea una funcin manejable al cuadrado. Este mtodo se emplea si la funcin objetiva es

    complicada o si se sospecha que tal funcin ser utilizada en una prxima sesin de MATLAB.

    MaximizacinLas funciones de optimizacinfminbnd, fminsearch, fminunc, fmincon, fgoalattain, fminimax, lsqcurvefit, ylsqnonlin todas realizan la minimizacin de la funcin objetivo f(x). La maximizacin es alcanzada

    sustituyendo en las rutinas con f(x). Asimismo para alcanzar la maximizacin para quadprogse sustituye

    -H y -f, y para linprog-f [2].

    Restricciones Mayores que CeroLa Caja de herramientas de Optimizacin (Toolbox) asume que las restricciones de desigualdad no linealesson de la forma Ci(x)0. Las restricciones mayores que cero son expresadas como menores que cero

    multiplicndolas por -1. Por ejemplo, una restriccin de la forma C i(x)0 es equivalente a la restriccin

    (-Ci(x))0); una restriccin de la forma Ci(x)b es equivalente a la restriccin (-Ci(x) + b)0 [2].

    Maximizacin vs MinimizacinLa optimizacin funciona en la caja de herramienta minimizando la funcin objetivo. Para maximizar la

    funcinf se aplica una optimizacin para minimizar la funcin -f. El punto resultante donde el mximo focurre tambin es el punto donde el mnimo de -focurre.

    Problemas Cubiertos por la Caja de HerramientasLas siguientes tablas muestran las funciones disponibles para la minimizacin y maximizacin de lasfunciones a utilizar en este trabajo especial de grado, donde la funcin objetivo es una ecuacin lineal con

    restricciones lineales o no lineales de desigualdad.

    Tabla 1. Tabla representativa de las funciones disponibles para la minimizacin y maximizacin de

    las funciones a utilizar en este trabajo especial de gradoTipo Notacin Funcin

    Programacin linealxfT

    xmin tal que

    uxlbxAbAx eqeq = ,, Linprog

    Minimizacin de restricciones

    )(min xx

    f tal que

    0)(,0)( = xx ceqc

    uxlbeqAeq.xb,Ax =

    Fmincon

  • 7/25/2019 Program Lineal Matlab

    4/27

    Optimizacin de Funciones Lineales con Restricciones en MATLABTM: Teora y Ejemplos

    W. Marchena, C Ornelas. F. Gonzalez-Longatt, Febrero 2007 REPORTE 2007-09

    4

    Soloparaserempleadoconobjetivodeevaluacin,oacadmicos.Proh

    ibidolareproduccintotaloparciald

    eestedocumentosinconsentimientod

    elosautores.

    Linprog [1]

    PropsitoResolver problemas de programacin lineal.

    EcuacinEncuentra el mnimo de un problema especificado por:

    ubxlb

    bxA

    bAxxf

    eqeq

    T

    =

    quel tamin

    (1)

    Donde: f, x, b, beq, lb, yubson vectores y Ay Aeqson matrices

    Sintaxis

    x = l i npr og( f , A, b)x = l i npr og( f , A, b, Aeq, beq)x = l i npr og( f , A, b, Aeq, beq, l b, ub)x = l i npr og( f , A, b, Aeq, beq, l b, ub, x0)x = l i npr og( f , A, b, Aeq, beq, l b, ub, x0, opt i ons)[x , f val ] = l i nprog( . . . )[ x, l ambda, exi t f l ag] = l i nprog( . . . )[ x, l ambda, exi t f l ag, out put ] = l i nprog( . . . )[ x, f val , exi t f l ag, out put , l ambda] = l i nprog( . . . )

    DescripcinLinprog soluciona problemas de programacin lineal

    x = l i npr og( f , A, b) :solucionamin f'*xtales queA*xb

    x = l i npr og( f , A, b, Aeq, beq) : soluciona el problema descrito inicialmente (1), mientras queadems satisface la igualdad de las restricciones Aeq*x = beq. Se coloca A=[ ] y b=[ ] si no existen

    desigualdades

    x = l i npr og( f , A, b, Aeq, beq, l b, ub) : Se definen los limites inferior y superior sobre la variablede diseo en x,de modo que la solucin este siempre entre el rangolb x ub. Se coloaraAeq = [ ] y beq

    = [ ]si no existen igualdad.

    x = l i npr og( f , A, b, Aeq, beq, l b, ub, x0) :fija el punto de partida x0.Esta opcin esta solamentedisponible con el algoritmo a media escala (la opcin de Larga Escala, se fija a offusando optimizacin).

    El defecto del algoritmo a larga escala y del algoritmo simplex es que ignoran los puntos de partida.

    x = l i npr og( f , A, b, Aeq, beq, l b, ub, x0, opt i ons) : Reduce al mnimo con las opciones deoptimizacin especificadas en la estructura options. Se utiliza optimsetpara fijar estas opciones.

    [x , f val ] = l i nprog( . . . ) : Retorna el valor de la funcin objetivofunen la solucinx: fval = f'*x.

    [ x, l ambda, exi t f l ag] = l i nprog( . . . ) : devuelve un valorexitflagque describe la condicin desalida.

  • 7/25/2019 Program Lineal Matlab

    5/27

    Optimizacin de Funciones Lineales con Restricciones en MATLABTM: Teora y Ejemplos

    W. Marchena, C Ornelas. F. Gonzalez-Longatt, Febrero 2007 REPORTE 2007-09

    5

    Soloparaserempleadoconobjetivodeevaluacin,oacadmicos.Proh

    ibidolareproduccintotaloparciald

    eestedocumentosinconsentimientod

    elosautores.

    [ x, l ambda, exi t f l ag, out put ] = l i npr og( . . . ) :Devuelve una estructuraoutput que contieneinformacin acerca de la optimizacin.

    [ x, f val , exi t f l ag, out put , l ambda] = l i npr og( . . . ) : Devuelve una estructura lambdadonde contiene los campos de los multiplicadores de Lagrange en la solucin x. [1]

    Entrada de ArgumentosA continuacin se muestra una descripcin general de los argumentos pasados en linprog [1]:

    Tabla 2. Representativa de los argumentos de entrada para las funciones linprog y fmincon.

    Nombre de

    la entradaDescripcin Usada por las funciones:

    Aeq, beq

    La matriz Aeq y el vector beq son,

    respectivamente, los coeficiente de las restricciones

    de la inecuaciones lineales y al correspondiente allado derecho del vector: Aeq*x = beq

    fgoalattain, fmincon, fminimax,

    fseminf, linprog, lsqlin,

    quadprog

    f

    El vector de los coeficientes para el termino linealen la ecuacin lineal f*xo la ecuacin cuadrtica

    x*H*x+f*x.

    linprog, quadprog

    fun

    La funcin para optimizar. fun es una funcinmanipulada por una funcin m-file o por una

    funcin annima.

    fgoalattain, fmincon, fminimax,fseminf, fminbnd, fminsearch,

    fminunc, fsolve, fzero,

    lsqcurvefit, lsqnonlin

    Tabla 3. Representativa de los argumentos de entrada para las funciones linprog y fmincon

    (continuacin)

    Nombre de

    la entradaDescripcin Usada por las funciones:

    lb, ub

    Limites inferior y superior de vectores (o matrices).

    Los argumentos son normalmente del mismotamao que x. Sin embargo, si lb tiene menos

    elementos que x,entonces solo el primer elementode mes el lmite inferior. Los lmites superiores enubse pueden definir de la misma manera. Tambinse pueden especificar variables infinitas usandoinf

    (para los limites superiores). Por ejemplo si lb(i) = -inf,la variable x(i) es el limite inferior.

    fgoalattain, fmincon, fminimax,fseminf, linprog, lsqcurvefit,

    lsqlin, lsqnonlin, quadraprog

    Nonlcon

    La funcin que calcula las inecuaciones no lineales,

    las restricciones de ecuaciones e inecuaciones no

    lineales evitando variables globales va funcionesannimas y jerarquizadas

    fgoalattain, fmincon, fminimax

    A, b

    La matriz Ay el vector bson, respectivamente, los

    coeficientes de las restricciones lineales dedesigualdad y el vector correspondiente del lado

    derecho: Ax b

    fgoalattain, fmincon, fminimax,

    fseminf, linprog, lsqlin,

    quadprog

    OptionsUna estructura que define las opciones, se utiliza

    por las funciones de optimizacin.Todas las funciones

    x0

    Punto inicial (es un escalar, vector o matriz) (parafzero, x0 tambin puede ser dos elementos

    vectoriales representando un intervalo que es

    conocido para restricciones un cero)Todas las funciones excepto

    fminbnd

  • 7/25/2019 Program Lineal Matlab

    6/27

    Optimizacin de Funciones Lineales con Restricciones en MATLABTM: Teora y Ejemplos

    W. Marchena, C Ornelas. F. Gonzalez-Longatt, Febrero 2007 REPORTE 2007-09

    6

    Soloparaserempleadoconobjetivodeevaluacin,oacadmicos.Proh

    ibidolareproduccintotaloparciald

    eestedocumentosinconsentimientod

    elosautores.

    Argumentos de salidaA continuacin se muestra una descripcin general de los argumentos de salida [1]:

    Tabla 4. Representativa de los argumentos de salida de las funciones linprog y fmincon

    Nombre de

    la salidaDescripcin Usada por las funciones:

    exitflag

    Un nmero entero que identifica la razn en la que

    el algoritmo de optimizacin finalizo. Se puedeutilizar el exitflag como una herramienta de

    programacin al escribir m-files como calculo de

    optimizacin.

    A su vez puede mostrar un mensaje que indica

    porque una optimizacin finalizo, llamando la

    funcin de optimizacin con el argumento de salidaoutput y mostrando en pantalla output.message

    Todas las funciones

    fval

    La evaluacin de la funcin objetivo fun con la

    solucin x

    fgoalattaing, fminbnd, fmincon,

    fminimax, fminsearch, fminunc,

    fseminf, fsolve, fzero, linprog,

    quadprog

    output Una estructura de salida que contiene informacinacerca de los resultados de la optimizacin.

    Todas las funciones

    x

    La solucin encontrada por la optimizacin de lafuncin. Si exitflag> 0, entonces xes una solucin,

    si no, x es el valor de la optimizacin rutinaria

    cuando esta es terminada prematuramente.

    Todas las funciones

    Funcin exiflag, lambda y outputA continuacin se trataran detalles de las funciones especficas de exitflag Lambday output [1]:

    exitflag

    La funcin converge a una solucin x0 Numero de iteraciones excedidas options. MaxIter.

    -2 No se encontr ningn punto factible.

    -3 El problema es infinito.

    -4 El valor NaN fue encontrado durante la ejecucin del algoritmo.

    -5 Los problemas principales y duales son infactibles.-6 La direccin de la bsqueda llego a ser demasiado pequea. Ningn otro progreso puede ser

    hecho.

    lambdaLa estructura contiene los multiplicadores de Lagrange en la solucin x (separado por el tipo de

    restriccin). Los campos de la estructura son:lower: Limites inferiores lb

    upper:Limites superiores ubineqlin:desigualdades linealeseqlin:igualdades lineales

    outputEstructura que contiene la informacin sobre la optimizacin. Los campos de la estructura son:

    Algorithm:Algoritmo usadocgiterations: Nmero de iteraciones conjugadas del gradiente (solamente logaritmos de largaescala)

  • 7/25/2019 Program Lineal Matlab

    7/27

    Optimizacin de Funciones Lineales con Restricciones en MATLABTM: Teora y Ejemplos

    W. Marchena, C Ornelas. F. Gonzalez-Longatt, Febrero 2007 REPORTE 2007-09

    7

    Soloparaserempleadoconobjetivodeevaluacin,oacadmicos.Proh

    ibidolareproduccintotaloparciald

    eestedocumentosinconsentimientod

    elosautores.

    iterations:Numero de iteraciones

    message:Mensaje de salida

    OpcionesSon las opciones de optimizacin usadas por linprogAlgunas opciones se aplican a todos los algoritmos, yotras son solamente relevantes cuando se usa el algoritmo de larga escala. Se puede utilizar optimsetpara

    fijar o para cambiar los valores de estos campos en la estructura de opciones, options. A continuacin semuestran las opciones de optimizacin utilizadas por las funciones linprogyfmincon [1]:

    Tabla 4. Representativa de las opciones de los programas linprog y fmincon

    Nombre de la

    opcinDescripcin L, M, B

    Usado por las

    funciones:

    DiagnosticsDisplay muestra informacin acerca de la

    funcin a minimizarB

    Todas, exceptofmindbnd, fminsearch,

    fzeroy lsqnonneg

    DiffMaxChangeMximo cambio en variables para

    diferencias infinitasM

    fgoalattain, Fmincon,

    fminimax, fminunc,

    fseminf, fsolve,

    lsqcurvefit, lsqnonlin

    DiffMinChange Mnimo cambio en variables paradiferenciacin finita

    M

    Fgoalattaing,

    fmincon,fminimax,fminunc, fseminf, fsolve,

    lsqcurvefit, lsqnonlin

    Display

    Nivel del display en offel display no

    muestra la salida; iter. Muestra la salidaen cada iteracin; finalmuestra el final

    de la salida notifymuestra si la funcin

    no converge

    B Todas las funciones

    FunValCheck

    Comprueba si la funcin objetivo y los

    valores de restricciones son validos. on

    muestra un error cuando la funcinobjetivo o las restricciones devuelven un

    valor que es complex, NaN oInf.

    B

    fgoalattain, fminbnd,

    fmincon, fminimax,

    fminsearch, fminunc,

    fseminf, fsolve, fzero,

    lsqcurvefit, lsqnonlin

    LargeScaleUsa el algoritmo de larga escala si es

    posibleB

    fmincon, fminunc,fsolve, linprog,

    lsqcurvefit, lsqlin,

    lsqnonlin,quadraprog

    MaxFunEvalsMximo nmero de evaluaciones

    realizadas a la funcinB

    fgoalattain, fminbnd,

    fmincon, fminimax,

    fminsearch, fminunc,

    fseminf, fsolve,

    lsqcurvefit, lsqnonlin

    MaxIterMximo numero de iteraciones

    realizadasB

    Todas las funciones

    menosfzeroylsqnonneg

    MaxSQPIterMximo numero de iteraciones de

    programacin cuadrtica secuencial

    M Fmincon

    OutputFcnEspecifica una o mas usos definidos de

    las funciones que la funcin a optimizarvisita cada iteracin

    B

    fgoalattain, fminbnd,

    fmincon, fminimax,

    fminsearch, fminunc,

    fseminf, fsolve, fzero,

    lsqcurvefit y lsqnonlin

    PrecondBandWidth

    Amplitud de banda superior,

    preacondicionado para PCG, el ajuste deinfusa una factorizacin directa en

    lugar de CG

    L

    fmincon, fminunc,

    fsolve, lsqcurvefit,

    lsqlin, lsqnonlin,

    quadprog

  • 7/25/2019 Program Lineal Matlab

    8/27

    Optimizacin de Funciones Lineales con Restricciones en MATLABTM: Teora y Ejemplos

    W. Marchena, C Ornelas. F. Gonzalez-Longatt, Febrero 2007 REPORTE 2007-09

    8

    Soloparaserempleadoconobjetivodeevaluacin,oacadmicos.Proh

    ibidolareproduccintotaloparciald

    eestedocumentosinconsentimientod

    elosautores.

    Tabla 4. Representativa de las opciones de los programas linprog y fmincon (continuacin)

    Nombre de la opcin Descripcin L, M, BUsado por las

    funciones:

    RelLineSrchBnd Condicin de borde Mfgoalattain, fmincon,

    fminimax, fseminf

    RelLineSrchBndDuration

    Numero de iteraciones para el

    cual la condicin de bordeespecificada en

    RelLineSrchBnddebe ser

    activa

    M Fgoalattain, fmincon,fminimax, fseminf

    SimplexSi la funcin esta en, onlafuncin utiliza el algoritmo

    simplex.

    M Linprog

    TolFunTerminacin de la tolerancia

    en la funcin evaluadaB

    bintprog, fgoalattain,

    fmincon, fminimax,

    fminsearch, fminunc,

    fseminf, fsolve, linprog

    (L siempre), lsqcurvefit,

    lsqlin (L siempre)

    lsqnonlin, quadprog

    (Lsiempre)

    TolPCGTerminacin de la tolerancia

    en la iteracin PCGL

    fmincon, fminunc,

    fsolve, lsqcurvefit,

    lsqlin, lsqnonlin,

    quadprog

    TolxTerminacin de la tolerancia

    en xB

    Todas las funciones

    ecepto algoritmos de

    Media Escala paralinprog, lsqliny

    quadprog

    TypicalX

    Evaluacin xtpica. La

    longitud del vector es igual al

    numero de elementos de x0

    B

    fgoalattain, fmincon,

    fminunc, fsolve,

    lsqcurvefit, lsqlin,

    lsqnonlin, quadprog

    Algoritmos de Media y Larga EscalaEstas opciones son utilizadas por algoritmos de media y larga escala [1]:

    Diagnostics:Imprime la informacin de diagnostico sobre la funcin que se reducir.Display:Nivel de exhibicin, off: no se muestra ninguna salida. 'iter'muestra la salida de cada

    iteracin. 'final': se muestra la salida final. En este tiempo los trabajos con 'iter'se realizan conalgoritmos de larga escala y algoritmos simplex.

    MaxIter:Mximo nmero de iteraciones permitidas.

    nicamente Algoritmos de Media Escala

    Las siguientes opciones son utilizadas por el algoritmo a media escala:Simplex: Si la funcin esta en 'on', linprog utiliza el algoritmo simplex. El algoritmo simplex

    utiliza un punto de partida incorporado, sin considerar el punto de partida x0.

    nicamente algoritmos de larga escalaEstas opciones son utilizadas nicamente por el algoritmo de larga escala

    TolFun:Tolerancia del valor final de la funcin

  • 7/25/2019 Program Lineal Matlab

    9/27

    Optimizacin de Funciones Lineales con Restricciones en MATLABTM: Teora y Ejemplos

    W. Marchena, C Ornelas. F. Gonzalez-Longatt, Febrero 2007 REPORTE 2007-09

    9

    Soloparaserempleadoconobjetivodeevaluacin,oacadmicos.Proh

    ibidolareproduccintotaloparciald

    eestedocumentosinconsentimientod

    elosautores.

    Algoritmo

    Optimizacin a larga escalaEl mtodo de larga escala, se basa enLIPSOL(Solucin Lineal del Punto Interior)la cual es una variable

    del algoritmo Mehrotras predictor-corrector, un mtodo primal-dual del punto interior. Un numero de

    pasos previos del proceso ocurren antes de que el algoritmo comience a iterar [1].

    Optimizacin a media escalaLinprog:es un mtodo activo del sistema y es as una variacin del mtodo simplex, bien conocido paraprogramacin lineal. El algoritmo encuentra una solucin factible inicial por la solucin de otro problema

    de programacin lineal:

    opt i ons = opt i mset ( ' Lar geScal e' , ' of f ' , ' Si mpl ex' , ' on' )

    Y pasando optionscomo un argumento de entrada de linprog. El algoritmo simplex retorna una solucin

    ptima del vrtice. Es importante tener presente que no se podr proveer un punto inicial x0 para linprog,

    del mtodo a gran escala o del mtodo a media escala usando el algoritmo del mtodo simplex. Encualquier caso si se coloca x0 como un argumento de entrada, el linprogno toma en cuenta x0 y calcula su

    propio punto inicial para el algoritmo.

    Diagnstico

    Optimizacin a Larga EscalaLa primera etapa del algoritmo puede implicar un proceso previo de las restricciones. Varias condiciones

    posibles pueden hacer que ocurra esto, por ejemplo linproga la salida con un mensaje de infactibilidad. En

    cada caso, el valor retornado de exitflag. Por linprogfija a un valor negativo para indicar falla [1].

    Si una fila de ceros se detecta en Aeq, pero el elemento correspondiente al beqno es cero, el mensaje de

    salida es [1]:

    Salida debido a infactibilidad: Toda la fila de ceros de la matriz de las restricciones no tiene un cero en eltamao correspondiente a la entrada derecha.

    Si uno de los elementos de xse encuentra para no ser limitado, el mensaje de salida es:

    Salida debido a infactibilidad: La funcin objetivo f'*x es ilimitada debajo.

    Si una de las filas de Aeqtiene solamente un elemento distinto a cero, el valor asociado en xse llama una

    variable singleton (semifallo). En este caso, el valor de esa componente de xse puede calcular de Aeqy debeq. Si el valor calculado viola otra restriccin, el mensaje de la salida es:

    Salida debido a infactibilidad: Las variables de semifallo en restricciones de igualdad no son factibles.

    Si la variable singleton (semifallo) puede ser solucionada para resolver la solucin viola los lmitessuperiores o inferiores, el mensaje de la salida es:

    Salida debido a infactibilidad: Las variables de semifallo en las restricciones de igualdad no estn dentro

    de los lmites.

    Una vez que el proceso previo haya finalizado la parte iterativa del algoritmo comienza a resolver los

    criterios hasta que se detiene. Si el residuo crece en lugar de disminuir, o el residuo ni crece ni disminuye,uno de los dos mensajes de culminacin se muestra en pantalla respectivamente:

  • 7/25/2019 Program Lineal Matlab

    10/27

    Optimizacin de Funciones Lineales con Restricciones en MATLABTM: Teora y Ejemplos

    W. Marchena, C Ornelas. F. Gonzalez-Longatt, Febrero 2007 REPORTE 2007-09

    10

    Soloparaserempleadoconobjetivodeevaluacin,oacadmicos.Proh

    ibidolareproduccintotaloparciald

    eestedocumentosinconsentimientod

    elosautores.

    Uno o ms de los residuos, banda dual o error total ha crecido ms de 100.000 veces que su valor mnimo:

    Uno o ms residuos, banda dual o error relativo total ha cado.

    Despus que uno de estos mensajes se muestren, es seguido por uno de los siguientes seis mensajes que

    indican el dual, el primal, o ambos, aparecen ser infactibles, los mensajes se diferencian deacuerdo a lainfactibilidad:

    El dual parece ser infactible (y el primal ilimitado). (El primal residual < TolFun.)

    El primal parece ser infactible (y el dual ilimitado). (El dual residual < TolFun.)

    El dual parece ser infactible (y el primal ilimitado) desde entonces el dual residual> sqrt (TolFun). (El

    primal residual sqrt (TolFun). (El

    dual residual

  • 7/25/2019 Program Lineal Matlab

    11/27

    Optimizacin de Funciones Lineales con Restricciones en MATLABTM: Teora y Ejemplos

    W. Marchena, C Ornelas. F. Gonzalez-Longatt, Febrero 2007 REPORTE 2007-09

    11

    Soloparaserempleadoconobjetivodeevaluacin,oacadmicos.Proh

    ibidolareproduccintotaloparciald

    eestedocumentosinconsentimientod

    elosautores.

    Fmincon

    PropsitoEncontrar el mnimo o mximo de una funcin multivariable con restricciones no lineales (para el calculode restricciones lineales, de igual manera ve aplicacin) [1].

    EcuacinUn modelo de la funcin que sta realiza, lo podemos ver en [1]:

    ( ) :min xfx

    Sujeta a:

    ( )( )

    ubxlb

    beqAeqx

    bAx

    xceq

    xc

    =

    =

    0

    0

    (2)

    Donde x, b, beq, lb, y ub son vectores, A y Aeq son matrices, c y ceq(x) son funciones que retornan

    vectores, yf(x)es una funcin que retorna un escalar.f(x), c(x), y ceq(x)pueden ser funciones no lineales

    (para ste caso trataremos funciones estrictamente lineales) [1].

    Sintaxisx = fmincon(fun,x0,A,b)

    x = fmincon(fun,x0,A,b,Aeq,beq)

    x = fmincon(fun, x0,A,b,Aeq,beq,lb,ub)

    x = fmincon(fun, x0,A,b,Aeq,beq,lb,ub,nonlcon)

    x = fmincon(fun, x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

    [x,fval] = fmincon(...)

    [x,fval,exitflag] = fmincon(...)[x,fval,exitflag,output] = fmincon(...)

    [x,fval,exitflag,output,lambda] = fmincon()

    [x,fval,exitflag,output,lambda,grad] = fmincon()

    [x,fval,exitflag,output,lambda,grad,hessian] = fmincon()[1]

    Descripcinfmincon intenta encontrar un mnimo de una funcin escalar de varias variables que comienzan en una

    estimacin inicial. Esto es generalmente denominado optimizacin de restricciones no lineales oprogramacin no lineal [1].

    x = fmincon( fun,x0,A,b: Evala el valor inicial x0 ,y encuentra un mnimo de xpara la funcin

    descrita en fun sujeta a las desigualdades lineales Ax

    b. x0 puede ser un escalar, un vector o una matriz.

    x = f mi ncon( f un, x0, A, b, Aeq, beq: Minimizafun sujeta a las igualdades lineales Aeq x = beq,as como tambin la de la forma Ax b. se colocara A= [ ] y b= [ ] si no existen desigualdades.

    x = f mi ncon( f un, x0, A, b, Aeq, beq, l b, ub:Aqu se define y se colocan los limites inferior ysuperior sobre la variable de diseo en x, por esta razn la solucin siempre estar entre los rangos lb x

    ub.Se colocara Aeq= [ ] y beq= [ ] si no existen igualdades, lb(i)= -Inf si x(i)es el limite inferior, yub(i)=Infsi x(i)es el limite superior.

  • 7/25/2019 Program Lineal Matlab

    12/27

    Optimizacin de Funciones Lineales con Restricciones en MATLABTM: Teora y Ejemplos

    W. Marchena, C Ornelas. F. Gonzalez-Longatt, Febrero 2007 REPORTE 2007-09

    12

    Soloparaserempleadoconobjetivodeevaluacin,oacadmicos.Proh

    ibidolareproduccintotaloparciald

    eestedocumentosinconsentimientod

    elosautores.

    x = f mi ncon( f un, x0, A, b, Aeq, beq, l b, ub, nonl con) : Realiza la minimizacin sujeta a lasdesigualdades no lineales c(x)o a las igualdades ceq(x) definida en nonlcon.fminconoptimiza sujeta a c(x)0 y ceq(x)=0. Se colocara lb= [ ] yo ub= [ ] si no existen limites.

    x = f mi ncon( f un, x0, A, b, Aeq, beq, l b, ub, nonl con, opt i ons) : Minimiza con las opcionesde optimizacin especificadas en la estructura de opciones. Se utilizara optimset para colocar estas

    opciones. Se coloca nonlcon= [ ] si no hay restricciones de igualdad o desigualdad no lineales.[ x, f val ] = f mi ncon( . . . ) : Retorna el valor de la funcin objetivofun en la solucin x.

    [ x, f val , exi t f l ag] = f mi ncon( . . . ) : Retorna un valor exitflagque describe la condicin desalida defmincon.

    [ x, f val , exi t f l ag, out put ] = f mi ncon( . . . ) :Retorna una estructura outputcon informacinacerca de la optimizacin.

    [ x, f val , exi t f l ag, out put , l ambda] = f mi ncon( ) : Retorna una estructura lamda cuyoscampos contienen los multiplicadores de lagrange en la solucin de x.

    [ x, f val , exi t f l ag, out put , l ambda, gr ad] = f mi ncon( . . . ) : Retorna el valor del gradiente

    defun en la solucin de x.

    Funcin fun, nonlcon, y optionsA continuacin se proporcionara detalles de la funcin especfica para:fun, nonlcon y options [1]:

    fun

    Es la funcin a ser minimizada o maximizada. fun es una funcin que acepta un vector x y retorna un

    escalarf, que es la funcin objetivo evaluada en x. La funcinfunpuede ser especificada como una funcin

    handlepara los archivos m-file.

    x = f mi ncon( @myf un, x0, A, b)

    Donde myfunes una funcin de MATLAB como:

    f unct i on f = myf un( x)f = . . . % Comput e f unct i on val ue at x

    fun puede ser tambin una funcin handlepara una funcin annima.

    x = f mi ncon( @( x) norm( x) 2, x0, A, b) ;

    Si el gradiente defun tambin requiere ser calculado la opcin GradObj estar enon, como se puede

    ver en lo siguiente:

    opt i ons = opt i mset ( ' Gr adObj ' , ' on' )

    Entonces la funcinfun debe volver, en la segunda salida el argumento, el gradiente evaluado en g, unvector en x. Debe tenerse presente que por medio de comprobar el valor de nargout, la funcin gpuede

    evitar ser calculada cuando la opcinfunes llamada con solo un argumento de salida (En el caso donde laoptimizacin solo necesite el valor def pero no de g).

    f unct i on [ f , g] = myf un( x)f = . . . % Comput e t he f unct i on val ue at xi f nar gout > 1 % f un cal l ed wi t h t wo out put argument sg = . . . % Comput e the gradi ent eval uated at xend

  • 7/25/2019 Program Lineal Matlab

    13/27

    Optimizacin de Funciones Lineales con Restricciones en MATLABTM: Teora y Ejemplos

    W. Marchena, C Ornelas. F. Gonzalez-Longatt, Febrero 2007 REPORTE 2007-09

    13

    Soloparaserempleadoconobjetivodeevaluacin,oacadmicos.Proh

    ibidolareproduccintotaloparciald

    eestedocumentosinconsentimientod

    elosautores.

    El gradiente consiste en las derivadas parciales de fen el punto x. Esto es, la i-sima componente de g es la

    derivada parcial defcon respecto a la i-sima componente de x.

    Nonlcon

    Es la funcin que calcula las restricciones de desigualdad no lineales c(x)0 y las restricciones de igualdad

    no lineal ceq(x)=0. La funcin nonlcon acepta un vector x y retorna dos vectores c y ceq. El vector c

    contiene las desigualdades no lineales evaluadas en x, y ceq contiene las igualdades no lineales evaluadasen x. La funcin nonlconpuede ser especificada como una funcin handle.

    x = f mi ncon( @myf un, x0, A, b, Aeq, beq, l b, ub, @mycon)

    Donde mycon es una funcin de MATLAB como:

    f unct i on [ c, ceq] = mycon( x)c = . . . % Comput e nonl i near i nequal i t i es at xceq = . . . % Comput e nonl i near equal i t i es at x

    Si el gradiente de las restricciones necesita ser calculado la opcin GradConstrdebe estar en 'on', comopuede observarse en lo siguiente:

    opt i ons = opt i mset ( ' Gr adConst r ' , ' on' )

    Cuando la opcin nonlcondeba volver, en los terceros y cuartos argumentos de salida, GC, el gradiente dec(x), y GCeq, el gradiente de ceq(x). Debe tenerse presente que por medio de comprobar el valor de la

    opcin nargoutla funcin GC y GCeq puede evitar ser calculada cuando la opcin nonlcones llamada consolo dos argumentos de salida (en el caso donde el algoritmo de optimizacin solo necesite los valores de c

    y ceqpero no los de GC y GCeq).

    c = . . . % Nonl i near i nequal i t i es at xceq = . . . % Nonl i near equal i t i es at xi f nar gout > 2 % nonl con cal l ed wi t h 4 out put sGC = . . . % Gr adi ent s of t he i nequal i t i es

    GCeq = . . . % Gr adi ent s of t he equal i t i esend

    Si nonlconretorna un vector cde mcomponentes y xtiene longitud n, donde nes la longitud dex0, cuando

    el gradiente GC de c(x)es una matriz n x m, donde GC(i,j) es la derivada parcial de c(j) con respecto ax(i),

    (la j-sima columna de GC es el gradiente de la j-sima restriccin de desigualdad c(j)). De la mismamanera, si ceq, tienepcomponentes, el gradiente GCeq de ceq(x)es una matriz n xp, donde GCeq(i,j) es la

    derivada parcial de ceq(j) con respecto a x(i) ( la j-sima columna de GCeq es el gradiente de la j-sima

    restriccin de igualdad ceq(j)).

  • 7/25/2019 Program Lineal Matlab

    14/27

    Optimizacin de Funciones Lineales con Restricciones en MATLABTM: Teora y Ejemplos

    W. Marchena, C Ornelas. F. Gonzalez-Longatt, Febrero 2007 REPORTE 2007-09

    14

    Soloparaserempleadoconobjetivodeevaluacin,oacadmicos.Proh

    ibidolareproduccintotaloparciald

    eestedocumentosinconsentimientod

    elosautores.

    Solucin de Problemas de Optimizacin empleandoMATLAB

    Ejemplo #1

    Minimizar la funcinf(x1,x2) = 2x1+ 8x2sometida a las restricciones [3]:

    ;55

    ;052

    ;842

    ;0

    ;0

    21

    21

    21

    2

    1

    +

    +

    xx

    xx

    xx

    x

    x

    Llamando, respectivamente r, s y t a las rectas expresadas en las tres ltimas restricciones, la zona de

    soluciones factibles sera:

    0 1 2 3 4 5 6 7 8 9-1

    0

    1

    2

    3

    4

    X1

    X2

    r=2X1+4X2=8

    s=2X1-5X2=0

    t=-X1+5X2=5

    Region Factible

    Figura 1. Grafica para obtener los puntos de interseccin de las restricciones del ejemplo 1

    Siendo los vrtices:

    Ainterseccin de ry t:

    =+

    =+

    7

    9,

    7

    10

    55

    842

    21

    21A

    xx

    xx

    Binterseccin de sy t:

    )2,5(55

    052

    21

    21B

    xx

    xx

    =+

    =

    Cinterseccin de ry s:

    =

    =+

    9

    8,

    9

    20

    053

    842

    21

    21C

    xx

    xx

    Siendo los valores de la funcin objetivo en ellos:

  • 7/25/2019 Program Lineal Matlab

    15/27

    Optimizacin de Funciones Lineales con Restricciones en MATLABTM: Teora y Ejemplos

    W. Marchena, C Ornelas. F. Gonzalez-Longatt, Febrero 2007 REPORTE 2007-09

    15

    Soloparaserempleadoconobjetivodeevaluacin,oacadmicos.Proh

    ibidolareproduccintotaloparciald

    eestedocumentosinconsentimientod

    elosautores.

    minimo5,119

    104

    9

    88

    9

    202)(

    262*85*2)(

    1,137

    92

    7

    98

    7

    102)(

    =+=

    =+=

    =+=

    Cf

    Bf

    Af

    Alcanzndose el mnimo en el punto C.

    Resolucin en MATLABMinimizar la funcinf(x1,x2) = 2x1 + 8x2sometida a las restricciones:

    ;55

    ;052

    ;842

    ;0

    ;0

    21

    21

    21

    2

    1

    +

    +

    xx

    xx

    xx

    x

    x

    Para resolver el siguiente problema en MATLAB es necesario que todas las restricciones estn de la forma:

    0 para poder crear el archivoM-file, esto se logra multiplicando cada restriccin por -1quedando:

    ;55

    ;052

    ;0842

    ;0

    ;0

    21

    21

    21

    2

    1

    +

    +

    xx

    xx

    xx

    x

    x

    - Luego se crea un archivo M-file en MATLAB definiendo la funcin objetivo; quedando de lasiguiente manera:

    %Cr eaci n de un ar chi vo M- f i l e par a def i ni r l a f unci n obj et i vof uncti on f = obj f un( x)f = 2*x( 1) +8*x( 2) ;

    - Otro archivo M-file es creado para definir las restricciones del problema, las cuales todas deben

    ser 0, quedando:

    f uncti on [ c, ceq] = conf un( x)% r est r i cci ones de desi gual dades l i neal es o no l i neal esc = [ - x( 1) ; - x( 2) ; - 2*x( 1) - 4*x( 2) +8; 2*x( 1) - 5*x( 2) ; - x( 1) +5*x( 2) - 5] ;% r est r i cci ones de i gual dades l i neal es o no l i neal esceq = [ ] ;

    Se observa que en ceqno se define ninguna inecuacin, esto se debe a que todas las restricciones dadas enel problema son de la forma G(x) 0 o G(x) 0 pero no de la forma G(x) = 0.

  • 7/25/2019 Program Lineal Matlab

    16/27

    Optimizacin de Funciones Lineales con Restricciones en MATLABTM: Teora y Ejemplos

    W. Marchena, C Ornelas. F. Gonzalez-Longatt, Febrero 2007 REPORTE 2007-09

    16

    Soloparaserempleadoconobjetivodeevaluacin,oacadmicos.Proh

    ibidolareproduccintotaloparciald

    eestedocumentosinconsentimientod

    elosautores.

    Luego se crea otro archivo M-file que se encargue de llamar a los otros dos archivos M-file donde se

    definen la funcin objetivo y las restricciones del problema, de la siguiente manera:

    %Progr ama de ej empl o de ut i l i zaci n de f unci ones del t ool box de%opt i mi zaci n en MATLAB%Real i zado por : - Marchena Wi l l i ams% - Or nel as Car l os%Super vi zado por : Gonzal ez- Longat t , F. %Fecha: 12- 02- 2006%UNEFA - Ncl eo Mar acay%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cl c % Bor r a l a pant al l acl ear % Bor r a t odas l as var i abl esdi sp( ' ' ) % DI SP: muest r a una cadena de caract eresdi sp( ' Ej empl o 1' )di sp( ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ' )di sp( ' Condi ci ones I ni ci al es' )x0=[ - 1, 1]opt i ons=opt i mset ( ' Lar geScal e' , ' of f ' ) ;[ x, f val ] =f mi ncon( @obj f un, x0, [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , @conf un, opt i ons)

    %- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Donde se indican los valores iniciales de x, se indica que es una funcin de media escala ya que la de larga

    escala esta en modo 'off', y por ultimo se indican los valores que se desean de la solucin, en este caso:[x,fval], y se llama la funcin objetivo con objfun y sus restricciones con confun. Dando el siguienteresultado:

    Opt i mi zat i on t er mi nat ed: f i r st - or der opt i mal i t y measur e l esst han opt i ons. Tol Fun and maxi mum const r ai nt vi ol at i on i s l esst han opt i ons. Tol Con.

    Act i ve i nequal i t i es ( t o wi t hi n opt i ons. Tol Con = 1e- 006) :l ower upper i neql i n i neqnonl i n

    34

    x =

    2. 2222 0. 8889

    f val =

    11. 5556

    Al obtener este resultado con la aplicacin de MATLAB y compararlo con el obtenido de forma grfica, se

    comprueba de forma consistente que la solucin del problema es efectivamente en el punto C, que es elpunto donde se alcanza el mnimo para la funcinf(x1,x2) = 2x1+ 8x2.

  • 7/25/2019 Program Lineal Matlab

    17/27

    Optimizacin de Funciones Lineales con Restricciones en MATLABTM: Teora y Ejemplos

    W. Marchena, C Ornelas. F. Gonzalez-Longatt, Febrero 2007 REPORTE 2007-09

    17

    Soloparaserempleadoconobjetivodeevaluacin,oacadmicos.Proh

    ibidolareproduccintotaloparciald

    eestedocumentosinconsentimientod

    elosautores.

    Ejemplo #2Determine los valores de x que minimicen la siguiente funcin: f(x)=-x1x2x3, Que comienza en el punto:x= [10; 10; 10], y sujeta a las siguientes restricciones [1]:

    72220 321 ++ xxx

    Este ejemplo es tomado de la optimizacin toolbox para uso con MATLAB, el cual es un ejemplo resuelto

    de la siguiente manera:

    Primero, escriba un M-file que devuelva un valor escalarfde la funcin evaluada en x

    Funct i on f = myf un(x)F = - x( 1) *x( 2) *x( 3) ;

    Entonces, reescriba las restricciones como dos ecuaciones, menor que o igual a una constante:

    7222

    022

    321

    321

    ++

    xxx

    xxx

    Puesto que ambas restricciones son lineales, formulndolo como una matriz de desigualdad A*x = b,

    donde:

    =

    111

    221A

    =

    72

    0b

    Luego coloque un punto de partida e invoque la optimizacin:

    x0 = [ 10; 10; 10] ; % comenzar conj et ur a de l a sol uci n

    [ x, f val ] = f mi ncon( @myf un, x0, A, b)

    Despus de 66 evaluaciones de la funcin, la solucin es:

    x =24. 000012. 000012. 0000

    Donde la funcin evaluada es:

    f val =- 3. 4560e+03

    Y las restricciones lineales de desigualdad, se evalan para ser menor o igual que cero:

    A*x- b=- 72

    0

  • 7/25/2019 Program Lineal Matlab

    18/27

    Optimizacin de Funciones Lineales con Restricciones en MATLABTM: Teora y Ejemplos

    W. Marchena, C Ornelas. F. Gonzalez-Longatt, Febrero 2007 REPORTE 2007-09

    18

    Soloparaserempleadoconobjetivodeevaluacin,oacadmicos.Proh

    ibidolareproduccintotaloparciald

    eestedocumentosinconsentimientod

    elosautores.

    Resolucin en MATLABDetermine los valores dexque minimicen la siguiente funcin: f(x)=-x1x2x3,Que comienza en el punto: x =[10; 10; 10], y sujeta a las siguientes restricciones:

    72220 321 ++ xxx

    Creacin del archivoM-filepara definir la funcin objetivo:

    %Cr eaci n de un ar chi vo M- f i l e par a def i ni r%l a f unci n obj et i vof unci n f = obj f un( x)f = - x( 1) *x( 2) *x( 3) ;

    Luego, creando otro archivoM-filese definen las restricciones de la funcin objetivo

    %Rest r i cci ones son l i neal es de desi gual dadf unci n [ c, ceq] = conf un( x)% r est r i cci ones no l i neal es de desi gual dadc = [ - x( 1) - 2*x( 2) - 2*x( 3) ;

    x(1) +2*x( 2) +2*x( 3) - 72] ;

    % r est r i cci ones no l i neal es de i gual dadceq = [ ] ;

    Por ltimo es creado otro archivo M-file para definir las variables de entrada, a travs de las cuales

    obtenemos los resultados de la optimizacin

    %Progr ama de ej empl o de ut i l i zaci n de f unci ones del t ool box de%opt i mi zaci n en MATLAB%r eal i zado por : - Marchena Wi l l i ams% - Or nel as Car l os%Super vi zado por : Gonzal ez- Longat t , F. %Fecha: 12- 02- 2006%UNEFA - Ncl eo Mar acay

    %- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - di sp( ' ' )di sp( ' Ej empl o 2' )di sp( ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ' )

    di sp( ' Condi ci ones I ni ci al es' )x0=[ 10; 10; 10]di sp( ' Mat r i ces de Coef i ci ent es de Ax=b' )A=[ - 1 - 2 - 2; 1 2 2]b=[ 0; 72]opt i ons=opt i mset ( ' Lar geScal e' , ' of f ' ) ;[ x, f val ] =f mi ncon( @obj f un1, x0, A, b, [ ] , [ ] , [ ] , [ ] , @conf un1, opt i ons)

    En este caso, como las restricciones son de igualdad del tipo: A*x = b, definiendo las restricciones en

    forma de A*x = b, donde Aes una matriz y b un vector, como se menciona anteriormente, una vez definidaA y b, se indica afminconpara poder obtener la optimizacin, como sigue:

    Condi ci ones I ni ci al es

    x0 =

    1010

  • 7/25/2019 Program Lineal Matlab

    19/27

    Optimizacin de Funciones Lineales con Restricciones en MATLABTM: Teora y Ejemplos

    W. Marchena, C Ornelas. F. Gonzalez-Longatt, Febrero 2007 REPORTE 2007-09

    19

    Soloparaserempleadoconobjetivodeevaluacin,oacadmicos.Proh

    ibidolareproduccintotaloparciald

    eestedocumentosinconsentimientod

    elosautores.

    10

    Matr i ces de Coef i ci ent es de Ax=b

    A =

    - 1 - 2 - 21 2 2

    b =

    072

    Opt i mi zat i on t er mi nat ed: magni t ude of di r ect i onal der i vat i ve i n sear chdi r ect i on l ess t han 2*opt i ons. Tol Fun and maxi mum const r ai nt vi ol at i oni s l ess t han opt i ons. Tol Con.

    Act i ve i nequal i t i es ( t o wi t hi n opt i ons. Tol Con = 1e- 006) :

    l ower upper i neql i n i neqnonl i n2 2x =

    24. 000012. 000012. 0000

    f val =

    - 3. 4560e+003

    Al realizar el ejercicio por medio de las aplicaciones de MATLAB se puede observar que la solucin

    alcanzada para el valor de xque reduce al mnimo la funcin f(x)=-x1x2x3, es el punto x= (24,12,12), y

    donde el valor de la funcin evaluada en este punto x, es de -3.4560e+003. De esta manera se corrobora elresultado ya arrojado en el clculo mostrado anteriormente.

  • 7/25/2019 Program Lineal Matlab

    20/27

    Optimizacin de Funciones Lineales con Restricciones en MATLABTM: Teora y Ejemplos

    W. Marchena, C Ornelas. F. Gonzalez-Longatt, Febrero 2007 REPORTE 2007-09

    20

    Soloparaserempleadoconobjetivodeevaluacin,oacadmicos.Proh

    ibidolareproduccintotaloparciald

    eestedocumentosinconsentimientod

    elosautores.

    Ejemplo #3Encuentre el valor de xque reduce al mnimo [1]:

    321 645)( xxxxf =

    Sujeto a:

    321

    21

    321

    321

    0,0,0

    3023

    42423

    20

    xxx

    xx

    xxx

    xxx

    +

    ++

    +

    Primero, introduzca los coeficientes:

    f = [ - 5; - 4; - 6]

    A = [ 1 - 1 13 2 43 2 0] ;

    b = [ 20; 42; 30] ;

    l b = zer os( 3, 1) ;Luego, se llama la rutina de programacin lineal [ x, f val , exi t f l ag, out put , l ambda] =l i npr og( f , A, b, [ ] , [ ] , l b) ;

    Introduciendox, lambda.ineqlin,y lambda.lower, se coloca:

    x =0. 000015. 00003. 0000

    l ambda. i neql i n =

    01. 50000. 5000

    l ambda. l ower =1. 000000

    Resolucin en MATLABEncuentre el valor dex que reduce al mnimo:

    321 645)( xxxxf =

    Sujeto a:

    321

    21

    321

    321

    0,0,0

    3023

    42423

    20

    xxx

    xx

    xxx

    xxx

    +

    ++

    +

    Creacin del archivo M-file para definir la funcin objetivo de la siguiente manera:

  • 7/25/2019 Program Lineal Matlab

    21/27

    Optimizacin de Funciones Lineales con Restricciones en MATLABTM: Teora y Ejemplos

    W. Marchena, C Ornelas. F. Gonzalez-Longatt, Febrero 2007 REPORTE 2007-09

    21

    Soloparaserempleadoconobjetivodeevaluacin,oacadmicos.Proh

    ibidolareproduccintotaloparciald

    eestedocumentosinconsentimientod

    elosautores.

    f uncti on f = obj f un( x)f = - 5*x( 1) - 4*x( 2) - 6*x( 3) ;

    Luego, creando otro archivo M-file se definen las restricciones de la funcin objetivo:

    %Def i ni ci n de l as r est r i cci ones, l as cual es son ecuaci ones%l i neal es de desi gual dad. f unci n [ c, ceq] = conf un( x)% Nonl i near i nequal i t y const r ai nt sc = [ x(1) - x(2) +2*x( 3) - 20; 3*x( 1) +2*x( 2) +4*x( 3) - 42;

    3*x( 1) +2*x( 2) - 30; - x( 1) ; - x( 2) ; - x( 3) ] ;% Nonl i near equal i t y const r ai nt sceq = [ ] ;

    Por ltimo se crea otro archivoM-filepara definir las variables de entrada, a travs de las cuales obtenemos

    los resultados de la optimizacin:

    %Progr ama de ej empl o de ut i l i zaci n de f unci ones del t ool box de%opt i mi zaci n en MATLAB%r eal i zado por : - Marchena Wi l l i ams

    % - Or nel as Car l os%Super vi zado por : Gonzal ez- Longat t , F. %Fecha: 12- 02- 2006%UNEFA - Ncl eo Mar acay%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - cl c %Bor r ar l a pant al l acl ear %Borr ar t odas l as var i abl esdi sp( ' ' ) %DI SP: muest r a una cadena de car act eresdi sp( ' ej empl o 3' )di sp( ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ' )di sp( ' Condi ci ones i ni ci al es' )x0 = [ - 1, 1, 1]opt i ons = opt i mset ( ' Lar geScal e' , ' of f ' ) ;f = [ - 5; - 4; - 6]A = [ 1 - 1 1

    3 2 43 2 0] ;

    b = [ 20; 42; 30] ;[ x, f val ] = f mi ncon( @obj f un2, x0, A, b, [ ] , [ ] , [ ] , [ ] , @conf un2, opt i ons)

    Al igual que en el ejercicio anterior, como las restricciones son de igualdad del tipo: A*x = b, definiendo

    las restricciones en forma de A*x = b, donde A es una matriz y b un vector, como se mencionaanteriormente, una vez definida A y b, se indica a fmincon para poder obtener la optimizacin, comosigue:

    Ej empl o 3- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Condi ci ones i ni ci al es

    x0 =

    - 1 1 1

    f =

    - 5

  • 7/25/2019 Program Lineal Matlab

    22/27

    Optimizacin de Funciones Lineales con Restricciones en MATLABTM: Teora y Ejemplos

    W. Marchena, C Ornelas. F. Gonzalez-Longatt, Febrero 2007 REPORTE 2007-09

    22

    Soloparaserempleadoconobjetivodeevaluacin,oacadmicos.Proh

    ibidolareproduccintotaloparciald

    eestedocumentosinconsentimientod

    elosautores.

    - 4- 6

    Opt i mi zat i on t er mi nat ed: f i r st - order opt i mal i t y measur e l esst han opt i ons. Tol Fun and maxi mum const r ai nt vi ol at i on i s l esst han opt i ons. Tol Con.

    Act i ve i nequal i t i es ( t o wi t hi n opt i ons. Tol Con = 1e- 006) :l ower upper i neql i n i neqnonl i n

    2 23 3

    4

    x =

    0 15. 0000 3. 0000f val =

    - 78. 0000Al realizar el ejercicio por medio de las aplicaciones de MATLAB se puede observar que la solucin

    alcanzada para el valor de xque reduce al mnimo la funcinf(x)= -5x1-4x2-6x3 , es el punto x =( 0,15,3), ydonde el valor de la funcin evaluada en este punto x, es de -78. De esta manera se corrobora el resultado

    ya arrojado en el clculo mostrado anteriormente.

  • 7/25/2019 Program Lineal Matlab

    23/27

    Optimizacin de Funciones Lineales con Restricciones en MATLABTM: Teora y Ejemplos

    W. Marchena, C Ornelas. F. Gonzalez-Longatt, Febrero 2007 REPORTE 2007-09

    23

    Soloparaserempleadoconobjetivodeevaluacin,oacadmicos.Proh

    ibidolareproduccintotaloparciald

    eestedocumentosinconsentimientod

    elosautores.

    Ejemplo 4A una persona le tocan 10 millones de bolvares en una lotera y le aconsejan que las invierta en dos tipos

    de acciones,AyB. Las de tipo A tienen ms riesgo pero producen un beneficio del 10 %. Las de tipo B son

    ms seguras, pero producen slo el 7% anual. Despus de varias deliberaciones decide invertir como

    mximo 6 millones en la compra de acciones Ay por lo menos, 2 millones en la compra de acciones B.

    Adems, decide que lo invertido enAsea, por lo menos, igual a lo invertido enB. Cmo deber invertir 10millones para que le beneficio anual sea mximo? [3]

    Sean las variables de decisin:

    x1= cantidad invertida en accionesA

    x2= cantidad invertida en accionesB

    La funcin objetivo es:

    21

    21

    07.01.0)(

    100

    7

    100

    10)(

    xxxf

    xxxf

    +=

    +=

    Y las restricciones son:

    +

    21

    2

    1

    21

    21

    2

    6

    10

    0;0

    xx

    x

    x

    xx

    xx

    La zona de soluciones factibles es:

    0 5 10 150

    5

    10

    15

    X1

    X2

    X1+X2=10

    X1=X2

    X1=6

    X2=2

    A D

    C

    B

    r

    t

    u

    Figura 2. Grafica para obtener los puntos de interseccin de las restricciones de la funcin objetivo

    del Ejemplo 4

    Siendo los vrtices del recinto:

    Ainterseccin de u,t:

    )2,2(22

    21A

    x

    xx

    =

    =

  • 7/25/2019 Program Lineal Matlab

    24/27

    Optimizacin de Funciones Lineales con Restricciones en MATLABTM: Teora y Ejemplos

    W. Marchena, C Ornelas. F. Gonzalez-Longatt, Febrero 2007 REPORTE 2007-09

    24

    Soloparaserempleadoconobjetivodeevaluacin,oacadmicos.Proh

    ibidolareproduccintotaloparciald

    eestedocumentosinconsentimientod

    elosautores.

    B interseccin de r,u:

    )5,5(10

    21

    21B

    xx

    xx

    =

    =+

    Cinterseccin de r,s:

    )4,6(6

    10

    1

    21C

    x

    xx

    =

    =+

    D interseccin se s,t:

    )2,6(2

    6

    2

    1D

    x

    x

    =

    =

    La funcin objetivo toma en ellos los valores:

    millones74,0100

    74

    100

    14

    100

    60)(

    MAXIMOmillones88.0100

    88

    100

    28

    100

    60)(

    millones85.0100

    85

    100

    35

    100

    50)(

    millones34,0100

    34

    100

    14

    100

    20)(

    ==+=

    ==+=

    ==+=

    ==+=

    Df

    Cf

    Bf

    Af

    Siendo la solucin ptima invertir 6 millones de bolvares en acciones tipoAy 4 millones en acciones tipo

    B.

  • 7/25/2019 Program Lineal Matlab

    25/27

    Optimizacin de Funciones Lineales con Restricciones en MATLABTM: Teora y Ejemplos

    W. Marchena, C Ornelas. F. Gonzalez-Longatt, Febrero 2007 REPORTE 2007-09

    25

    Soloparaserempleadoconobjetivodeevaluacin,oacadmicos.Proh

    ibidolareproduccintotaloparciald

    eestedocumentosinconsentimientod

    elosautores.

    Resolucin en MATLABLa funcin objetivo es:

    21 07.01.0)( xxxf +=

    Y las restricciones son:

    +

    +

    +

    +

    0

    02

    06

    010

    0;0

    2

    6

    10

    0;0

    21

    2

    1

    21

    21

    21

    2

    1

    21

    21

    xx

    x

    x

    xx

    xx

    xx

    x

    x

    xx

    xx

    Creacin del archivo M-file para definir la funcin objetivo:

    %creaci n de un ar chi vo M- f i l e par a def i ni r l a f unci n obj et i vof uncti on f = obj f un( x)

    f =- ( 0. 1*x(1) + 0. 07*x(2)) ;

    - Luego, creando otro archivo M-file se definen las restricciones de la funcin objetivo:%Rest r i cci ones de i necuaci ones l i neal esf uncti on [ c, ceq] = conf un( x)% Nonl i near i nequal i t y const r ai nt sc = [ - x( 1) ; - x( 2) ; x( 1) +x( 2) - 10; x( 1) - 6; - x( 2) +2;

    - x( 1) +x( 2) ] ;% Nonl i near equal i t y const r ai nt sceq = [ ] ;

    Por ltimo se crea otro archivo M-file para definir las variables de entrada, a travs de las cuales obtenemoslos resultados de la optimizacin:

    %Progr ama de ej empl o de ut i l i zaci n de f unci ones del t ool box de%opt i mi zaci n en MATLAB%r eal i zado por : - Marchena Wi l l i ams% - Or nel as Car l os%supervi zor : Franci sco M. Gonzal ez- Longatt %Fecha: 12- 02- 2006%UNEFA - Ncl eo Mar acay%- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - di sp ( ' ' )di sp( ' Ej empl o 4' )di sp( ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ' )di sp( ' condi ci ones i ni ci al es' )x0=[ - 1, 1]

    opt i ons=opt i mset ( ' Lar geScal e' , ' of f ' ) ;[ x, f val ] =f mi ncon( @obj f un3, x0, [ ] , [ ] , [ ] , [ ] , [ ] , [ ] , @conf un3, opt i ons)

    Como las restricciones son de igualdad del tipo: A*x = b, definiendo las restricciones en forma de Ax = b,

    donde Aes una matriz y bun vector, como se menciona anteriormente, una vez definidaAy b, se indica a

    f mi ncon para poder obtener la optimizacin, como sigue:

  • 7/25/2019 Program Lineal Matlab

    26/27

    Optimizacin de Funciones Lineales con Restricciones en MATLABTM: Teora y Ejemplos

    W. Marchena, C Ornelas. F. Gonzalez-Longatt, Febrero 2007 REPORTE 2007-09

    26

    Soloparaserempleadoconobjetivodeevaluacin,oacadmicos.Proh

    ibidolareproduccintotaloparciald

    eestedocumentosinconsentimientod

    elosautores.

    Ej empl o 4- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Condi ci ones i ni ci al es

    x0 =

    - 1 1

    Opt i mi zat i on t er mi nat ed: f i r st - order opt i mal i t y measur e l esst han opt i ons. Tol Fun and maxi mum const r ai nt vi ol at i on i s l esst han opt i ons. Tol Con.

    Act i ve i nequal i t i es ( t o wi t hi n opt i ons. Tol Con = 1e- 006) :l ower upper i neql i n i neqnonl i n

    34

    x =

    6 4

    f val =

    - 0. 8800

    Al obtener este resultado con la aplicacin de MATLAB y compararlo con el obtenido de forma grfica, se

    comprueba de forma consistente que la solucin del problema es efectivamente invertir 6 millones debolvares en acciones tipoAy 4 millones en acciones tipo B. Es importante sealar que el hecho en que la

    evaluacin de la funcin en el punto arrojado x= (6,4), de un resultado negativo (-), se debe a que

    MATLAB establece que para maximizar la funcinf se aplica una optimizacin para minimizar la funcin-f. El punto resultante donde el mximofocurre tambin es el punto donde el mnimo de -focurre.

  • 7/25/2019 Program Lineal Matlab

    27/27

    Optimizacin de Funciones Lineales con Restricciones en MATLABTM: Teora y Ejemplos 27

    loparaserempleadoconobjetivodeevaluacin,oacadmicos.Proh

    ibidolareproduccintotaloparciald

    eestedocumentosinconsentimientod

    elosautores.

    Referencias Bibliogrficas

    [1] User`s Guide for Mathworks Optimization Toolbox For use with MATLAB. 1990 2006.

    [2] MatlabTM R2006a. (Online) disponible en: http://www.mathworks.com.

    [3]

    M.A. Juan Ricardo Salinas Ascencio, Mg. Ovidio Zubieta Bejar, Doc. Juan Morales Romero. Problemas resueltos deProgramacin Lineal.