问题标签 [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 投票
1 回答
353 浏览

minizinc - 从矩阵中提取列

在 MiniZinc 中,我需要从矩阵中提取一列,以便获得由列的值组成的集合。例如,如果我有这样的表:

我想提取 int 的集合1 6 3,以便有一个可以在这个集合中流动的索引。有没有命令可以做到这一点?

0 投票
1 回答
1194 浏览

minizinc - 用 minizinc 计算溶液的总数

假设我想计算 {1,2,..100} 的 80 个元素子集的数量,使得它们的总和为 3690。

我有以下模型:

要计算解决方案的总数,我运行

本质上,我打印出所有的解决方案并计算它们。有没有更简单的 minizinc 语句,而不是solve satisfy让我计算解决方案而不是找到它们?

0 投票
1 回答
1223 浏览

arrays - MiniZinc 按索引连接变量数组

我有一个 MiniZinc 程序,其中包含以下形式的 3 个变量数组:

我需要通过以下方式指定我的搜索变量顺序,但我没有成功正确构造我的数组。有类似 MiniZinc 的代码:

MiniZinc 表示数组理解表达式中不允许使用数组。我应该怎么做?

感谢您的帮助。

0 投票
1 回答
538 浏览

arrays - Minizinc:创建一个整数对数组

创建 n 个 int 对数组的 Minizinc 语法是什么,如下所示:

{(x1,y1), (x2,y2),....(xn,yn)}

以及如何访问特定元素 j 以获取例如它的 y 值?

0 投票
1 回答
394 浏览

arrays - 为什么这个 MiniZinc 声明“出乎意料”?

我是一个 MiniZinc 新手,试图通过使用数组来概括 MiniZinc 教程中的玩具程序,用于为澳大利亚地图着色。

这是带有我的 2 个数组声明的程序:

编译器毫无怨言地接受了第一个数组语句。第二个数组语句给出了语法错误消息:“意外数组”,但没有抱怨语法本身。

陈述的顺序应该是无关紧要的,所以不可能那样。用 int 替换 1..nc 仍然会出现错误。

是什么让它“出乎意料”?为什么第一个数组没有意外?

应该如何定义一系列决策变量?

0 投票
1 回答
399 浏览

formatting - 如何获得 MiniZinc 输出来解释转义,而不是按字面打印?

我正在尝试将教程的澳大利亚程序转换为使用数组。

我在输出时遇到问题,也就是说:

如何让 show 使 \na 换行,而不是转义常量中的引号?像 perl 双引号而不是单引号?

和/或有没有办法在没有引号的情况下定义常量?像 perl qw 吗?

0 投票
1 回答
238 浏览

constraint-programming - Minizinc 建模:变量作为坐标集

我正在对 minizinc 中的约束满足程序进行建模,其中解决方案是在 3D 网格上分配点。约束之一是只有一个点可以占据任何给定位置,因此这些点必须在至少一个坐标上成对不同。

我的点变量被建模为 NX 3 坐标数组:

并且差异约束是

但是当我像这样制定约束时,问题的解决时间会飞涨。我还有许多其他的约束要添加,而且它已经很慢地找到不同的点了。

我试图将这些点建模为

这样我就可以使用内置功能

不同的

但后来我看到了如何强制集合具有基数 3,而且使用通用大小的集合来建模三元组似乎不太自然。

我的问题是:对坐标集和所有不同的约束进行建模的易处理且“正确”的方法是什么?

我正在使用 minizinc IDE 包中的 gecode 求解器。模型如下所示。解题时间为 24 分钟。

0 投票
1 回答
1241 浏览

minizinc - MiniZinc 中的 `alldifferent` 方法

以下是我尝试在 MiniZinc 中实现的约束

constraint forall (t in trucks) (all_different(c in customers where sequence[t,c] !=0) (sequence[t,c]));

也就是说,当值不等于 0时,我希望sequence矩阵的每个行元素都不同。sequence

并得到了错误

MiniZinc: type error: no function or predicate with this signature found: all_different(array[int] of var opt int)'.

正如我添加了include "alldifferent.mzn";命令的其他一些线程所示,仍然显示该错误。

这是作业的一部分,很抱歉无法在这里推送我的所有代码,如果需要任何额外信息,请告诉我。

0 投票
1 回答
356 浏览

arrays - MiniZinc 为数组中的每个变量分配不同的域

我有一个数组:array[backpacks] of int: capacity指定每个背包的容量。

现在我想创建一个约束求解器必须满足的变量数组。我希望每个变量都取域 1..capacity 中的值,其中容量对应于上述数组中指定的值。

像这样的东西会起作用吗:array[backpacks] of var capacity: bagcaps

还是我必须做类似的事情:array[backpacks] of var 1..MAX: bagcaps

然后添加约束:constraint forall(i in backpacks) bagcaps[i] <= capacity[i]

谢谢你。

0 投票
1 回答
318 浏览

minizinc - MiniZinc 中可以应用多个“解决方案”吗?

我尝试在单个mzn文件中应用如下结构:

其中第二组约束是应用于 first 的结果的约束solve,单独进行操作会减少搜索空间,从而减少计算时间,这就是我首先提出这种结构的原因。

有没有办法实现这种依赖结构?由于 MiniZinc 不允许两个solve.