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

constraint-programming - 获取动态子矩阵并应用约束

我对约束编程真的很陌生,我正在尝试解决一个问题,即从由数字组成的二维数组中,我需要尽可能少的子数组(2D),覆盖尽可能多的原始二维数组尽可能遵守以下规则:

  • 每个子数组必须是原始数组的一个矩形部分
  • 每个子数组中的数字之和不得超过特定数字
  • 每个子数组中必须至少有 2 个数字

例如对于以下矩阵:

对于 10 的最大总和,解决方案将是:

现在我正在使用diffn()等效于 or-tools ( MakeNonOverlappingBoxesConstraint() ) 来创建将覆盖原始数组的矩形。

我的问题是如何获取由 diffn() 创建的矩形并根据每个矩形的位置和大小拆分原始矩阵,这样我就可以应用Sum约束。

如果有另一种方法可以在不使用 diffn() 的情况下实现相同的约束,那么我会尝试一下,但我想不出任何其他方式。

谢谢!

0 投票
1 回答
4787 浏览

java - Java中的高性能原始数组构建器

我目前使用 google-or 工具来解决最大流量问题,所以这让我在 java 中创建了一些 int[] 数组以传递给 ortools。现在 ortools 非常快,在这里不是问题,但我对这里的性能替代品持开放态度。

问题主要在于构建需要大部分时间的数组以及当返回结果时的 GC,我将其归结为可能的 JNI 开销,对此我无能为力。原始数组接近 5 - 700 万个点标记,它们大到足以要求它们是整数,短不是一种选择。我是否有任何选择或技巧,或者是否有人对如何最有效地构建这些有任何见解?内存在这里不是真正的问题我有足够的,并且在大多数情况下,我愿意接受任何解决方案以获得绝对前沿性能,即使它需要我的数据的不同表示,但这仍然必须能够插入 Ortools (除非您有替换它的想法)但我欢迎任何有关如何从中获得最快阵列构建的建议。请注意,我不提前知道数组的长度,我不进行更新、删除,只追加。我很乐意提供更多细节。感谢您的任何建议。

0 投票
2 回答
1845 浏览

c# - 如何在 C# 应用程序中嵌入或工具?

我正在尝试按照https://developers.google.com/optimization/introduction/installing.html#windows_binary上的说明进行操作,以便可以在 C# 应用程序中使用 or-tools。

我被困在make all台阶上了。我在开发人员命令提示符中,但是这个命令说:

我尝试下载 GNU make,但也失败了。make install说“没有目标”,一个光秃秃的make说:

我还尝试将文件夹中的 DLLbin直接复制到我的项目中。我可以通过这样做来针对它们进行编译,但是当我尝试运行它时出现错误:

我错过了什么?

0 投票
1 回答
375 浏览

python - 安装 OR-tools 时没有版本属性

我正在尝试在 Linux for Python 上安装 OR-tools,这是 Google 的一个优化库。 https://developers.google.com/optimization/introduction/installing.html#unix_binary

我正在使用新下载的虚拟机(操作系统盒中的 Ubuntu 16.10 Yakkety Yak),所以我怀疑我的系统是问题所在(除非我还没有安装我需要的东西)。

我也怀疑 OR-tools 是问题所在。除了:

sudo apt-get install python-setuptools
sudo apt-get install g++
下载 Python—tar.gz,在下载中解压
cd 到下载后运行“make install”

我收到错误消息“您正在使用没有版本属性的 ortools 模块”。有谁知道这可能意味着什么?

我已经尝试了命令提示符建议的两个技巧:

运行 /usr/bin/python setup.py install --user 工作,但错误“警告:install_lib:'build/lib.linux-x86_64-2.7'不存在 - 没有要安装的 Python 模块”弹出。

删除 init.pyc 文件告诉我删除 init.py 文件,然后它说 or-tools 没有找到。

非常感谢任何帮助,仍在学习 Linux,所以我确定我在做一些愚蠢的事情......

make install 的完整输出:

0 投票
1 回答
942 浏览

python - Google 的 Ortools - 设置目标函数

我正在尝试使用 ortools 为作业车间问题设置自定义目标函数,但我对如何实现它感到困惑。我正在尝试将所有工作的迟到最小化,但是我不确定如何创建一个迟到系数来最小化。

我的理解是,我需要创建一个具有范围的 intvar 才能进入目标监视器。这个对吗?如果是这样,任何人都可以指出如何创建它的方向吗?我目前的目标是获取一系列到期日期,并将其从每个作业的最后一次操作的结束时间中减去,我只是不确定如何将其输入求解器。

以下来自谷歌教程:

0 投票
0 回答
295 浏览

python - 如何在终端的 Ubuntu 上安装 google or-tools for python?

我无法从https://developers.google.com/optimization/introduction/installing下载 Python—tar.gz(所有平台)。 任何人都可以帮我在终端的 Ubuntu 上安装 google or-tools for python?

0 投票
1 回答
1950 浏览

python - ModuleNotFoundError:没有名为“_pywraplp”的模块

我只是从https://pypi.python.org/pypi/ortools安装 ortools 6.5.4527

使用 exe 安装程序

ortools-6.5.4527.win-amd64-py3.6.exe (md5)

测试.py

我得到这个错误

0 投票
1 回答
148 浏览

python - ortools 上 LocalSearchMetaheuristic 中的 AUTOMATIC 设置有什么作用?

我一直在使用 OR-Tools,到目前为止我一直在使用默认参数。它在大多数情况下都能在不同的场景下正常工作。然而,有时计算永远不会停止。我已经设置了time_limit_ms参数,我看到默认情况下LocalSearchMetaheuristic设置为AUTOMATIC. 这意味着什么?被LocalSearchMetaheuristic选中的怎么样?总是GREEDY_DESCENT因为我不设置time_limit_ms吗?

我已经尝试用谷歌搜索它,但我没有找到任何声明此函数/参数的文档或代码。

0 投票
0 回答
289 浏览

python - 使用 Python 在 or-tools 上实现 break_intervals 的 XOR 语句

我最近一直在使用 or-tools,现在我正在使用 python 为 CVRP 设置中断间隔。

我想要实现的是为车辆创建 N 次休息并放置在 XOR 约束之上,因此只有一个休息被执行。

我创建了中断和每个中断间隔的执行值列表,如下所示:

然后我使用求解器的语法糖使用SumEquality方法添加约束,并将中断间隔添加到车辆:

routing.GetDimensionOrDie("Time").SetBreakIntervalsOfVehicle(break_intervals, 0)

当中断中只有一个中断时,该约束完美地工作这与将 'optional_break' 的值更改为False相同)。问题是当我在 break 中添加新的 break 时没有解决方案。作业为空。

该解决方案是可行的,第一次中断我得到一个分配,添加一个可选 的中断不应该返回一个空分配。

除了中断间隔约束和最小化时间变量语句之外,我几乎都遵循了这个cpp 教程。

也许我错过了一些东西。你对这个问题有什么见解吗?

0 投票
1 回答
978 浏览

python - 我自己的限制 Google or-tools

我是 CP 问题和 Python 中的 OR-Tools 的新手,我想做以下事情:

但我在评估时收到错误CustomFunction

IndexError:只有整数、切片 ( :)、省略号 ( ...)、numpy.newaxis ( None) 和整数或布尔数组是有效的索引

这是正确的,因为x它是 IntVar。

另一方面,我在https://developers.google.com/optimization/reference/constraint_solver/constraint_solver/Solver/中看到 我可以添加自定义约束,但我不知道如何在 Python 中执行此操作。

我感谢您的帮助 :)