首页
学习
活动
专区
工具
TVP
发布

APS-高级计划与排程

专栏作者
27
文章
39181
阅读量
27
订阅数
OptaPlanner实用技术 - 批量规划和实时规划(1)
本文原来只计划直接翻译OptaPlanner官网一篇关于SolverManager下实时规划的博文《Real-time planning meets SolverManager》,但在翻译过程中,发现该文仅从具体的技术细节上描述使用SolverManager及其相关接口实现在批量规划过程中的实时响应。因此,只能对具体使用OptaPlanner的开发人员有一定帮助,对于相关的业务分析和决策人员关注的适用场景,该文并未作深入描述;因而,未能从业务场景到工程实践的角度和过程,来描述批量规划与实时规划的实用意义。
Kent Zhang
2022-05-03
1.3K0
机械师实时调度示例(I) - OptaPlanner实时规划
OptaPlanner创办人Geoffrey De Smet及其团队,在Red Hat 技术峰会上主题会场上,演示了一个通过OptaPlanner实现实时规划与调度的示例。Geoffrey及其团队专门为此分三篇博文描述了该程序。该程序及其相关博文是OptaPlanner在VRP领域极之经典之作。本系列也分三篇对博文进行翻译,以飨各位ORer, APSer和Planner.
Kent Zhang
2022-03-10
1K0
OptaPlanner的新约束表达方式 Constraint Streams
有好些时间没有写过关于OptaPlanner的东西了,其实近半年来,OptaPlanner还是推出了不少有用、好用的新特性。包括本文讲到的以Stream接口实现评分编程。关于OptraPlanner的约束详细用法,可以参考官方资料:
Kent Zhang
2022-02-19
1.1K0
使用OptaPlanner解决多工序、多机台(资源)排程的新思路
在解决多工序联动、多机台共享的场景下排程过程中,常用同时把所有存在前后接续关系的任务,和存在共用特性的机台,一起建模成为规划变量(Planning Entity)与问题事实(Problem Fact),并一次性提供给引擎进行求解运算。但这种方法,因为双链(下文详述)特性的存在,规划问题过于复杂,导致问题规模过大,从而令引擎的搜索究竟指数级增大,进行各种性能改善后,仍难以获得满意解;甚至部分情况下规划运算所得结果还不如人工排程方案。
Kent Zhang
2022-02-19
1.4K0
普通企业的规划类项目中,OptaPlanner更适合作为APS的规划优化引擎
在企业的规划、优化场景中,均需要开发规划类的项目,实现从各种可能方案中找出相对最优方案。如排班、生产计划(包括高层次的供应链优化,到细粒度的车间甚至机台作业指令)、车辆调度等。因为这类场景需要解决的问题,均可以归约为数学中的NP-C或NP-Hard问题。而解决此类问题,均需要通用的求解器才能实现。这类求解器也称规划引擎,通过它才能从天文数字的可能方案中,找出一个可行且相对优化的方案。
Kent Zhang
2022-02-19
2.2K0
相邻两个生产计划之间的衔接问题
本文主要探讨在生产计划的“编制 -> 执行”过程中,遇到的计划与实际生产活动,相邻两个计划之间的衔接问题,及常见的方案建议。
Kent Zhang
2022-02-19
5000
OptaPlanner 7.32.0.Final版本彩蛋 - SolverManager之批量求解
上一篇介绍了OptaPlanner 7.32.0.Final版本中的SolverManager接口可以实现异步求解功能。本篇将继续介绍SolverManager的另一大特性 - 批量求解。
Kent Zhang
2020-02-26
7420
OptaPlanner 7.32.0.Final版本彩蛋 - SolverManager之异步求解
因为工作和其它原因,很长一段时间没有出新的、关于OptaPlanner的文章了,但工余时间并没有停止对该引擎的学习。与此同时Geoffrey大神带领的KIE项目团队并没有闲下来,尽管在工业可用性、易用性和使用门槛方面,OptaPlanner相对传统的求解器已经做得相当出色;特别是在规划过程交互、和各种操作接口方面,更是目前最为容易使用的规划求解器。
Kent Zhang
2020-02-26
7820
机械师实时调度示例(I) - 实时规划
OptaPlanner创办人Geoffrey De Smet及其团队,在Red Hat 技术峰会上主题会场上,演示了一个通过OptaPlanner实现实时规划与调度的示例。Geoffrey及其团队专门为此分三篇博文描述了该程序。该程序及其相关博文是OptaPlanner在VRP领域极之经典之作。本系列也分三篇对博文进行翻译,以飨各位ORer, APSer和Planner.
Kent Zhang
2019-10-24
8820
Excel与Google Sheets中实现线性规划求解
很久没更新过APS系列文章了,这段时间项目工作确实非常紧,所以只能抽点时间学习一下运筹学的入门知识,算是为以后的APS项目积累点基础。看了一些运筹学的书(都是科普级别的)发现原来我目前面对的很多排产、排班、资源分配和路线规划问题,都是运筹学上的典型案例。与此同时,除了继续使用Optaplanner来做我们的规划类项目外,还花点时间去研究了一下Google OR-Tools开源规划引擎,这是Google旗下的一个开源求解器,接下来我会专门写一些关于Google OR-Tools应用的文章,并与Optaplanner作些关联对比。
Kent Zhang
2019-09-17
3.6K0
设计Optaplanner下实时规划服务的失败经历
  其实本文不知道算不算一个知识点分享,过程很美妙,但结果很失败。我们在利用OptaPlanner的Real-Time planning(实时规则)功能,设计实时在线规划服务时,遇到一个属于OptaPlanner7.8.0.Final版本的Bug。在实现实时在线规划服务的过程中,我做过很多尝试。因为需要实时在线的服务,因此,需要设计多线程并发为外界请求提供响应,需要实现消息队列来管理并发请求的时序等问题。这些Java方面的并发处理,我们暂时不详述,这方面的牛的人太多了,我只是新手,站在别人的肩膀上实现的代码而已。在本文我着重介绍一下,我在尝试使用OptaPlanner的Real-Time Planning功能时遇到的问题,最终确认问题出自OptaPlanner引擎自身, 并通过JIRA向OptaPlanner 团队提交issue过程。 关于OptaPlanner的Real-time planning   先看看正常情况下,我们对OptaPlanner的应用场景。平时我们使用OptaPlanner时,不外乎以下几个, 构建Problem对象 + 构建Solver对象-> 启动引擎 -> 执行规划 -> 结束规划 -> 获得方案-> 获取结果方案,如下图。   这种应用模式下,引擎处于一个非实时状态,只是一个调用 -> 获取规划结果的简单交互过程。
Kent Zhang
2019-09-17
1.1K0
APS技术中的多目标规划问题
在进行APS(高级计划与排程)系统开发时,绝大多数情况下是需要考虑多目标的。但面对多目标问题进行规划求解时,我们往往极容易因处理方法不当,而影响输出结果,令结果与用户期望产生较大差别。事实上很多时候用户,面对此类问题也无法给出一个确定的合理的期望,因为多个目标混合在一起的时候,产生复杂的规划逻辑,用户自身也会被迷惑,到最后就错误地提出一些所有目标都达到极致的“完美”计划要求;但客观上是不存在这种“完美”计划的。
Kent Zhang
2019-09-17
1.4K0
体现公平性公式在规划问题中的应用
本文是在Optaplanner创始人 Geoffrey De Smet先生的一篇文章《Formula for measuring unfairness》的基础上进行翻译而成。因为其博文发表在Optaplanner的官网上,因此,其行文过程中存在一定的上下文默认情况,如果直译原文,将会大大降低其可读性。因此,本文是在原文的基础上添加一些本人修饰的表达而成。
Kent Zhang
2019-09-10
5920
OptaPlanner终于支持多线程并行运行 - Multithreaded solving
 OptaPlanner 7.9.0.Final之前,启动引擎开始对一个Problem进行规划的时候,只能单线程进行的。也就是说,当引擎对每一个possible solution进行分数计算的过程中,细化到每个步骤(Caculation),都只能排队在同一个线程中依次计算,不管你的问题是否存在并行计算的可能。很显然这种运算方式应用于一些可并行计划的场景下,是相当不利的。就算是一些在业务逻辑上无法实现并行运算的情况,在引擎自行调用指定的算法进行寻优时,若可以将每个Step,甚至每个Move的运行操作,适当地分配到不同的线程中执行,那么在多核CPU的环境下,无疑能大大提升规划运算性能,从而在规定的时间内行到更优的效果。毕竟对于NP-Hard/NP-Complete问题,除了比较算法优劣外,另一个维度对比的就是运算量,单位时间内运算量越大,找到更佳方案的机率越大。
Kent Zhang
2019-09-10
1K0
OptaPlanner - 从探究示例中的hello world 初步认识规划引擎的运行步骤
上一篇我们成功以把Opotaplanner规划引擎下载回来,并把它的示例运行起来,简单解析了一下它的Cloud balance示例。这一篇我们这些示例的源代码导入到Eclipse中,看看它在后台是怎么运行的。
Kent Zhang
2019-09-10
1.5K0
OptaPlanner规划引擎的工作原理及简单示例(2)
在前面一篇关于规划引擎OptaPlanner的文章里(OptaPlanner规划引擎的工作原理及简单示例(1)),老农介绍了应用OptaPlanner过程中需要掌握的一些基本概念,这些概念有助于后面的内容的理解,特别是关于将约束应用于业务规则上的理解。承上一文,在本篇中将会减少一些理论,而是偏向于实践,但过程中,借助实际的场景对一些相关的理论作一些更细致的说明,也是必要的。本文将会假设我们需要对一个车间,需要制定生产计划.我们为生产计划员们设计一套智能的、自动的计划系统;并通过OptaPlanner把这个自动计划系统开发出来。当然,里面的业务都是经过高度抽象形成的,去除了复杂的业务规则,仅保留可以体现规划引擎作用的一些业务需求。因此,这次我们只用一个简单的小程序即可以演绎一个自动计划系统,来呈现规划引擎OptaPlanner在自动计划上的魅力。
Kent Zhang
2019-09-07
3.2K0
OptaPlanner规划引擎的工作原理及简单示例(1)
  在之前的文章中,已介绍过APS及规划的相关内容,并对Optaplanner相关的概念和一些使用示例进行过介绍,接下来的文章中,我会自己做一个规划小程序 - 一个关于把任务分配到不同的机台上进行作业的小程序,并在这个小程序的基础上对OptaPlanner中更多的概念,功能,及使用方法进行讲解。但在此之前,我需要先讲解一下OptaPlanner在进行规则运算的原理。所以,本文是讲述一些关于寻找最优解的过程中的原理性的内容,作为后续通过示例深入讲解的基础。但这些原理知识不会涉及过分深奥的数学算法,毕竟我们的目标不是写一个新的规划引擎出来,更不是要研究各种寻优算法;只是理解一些概念,用于理解OptaPlanner是依据什么找出一个相对优解的。以便在接下来的一系列文章中,可以快速无障碍地理解我所讲解的更细化的OptaPlanner功能。
Kent Zhang
2019-09-07
1.6K0
OptaPlanner逐步学习(0) :基本概念 - 规划问题,约束与方案
  之前的文章中,分别从APS,排产到规划引擎叙述了一些理论基础;并介绍了一些OptaPlanner大概的情况;并一步步将OptaPlanner的示例运行起来,将示例源码导进Eclipse分析了一下它的Hello world入门示例,从本篇开始,我们将分步学习它的一些概念及用法。
Kent Zhang
2019-09-07
1.5K0
【译】OptaPlanner开发手册本地化: (0) - 前言及概念
  在此之前,针对APS写了一些理论性的文章;而对于OptaPlanner也写了一些介绍性质,几少量入门级的帮助初学者走近OptaPlanner。在此以后,老农将会按照OptaPlanner官方的用户手册的结构,按章节地对其进行翻译,并成型一系列的操作说明文章。在文章中,为了降低对原文的理解难度,有些地方我不会直接按原文档的字面翻译,而是有可能加入一些我自己的理解,或添一些解释性的内容。毕竟英语环境下的思维和语言表达方式,跟中文或多或少会有差别的,所以如果全部按字面翻译,内容就非常生硬,可读性差,解程难度较大。我认为应该在理解了作者原意的基础上,再进一步以中文方式的表达,才算是真的的本地化。记得老农还是少农时,学习开发技术,需要阅读一些外国书箱的翻译本时,印象最深的是候捷老师的书,尽管《深入浅出MFC》,砖头厚度的书,硬是被我翻散了线,MFC尽管真的晦涩难懂,但候老却能把Windows的消息机制及MFC中整个个宏体系,系统地通俗地描述出来,令读者不需要花费太多精力去理解猜测书中字面的意义,大大降低的VC++中MFC的学习门槛。但老农毕竟只是一个一线开发人员,不是专业的技术资料翻译人才,不可能有候老师的专业水平,因此,我也只可尽我所能把内容尽量描述得通俗一些,让读者尽量容易理解,花费更少的时间掌握这些知道要点。
Kent Zhang
2019-09-07
1.8K0
OptaPlanner 基本概念 - 规划问题, 约束,方案
  之前的文章中,分别从APS,排产到规划引擎叙述了一些理论基础;并介绍了一些Optaplanner大概的情况;并一步步将Optaplanner的示例运行起来,将示例源码导进Eclipse分析了一下它的Hello world入门示例,从本篇开始,我们将分步学习它的一些概念及用法。
Kent Zhang
2019-09-07
1.7K0
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档