Java Cplex中的最佳解决方案

时间:2019-06-15 19:05:05

标签: java cplex

我正在使用Cplex库在Java中编写数学模型,我想知道是否存在预定义的函数来确定使用Cplex获得的解决方案是否可行或最优。

非常感谢您的帮助。

1 个答案:

答案 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]);
    }
 }