本人本身是一个码农,已经服务了共和国各项事业(好像是说得有点漂,没办法段子看多了)大约一半工作时候了(按60岁退休的话),从一线的小码农,到现在成了老农,出产了不少或优或劣的各种码,几乎啥都做过。近几年慢慢沉淀到制造业信息化方面,主要是APS在生产计划方面的应用,APS - Advance Planning and Scheduling. 高级计划与排程;其实也就是做计划,只不过使用了一些优化算法,另计划的质量更高一些。从最开始被调去做ERP数据适配APS项目实施,到现在自己在为公司开发排产引擎(当然规划引擎用的是开源的,我可不是数学方面的专家)。从中也接触过不少排程产品,掉过不少坑,身上算是留下了点APS的战斗痕迹吧。下面先讲一下我在这方面的一些看法。等我有时间了,我再把这一年来,为解决APS系统的引擎问题使用optaplanner规划引擎的一些小积累分享一下,但这个时间嘛,还真的不容易挤呀,这一年来基本上每天晚上9点30前没离开过办公室,11点后跟晚班工人一起下班是常事(没错,我在一个制造企业上班,对APS有一个天然的实战环境,这是公司给我的最大条件优势)。

1. 排产的现状

  关于制造业排产的系统,目前人们关注得更多的是MPS(主生产计划系统)的排期,即是公司甚至整个集团层面,根据产品的产工艺参数,结合订单的数量与交期要求,生成以生产订单为基本单位的生产计划,通常称作主生产计划(Master Planning).所谓的排期,或称排计划,更多的是对这些生产工单进行编排。例如根据这些工单的工艺要求分配到不同的生产单位(分厂、车间或承包商),并根据各个工序的生产时间需求,定出一个要求的完成日期,而这个日期其实是有水份的(下面会有解释)。但这些工单去到具体的生产单位后(特别是公司自己的车间作为生产单位时),其具体的生产计划就较少涉及了。原因有二.

  a. 复杂度与可变性太高。到了车间这一层,再下一层就是产线甚至机台了,即车间的生产控制部门获得上级下发来的生产要求之后,会结合在制品、资源与工单的具体要求,向上级单作出一个反馈,即回复是否可按计划的要求完,双方讨价还价确定了一个新的计划版本之后,车间生产控制部门就会制定一个适合本车间的生产计划,再把该计划下发给生产调度部门进行生产。生产调度部门再会根据具体情况,按生产计划进行生产。无论是车间生产计划部门,还是调度部门,他们面临的都是一些涉及一些非常复杂的细节规则,例如生产工单的工艺要求,投放到车间哪个产线,例如哪种甚至哪台机器进行生产,生产过程中需要注意的具体细节等。都需要生产计划部门有所考虑,当然到了调度部门有可能还会有一些更细节的实际情况及约束进行考虑,从而在生产过程中作出临时调整。无论是车间的生产计划部门还是生产调度部门,需要处理的逻辑细节都是很复杂繁多的。而作为人类面对种类繁多,复杂且多变的规则,各种业务制约与各种要求,是无法滴水不漏地顾及的。更多的是通过经验积累给出一些大概的,基于估量的安排。所以,车间各级部门给出的这个计划其不确定性是非常高的,甚至有些情况下,在经验老道的生产计划人员及调度人员排出来的生产计划,如果有足够多的时候去推敲,即使是按目前的生产情况不变,到最后也是不可行,或者说计划的质量要求(例如对成本、交期、产能利用率等要求)是非常低的。但往往在制定出来的初始阶段基本上是没人能推断出来的,更不用说计划推动了一段时间后,随着过程中的各种条件变更发生,越往后就越偏离原来的初充了。所以,要能最大程度上做出一个好的计划,是非常困难的,更多的是以经验生成一个初始计划,在生产过程中根据实际出现的情况,及在初始阶段未能考虑的问题慢慢明确,再持续地作出调整。所以给别人的印象就是,车间的生产计划毫无章法,质量太差,甚至有公司高层认为,车间根本无计划可言。但这是人思维的局限性,而对远超过其处理能力问题时,必然会出来的情况。因此车间层面的生产计划会面临一个严重的复杂度与可变性太高的问题。

  b. 车间生产计划被视作操作细节,被人为未达到战略层次,未得到足够的重视与认识。因为作为公司级别的主生产计划,它是直接作为公司供应链的一环而存在的,这个环节的目标达成率高低是需要下面各个更细层次生产计划的支持的。但作为公司层面,往往要求的是,只要公司的主生产计划保持在一定的达成率,那么就可以满足供应链其它环境的要求了。但事实上这个达成率是需要有冗余的,也就是主生产计划给制定车间生产计划的时间,已经预计到一定的不可确定性存在,因此往往会留下一定的缓冲期。但这个缓冲期长短,是否合理,往往都是通过以往经验得出。而同样道理整个供应链对主生产计划也会留有缓冲期,那么可以想像,为了能满足要求,往往这些缓冲期加起来就会很长,往往比实际执行制造生产的CT还要长。这样就会造成极大的效率低下,及产能资源浪费。但就是因为越往明细的生产计划,不可控、不确定性越大。因此,公司通常都只能够弃小保大。久而久之,大家的焦点都只关注在MPS的层面上了。

  综上所述,目前我们所说的排产,或说生产计划,更多的还只是停留在主生产计划这个层次较高,较虚泛的范畴。而真真正正到了生产控制层次的,往往关注的是MES(生产执行系统)了,而计划因为车间、产线层面的生产调度计划存在太多的难点,及很多方面技术上尚未成熟,令各大企业信息化产品对此较小涉及。大家也会留意到,无论多大、多出名的ERP系统,它关注的都是公司供应链层面的资源调配,而不会涉及具体生产环境,或者具体到库存物流,或具体的订单执行层面的内容。而目前这方面通常引入APS作为支撑慢慢有些成功可用的方案在市场上推广了。

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

2. 什么是APS.

  上面说了,APS就是一种高级计划与排程技术,那么为什么叫做高级呢?我的理解是,它是相对于以往的MPS的,它除了满足一些生产制造过程中关于工艺、交期等等的硬性要求,还要在满足这此硬性要求的基础上,根据既定的一些设定、或称策略进行不断优化,从而得出最接近策略目标的计划方案。这样说可能比较虚,下面举个例子说明一下。一个主生产计划下发到车间,当前正处于工厂的和产旺季,那么生产策略通常会被整理为"保证交期"(可能谈季的时候,因为资源相对充足,交期的保证不再是难事,策略往往会是"降低成本"。),那么车间生产计划部门收到计划,细分为各车间、产线甚至机台的计生计划时,就会把生产计划的策略大体上区分为两种,一种是保证硬性的要求不违反,例如产品质量要求、生产安全要求等。在此基础上,就会设法安排这些生产订,令其可以更快完成生产,从而可以保证产品所在订单的交期,又可以为后面更多的生产单尽早腾出资源,目标就是提高效率。对于前面的质量、安全的要求,是一些硬性的定性要求;而对于第二种效率的要求,是一种软性的定量要求。对于定性的要求,那么就会有好坏,或说能达到多好的程度评价。在人的角度上来讲,经验越丰富,他排出来的计划效率越高,越符合这个软性要求。这个就是APS的威力所在的,当然大家关注人工智能中的深度学习的信息,可能会发现,这个有一点人工智能的味道,确实是的,但目前还没有听说过这方面的研究。APS技术目前使用的还不是人工智能,而是基于有限资源、固定条件约束下的最优方案分搜寻技术。它的原理就如上面的例子,会把人们对计划的要求划会为硬性约束与软性约束。通过寻优算法(禁忌搜索、遗传算法、模拟退火等)在浩瀚的组合方案中,在有限的时间内,找出的方案,需要在满足硬性要求的前提下,最大程度上满足软性要求的方案。寻找这些方案的一些原理、算法,就涉及一些数学上的概念,例如NC问题,NPC问题等,在此就不再熬述了。如果有机会我另写一些相关的文章讲解一下。

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

3. APS的适用场景.

  正如上面提到,现在制造业更多的关注于主生产计划,而具体明细的车间产线层面的生产计划、调度计划,还是处于放养式的存在。而主生产计划由于有足够的关注,往往有更多的投入对其进行研究,而且它面对的问题更宏观;综合来讲,相对车间层面的生产调度计划就没那么多繁杂的制约因素了。所以,目前市上各种APS产品和技术,主要还是针对车间、产线甚至机台的生产调度计划,希望在这个层面的生产计划有一些开创性的成果。但其实我们可以想象,APS可以处理车间、产线层面的生产计划,那么面对制约因素少得多,或宽松得多的主生产计划,是完全卓卓有余的。所以,虽然各大商家都把自己的APS产品瞄准车间、产线层面的生产计划,其实如果在主生产计划上面所需求,它也是可以对现有的主生产计划作出些非常大的改善的。因为尽管主生产计划比较宏观,但还是由公司计划部门的人来制定的,那么就必然有一定的局限性。例如上面提到的计划质量、缓冲期是否合理等等,APS在这方面可以作出很大的提升。当然,把APS应用于主生产计划,其实还是需要下面层面的车间、产线生产计划的支持的,毕竟在主生产计划中,对各种资源与时间的预判,都要由车间、产线层面的生产计划进行实现。而不是毫无根据地猜一个资源可用量,或完成时间的。

  当然,目前在制造业里面临的最大问题还是车间、产线面层的生产调度计划,目前各个APS产品与技术,都是号称可以解决这类问题,都是冲着车间、产线这个层面去的。所以目前见得最多的APS适用场面,还是在车间、产线甚至机台层面,针对已分配的工单,对各个车间、产线甚至机台,在已有的可用资源条件下,基于具体的业务制约因素,将生产任务适当分配到合理的生产单位(车间、产线甚至机台,工位),并根据计划中各任务的关后关联关系,确定每个生产任务的具体开始与结束时间。这个也是APS的核心价值所在。因为目前在车间调度工作中,对于资源的把控也许会相对准确一些,毕竟有条件的工厂,在自身产能不足,但订单要求有硬性规定的时候,可以通过引入外发加工来解决资源不足的问题。而生产时间的安排就没那么容易了。因为这是一个运算量非常大,考虑各种综合因素,考虑工序的前后关系,还要考虑工厂实现的班次等因素,综合起来的计算结果。人类是无法快速运算、毕竟种个方案的。这样的话,APS系统就可以基于自己内核所使用的各种最优解搜寻算法,基于各种约束;再利用计算的高速运算,快速地计算出各个方案的优劣,从而在短时间内对海量组合方案进行计算对比,从而往往能找出比人类更优的生产调度计划,甚至是对于生产任务的开始结束时间,甚至是精确到分钟的。因此,针对人类这方面的不足,通过大运算量,去生成的生产调度计划,是目前APS的主要应用场景。

4. APS产品及引擎的选用

  目前世界上可用的APS产品其实还是不多的,毕竟这是一个数学上都还在不断探索的问题,目前APS产品或技术,主要有偏重于MRP方面的,例如英国FastRact, 还有一些是结合规划引擎与实际排程经验的产例如日本的Asprova. 还有国内也有一些新秀产品,而这些接触不多。另外还有一种不算是产品,而是基于一些规划引擎,结合企业自身的业务场景,自身以项目形式开发的APS系统。目前我所在的企业正是处于这种APS发展状态。我们是基于Optaplanner + Drools作为规划与规则核心引擎,结合自身业务规则,将业务场景中的各类实体抽象,并将呼类繁多的业务规则抽象总结翻译为硬约束与软件约束。再通过程序使用Optaplanner中的适当模式进行生产计划的自动生成。目前我接触过Asprova与Fastract(这个只是接触过他们的顾问提供的信息,不没有进行过项目实施).觉得Asprova确定是相对比较成熟的产品,虽然它的技术已经非常老旧,但基核心价值是引擎可以根据实际的排产经验作出运算优化。如果觉得自己公司的业务相对比较复杂、奇葩,且自己公司具有一定的技术开发实力,建议还是使用Optaplanner进行定制吧。但还是要注意,在作技术选型时,还要充分了解自己业务上的情况,例如排产规则,自己业务跟各个引擎常用的模式有多大差异。这样才能选择一个真正适用的产品或技术。

上述都是自己这些年在APS上遇到各种坑后的总结,不一定对,欢迎大家拍砖。

谢谢。

End.


本系列文章在公众号不定时连载,请关注公众号(让APS成为可能)及时接收,二维码:


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

 

关于APS在企业生产计划上的应用的更多相关文章

  1. 易普优APS应用案例:线束行业生产计划排产

    一.线束行业生产现状 (1)产品种类以及标准繁多,生产计划难协调 线束行业的生产,虽然原材料不多,但线束产品却多达几万种.一般线束企业,虽然不是每个月都生产数万种产品,但每月生产的产品品种在300种以 ...

  2. 易普优APS 5.0高级计划排程系统助力工业4.0智能工厂建设

    (一)智能工厂建设核心 <中国制造2025>明确提出要推进制造过程智能化,智能工厂是实现智能制造的重要载体.作为智能工厂,在生产过程应实现自动化.透明化.可视化.精益化的同时,产品检测.质 ...

  3. 什么是APS高级计划排程(生产计划排产)系统主要功能模块有哪些?

    什么是APS高级计划排程(生产计划排产)系统? APS高级计划排程(高级计划排产)系统主要解决“在有限产能条件下,交期产能精确预测.工序生产与物料供应最优详细计划”的问题.APS高级计划排程(高级计划 ...

  4. 为什么众多软件厂商无法提供APS高级计划排程系统?工厂目前生产计划是怎么排产的?

    一.行业现状如想了解一下目前现状,去考察一下上了ERP的企业,会发现一个有趣的现象该企业无论ERP软件搞得如何如火如荼,似乎都与生产调度人员无关. 车间里或者生产线上的生产作业计划.生产过程的调度和管 ...

  5. APS中生产计划排程模块的基本原理

    高级计划系统(APS)作为ERP和MES的补充,用于协调物流.开发瓶颈资源和保证交货日期. APS包括需求和供应计划.运输和生产计划排程等各种供应链计划模块,本文主要介绍APS中生产计划排程模块的基本 ...

  6. 理解Docker(6):若干企业生产环境中的容器网络方案

    本系列文章将介绍 Docker的相关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  7. MRP生产计划模式在多品种小批量生产过程中遭遇挑战

    传统的MPS主生产计划和MRP物料需求计划的方式,已很难适应按需生产环境,很多企业正在转向按需生产环境,按需生产的最大的挑战是模拟计算CTP可以承诺交期.准时交货和应对不确定的插单等变化.不仅需要订单 ...

  8. 企业私有源代码上传github致入侵之大疆案判决了

    事件简单回顾: 1.2017年8月28日,大疆宣布“大疆威胁识别奖励计划”,最高3万美元: 2.然而在此之前,大疆农业事业部某员工将企业私有源代码上传到了github: 3.就职于大疆竞对公司Depa ...

  9. Linux企业生产环境用户权限集中管理项目方案案例

    企业生产环境用户权限集中管理项目方案案例: 1 问题现状 当前我们公司里服务器上百台,各个服务器上的管理人员很多(开发+运维+架构+DBA+产品+市场),在大家登录使用Linux服务器时,不同职能的员 ...

随机推荐

  1. 7.7 GRASP原则七: 纯虚构 Pure Fabrication

    GRASP原则七: 纯虚构 Pure Fabrication  如果依据信息专家原则获得的解决方案不合适,既不想违反低耦合.高内聚,也不想违 反其他的原则, 该如何把职责分配给对象?  左右为难… ...

  2. HTML5⑥

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  3. nodejs 安装失败 ,出现error 2502 和error2503

    出现error 2502 和error2503是因为win8的权限问题所导致的,具体说就是要以管理员身份进行安装就可以解决,下面详细来说一下. 1.cmd命令行点击以管理员身份运行. 2.这时候就可以 ...

  4. 2.7 清除FTP服务器文件

    清除服务器文件 from ftptools import FtpTools class CleanAll(FtpTools): '''delete an entire remote tree of s ...

  5. git安装及基本用法

    安装: 1先安装客户端,选择默认路径,直接下一步就可以了 2安装图形化客户端,选择默认路径安装完成 基本用法: 1同步coding上的文件 在桌面上点击鼠标右键,并选择Git Clone... 打开下 ...

  6. Java 内存模型简单剖析

    Java 内存模型试图屏蔽各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下都能达到一致的内存访问效果. 主内存与工作内存 处理器上的寄存器的读写的速度比内存快几个数量级,为了解决 ...

  7. 周强 201771010141 《面向对象程序设计(java)》第七周学习总结

    实验目的与要求 (1)进一步理解4个成员访问权限修饰符的用途: (2)掌握Object类的常用API用法: (3)掌握ArrayList类用法与常用API: (4)掌握枚举类使用方法: (5)结合本章 ...

  8. Windows10 VS2017 C++使用crypto++库加密解密(AES)

    参考文章: https://blog.csdn.net/tangcaijun/article/details/42110319 首先下载库: https://www.cryptopp.com/#dow ...

  9. C#operator作用

    opertor用于定义类型转化时采用两种方式,饮食转换implicit和显示转换explicit public static implicit 目标类型(被转化类型 变量参数) { return 目标 ...

  10. SQL Analytic Functions 分析函数

    应用场景 主要使用在需要分组计算的场景中,根据所需的计算值可以分为两类: 1,排序类:如排序号,相邻记录等 2,聚合类:如平均值,累加求和,最大值,最末值等 语法 分析函数的语法在各大数据库中基本类似 ...