Переменное деление в 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, который предлагает деление, но не может иметь дело с непрерывными переменными.