Optimization Toolbox

Solucione problemas de optimización lineal, cuadrática, cónica, entera y no lineal

Optimization Toolbox™ proporciona funciones para hallar parámetros que minimicen o maximicen los objetivos y respeten las restricciones. Esta toolbox incluye solvers para programación lineal (LP), programación lineal entera mixta (MILP), programación cuadrática (QP), programación cónica de segundo orden (SOCP), programación no lineal (NLP), mínimos cuadrados lineales con restricciones, mínimos cuadrados no lineales y ecuaciones no lineales.

Puede definir su problema de optimización con funciones y matrices, o bien especificando expresiones de variables que reflejen la matemática subyacente. Puede utilizar la diferenciación automática de funciones objetivo y de restricción para obtener soluciones más rápidas y precisas.

Puede utilizar los solvers de la toolbox para hallar las soluciones óptimas a problemas continuos y discretos, realizar análisis de tradeoff e incorporar métodos de optimización en algoritmos y aplicaciones. La toolbox permite realizar tareas de optimización de diseños, incluidas la estimación de parámetros, la selección de componentes y el ajuste de parámetros. Permite hallar las soluciones óptimas en aplicaciones tales como optimización de carteras, gestión y trading de energía, y planificación de producción.

Comience:

FICHAS DE AYUDA GRATUITAS

9 fichas de ayuda de MATLAB para data science y machine learning

Encuentre el comando adecuado para las tareas más frecuentes de su flujo de trabajo.

Obtener fichas de ayuda

Definición de problemas de optimización

Modele un problema de diseño o de decisión como un problema de optimización. Configure los parámetros de diseño y las decisiones como variables de optimización. Utilícelas para definir una función objetivo y aplique restricciones para limitar los posibles valores de las variables.

Modelado

Convierta la descripción de un problema en una expresión matemática definiendo variables, objetivos y restricciones para que se pueda resolver con técnicas de optimización.

Optimización basada en el problema

Escriba objetivos y restricciones con expresiones de variables de optimización. Resuelva problemas de forma más rápida y robusta con la diferenciación automática en las expresiones no lineales. Aplique un solver seleccionado automáticamente.

Optimización basada en el solver

Escriba restricciones y objetivos no lineales usando funciones; escriba restricciones y objetivos lineales usando matrices de coeficientes. Cree y resuelva el problema de forma interactiva con la tarea Optimize de Live Editor y, después, genere código para compartirlo o usarlo en su aplicación.

Solución de problemas de optimización

Aplique un solver al problema de optimización para encontrar una solución óptima: un conjunto de valores de variables de optimización que produzcan el valor óptimo de la función objetivo, si existe, y cumplan con las restricciones, de haberlas.

Elección de un solver

Utilice la tarea Optimize de Live Editor para elegir un solver adecuado para el tipo de problema cuando utilice el enfoque basado en el solver. El solver se selecciona automáticamente cuando utiliza el enfoque basado en el problema.

Configuración de opciones

Configure las opciones de optimización para ajustar el proceso de optimización; por ejemplo, para elegir el algoritmo de optimización que debe usar el solver, o bien para establecer las condiciones de finalización. Configure las opciones para supervisar y representar el progreso del solver de optimización.

Revisión y mejora de los resultados

Revise los mensajes de salida, las medidas de optimalidad y la visualización iterativa para evaluar la solución. Mejore el rendimiento en los problemas no lineales utilizando diferenciación automática, proporcionando gradientes o utilizando el cálculo paralelo para estimar los gradientes.

Supervisión del progreso de un solver con la visualización iterativa.

Programación no lineal

Resuelva problemas de optimización con un objetivo no lineal o que estén sujetos a restricciones no lineales.

Solvers

Aplique algoritmos cuasi-Newton, de región de confianza o simplex de Nelder-Mead para resolver problemas sin restricciones. Aplique algoritmos de punto interior, programación cuadrática secuencial (SQP) o región de confianza reflexiva para resolver problemas con restricciones.

Aplicaciones

Utilice la optimización no lineal para estimar y ajustar parámetros, encontrar los diseños óptimos, calcular las trayectorias óptimas, crear carteras robustas y para otras aplicaciones en las que exista una relación no lineal entre las variables.

Programación lineal, cuadrática y cónica

Resuelva problemas de optimización convexos con objetivos lineales o cuadráticos y con restricciones lineales o cónicas de segundo orden.

Solvers de programación lineal

Aplique algoritmos de simplex dual o punto interior para resolver problemas lineales.

Región factible y solución óptima de un programa lineal.

Solvers de programación cuadrática y cónica de segundo orden

Aplique algoritmos de punto interior, de conjunto activo o región de confianza reflexiva para resolver programas cuadráticos. Aplique métodos de punto interior para resolver programas cónicos de segundo orden.

Región factible y solución óptima de un programa cuadrático.

Aplicaciones

Utilice la programación lineal en problemas tales como asignación de recursos, planificación de la producción, mezclado y planificación de inversiones. Utilice la programación cuadrática y cónica de segundo orden en problemas tales como optimización de diseños, optimización de carteras y control de presas hidroeléctricas.

Estrategia de control óptima hallada con programación cuadrática.

Programación lineal entera mixta

Resuelva problemas de optimización con objetivos lineales y restricciones lineales, con la restricción adicional de que algunas o todas las variables deben tener valores enteros.

Solvers

Resuelva problemas de programación lineal entera mixta mediante el algoritmo de ramificación y acotación, que incluye preprocesamiento, heurística para generar puntos factibles y planos de corte.

Aplicación del algoritmo de ramificación y acotación. 

Algoritmos basados en programación lineal entera mixta

Utilice el solver de programación lineal entera mixta para crear algoritmos con fines especiales.

Recorrido más corto visitando cada ciudad solo una vez.

Aplicaciones

Modele con variables enteras cuando existan decisiones binarias o restricciones lógicas, así como cuando los valores de las variables deban ser enteros. La elaboración de itinerarios, programas, planificaciones, asignaciones y presupuestos de capital son aplicaciones típicas.

Planificación para dos generadores con precios de la electricidad variables.

Optimización multiobjetivo

Resuelva problemas de optimización que tengan varias funciones objetivo sujetas a un conjunto de restricciones.

Solvers

Formule los problemas bien como de consecución de objetivos o bien como minimax. Utilice la consecución de objetivos cuando existan valores objetivo ponderados opcionalmente para cada uno de los objetivos. Utilice minimax para minimizar el valor en el peor caso de un conjunto de funciones objetivo.

Frente de Pareto calculado con la función fgoalattain.

Aplicaciones

Utilice la optimización multiobjetivo cuando se requieran tradeoffs para objetivos en conflicto. Por ejemplo, el peso y la fuerza en el diseño estructural, y el riesgo y la rentabilidad en la optimización de carteras.

Respuesta de magnitud para los coeficientes iniciales y optimizados del filtro.

Resolución de mínimos cuadrados y ecuaciones

Resuelva problemas de mínimos cuadrados no lineales y sistemas de ecuaciones no lineales sujetos a restricciones de límites. Resuelva problemas de mínimos cuadrados lineales sujetos a restricciones de límites y lineales.

Comparación de los enfoques local y global.

Aplicaciones de mínimos cuadrados lineales

Utilice solvers de mínimos cuadrados lineales para ajustar un modelo lineal a datos adquiridos o resolver un sistema de ecuaciones lineales, incluso cuando los parámetros estén sujetos a restricciones de límites y lineales.

Recuperación de una imagen borrosa resolviendo un problema de mínimos cuadrados lineales.

Aplicaciones de mínimos cuadrados no lineales

Utilice solvers de mínimos cuadrados no lineales para ajustar un modelo no lineal a datos adquiridos o resolver un sistema de ecuaciones no lineales, incluso cuando los parámetros estén sujetos a restricciones de límites.`

Ajuste de una ruta circular al sistema de ecuaciones diferenciales ordinarias de Lorenz.

Despliegue

Cree herramientas de diseño y soporte de decisiones basadas en optimización, integre con sistemas empresariales y despliegue algoritmos de optimización en sistemas embebidos.

Soporte de MATLAB Compiler

Utilice MATLAB Compiler™ y MATLAB Compiler SDK™ para desplegar modelos de optimización de MATLAB® como ejecutables autónomos, apps web, librerías C/C++ compartidas, ensamblados Microsoft® .NET, clases de Java® y paquetes de Python®.

App que calcula la planificación de generación de energía óptima.

Generación de código

Genere código C o C++ portátil y legible para solucionar problemas de optimización con MATLAB Coder™. Compile el código generado para cualquier hardware, incluidos sistemas embebidos.

Informe de MATLAB Coder para una función de optimización de trayectoria.

Nuevas funcionalidades

Tarea Optimize de Live Editor

Cree y resuelva problemas de optimización de forma interactiva.

Diferenciación automática

Resuelva problemas de forma más rápida y precisa utilizando gradientes de funciones objetivo y de restricción calculados automáticamente.

Programación cónica de segundo orden

Resuelva problemas de optimización convexa con restricciones cónicas de segundo orden, restricciones lineales y un objetivo lineal.

Generación de código

Genere código C/C++ para solucionar sistemas de ecuaciones no lineales con fsolve (requiere MATLAB Coder).

Generación de código

Genere código C/C++ para solucionar problemas de mínimos cuadrados no lineales con lsqcurvefit o lsqnonlin (requiere MATLAB Coder).

Consulte las notas de la versión para obtener detalles sobre estas funcionalidades y las funciones correspondientes.