问题标签 [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.
constraint-programming - 获取动态子矩阵并应用约束
我对约束编程真的很陌生,我正在尝试解决一个问题,即从由数字组成的二维数组中,我需要尽可能少的子数组(2D),覆盖尽可能多的原始二维数组尽可能遵守以下规则:
- 每个子数组必须是原始数组的一个矩形部分
- 每个子数组中的数字之和不得超过特定数字
- 每个子数组中必须至少有 2 个数字
例如对于以下矩阵:
对于 10 的最大总和,解决方案将是:
现在我正在使用diffn()等效于 or-tools ( MakeNonOverlappingBoxesConstraint() ) 来创建将覆盖原始数组的矩形。
我的问题是如何获取由 diffn() 创建的矩形并根据每个矩形的位置和大小拆分原始矩阵,这样我就可以应用Sum约束。
如果有另一种方法可以在不使用 diffn() 的情况下实现相同的约束,那么我会尝试一下,但我想不出任何其他方式。
谢谢!
java - Java中的高性能原始数组构建器
我目前使用 google-or 工具来解决最大流量问题,所以这让我在 java 中创建了一些 int[] 数组以传递给 ortools。现在 ortools 非常快,在这里不是问题,但我对这里的性能替代品持开放态度。
问题主要在于构建需要大部分时间的数组以及当返回结果时的 GC,我将其归结为可能的 JNI 开销,对此我无能为力。原始数组接近 5 - 700 万个点标记,它们大到足以要求它们是整数,短不是一种选择。我是否有任何选择或技巧,或者是否有人对如何最有效地构建这些有任何见解?内存在这里不是真正的问题我有足够的,并且在大多数情况下,我愿意接受任何解决方案以获得绝对前沿性能,即使它需要我的数据的不同表示,但这仍然必须能够插入 Ortools (除非您有替换它的想法)但我欢迎任何有关如何从中获得最快阵列构建的建议。请注意,我不提前知道数组的长度,我不进行更新、删除,只追加。我很乐意提供更多细节。感谢您的任何建议。
c# - 如何在 C# 应用程序中嵌入或工具?
我正在尝试按照https://developers.google.com/optimization/introduction/installing.html#windows_binary上的说明进行操作,以便可以在 C# 应用程序中使用 or-tools。
我被困在make all
台阶上了。我在开发人员命令提示符中,但是这个命令说:
我尝试下载 GNU make,但也失败了。make install
说“没有目标”,一个光秃秃的make
说:
我还尝试将文件夹中的 DLLbin
直接复制到我的项目中。我可以通过这样做来针对它们进行编译,但是当我尝试运行它时出现错误:
我错过了什么?
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 的完整输出:
python - Google 的 Ortools - 设置目标函数
我正在尝试使用 ortools 为作业车间问题设置自定义目标函数,但我对如何实现它感到困惑。我正在尝试将所有工作的迟到最小化,但是我不确定如何创建一个迟到系数来最小化。
我的理解是,我需要创建一个具有范围的 intvar 才能进入目标监视器。这个对吗?如果是这样,任何人都可以指出如何创建它的方向吗?我目前的目标是获取一系列到期日期,并将其从每个作业的最后一次操作的结束时间中减去,我只是不确定如何将其输入求解器。
以下来自谷歌教程:
python - 如何在终端的 Ubuntu 上安装 google or-tools for python?
我无法从https://developers.google.com/optimization/introduction/installing下载 Python—tar.gz(所有平台)。 任何人都可以帮我在终端的 Ubuntu 上安装 google or-tools for python?
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
我得到这个错误
python - ortools 上 LocalSearchMetaheuristic 中的 AUTOMATIC 设置有什么作用?
我一直在使用 OR-Tools,到目前为止我一直在使用默认参数。它在大多数情况下都能在不同的场景下正常工作。然而,有时计算永远不会停止。我已经设置了time_limit_ms
参数,我看到默认情况下LocalSearchMetaheuristic
设置为AUTOMATIC
. 这意味着什么?被LocalSearchMetaheuristic
选中的怎么样?总是GREEDY_DESCENT
因为我不设置time_limit_ms
吗?
我已经尝试用谷歌搜索它,但我没有找到任何声明此函数/参数的文档或代码。
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 教程。
也许我错过了一些东西。你对这个问题有什么见解吗?
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 中执行此操作。
我感谢您的帮助 :)