首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Z3优化超时

Z3优化超时
EN

Stack Overflow用户
提问于 2017-06-27 19:38:26
回答 1查看 127关注 0票数 1

我想在z3中设置一个超时,这样我就不会得到一个最优的解决方案,而是一个符合约束的解决方案。我使用了.Net,并尝试了如下所示:

代码语言:javascript
复制
using(Context context = new Context(new Dictionary<string, string>() { { "model", "true" } })) {
    var solver = context.MkSolver(); // i actually want to use MkOptimize() 
    Params p = context.MkParams();
    p.Add("timeout", 1000);
    solver.Parameters = p;
    IntExpr x = context.MkIntConst("x");
    // ...
    solver.Check();
    solver.Model.Evaluate(x);
}

超时运行正常,但我无法使用目前找到的解决方案,因为solver.Check()未知...

当我使用MkOptimize而不是MkSolver时,我得到一个未知参数异常

因此,我现在的问题是,在超时后如何获得到目前为止的最佳解决方案,以及如何将其与MkOptimize一起使用

EN

回答 1

Stack Overflow用户

发布于 2017-06-28 01:49:16

我非常怀疑当求解器由于超时或任何其他原因而说Unknown时,你是否能可靠地得到“目前为止最好的”答案。即使你得到了一个模型,它也不一定满足你当时的所有约束。因为这是一个非常特定于Z3的问题,你可以在https://github.com/Z3Prover/z3/issues上询问并总结你在这里为社区得到的答案,这样你可能会得到更好的结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44779344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档