0

我有一个数组 - X[(i,j,l)],它由 3 个索引的元组索引,i 和 j 的索引从 1 到 n,l 的索引从 1 到“层”。我的数组是二进制的 - 每个元素的值是 0 或 1。

由于在 opl - 在 CPLEX 中运行优化问题,我得到了这个数组。

我想在模型窗口中使用 javascript 中的执行代码将 X 的值作为多维数组 X[i][j][l] 读取。

这是我尝试过的:

var ofile_varx = new IloOplOutputFile("initial_varx.csv");
ofile_varx.writeln(x);

var x_arr=new Array (n);
for (var i=0; i<n; i++) {
    x_arr[i]=new Array (n);
    for (var j=0; j<n; j++) {
        x_arr[i][j]=new Array (layers);
    }
}           
for (var tup in ijl) {
    x_arr[tup.i][tup.j][tup.l]=x[tup];
}

我从最后一行得到一个错误,说它不能将属性“null”分配给数组。

知道如何到达我请求的数组 x_arr 吗?

谢谢!

4

1 回答 1

0
tuple t
{
 int i;
 int j;
 int l;
}

int n=2;
int layers=3;
{t} ijl={<1,2,3>,<1,2,1>};

dvar int x[ijl];
subject to
{
forall(i in ijl) x[i]==i.i;
}


execute
{
var x_arr=new Array (n);
for (var i=0; i<=n; i++) {
    x_arr[i]=new Array (n);
    for (var j=0; j<=n; j++) {
        x_arr[i][j]=new Array (layers);
    }
}           
for (var tup in ijl) {
    x_arr[tup.i][tup.j][tup.l]=x[tup].solutionValue;
}
}

工作正常。

于 2018-02-22T21:41:23.710 回答