OptimizationConstraint

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

Описание

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

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

Создание

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

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

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

prob = optimproblem;
x = optimvar('x',5,3);
rowsum = sum(x,2);
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