关于APS在企业生产计划上的应用

关于APS在企业生产计划上的应用

本人是名软件开发人员,从事软件开发工作10多年。近几年慢慢沉淀到制造业信息化方面,主要是APS在生产计划方面的应用,APS - Advance Planning and Scheduling, 高级计划与排程技术。其实就是计划的一种优化手段,其中使用了一些优化算法,令计划的质量更高一些。通过该技术生成的计划,在达到一些硬性约束的基础上,能实现更进一步的优化。例如满足生产工艺的同时,提高订单的按时交付率,降低成本等。从最开始被调去做ERP数据适配APS项目实施,到现在自己在为公司设计、开发排产程序(通过第三方规划引擎用、求解器实现)。从中也接触过不少排程产品,针对不同的场景,其适应性、可用性千差万别。长期制造企业生产领域的工作经历,令我有更多机会面对各种供应链、排产等方面的问题。本人细说一下APS技术在制造业的生产计划上的应用。

1. 排产的现状

关于制造业排产系统(或排产工具),目前人们主要关注,并使用的是基于MPS(主生产计划系统),制定主生产计划。主生产计划是基于生产厂、公司甚至整个集团等较高层次的生产规划。计划部门根据产品的产工艺参数,结合订单的数量与交期要求,生成以生产工单为基本单位的生产计划,因为层次较高,粒度较大,通常被称作主生产计划(Master Planning)。因此,目前所谓的排产,更多的是对这些生产工单进行编排。例如,根据这些工单的工艺要求分配到不同的生产单位(分厂、车间或承包商),并根据各个工序的生产时间需求,定出目标完成日期。而这个目标日期并非精确的,针对具体工单细化的,而是针对整批工单(非单一工单),且对资源与时间的预计,存在相当的余量的。而将这些工单,准确地分配分配到更细的生产单位(例如产线、机台),预定每个工单的开始与结束时间等更详细、明确的作业指示。在主生产计划阶段则尚未有涉及到。

主生产计划阶段无法对每个工单实现更精细的时间与空间规划,原因有二:

1. 复杂度与可变性远高于人工运算能力上限

当计划被分配到车间这一层,再下分配就是产线甚至机台了。即车间的生产控制部门(通常是车间调度)获得上级下发来的生产要求之后,会结合在制品、可用资源与工单的具体要求,向上级单作出反馈,回复是否可按计划的要求完,双方讨论博弈后确定一个新的计划,车间生产控制部门就会制定一个适合本车间的生产计划(此时该计划可以称作作业计划)。下一步生产调度部门再会根据具体情况(在制品、产能资源、工单工艺要求与工单优先级等),对计划内的每个工单进行投放,将任务落实到产线、或机台。阶段需要考虑的不仅仅是主生产计划层面的大指量工单的需求司,而要考虑每个工单的细节属性,选择合适的目标生产单位(产线或机台)。与此同时,投产后的情况也存在动态变化的可能,原计划中制定很完美的投产方案,很可能国因为生产过程中产生的一些不可预见因素,而需要作出即时调整。例如机台意外停机,产生计划以外的工艺质量异常等。

因此,生产单位的控制调度部门需要处理的逻辑细节都是极为复杂繁多的,且需要极高的时效性的。人类面对种类繁多,复杂且多变的规则,各种业务制约与各种要求,是极难滴水不漏地周全考虑;而对大量的规则和逻辑运算,更是难以快速高效地作出判断。因而人类面对这种要求细致、复杂的计划制定 工作,极难完全胜任;其效率与准确度与计算机对比,更是天壤之别。人们更多的是通过经验积累给出一些大概的,基于简单判断,凭感觉“估算”的计划。这种背景下,计划的不确定性极高,质量极难保证。甚至某些情况下,即使一些经验老道的资深生产调度人员编排出来的作业计划,如果有足够多的时间与资源去逐步推导,到最后也可能是一个不可行计划。大多数情况下,至少不是相对优化的。例如存在质量风险,交期无法保证,资源利用率低下等问题。这此问题往往在计划被制定出来的初始阶段难以觉察。随着计划逐步推进的过程中各种环境、条件的变更,越往后就计划偏离要求越大。所以,只要计划规模达到一定大小,环境条件复杂度达到一定程度,编制一个"好"的计划,难度极大,对人类来说甚至是不可能的任务。目前在现实的生产活动中,更普遍的做法,是以滚动计划的方式来实现一定程序上可行的计划。资深的计划编制人员,基于简易的运算,凭借经验与感觉生成一个初始计划。在计划推进过程中,根据实际出现的情况,及逐步发现的问题,持续、动态地作出调整。所以给别人的印象就是,车间的生产计划毫无章法,质量低下。甚至有公司管理层认为,车间根本无计划可言。但这是人思维局限性造成的,面对远超过人们处理能力问题时,必然会出来边做边调整的情况。因此车间层面的生产计划会面临一个严重的复杂度与可变性过高的问题。

2. 车间生产计划被视作操作细节,被人为未达到战略层次,未得到足够的重视与认识

作为公司级别的主生产计划,它可直接作为公司供应链的一环而存在,这个环节的目标达成率,需要下级各个更细层次生产计划的支持。但作为公司层面,往往要求的是,只要公司的主生产计划保持在一定的达成率,那么就可以满足供应链其它环节的要求了。

因为主生产计划的底层支持(即更细的车间、产线生产计划,或称作业计划)未成体系,为了确保主生产计划可以达成,主生产计划的目标设定是存在冗余的。也就是主生产计划给制定车间、产线的生产计划的时间,已经预计到一定程度的不可确定性存在,并预留下一定的缓冲期。但这个缓冲期长短,是通过以往经验或历史数据,甚至部门自身利益综合所得。同理,在整个供应链计划中,对主生产计划也会留有缓冲冗余。如此各级计划预留的缓冲,加总起来就会相当大,往往比实际执行制造生产的CT还要长。这样就会造成极大的效率低下,及产能资源浪费。但就是因为越往明细的生产计划,不可控、不确定性及难度越大,决策层认为对此方面的投入与产出比过低。因此,公司通常都只能够弃小保大。久而久之,大家的焦点都只关注在MPS的层面上;而忽视了更细更底层的生产计划。

综上所述,目前我们所说的排产,或说编制生产计划,更多的还只停留在主生产计划及以上这些层次较高,较虚泛的范畴。而真真正正到了车间、产线的作业控制层次的生产活动,人们的焦点往往更关注MES(生产执行系统)。因为车间、产线层面的生产调度计划存在太多的难点,以目前的技术上尚未有成熟的解决方案,且各大企业信息化产品对此较小涉及。大家会留意到,各种著名或本土的ERP系统,它关注的都是公司供应链层面的资源调配,而不会涉及具体生产环节的计划优化范畴。原因并非生产环节的计划优化市场不大,相反居目前大大小小各类制造业管理人员的反馈,对具体车间、产线甚至机台层次的作业计划优化需求,是相当旺盛的。因为近年随着小单多款的订购方式作为制造业订单主流,及精益生产的日渐盛行,车间、产线级别的生产计划越发受到重视。而在这方面的优化工作上,若依然如以往一样,完全依赖人的经验和并不高的运算能力,其优化效果是远远不足的,在此方面仍有极大的优化容易。因此,需要引入APS技术作为优化生产计划编制的辅助手段。目前各大厂商也已觉察到此块市场的苏醒,分分投入资源在APS技术上,并慢慢有些成功可用的方案在市场上推广了。

下面就来看看APS(Advance Planning and Scheduling - 高级计划与排程)技术,在生产制造业的一些应用.

2. 什么是APS.

APS就是一种高级计划与排程技术,那么何谓高级?在生成细化的生产计划过程中,相对于以往的主生产计划,除了满足一些生产制造过程中关于工艺、质量、资源及产能等因素的硬性限制与要求;还需要根据一些既定的软性要求(或称策略)进行更深度的优化,从而得出最接近策略目标的计划方案。举个例子,一个主生产计划下发到车间,当前正处于工厂的生产旺季,那么生产策略通常会被确定为"保证交期"(相对谈季的时候,因为资源相对充足,交期的保证不再是难事,策略往往会是"降低成本"。)那么车间生产计划部门收到的计划,细分为各车间、产线,甚至机台的具体生产作业指令 (即安排生产工单的时间与空间维度),就会把生产计划的限制大概区分为两种:一种是保证硬性的要求不违反,例如产品质量要求、生产安全要求等。在此基础上,会优化安排这些生产工单的生产次序,所使用的资源,并调配合理的产能,令工单可以更快完成生产,从而保证产品对订订单的交货期;同时,又可以为后面的生产工单尽快腾出更多资源;从而达到提高效率的目标。

在这些优化因素中,对于质量、安全等要求,是一些硬性的定性要求,其满足的条件结果必然为是或否。而对于第二种效率的要求,是一种软性的定量要求。若从人的角度上来考虑,经验越丰富的调度人员,排出来的计划效率越高,越符合这些软性要求。这就是APS的威力所在的,当然大家关注人工智能中的深度学习的信息,可能会发现,APS确实有一点人工智能的意思,且目前已经听到过有有方面的研究,就是在APS优化排程过程中,通过人工智能技术,更快地获取好的计划方案。但传统的、基于运筹学的APS技术,使用的还不是人工智能相关研究成果;而是基于有限资源、固定条件约束下的最优方案分搜寻技术。它的原理就如上面的例子,会把人们对计划的要求划会为硬性约束与软性约束。通过寻优算法(禁忌搜索、遗传算法、模拟退火等)在浩瀚的可能方案中,在有限的时间内,找出一个满足硬性要求的前提下,最大程度上满足软性要求的方案。

寻找这些方案的一些原理、算法,则涉及一些数学上的概念。事实上APS技术在生产计划上的应用,可以归纳为运筹学中的数学规划技术应用。一个生产计划存在的可能方案有天文数字个,而目前是不存在一个多项式时间复杂度的算法,来求解其中的最优方案的。也就是说,APS技术面对的生产计划问题,其实是一个NP-Hard问题。只能通过一些启发式算法,提高寻找优化方案的效率,从而在有限的时候算,找到可行的,且相对最优的方案出来。

总而言之,APS就是通过一些数学算法,在计算机的强大运算能力支持下,找出一些可能比人类排产老师傅更佳的生产调度计划。

3. APS的适用场景.

目前制造业及相应的信息化产品中,更多关注于主生产计划,而具体明细的车间产线层次的明细生产计划、调度计划,还是处于粗放状态。而主生产计划由于获得足够的关注,往往有更多的资源投入对其进行研究。然而它面对的问题比较宏观,由公司、甚至集团级别的,较宏观层次的计划部门负责制定的,那么主生产计划必然微观性不足,则必然有一定的局限性。例如,上述提到的计划质量、缓冲期是否合理等因素,其考虑是不够周全及细致的。APS在这方面则可以作出较大的提升。这种场景下,是把APS作为供应链层次的优化器使用。

然而,APS应用于主生产计划,要全面发挥其最价值,其实还是需要将其作用发挥到更具细节层次的车间、产线甚至机台的生产计划中;毕竟在主生产计划中,对各种资源、时间与任务次序关系的预判,都要由车间、产线层次的生产计划支持。否则主生产计划会变得依据不足,缺乏底层细致计划的支持。

当然,目前在制造业的生产计划中,面临的最大问题及最基础、关键,且最能直接产生价值的,还是车间、产线甚至机台层面的生产调度计划优化。目前各个APS产品与技术,都是号称可以解决这类问题,都是冲着车间、产线这个层次的生产计划而来的。所以,目前见得最多的APS适用场面,还是在车间、产线甚至机台层面。针对已分配的工单,对各个车间、产线与机台等生产单位,在已有的可用资源条件限制下,基于具体的工艺与业务制约因素,将生产任务适当分配到合理的生产单位,并根据计划中各任务的关后关联关系,确定每个生产任务的具体开始与结束时间;这个也是APS的核心价值所在。目前在车间调度工作中,对于资源的把控准确度与可控性相对会高一点。毕竟对于生产资源的需求,在自身产能不足,但订单要求有硬性规定的时候,可以通过引入外发加工来解决资源不足的问题。而生产时间的安排就没那么容易了通过加大资源投入来解决了,因为一些生产任务具体一定的时效性,有些问题往往并不是投入更多资源即可解决的。编制细致的生产计划,需要非常大的运算量,需要权衡各种因素,考虑工序的前后关系,及工厂现实的班次情况(即人力资源)等纵多因素与制约条件综合起来,才获得的运算结果。人类是无法快速判断、运算从而获得结果的。

而APS系统则可以基于运筹规划中各种优化算法,基于各种约束;利用计算的高速运算,在有有效的时间内,对比各种方案的优劣,在可行的时间内对海量可能的方案进行计算对比,从而找出比人类手动判断计算结果更优的生产调度计划。甚至是对于生产任务的开始、结束时间,其分钟可以精确到分钟级别的精度。因此,针对人类此方面的不足,通过大运算量,配合寻优算法,自动生成生产调度计划,是目前APS的主要应用场景。

4. APS产品及引擎的选用

目前世界上可用的APS产品并不多,毕竟这是一个数学(运筹学)上都还在不断探索的问题。且目前APS产品或技术,主要有偏重于MRP方面的方案,例如英国FastRact。还有一些是结合规划引擎与实际排程经验的产品。例如日本的Asprova. 还有国内也有一些新秀产品。另外还有一种不算是产品(可以称作定制化的APS解决方案),是基于一些规划引擎,结合企业自身的业务场景,自身以项目形式开发的APS系统。目前笔者在的企业正是处于这种APS定制开发的状态。

我们基于Optaplanner + Drools作为规划与规则核心引擎,结合自身业务规则,将业务场景中的各类实体抽象(即建模),并将种类繁多的业务规则,抽象总结为硬约束与软件约束(其实对应于数学规划上的条件约束与目标函数)。然后通过程序使用Optaplanner中的适当模式进行自动产生精确到分钟的生产计划。目前我接触过的APS产品中,觉得Asprova确定是相对比较成熟的产品,虽然它的技术已经非常老旧,对新的企业信息系统集成形成不少制约,但其核心竞争力是排产引擎对制造业有专门的优化。

因此,在APS方面的项目实现方面,有如下建议:如果觉得企业的业务相对比较复杂、个性化太强(其实任何一个公司,发展到一定程序,其业务个性化都是极强的),且自己公司具有一定的技术开发实力,建议还是使用规划引擎(开源比较成熟的有Optaplanner和 Google OR-Tools)定制开发,具有更大的灵活性。其实所谓的规划引擎,其核心是求解器,目前除了开源求解器,还有一些商用求解器,其各方面的性能都十分优秀。

上述都是自己这些年在APS上遇到各种问题,走过各种弯路后的一点点总结,欢迎指正。

谢谢。


Constraint satisfaction solver (Java™, Open Source)www.optaplanner.org图标

本系列文章在公众号不定时连载,请关注公众号(搜“让APS成为可能”或扫以下QR Code)及时接收,二维码:

如需了解更多关于Optaplanner的应用,请发电邮致:kentbill@gmail.com
或到讨论组发表你的意见:groups.google.com/forum
若有需要可添加本人微信(13631823503)或QQ(12977379)实时沟通,但因本人日常工作繁忙,通过微信,QQ等工具可能无法深入沟通,较复杂的问题,建议以邮件或讨论组方式提出。(讨论组属于google邮件列表,国内网络可能较难访问,需自行解决)

编辑于 2019-05-27

文章被以下专栏收录

    小编本身是一介码农,在码界混了16年,接触过不少技术,最后专注基于OptaPlanner规划引擎及Drools规则引擎在APS(高级计划与排程)上的应用 .在此过程中发现一些挺有趣的事,觉得可以写下来分享给大家。也欢迎大家拍砖,一起学习一起进步。Q:12977379, vx:13631823503