求目标函数系数

时间:2019-05-27 12:20:13

标签: java cplex

我有一个IloCplex对象,我想用Cplex Java api获取IloObjective的系数。

使用此代码,我得到了IloObjectiveIloNumExpr,但是我无法访问系数。

IloCplex cplex = new IloCplex();
cplex.importModel("model.lp");
IloObjective obj = cplex.getObjective();
IloNumExpr expr = obj.getExpr();

如何获取IloObjectiveIloNumExpr的系数?

1 个答案:

答案 0 :(得分:1)

由于您的model.lp文件包含线性模型,因此expr应该是IloLinearNumExpr的实例,并且您应该能够使用linearIterator方法对其进行迭代:

if (expr instanceof IloLinearNumExpr) {
    IloLinearNumExpr lexpr = (IloLinearNumExpr) expr;

    IloLinearNumExprIterator it = lexpr.linearIterator();

    while (it.hasNext()) {
        IloNumVar var = it.nextNumVar();
        double coeff = it.getValue();
        System.out.println(var + " " + coeff);
    }
}