Características principales

  • Optimización no lineal y multiobjetivo
  • Solvers para mínimos cuadrados no lineales, ajuste de datos y ecuaciones no lineales
  • Programación cuadrática y lineal
  • Programación lineal entera-mixta
  • Optimization App para definir y resolver problemas de optimización, así como supervisar el progreso de la solución
  • Aceleración de solvers no lineales con Parallel Computing Toolbox™

Uso de un problema de programación lineal entera-mixta a fin de determinar la mejor forma de suministrar los puntos de ventas desde los almacenes y fábricas.


Definición y resolución de problemas de optimización


Definición de un problema de optimización

Las técnicas de optimización permiten localizar un conjunto de parámetros de diseño o decisiones que ofrecen el mejor resultado posible. Existen dos componentes clave en un problema de optimización:

La función objetivo calcula la cantidad deseada que se debe minimizar o maximizar. Es posible agregar restricciones que limiten los valores posibles para los parámetros de diseño o las decisiones.

Transforme una descripción de problema en un programa matemático que se pueda resolver usando la optimización, empleando para ello el ejemplo de una planta de energía eléctrica y de vapor.
Resuelva un problema de programación lineal usando los solvers de Optimization Toolbox™, empleando para ello el ejemplo de una planta de energía eléctrica y de vapor.

Utilización de la Optimization App

Es posible acceder a las funciones de Optimization Toolbox y a las opciones de los solvers mediante programación o con la Optimization App.

La Optimization App simplifica las tareas de optimización habituales. Le permite:

  • Seleccionar un solver y definir un problema de optimización
  • Determinar y examinar las opciones de optimización y sus valores predeterminados para el solver seleccionado
  • Ejecutar problemas y visualizar los resultados intermedios y finales
  • Visualizar la documentación específica del solver en la ventana opcional de consulta rápida
  • Importar y exportar las definiciones del problema, las opciones del algoritmo y los resultados entre el workspace de MATLAB® y la Optimization App
  • Generar automáticamente código de MATLAB para capturar el trabajo y automatizar las tareas
  • Acceder a los solvers de Global Optimization Toolbox
Prepare y ejecute problemas de optimización y visualice los resultados intermedios y finales.

Selección de un solver

Optimization Toolbox contiene distintos solvers para diferentes tipos de objetivos y restricciones. La tabla de decisión de optimización le ayudará a elegir el mejor solver para su problema.


Configuración de opciones

Las opciones de los solvers permiten ajustar o modificar el proceso de optimización y visualizar el progreso del solver. La configuración de las opciones se puede llevar a cabo mediante programación o a través de la Optimization App.

Set options with optimoptions in Optimization Toolbox to tune solvers and monitor optimization progress.

Distribución

Cabe la posibilidad de utilizar los solvers de Optimization Toolbox con MATLAB Compiler™ a fin de crear herramientas de apoyo para la toma de decisiones que se pueden compartir con usuarios que no disponen de MATLAB. Estas aplicaciones se pueden distribuir de forma gratuita a un número ilimitado de usuarios finales. También es posible integrar los algoritmos de optimización de MATLAB con otros lenguajes, tales como C++, Java®, Python® y .NET, mediante MATLAB Compiler SDK™.


Optimización no lineal

Optimization Toolbox proporciona algoritmos de optimización de uso extendido para resolver problemas de programación no lineal en MATLAB. Esta toolbox incluye solvers para optimización no lineal con y sin restricciones, así como solvers para optimización de mínimos cuadrados.


Optimización no lineal sin restricciones

Optimization Toolbox utiliza tres algoritmos para resolver los problemas de minimización no lineal sin restricciones:

  • El algoritmo Quasi-Newton emplea un procedimiento mixto de búsqueda lineal cúbica y cuadrática y la fórmula BFGS (Broyden-Fletcher-Goldfarb-Shanno) para actualizar las aproximaciones de la matriz hessiana.
  • El algoritmo Nelder-Mead (o downhill símplex) es un algoritmo de búsqueda directa que únicamente utiliza los valores de la función (no necesita derivadas) y gestiona funciones objetivo no diferenciables. Global Optimization Toolbox proporciona algoritmos de optimización adicionales sin derivadas para la optimización no lineal.
  • El algoritmo trust-region se emplea en problemas no lineales sin restricciones y es especialmente útil para problemas a gran escala donde puede explotarse la dispersión o la estructura.

Utilización de la optimización no lineal sin restricciones para buscar la máxima eficiencia en el mapa de rendimiento de un motor.


Optimización no lineal con restricciones

Los problemas de optimización no lineal con restricciones se componen de funciones objetivo lineales o no lineales y pueden estar sujetos a restricciones lineales y no lineales. Optimization Toolbox utiliza cuatro algoritmos para resolver estos problemas:

  • El algoritmo interior-point se emplea en la optimización no lineal en general. Es especialmente útil para problemas a gran escala que tienen dispersión o estructura y es tolerante a fallos de evaluación de la función objetivo y de la función de restricción definidas por el usuario. Se basa en una función de barrera y, de manera opcional, mantiene todas las iteraciones estrictamente factibles con respecto a los límites durante la ejecución de la optimización.
  • El algoritmo SQP se emplea para la optimización no lineal en general. Respeta los límites en todas las iteraciones y es tolerante a fallos de evaluación en funciones objetivo y de restricción definidas por el usuario.
  • El algoritmo active-set se emplea para la optimización no lineal en general.
  • El algoritmo trust-region reflective se emplea solamente para los problemas con restricciones de límite o las igualdades lineales. Es especialmente útil en los problemas a gran escala.

Los algoritmos interior-point y trust-region reflective permiten estimar matrices hessianas utilizando diferentes enfoques.

En el caso del algoritmo de interior-point, es posible estimar las matrices hessianas mediante:

  • BFGS (densa)
  • BFGS de memoria limitada (para problemas a gran escala)
  • Función multiplicadora hessiana
  • Hessiana real (dispersa o densa)
  • Diferencia finita de gradientes, sin necesidad de conocer la estructura de dispersión

En el caso del algoritmo trust-region reflective, puede emplear:

  • Diferencia finita de gradientes, estructura de dispersión de la hessiana
  • Hessiana real (dispersa o densa)
  • Función multiplicadora hessiana

A fin de reducir el uso de memoria, los algoritmos interior-point y trust-region reflective permiten calcular los productos hessiana-por-vector en una función sin tener que crear la matriz hessiana explícitamente.

Utilización de la programación no lineal con restricciones para diseñar un sistema de suspensión óptimo.


Programación lineal y cuadrática

Optimization Toolbox permite resolver problemas de programación lineal y cuadrática de gran escala.


Programación lineal

Los problemas de programación lineal implican la minimización o maximización de una función objetivo lineal sujeta a restricciones de límite, de igualdad lineal y de desigualdad lineal. La programación lineal se emplea en finanzas, energía, investigación operativa y otras aplicaciones en las que las relaciones entre variables se pueden expresar de forma lineal.

Optimization Toolbox incluye dos algoritmos que se emplean para resolver problemas de programación lineal:

  • El algoritmo símplex dual es un tipo de algoritmo símplex. Los algoritmos símplex son procedimientos sistemáticos para generar y comprobar las soluciones vértice candidatas para un programa lineal, y son los algoritmos utilizados con más frecuencia en la programación lineal.
  • El algoritmo interior-point se basa en un algoritmo primal-dual predictor-corrector que se emplea para resolver problemas de programación lineal. Interior-point es especialmente útil para problemas a gran escala que tienen estructura o pueden definirse utilizando matrices dispersas.

Programación lineal utilizada en el diseño de una planta para generar energía eléctrica y de vapor.


Programación cuadrática

Los problemas de programación cuadrática están relacionados con la minimización de una función cuadrática multivariable sujeta a restricciones de límite, de igualdad lineal y de desigualdad lineal. La programación cuadrática se emplea en la optimización de carteras en finanzas, en la producción de energía para compañías eléctricas, en el diseño en ingeniería y en otras aplicaciones.

Optimization Toolbox incluye dos algoritmos para la resolución de programas cuadráticos:

  • El algoritmo interior-point-convex resuelve los problemas convexos con cualquier combinación de restricciones.
  • El algoritmo trust-region reflective resuelve los problemas con restricciones de límite o con restricciones de igualdad lineal.
In this webinar, you will learn how MATLAB can be used to solve optimization problems using an example quadratic optimization problem and the symbolic math tools in MATLAB.

Tanto el algoritmo interior-point-convex como el algoritmo trust-region reflective son de gran escala, lo que significa que pueden resolver problemas grandes y dispersos. Es más, el algoritmo interior-point-convex cuenta con unas rutinas optimizadas de álgebra lineal internas, así como un nuevo módulo de resolución previa capaz de mejorar la velocidad, la estabilidad numérica y la detección de inviabilidad.

Programación cuadrática utilizada para realizar un análisis de estilo basado en la rentabilidad de tres fondos mutuos diferentes.


Programación lineal entera-mixta

La programación lineal entera-mixta amplía el problema de programación lineal con la restricción adicional de que algunas o todas las variables de la solución óptima deben ser enteros.

En el caso de algunos problemas de optimización, las variables no deben tener valores fraccionales. Por ejemplo, si una variable representa el número de acciones que se van a comprar, solo debe tener valores enteros. De igual forma, si una variable representa el estado de activación/desactivación de un generador, solamente debe tener valores binarios (0 o 1). El problema de programación lineal entera-mixta permite modelar este comportamiento mediante la adición de la restricción de que las variables sólo deben tener valores enteros en la solución óptima.

Aprenda cómo usar el nuevo solucionador de optimización para programación lineal entera mixta en la versión 2014a. Este nuevo solucionador le permite resolver problemas de optimización en los que algunas o todas las variables se ven obligadas a asumir valores enteros.

Optimization Toolbox resuelve los problemas de programación lineal entera-mixta mediante un algoritmo que:

  • lleva a cabo el preprocesamiento de programación entera a fin de ajustar la región factible;
  • aplica planos de corte para ajustar la región factible;
  • utiliza la heurística para buscar soluciones enteras factibles;
  • comprueba que otra solución factible no sea mejor mediante un algoritmo de ramificación y acotación que resuelve una serie de problemas de relajación de programación lineal.
Comience usando herramientas de optimización de MATLAB para mejorar su diseño y tomar mejores decisiones de negocio. Aprenda las mejores prácticas para configurar y resolver problemas de optimización

Optimización multiobjetivo

La optimización multiobjetivo está relacionada con la minimización de múltiples funciones objetivo sujetas a un conjunto de restricciones. Optimization Toolbox dispone de funciones para resolver dos formulaciones de problemas de optimización multiobjetivo:

  • El problema goal attainment implica la reducción del valor de una función vectorial lineal o no lineal para alcanzar los valores objetivo establecidos en un vector objetivo. La importancia relativa de los objetivos se indica mediante un vector de pesos. El problema goal attainment también puede estar sujeto a restricciones lineales y no lineales.
  • El problema de minimax implica la minimización del peor valor de un conjunto de funciones multivariables, posiblemente sujeto a restricciones lineales y no lineales.

Optimization Toolbox transforma ambos tipos de problemas multiobjetivo en problemas de optimización con restricciones estándar y luego los resuelve utilizando un el algoritmo de active-set.

Global Optimization Toolbox proporciona un solver multiobjetivo adicional para problemas no diferenciables.

Optimización multiobjetivo empleada para diseñar un filtro de paso bajo.


Mínimos cuadrados no lineales, ajuste de datos y ecuaciones no lineales

Optimization Toolbox puede resolver problemas de mínimos cuadrados lineales y no lineales, problemas de ajuste de datos y ecuaciones no lineales.


Optimización de mínimos cuadrados lineales y no lineales

Esta toolbox incluye tres algoritmos para resolver problemas de mínimos cuadrados lineales con restricciones:

  • El algoritmo de active-set resuelve problemas con límites y desigualdades o igualdades lineales.
  • El algoritmo de interior-point resuelve problemas con límites y desigualdades o igualdades lineales.
  • El algoritmo trust-region reflective resuelve problemas de gran escala que solo tienen restricciones de límite.

Esta toolbox incluye dos algoritmos para resolver problemas de mínimos cuadrados no lineales:

  • El algoritmo trust-region reflective implementa un enfoque de región de confianza especializado para problemas de mínimos cuadrados no lineales. Se aplica a los problemas sin restricciones y los problemas con restricciones de límite.
  • El algoritmo Levenberg-Marquardt implementa un método Levenberg-Marquardt estándar. Se usa para problemas sin restricciones.

Ajuste de una ecuación trascendental usando mínimos cuadrados no lineales.


Ajuste de datos

Esta toolbox proporciona una interfaz especializada para problemas de ajuste de datos en la que busca el miembro de una familia de funciones no lineales que se adapte mejor a un conjunto de puntos de datos. La toolbox utiliza los mismos algoritmos para problemas de ajuste de datos que los empleados para problemas de mínimos cuadrados no lineales.

Ajuste de una ecuación exponencial no lineal usando ajuste de curvas por mínimos cuadrados.


Resolución de ecuaciones no lineales

Optimization Toolbox implementa un algoritmo dogleg trust-region para resolver un sistema de ecuaciones no lineales en donde hay tantas ecuaciones como incógnitas. Esta toolbox también puede resolver este problema utilizando los algoritmos de trust-region y Levenberg-Marquardt.

Resolución de una función Rosenbrock n-dimensional utilizando el solver de ecuaciones no lineales.


El cálculo paralelo y las derivadas

Los solvers de Optimization Toolbox para problemas no lineales emplean métodos basados en gradientes a fin de minimizar o maximizar un objetivo. La información sobre el gradiente de la función objetivo será calculada por el solver mediante diferencias finitas, o bien el usuario se la suministrará al solver.


Cálculo paralelo

Optimization Toolbox puede utilizarse con Parallel Computing Toolbox para resolver problemas que se beneficien del cálculo paralelo. Puede utilizar el cálculo paralelo a fin de reducir el tiempo de búsqueda de la solución activando el soporte incorporado de cálculo paralelo, o definiendo una implementación de cálculo paralelo personalizada en un problema de optimización.

La compatibilidad incorporada de Optimization Toolbox con el cálculo paralelo permite acelerar el paso de estimación del gradiente en ciertos solvers para problemas generales de optimización no lineal, mínimos cuadrados no lineales, sistemas de ecuaciones no lineales y problemas multiobjetivo.

Puede personalizar una implementación de cálculo paralelo definiendo explícitamente el problema de optimización para usar la funcionalidad de cálculo paralelo. Puede definir una función objetivo o una función de restricción para utilizar el cálculo paralelo, lo que le permite reducir el tiempo requerido a fin de evaluar el objetivo o la restricción.

Resuelva problemas de optimización en menos tiempo con Parallel Computing Toolbox.

Reducción del tiempo para llegar a la solución de un problema de electrostática gracias a la compatibilidad incorporada de cálculo paralelo en un solver de optimización no lineal. La funcionalidad incorporada se activa especificando la opción UseParallel (izquierda) para las funciones objetivo (arriba a la derecha) y de restricciones (abajo a la derecha), con la solución mostrada a la izquierda.


Suministro de derivadas

Los solvers de Optimization Toolbox minimizan las funciones no lineales mediante la estimación de las derivadas parciales de la función objetivo mediante diferencias finitas. Si lo prefiere, puede definir funciones que calculen los valores de las derivadas parciales, lo cual reduce significativamente la sobrecarga en el paso de estimación de derivadas.

El cálculo de las derivadas parciales de una función objetivo puede ser una tarea tediosa. Si el problema se expresa simbólicamente mediante Symbolic Math Toolbox™, es posible utilizar las funciones incorporadas para calcular automáticamente las derivadas parciales de la función objetivo. A continuación, se puede generar código MATLAB para su uso en los solvers de Optimization Toolbox.

Optimización mediante derivadas simbólicas (artículo técnico)