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)',以给您带来问题为准。
我有以下代码:
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)',以给您带来问题为准。