问题标签 [choco]

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

java - 如何在 Choco (CSP) 中定义产品

正如我在这篇文章中解释的那样,我正在尝试对网球调度问题进行建模。我很幸运地得到了描述问题的方程式的答案,这使我能够在 Choco 中实现它,而且看起来它工作得很好。

所以我要解释的是关于上一篇回答的实现的产物。

基本上我最终会得到 2 个三维矩阵和 1 个二维矩阵,如下所述:

使用这种方法,将调度矩阵映射到游戏开始矩阵的约束如下所示:

这使用times约束技巧来映射x[p][c][t]x[p][c][t + 1]进入g[p][c][t].

但是,该定义认为每个匹配具有 2 个时隙的固定持续时间。我想改变它,使持续时间是可变的。

但是,如果我想要一个可变的匹配持续时间,我将不得不映射两个以上x的值来定义g. 例如,如果比赛持续时间是 3 个插槽,map g[p][c][t]我需要这样做,x[p][c][t] * x[p][c][t + 1] * x[p][c][t + 2]但我不能这样做,times或者以类似的方式,它现在正在完成。

所以我的问题是,由于 Choco 中有一个约束称为sum,您可以确保一组值的总和等于一个值,是否有一个定义这组值的乘积?如果没有,我该怎么做?

基本上我要做的是:

0 投票
1 回答
406 浏览

java - Choco Solver ICF 约束定义数组中最小和最大变量之间的距离

我有一组 Choco 求解器 IntVar 变量,例如 X1、X2、...、Xn。我需要定义一个强制执行规则的约束 - min 和 max 变量之间的距离(绝对差)值应小于固定值,例如 100 即 |max(X1,..Xn) - min(X1, ..,Xn)| < 100 。

有人可以帮忙吗?

0 投票
1 回答
105 浏览

constraint-programming - Choco Solver ICF 约束定义 IntVar 数组在限制范围内的标准偏差

说,我有一个 IntVar 数组 int n = 10; IntVar[] x = VariableFactory.boundedArray("x", n, 0, 100, 求解器);

我需要定义一个约束,限制这个数组的标准偏差(可以是带小数点的数字)小于预定义的实数,比如 3.45。

0 投票
0 回答
85 浏览

java - Choco 继续使用中间解决方案

每隔一段时间,我的构建时间就会从 5 秒跳到 200 秒左右。有时我没有得到任何解决方案,即使我在相同的时间用相同的数据得到了大约 17 秒。

是否可以停止求解器,检查是否有解决方案,如果是,则继续,否则重新启动,可能会更改约束?

这是我到目前为止得到的:

但是使用的限制仍然是一分钟,并且在找到第一个解决方案后不会增加到三分钟。

有没有办法做到这一点?以及如何重新启动求解器?

一个相关问题:如果我确实得到了一个解决方案,恢复了那个解决方案,但我认为再多一点时间我就会得到一个更好的解决方案,我可以以这个解决方案作为起点来启动一个求解器吗?

0 投票
0 回答
69 浏览

java - Choco 平方 IntVar

我有一个应该包含惩罚的 IntVar 数组。它们是通过将 a 和 b 的差乘以 attr[2] 来计算的。但如果 attr[3] 为 1,我想在乘以 attr[2] 之前对差值求平方。我找不到可以做到这一点的视图,但是到目前为止我正在尝试的方法需要更长的时间才能找到解决方案,如果我这样做了,我会收到一个断言错误。有没有办法实现我想要做的事情?

0 投票
2 回答
80 浏览

java - 如何终止另一个 Java 进程?

我正在制作一个 CSP 求解器,它可以计算像这样的特定问题的所有组合解决方案(简而言之):

解决过程很有可能需要很长时间才能完成,比如几分钟以上。到目前为止,当它花了这么长时间时,我刚刚通过控制台停止了这个过程。

但最终我会将我的应用程序作为 Web 应用程序发布在允许 Java 应用程序的主机中(附带问题:我已经看到我可以在Google Cloud中做到这一点,并且我也被告知 AWS;它们是不错的选择吗?) . 这意味着如果需要太长时间,我或用户将无法再终止该过程。

我想添加可以随意取消解决过程的功能。

因此,我将在 Solver 类中声明一个新方法,该方法将终止该过程,这将有效地停止解析过程:

我不能problem.getSolver().stopResolutionProcess()在解析过程已经开始之后才调用,因为线程已经在运行并且在该过程结束之前,该方法调用将永远不会被执行。

那么我该怎么做呢?客户端如何向托管在云中的服务发出信号以终止正在运行的进程?

0 投票
1 回答
290 浏览

constraints - choco 将 int 分配给 IntVar

对于像这样的变量数组

有什么区别

就例如而言,一个优于另一个。需要更少的空间、更快的求解、更少的回溯?

0 投票
1 回答
150 浏览

choco - Choco-solver:变量的系数是实数

我正在寻找一种在 Choco Solver 上对数学方程进行编码的方法。我看到有一种方法可以对约束进行编码,例如:

但我正在尝试编码类似

其中xy是 int 变量,系数是实数。

0 投票
1 回答
473 浏览

constraints - 将 MiniZinc 模型转换为 choco 代码

我的 minizinc 模型运行良好,但我需要将其转换为 Java 代码,所以我使用 choco 来完成。我现在面临的问题是 minizinc 炒锅的机制与 choco 不同。我在 choco 中写了我在 minizinc 中使用的约束,但它没有用。

假设:

minizinc 型号为:

巧克力代码是:

  • cl_cap 是一个 int 数组。
  • cl_id[i].getValue()始终为 0,因为它获取域的下限并且约束不适用于 cl_id

我应该怎么做才能使 choco 约束以与 minizinc 相同的方式工作?

0 投票
1 回答
651 浏览

constraint-programming - Choco求解器约束/变量定义

我正在尝试在 choco 中移植 minizinc 模型。我知道如何定义变量和其他基本的东西,但是尽管阅读了教程和一些代码示例,但我在定义一些非平凡的约束时遇到了一些麻烦。有人可以给我一些建议,如何以 choco 求解器风格翻译以下代码(只是 z)?

谢谢!