在 MiniZinc 中,如何编译此代码而不出现错误“未找到具有此签名的函数或谓词:‘round(var float)’”?
var int: D = 1;
var int: F;
constraint F = round (D / 2);
该消息仅意味着 MiniZinc 不支持带有决策变量的 round(),即“round(var float)”。它仅支持“round(float)”,即固定浮点值。与ceil()和floor()相同,只支持固定的浮点值。
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 浮点数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)