Разделение переменных в or-tools python

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

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

например, если мы хотим максимизировать 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()

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


person Scoob    schedule 15.12.2018    source источник


Ответы (1)


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

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

person Laurent Perron    schedule 16.12.2018