Optaplanner逐步学习(0) : 基本概念 - Optaplanner,规划问题, 约束,方案

本文介绍了Optaplanner作为一个约束求解器,用于解决业务资源规划问题,如车辆调度、员工排班等。Optaplanner结合Drools规则引擎,通过约束和模型对象进行规划,寻找相对最优解。规划问题属于NP问题,解决方案存在于庞大的搜索空间中,Optaplanner通过优化算法提高找到相对最优解的概率。文章还阐述了规划问题、规划实体、约束、可行解和相对最优解等核心概念。
摘要由CSDN通过智能技术生成

  之前的文章中,分别从APS,排产到规划引擎叙述了一些理论基础;并介绍了一些Optaplanner大概的情况;并一步步将Optaplanner的示例运行起来,将示例源码导进Eclipse分析了一下它的Hello world入门示例,从本篇开始,我们将分步学习它的一些概念及用法。

 

什么是Optaplanner

  其实这个名称是作者将这个引擎贡献给了Jboss社区后,才使用的名,之前叫做Drools planner。没错,它就是结合Drools(一个开源规则引擎)一起应用的(也可以单独使用),Drools在这里的作用主要是用来作编写计分脚本,事实上完全可以抛开Drools,直接使用Optaplanner自己的API,通过Java代码自己来计分,但这个难度就大得多。详细情况计到相应的章节再细说。

  名称的前缀应该是Optimize的词根,或取近音吧,因为Optaplanner其实就是一个对待规划的方案组合进行优化的引擎。好了,关于它的名称就不花费太多的口水去深究,我们看看官方是怎么定义Optaplanner的。"OptaPlanner is a constraint solver. It optimizes business resource planning use cases, such as Vehicle Routing, Employee Rostering, Cloud Optimization, Task Assignment, Job Scheduling, Bin Packing and many more. " - Optaplanner 是一个约束解决器,它可以优化业务资源,规划各种案例,例如车间调度,职员排班,云优化,任务分配,工作排程,装箱等相关的问题,例如下图。

  

  而我对Optaplanner的理解,它是一个Planning Engine - 规划引擎,针对各行各业的业务需求,开发人员需要将一些业务规则翻译成约束,并对业务场景中的实体进行抽象建模,规划引擎根据上述约束和模型对象进行规划,找出一个相对最优化的方案出来返回给用户。其实如果需要规划的业务对象不多(种类和数量都不多),规则不太复杂,人类是可以通过自己的经验、推算和规则运行,得到一个可行方案的,甚至当问题规模足够小的时候,是可以找到一个最优方案的。关于规划问题,大家可以参考这个系统文章中的一篇入门介绍《Optaplanner - 入门介绍》,里面讲到,规划问题其实就是数学上的NP问题或NPC问题,目前数据世界对于这种问题,是没有可用算法直接实现的,当问题足够大的时候,只能够通过一些寻优算法(例如爬山算法,模拟退火及遗传算法等)提高找到问题相对优解的机率。而Optapla

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值