Я пытаюсь настроить линейную программу, в которой целевая функция добавляет дополнительный вес к 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
являются целыми числамив этом конкретном примере.
Я думаю, что вышесказанное может выходить за рамки того, что предлагает линейное программирование. Однако, возможно, есть способ взломать/переформатировать это в действующую линейную программу?
Если эта проблема полностью выходит за рамки линейного программирования, возможно, кто-нибудь может порекомендовать парадигму оптимизации, более подходящую для этого типа задач? (Все, что позволяет мне избежать ручного перечисления и проверки всех возможных решений, было бы полезно.)