从OPL CPLEX中的表格初始化元组的二维数组

问题描述 投票:0回答:1

我在OPL CPLEX中创建了一个二维元组阵列。我能够直接从.dat文件初始化数组,但是当我从excel表初始化它时,会弹出错误“N:int,a:浮动,不支持2个维度的工作表”。似乎从片材初始化元组的2D数组的功能似乎不存在。是这样的,还是我犯了一些错误?此外,还有其他方法可以解决这个问题吗?我正在附上以下代码的片段。

 /*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个回答
0
投票

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

所以我推荐IBM技术说明从Excel电子表格中读取三维数组

https://www-01.ibm.com/support/docview.wss?uid=swg21401340

问候

© www.soinside.com 2019 - 2024. All rights reserved.