2014-04-01 45 views
3

minizinc中可以支持pow約束的方式(直接或間接)嗎? Gecode支持帶有float和int變量的pow constraint,但是Minizinc和FlatZinc不支持變量的pow。 Minizinc和Flatzinc僅支持模型參數。 任何指針可以在MiniZinc中添加對Flatzinc(mzn2fzn)解析器的支持來執行此操作。minizinc中的power-of(pow)約束

我想要有一個約束,如 - 「pow(4,x)== y」,即4^x == y。

+0

加入之前,我看到了這個問題的錯誤:http://www.minizinc.org/trac/ticket/54 – esl

回答

2

我知道在當前版本的MiniZinc中使用pow/2和決策變量是不可能的。

也許用「存在」來模擬它就足夠了?這裏有一個簡單的例子(在這個例子中「我」的域太大了)。

var 0..10000: x; 
var 0..10000: y; 
solve satisfy; 

constraint 
     exists(i in lb(x)..ub(x)) (
     i = x /\ 
     pow(4,i) = y 
    ) 
; 

output [ show([x,y]) ]; 
+0

你知道的增加對與MiniZinc決策變量戰俘支持的任何計劃,因爲GECODE已經支持它? – user3483760

+0

@ user3483760我不知道有任何擴展pow函數的計劃。即將推出的MiniZinc 2.0版將具有不少新功能,希望它還包含更好的工作功能。 – hakank

+0

已經確認minizinc會包括這個,但是實際解算器的支持顯然是有點缺乏。請參閱[功能請求](http://www.minizinc.org/trac/ticket/54#comment:1)。 – esl