【问题标题】:Import Sets from Excel to CPLEX将集从 Excel 导入 CPLEX
【发布时间】:2021-06-04 14:31:37
【问题描述】:

我有以下套装:

{int} Test={1,3,6,8,10};

setof (int) Problem[Test]=[{1,3,5},{8,4},{2,6,7},{2,4},{1}];

执行工作正常。问题如下所示:

enter image description here

由于我不想手动将数字插入到 CPLEX,我想从 ExcelFile 中导入它。

通过以下方式导入测试:

{int} Test=...;

与:

SheetConnection Data("Data.xlsx");
Test from SheetRead(Data, "Data1!A1:A6");

在 .dat 文件中。

使用 Excel 文件格式,如下所示: enter image description here

没问题。

{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 文件。数据如下所示:

enter image description here

但是:

{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 文件格式: enter image description here 因此,一行具有多个值。 这对我帮助很大。

但是这个案例呢: enter image description here

它是一个集合 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 数据文件如下所示: enter image description here

所以 j 的每个值都有与值一样多的列。在这种情况下,有两列 j = 2 和 j = 11。

目标是我在 CPLEX 中的设置如下所示: enter image description here

这对我很有帮助。

谢谢!

【问题讨论】:

    标签: c++ excel database cplex


    【解决方案1】:

    你可以通过字符串来做到这一点:

    .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 examples

    【讨论】:

    • 非常感谢您的回答@Alex Fleischer!这对我处理的大多数案例都有很大帮助。但在一种特殊情况下,我不确定它是如何工作的。我将我的问题添加到了开头。您可以在“另外”下方找到它
    • 非常感谢@Alex Fleischer 的帮助。我试图将它用于我的问题,但实际上我真的不知道如何让它详细工作:(我在最初的问题中再次添加了详细的问题,如果你能再帮助我一次,我将不胜感激这个
    猜你喜欢
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    • 1970-01-01
    相关资源
    最近更新 更多