存取解法信息

描述 Java API 中有关解法的可用信息。

如果解法通过 solve 方法发现,那么可存取此解法,然后使用多种方法进行查询。 目标函数可通过以下调用进行存取:


double objval = cplex.getObjValue();

解法的各个建模变量的值通过方法 IloCplex.getValue 存取,例如:


double x1 = cplex.getValue(var1);

通常,需要变量数组的解法值。 仅通过一次函数调用,使用方法 IloCplex.getValues 来查询各个变量的解法值,而不必实现循环,如下所示:


double[] x = cplex.getValues(vars);

相似地,通过方法 IloCplex.getSlackIloCplex.getSlacks 在活动模型中查询约束的松弛值。

这些构想还适用于对饮食问题的解法进行求解以及打印。


IloCplex     cplex = new IloCplex();
IloNumVar[]  Buy   = new IloNumVar[nFoods];

if ( byColumn ) buildModelByColumn(cplex, data, Buy, varType);
   else buildModelByRow (cplex, data, Buy, varType);

      // Solve model
 
      if ( cplex.solve() ) { 
        System.out.println();
        System.out.println(“Solution status = “ + cplex.getStatus());
        System.out.println();
        System.out.println(“ cost = “ + cplex.getObjValue());
        for (int i = 0; i < nFoods; i++) {
          System.out.println(“ Buy” + i + “ = “ + 
                             cplex.getValue(Buy[i]));
        }
        System.out.println();
      }

这些代码行通过以下方式开始:创建新 IloCplex 对象并将其以及另一个对象中的原始数据传递到方法 buildModelByColumn 或方法 buildModelByRow。 其返回的变量数组将另存为数组 Buy。 然后,方法 solve 会优化活动模型,成功优化后,应用程序会打印解法信息。