我正在尝试使用ILOBRANCHCALLBACK0宏在带有CPLEX Concert的C ++中调用getUpPseudoCost()类的getDownPseudoCost()IloCplex::BranchCallbackI方法,但是它不起作用。这是我的代码:

ILOBRANCHCALLBACK0(MyBranch){
if (getBranchType() != BranchOnVariable)
cout <<"getUpPseudoCost"<<getUpPseudoCost();
}
...
cplex.use(MyBranch(env));

最佳答案

getUpPseudoCost方法需要一个参数(请参见文档here); IloIntVarIloNumVar。的确,您在注释部分共享的错误表明getUpPseudoCost方法存在,但没有与您的用法匹配的重载。

通过以下代码段,我使用ILOBRANCHCALLBACK1宏传递变量数组并调用getUpPseudoCost方法:

ILOBRANCHCALLBACK1(MyCallback, IloNumVarArray, vars) {
   for (int i = 0; i < vars.getSize(); ++i) {
      cout << "getUpPseudoCost(" << vars[i] << ") = "
           << getUpPseudoCost(vars[i]) << endl;
   }
}
...
IloNumVarArray var(env);
// Build or import the var array, then pass it into the callback.
cplex.use(MyCallback(env, var));


希望这可以帮助您朝正确的方向开始。

10-06 01:41