Ограниченные ограничения

Нижняя и верхняя границы ограничивают компоненты x решения.

Если вы знаете границы расположения оптимума, можно получить более быстрые и надежные решения, явно включив эти границы в свою формулировку задачи.

Задайте границы как векторы с той же длиной, что и x, или как матрицы с таким же количеством элементов, как и x.

  • Если конкретный компонент не имеет нижней границы, используйте –Inf как граница; точно так же используйте Inf если компонент не имеет верхней границы.

  • Если у вас есть только границы одного типа (верхний или нижний), вам не нужно записывать другой тип. Для примера, если у вас нет верхних границ, вам не нужно задавать вектор Infс.

  • Если только первый m из n компонентов имеет границы, то вам нужно только задать вектор длины m содержащий границы. Однако этот ярлык заставляет решатели выдавать предупреждение.

Например, предположим, что ваши границы:

<reservedrangesplaceholder0> 3  8,
<reservedrangesplaceholder0> 2  3.

Запишите векторы ограничений как

l = [–Inf; –Inf; 8],
u = [Inf; 3] (выдает предупреждение) или u = [Inf; 3; Inf].

Совет

Чтобы уменьшить использование памяти и увеличить скорость решателя, используйте Inf или –Inf вместо большой, произвольной границы. Для получения дополнительной информации см. «Использование Inf вместо большой, произвольной границы».

Вы не должны давать градиенты для связанных ограничений; решатели вычисляют их автоматически. Границы не влияют на Гессианов.

Более сложный пример границ см. в разделе Настройка линейной программы, основанная на решателе.

Похожие темы