【问题标题】:Initializing 2D array of tuples from Sheets in OPL CPLEX从 OPL CPLEX 中的表格初始化 2D 元组数组
【发布时间】:2018-07-24 09:27:53
【问题描述】:

我在 OPL CPLEX 中创建了一个二维元组数组。我可以直接从 .dat 文件初始化数组,但是当我从 excel 工作表初始化它时,会弹出错误“N:int,a:float with 2 dimension not supported for sheet”。似乎不存在从工作表初始化 2D 元组数组的功能。是这种情况还是我犯了一些错误?另外,还有其他方法可以解决这个问题吗? 我附上下面代码的sn-p。

 /*mod file*/
 int M=...;
 range m=1..M;
 int B=...;
 range b=1..B;
 int T=...;
 range t=1..T;

 tuple data{
    int N;
    float a;
 }

 data d[m][b]=...;

 dvar boolean x[b][m][t];


/*dat file for direct initialization*/
 M=2;
 B=3;
 T=2;

 d=[[<1,1.5>,<2,1>,<7,5.6>],
    [<8,2.7>,<0,5.9>,<9,9.2>]];



 /*dat file for initialization from excel*/
 M=2;
 B=3;
 T=2;

 SheetConnection sheet("B2.xlsx");

 d from SheetRead(sheet,"d");


/*Excel sheet*/

Named Range of d in excel
1   1.5
2   1
7   5.6
8   2.7
0   5.9
9   9.2

【问题讨论】:

    标签: cplex opl


    【解决方案1】:

    如果d 是 2D 结构,但它是 3D 结构,它会起作用,因为您在一个元组中有 2 个索引 mb 和 2 个元素。

    所以我推荐 IBM 技术说明 Reading a 3-dimensional array from an Excel spreadsheet

    【讨论】:

    • 非常感谢@alexfleischer。它为我提供了处理数据的方法。
    猜你喜欢
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多