Отображение ограничений и информации о конфликтах CPLEX ILOG Java - PullRequest
0 голосов
/ 04 июля 2018

Используя CPLEX ILOG JAVA API, как я могу распечатать сгенерированные ограничения, и, если возникли какие-либо проблемы, я хочу также распечатать информацию о конфликте. Я нашел это,

https://www.ibm.com/support/knowledgecenter/SSSA5P_12.5.1/ilog.odms.cplex.help/CPLEX/Parameters/topics/ConflictDisplay.html

Но все еще не ясно, как его установить.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Что касается вашего первого вопроса, у вас есть несколько вариантов. Чтобы увидеть сгенерированные ограничения, вы можете просто экспортировать вашу модель в формат LP, чтобы увидеть читаемую пользователем версию модели. Например, пример программы LPex1.java, поставляемой с CPLEX, показывает, как экспортировать модель в формат LP:

 // write model to file
 cplex.exportModel("lpex1.lp");

В качестве альтернативы, если мы возьмем пример программы LPex1.java, мы можем добавить следующий код для печати ограничений вручную:

 // print constraints
 System.out.println("Constraints:");
 for (int i = 0; i < rng[0].length; ++i) {
    System.out.println("  " + rng[0][i]);
 }

Объекты IloRange отображаются красиво с toString. Это напечатает что-то вроде следующего:

Constraints:
  IloRange c1 : -infinity <= (-1.0*x1 + 1.0*x2 + 1.0*x3) <= 20.0
  IloRange c2 : -infinity <= (1.0*x1 - 3.0*x2 + 1.0*x3) <= 30.0

Что касается вашего второго вопроса, вам нужно позвонить IloCplex.refineConflict , чтобы вычислить конфликты (как указано в другом ответе). Параметр ConflictDisplay «Определяет, сколько информации CPLEX сообщает, когда работает средство уточнения конфликта». Из ваших комментариев вы уже должны иметь доступ к ограничениям (если вы еще этого не сделали, просто сохраните их в массиве или в какой-либо другой структуре данных); у вас нет для использования IloLPMatrix для использования refineConflict метода. Пример в этом technote показывает, как распечатать конфликты после вызова refineConflict.

0 голосов
/ 04 июля 2018

очень хороший технот на http://www -01.ibm.com / поддержка / docview.wss? UID = swg21437987 С уважением

...