2

我要使用 Cplex 解决优化问题。

在我的 file.dat 中,我使用SheetConnection my_sheet("ExcelFile.xls")将 Excel 文件链接到我的 cplex 程序,然后我使用SheetRead()从 Excel 文件中读取数据。

但是在我运行配置后,出现以下错误:

"sheet data not supported on this platform"
"Processing failed"

我发现 Linux 不支持在 ILOG CPLEX 优化工作室上阅读 excel 电子表格

请问有什么想法吗?

4

2 回答 2

1

有可以读写 Excel 文件的 Java 类,例如 Apache POI 类。您可以使用这些类来实现外部/自定义数据源并通过 IloOplCallJava 调用它。然后,您可以直接从“执行”块中的 .mod 文件中调用它,也可以通过“准备”和“调用”从 .dat 文件中使用它。我过去做过前者,效果很好。

我还使用 Python 将 Excel 文件转换为在 OPL 不支持 Excel 的平台上更易于使用 OPL 使用的文件。

于 2018-01-23T17:33:16.657 回答
0

我有同样的问题。我的解决方案是将我的数据转换为 csv 并使用 IloOplInputFile 来读取它。例子:

假设您有以下 export.cvs 文件:

Nicolas;2; 
Alexander;3;

您可以使用以下代码将其转换为您的数据。

tuple t
{
   string firstname;
   int number;
}

{t} s={};

execute
{
   var f=new IloOplInputFile("export.csv");
   while (!f.eof){
      var str=f.readline();
      var ar=str.split(";");
      if (ar.length==3) s.add(ar[0],Opl.intValue(ar[1]));
   }
   f.close();
}

execute
{
    writeln(s);
}

它将读取 csv 文件并计算元组集 s:

{<“尼古拉斯”2> <“亚历山大”3>}

正如您在 IBM 论坛中的答案中看到的那样。

于 2018-06-09T15:41:18.207 回答