Не удается импортировать модель из файла MPS в IloCplex - IBM ILOG CPLEX - Java - Intellij - PullRequest
0 голосов
/ 14 марта 2020

Сейчас я занимаюсь разработкой проекта в java с использованием библиотек Ilog Cplex, я использую Intellij-Idea IDE. У меня проблемы с импортом модели из файла MPS, этот фрагмент кода вызывает у меня проблемы

IloCplex iloCplexInstance = new IloCplex();
iloCplexInstance.importModel(fileName);

Выдает это исключение:

ilog.cplex.CpxException: CPLEX Error  1423: Could not open file 'models\20_70_45_05_100.mps' for reading.

at ilog.cplex.CplexI.CALL(CplexI.java:5204)
at ilog.cplex.CplexI._readModel(CplexI.java:5584)
at ilog.cplex.CplexI.importModel(CplexI.java:1032)
at ilog.cplex.IloCplex.importModel(IloCplex.java:902)
at heuristics.ziround.LPUtils.fromMPS(LPUtils.java:34)
at heuristics.test.LPUtilsTestCompile.main(LPUtilsTestCompile.java:13)

Я попытался запустить это в модульных тестах, использующих junit4, junit.runners.Parameterized, и в простом классе из его основного метода. Тот же результат в каждом случае. Я также попытался установить полный путь к файлу, и он дает тот же результат. Я знаю, что файл, который я использовал, в порядке, я могу прочитать его, используя команды терминала cplex, я также пробовал другие файлы.

Код, который использует библиотеки Ilog, может компилироваться, я Я не уверен, что он может работать, так как я не могу импортировать модель, я не могу попытаться ее решить.

Я использую windows, запускаю IDE, так как администратор не сортирует эффекты и файл не заблокирован для чтения (или записи).

Я следую документации IBM: https://www.ibm.com/support/knowledgecenter/SSSA5P_12.7.0/ilog.odms.cplex.help/refjavacplex/html/ilog/cplex/IloCplex.html#importModel (java .lang.String)

На официальных страницах поддержки я нашел об ошибке: http://www-eio.upc.es/lceio/manuals/cplex-11/html/refcallablelibrary/html/macros/CPXERR_FAIL_OPEN_READ.html

Но я не могу найти ничего полезного.

Кроме того, форум IBM в настоящее время закрыт, и, похоже, никто не сталкивался с подобными проблемами: (

Кто-нибудь знает, в чем может быть проблема? Что я могу сделать? Знаете ли вы? любой другой альтернативы?

Спасибо всем, кто заедет !!

Ответы [ 2 ]

1 голос
/ 14 марта 2020

Сообщение об исключении говорит:

ilog.cplex.CpxException: CPLEX Ошибка 1423: Не удалось открыть файл 'models \ 20_70_45_05_100.mps' для чтения.

Попробуйте вместо этого использовать абсолютный путь, например c:\path\to\your\models\20_70_45_05_100.mps.

Вы также можете добавить код в свою программу, чтобы убедиться, что путь существует. Что-то вроде:

import java.nio.file.Files;
...
IloCplex iloCplexInstance = new IloCplex();
if (!Files.exists(fileName))
    throw new AssertionError("path does not exist: " + fileName);
iloCplexInstance.importModel(fileName);
0 голосов
/ 16 марта 2020

После @ rker sh ответ, я сделал это:

String modelsPath = "absolute\\folder\\path";

Collection<Object[]> models = new ArrayList<>();
File folder = new File(modelsPath);
for (final File fileEntry : Objects.requireNonNull(folder.listFiles())) {
    if (fileEntry.isFile())
        models.add(new String[]{fileEntry.getAbsolutePath()});
}
return models;

Это гарантирует, что абсолютный путь правильный, и теперь iloCplexInstance.importModel(fileName); принимает его отлично

...