UNIVERSIDAD CENTROCCIDENTAL
“LISANDRO ALVARADO”
DECANATO DE CIENCIAS Y TECNOLOGÍA
BARQUISIMETO – ESTADO LARA
TOOLBOX DE MATLAB
PRINCIPALES INSTRUCCIONES
INTEGRANTES
Perozo, Alberto CI. 19.263.605
Suescún, Yajaira CI. 19.591.064
Valenzuela, Luis CI. 19.591.260
OPTIMIZACIÓN
Prof. Clavel Quintana
Barquisimeto, 07 de febrero de 2011
TOOLBOX DE MATLAB
La caja de herramientas de optimización o denominado Toolbox extiende la capacidad de MATLAB, acercándolo a un ambiente numérico computacional. Toolbox incluye rutinas de muchos tipos, incluyendo la optimización:
Minimización no lineal sin restricciones.
Minimización no lineal con restricciones, problemas de minimizar y maximizar, y problemas de minimización semi-infinitos.
Programación cuadrática y lineal.
No lineal, mínimos cuadrados y curvas adecuadas.
Solución de ecuaciones de sistemas no lineales.
Restricciones lineales de mínimos cuadrados.
Problemas de larga escala.
Funciones de Optimización
Todas las funciones de la caja de herramientas son (m-files) de MATLAB, haciendo de MATLAB un instrumento especializado en algoritmos de optimización. Se puede ver de MATLAB los códigos de las funciones usando la presentación:
type function_name
Se puede extender la capacidad de optimización 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 Optimización GUI
La herramienta de optimización (optimtool), es un GUI (Grafics Unit Interface), para seleccionar la solución, especificando las opciones de optimización y los problemas corrientes. Se puede definir y modificar los problemas rápidamente con GUI.
Usando Funciones de Optimización
Aquí se describirá como se deberá realizar la utilización de cada una de estas funciones de optimización:
Definición de la Función Objetivo
Muchas de las funciones de optimización requieren que se cree una función de MATLAB que calcule la función objetivo. La función, en la entrada debe aceptar vectores, y retornar a la salida un escalar de tipo doble.
Existen dos maneras de crear la función objetivo:
1) Se crea una función anónima en la línea de comando. Por ejemplo, si se crea una función anónima para x2, se coloca:
square = @ [(x)]* x.^2;
Y se llama a la función de optimización con el cuadrado del primer argumento de la entrada. Se puede usar este método si la función objetivo es relativamente sencilla, y no requiera ser utilizada en una sesión futura de MATLAB.
2) Si se escribe un M-file para la función, por ejemplo, para escribir la función x2 como un m-file, se debe abrir un nuevo archivo en el editor MATLAB y se deberá colocar el siguiente código:
function y = square(x)
y = x.^2;
Se puede llamar la función de optimización con @ al cuadrado como el primer argumento de entrada. El signo @ crea una función manejable al cuadrado. Este método se emplea si la función objetiva es complicada o si se sospecha que tal función será utilizada en una próxima sesión de MATLAB.
Maximización
Las funciones de optimización fminbnd, fminsearch, fminunc, fmincon, fgoalattain, fminimax, lsqcurvefit, y lsqnonlin todas realizan la minimización de la función objetivo f(x). La maximización es alcanzada sustituyendo en las rutinas con – f(x). Asimismo para alcanzar la maximización para quadprog se sustituye -H y -f, y para linprog -f .
Restricciones Mayores que Cero
La Caja de herramientas de Optimización (Toolbox) asume que las restricciones de desigualdad no lineales son de la forma Ci(x)≤0. Las restricciones mayores que cero son expresadas como menores que cero multiplicándolas por -1. Por ejemplo, una restricción de la forma Ci(x)≥0 es equivalente a la restricción (-Ci(x))≤0); una restricción de la forma Ci(x)≥b es equivalente a la restricción (-Ci(x) + b)≤0 .
Maximización vs Minimización
La optimización funciona en la caja de herramienta minimizando la función objetivo. Para maximizar la función f se aplica una optimización para minimizar la función -f. El punto resultante donde el máximo f ocurre también es el punto donde el mínimo de -f ocurre.
PROBLEMAS CUBIERTOS POR LA CAJA DE HERRAMIENTAS
Las siguientes tablas muestran las funciones disponibles para la minimización y maximización de las funciones a utilizar en este trabajo especial de grado, donde la función objetivo es una ecuación lineal con restricciones lineales o no lineales de desigualdad.
Tabla representativa de las funciones disponibles para la minimización y maximización de las funciones a utilizar en este trabajo especial de grado
Tipo Notación Función Programación lineal Linprog
Minimización de restricciones Fmincon
LINPROG
Propósito
Resolver problemas de programación lineal.
Ecuación
Encuentra el mínimo de un problema especificado por:
Sintaxis
x = linprog(f,A,b)
x = linprog(f,A,b,Aeq,beq)
x = linprog(f,A,b,Aeq,beq,lb,ub)
x = linprog(f,A,b,Aeq,beq,lb,ub,x0)
x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options)
[x,fval] = linprog(...)
[x,lambda,exitflag] = linprog(...)
[x,lambda,exitflag,output] = linprog(...)
[x,fval,exitflag,output,lambda] = linprog(...)
Descripción
Linprog soluciona problemas de programación lineal.
x = linprog(f,A,b): soluciona min f'*x tales que A*x≤b
x = linprog(f,A,b,Aeq,beq): soluciona el problema descrito inicialmente (1), mientras que además satisface la igualdad de las restricciones Aeq*x = beq. Se coloca A=[ ] y b=[ ] si no existen desigualdades.
x = linprog(f,A,b,Aeq,beq,lb,ub): Se definen los limites inferior y superior sobre la variable de diseño en x, de modo que la solución este siempre entre el rango lb ≤ x ≤ ub. Se coloara Aeq = [ ] y beq = [ ] si no existen igualdad.
x = linprog(f,A,b,Aeq,beq,lb,ub,x0): fija el punto de partida x0. Esta opción esta solamente disponible con el algoritmo a media escala (la opción de Larga Escala, se fija a “off” usando optimización).
El defecto del algoritmo a larga escala y del algoritmo simplex es que ignoran los puntos de partida.
x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options): Reduce al mínimo con las opciones de optimización especificadas en la estructura options. Se utiliza optimset para fijar estas opciones. [x,fval] = linprog(...): Retorna el valor de la función objetivo fun en la solución x: fval = f'*x.
[x,lambda,exitflag] = linprog(...): devuelve un valor exitflag que describe la condición de salida.
[x,lambda,exitflag,output] = linprog(...): Devuelve una estructura output que contiene información acerca de la optimización.
[x,fval,exitflag,output,lambda] = linprog(...): Devuelve una estructura lambda donde contiene los campos de los multiplicadores de Lagrange en la solución x.
ENTRADA DE ARGUMENTOS
A continuación se muestra una descripción general de los argumentos pasados en linprog:
Representativa de los argumentos de entrada para las funciones linprog y fmincon.
Nombre de la entrada Descripción 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 al lado derecho del vector:
Aeq*x = beq fgoalattain, fmincon, fminimax,
fseminf, linprog, lsqlin,
quadprog
f El vector de los coeficientes para el termino lineal en la ecuación lineal f’*x o la ecuación cuadrática x*H*x + f’*x. linprog, quadprog
fun La función para optimizar. fun es una función manipulada por una función m-file o por una función anónima.
fgoalattain, fmincon, fminimax,
fseminf, fminbnd, fminsearch,
fminunc, fsolve, fzero,
lsqcurvefit, lsqnonlin
lb, ub
Limites inferior y superior de vectores (o matrices). Los argumentos son normalmente del mismo tamaño que x. Sin embargo, si lb tiene menos elementos que x, entonces solo el primer elemento de m es el límite inferior. Los límites superiores en ub se pueden definir de la misma manera. También se pueden especificar variables infinitas usando –inf (para los limites superiores). Por ejemplo si
lb(i) = -inf, la variable x(i) es el límite inferior.
fgoalattain, fmincon, fminimax,
fseminf, linprog, lsqcurvefit,
lsqlin, lsqnonlin, quadraprog
Nonlcon
La función que calcula las inecuaciones no lineales, las restricciones de ecuaciones e inecuaciones no lineales “evitando variables globales vía funciones anónimas y jerarquizadas”
fgoalattain, fmincon, fminimax
A, b
La matriz A y el vector b son, respectivamente, los coeficientes de las restricciones lineales de desigualdad y el vector correspondiente del lado derecho: Ax ≤ b
fgoalattain, fmincon, fminimax,
fseminf, linprog, lsqlin, quadprog
Options Una estructura que define las opciones, se utiliza por las funciones de optimización. Todas las funciones x0
Punto inicial (es un escalar, vector o matriz) (para fzero, x0 también puede ser dos elementos vectoriales representando un intervalo que es conocido para restricciones un cero)
Todas las funciones excepto
fminbnd
ARGUMENTOS DE SALIDA
A continuación se muestra una descripción general de los argumentos de salida:
Representativa de los argumentos de salida de las funciones linprog y fmincon
Nombre de la salida Descripción Usada por las funciones exitflag
Un número entero que identifica la razón en la que el algoritmo de optimización finalizo. Se puede utilizar el exitflag como una herramienta de programación al escribir m-files como calculo de optimización.
A su vez puede mostrar un mensaje que indica porque una optimización finalizo, llamando la función de optimización con el argumento de salida output y mostrando en pantalla output.message
Todas las funciones
fval
La evaluación de la función objetivo fun con la solución x
fgoalattaing, fminbnd, fmincon,
fminimax, fminsearch, fminunc,
fseminf, fsolve, fzero, linprog,
quadprog
output Una estructura de salida que contiene información acerca de los resultados de la optimización.
Todas las funciones x
La solución encontrada por la optimización de la función. Si exitflag > 0, entonces x es una solución, si no, x es el valor de la optimización rutinaria cuando esta es terminada prematuramente.
Todas las funciones
OPCIONES
Son las opciones de optimización usadas por linprog Algunas opciones se aplican a todos los algoritmos, y otras son solamente relevantes cuando se usa el algoritmo de larga escala. Se puede utilizar optimset para fijar o para cambiar los valores de estos campos en la estructura de opciones, options. A continuación se muestran las opciones de optimización utilizadas por las funciones linprog y fmincon:
Representativa de las opciones de los programas linprog y fmincon
Nombre de la opción Descripción Usada por las funciones Diagnostics Display muestra información acerca de la función a minimizar
Todas, excepto
fmindbnd, fminsearch,
fzero y lsqnonneg
DiffMaxChange Máximo cambio en variables para diferencias infinitas
fgoalattain, Fmincon,
fminimax, fminunc,
fseminf, fsolve,
lsqcurvefit, lsqnonlin
DiffMinChange Mínimo cambio en variables para diferenciación finita. Fgoalattaing,
fmincon,fminimax,
fminunc, fseminf, fsolve,
lsqcurvefit, lsqnonlin
Display
Nivel del display en ‘off’ el display no muestra la salida; ‘iter’. Muestra la salida en cada iteración; ‘final’ muestra el final de la salida ‘notify’ muestra si la función no converge.
Todas las funciones
FunValCheck
Comprueba si la función objetivo y los valores de restricciones son validos. ’on’ muestra un error cuando la función objetivo o las restricciones devuelven un valor que es complex, NaN o Inf.
fgoalattain, fminbnd,
fmincon, fminimax,
fminsearch, fminunc,
fseminf, fsolve, fzero,
lsqcurvefit, lsqnonlin
LargeScale Usa el algoritmo de larga escala si es posible. fmincon, fminunc,
fsolve, linprog,
lsqcurvefit, lsqlin,
lsqnonlin,quadraprog
MaxFunEvals Máximo número de evaluaciones realizadas a la función. fgoalattain, fminbnd,
fmincon, fminimax,
fminsearch, fminunc,
fseminf, fsolve,
lsqcurvefit, lsqnonlin
MaxIter Máximo número de iteraciones realizadas Todas las funciones
menos fzero y
lsqnonneg
MaxSQPIter Máximo número de iteraciones de programación cuadrática secuencial.
Fmincon OutputFcn
Especifica una o mas usos definidos de las funciones que la función a optimizar visita cada iteración. fgoalattain, fminbnd,
fmincon, fminimax,
fminsearch, fminunc,
fseminf, fsolve, fzero,
lsqcurvefit y lsqnonlin
PrecondBandWidth
Amplitud de banda superior, preacondicionado para PCG, el ajuste de ‘inf’ usa una factorización directa en lugar de CG.
fmincon, fminunc,
fsolve, lsqcurvefit,
lsqlin, lsqnonlin,
quadprog
RelLineSrchBnd Condición de borde. fgoalattain, fmincon,
fminimax, fseminf
RelLineSrchBndDuration
Numero de iteraciones para el cual la condición de borde especificada en RelLineSrchBnd debe ser activa.
Fgoalattain, fmincon,
fminimax, fseminf
Simplex Si la función esta en, ‘on’ la
función utiliza el algoritmo
simplex.
Linprog TolFun Terminación de la tolerancia
en la función evaluada bintprog, fgoalattain,
fmincon, fminimax,
fminsearch, fminunc,
fseminf, fsolve, linprog
(L siempre), lsqcurvefit,
lsqlin (L siempre)
lsqnonlin, quadprog
(Lsiempre)
TolPCG Terminación de la tolerancia
en la iteración PCG. fmincon, fminunc,
fsolve, lsqcurvefit,
lsqlin, lsqnonlin,
quadprog
Tolx Terminación de la tolerancia
en x. Todas las funciones
ecepto algoritmos de
Media Escala para
linprog, lsqlin y
quadprog
TypicalX
Evaluación x típica. La longitud del vector es igual al número de elementos de x0.
fgoalattain, fmincon,
fminunc, fsolve,
lsqcurvefit, lsqlin,
lsqnonlin, quadprog
FMINCON
Propósito
Encontrar el mínimo o máximo de una función multivariable con restricciones no lineales (para el cálculo de restricciones lineales, de igual manera ve aplicación).
Ecuación
Un modelo de la función que ésta realiza, lo podemos ver en:
Donde x, b, beq, lb, y ub son vectores, A y Aeq son matrices, c y ceq(x) son funciones que retornan vectores, y f(x) es una función que retorna un escalar. f(x), c(x), y ceq(x) pueden ser funciones no lineales (para éste caso trataremos funciones estrictamente lineales).
Sintaxis
x = 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(…)
Descripción
fmincon intenta encontrar un mínimo de una función escalar de varias variables que comienzan en una estimación inicial. Esto es generalmente denominado optimización de restricciones no lineales o programación no lineal.
x = fmincon(fun,x0,A,b: Evalúa el valor inicial x0 ,y encuentra un mínimo de x para la función descrita en fun sujeta a las desigualdades lineales Ax ≤ b. x0 puede ser un escalar, un vector o una matriz.
x = fmincon(fun,x0,A,b,Aeq,beq: Minimiza fun sujeta a las igualdades lineales Aeq· x = beq, así como también la de la forma Ax ≤ b. se colocara A = [ ] y b = [ ] si no existen desigualdades.
x = fmincon(fun, x0,A,b,Aeq,beq,lb,ub: Aquí se define y se colocan los limites inferior y superior sobre la variable de diseño en x, por esta razón la solución 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 límite inferior, y ub(i) = Inf si x(i) es el límite superior.
x = fmincon(fun, x0,A,b,Aeq,beq,lb,ub,nonlcon): Realiza la minimización sujeta a las desigualdades no lineales c(x) o a las igualdades ceq(x) definida en nonlcon. fmincon optimiza sujeta a c(x) ≤ 0 y ceq(x)=0. Se colocara lb = [ ] y⁄o ub = [ ] si no existen límites.
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options): Minimiza con las opciones de optimización 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,fval] = fmincon(...): Retorna el valor de la función objetivo fun en la solución x.
[x,fval,exitflag] = fmincon(...): Retorna un valor exitflag que describe la condición de salida de fmincon.
[x,fval,exitflag,output] = fmincon(...): Retorna una estructura output con información acerca de la optimización.
[x,fval,exitflag,output,lambda] = fmincon(…): Retorna una estructura lamda cuyos campos contienen los multiplicadores de lagrange en la solución de x.
[x,fval,exitflag,output,lambda,grad] = fmincon(...): Retorna el valor del gradiente de fun en la solución de x.