使用约束编程生成独特的解决方案

时间:2014-09-23 22:48:08

标签: constraint-programming minizinc gecode

我接触过CP和MiniZinc,但我不是专家。

我有一个CP模型,我不能在这里发布ATM,用MiniZinc实现。 我需要为问题生成所有可行的解决方案。我们希望只有少数几个,比如少于1000个,超过100个。

我尝试使用-a标志传递给minizinc ver来解决模型问题。 1.6但我注意到很多打印的解决方案是相同的。

Here他们指的是“投射”。在另一篇论文中,我读到他们使用了一些“回溯机制”。

我现在还不清楚。

我的问题是:

  1. 从CP模型中仅生成唯一解决方案的最佳方法是什么?
  2. 是否在SCI库或Gecode等CP库中实现了标准机制?它有一个共同的名字吗?
  3. 计算效率高吗?
  4. minizinc支持吗?如何访问该功能?

1 个答案:

答案 0 :(得分:4)

通常,CP系统为您提供独特的解决方案。我怀疑你有没有打印的决策变量(不在输出部分),你没有看到如果这些值包含在解决方案中,它将是唯一的解决方案。

在您链接到(this recent discussion)的问题中,提到Gecode的FlatZinc解算器(至少是SVN版本)现在在输出部分给出决策变量的子集时生成不同的解决方案。其他FlatZinc解算器似乎没有此功能。

如果这不能回答您的问题,请提供有关模型和输出示例(包括输出部分)的更多详细信息。