问题标签 [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 程序抱怨 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 一起使用或使其健壮/正确?
minizinc - 哪个标志输出 minizinc 运行时间
我正在从终端运行一个 minizinc 模型,但在程序完成执行后看不到运行时间:我怎么能看到执行/运行时间?有这个标志吗?
constraints - MiniZinc 数组中字符串值的索引
问题
给定一个 MiniZinc 字符串数组:
... 从 MiniZinc 数据文件加载数据:
如何查找数组中特定字符串的索引?例如,该 ARMOR 位于位置 2。
上下文
我需要针对其统计数据的某些限制找到最佳的项目选择。此信息存储在一个 2D 数组中,声明如下:
因此,为了对通过所选项目获得的最小 ARMOR 数量进行约束,我需要知道 ARMOR 在内部数组中的索引为 2。
由于数据文件是由外部程序生成的,并且统计数据的数量和顺序是动态的,因此我无法对约束中的索引进行硬编码。
一种解决方案(在我的情况下不起作用)
MiniZinc教程使用了一个有趣的技巧来实现类似的效果:
不幸的是,由于 MiniZinc 数据文件中不允许变量声明,所以这个技巧在我的情况下不起作用。
minizinc - minizinc下的多路输出
尝试学习 minizinc,但在通过示例之后,我可以确认如果我想获得多个输出,我实际上必须编写一些程序语言,或者有一种更“自然的 minizinc”方式来获得它。
例如,假设我想让所有不同的数字加起来为 3,答案应该是 0+3 1+2 2+1 3+0 ...
我的迷你锌在这里:
只产生 3+0。如何获得其他答案?感谢您提前提供任何建议。
我查看了 minizinc 1.6 的帖子,似乎说省略输出语句会产生所有输出(在 minizinc 中打印完整解决方案(所有决策变量)的简单方法)。这没用。只有一个输出。
minizinc - Minizinc - 计算解决方案的数量并打印前 50 个仅用于检查
除了生成输出文件然后使用 wc -l output.txt 和 -1 除以 2 并将 output.txt 标头 -50 之外,有没有简单的方法可以自动计算 minizinc 内的解决方案数量并打印前 50 个解决方案?我的程序在一种情况下运行 12 小时,而另一种预计运行 2 天!
此外,除了使用 time minizinc 之外,以批处理模式(不是 ide)生成资源使用的任何方式......
谢谢你的建议
constraints - 将 MiniZinc 模型转换为 choco 代码
我的 minizinc 模型运行良好,但我需要将其转换为 Java 代码,所以我使用 choco 来完成。我现在面临的问题是 minizinc 炒锅的机制与 choco 不同。我在 choco 中写了我在 minizinc 中使用的约束,但它没有用。
假设:
minizinc 型号为:
巧克力代码是:
- cl_cap 是一个 int 数组。
cl_id[i].getValue()
始终为 0,因为它获取域的下限并且约束不适用于 cl_id
我应该怎么做才能使 choco 约束以与 minizinc 相同的方式工作?
minizinc - Minizinc,计数成对数组中的出现次数
我是约束编程和玩弄一些基本操作的新手。我想计算成对数组中任意元素x的出现次数。
例如,下面的数组有 2 个 8 和 1 个其他元素。
我想知道如何提取这些信息,可能使用内置函数。
minizinc - MiniZinc:不满意时显示选择点
在 MiniZinc 中运行程序时,-s 标志让我看到在寻找解决方案时探索的选择点的数量。但是,如果条件不满足,则不显示探索的选择点数。
即使条件不满足,如何显示选择点?
scheduling - MiniZinc - 多个设施上的任务调度 - 累积“var opt 错误”
我是 MiniZinc 的新手,我在执行以下 CP 公式时遇到了麻烦(可以在此处找到问题的完整公式(第 4/16 页))
我的实现看起来像下面的代码,但我遇到了以下错误: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
使用选项变量或任何可能的解决方法进行约束有什么建议吗?
在此先感谢您的帮助 :-)
简单数据集:
minizinc - 在 minizinc 教程中 $T , [$T] , $U 代表什么
有人可以帮我理解迷你锌教程中的几件事:
这将返回集合 x 和 y 的交集。显然 x 和 y 是集合 - 但是 $T 在这种情况下意味着什么?
返回集合 x 和 y 的并集。据我了解,x 是一组整数,y 也是一组整数 - 但“var set of int”是什么意思?什么是'var'?
返回数组 x 中集合的并集。你能解释一下:
和: