2013-03-20 3 views
1

Как установить тайм-аут решателя для Z3 JAVA API?Z3 JAVA-API для тайм-аута решателя

Вернуться к этому вопросу еще раз:

Вот мой код:

Context ctx = getZ3Context(); 
    solver = ctx.MkSolver(); 
    Params p = ctx.MkParams(); 
    p.Add("timeout", 1); 
    solver.setParameters(p); 

Не работает, решатель только при выполнении запроса навсегда. Есть идеи об этом?

ответ

1

Я не использовал API Java, но из Глядя на официальный Java example и в this snippet, я бы предположить, что что-то по следующим направлениям должно работать:

Solver s = ctx.MkSolver(); 
Params p = ctx.MkParams(); 
p.Add("timeout", valueInMilliseconds); /* "SOFT_TIMEOUT" or ":timeout"? */ 
s.setParameters(p); 
+0

Пробовал. Странный результат. Когда значение <3000, работает; в противном случае решатель не останавливается. – Betsy

+0

Не могли бы вы рассказать нам, на какой платформе вы работаете? Благодаря! –

+0

@ChristophWintersteiger Моя платформа - Mac OS, спасибо! – Betsy

0

Хорошо, наконец, нашли решение самостоятельно:

Context ctx = getZ3Context(); 
solver = ctx.MkSolver(); 
Params p = ctx.MkParams(); 
/* Also tried 
* p.Add("timeout", 1), 
* p.Add(":timeout", 1), 
* neither worked. 
*/ 
p.Add("soft_timeout", 1); 
solver.setParameters(p); 
Смежные вопросы