在 minizinc 中打印完整解决方案(所有决策变量)的简单方法

esl*_*esl 5 minizinc

锌规格是这样说的:

如果不存在输出项,则实现应以可读格式打印所有全局变量及其值。

然而,这似乎不适用于 minizinc 版本 1.6.0:

G12 MiniZinc 评估驱动程序,版本 1.6.0

我尝试过默认命令 (minizinc) 和 mzn-gecode。

我真的很想避免在输出表达式中重复所有变量名称。我真正想要的是让所有决策变量以某种结构化格式(例如 YAML)输出,但我会选择某种方法来避免这种重复。

澄清一下:我的模型与 CSP 的典型示例不匹配,例如没有大数组或矩阵。它只是一组相当大(相对而言)的单独决策变量。

编辑:创建了错误。

EDIT2:bug 现已在 minizinc 2.0 git 存储库中修复,因此它符合规范。

hak*_*ank 3

据我所知,当模型中没有定义的输出项时,所有 FlatZinc 求解器都会为每个解决方案显示一个“------------”。所以看来这部分的规范是错误/过时的。

这些年来,产出项目发生了一些(或多或少激进的)变化。在一些早期的 MiniZinc 版本中,它按照规范描述的方式工作,并且在建模问题时非常方便(尽管很难获得良好的输出)。当行为改变时,这确实很麻烦,因此需要一个输出项来显示结果。

有趣的是,Zinc(MiniZinc 的“老大哥”,http://www.minizinc.org/g12_www/zinc/)的工作原理与描述的一样,即在没有输出项时显示所有全局变量。也许规范编写者只是忘记提及 MiniZinc 的不同之处。