Несколько решателей оптимизации принимают линейные ограничения, которые являются ограничениями решения x для удовлетворения линейных уравнений или неравенств. Решатели, принимающие линейные ограничения, включают fmincon, intlinprog, linprog, lsqlin, quadprog, мультиобъективные решатели и некоторые решатели Global Optimization Toolbox.
Линейные ограничения неравенства имеют вид A· x ≤ b. Если A равно m-by-n, для переменной x с n компонентами существуют m ограничений. Вы предоставляете матрицу m-на-n A и вектор m-компонента b.
Передать линейные ограничения неравенства в A и b аргументы.
Например, предположим, что в качестве ограничений используются следующие линейные неравенства:
x1 + x3 ≤ 4,
2x2 – x3 ≥ –2,
x1 – x2 + x3 – x4 ≥ 9.
Здесь m = 3 и n = 4.
Запишите эти ограничения, используя следующую матрицу A и вектор b:
b = [42 − 9].
Обратите внимание, что неравенства «больше чем» сначала умножаются на -1, чтобы поместить их в форму неравенства «меньше чем». В синтаксисе MATLAB ®:
A = [1 0 1 0;
0 -2 1 0;
-1 1 -1 1];
b = [4;2;-9];Нет необходимости задавать градиенты для линейных зависимостей; решатели вычисляют их автоматически. Линейные зависимости не влияют на гессен.
Даже если пройти начальную точку x0 в качестве матрицы решатели передают текущую точку x в виде вектора столбца линейным ограничениям. См. раздел Аргументы матрицы.
Более сложный пример линейных ограничений см. в разделе Настройка линейной программы на основе решателя.
Промежуточные итерации могут нарушать линейные ограничения. См. раздел Итерации могут нарушать ограничения.
Линейные равенства имеют вид Aeq· x = beq, который представляет m уравнений с n-компонентным вектором x. Вы предоставляете матрицу m-на-n Aeq и m-компонентный вектор beq.
Передача ограничений линейного равенства в Aeq и beq аргументы таким же образом, как описано для A и b аргументы в линейных ограничениях неравенства.