我正在使用Cplex库在Java中编写数学模型,我想知道是否存在预定义的函数来确定使用Cplex获得的解决方案是否可行或最优。
非常感谢您的帮助。
答案 0 :(得分:1)
IloCplex.solve()方法返回:
一个布尔值,报告是否已找到可行的解决方案。 该解决方案不一定是最佳的。如果返回false,则 可能仍然存在可行的解决方案,但IloCplex无法 证明其可行性。
您可以检查IloCplex.getStatus()以确定解决方案是否可行,最佳等。
CPLEX附带有许多示例,它们显示了如何检查这些模型。例如,考虑来自LPex1.java的以下代码段:
// solve the model and display the solution if one was found
if ( cplex.solve() ) {
double[] x = cplex.getValues(var[0]);
double[] dj = cplex.getReducedCosts(var[0]);
double[] pi = cplex.getDuals(rng[0]);
double[] slack = cplex.getSlacks(rng[0]);
cplex.output().println("Solution status = " + cplex.getStatus());
cplex.output().println("Solution value = " + cplex.getObjValue());
int nvars = x.length;
for (int j = 0; j < nvars; ++j) {
cplex.output().println("Variable " + j +
": Value = " + x[j] +
" Reduced cost = " + dj[j]);
}
int ncons = slack.length;
for (int i = 0; i < ncons; ++i) {
cplex.output().println("Constraint " + i +
": Slack = " + slack[i] +
" Pi = " + pi[i]);
}
}