OR-Tools 是一种用于组合优化的开源软件,该软件力求从一组可能的大量解决方案中找出某个问题的最佳解决方案。以下是 OR 工具可以解决的一些问题示例:
- 车辆路线:根据给定的限制条件(例如,“这辆卡车承载的重量不能超过 20,000 磅”或“所有送货都必须在两小时内完成”)。
- 调度:为一组复杂的任务找到最佳调度,其中一些任务需要先完成,然后才能在一组固定的机器或其他资源上执行。
- 箱装:将各种不同尺寸的对象装入具有最大容量的固定数量的箱中。
在大多数情况下,此类问题具有大量可能的解决方案,计算机过多无法搜索所有解决方案。为了解决这个问题,OR-Tools 使用了先进的算法来缩小搜索集的范围,以寻找最佳(或最接近)的解决方案。
OR-Tools 包含以下解决方案:
- 约束编程
- 用于寻找可行解的方法,用于解决以约束条件表示的问题(例如,无法同时将房间用于两个事件,或者与剪裁内容的距离必须小于软管的长度,或者一次最多只能录制五个电视节目)。
- 线性和混合整数编程
- Glop 线性优化器会在指定一组线性不等式(例如,为人员分配作业,或在尽量降低费用的情况下找到一组资源的最佳分配)后,找出线性目标函数的最佳值。也可以通过 Google Apps 脚本优化服务使用 Glop 和混合整数编程软件 SCIP。
- 车辆路线
- 用于在满足指定限制条件的情况下确定最佳车辆路线的专用库。
- 图表算法
- 此代码用于查找图表、最短费用流、最大流量和线性总和分配中的最短路径。
下一部分将帮助您快速开始使用 OR-Tools。