我正在尝试使用ILOBRANCHCALLBACK0
宏在带有CPLEX Concert的C ++中调用getUpPseudoCost()
类的getDownPseudoCost()
和IloCplex::BranchCallbackI
方法,但是它不起作用。这是我的代码:
ILOBRANCHCALLBACK0(MyBranch){
if (getBranchType() != BranchOnVariable)
cout <<"getUpPseudoCost"<<getUpPseudoCost();
}
...
cplex.use(MyBranch(env));
答案 0 :(得分:1)
getUpPseudoCost
方法需要一个参数(请参见文档here); IloIntVar
或IloNumVar
。确实,您在注释部分共享的错误表明存在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));
希望这可以帮助您朝正确的方向开始。