将3 Dim从Excel读入ilog

时间:2019-08-06 10:04:25

标签: excel cplex ilog

如何在ILOG CPLEX中将Excel中的1个暗淡数据读取为3个暗淡数据?

通过使用具有2个dim数组的解决方法,我已经可以将3个dim数据从excel读取到ILOG中。

但是如何读取Excel数据,例如3; 4; 5; 6; 7 变成3种昏暗的ILOG格式,例如

x = #[

   1: #[

      1: [3]

      2: [4]

      3: [5]

      4: [6]

      5: [7]

      ]#

   ]#;

1 个答案:

答案 0 :(得分:0)

您可以首先将所有内容读取到平面数组中,然后从该平面数据中填充3维数组。像这样:

range I = 0..1;
range J = 0..2;
range K = 0..3;

int flat[0..card(I) * card(J) * card(K)-1] = [
                1,  2,  3,  4,  5,  6,  7,  8,  9, 10,
               11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
               21, 22, 23, 24 ];

int dim3[i in I][j in J][k in K] = flat[i * card(J) * card(K) +
                                        j * card(K) +
                                        k];

execute { writeln(dim3); }

此打印

 [[[1 2 3 4]
             [5 6 7 8]
             [9 10 11 12]]
         [[13 14 15 16]
             [17 18 19 20]
             [21 22 23 24]]]