Оптимальное решение в Java Cplex - PullRequest
0 голосов
/ 15 июня 2019

Я программирую математическую модель на Java с использованием библиотеки Cplex, и я хотел знать, есть ли предопределенные функции, чтобы определить, является ли решение, полученное с помощью Cplex, осуществимым или оптимальным.

Большое спасибо за вашу помощь.

1 Ответ

1 голос
/ 17 июня 2019

Метод 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]);
    }
 }
...