![](/img/trans.png)
[英]MiniZinc: type error: no function or predicate with this signature found: `cost(var int,var int)'
[英]MiniZinc: type error: no function or predicate with this signature found: `floor(var int)'
我正在嘗試使用 Minizinc IDE 2.2.3 和 Geocode 6.1.0 [內置] 在 Mac OS/X 上運行以下代碼:
var 1..10: x;
var float: y = x div 4;
constraint y == floor(y);
solve minimize( (x - 7)^2 );
output ["\(x) \(y)"]
我收到的錯誤是:
MiniZinc:類型錯誤:找不到具有此簽名的函數或謂詞:`floor(var float)'
我見過這個類似的問題,但是,我正在遵循所選答案中的建議並使用:
因此,這個問題與另一個問題不同。
文檔 (v. 2.2.3)說floor()
需要一個float
類型的參數:
4.1.11.6. 強制操作
分別向 +∞、-∞ 和最接近的整數舍入浮點數。
int: ceil (float) int: floor(float) int: round(float)
從一種類型到另一種類型的顯式轉換。
int: bool2int( bool) var int: bool2int(var bool) float: int2float( int) var float: int2float(var int) array[int] of $T: set2array(set of $T)
在您的模型中,您將var float
而不是float
傳遞給函數floor
,因此您會收到類型錯誤。
話雖如此,在您的示例中, floor()
函數似乎不是必需的。 即使您將y
聲明為var float
,也只能為其分配一些整數值,因為整數除法的結果始終是integer :
function var int: 'div'(var int: x, var int: y)
因此,我的建議是完全放棄floor()
。
例子
var 1..10: x;
var float: y = x div 4;
constraint 1.5 <= y;
solve minimize( (x - 7)^2 );
output ["\(x) \(y)"]
產量
~$ minizinc t.mzn
8 2.0
----------
==========
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.