问题标签 [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.
minizinc - 从矩阵中提取列
在 MiniZinc 中,我需要从矩阵中提取一列,以便获得由列的值组成的集合。例如,如果我有这样的表:
我想提取 int 的集合1 6 3
,以便有一个可以在这个集合中流动的索引。有没有命令可以做到这一点?
minizinc - 用 minizinc 计算溶液的总数
假设我想计算 {1,2,..100} 的 80 个元素子集的数量,使得它们的总和为 3690。
我有以下模型:
要计算解决方案的总数,我运行
本质上,我打印出所有的解决方案并计算它们。有没有更简单的 minizinc 语句,而不是solve satisfy
让我计算解决方案而不是找到它们?
arrays - MiniZinc 按索引连接变量数组
我有一个 MiniZinc 程序,其中包含以下形式的 3 个变量数组:
我需要通过以下方式指定我的搜索变量顺序,但我没有成功正确构造我的数组。有类似 MiniZinc 的代码:
MiniZinc 表示数组理解表达式中不允许使用数组。我应该怎么做?
感谢您的帮助。
arrays - Minizinc:创建一个整数对数组
创建 n 个 int 对数组的 Minizinc 语法是什么,如下所示:
{(x1,y1), (x2,y2),....(xn,yn)}
以及如何访问特定元素 j 以获取例如它的 y 值?
arrays - 为什么这个 MiniZinc 声明“出乎意料”?
我是一个 MiniZinc 新手,试图通过使用数组来概括 MiniZinc 教程中的玩具程序,用于为澳大利亚地图着色。
这是带有我的 2 个数组声明的程序:
编译器毫无怨言地接受了第一个数组语句。第二个数组语句给出了语法错误消息:“意外数组”,但没有抱怨语法本身。
陈述的顺序应该是无关紧要的,所以不可能那样。用 int 替换 1..nc 仍然会出现错误。
是什么让它“出乎意料”?为什么第一个数组没有意外?
我应该如何定义一系列决策变量?
formatting - 如何获得 MiniZinc 输出来解释转义,而不是按字面打印?
我正在尝试将教程的澳大利亚程序转换为使用数组。
我在输出时遇到问题,也就是说:
如何让 show 使 \na 换行,而不是转义常量中的引号?像 perl 双引号而不是单引号?
和/或有没有办法在没有引号的情况下定义常量?像 perl qw 吗?
constraint-programming - Minizinc 建模:变量作为坐标集
我正在对 minizinc 中的约束满足程序进行建模,其中解决方案是在 3D 网格上分配点。约束之一是只有一个点可以占据任何给定位置,因此这些点必须在至少一个坐标上成对不同。
我的点变量被建模为 NX 3 坐标数组:
并且差异约束是
但是当我像这样制定约束时,问题的解决时间会飞涨。我还有许多其他的约束要添加,而且它已经很慢地找到不同的点了。
我试图将这些点建模为
这样我就可以使用内置功能
不同的
但后来我看到了如何强制集合具有基数 3,而且使用通用大小的集合来建模三元组似乎不太自然。
我的问题是:对坐标集和所有不同的约束进行建模的易处理且“正确”的方法是什么?
我正在使用 minizinc IDE 包中的 gecode 求解器。模型如下所示。解题时间为 24 分钟。
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";
命令的其他一些线程所示,仍然显示该错误。
这是作业的一部分,很抱歉无法在这里推送我的所有代码,如果需要任何额外信息,请告诉我。
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]
?
谢谢你。
minizinc - MiniZinc 中可以应用多个“解决方案”吗?
我尝试在单个mzn
文件中应用如下结构:
其中第二组约束是应用于 first 的结果的约束solve
,单独进行操作会减少搜索空间,从而减少计算时间,这就是我首先提出这种结构的原因。
有没有办法实现这种依赖结构?由于 MiniZinc 不允许两个solve
.