在每个节点上,我都希望对所有其值不是整数的变量进行分支。之后,我想在每个分支上打印目标的值。我用C ++编写了此代码,但出现了错误1006。
ILOBRANCHCALLBACK1(callback1, IloNumVarArray, vars)
{
for (int i = 0; i < vars.getSize(); ++i)
{
if (getValue(vars[i]) > 0 && getValue(vars[i]) < 1)
{
int xidown = IloFloor(getValue(vars[i]));
int xiup = IloFloor(getValue(vars[i])) + 1;
makeBranch(vars[i], xidown, IloCplex::BranchDown, getObjValue());
makeBranch(vars[i], xiup, IloCplex::BranchUp, getObjValue());
cout << "objvalueDown_" << vars[i] << "," << getObjValue() << endl;
cout << "objvalueUp_" << vars[i] << "," << getObjValue() << endl;
}
}
}
答案 0 :(得分:0)
在一个节点上不能创建两个以上的分支,这就是为什么会出现此错误的原因。
此外,不会立即评估新创建的节点,它们只会放入节点队列中。因此,此时您不能查询新创建的节点的目标值。
如果您尝试执行强分支等操作,请在参考手册中搜索“强分支”。有专门的功能。