OptimizationConstraint

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

Описание

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

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

constrsum = sum(x,2) == 1

Создание

Создайте ограничения с помощью выражений оптимизации с одним из этих операторов сравнения: ==, <= или >=.

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

prob = optimproblem;
x = optimvar(x,4,6);
SumToOne = sum(x,2) == 1;
prob.Constraints.SumToOne = SumToOne;

Можно также создать пустое ограничение оптимизации при помощи optimconstr. Как правило, вы затем заполняете выражение в цикле. Для примеров смотрите страницу ссылки на функцию optimconstr.

Свойства

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

Имена индексов, заданные как массив ячеек строк или векторов символов. Для получения информации об использовании имен индексов смотрите Названный Индекс для Переменных Оптимизации.

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

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

infeasibilityОграничительное нарушение в точке
showconstrОтобразите ограничение оптимизации
writeconstrСохраните ограничительное описание оптимизации

Примеры

свернуть все

Создайте 4 6 матрица переменной оптимизации, названная x.

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

Создайте ограничения, которые каждая строка x суммирует одному.

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

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

  See constraint formulation with showconstr.

Просмотрите ограничения.

showconstr(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

Чтобы включать ограничения в задачу оптимизации, используйте запись через точку.

prob = optimproblem;
prob.Constraints.constrsum = constrsum;

Введенный в R2017b