Contenuto principale

OptimizationConstraint

Vincoli di ottimizzazione

Descrizione

Un oggetto OptimizationConstraint contiene vincoli espressi in termini di oggetti OptimizationVariable o oggetti OptimizationExpression. Ogni vincolo utilizza uno dei seguenti operatori di confronto: ==, <= o >=.

Una singola dichiarazione può rappresentare un array di vincoli. Ad esempio, è possibile esprimere i vincoli secondo cui la somma di ogni riga di una variabile matriciale x è pari a uno, come mostrato in Creazione di vincoli semplici in un loop.

Creazione

Creare un oggetto vincolo vuoto utilizzando optimconstr. In genere, si utilizza un loop per compilare le espressioni nell'oggetto.

Se si crea un'espressione di ottimizzazione a partire da variabili di ottimizzazione utilizzando gli operatori di confronto ==, <= o >=, l'oggetto risultante sarà OptimizationEquality oppure OptimizationInequality. Vedere Cronologia versioni.

Includere i vincoli nella proprietà Constraints di un problema di ottimizzazione utilizzando la notazione a punto.

prob = optimproblem;
x = optimvar('x',5,3);
rowsum = optimconstr(5);
for i = 1:5
    rowsum(i) = sum(x(i,:)) == i;
end
prob.Constraints.rowsum = rowsum;

Proprietà

espandi tutto

Nomi degli indici, specificati come array di celle di stringhe o di vettori di caratteri. Per informazioni sull'utilizzo dei nomi degli indici, vedere Named Index for Optimization Variables.

Tipi di dati: cell

proprietà è di sola lettura.

Variabili di ottimizzazione nell'oggetto, specificate come struttura di oggetti OptimizationVariable.

Tipi di dati: struct

Funzioni oggetto

evaluateEvaluate optimization expression or objectives and constraints in problem
infeasibilityConstraint violation at a point
issatisfiedConstraint satisfaction of an optimization problem at a set of points
showDisplay information about optimization object
writeSave optimization object description

Esempi

comprimi tutto

Creare una variabile di ottimizzazione x di 5×3.

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

Creare il vincolo secondo cui la somma di ogni riga sia pari a uno utilizzando un loop. Inizializzare il loop utilizzando optimconstr.

rowsum = optimconstr(5);
for i = 1:5
    rowsum(i) = sum(x(i,:)) == 1;
end

Esaminare l'oggetto rowsum.

rowsum
rowsum = 
  5×1 Linear OptimizationConstraint array with properties:

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

  See constraint formulation with show.

Mostrare i vincoli in rowsum.

show(rowsum)
(1, 1)

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

(2, 1)

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

(3, 1)

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

(4, 1)

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

(5, 1)

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

Cronologia versioni

Introdotto in R2017b

espandi tutto