1
在MiniZinc中,我怎樣才能得到這個代碼編譯沒有錯誤「沒有函數或謂詞找到這個簽名:`round(var float)'」?在MiniZinc中,我該如何解決這個錯誤?
var int: D = 1;
var int: F;
constraint F = round (D/2);
在MiniZinc中,我怎樣才能得到這個代碼編譯沒有錯誤「沒有函數或謂詞找到這個簽名:`round(var float)'」?在MiniZinc中,我該如何解決這個錯誤?
var int: D = 1;
var int: F;
constraint F = round (D/2);
該消息僅僅意味着MiniZinc不支持帶有決策變量round()(即round(var float))的round()。它只支持「循環(浮動)」,即固定浮動值。這與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浮點數。
現在清除 - 謝謝! – 2015-02-09 18:22:33
吉姆,如果你在問題中回答了問題,那麼你會覺得很好,因爲你認爲它實際上回答了你的問題。 – hakank 2015-02-10 04:44:26
不知道我可以做到 - 現在我明白了。會做。 – 2015-02-10 09:12:21