将 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>}