Переменное деление в Python or-tools

Я работаю с решателем MIP, предоставленным or-tools (в Python)

Предположим, у нас есть две переменные х и у. Я знаю, как максимизировать одну переменную ИЛИ сумму двух переменных.

например, если мы хотим максимизировать 2*x, мы можем сделать это следующим образом

objective = solver.Objective()
objective.SetCoefficient(x,2)
objective.SetMaximization()

и если мы хотим максимизировать 2*x + 3*y, мы можем сделать это следующим образом

objective = solver.Objective()
objective.SetCoefficient(x,2)
objective.SetCoefficient(y,3)
objective.SetMaximization()

но я не знаю, как максимизировать переменную, которая делится на другую переменную. у меня вопрос как максимизировать (х / у)?

1 ответ

Решатель MIP принимает только линейные уравнения. По определению, деление не является линейным. Могут быть очень особые случаи, когда вы можете линеаризовать деление, например, если у имеет небольшой набор возможных значений.

Вы можете взглянуть на решатель CP-SAT, который предлагает деление, но не может иметь дело с непрерывными переменными.

Другие вопросы по тегам