繁体   English   中英

将集从 Excel 导入到 CPLEX

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM