[英]Import Sets from Excel to CPLEX
我有以下套装:
{int} Test={1,3,6,8,10};
setof (int) Problem[Test]=[{1,3,5},{8,4},{2,6,7},{2,4},{1}];
执行工作正常。 问题看起来像这样:
由于我不想手动将数字插入到 CPLEX,我想从 ExcelFile 中导入它。
通过以下方式导入测试:
{int} Test=...;
和:
SheetConnection Data("Data.xlsx");
Test from SheetRead(Data, "Data1!A1:A6");
在 .dat 文件中。
使用 Excel 文件格式,如下所示:在此处输入图像描述
没有问题。
{int} Test=...;
setof (int) Problem[Test]=[{1,3,5},{8,4},{2,6,7},{2,4},{1}];
作品...
现在我也想读
Problem[Test]=[{1,3,5},{8,4},{2,6,7},{2,4},{1}];
来自 Excel 文件。 数据如下所示:
但:
{int} Test=...;
setof (int) Problem[Test]=...;
和
SheetConnection Data("Data.xlsx");
Test from SheetRead(Data, "Data1!A1:A6");
Problem from SheetRead(Data, "Data1!B2:B6");
导致以下错误消息:
电子表格不支持 {int}[Test] 类型的数据元素“问题”
.
有人现在 Excel 输入必须是什么样子,所以它受支持吗?
非常感谢! 问候
此外:
我还有一个问题。 您的答案非常适合 Excel 文件格式,如下所示:在此处输入图像描述因此,一行具有多个值。 这对我帮助很大。
但是这种情况呢:在此处输入图像描述
它是一个集合 F[m,i] 可能在一个单元格中有多个值,例如 F[1,11] = {1 2}
如何从 Excel 文件中读取该文件。 手动它看起来像这样:
> setof (int) F[X][Y]=[[{},{},{},{},{},{},{},{},{},{},{1,2}],[{},{},{},{},{1},{},{2},{},{},{},{}],[{},{4,5},{6},{},{},{},{},{},{},{},{}],[{},{},{},{},{},{},{},{4},{5},{6},{}],[{},{},{},{},{},{8},{9},{},{},{},{}]];
哪里:
{int} X={1,8,11,35,68};
{int} Y={1,2,3,4,5,6,7,8,9,10,11};
非常感谢!
添加:
我试过你的链接,但实际上我真的不知道如何在我的情况下采用它:(如果你能最后一次帮助我,我将不胜感激。
假设我的 excel 数据文件如下所示:在此处输入图像描述
所以 j 的每个值都有与值一样多的列。 在这种情况下,有两列 j = 2 和 j = 11。
目标是我在 CPLEX 中的设置如下所示:在此处输入图像描述
这对我很有帮助。
谢谢!
你可以通过字符串来做到这一点:
.mod
range r=1..4;
string temp[r][1..26]=...;
{int} set[i in r]={ intValue(temp[i][j])| j in 1..26:temp[i][j]!=""};
execute
{
writeln(set);
}
/*
which gives
[{1 2} {6} {7 8 9} {3 4}]
*/
.dat
SheetConnection sh("readarrayofsets.xlsx");
temp from SheetRead(sh,"A1:Z4");
这是在OPL Excel 示例中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.