存取解法信息
描述 Java API 中有关解法的可用信息。
如果解法通过 solve 方法发现,那么可存取此解法,然后使用多种方法进行查询。 目标函数可通过以下调用进行存取:
double objval = cplex.getObjValue();
解法的各个建模变量的值通过方法 IloCplex.getValue 存取,例如:
double x1 = cplex.getValue(var1);
通常,需要变量数组的解法值。 仅通过一次函数调用,使用方法 IloCplex.getValues 来查询各个变量的解法值,而不必实现循环,如下所示:
double[] x = cplex.getValues(vars);
相似地,通过方法 IloCplex.getSlack 或 IloCplex.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 会优化活动模型,成功优化后,应用程序会打印解法信息。