初学OptaPlanner-01- 什么是OptaPlanner?

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)

image-20200910214310877

如上: (可以理解为动态规划的各个应用场景)

  • 设备调度 (更高地利用率)
  • 工作流程安排计划 (更快地完成工作流程)
  • 交通工具路径安排 (更小的驾驶时间)
  • 员工排班 (更合理地安排)
  • 装箱 (更小的碎片化/提升总体利用率)

03. 怎么使用

image-20200910214310877

04. 集成进JVM环境一览

image-20200910214310877

05. 适用性

  • 支持JavaSE
  • 支持JavaEE
  • 支持JVM系列, Java、Scala、Groovy、Vert.X等

06. 可扩展性 (scalability 可扩展性;可伸缩性;可量测性

image-20200910214310877

图片解释:

  • metaheuristic: 元启发式方法。一些随机搜索算法诸如进化算法、蚁群算法、粒子群算法这类具有启发式框架的智能算法称为元启发式算法.
  • brute Force algorithm: 暴力算法
  • branch and bound algorithm:分支界定算法
  • metaheuristics:元启发式搜索
  • construction heuristics:构造启发式算法
  • limited selection CH:有界CH (CH据说是双向的双向dijkstra)

图片总结:

数据规模横向扩展的影响:

穷尽搜索提供了最佳解决方案,但需要花费很长时间;

构造启发式(包括贪婪算法)在时间上交付的质量很差;

元启发式在时间上提供了良好的质量。

注意:元启发式包括一个CH来初始化

这是一个粗略的概括,基于多年的经验和大量实际用例的基准测试;

每个用例和每个解算器配置的结果可能不同;

[1]具有较大值范围的变量(二进制变量的比例更大)

你不逼自己一把,你永远都不知道自己有多优秀!只有经历了一些事,你才会懂得好好珍惜眼前的时光!
原文地址:https://www.cnblogs.com/zhazhaacmer/p/13892024.html