问题标签 [or-tools]

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

or-tools - 如果条件与 OR-Tools CP Solver 一起应用约束

我正在为 Job-Shop 问题实施类似的解决方案,但有一个区别:我不知道必须执行每项任务的机器。解决这个问题也是问题的一部分。事实上,我们可以说,我正在尝试解决护士问题和工作车间问题的结合。

更具体地说,我有一些持续时间为 D 的任务 T,由于其性质 N(比如说前端任务、后端任务等),必须由某些特定员工 E 以特定顺序 O 执行。

我有:

  • 一个 T int 变量数组,可以获取 E 范围内的值(将执行任务的员工)。
  • 一组固定的持续时间间隔变量(在知道它的持续时间 D 的情况下安排它们)。
  • E 序列变量应该是员工将要执行的任务序列(间隔变量)。
  • 任务和员工之间关系 N 的一些约束。
  • 订单 O 的一些其他约束。

解决这个问题的一种方法是:首先解决分配问题,然后安排任务。我已经实现了这一点。

但是我想将它作为一个独特的解决方案来实现。

我被困在这个问题上:如何创建一个依赖于我之前创建的 int vars 的析取约束?

给需要看代码的人:

当然,这是行不通的。

我真的很感激任何建议。

0 投票
1 回答
209 浏览

or-tools - 如何分配累积变量的最小值和最大值?

我创建了一个路由问题并为其添加了一些维度。找到了解决方案分配,我想知道每个索引处的累积值。我注意到CumulVar分配的 不仅有Value方法,而且还有Min方法Max。显然,累积变量是以它们可以表示间隔的方式实现的。我可以看到如何设置

  • slack_max>0
  • fix_start_cumul_to_zero=False

为累积变量引入了歧义,因为它们是如何开始以及在每次停止时添加多少松弛的选择。但

问题:每个索引的Minand是如何计算的?Max

0 投票
1 回答
53 浏览

or-tools - 约束多个 IntVarArray

我正在使用模型中的几个 IntVarArray-s,它们的元素之间存在交叉依赖关系。这是将它们用作 MakePhase 方法的参数的正确方法吗?

0 投票
1 回答
2412 浏览

or-tools - OrTools 中如何使用系数进行约束优化?

我想使用 ortools 生成一个简单问题的所有可能组合,如下面的程序所示。在这种情况下,我希望 x 和 y 是 5 的乘积,另外如果 start 是 7,那么 x 的值应该是 7、10、15、20、25 等等。如何为此更改以下代码?

0 投票
0 回答
81 浏览

c# - 如何通过允许更多时间进行搜索来减少路由模型分配的最优性差距?

我正在解决一个拣货和交货问题。我正在测试 OR-Tools 以通过以下示例了解它有多好: 1. 两辆车在同一起点,两个取货地点(每个客户一个)在地理位置方面实际上是相同的点,两个客户有相同的地理位置也。2. 没有需求或容量,只是点和约束之间的时间维度,以满足取货和交货。3. 目标是减少累积时间的全局跨度 很明显,最优解决方案将使用两辆车,但事实并非如此!我尝试了很多设置以使其摆脱局部最优,但它仍然没有,甚至没有尝试使用手头的时间来达到更好的解决方案,只是在几秒钟内完成。

那么,即使它认为手头的解决方案就足够了,我怎么能强迫它继续搜索呢?

顺便说一句:我通过将最佳路线作为初始路线来检查我的逻辑是否正确,当我这样做时,它会使用它。它还表明最佳路线的目标值小于原始路线,所以我猜代码中没有错误。

0 投票
1 回答
802 浏览

python - 使用 ortools 约束求解器进行护士排班

我浏览了谷歌的教程,我似乎理解了大部分代码。我的问题是他们只根据硬约束选择解决方案。大多数论文也使用软约束,每个约束都有它的系数。所有约束的总和乘以它们的系数会产生花名册的成本,因此目标是最小化这个值。我的问题是,如何将其添加到代码中?

我不确定决策生成器做了什么(或它的参数),也不知道solver.Assignment(),也不solver.AllSolutionCollector(solution)

我唯一发现的是这个,但我不知道如何使用它。(也许打电话solver.Minimize(cost, ?)而不是分配?)

0 投票
1 回答
81 浏览

python - 有时不严格遵守使用 GLOP_LINEAR_PROGRAMMING 的约束

我正在使用 Google 的 ortools for Python 来解决问题。

当通过它运行各种数据时,有时没有严格遵守我提供的约束。

我创建了一个测试来运行 1000 次优化,并使用目标设置为最大化的随机值更改数据输入。一次又一次的测试会失败,因为一个结果价格超过1000。不过去是可能的,那它为什么选择呢?

如何强制严格使用约束?

0 投票
1 回答
1141 浏览

c# - Google OR-Tools TSP 返回几个解决方案

我最近一直在努力寻找不仅仅是使用 Google 的 OR-Tools 的最佳路线。我在 repo 中找到了一个示例,但这仅解决了最佳路线,知道如何为一组点生成多个解决方案吗?我目前正在使用该工具的 DotNet 版本,任何其他语言的解决方案都会有所帮助!

0 投票
1 回答
237 浏览

c++ - 如何在 Visual Studio 2017 [C++] 中使用 GLOP 线性求解器

我一直试图让它工作一段时间,但无法为我的一生弄清楚。这是我现在的情况:

我有一个 Visual Studio 项目(和解决方案)启动并运行,并希望尽可能少地对其进行修改。我现在觉得有必要在我的项目中使用 GLOP 线性求解器,并且想知道我将如何去做。

我编写的使用 GLOP 的代码可以完美地作为一个独立的 .cpp 文件运行:[此 .cpp 文件与 GLOP 的资源位于同一目录中,并且在创建和使用上述的 make 命令后完美地编译和运行这里https://developers.google.com/optimization/introduction/cpp ]

我现在想将此代码包含在我的项目中,并将其作为我项目的一部分而不是作为独立代码运行。由于我目前正在使用 MSVS 2017,我想知道我将如何去做,因为我使用的当前技巧(复制和粘贴项目文件夹中的 GLOP 的所有资源等)似乎没有工作并且我的错误列表不断增长,并且使用 make 命令显然不是一个选项,因为代码需要嵌入到其他代码中。

请像我五岁一样向我解释 - 哪些文件应该放在哪里,我应该执行哪些链接以及其他什么。

0 投票
2 回答
1211 浏览

python - 使用谷歌运筹学工具进行约束优化

我有一组许多(10000 多个)项目,我必须从中选择 20 个项目。我只能选择每个项目一次。我的项目有利润和成本,以及几个布尔属性(例如颜色)。

我已经阅读并完成了https://developers.google.com/optimization/mip/integer_opt_cphttps://developers.google.com/optimization/mip/integer_opt上的教程,但我的限制与那些略有不同呈现在那里。

每个项目都表示为一个元组:

举个例子

并且项目的总集是列表的列表:

我的利润和成本也是列表:

对于选择的每个项目,它需要有一个最小值,并且至少 5 个项目必须将属性 (is_blue) 标志设置为 1。

我想选择价值最高的 20 个最便宜的项目,其中 5 个的属性标志设置为 1。

我无法使用谷歌或工具来制定这个。

我可以通过以下方式获得我选择的一组项目:

这很好用 - 它选择了 20 个项目,这些项目在成本约束下最大化利润,但我坚持如何将其扩展到选择属性 (is_blue) 设置为 true 或 false 的项目。

在制定约束和目标方面的任何帮助都会非常有帮助。谢谢!