OR-Tools是用于组合优化的开源软件,寻求从大量可能的解决方案中找到问题的最佳解决方案。下面是一些使用OR-Tools解决的问题例子:
- 车辆路径规划:在给定的约束条件下(例如,“卡车不能装载超过20000磅”或“所有的递送必须在两个小时内
完成”),为提取和递送包裹的车队找到最佳路线。 - 调度问题:在一组固定的机器或其他资源上,为一组复杂的任务找到最佳调度,其中一些任务需要在其他任务之前执行。
- 装箱问题:将尽可能多的不同尺寸的物品装入数量固定的箱子中,使得每个箱子容量最大。
在大多数情况下,像上述问题有大量可能的解决方案,太多了以至于计算机无法全部搜索它们。为了解决这个问题,OR-Tools使用最先进的算法来缩小搜索集合,以便找到一个最优(或接近最优)的解决方案。
OR-Tools包括以下问题的求解器:
约束规划
将一个问题建模为约束(比如,一个房间不能同时用于两个事件,或与作物的距离必须小于软管的长度,或一次同时录制的电视节目不能超过5个),并找到可行的解决方案的一套技术
线性与混合整数规划
Glop线性优化器在给定一组线性不等式作为约束条件(例如,分配工作,或在最小化成本的同时找到一组资源的最佳分配)的情况下,寻找线性目标函数的最优值。Glop和混合整数规划软件SCIP也可以通过Google App Script 优化服务获得。
车辆路径规划
一个专门的库,在给定约束下,确定最佳车辆路线
图算法
用于在图中寻找最短路径,最小成本流,最大流和线性和分配问题。
下一节将帮助你快速使用OR-Tools