01. What is OptaPlanner?
主要翻译一下首页的内容 https://www.optaplanner.org/
OptaPlanner是一个AI约束求解器。它优化计划和调度问题,如车辆调度问题(智慧城市的智慧红路灯)、员工排班、维护调度、任务分配、学校时间表、云优化、会议调度、作业车间调度、装箱等。每个组织都面临这样的挑战:分配有限的有限资源(员工、资产、时间和/或金钱)来提供产品或服务。OptaPlanner提供更高效的计划,从而降低成本并提高服务质量。
OptaPlanner是一个轻量级、可嵌入的计划引擎。它使日常的Java程序员能够有效地解决优化问题。它还与其他JVM语言(如Kotlin和Scala)兼容。约束应用于纯域对象,并且可以调用现有代码。不需要将约束作为数学方程输入。本质上说,OptaPlanner将复杂的人工智能优化算法(如禁忌搜索、模拟退火、延迟接受和其他元启发式算法)与非常有效的分数计算和其他最先进的约束解决技术相结合。
OptaPlanner是开源软件,在Apache许可下发布。它是用100%纯Java编写的™,可以在任何JVM上运行,也可以在Maven中央存储库中使用。它与Quarkus和Spring Boot一起工作。
02. 使用场景 (Use Case)
如上: (可以理解为动态规划的各个应用场景)
- 设备调度 (更高地利用率)
- 工作流程安排计划 (更快地完成工作流程)
- 交通工具路径安排 (更小的驾驶时间)
- 员工排班 (更合理地安排)
- 装箱 (更小的碎片化/提升总体利用率)
03. 怎么使用
04. 集成进JVM环境一览
05. 适用性
- 支持JavaSE
- 支持JavaEE
- 支持JVM系列, Java、Scala、Groovy、Vert.X等
06. 可扩展性 (scalability 可扩展性;可伸缩性;可量测性
图片解释:
- metaheuristic: 元启发式方法。一些随机搜索算法诸如进化算法、蚁群算法、粒子群算法这类具有启发式框架的智能算法称为元启发式算法.
- brute Force algorithm: 暴力算法
- branch and bound algorithm:分支界定算法
- metaheuristics:元启发式搜索
- construction heuristics:构造启发式算法
- limited selection CH:有界CH (CH据说是双向的双向dijkstra)
图片总结:
数据规模横向扩展的影响:
穷尽搜索提供了最佳解决方案,但需要花费很长时间;
构造启发式(包括贪婪算法)在时间上交付的质量很差;
元启发式在时间上提供了良好的质量。
注意:元启发式包括一个CH来初始化
这是一个粗略的概括,基于多年的经验和大量实际用例的基准测试;
每个用例和每个解算器配置的结果可能不同;
[1]具有较大值范围的变量(二进制变量的比例更大)