Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Flujo de trabajo basado en problemas

Nota

Existen dos enfoques diferentes para resolver problemas de optimización de un solo objetivo.Optimization Toolbox™ En esta sección se describe el enfoque basado en problemas. describe el enfoque basado en el solucionador.Configuración de problemas de optimización basada en Solver

Para resolver un problema de optimización, realice los pasos siguientes.

  • Cree un objeto problemático mediante.optimproblem Un objeto problemático es un contenedor que se rellena con expresiones objetivas y de restricción. Estas expresiones definen el problema, junto con los límites que existen en las variables de problema.

    Por ejemplo, cree un problema de maximización.

    prob = optimproblem('ObjectiveSense','maximize');
  • Cree variables con nombre mediante.optimvar Una variable de optimización es una variable simbólica que se utiliza para describir el objetivo del problema y las restricciones. Incluya los límites en las definiciones de variables.

    Por ejemplo, cree una matriz de 15 por 3 de variables binarias nombradas.'x'

    x = optimvar('x',15,3,'Type','integer','LowerBound',0,'UpperBound',1);
  • Defina la función objetiva en el objeto problemático como una expresión en las variables nombradas.

    Nota

    Si tiene una función no lineal que no es una expresión polinómica o racional, conviértalo en una expresión de optimización utilizando.fcn2optimexpr Ver.Convertir función no lineal a expresión de optimización

    Por ejemplo, supongamos que tiene una matriz real del mismo tamaño que una matriz de variables, y el objetivo es la suma de las entradas en tiempos de las variables correspondientes.fxfx

    prob.Objective = sum(sum(f.*x));
  • Defina restricciones en el objeto problemático como expresiones en las variables con nombre.

    Nota

    Si tiene una función no lineal que no es una expresión polinómica o racional, conviértalo en una expresión de optimización utilizando.fcn2optimexpr Ver.Convertir función no lineal a expresión de optimización

    Por ejemplo, supongamos que la suma de las variables en cada fila de debe ser uno, y la suma de las variables en cada columna debe ser no más de uno.x

    onesum = sum(x,2) == 1; vertsum = sum(x,1) <= 1; prob.Constraints.onesum = onesum; prob.Constraints.vertsum = vertsum;
  • Resuelva el problema de optimización utilizando.solve

    sol = solve(prob);

Además de estos pasos básicos, puede revisar la definición del problema antes de resolver el problema mediante el uso y las funciones relacionadas.showproblem Establezca las opciones para mediante el uso, como se explica en.solveoptimoptionsCambiar solucionador predeterminado u opciones

Para un ejemplo básico de programación lineal de enteros mixtos, vea o la versión de vídeo.Fundamentos de programación lineal de enteros mixtos: basado en problemasResuelva un problema de programación lineal de enteros mixtos mediante el modelado de optimización Para ver un ejemplo no lineal, consulte.Resuelva un problema no lineal restringido, basado en problemas Para obtener ejemplos más extensos, vea, o.Optimización no lineal basada en problemasProgramación lineal y programación lineal de enteros mixtosProgramación cuadrática

Consulte también

| | |

Temas relacionados