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

minizinc - 调试 minizinc(无论如何,我发现了一个错误吗?)

我熟悉 MiniZinc 的基础知识。因此,借助 MiniZinc IDE,我编写了如下代码片段

显示

现在,整数列表的 cdr 似乎是错误的。我认为这是我的错误,尽管我无法发现它。

断言可以在这里帮助我吗?由于我将使用 Gecode(然后我有 Gist)将我的代码实际投入生产,我可以遵循这条路线吗?

任何提示表示赞赏...

编辑此片段

报告

0 投票
1 回答
318 浏览

constraint-programming - 未安排自定义 GeCode 传播器

我正在 GeCode 中实现自定义总和传播器。我试图建模的问题涉及许多总和约束,每个总和约束都可以根据特定问题的启发式进一步传播。所有这些总和的总和表示成本函数。我正在使用分支定界搜索,目的是最小化这个总和,正如您可以想象的那样,我的边界的有效性高度依赖于上述每个自定义总和约束中的传播质量。

我在 IntVarArray 上进行分支,我的自定义 sum 传播器订阅的元素。随着 IntVarArray 中的更多值被分配,我的总和域越窄。每个 sum 传播器订阅特定于给定问题实例的 IntVarArray 子集。这是模型实现构造函数的片段(“exclusiveCostSum”的实现附在下面):

我遇到的问题是(对于某些问题实例)我的分支设法分配 IntVarArray 的所有值,而无需调度我所有的总和传播器。或者至少其中一些在发布解决方案之前没有达到固定点。这给我留下了一个不完全有界的结果。自定义传播器被编写为始终声明包含并在分配所有相关变量时完全绑定。

我将避免详细说明我的实际传播逻辑的细节,因为它很难很快做到,而且我相当相信它是正确实现的。但是,我在下面包含了完整的传播器实现:

欢迎任何关于如何进一步调试的想法。我也很高兴听到配置 GeCode 以完成相同的边界启发式的替代方法。我对 GeCode 很陌生,所以这很可能不是最好的方法。

0 投票
0 回答
333 浏览

optimization - 运行 Minizinc 模型会产生未知错误

我是 minizinc 和优化的初学者。我试图充实一条只有平均十分位数统计数据可用的点曲线。

这是我的模型:

我认为这将是一个简单的模型,但是从 minizinc IDE(gecode 求解器)运行时,我得到以下输出:

然后是带有标题的弹出窗口:

“执行 MiniZinc 解释器时出现未知错误。”

到目前为止,我遇到的所有其他失败都产生了关于哪里出了问题的指标,但我不知道从哪里开始。谁能帮助或指出我哪里出错了?

0 投票
1 回答
220 浏览

constraint-programming - 带有可选变量的搜索策略

我在 Minizinc 中实现了一个简单的模型,以在一系列时隙中安排具有不同优先级和持续时间的任务,但并非所有任务都可以安排,因此有些任务将被忽略,我试图最大化优先级的总和计划的任务。

我有一个工作版本,其中任务在变量数组中定义,非计划任务的时间为 0。约束有几个 where 子句仅考虑计划任务(when[i]>0)。默认搜索策略非常慢,因此我将其更改为另一个效果更好的策略,使用 Gecode 作为求解器。

现在我正在使用可选变量实现一个不同的版本,以摆脱 where 子句,检查是否有任何改进。但是,使用 opt var 时,我似乎无法定义搜索策略 int_search()。

有什么办法吗?

工作模型如下(注释掉我想尝试的搜索策略的solve子句):

0 投票
0 回答
98 浏览

r - Gecode 的 R 接口(开源约束编程工具包)

我想在 R 中使用开源 Gecode (gecode.org) 框架进行约束编程。到目前为止,我没有找到任何直接路径。我发现了很多 Ruby、Python、Prolog 的绑定和接口,但不是 R 的直接绑定和接口。

任何指向库的指针或其他意味着如何在典型的 R 项目中使用 Gecode 都将受到高度赞赏。

0 投票
1 回答
1002 浏览

c++ - 使用 Gecode 运行第一个程序

拜托我需要你的帮忙。

我已经安装了用于在 Windows 8 上开发基于约束的系统和应用程序Gecode 4.4.0的工具包,还有编译器 C++ Dev C++ 5.9.2但我仍然不知道如何运行我的第一个程序或提供的示例安装。

我读过我需要一个make文件,但实际上我还没有成功编译或执行。

编译命令:

g++.exe -D__DEBUG__ main.o sat.o -o TestGecode.exe -L"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib32" -L"C:/Program Files (x86)/Dev- cpp/MinGW64/x86_64-w64-mingw32/lib32" -static-libgcc -L"C:/Program Files (x86)/Gecode/include" -m32 -g3

输出错误:

sat.o: 在函数ZN6Gecode9ExceptionD2Ev': c:/program files (x86)/dev-cpp/mingw64/x86_64-w64-mingw32/include/gecode/support/exception.hpp:46: undefined reference to_imp___ZTVN6Gecode9ExceptionE' sat.o: 在函数ZN6Gecode15MemoryExhaustedC1Ev': c:/program files (x86)/dev-cpp/mingw64/x86_64-w64-mingw32/include/gecode/support/exception.hpp:90: undefined reference to_imp___ZN6Gecode9ExceptionC2EPKcS2_' sat.o: 在函数'ZNK6Gecode9PosChoice7archiveERNS_7ArchiveE': ...

0 投票
1 回答
65 浏览

constraint-programming - 约束编程求解器(gecode)的图形模型建议

问题:给定一个有标签的(1..n)无向图,在 Gecode 中创建一个模型,用于查找具有给定序列度的超图:

困难:主要困难是找到花哨的模型来准确地表达它的度数:

为什么不是邻接矩阵?因为图往往又大又稀疏

为什么不是边缘列表?我们要添加边,但我们不知道其中有多少,CP 需要预定义数量的变量(对吗?)

为什么不是邻接表?将问题建模为一个集合列表,我们需要对所有 i、j 施加一个约束:(j in a[i] <=> i in a[j])

0 投票
0 回答
37 浏览

constraint-programming - Gecode 对计数约束

我在 C++ 上使用 Gecode 我有两个长度为 n 的 IntVarArgs 变量,域从 0 到 k

我需要一个约束表达式来计算这两个数组之间的唯一对

如果同一索引上有 3 对值 1、2,我希望约束 count(a, b, {1, 2}, 3) 保持不变,我现在要做的是引入一个名为 classes 的新变量

其中类变量对于不同的对是不同的,并且在我对其应用计数约束之后,但我觉得应该有一个更好的解决方案

0 投票
0 回答
109 浏览

c++ - Gecode 约束“数组中的每个值至少出现 k 次”

它是 Gecode c++

我有一个长度为 n 的 IntVarArgs 值,我想推动一个约束,即数组中的每个值至少出现 k 次(或 0)fe 数组 [1、2、3、1、2、3、4、4、4]用 k = 2 满足这个约束

我现在做的是

然而,随着 n 的增长,约束的数量也在增长,但我觉得它可以用单个约束来表示。我还认为,数组对自身的封闭对于求解器来说并不是最优的。

0 投票
0 回答
34 浏览

constraint-programming - 制定映射约束(gecode)

我需要为 2 个相同大小的整数数组表达一个约束

换句话说,有一个整数函数,如

有什么解决方案吗?