【问题标题】:Javascript - How to convert an array indexed by tuples to a multidimensional array?Javascript - 如何将元组索引的数组转换为多维数组?
【发布时间】:2018-02-22 11:46:40
【问题描述】:

我有一个数组 - 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 吗?

谢谢!

【问题讨论】:

  • 请分享相同的输入格式示例和预期输出。
  • ofile_varx.writeln(x); x 是什么,我看不到 x 那么为什么该行存在? n 是什么?是typeof n === "undefined"?您在演讲中引用了X[i][j][l],但我们是否假设Xx_arr(var tup in ijl) 在哪里定义 ijl
  • 欢迎来到 StackOverflow。也许从stackoverflow.com/help/how-to-ask 开始,然后修改您的问题以包含更完整的示例。
  • X 被给出(一个二进制数组,它的项只能通过值为 的索引来访问)。我想我现在设法将 x_arr 输入到 csv 中。我的问题是索引:x_arr[tup.i-1][tup.j-1][tup.l-1]。虽然无法像在 python 中那样轻松打印或导出结果,但我得到了我想要的结果。谢谢!
  • ijl 当然是在 opl 中定义的。我想用 X 创建 x_arr。我想我成功了。

标签: javascript arrays tuples opl


【解决方案1】:
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;
}
}

工作正常。

【讨论】:

    猜你喜欢
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多