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