首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MiniZinc模型从Java调用gecode

使用MiniZinc模型从Java调用gecode
EN

Stack Overflow用户
提问于 2017-05-18 14:18:49
回答 1查看 367关注 0票数 0

我想在Java运行时解决一个带有动态参数的模型。我的问题是用MiniZinc写的。在终端中,我可以通过调用以下命令来解决模型:

代码语言:javascript
复制
mzn2fzn model.mzn model_data.dzn  (this produces model.fzn file)
fzn-gecode model.fzn (actually solves the model)

基本上有两个步骤,首先需要在提供数据文件的同时将minizinc模型编译成平面锌格式,然后在平面锌模型上运行gecode本身。

当然,我可以通过调用外部进程来执行这些步骤(在Java中使用ProcessBuilder,在python中使用子进程'like‘)。但我想知道是否有更好的方法。特别是,我想避免每次调用时将我的模型重新编译成平面锌。

除了我试着叫壁虎的方式之外,还有别的办法吗?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-22 13:32:31

目前,Java与libminizinc之间没有用C++编写的直接接口。因此,最好的选择是将MiniZinc作为外部进程运行。

但是,您不必调用两个单独的进程。使用流程mzn-fzn (在MiniZinc 2发行版中找到),您可以使用给定的求解器编译和运行,同时只构建一个进程。

因此,给定的代码可以表示为:mzn-fzn --solver fzn-gecode model.mzn model_data.dzn

使用-D标志可以避免将数据保存到文件中。

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

https://stackoverflow.com/questions/44050354

复制
相关文章

相似问题

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