关于OptaPlanner的使用(一)——简介

最近项目中有个要给司机排班的需求,自己写了一个可用的算法。看到网上介绍说有这个可以实现统筹规划的规则引擎OptaPlanner,学习一下,看能否满足需求进而可以替换掉自己写的算法。

可以用的地方就是需要一些排班,调度等方面的时候,当情况比较复杂,使用人力无法轻易得到一个相对最优的计划时,可以使用计算机的高处理速度,在当前的资源条件下,得到一个细致的执行命令,实现相对最优的资源配置。

先来说一下业务规则的种类:一种是硬规则,另一种是软规则。硬规则就是一些必定不能违反的规则,例如一个产品所使用的原料必然是指定范围内的,需要使用指定的机台进行生产,否则就不可能生产出来,或出来的必然是报废品。而有一些是软规则,就是一些规则老板们希望都不要违反,违反了会让他掉钱的,但客观事实出现了一些情况,没办法完全保证所有规则都 遵循,部分规则也只能放弃部分规则了,也就是两害相遇取其轻。

OptaPlanner所解决的问题几乎可以都被视为NPC问题,什么是NPC问题呢?
概括来说,就是一些没有办法使用确定性算法来得到结果的问题,而对于这类问题,又分为NP问题和NPC问题,但都只能通过遍历的办法才能找到。
NP问题:一种无法通过确定性算法直接获得解,但对获得的解是可验证的,比如只要求做出一个可行的生产计划,成本、效率什么的都不管,那么这就是一个NP问题。要做出这个计划,是没有直接的、确定的方法或算法来做的;更多的是靠计划人的经验、对实际情况的有限掌握、对未来情况的预判和感觉等。但是做出来的计划是可以验证的。也就是说这个生产计划是确定可以执行的,而不会出现缺少原材料等违反硬规则的情况, 所以做一个可行计划,可以被视作是NP问题。

NPC问题:则是那种不旦无法通过确定性算法获得解,对所得的解,也没有一个确定的办法去验证的问题。比如要求做一个所有情况下除了可行,还要成本最低、效率最高的生产计划。那么这个成本低效率高的情况是无法验证的,除非把所有的可能的生产计划都列出来,但有的时候一个计划的条件和情况会比较多比较复杂,哪怕是靠计算机,如果一个个去遍历的话,也要花很多时间。而OptaPlanner的进行的遍历是有条件有方法的,通过很多算法的组合(Tabu search算法,遗传算法,退火算法和爬山算法,禁忌搜索等),得到比一个个遍历效率更高的计划出来。

把官网PO出来:https://www.optaplanner.org/

在这里插入图片描述

可以下载Optaplanner的例子和文档看一下。例子在examples文件夹的runExamples.bat。
执行后会出现下列界面,是各种情况下的排序案例。可以先点着看看。在这里插入图片描述

这一章先到这,下一章执行一个案例看看效果。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OptaPlanner是一个开源的约束优化引擎,可以在求解约束优化问题时提供支持。它使用Java编写,并且具有强大的能力来解决各种问题,如旅行商问题、调度问题、排产问题等。OptaPlanner的目标是通过确定可能的解决方案,找到最佳解决方案。 OptaPlanner采用了基于元启发式算法的解决方法,如模拟退火、遗传算法、局部搜索等。它还提供了丰富的插件和扩展点,使开发人员能够自定义算法和评分规则,并将其集成到自己的应用程序中。 OptaPlanner使用约束规划模型来描述问题,并通过改善解决方案来满足约束条件。它的求解过程可以分为初始化、迭代和终止三个阶段。在初始化阶段,OptaPlanner生成一组初始解决方案,通常使用随机算法。在迭代阶段,它不断优化当前解决方案,直到达到最优解或超过预定的迭代次数。在终止阶段,OptaPlanner返回最佳解决方案。 OptaPlanner可以应用于各种领域,如物流、交通、资源调度等。它具有很好的扩展性和灵活性,可以根据具体问题的特点进行定制和调整。它还提供了丰富的文档和示例程序,使开发人员能够快速上手并解决实际问题。 总之,OptaPlanner是一个强大的约束优化引擎,可以帮助解决各种约束优化问题。它的功能丰富而灵活,易于使用和定制。无论是学术研究还是实际应用,OptaPlanner都是一个值得考虑的优秀选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值