【问题标题】:In MiniZinc how can I resolve this error?在 MiniZinc 中,我该如何解决这个错误?
【发布时间】:2015-02-09 09:22:06
【问题描述】:

在 MiniZinc 中,我怎样才能让这段代码编译而不会出现错误“没有找到具有此签名的函数或谓词:`round(var float)'”?

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

【问题讨论】:

    标签: floating-point minizinc


    【解决方案1】:

    消息只是意味着 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 浮点数。

    【讨论】:

    • 吉姆,如果您认为某个问题实际上已经回答了您的问题,那么如果您检查该问题是否已回答,那就太好了。
    • 不知道我能做到这一点 - 现在我明白了。会的。
    猜你喜欢
    • 2016-07-21
    • 2016-09-09
    • 2015-02-28
    • 2013-08-16
    • 2020-04-17
    • 1970-01-01
    相关资源
    最近更新 更多