Minizinc:Return 条件不满足时的文本

Minizinc: Return text when conditions are unsatisfiable

我正在编写一个代码来解决 MiniZinc 中的单人纸牌游戏。如果条件无法满足,我被要求 return 发消息 "This solitaire cannot be solved"。

很遗憾,我无法在 Internet 上找到解决此问题的方法。有人知道我该怎么做吗?

我不知道有什么万无一失的版本可以做到这一点,事实上这有点棘手。但这里有一些想法。

模型不满足时的标准响应是“=====UNSATISFIABLE=====”。您可以编写一个包装程序来将此字符串替换为 "This solitaire cannot be solved"。这可能是我自己会做的。

这个字符串可以通过程序 "solns2out"(MiniZinc 工具链中的程序,它可以打印出一个解决方案)来更改,它有参数“--unsat-msg”,你可以在其中声明你自己的信息。

据我所知,solns2out 的参数无法通过 MiniZincIDE 使用,因此您必须推出自己的工具链,因此您必须编写完整的程序链才能使用它,例如

 flatzinc model.mzn -some_parameters | solver model.fzn -with_some_parameters | solns2out model.ozn --unsat-msg "This solitaire cannot be solved"

这可能非常棘手,具体取决于您希望它有多灵活,例如你需要什么参数等等

(有时使用 "minizinc" 程序比 "flatzinc" 程序更容易。运行 带有 -help 选项的程序可以查看不同的参数。)