我有一个索引集 A
和另一个集 dim
,我需要定义变量 x[i,j]
,其中 i
在 A
中, j
从1开始,对于A的每个成员都是 <= 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
是 dim
中的最大数字 . 如何在不创建额外变量的情况下执行此操作?
2 回答
经过一些研究,我找到了一个解决方案,我认为应该可行:
var x[ <i, j> in A*B with j <= dim[i]];
我不明白这个问题 . 什么是dimlist索引?尺寸的大小是3..5可能实现这一目标的最佳方法是使用全尺寸表并排除您不喜欢的尺寸,例如:
或者你可以搞乱像变量的界限