问题标签 [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 回答
485 浏览

minizinc - 如何在 Minizinc 中为函数创建等效项以简化谓词

我对约束编程很陌生,我正在学习 MiniZinc。我有很大的谓词,我想创建一个等效的函数(在经典编程语言中)来简化谓词

例如,我有:

column_summ 谓词仅计算函数 f(x) 2x^2 < T 的等价物,但在当前形式下,它占用大量空间并且难以遵循代码。我希望能够通过以下方式重写代码:

MiniZinc 中表达上述代码的正确语法是什么?谢谢!

0 投票
1 回答
536 浏览

intersection - Minizinc:int数组的成对交集

我有一些 int 变量的数组(可以超过 10 个)。我正在寻找一种有效的方法来限制这些数组的成对交集计数,即每个数组与任何其他数组的共同元素不能超过 x 个。

伪代码示例:[1,4,4] 和 [2,2,1] 将有一个共同元素 -> 数字 1。[4,4,4] 和 [9,4,4] 有元素 4通常,应忽略重复的 4。

在我当前的实现中,我遍历所有数组对,并为每个 par 检查每个元素是否也在另一个数组中。这当然非常慢,并且没有按照应有的方式消除重复项。

我的代码中有趣的部分如下所示:

我曾考虑过使用 minizinc 集,因为它们支持一些集操作,但我无法让它们与变量一起使用。

有任何想法吗?

0 投票
1 回答
336 浏览

java - 使用 MiniZinc 模型从 Java 调用 gecode

我想在 Java 的运行时解决具有动态参数的模型。我的问题是用 MiniZinc 写的。从终端我可以通过调用以下命令来解决模型:

基本上有两个步骤,首先我需要在提供数据文件的同时将 minizinc 模型编译成 flatzinc 格式,然后我需要在 flatzinc 模型上运行 gecode 本身。

当然,我可以通过调用外部进程(在 Java 中使用 ProcessBuilder 或在 python 中使用子进程'like')来完成这些步骤。但我想知道是否有更好的方法。特别是我想避免每次调用都将我的模型重新编译成 flatzinc。

我尝试调用 gecode 的方式是否有其他选择?

谢谢!

0 投票
2 回答
336 浏览

minizinc - MiniZinc 在引入输出语句时找不到解决方案

我有一个用 minizinc 编写的简单模型,我使用 gecode 通过先将其编译成 flat-zinc 来解决它。作为输入,模型采用一些常量、数组和矩阵(以二维数组的形式)。模型的输出是另一个必须满足某些约束的二维矩阵。

目标优化是最小化“目标”的值,它是输出矩阵的一个特定函数,定义如下:

当我按如下方式执行此模型时:

我可以看到一系列可能的解决方案,列表中的最后一个是最佳解决方案。但是,如果我将输出语句添加到模型中以打印“目标”变量的值 - gecode 会挂起数小时而根本找不到任何解决方案,如果中断则打印 ==UNKNOWN==。

这是预期的行为吗,如果是,您能解释一下原因吗?

干杯

0 投票
2 回答
362 浏览

minizinc - minizinc 中 var float 决策变量数组的不相等约束

我有一个模型需要将 var float 数组的每个元素限制为完全不同

我尝试使用全局 alldifferent 全局约束,但出现以下错误:

所以我用以下理解替换了 alldifferent 约束:

但是现在当我使用地理编码求解器时出现以下错误:

当我使用 G12 MIP 求解器时出现以下错误:

有没有不同的方法可以编码这个约束?

0 投票
1 回答
2598 浏览

arrays - Minizinc 数组集

在我的 Minizinc 项目中,我试图生成一个包含 n 个集合的数组。给定一个包含 t 个不同数字的数组,生成 n 个不同的集合,其
基数在数组 m 中给出。例如:t = 10;n = 4; 和 m = [3, 2, 2, 3];我想生成一组集合 x = [1..3, 4..5, 6..7, 8..10];

但是我从下面的代码中得到的是 x = [1..3, 4..5, {6,10}, 7..9]; (我不想使用求解最小化或其他各种求解,因为我的
目的只是生成一个中间集数组。)

0 投票
1 回答
200 浏览

minizinc - Minizinc - 将作业分配给特定机器

我说过 n 个工作和 m 个机器,并且有一个工作类型的 jobtype 数组。如果作业是作业类型数组中的特定类型,我必须将可用的其他机器中的偶数机器分配给奇数机器。minizinc可以吗?我试过的片段如下:

这是给出以下警告

TIA

0 投票
1 回答
587 浏览

arrays - Minizinc 数组组合

给定一个大小不同的集合数组,生成一个集合数组,这些集合是给定集合的组合对。尝试了各种理解安排。错误消息有时是“不是整数表达式”

0 投票
1 回答
506 浏览

output - 尝试打印结果的 MiniZinc 类型错误

我正在草拟 r600g 驱动程序中的银行调酒计划(这是低效的 ATM,我正在弄清楚限制条件)

它适用于注释掉的 3 个“输出”行,否则它会失败:

有任何想法吗?

0 投票
2 回答
309 浏览

constraints - Minizinc:平凡的等式不可满足

我有以下 minizinc 模型:

该模型应该具有平凡的解决方案 0=A_1_1=A_2_1=A_3_1。但是,Gecode 和其他求解器报告说这不能令人满意。

我在看什么?