Проблемы с BranchCallbackI в C ++ с концертом - PullRequest
0 голосов
/ 21 апреля 2019

Я пытаюсь использовать макрос ILOBRANCHCALLBACK0 для вызова методов getUpPseudoCost() и getDownPseudoCost() класса IloCplex::BranchCallbackI в C ++ с CPLEX Concert, но он не работает. Вот мой код:

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

1 Ответ

1 голос
/ 22 апреля 2019

Для метода getUpPseudoCost требуется аргумент (см. Документацию здесь );либо 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));

Надеюсь, это поможет вам начать работу в правильном направлении.

...