将Excel文件连接到Cplex

时间:2018-01-12 18:20:38

标签: cplex opl

我将使用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电子表格

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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文件并计算元组集合:

{<"尼古拉斯" 2 - ; <"亚历山大" 3 GT;}

As you can see in the answer in IBM Forum.