Main Content

La traducción de esta página está obsoleta. Haga clic aquí para ver la última versión en inglés.

optimproblem

Cree un problema de optimización

Descripción

Utilice optimproblem para crear un problema de optimización.

Sugerencia

Para ver el flujo de trabajo completo, consulte Problem-Based Optimization Workflow.

ejemplo

prob = optimproblem crea un problema de optimización con 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 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.

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

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

Cree variables positivas. Incluya una función objetivo 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;

Revise el problema.

show(prob)
  OptimizationProblem : 

	Solve for:
       x

	maximize :
       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)

Resuelva el problema.

sol = solve(prob);
Solving problem using linprog.

Optimal solution found.
sol.x
ans = 2×1

   25.0000
   15.0000

Argumentos de entrada

contraer todo

Argumentos de par nombre-valor

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

Especifique argumentos opcionales de par Name,Value separados por comas. Name es el nombre del argumento y Value el valor correspondiente. Name debe aparecer entre comillas. Puede especificar varios argumentos de par nombre-valor en cualquier orden, como Name1,Value1,...,NameN,ValueN.

Restricciones de problema, especificadas como un arreglo OptimizationConstraint o una estructura con arreglos OptimizationConstraint como campos.

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

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

Ejemplo: "An iterative approach to the Traveling Salesman problem"

Tipos de datos: char | string

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

Ejemplo: prob = optimproblem('Objective',sum(sum(x))) para una variable x en 2D

Sentido de optimización, especificado como 'minimize' o 'maximize'. También puede especificar 'min' para obtener 'minimize' o 'max' para obtener 'maximize'. La función solve minimiza el objetivo cuando ObjectiveSense es 'minimize' y maximiza el objetivo cuando ObjectiveSense es '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. Habitualmente, para completar la descripción del problema se especifican una función objetivo y restricciones. No obstante, puede tener un problema de factibilidad, que no tiene función objetivo, o puede tener un problema sin restricciones. Resuelva un problema completo llamando a solve.

Advertencia

El enfoque basado en problemas no es compatible con valores complejos en una función objetivo, igualdades no lineales o desigualdades no lineales. Si el cálculo de una función tiene un valor complejo, incluso como valor intermedio, el resultado final puede ser incorrecto.

Historial de versiones

Introducido en R2017b