轻量化规划调度引擎——OptaPlanner简介
苦逼博士僧一枚,从去年起开始使用OptaPlanner 7.0.0做一些工程项目,最近将引擎更新到最新7.10.0版本,发现国内使用OptaPlanner的人越来越多,所以想把一些简单粗略的心得体会写下了分享交流,希望对新入门的童鞋有一点帮助,也希望大神前来讨论,帮助我解决难题 ๑乛◡乛๑
经过一段时间的内核引擎比选、内核引擎能力测试、工程调度问题建模和约束封装,我们实验室选择OptaPlanner作为工程使用与研究的主要工具。我们通过实例仿真验证,发现OptaPlanner具备灵活的场景与约束配置能力、良好的算法优化能力和动态调度能力,以及一定的可集成性与推广价值。
OptaPlanner是什么?
引用OptaPlanner官网上的介绍:
OptaPlanner是一个约束求解器,它能够对商业资源规划问题进行优化,例如车辆路径规划问题(VRP),雇员排班问题(Employee Rostering),云计算资源调度问题(Cloud Optimization),任务分配问题(Task Assignment),车间调度问题(JSP)和背包问题(Bin Packing)等。许多公司都面临着这样一个调度难题:分配一组有限的资源(员工、资产、时间和金钱)来提供产品或服务。OptaPlanner做的就是提供更有效的规划方案,以提高服务质量并降低成本。
OptaPlanner是一个轻量化、可嵌入的规划引擎,它让普通的Java工程师能够有效地解决优化问题,它还与其他JVM语言(如Kotlin和Scala)兼容。在问题建模方面,OptaPlanner的约束作用在普通的域对象上,且无需键入复杂的数学公式,可以重复使用现有代码。在问题求解方面,OptaPlanner结合了许多复杂的启发式和元启发式算法(如禁忌搜索、模拟退火、逾期接受和变邻域搜索),能够提供非常有效的优化服务。