从Excel(IBM ILOG CPLEX)读取三维数组

时间:2017-08-09 16:10:53

标签: arrays excel cplex ilog

假设我有一个带有两个标签的excel工作簿。两个选项卡都包含像

这样的二维矩阵
# 1st tab       # 2nd tab
1 1 1           1 1 1
1 1 1           1 1 1
1 1 1           1 1 1

如何在IBM ILOG中的三维数组中获取这两个选项卡?官方IBM支持页面无法再找到主题Reading a 3-dimensional array from an Excel。这是一个死链接。愿有人帮我这个吗?它应该像arrayExample一样可用。不是一个元组或其他任何东西而不是数组。

int arrayExample[i][j][s] = [[[1,1,1], [1,1,1], [1,1,1]], [[1,1,1], [1,1,1], [1,1,1]]];

1 个答案:

答案 0 :(得分:1)

如果您仍然无法访问该链接,请参阅该技术说明中的信息:

  

答案:

     

使用中间数组(1或2维)   通过调用SheetRead()指令读取所有数据。然后   初始化你的三维数组:

     

模型文件(.mod):

int nbMonths = ...;
int nbProducts = ...;
int nbLevels = ...;
  

//如果数据元素按列组织

int nb1[1..nbMonths*nbProducts*nbLevels] = ...;
int nbArray[m in 1..nbMonths, p in 1..nbProducts,s in1..nbLevels]= nb1[s+nbLevels*(p-1)+nbProducts*nbLevels*(m-1)];
  

//如果数据元素是二维数组

int nb2[1..nbMonths, 1..nbProducts*nbLevels] = ...;
int nbArray2[m in 1..nbMonths, p in 1..nbProducts,s in 1..nbLevels] =  nb2[m,s+nbLevels*(p-1)];
  

数据文件(.dat)

SheetConnection sheetInput("3DimArray.xls", 0);
nb1 from SheetRead(sheetInput,"data!D2:D13");
nb2 from SheetRead(sheetInput,"data!B17:G18");
  

注意:电子表格和数据库表格中的数据通常是   2维。因此无法存储三维数组   电子表格或数据库表本身。