问题标签 [minizinc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
164 浏览

minizinc - Minizinc 程序抱怨 global_cardinality 中的断言失败

我试图在 Minizinc 中解决这个问题,取自Gardner 的 Puzzle

十个编号为 0,...,9 的单元格记录一个 10 位数字,这样每个单元格(例如 i)表示数字 i 在此数字中出现的总次数。找到这个号码。答案是 6210001000。

我解决了它,代码在 Gecode 上运行良好:

Gecode的输出:

但是,G12 求解器抱怨 global_cardinality 中的断言失败:

在调用“断言”断言失败:global_cardinality:覆盖和计数必须具有相同的索引集

没错,正如 Gecode 的输出所示,N 为 1..10,cell 为 0..9。所以我的问题是:

  • 为什么 Gecode 有效?不同的实现或我的程序有问题但我很幸运?
  • 如何修复程序以与 G12 一起使用或使其健壮/正确?
0 投票
0 回答
347 浏览

minizinc - 哪个标志输出 minizinc 运行时间

我正在从终端运行一个 minizinc 模型,但在程序完成执行后看不到运行时间:我怎么能看到执行/运行时间?有这个标志吗?

0 投票
4 回答
2528 浏览

constraints - MiniZinc 数组中字符串值的索引

问题

给定一个 MiniZinc 字符串数组:

... 从 MiniZinc 数据文件加载数据:

如何查找数组中特定字符串的索引?例如,该 ARMOR 位于位置 2。

上下文

我需要针对其统计数据的某些限制找到最佳的项目选择。此信息存储在一个 2D 数组中,声明如下:

因此,为了对通过所选项目获得的最小 ARMOR 数量进行约束,我需要知道 ARMOR 在内部数组中的索引为 2。

由于数据文件是由外部程序生成的,并且统计数据的数量和顺序是动态的,因此我无法对约束中的索引进行硬编码。

一种解决方案(在我的情况下不起作用)

MiniZinc教程使用了一个有趣的技巧来实现类似的效果:

不幸的是,由于 MiniZinc 数据文件中不允许变量声明,所以这个技巧在我的情况下不起作用。

0 投票
2 回答
1439 浏览

minizinc - minizinc下的多路输出

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

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

我的迷你锌在这里:

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

我查看了 minizinc 1.6 的帖子,似乎说省略输出语句会产生所有输出(在 minizinc 中打印完整解决方案(所有决策变量)的简单方法)。这没用。只有一个输出。

0 投票
1 回答
448 浏览

minizinc - Minizinc - 计算解决方案的数量并打印前 50 个仅用于检查

除了生成输出文件然后使用 wc -l output.txt 和 -1 除以 2 并将 output.txt 标头 -50 之外,有没有简单的方法可以自动计算 minizinc 内的解决方案数量并打印前 50 个解决方案?我的程序在一种情况下运行 12 小时,而另一种预计运行 2 天!

此外,除了使用 time minizinc 之外,以批处理模式(不是 ide)生成资源使用的任何方式......

谢谢你的建议

0 投票
1 回答
473 浏览

constraints - 将 MiniZinc 模型转换为 choco 代码

我的 minizinc 模型运行良好,但我需要将其转换为 Java 代码,所以我使用 choco 来完成。我现在面临的问题是 minizinc 炒锅的机制与 choco 不同。我在 choco 中写了我在 minizinc 中使用的约束,但它没有用。

假设:

minizinc 型号为:

巧克力代码是:

  • cl_cap 是一个 int 数组。
  • cl_id[i].getValue()始终为 0,因为它获取域的下限并且约束不适用于 cl_id

我应该怎么做才能使 choco 约束以与 minizinc 相同的方式工作?

0 投票
1 回答
1054 浏览

minizinc - Minizinc,计数成对数组中的出现次数

我是约束编程和玩弄一些基本操作的新手。我想计算成对数组中任意元素x的出现次数。

例如,下面的数组有 2 个 8 和 1 个其他元素。

我想知道如何提取这些信息,可能使用内置函数。

0 投票
1 回答
179 浏览

minizinc - MiniZinc:不满意时显示选择点

在 MiniZinc 中运行程序时,-s 标志让我看到在寻找解决方案时探索的选择点的数量。但是,如果条件不满足,则不显示探索的选择点数。

即使条件不满足,如何显示选择点?

0 投票
2 回答
687 浏览

scheduling - MiniZinc - 多个设施上的任务调度 - 累积“var opt 错误”

我是 MiniZinc 的新手,我在执行以下 CP 公式时遇到了麻烦(可以在此处找到问题的完整公式(第 4/16 页)

问题的CP表述

我的实现看起来像下面的代码,但我遇到了以下错误:MiniZinc: type error: no function or predicate with this signature found: 'comulative(array[int] of var opt int,array[int] of var opt int,array[int] of var opt int,int)'.

这是因为数组理解受到一些 var 的影响,在这种情况下是 variable x

您对如何cumulative使用选项变量或任何可能的解决方法进行约束有什么建议吗?

在此先感谢您的帮助 :-)

简单数据集:

0 投票
1 回答
256 浏览

minizinc - 在 minizinc 教程中 $T , [$T] , $U 代表什么

有人可以帮我理解迷你锌教程中的几件事:

这将返回集合 x 和 y 的交集。显然 x 和 y 是集合 - 但是 $T 在这种情况下意味着什么?

返回集合 x 和 y 的并集。据我了解,x 是一组整数,y 也是一组整数 - 但“var set of int”是什么意思?什么是'var'?

返回数组 x 中集合的并集。你能解释一下:

和: