0

在 CPLEX OPL 中,如何在约束中写入 i(从 1 到 i-1)的总和?

另一个问题:如何输入 3 维矩阵?

提前谢谢了,

4

2 回答 2

1

您可以使用以下内容创建具有 3 个维度的 dvar:

dvar int+ x[1..2][1..7][1..3];

并且,为了使用范围求和,您可以执行以下操作:

dexpr int obj = sum(i in 1..2, j in 1..7, z in 1..3) x[i][j][z];
于 2014-12-09T08:16:01.713 回答
1

要获得 3 维输入,您可以将 3 维输入数组展平为 1 维数组,然后使用简单的 OPL 脚本代码将值分配给 3 维数组,例如:

int array[0..I-1][0..J-1][0..K-1];//3-d array 
int input[I*J*K]=...;//1-d array to be read as input

execute assignArray{
var index=0;
for(var i=0;i<I;i++){
  for(var j=0;j<J;j++){
     for(var k=0;k<K;k++){
      array[i][j][k]=input[index];
      index++;
    }
  }    
}
}
于 2016-04-08T01:31:02.470 回答