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

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

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


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


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


OptaPlanner所解决的问题几乎可以都被视为NPC问题,什么是NPC问题呢?

概括来说,就是一些没有办法使用确定性算法来得到结果的问题,而对于这类问题,又分为NP问题和NPC问题,但都只能通过遍历的办法才能找到。

NP问题:一种无法通过确定性算法直接获得解,但对获得的解是可验证的,比如只要求做出一个可行的生产计划,成本、效率什么的都不管,那么这就是一个NP问题。要做出这个计划,是没有直接的、确定的方法或算法来做的;更多的是靠计划人的经验、对实际情况的有限掌握、对未来情况的预判和感觉等。但是做出来的计划是可以验证的。也就是说这个生产计划是确定可以执行的,而不会出现缺少原材料等违反硬规则的情况, 所以做一个可行计划,可以被视作是NP问题。


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

可以下载Optaplanner的例子和文档看一下。例子在examples文件夹的runExamples.bat。

执行后会出现下列界面,是各种情况下的排序案例。可以先点着看看。这一章先到这,下一章执行一个案例看看效果。

目录
相关文章
|
7月前
|
自然语言处理 Java 编译器
【软件设计师—基础精讲笔记10】第十章 程序设计语言基础
【软件设计师—基础精讲笔记10】第十章 程序设计语言基础
114 1
|
存储 编解码 API
游戏编程之四 diectxdarw基础篇
游戏编程之四 diectxdarw基础篇
70 0
|
缓存 算法 大数据
架构、框架侃侃而谈算法望而却步?吃透这份笔记轻松掌握算法技能
腾讯、百度阿里等国内的一线名企,在招聘工程师的过程中,对算法和数据结构都会重点考察。但算法易学难精,让很多程序员都望而却步,面试时总败在算法这一关,拿不到好 Offer。 面试时很多候选人,聊起架构、框架侃侃而谈,但一写代码,就暴露真实水平。说白了,还是基本功不够扎实。 其实,不管你是什么语言,基本功一定要扎实,最核心的一定是数据结构与算法。也因此,所有大厂面试,都必考算法题。
|
机器学习/深度学习 人工智能 算法
机器学习原理篇:基础数学理论 Ⅱ
承接上篇博客,继续总结有关概率论、数理统计以及最优化理论,另外还有思考,欢迎大家前来回答补充!
149 0
机器学习原理篇:基础数学理论 Ⅱ
|
设计模式 缓存 算法
阿里逆天级调优方案,内部这套Java性能调优实战宝典,堪称教科书
随着互联网的发展,高可靠、高并发以及降本增效,已成为各大公司面临的现实挑战,性能优化需求愈发迫切,大到分布式系统,小到代码块的算法优化,都已经成为你日常工作中必须要面对的事情。对于开发者而言,性能优化也从加分项变为一个热门技能,缺乏相关知识将很难在面试或工作中脱颖而出
阿里逆天级调优方案,内部这套Java性能调优实战宝典,堪称教科书
|
机器学习/深度学习 数据采集 存储
不谈高级原理,只用简单的语言来聊聊机器学习
不谈高级原理,只用简单的语言来聊聊机器学习
354 0
不谈高级原理,只用简单的语言来聊聊机器学习
|
前端开发 Java 数据库
强烈推荐几种经典的系统开发模型
今天给大家分享一些开发中常用的开发模型。这些模型从复杂到简单进行了一步一步的简化,让开发代码之间的耦合度更加低、代码利用率更高。
强烈推荐几种经典的系统开发模型
|
存储 算法 数据可视化
遗传算法实践详解(deap框架初体验)
遗传算法实践,利用遗传算法框架deap解决OneMax问题,OneMax(或One-Max)问题是一个简单的优化任务,通常用作遗传算法框架的Hello World。
1701 1
遗传算法实践详解(deap框架初体验)
|
算法 关系型数据库 MySQL
形式化验证工具TLA+:程序员视角的入门之道
女娲是飞天分布式系统中提供分布式协同的基础服务,支撑着阿里云的计算、网络、存储等几乎所有云产品。在女娲分布式协同服务中,一致性引擎是核心基础模块,支持了Paxos,Raft,EPaxos等多种一致性协议,根据业务需求支撑不同业务状态机。如何保证一致性库的正确性是一个很大挑战,我们引入了TLA+、Jepsen等工具保证一致性库的正确性。本文即从程序员视角介绍形式化验证工具TLA+。
形式化验证工具TLA+:程序员视角的入门之道
|
Kubernetes Cloud Native 架构师
如何设计架构图?一文带你了解架构设计的本质 | 开发者社区精选文章合集(二十九)
架构图是什么?为什么要画架构图?如何画?有哪些方法?,架构设计的本质是什么?教你如何设计一张合格的架构图!
如何设计架构图?一文带你了解架构设计的本质 | 开发者社区精选文章合集(二十九)
下一篇
DataWorks