在CPLEX OPL中,如何在约束中编写i(从1到i-1)的求和?
另一个问题:我如何输入3维矩阵?
提前谢谢了,
您可以使用以下内容创建具有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];
要获得3维输入,您可以将3-d输入数组转换为1-d数组,然后使用简单的OPL脚本代码为3-d数组赋值:
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++; } } } }
2 回答
您可以使用以下内容创建具有3维的dvar:
并且,为了使用范围求和,您可以:
要获得3维输入,您可以将3-d输入数组转换为1-d数组,然后使用简单的OPL脚本代码为3-d数组赋值: