Características principales

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

Las técnicas de optimización permiten localizar un conjunto de parámetros de diseño o decisiones que ofrecen el mejor resultado posible. Un problema de optimización es un modelo de un problema de diseño o decisión. Puede modelar los parámetros de diseño o las decisiones como variables de optimización. Los demás componentes de un problema de optimización son las funciones objetivo y, si son aplicables, las restricciones. La función objetivo calcula la cantidad deseada que se debe minimizar o maximizar. Las restricciones limitan los valores posibles para las variables de optimización.

Los problemas de mínimos cuadrados y los sistemas de ecuaciones no lineales son problemas de optimización porque se resuelven al minimizar una suma de cuadrados.

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 de optimización basado en problemas

Defina sus objetivos y restricciones con el flujo de trabajo basado en problemas utilizando expresiones generadas con las variables de optimización. Puede utilizar este enfoque para resolver problemas de optimización lineal y lineal entera mixta.

Utilice el modelado basado en problemas para determinar una planificación de generación óptima.


Modelado de optimización basado en solvers

Defina sus objetivos y restricciones con el flujo de trabajo basado en solvers. Puede utilizar funciones o matrices con las variables de optimización que requiera el solver que seleccione. Puede utilizar este enfoque con todos los solvers disponibles en Optimization Toolbox.

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.

Utilice el modelado basado en solvers para determinar una cartera óptima.


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 cuando utilice el enfoque basado en solvers. Cuando utilice el enfoque basado en problemas, el solver adecuado se seleccionará automáticamente.

Optimization Toolbox ofrece una amplia gama de funciones para que pueda resolver muchos tipos de problemas de optimización utilizando una llamada de función individual. También puede utilizar estas funciones para crear un algoritmo de optimización más complejo, como un algoritmo de generación de columnas, o en algoritmos donde la optimización sea uno de los pasos, como la planificación de movimiento en robots.

Resuelva un problema de conjunto de corte con la generación de columnas.


Configuración de opciones

Las opciones de los solvers le permiten ajustar o modificar el proceso de optimización y visualizar el progreso del solver.

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

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 utilizando diferencias finitas. Puede reducir significativamente la sobrecarga en el paso de estimación de derivadas mediante la definición de funciones que calculen los valores de las derivadas parciales.

El cálculo de las derivadas parciales de una función objetivo puede ser bastante tedioso. Puede utilizar las funciones incorporadas para calcular automáticamente las derivadas parciales de la función objetivo expresando el problema de forma simbólica mediante Symbolic Math Toolbox™. Entonces puede generar código de MATLAB que puede utilizar con los solvers de Optimization Toolbox.


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 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 trust-region reflective se emplea únicamente para los problemas con restricciones de límite o las igualdades lineales. Es especialmente útil en los problemas a gran escala.

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 tres 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.
En este webinario mostraremos cómo se puede utilizar MATLAB para resolver problemas de optimización utilizando un ejemplo de programación cuadrática y las herramientas de matemática simbólica de 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 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 solver de optimización para programación lineal entera mixta en la versión 2014a. Este nuevo solver 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 dos algoritmos para resolver problemas de mínimos cuadrados lineales con restricciones:

  • El algoritmo 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 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.


Cálculo paralelo

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 reducir el tiempo de una 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 un 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)