CPLEX OPL使用决策变量作为数组索引

时间:2017-04-30 20:14:10

标签: arrays indexing cplex opl

在我的数据输入文件中,有参数Input [j] [n] [a] [b] [c] [d] [e] [f] [g] [h] [i] [k]对于j,n,a,b,c,d,e,f,g,h,i,k的所有值。

我的模型计算一些布尔决策变量(从dv1到dv10)(目标是最小化成本)。然后,我需要计算Value [j] [n],它等于输入中的相应值,具体取决于决策变量。但错误是'Indexing array "Input" with type dvar boolean not supported by this algorithm'

因此我想做以下事情:

forall(j in J, n in N) {
    Value[j][n] == Input[j][n][dv1][dv2][dv3][dv4][dv5][dv6][dv7][dv8][dv9][dv10][dv11][dv12];
}

如何在CPLEX中计算?提前致谢!

2 个答案:

答案 0 :(得分:1)

您还可以查看

https://www.ibm.com/developerworks/community/forums/html/topic?id=2be2ec22-db4b-4a2c-b164-615b9f735dc9&ps=25

你可以阅读

range r=1..5;

float value[r]=[2,3,4.5,1,0];
dvar int i in 1..5;

maximize sum(k in r) value[k]*(k==i);
subject to
{

}

execute
{
writeln("i=",i);
}

答案 1 :(得分:0)

如果你想使用决策变量作为索引,你可以尝试使用Constraint Programming。

在OPL中,只需编写

即可
using CP;

模型顶部

问候