首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于测试公式的“未知数”的fzn2smt解法

关于测试公式的“未知数”的fzn2smt解法
EN

Stack Overflow用户
提问于 2017-09-19 13:41:11
回答 1查看 107关注 0票数 1

fzn2smt工具允许通过Yices求解平面锌公式。

当我尝试运行它时,求解器用UNKNOWN回答我测试的每一个公式。(例如)

代码语言:javascript
复制
~$ java -Xmx4096M fzn2smt -ce "./yices-2.5.2/bin/yices -f" -i 2DPacking.fzn 
Time1:170
=====UNKNOWN=====

但是,在给定的示例中,它似乎正确地在2DPacking.fzn.smt文件的同一个目录中创建了2DPacking.fzn实例:

代码语言:javascript
复制
~$ ls
2DPacking.fzn.smt    2DPacking.fzn    2DPacking.mzn    2DPacking.ozn

如果我在Yices公式上手动运行smt,就会得到一个积极的结果:

代码语言:javascript
复制
~$ yices-smt -f 2DPacking.fzn.smt 
sat

(= x____00002_6_ 0)
...

IMPLICANT:
(>= x____00003_4_ 0)
...

Q:还有其他人有使用fzn2smt的经验并且知道如何解决这个问题吗?

为了确保我正在经历的问题不是由于安装部分,我将在这里分享:

代码语言:javascript
复制
 main_dir
 main_dir/fzn2smt-2-0-02      # unpacked fzn2smt files
 main_dir/antlr               # unpacked antlr-runtime-3.5 files
 main_dir/yices-2.5.2         # unpacked yices files

我还按照工具说明的要求修改了环境变量:

代码语言:javascript
复制
 PATH=${main_dir}/yices-2.5.2/bin/:${PATH}
 PATH=${main_dir}/fzn2smt-2-0-02/:${PATH}

 CLASSPATH=${main_dir}:${CLASSPATH}
 CLASSPATH=${main_dir}/antlr:${CLASSPATH}
 CLASSPATH=${main_dir}/fzn2smt-2-0-02:${CLASSPATH}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-20 08:45:06

正如@Dekker在评论中所暗示的,这个问题是由于fzn2smt似乎有一段时间没有更新。

经过一些试验和错误之后,我发现似乎与fzn2smt兼容的最新版本的fzn2smt2.2.1版本。

它可以按以下方式执行:

代码语言:javascript
复制
~$ java -Xmx4096M fzn2smt -ce "./yices-2.2.1/bin/yices-smt -f" -i 2DPacking.fzn
Time1:162
Time: 207
Pos: 0
item = array2d(1..2, 1..4, [0, 0, 0, 0, 1, 1, 1, 1]);
obj = 1;
----------
Time: 223
Pos: 0
item = array2d(1..2, 1..4, [0, 0, 0, 0, 1, 1, 1, 1]);
obj = 1;
----------
==========
Time2:228

最初,fzn2smt与SMT 2009版的Yices版本相耦合。要使用该版本,使用该工具的命令行指令略有不同。

代码语言:javascript
复制
~$ java -Xmx4096M fzn2smt -ce "./yices2smt09/bin/yices -f" -i 2DPacking.fzn
Time1:160
Time: 208
Pos: 0
item = array2d(1..2, 1..4, [0, 0, 0, 0, 1, 1, 1, 1]);
obj = 1;
----------
==========
Time2:223

请注意

  • 这里的可执行文件名为yices,而不是yices-smt
  • 输出略有不同,由于某些原因,在使用新版本的工具时,会多次打印解决方案。

Yices的旧版本可以从这里下载。

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

https://stackoverflow.com/questions/46302079

复制
相关文章

相似问题

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