cplex для операторов if-else

Я новичок в cplex. В моем ilp у меня есть пара операторов if-else. Я хочу использовать cplex для решения моей проблемы с использованием java API. Я не знаю, как сформулировать if-else в cplex. пример:

if x>0 then a=1
else if x=0 then a=0

person Sara    schedule 12.11.2012    source источник
comment
Было бы здорово узнать, как это сделать и в API Python.   -  person Sledge    schedule 14.11.2019


Ответы (1)


Я не думаю, что Java API поддерживает структуру if/then/else, однако это возможно сделать if/then

IloCplex cplex = new IloCplex();
IloNumVar x = cplex.numVar(-100, 100);
IloNumVar a = cplex.intVar(0, 1);

cplex.ifThen(cplex.ge(x, 100), cplex.eq(a, 1));
cplex.ifThen(cplex.eq(x, 0), cplex.eq(a, 0));
person Guillaume    schedule 12.11.2012
comment
Большое спасибо. Еще одна вещь для операторов or: я использую большое число, например M, и делаю statmenet линейным. Вы знаете, могу ли я использовать его в cplex? например, если x+y=2, то либо c+b‹a, либо a+p‹c - person Sara; 12.11.2012
comment
Второй аргумент ifThen() является ограничением, поэтому он должен работать, если это ограничение является оператором or. - person Guillaume; 12.11.2012