生产计划排程 既有相对简单的算法,例如,最短交货期算法,最短工序算法等,也有复杂的算法,例如,神经网络、模拟退火法、遗传算法、禁忌搜索法等。
【1】四种简单算法的比较
这些年的研究资料表明生产计划排程并不存在一个全局最优的排程规则,也不是算法越复杂结果就越好,这一点通过下面一个例子对4种简单算法进行计算就可以得到验证,这4种简单算法中计算复杂性稍有不同,并不是算法越复杂排程结果就越好。
要做比较计算的4种算法(计算的复杂性依次递增)是:
(1)最短工期
(2)最早交货期
(3)按照工期和交货期之间的距离
(4)CR值
下面借用一个例子,见下表。比较这4种算法的排程结果,我们按照作业逾期天数为评价标准。
1.1 按照最短工期的排程
1.2 按照交货期先后排程
1.3 按照工期和交货期之间的距离排程
1.4 按照CR值排程
CR是英文critical ratio的缩写,可以翻译为重要比率。它的计算方法:交期减去目前日期之差额,再除以工期,数值越小表示紧急程度越高,排程优先级高。
上面4种算法中,最短工期法是最简单的,它不考虑各个作业的交货期先后,先排工期短的作业,再排工期长的作业,但对于我们随便给定的例子,它的总逾期天数是最少的,当然不能说所有例子它的总逾期天数都是最少的,这里面有偶然性。
这个例子也说明了,不意味者计算最简单的算法结果是最差的。企业在生产计划排程时,可以根据其计算能力选择合适的算法。
【2】正排和倒排的选择
生产计划排程时选择了排程的算法之后,是正排还是倒排也是一个重要问题。正排指的是按照预定的算法尽可能紧前安排,倒排指的是尽可能紧后安排。
用上一段的例子,如果是用最短工序算法排程的话。正排的结果如下图:
如果是倒排,如果还没有到最后期限,会是下面的排程结果:
正排的优点是设备和人会得到充分利用,设备闲置或人员休息,也要等生产任务都完成后,可能会因为提前完成生产任务,没有到交货期不能发货而形成库存。
倒排的优点和缺点正好相反,倒排是在最后期限前完成任务,库存最小化,但前期人员和设备可能会有闲置。
一般说来,当企业需要考虑上APS系统解决企业生产计划排程问题时,面临的情况都是多品种,小批量,设备能力不足,需要更合理的调度安排。正排增加库存,倒排浪费产能,如何取舍?
笔者认为:在增加库存和浪费产能之间取舍,浪费产能造成的损失大大超过增加库存,原因有二:
一,设备是有故障的,而故障又是偶发的,无从判断何时设备会出现故障。如果生产安排是时,进行倒排,按照库存最小化的时间点安排,如果在生产过程中出现设备故障,就没有多余的缓冲时间用于检修设备,势必造成延迟了交货期。
二,设备产能浪费属于彻底浪费,如果当月设备能力浪费了,以后也无法再追回;而增加库存造成的浪费则属于一种临时的浪费,如果当月积压了库存,而下个月客户订单增加,正好将这些库存利用,避免了加班。笔者观点,对于一般性行业,正排是正确的选择。
【3】总结
算法并不是复杂性越高,得到的计算结果越好。企业在生产计划排程时,可以结合实际情况,选择合适的排程算法。对于正排还是倒排的问题,对于一般性行业,正排是正确的选择。
分析ERP、APS与MES系统
ERP是……,APS是……,MES是…….,这些概念早已为大家所熟知,谁也改变不了,所以不必多说。本文要做的是对它们所共有的‘生产计划’部分的对比和分析。
首先,我们谈论的是一个关于计算机的话题,那么就有一个最基本的问题:计算机能干什么?对这个问题似乎答案太多了,计算机本身就是一个大千世界,随便就能找出很多种答案。但是告诉你最基本的,计算机实际上只干两件事:读和写。它的所有花里胡梢的功能,最终不过是在用最笨的方式干这两件最简单的事情,速度快而已。
不信吗?仔细想一想,不必去深究它的基本原理,你可能会感觉到,无论上网、看电影听音乐、玩游戏、编写文档、操作数据库,这些的确都不过是在快速地读和写一些数据。但是,计算机还有计算功能,这不象读写那么简单吧。比如你要算25×96,计算机马上给出结果:2400。难道它能事先知道你要算这个数已经把结论保存在那儿了吗?难道这也是读和写的结果吗?没错!这个过程计算机的确只是进行了一些读写操作。不信,你找一支笔来,在纸上手算这个乘法题,然后逐步记录你的整个计算过程。
那么计算机呢,你可能会想,它应该有一些更高明的手段。告诉你,计算机也是这么算的!它同样没有办法直接计算出25×96,而是把它分解成多个个位数字相乘和相加的运算,原理与你在纸上计算过程是一样的。你在计算的时候心里早就背会了一个小九九,计算机也早就把这个九九乘法表存在那里了,当要算5×6的时候,它就去把30调出来写到一个位置,算2×6的时候把12调出来写进去,然后呢,1+1=2,2+3=5这样的个位加法的所有组合也都早就存好了,直接去取结果就可以。看,只要有一个乘法表加上一个加法表,计算机就可以通过简单的读写操作计算出你的任何乘法计算。
这么看来,计算机并不比我们更高明,它用一种与我们手算相同的计算方法。而且,计算机如果有知觉,他根本不知道自己在干什么,有什么实际意义,它只知道按照一个固定的规则进行了一堆的读写操作,不会任何变通,只不过速度比我们快几百万倍,也正因为此,我们错误地感觉到它在计算,似乎比我们更聪明。
回到我们的话题,依此类推,ERP是什么?MES是什么?APS又是什么?无论他们有什么功能,对企业有什么意义,不过都是计算机在读写一些数据而已。你用ERP把今天的订单录到计算机里再查询昨天的销售数据统计出一个报表保存到服务器上,另一台电脑读了这个报表再读BOM算出需要采购哪些物料和生产哪些物料,另一台电脑打印和显示出这些数据……。实际上这一切的本质不过是数据在硬盘和内存中快速的读和写,我们就不厌其烦地为类似这样的计算机读写过程起了无数个名字,ERP、MRP、APS、SCM、CRM、PDM、PRM、MES等等,还产生了无数的管理理论,并为此争论不已。
企业中那么多复杂的工作流程,那么多先进理念,其最底层的工作本质真的只是计算机简单存了一个数字再简单把它取出来吗?计算机真的只是比人快但是没有人聪明吗?先不要忙着下结论。
说到聪明,我们再回到那个乘法问题,一个一般智力的人只会用纸上手算的方法,但如果让一个聪明的算术高手来计算这个题目,他很可能采取一种简化的方法,96是100-4,而4×25刚好=100,于是25×96=25×(100-4)=2500-100=2400。不用繁琐的个位相乘,很快就能得出结果。你看,计算机就没有这么聪明,它必须按照自己固定的步骤走完全部流程,不会随机应变,人比计算机聪明多了。
但是且慢,计算机虽然只会读写,但它有一个很大的优势,它很善于学习,记忆力很好。人只要把一种计算的方法转换成它能接受的读写方式教给它,它就变得和人一样聪明了,而且永远不会忘记,还能很快复制给其他同伴。
一个一般智力的人把乘法手算方式教给计算机,计算机就拥有了乘法计算的功能。而一个更聪明的人利用复杂的条件判断语句可以把简化计算法教会计算机,计算机就拥有了人的这种聪明。这时候,一个智力一般的人不仅在速度上远远不如计算机,而且在方法上也显得没有计算机聪明了。计算机的灵魂背后是人的思维。
这就引出了算法的概念。任何人的手工乘法运算就是一种算法,聪明人的简化运算也是一种算法。计算机聪明与否,全看它所接受的算法是不是聪明的。如果计算机接受的是需要一定专业知识的专家级别的算法,那么计算机就会拥有一个专家级别的聪明,一般聪明人在智力上也根本无法与之相提并论。
现在,我们评价一台计算机是不是聪明就有了一个新的标准:看人教给它的算法是不是很高明。如果这种算法就是我们手工每天都在用的类似乘法运算的那种方法,虽然把这种方法教给计算机也需要很专业的知识,但是,计算机还是并不比我们更聪明,只是比我们快而已;而如果这种算法不是简单到谁都能想到的方法,例如简化乘法运算,那么这台计算机就是一台比较聪明的计算机了。
算法,给了我们一个新的视角来观察ERP。很多时候企业要求的是一个聪明人教会的拥有高明算法的计算机,而不是一个智力一般的人用日常方法教会的计算机。但现实情况,很多ERP公司都只满足于低水平重复性地把日常手工的方法教会计算机,再给这种本质上是手工的方法起一个流行的名称,声称它多么高明。仔细考察,只不过是原来的手工方法和日常工作流程的电子化而已。
而企业管理中需要很多真正高明的算法,所要求的聪明程度远不象前面的简化乘法那么简单,需要很高深的数学知识。这时候绝大多数ERP公司由于自身缺乏对基础数学的深入研究和积累而无能为力,这并非单指国内ERP公司,国外大型ERP公司也并不例外。
企业管理中在复杂的约束条件下要求寻找一个工艺流程的关键路径、寻找一个计划的最早和最迟开始时间、或者寻找目前生产计划中哪个资源最短缺的时候,运筹学、数论、图论、线性代数、模糊数学等等数学科学的最前沿理论已经取代了我们一般的直观分析。计算机解决这类问题已经不能再用简单通用的手工方法或者仅仅使用一般的小聪明全凭速度优势代替手工劳动,而是必须集成最前沿数学理论,拥有一个数学专家级别的专业算法。在整个企业管理中,无疑生产排程部分由于它的错综复杂的条件和对精确结果的需求,是最需要这种专家级别的算法的地方。
有了这些基础概念做为武器,我们可以回到关于ERP、APS、MES的正题上来趟一趟这潭混水了。
一般说MES就是生产执行管理,但它在定义自己的时候喜欢把多多益善的东西都拉进来,于是侵犯了很多软件的传统领地,难免引发一场论战。MES最乐道的是连接企业管理系统和生产控制系统,承上启下弥补了空白。
但是,它声称的每个部分的功能都早有其他专业系统承担。比如资源分配和工序排程,是APS的领地;文件管理和控制一直属于OA的范畴;劳动力管理早有详细到每分钟工作记录的专业人力资源HR系统承担;维修管理则有企业资产管理EAM和专业设备-固定资产管理软件;制造流程控制和管理有SFC(shop floor control);质量管理有集成了更多功能的ERP-QA/QC模块;至于实时数据收集,有无数做硬件的PLC、DCS系统供应商提供与硬件设备的专业数据连接和分析系统,功能只会更强。这些且不说,就连最普通的ERP软件都声称拥有MES的绝大部分功能。看来实在是没有什么空白可以留给MES去弥补。实际的市场状况MES也一直处在多种软件的挤压下在夹缝中艰难生存,特别是它与ERP一直处于一种直接对抗状态。
MES与其他系统的江湖恩怨与本文无关,本文只说MES与APS和ERP互相重合的生产排程这一段内容。对用户来说MES与ERP、APS概念的互相交错,软件商之间激烈争论,让人困惑。到底选择ERP、APS、MES有什么区别?
一般说软件之间的比较,不是看它集成的功能多不多,而是首先要看企业最需要的关键功能是不是有。如果都有,那就需要注意‘有’跟‘有’的差别很大,一个小小的区别可能就是本质的不同,要点就是要看它们的算法哪个更好。一个好的算法可以更深入地解决问题,运算速度快,很容易扩展到其他功能,修改起来方便等等。别的不说,在对比ERP、APS与MES之间的关系时,算法就起到关键作用。
在正常情况下,高级计划排程APS的算法比MES中的详细排程以及资源分配的算法要强很多。而MES中的算法比ERP中的MRP的算法也要强很多。
ERP中的MRP算法实在太简单,就是把平时手工的工作方式电子化,相比而言类似于开发一个乘法运算的难度。因此很多企业不需要MRP在EXCEL上也可以实现相同功能。
而MES的排产功能肯定要强于ERP的生产计划功能。因为如果在这个关键核心功能上不占一定的优势,MES就根本不会有自己的市场份额。但是,它在本质上也只是把一些手工的、经验性的好方法集成进了软件,类似于简化乘法运算,虽然有很大的实用价值,但这与APS的以数学模型为基础的算法相差甚远。
否则,MES开发商就会把这部分拿出来单做成APS出售了,要知道其中的价格差异很大。(当然也不排除某些MES系统集成了APS系统的可能)。
APS系统拥有以数学模型为基础的最强算法,可以满足更高难度、更广泛的需求。但它不是可以直观理解的方法,真正的难点不在于把算法变成软件,而是在于寻找和证明这个算法。因此,各APS公司对其核心算法和数学理论都是保密的,并且申请专利保护。
当然对企业来说,算法也不是唯一的选择依据。一般说,整套系统中的某个功能不如专业系统的功能强大,但是价格低廉,与它集成在一起的功能很多,用起来方便,这是整套系统的优势所在。
ERP的生产管理部分对比MES和APS最简单但也最便宜,一般仅限于简单的物料需求计划。如果企业对生产计划要求比较低,只侧重于较粗物料需求,就可以只选用ERP的生产模块。
MES的排产功能更强一些,但是价格更高。适合于对生产计划要求不太高但是对生产排产管理比较精细的企业。目前国内自称提供MES系统的企业有很多,但其内容差别很大,水平良莠不齐,用户在选择的时候注意比较的关键是算法。从目前出现的趋势看,ERP软件公司倾向于集成MES系统,并与APS系统集成。
APS是功能最强也是最昂贵的软件,适合于多品种、小批量、工艺流程变化很快、对生产计划有很高要求的生产型企业。目前APS开发商都只专注于生产排程功能,不搞其他相关系统。因此APS需要与其他软件集成在一起使用。
目前,国际知名ERP全部都已和某个独立的APS系统集成在一起,常见的如SAP的APO,ORACLE的ASCP。国内用户如果选择了国外ERP软件就可以考虑上它的APS,但是加上大量的定制开发以后,其价格昂贵有可能会超过整个ERP的价钱。
目前国内也有APS系统,主要在特定行业应用,主要是侧重复杂的制造排产调度。在复杂计划优化较弱,但由于价格较低,属于本土化服务,性能价格比要优于国外系统。
综上所述,我们要学会超越一个软件表面上的概念、功能、特点,而以算法作为判断的一个重要标准。这对MES、APS、MRP这样的系统来说尤其重要。