Как изменить тип переменной решения в Concert Technologies (с Java)
У меня есть модель MILP с непрерывными переменными ($y_{ij}$) и двоичные файлы ($x_{ij}$). Для реализации я использую Java и cplex 12.8.
Есть ли способ, с помощью которого - используя API Java-cplex - я мог бы написать только одну модель, которую можно сначала решить с помощью двоичного кода $x_{ij}$'s, а затем для непрерывных переменных ($0 \leq x_{ij} \leq 1$)? Я хочу «на лету» увидеть разрыв между LP-R и MIP - и не хочу создавать две разные модели LP и MILP.
Ответы
Тип переменной нельзя изменить. Однако его можно перезаписать для конкретной модели, добавив объект IloConversion, который позволяет вам указывать новые типы для переменных в этой модели. Когда ILOG CPLEX находит объект преобразования в активной модели, он использует типы переменных, указанные в объекте преобразования, вместо исходного типа, указанного для оптимизации. Например, в модели, содержащей:
IloNumVar x = cplex.numVar(0.0, 1.0);
cplex.add(cplex.conversion(x, IloNumVarType.Int));