Как изменить тип переменной решения в Concert Technologies (с Java)

Aug 20 2020

У меня есть модель 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.

Ответы

2 AlexFleischer Aug 20 2020 at 21:53

Тип переменной нельзя изменить. Однако его можно перезаписать для конкретной модели, добавив объект IloConversion, который позволяет вам указывать новые типы для переменных в этой модели. Когда ILOG CPLEX находит объект преобразования в активной модели, он использует типы переменных, указанные в объекте преобразования, вместо исходного типа, указанного для оптимизации. Например, в модели, содержащей:

IloNumVar x = cplex.numVar(0.0, 1.0);   
cplex.add(cplex.conversion(x, IloNumVarType.Int));