制作IloCplex的副本然后从原始IloCplex中删除变量会使该变量未知。为什么?

时间:2017-06-19 10:17:22

标签: cplex

这里我制作IloCplex对象cplex的副本newplex,然后从cplex中删除变量x1。 cplex的目标值发生变化,newcplex的目标值不变。我得到以下输出:

0.5
0.5
0.5

0.0
0.5

但是由于某种原因,当我在代码末尾添加System.out.println(newcplex.getValue(x1))时,我得到了IloCplexUnknownObjectException。为什么呢?

IloCplex cplex=new IloCplex();
IloObjective kosten= cplex.addMinimize();
IloRange nb=cplex.addRange(0, 1);
IloColumn col= cplex.column(nb,1).and(cplex.column(kosten,1));
IloNumVar x1=cplex.numVar(col,0.5, 1);

IloCopyManager cm = new IloCopyManager(cplex);

IloCplex newcplex = new IloCplex();

newcplex.add((IloAddable) nb.makeCopy(cm));
newcplex.add((IloAddable) kosten.makeCopy(cm));

cplex.solve();
newcplex.solve();

System.out.println(cplex.getObjValue());
System.out.println(newcplex.getObjValue());
System.out.println(newcplex.getValue(x1));

cplex.delete(x1);

cplex.solve();
newcplex.solve();


System.out.println(cplex.getObjValue());
System.out.println(newcplex.getObjValue());

0 个答案:

没有答案