Main Content

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.

optimproblem

Crear un problema de optimización

Descripción

ejemplo

prob = optimproblem crea un problema de optimización con las propiedades predeterminadas.

ejemplo

prob = optimproblem(Name,Value) utiliza opciones adicionales especificadas por uno o más argumentos de par.Name,Value Por ejemplo, para especificar un problema de maximización en lugar de un problema de minimización, utilice.prob = optimproblem('ObjectiveSense','maximize')

Ejemplos

contraer todo

Cree un problema de optimización con las propiedades predeterminadas.

prob = optimproblem
prob =    OptimizationProblem with properties:         Description: ''     ObjectiveSense: 'minimize'          Variables: [0x0 struct] containing 0 OptimizationVariables          Objective: [0x0 OptimizationExpression]        Constraints: [0x0 struct] containing 0 OptimizationConstraints    No problem defined.  

Crear un problema de programación lineal para la maximización. El problema tiene dos variables positivas y tres restricciones de desigualdad lineales.

prob = optimproblem('ObjectiveSense','max');

Crear variables positivas. Incluya una función objetiva en el problema.

x = optimvar('x',2,1,'LowerBound',0); prob.Objective = x(1) + 2*x(2);

Cree restricciones de desigualdad lineales en el problema.

cons1 = x(1) + 5*x(2) <= 100; cons2 = x(1) + x(2) <= 40; cons3 = 2*x(1) + x(2)/2 <= 60; prob.Constraints.cons1 = cons1; prob.Constraints.cons2 = cons2; prob.Constraints.cons3 = cons3;

Revisa el problema.

showproblem(prob)
  OptimizationProblem :    max :        x(1) + 2*x(2)   subject to cons1:        x(1) + 5*x(2) <= 100   subject to cons2:        x(1) + x(2) <= 40   subject to cons3:        2*x(1) + 0.5*x(2) <= 60   variable bounds:        0 <= x(1)        0 <= x(2) 

Resuelve el problema.

sol = solve(prob);
Optimal solution found. 
sol.x
ans = 2×1

   25.0000
   15.0000

Argumentos de entrada

contraer todo

Argumentos de par nombre-valor

Especifique pares de argumentos separados por comas opcionales. es el nombre del argumento y es el valor correspondiente. deben aparecer dentro de las cotizaciones.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como.Name1,Value1,...,NameN,ValueN

Ejemplo: Para especificar un problema de maximización, utilice.prob = optimproblem('ObjectiveSense','maximize')

Restricciones de problemas, especificadas como una matriz o una estructura con matrices como campos.OptimizationConstraintOptimizationConstraint

Ejemplo: prob = optimproblem('Constraints',sum(x,2) == 1)

Etiqueta de problema, especificada como una cadena o un vector de caracteres. El software no se utiliza para el cálculo. es una etiqueta arbitraria que puede utilizar por cualquier motivo.DescripciónDescripción Por ejemplo, puede compartir, archivar o presentar un modelo o problema y almacenar información descriptiva sobre el modelo o el problema en la propiedad.Descripción

Ejemplo: prob = optimproblem('Description',"An iterative approach to the Traveling Salesman problem")

Tipos de datos: char | string

Función objetiva, especificada como un objeto escalar.OptimizationExpression

Ejemplo: para una variable 2-Dprob = optimproblem('Objective',sum(sum(x)))x

Sentido de optimización, especificado como o.'minimize''maximize' También puede especificar para obtener o obtener.'min''minimize''max''maximize' La función minimiza el objetivo cuando es y maximiza el objetivo cuando es.solveObjectiveSense'minimize'ObjectiveSense'maximize'

Ejemplo: prob = optimproblem('ObjectiveSense','max')

Tipos de datos: char | string

Argumentos de salida

contraer todo

Problema de optimización, devuelto como un objeto.OptimizationProblem Normalmente, para completar la descripción del problema, se especifica una función objetiva y restricciones lineales. Sin embargo, puede tener un problema de viabilidad, que no tiene ninguna función objetiva, o puede tener un problema sin restricciones lineales. Resuelve un problema completo llamando.solve

Introducido en R2017b