从 cpp 程序调用 minizinc

Calling minizinc from cpp program

是否有可能调用 minizinc 中定义的约束模型,作为 C++ 程序的函数调用?我的环境是 VS 2017(如果重要的话)。

从 C++ 项目使用 MiniZinc 有两种选择。可能最简单的方法是使用 forkexecv。通过这两个命令的组合,您可以 运行 带有您认为必要的任何标志和文件的 minizinc 可执行文件但这确实需要用户安装 MiniZinc 并在系统路径上可用($PATH).

第二种方法是使用 libminizinc 作为 C++ 库。可以在此处找到 MiniZinc compiler/driver 的源代码:https://github.com/MiniZinc/libminizinc 并且可以用作库。然而,目前对这种行为的支持非常有限。在几个月内,MiniZinc 团队打算向 libminizinc 发布一个 C API,这可能会使这个过程变得容易得多。同时,如果您选择使用这种方法,我建议您从 main.cpp 文件开始您的旅程,因为这可能会向您展示如何使用该库。

请注意,即使您采用第二种方法,OR Tools、Chuffed 和 Oscar CBLS 等 FlatZinc 求解器也需要在系统路径上可用才能在您的应用程序中使用。