Я пытаюсь создать линейную программу, в которой целевая функция добавляет дополнительный вес к max
из переменных решения, умноженных на их соответствующие коэффициенты.
Имея это в виду, есть ли способ использовать операторы min
или max
в целевой функции линейной программы?
Пример:
Minimize
(c1 * x1) + (c2 * x2) + (c3 * x3) + (c4 * max(c1*x1, c2*x2, c3*x3))
subject to
#some arbitrary integer constraints:
x1 >= ...
x1 + 2*x2 <= ...
x3 >= ...
x1 + x3 == ...
Обратите внимание, что (c4 * max(c1*x1, c2*x2, c3*x3))
- это термин "лишний вес", который меня беспокоит. Обозначим c4
коэффициент «лишнего веса». Также обратите внимание, что x1
, x2
и x3
являются целыми числами в этом конкретном примере.
Я думаю, что вышесказанное может выходить за рамки того, что предлагает линейное программирование. Однако, возможно, есть способ взломать / переформатировать это в действительную линейную программу?
Если эта проблема полностью выходит за рамки линейного программирования, возможно, кто-нибудь может порекомендовать парадигму оптимизации, более подходящую для этого типа проблемы? (Было бы полезно все, что позволяет мне избежать ручного перечисления и проверки всех возможных решений.)