问题标签 [gecode]

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 回答
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 回答
309 浏览

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

我有以下 minizinc 模型:

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

我在看什么?

0 投票
1 回答
30 浏览

gecode - 你能使用任意精度的算术吗?

我正在使用 Gecode 将算法建模到硬件映射,标准Gecode ::Int::Limits太小了,至少因为我想针对内存超过 2^32 的系统。

有没有办法使用 Gecode 或至少 64 位整数的任意精度算术?

我知道可以使用 MPIRGMP支持构建 Gecode ,但似乎这些仅用于三角运算?

0 投票
1 回答
171 浏览

minizinc - Minizinc, Gecode, how to get an identical solutions across distributed servers, with multi-solution model?

I am using minizinc and gecode to solve a minimization problem in a distributed fashion. I have multiple distributed servers that solve the same model with identical input and I want all the servers to get the same solution.

The problem is that model has multiple solutions, which periodically causes servers to come up with different solutions independently. It is not significant which solution will be chosen, as long as it is identical among all servers. I am also using "-p" arguments with gecode to use multiple threads (if it is relevant).

Is there a way that I could address this issue?

For example, I was thinking about outputting all the solutions and then sort them alphanumerically on each server.

Thanks!

0 投票
0 回答
46 浏览

algorithm - 我们可以在 GECODE 求解器中分配一个不同于域和边界的新传播器来求解线性约束吗?

线性方程/不等式可以通过非常快速的单纯形算法轻松求解。但是对于 GECODE 求解器,我们只有两个传播器:域和边界,它们解决了具有不同方法来解决线性问题并且具有接近 NP Hard 的时间复杂度的约束。\n
我们能否修改 GECODE 求解器代码以分配一个新的传播器,该传播器将使用单纯形算法来求解线性约束?任何想法?

0 投票
1 回答
414 浏览

minizinc - Minizinc,如何创建地图或字典数据结构

我有一个关于 Minizinc 语法的简单问题。我的输入 .dzn 文件包含一组 2 维数组(大约最多 30 个数组),声明如下:

注意:索引号中有间隔(例如,12 -> 20)

在我的模型中,我需要根据变量的值使用这些数组之一。在通用编程语言中,我会使用地图或字典数据结构来解决它。但在 Minizinc 中,我通过以下方式对其进行硬编码:

这段代码的一个明显问题是每次更改输入时都需要更改模型。有没有更好的方法可以以通用方式对其进行编码?

谢谢!

0 投票
1 回答
1068 浏览

constraint-programming - MiniZinc 中的基数约束

MiniZinc约束求解器允许使用内置函数非常容易表达基数约束:sum()

满足基数约束,当且仅当布尔变量数组中的 if true 元素的数量是指定的。布尔值自动映射到整数值01计算总和。

我将自己的基数约束谓词实现为一组计数器切片:

此实现使用并行编码,切片之间的行/变量更少:

问题:

使用本土基数谓词有意义吗?还是 MiniZincsum()在解决速度方面的实施毫无疑问?

更新:
我使用Gecode作为求解器后端。

0 投票
1 回答
153 浏览

gecode - 在 Gecode 中,从评价函数访问家庭/空间变量值

Gecode中,我使用评价函数在分支时选择变量。

为了计算变量 v 的价值,我需要访问一些其他变量值,但看起来在调用价值函数时,空间变量还没有被分配任何值:

难道我做错了什么?有没有办法访问评价函数中的变量值?

0 投票
1 回答
93 浏览

c++ - 如何在 Gecode 中使用 Merit 函数?

我正在尝试使用评价函数在 Gecode 中进行分支。在 MPG,Gecode 手册中,说明了一个示例评价函数,以及如何将其传递给分支。但我无法弄清楚该函数的放置位置。它应该在脚本内部还是外部?现在我把它放在复制函数旁边,等等。我找不到任何有人使用评价函数的示例代码。

我收到以下错误:

这是我正在尝试的代码:

我知道做一个只返回索引的评价函数是愚蠢的,我只是想在做我想做的事情之前让最简单的评价函数工作。