javacplex中的最优解

javacplex中的最优解,java,cplex,Java,Cplex,我正在使用Cplex库用Java编程一个数学模型,我想知道是否有预定义的函数来确定使用Cplex获得的解决方案是可行的还是最优的 非常感谢您的帮助。该方法返回: 一个布尔值,用于报告是否已找到可行的解决方案。 这个解决方案不一定是最优的。如果返回false,则返回 可行的解决方案可能仍然存在,但IloCplex无法实现 以证明其可行性 您可以检查以确定解决方案是否可行、最优等 CPLEX附带了许多示例,展示了如何检查这些模型。例如,考虑Lpx1.java:下面的代码片段 // solve th

我正在使用Cplex库用Java编程一个数学模型,我想知道是否有预定义的函数来确定使用Cplex获得的解决方案是可行的还是最优的

非常感谢您的帮助。

该方法返回:

一个布尔值,用于报告是否已找到可行的解决方案。 这个解决方案不一定是最优的。如果返回false,则返回 可行的解决方案可能仍然存在,但IloCplex无法实现 以证明其可行性

您可以检查以确定解决方案是否可行、最优等

CPLEX附带了许多示例,展示了如何检查这些模型。例如,考虑Lpx1.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]);
    }
 }
//求解模型并在找到解决方案时显示解决方案
if(cplex.solve()){
double[]x=cplex.getValues(var[0]);
double[]dj=cplex.getReducedCosts(var[0]);
double[]pi=cplex.getDuals(rng[0]);
双[]松弛=cplex.getSlacks(rng[0]);
cplex.output().println(“解决方案状态=“+cplex.getStatus());
cplex.output().println(“Solution value=“+cplex.getObjValue());
int nvars=x.长度;
对于(int j=0;j
那么
solve()
的返回值和
getStatus()
的返回值呢?如果CPLEX找到了一个解决方案,它将是可行的(取决于较小的可行性容差)。证明混合整数问题的真正最优性可能很困难,但如果搜索提前结束,您应该能够获得最佳已知解和最佳界之间的差距,从而知道您至少在最佳可能解的已知距离内。