2014-04-01 52 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