如何在Barrier算法迭代后访问当前解决方案?

时间:2015-12-16 09:10:26

标签: c++ callback cplex

我希望在Barrier算法迭代后访问当前的QP解决方案。每次迭代后都会触发一个回调 ContinuousCallbackI 。 我修改了回调代码示例:

static ILOBARRIERCALLBACK2(MyCallback, IloCplex, cplex, IloNumVarArray, x) {
    cout << "Iteration " << getNiterations() << ": ";

    if (isFeasible()) {
        cout << "Objective = " << getObjValue() << endl;
        //cout << "x[0] = " << (float)cplex.getValue(x[0]) << endl; 
        //CPLEX Error  1217: No solution exists.
    }
    else {
        cout << "Infeasibility measure = " << getInfeasibility() << endl;
    }
}

但是cplex没有解决方案(错误)。迭代后有没有办法访问当前的解决方案?

1 个答案:

答案 0 :(得分:0)

无法访问当前解决方案。

从回调内部,仅应调用回调类的成员函数。这些成员函数列在https://www.ibm.com/support/knowledgecenter/SSSA5P_12.9.0/ilog.odms.ide.help/refcppopl/html/classes/IloCplex_BarrierCallbackI.html上,没有一个函数可以查询当前解决方案。