exponenta event banner

OptimizationConstraint

Ограничения оптимизации

Описание

Один OptimizationConstraint объект содержит ограничения в терминах OptimizationVariable объекты или OptimizationExpression объекты. Каждое ограничение использует один из следующих операторов сравнения: ==, <=, или >=.

Одна инструкция может представлять массив ограничений. Например, можно выразить ограничения, которые накладываются на каждую строку переменной матрицы. x сумма к единице, как показано в разделе Создание простых ограничений в цикле.

Создание

Создание пустого объекта ограничения с помощью optimconstr. Обычно для заполнения выражений в объекте используется цикл.

При создании выражений оптимизации из переменных оптимизации с помощью операторов сравнения ==, <=, или >=, то результирующий объект является либо OptimizationEquality или OptimizationInequality. См. раздел Вопросы совместимости.

Включить ограничения в Constraints свойство задачи оптимизации с помощью точечной нотации.

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;

Свойства

развернуть все

Имена индексов, заданные как массив ячеек строк или векторов символов. Сведения об использовании имен индексов см. в разделе Именованный индекс для переменных оптимизации.

Типы данных: cell

Это свойство доступно только для чтения.

Переменные оптимизации в объекте, указанные как структура OptimizationVariable объекты.

Типы данных: struct

Функции объекта

infeasibilityНарушение ограничения в точке
showОтображение информации об объекте оптимизации
writeСохранить описание объекта оптимизации

Примеры

свернуть все

Создание переменной оптимизации 5 на 3 x.

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

Создайте ограничение, которое каждая строка суммирует с помощью цикла. Инициализация цикла с помощью optimconstr.

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

Осмотрите rowsum объект.

rowsum
rowsum = 
  5x1 Linear OptimizationConstraint array with properties:

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

  See constraint formulation with show.

Показать ограничения в 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

Вопросы совместимости

развернуть все

В R2019b изменилось поведение

Представлен в R2017b