GAMS 十进制数

GAMS decimal numbers

我有以下代码:

loop (d,
 rnd(d)=uniformInt(1,nd)
 );

我将使用整数 rnd(d) 作为另一组 s(i) 的索引。但是例如当 rnd(d)=34.000 然而,它是整数,但是 s(34.000) 没有有效的索引,因为 34.000 不是 34 !! GAMS 显示一条错误消息。

我是有序集吗?如果是,你可以使用这样的东西:

loop(d,
  s(i)$(ord(i)=rnd(d)) = ...;
)

我不知道@Lutz 的解决方案是否适合您。如果没有,您可以尝试以下操作: 首先,不需要遍历集合d,简单的:

rnd(d) = uniformInt(1,nd);

就够了。 下一行可以像这样:

loop(d,
     s(i)$(i.val = ord(d)) = . . .;
     );

如果您仍然有问题,那么使用@Lutz 的建议只需将“*1.000”附加到 'ord(i)' and/or 'rnd(d)',以给您带来问题为准。