在MiniZinc中如何解决此错误?

吉姆·刘易斯

在MiniZinc中,如何获取此代码以进行编译而不会出现错误“没有找到具有此签名的函数或谓词:'round(var float)'”?

var int: D = 1;
var int: F;
constraint F = round (D / 2);
哈坎克

该消息仅表示MiniZinc不支持带有决策变量(例如“ round(var float)”)的round()。它仅支持“ round(float)”,即固定的float值。ceil()和floor()相同,仅支持固定的float值。

MiniZinc 2.0会自动将决策变量的参数除法(/)转换为浮点除法(因此不受支持)。但是,由于您使用的是var int,因此可以尝试使用整数除法(“ D div 2”),该除法给出F = 0。

对于MiniZinc 2.0以及支持var float的求解器(例如G12 / mip,JaCoP,Gecode和ECLiPSe):如果将F定义为“ var float:F”,则F为0.5。请注意,G12 / fd不支持var float。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章