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