【问题标题】:Multiple output under minizincminizinc下的多路输出
【发布时间】:2016-03-26 17:04:36
【问题描述】:

尝试学习 minizinc,但是在通过示例之后,我可以确认一下,如果我想获得多个输出,或者有一种更“自然的 minizinc”方式来获得它,我实际上必须编写一些程序语言。

例如,假设我想让所有不同的数字加起来为 3,答案应该是 0+3 1+2 2+1 3+0 ...

我的迷你锌在这里:

% how to generate more than one result meeting the constraints

int: n=3;

var 0..9: a;
var 0..9: b;

include "alldifferent.mzn";
constraint all_different([a, b]);
constraint a + b = n;

solve satisfy;

output [
"a + b = n \t\n",
 show(a), " + ",
 show(b), " = ",
 show(n)];

只产生 3+0。如何获得其他答案?感谢您提前提供任何建议。

我查看了一篇关于 minizinc 1.6 的帖子,似乎说省略输出语句会产生所有输出 (Easy way to print full solution (all decision variables) in minizinc)。这没用。只输出一个。

【问题讨论】:

    标签: minizinc


    【解决方案1】:

    首先,默认是打印解决方案的所有变量及其值,而不是所有解决方案。

    使用选项-a 获取所有解决方案。 mzn-gecode --help 查看所有选项。在你的情况下mzn-gecode -a test.mzn 给出:

    a + b = n   
    3 + 0 = 3
    ----------
    a + b = n   
    0 + 3 = 3
    ----------
    a + b = n   
    2 + 1 = 3
    ----------
    a + b = n   
    1 + 2 = 3
    ----------
    ==========
    

    【讨论】:

      【解决方案2】:

      在配置下,有一个选项可以更改默认值,而不是在满意后打印第一个解决方案。将其更改为用户定义的行为:打印所有解决方案......您也可以有输出语句,顺便说一句。

      【讨论】:

      • 投反对票,因为对于默认应该打印所有解决方案的混淆没有答案。应该有一个实际的答案,而不是“查看文档”,您甚至不说如何找到文档。
      • 不明白。默认值为 1 个解决方案。但与往常不同的是,配置位于选项卡中。对于第一批,有人告诉我。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-30
      • 1970-01-01
      • 2020-03-09
      • 1970-01-01
      • 2023-03-13
      • 2023-01-07
      相关资源
      最近更新 更多