Main Content

OptimizationEquality

Igualdades y restricciones de igualdad

Desde R2019b

Descripción

Un objeto OptimizationEquality contiene igualdades y restricciones de igualdad en términos de objetos OptimizationVariable u objetos OptimizationExpression. Cada igualdad utiliza el operador de comparación ==.

Una declaración única puede representar un arreglo de igualdades. Por ejemplo, puede expresar las igualdades de que cada fila de una variable de matriz x sume hasta uno en esta declaración única:

constrsum = sum(x,2) == 1

Utilice objetos OptimizationEquality como restricciones en un OptimizationProblem o como ecuaciones en un EquationProblem.

Creación

Cree igualdades utilizando expresiones de optimización con el operador de comparación ==.

Incluya igualdades en la propiedad Constraints de un problema de optimización o en la propiedad Equations de un problema de ecuación utilizando notación de puntos.

prob = optimproblem;
x = optimvar('x',4,6);
SumToOne = sum(x,2) == 1;
prob.Constraints.SumToOne = SumToOne;
% Or for an equation problem:
eqprob = eqnproblem;
eqprob.Equations.SumToOne = SumToOne;

También puede crear una igualdad de optimización vacía utilizando optimeq o optimconstr. Habitualmente, luego se establecen las igualdades en un bucle. Para ver un ejemplo, consulte Crear igualdades en un bucle. No obstante, para formular el problema de forma más eficiente, evite establecer igualdades en bucles. Consulte Create Efficient Optimization Problems.

Propiedades

expandir todo

Nombres de índices, especificados como un arreglo de celdas de cadenas o vectores de caracteres. Para obtener más información sobre cómo utilizar nombres de índices, consulte Named Index for Optimization Variables.

Tipos de datos: cell

Esta propiedad o parámetro es de solo lectura.

Variables de optimización en el objeto, especificadas como una estructura de objetos OptimizationVariable.

Tipos de datos: struct

Funciones del objeto

infeasibilityVulneración de restricciones en un punto
showMuestre información sobre el objeto de optimización
writeSave optimization object description

Ejemplos

contraer todo

Cree una matriz variable de optimización de 4 por 6 llamada x.

x = optimvar('x',4,6);

Cree las igualdades de que cada fila de x sume hasta uno.

constrsum = sum(x,2) == 1
constrsum = 
  4x1 Linear OptimizationEquality array with properties:

    IndexNames: {{}  {}}
     Variables: [1x1 struct] containing 1 OptimizationVariable

  See equality formulation with show.

Visualice las igualdades.

show(constrsum)
(1, 1)

  x(1, 1) + x(1, 2) + x(1, 3) + x(1, 4) + x(1, 5) + x(1, 6) == 1

(2, 1)

  x(2, 1) + x(2, 2) + x(2, 3) + x(2, 4) + x(2, 5) + x(2, 6) == 1

(3, 1)

  x(3, 1) + x(3, 2) + x(3, 3) + x(3, 4) + x(3, 5) + x(3, 6) == 1

(4, 1)

  x(4, 1) + x(4, 2) + x(4, 3) + x(4, 4) + x(4, 5) + x(4, 6) == 1

Para incluir las igualdades en un problema de optimización, establezca una propiedad Constraints en constrsum utilizando notación de puntos.

prob = optimproblem;
prob.Constraints.constrsum = constrsum
prob = 
  OptimizationProblem with properties:

       Description: ''
    ObjectiveSense: 'minimize'
         Variables: [1x1 struct] containing 1 OptimizationVariable
         Objective: [0x0 OptimizationExpression]
       Constraints: [1x1 struct] containing 1 OptimizationConstraint

  See problem formulation with show.

De forma similar, para incluir las igualdades en un problema de ecuación, establezca una propiedad Constraints en constrsum utilizando notación de puntos.

eqnprob = eqnproblem;
eqnprob.Equations.constrsum = constrsum
eqnprob = 
  EquationProblem with properties:

    Description: ''
      Variables: [1x1 struct] containing 1 OptimizationVariable
      Equations: [1x1 struct] containing 1 OptimizationEquality

  See problem formulation with show.

Cree un objeto OptimizationEquality vacío.

eq1 = optimeq;

Cree un arreglo de variables de optimización de 5 por 5 denominado x.

x = optimvar('x',5,5);

Cree las igualdades de que la fila i de x sume hasta i2.

for i = 1:size(x,1)
    eq1(i) = sum(x(i,:)) == i^2;
end

Visualice las igualdades resultantes.

show(eq1)
(1, 1)

  x(1, 1) + x(1, 2) + x(1, 3) + x(1, 4) + x(1, 5) == 1

(1, 2)

  x(2, 1) + x(2, 2) + x(2, 3) + x(2, 4) + x(2, 5) == 4

(1, 3)

  x(3, 1) + x(3, 2) + x(3, 3) + x(3, 4) + x(3, 5) == 9

(1, 4)

  x(4, 1) + x(4, 2) + x(4, 3) + x(4, 4) + x(4, 5) == 16

(1, 5)

  x(5, 1) + x(5, 2) + x(5, 3) + x(5, 4) + x(5, 5) == 25

Para usar eq1 como una restricción en un problema de optimización, establezca eq1 como una propiedad Constraints utilizando notación de puntos.

prob = optimproblem;
prob.Constraints.eq1 = eq1;

De forma similar, para usar eq1 como un conjunto de ecuaciones en un problema de ecuación, establezca eq1 como una propiedad Equations utilizando notación de puntos.

eqprob = eqnproblem;
eqprob.Equations.eq1 = eq1;

Historial de versiones

Introducido en R2019b