我如何在每个节点上的所有非整数变量上分支?

问题描述 投票:0回答:1

在每个节点上,我想对所有变量的值不是整数的变量进行分支。之后,我想在每个分支上打印目标的值。我用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;
        }
     }
}
cplex
1个回答
0
投票

您在一个节点上不能创建两个以上的分支,这就是为什么会出现此错误的原因。

此外,不会立即评估新创建的节点,它们只会放入节点队列中。因此,您此时无法查询新创建的节点的目标值。

[如果您尝试执行强分支等操作,请在参考手册中搜索“强分支”。有专用的功能。

© www.soinside.com 2019 - 2024. All rights reserved.