program lineal matlab
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.