无法将模型从 MPS 文件导入 IloCplex - IBM ILOG CPLEX - Java - Intellij
Can't import model from MPS file to IloCplex - IBM ILOG CPLEX - Java - Intellij
我目前正在 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_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
在单元测试中使用它,并在其 main 方法中使用一个简单的 class。每种情况下的结果相同。我还尝试设置文件的完整路径,结果相同。
我知道我使用的文件没问题,我可以使用 cplex 终端命令读取它,我也尝试了其他文件。
使用 Ilog
的库的代码可以编译,我不确定它是否可以 运行 但是因为我无法导入模型所以我不能尝试解决一个。
我正在使用 windows,以管理员身份启动 IDE 排序没有任何效果,并且文件未被阻止读取(或写入)。
在官方支持页面,我发现了这个错误:http://www-eio.upc.es/lceio/manuals/cplex-11/html/refcallablelibrary/html/macros/CPXERR_FAIL_OPEN_READ.html
但我找不到任何有用的东西。
此外,IBM 论坛目前已关闭,似乎没有人遇到过此类问题:(
有谁知道问题出在哪里?我能做些什么?您知道其他选择吗?
感谢所有路过的人!!
异常消息说:
ilog.cplex.CpxException: CPLEX Error 1423: Could not open file
'models_70_45_05_100.mps' for reading.
尝试使用绝对路径,例如 c:\path\to\your\models_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);
根据 @rkersh 的回答,我这样做了:
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);
可以很好地接受它
我目前正在 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_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
在单元测试中使用它,并在其 main 方法中使用一个简单的 class。每种情况下的结果相同。我还尝试设置文件的完整路径,结果相同。
我知道我使用的文件没问题,我可以使用 cplex 终端命令读取它,我也尝试了其他文件。
使用 Ilog
的库的代码可以编译,我不确定它是否可以 运行 但是因为我无法导入模型所以我不能尝试解决一个。
我正在使用 windows,以管理员身份启动 IDE 排序没有任何效果,并且文件未被阻止读取(或写入)。
在官方支持页面,我发现了这个错误:http://www-eio.upc.es/lceio/manuals/cplex-11/html/refcallablelibrary/html/macros/CPXERR_FAIL_OPEN_READ.html
但我找不到任何有用的东西。
此外,IBM 论坛目前已关闭,似乎没有人遇到过此类问题:(
有谁知道问题出在哪里?我能做些什么?您知道其他选择吗?
感谢所有路过的人!!
异常消息说:
ilog.cplex.CpxException: CPLEX Error 1423: Could not open file 'models_70_45_05_100.mps' for reading.
尝试使用绝对路径,例如 c:\path\to\your\models_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);
根据 @rkersh 的回答,我这样做了:
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);
可以很好地接受它