如何在Zimpl的二维集中定义选定数量的变量?

时间:2016-08-22 17:28:33

标签: scip

我有一个索引集A和另一个集dim,我需要定义变量x[i,j] i位于A和{{1}从一个开始,对于A:

的每个成员都是j

<= dim[A]

例如,在上面,我将:

set A := { 11 .. 20}; dim := {<11>1, <12>3, <13>1, <14>1, <15>5, <16>1, <17>2, <18>1, <19>1, <20>3};

我可以做类似的事情:

x[11,1], x[12,1], x[12,2], x[12,3], x[13,1], x[14,1], ... 其中set B := { 1 .. maxDim)}; var x[A *B]; maxDim中的最大数量。如何在不创建额外变量的情况下执行此操作?

2 个答案:

答案 0 :(得分:0)

我不明白这个问题。什么是dimlist索引? 尺寸3..5的尺寸是多少? 可能实现这一目标的最佳方法是拥有一个全尺寸表 并且只是排除你不喜欢的那些,例如

set I := { <a,b,c,d,e,f> in A*B*C*D*E*F with a > b or whatever restriction you like };

var x[I];

或者你可以搞乱像

中的变量范围
var x[<a,b,c,d,e,f> in AxB*D3*D4*D5] real <= (if dimlist[a,b] > 0 ? dimlist[a,b] : 0);

答案 1 :(得分:0)

经过一番研究后,我找到了一个解决方案,我觉得应该可行:

var x[ <i, j> in A*B with j <= dim[i]];