Optimization Toolbox

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
  • App de Optimización para definir y resolver problemas de optimización, así como supervisar el progreso de la solución
  • Aceleración de solvers no lineales con restricciones mediante 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
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 que ofrece 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.

Modelado matemático con optimización (primera parte)
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.

Modelado matemático con optimización (segunda parte)
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 definiciones de problemas, opciones de algoritmos y resultados entre el área de trabajo de MATLAB® y la App de Optimización
  • Generar automáticamente el código MATLAB para capturar el trabajo y automatizar las tareas
  • Acceder a solvers de Global Optimization Toolbox

Introducción a Optimization Tool
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 un 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 App de Optimización.

Setting Options for Optimizations
Set options with optimoptions in Optimization Toolbox™ to tune solvers and monitor optimization progress.

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 la optimización no lineal con y sin restricciones, así como solvers para la 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 cuasi-Newton emplea un procedimiento mixto de búsqueda cúbica y cuadrática y la fórmula BFGS (Broyden-Fletcher-Goldfarb-Shanno) para actualizar las aproximaciones de la matriz hessiana.
  • El algoritmo de 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 controla funciones objetivo no diferenciables. Global Optimization Toolbox proporciona algoritmos de optimización adicionales sin derivadas para la optimización no lineal.
  • El algoritmo de región de confianza se emplea para problemas no lineales sin restricciones y es especialmente útil en problemas a gran escala donde se puede aprovechar 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.
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 de punto interior se emplea para la optimización no lineal general. Es especialmente útil para problemas a gran escala que tienen dispersión o estructura y es tolerante a fallos de evaluación en funciones objetivo y 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 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 de conjunto activo se emplea para la optimización no lineal general.
  • El algoritmo reflexivo de región de confianza se emplea únicamente para los problemas con restricciones de límite o para igualdades lineales. Es especialmente útil en los problemas a gran escala.

Los algoritmos de punto interior y reflexivo de región de confianza permiten estimar matrices hessianas utilizando diferentes enfoques.

En el caso del algoritmo de punto interior, 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 reflexivo de región de confianza, puede emplear:

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

Además, los algoritmos de punto interior y reflexivo de región de confianza le permiten calcular los productos hessiana-por-vector en una función sin tener que formar la matriz hessiana explícitamente.

Utilización de la programación no lineal con restricciones para diseñar un sistema de suspensión óptimo.
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 sujetas a restricciones de límite, igualdad lineal y desigualdad. 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 tres algoritmos utilizados para resolver problemas de programación lineal:

  • El algoritmo símplex es un procedimiento sistemático para generar y probar soluciones vértice candidatas de un programa lineal. El algoritmo símplex es el algoritmo de uso más extendido para la programación lineal.
  • El algoritmo de punto interior se basa en un algoritmo primal-dual predictor-corrector que se emplea para resolver problemas de programación lineal. El punto interior es especialmente útil para problemas a gran escala que tienen estructura o pueden definirse utilizando matrices dispersas.
  • El algoritmo de conjunto activo minimiza el objetivo en cada iteración con respecto al conjunto activo (un subconjunto de las restricciones que están activas localmente) hasta que llega a una solución.
Programación lineal utilizada en el diseño de una planta para generar energía eléctrica y de vapor.
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 implican la minimización de una función cuadrática multivariable sujeta a restricciones de límite, desigualdad e igualdad lineal. La programación cuadrática se emplea para la optimización de carteras en finanzas, de la producción de energía para compañías eléctricas, del diseño en la ingeniería y en otras aplicaciones.

Optimization Toolbox incluye tres algoritmos para resolver los problemas de programación cuadrática:

  • El algoritmo de punto interior convexo resuelve los problemas convexos con cualquier combinación de restricciones.
  • El algoritmo reflexivo de región de confianza resuelve los problemas con restricciones de límite o con restricciones de igualdad lineales.
  • El algoritmo de conjunto activo resuelve los problemas con cualquier combinación de restricciones.

Optimization in MATLAB: An Introduction to Quadratic Programming
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 de punto interior convexo como el algoritmo reflexivo de región de confianza 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 de álgebra lineal internas optimizadas, 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 al estilo de basarse en rentabilidades para tres mutual funds
Programación cuadrática utilizada para realizar un análisis al estilo de basarse en rentabilidades para tres mutual funds.

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 solo deben tener valores enteros en la solución óptima.

Programación Lineal Entera Mixta en MATLAB
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.

Mixed-Integer Linear Programming in MATLAB 34:08
Learn how to use the new optimization solver for mixed-integer linear programming in Release 2014a. This new solver enables you to solve optimization problems in which some or all of the variables are constrained to take on integer values. 

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.
  • verifica que no sea posible otra solución factible mejor mediante un algoritmo de ramificación y acotación que resuelve una serie de problemas de relajación de programación lineal.
Utilización de un problema de programación entera para determinar qué inversiones se deben realizar.
Utilización de un problema de programación entera para determinar qué inversiones se deben realizar.

Despliegue

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 independientes 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 Java® y .NET, mediante los productos de MATLAB Builder™.

Optimización multiobjetivo

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

  • El problema de consecución de objetivos implica la reducción del valor de una función vectorial lineal o no lineal para alcanzar los valores objetivo de un vector objetivo dado. La importancia relativa de los objetivos se indica mediante un vector de pesos. El problema de consecución de objetivos 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 sujeta 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 enfoque de conjunto activo.

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

Optimización multiobjetivo empleada para diseñar un filtro de paso bajo.
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 utiliza dos algoritmos para resolver problemas de mínimos cuadrados lineales con restricciones:

  • El algoritmo de conjunto activo se emplea para resolver problemas con límites y desigualdades o igualdades lineales.
  • El algoritmo reflexivo de región de confianza se emplea para resolver problemas de gran escala que solo tienen restricciones de límite.

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

  • El algoritmo reflexivo de región de confianza implementa el algoritmo Levenberg-Marquardt usando un enfoque de región de confianza. Se aplica a los problemas sin restricciones y los problemas con restricciones con 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 una ecuación trascendental usando mínimos cuadrados no lineales.

Ajuste de datos

Esta toolbox brinda una interfaz especializada para problemas de ajuste de datos en la que puede buscar 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 que utiliza para problemas de mínimos cuadrados no lineales.

Ajuste de una ecuación exponencial no lineal usando ajuste de curvas por mínimos cuadrados.
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 de región de confianza dogleg 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 reflexivo de región de confianza y Levenberg-Marquardt.

Resolución de una función Rosenbrock <i>n</i>-dimensional mediante el solver de ecuaciones no lineales.
Resolución de una función Rosenbrock n-dimensional mediante 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 la suministrará al solver.

Cálculo paralelo

Optimization Toolbox se puede utilizar con Parallel Computing Toolbox para resolver problemas que se benefician del cálculo paralelo. Puede utilizar cálculo paralelo para reducir el tiempo para llegar a una solución activando el soporte de cálculo paralelo incorporado o definiendo una implementación de cálculo paralelo personalizada de un problema de optimización.

La compatibilidad incorporada en Optimization Toolbox para el cálculo paralelo permite acelerar el paso de estimación del gradiente en ciertos solvers para problemas de optimización no lineal con restricciones y problemas minimax y de consecución de objetivos multiobjetivo.

Reducción del tiempo para llegar a la solución de un problema de electrostática gracias al soporte incorporado para el cálculo paralelo en un solver de optimización no lineal. La funcionalidad incorporada se activa mediante la especificación de la opción <tt>UseParallel</tt> (izquierda) para las funciones objetivo (centro a la derecha) y de restricción (abajo a la derecha), con la solución mostrada arriba a la derecha.
Reducción del tiempo para llegar a la solución de un problema de electrostática gracias al soporte incorporado para el cálculo paralelo en un solver de optimización no lineal. La funcionalidad incorporada se activa mediante la especificación de la opción UseParallel (izquierda) para las funciones objetivo (centro a la derecha) y de restricción (abajo a la derecha), con la solución mostrada arriba a la derecha.

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 que utilice el cálculo paralelo, lo que le permite reducir el tiempo necesario para evaluar el objetivo o la restricción.

Verkürzung der Rechenzeit (oben rechts) für ein Modell einer Fahrwerksaufhängung (unten links und unten rechts) mit Messunsicherheiten; die Zielfunktion muss dazu lediglich durch Veränderung einer einzigen Codezeile angepasst werden (oben links).

Aceleración del tiempo para llegar a una solución (arriba a la derecha) para el diseño de un sistema de suspensión (abajo a la izquierda y abajo a la derecha) sujeto a incertidumbre personalizando la función objetivo con el cambio de una sola línea de código (arriba a la izquierda).

Aceleración de problemas de optimización usando cálculo paralelo
Resuelva problemas de optimización en menos tiempo con Parallel Computing Toolbox.

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 a través de 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 de MATLAB para su uso con los solvers de Optimization Toolbox.

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

Trucos y Consejos – Iniciación al uso de Optimización con MATLAB

Ver seminario virtual