将 Excel 文件连接到 Cplex

Connecte Excel file to Cplex

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

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

但是在我 运行 配置之后,我遇到了以下错误:

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

我发现 Linux

不支持在 ILOG CPLEX 优化工作室中读取 excel 电子表格

有什么想法吗?

有 Java 类,例如 Apache POI 类,可以读取和写入 Excel 个文件。您可以使用那些 类 来实现 external/custom 数据源并通过 IloOplCallJava 调用它。然后,您可以直接从 'execute' 块中的 .mod 文件调用,或者您可以通过 'prepare' 和 'invoke' 从 .dat 文件中使用它。我以前做过前者,效果很好。

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

我遇到了同样的问题。 我的解决方案是将我的数据转换为 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:

{<"Nicolas" 2> <"Alexander" 3>}

As you can see in the answer in IBM Forum.