2003-02-03
摘要:高级计划系统(APS,AdvancedPlanningSystems)作为ERP的补充,用于协调物流、开发瓶颈资源和保证交货日期。APS应用各种优化技术,并根据企业的商业目标来改进计划。
供应链管理(SCM)涉及企业间的集成以及在产销网络中协调物流和信息流的各个方面。作为企业信息中枢的ERP系统,现在已经在许多企业中用于作业处理和定单执行。高级计划系统(APS,AdvancedPlanningSystems)作为ERP的补充,用于协调物流、开发瓶颈资源和保证交货日期。APS应用各种优化技术,并根据企业的商业目标来改进计划。APS包括需求和供应计划、运输和生产计划排程等各种供应链计划模块,本文主要介绍APS中生产计划排程(ProductionPlanningandScheduling)模块的基本原理[1]。
决策状况描述
生产计划排程的目的是为车间生成一个详细的短期生产计划。排产计划(Productionschedule)指明了计划范围内的每一个定单在所需资源上的加工开始时间和结束时间,也即指出了在给定资源上定单的加工工序。排产计划可以通过直观的甘特图(Ganttchart)形式给出。
排产计划的计划间隔可以从一天到几周,取决于具体的工业生产部门。合理的计划长度取决于几个因素:一方面,它至少应当涵盖与一个定单在生产单元中最大的流动时间(flowtime)相对应的时间间隔;另一方面,计划间隔受到已知顾客定单或可靠需求预测的可用性限制。很显然,只有当排产计划适度稳定时,在一个资源上进行定单排程才是有用的。也就是说,它们不应受不期望事件经常变化的影响(如定单数量改变或中断)。
对某些生产类型(如jobshop),生产计划排程需要对(潜在)瓶颈资源上的任务定单进行排序和计划;而对另一些生产类型(如成组技术),生产计划排程要能自动地、按时段检查资源组的能力,看其是否能够在下一个时间段内完成成组加工的一组定单。然后,可以手工排序这组定单在下一个时间段内的加工次序。
排产计划任务能够而且也应当分散来做,这样可以利用每个地点人们的专业知识和车间当前状况的知识(例如人员的可用性)。
生产计划排程受到上层主生产计划的约束,主生产计划设立了在分散的决策单位中执行生产计划排程的框架。从主计划中可获得的相应指导包括:使用超时或加班的数量;在不同时间点上来自供应链上游设施物料项的可用性;涉及来自供应商输入物料的采购协议。此外,由于主生产计划在供应链上有更宽的视点和更长的计划区间,从中我们还可以得到:
计划结束时需要建立的各物料项的季节性库存量;
交付给供应链下游设施的定单截止日期(下游设施可以是紧接着的下一级生产单位,分销商或最终顾客)。
排产计划生成
由车间模型生成排产计划的一般程序可简单地描述为下面6个步骤(如图1所示)。
1、建模
车间模型必须详细地捕捉生产流程的特征和相应的物流,以便以最小的成本生成可行的计划。
由于一个系统的产出率只受潜在瓶颈资源的限制,因此,我们只需对车间现有全部资源的一部分–也即那些可能成为瓶颈的资源,建立一个清晰的模型。关于建模方法的细节我们将在后面进一步阐述。
2、提取需要的数据
生产计划排程使用的数据来自ERP系统、主生产计划和需求计划。生产计划排程仅利用这些模块中可用数据的一个子集,因此,在建立一个给定生产单元的模型时,必须指明它实际需要哪些数据。
3、生成一组假定(生产状况)
除了从ERP系统、主生产计划和需求计划这些数据源中接收的数据之外,车间或生产单位的决策者或许对车间当前或未来的状况会有更进一步的知识或期望,这些信息在其它地方(如软件模块中)是不能得到的。再者,对车间的可用能力或许也可以有多种选择(如柔性的倒班安排等)。因此,决策人员必须有能力修改数据和建立某种生产状况(见图1中的第三步,点划线框表示这一步必须由决策人员执行,并且是可选的)。
4、生成一个(初始)排产计划
在有了模型和数据之后,就可以针对给定的生产状况,利用线性规划、启发式算法和基因算法等各种复杂的优化方法来生成排产计划。这项工作可以一步完成,也可以通过两级计划层次(先综合的生产计划,后详细的排产计划)完成。
5、排产计划分析和交互修改
如果通过两级计划层次完成,也即先生成综合资源的上层生产计划。那么,在生成一个详细的排产计划之前,人们或许首先要对这个生产计划进行分析。特别地,如果生产计划不可行,决策人员可以交互地指定一些计划途径来平衡生产能力(如增加班时或指定不同的加工路径)。这或许要比修改在单个资源上的加工工序(下层排产计划)更加容易。
APS采用了例外管理(Management
Byexception)的技术,如果出现问题和不可行性(如超过定单交货期或资源过载),APS就会发出警告(alerts)。这些警告首先被“过滤”,然后,正确的警告被传递到供应链中正确的组织单位。
此外,针对一种生产状况产生的排产方案还可以通过结合决策者的经验和知识交互地改进。当然,为了提供真正的决策支持,必要的修改次数应当受到限制。
6、生产状况核准
当决策人员确定已经评估了所有可选方案时,他/她将选择那个体现最佳生产状况的排产计划去执行。
7、执行和更新排产计划
决策人员选定的排产计划将被传递给:MRP模块(分解计划)、ERP系统(执行计划)和运输计划模块(在顾客定单完成时安排装运车辆)。
MRP模块把在瓶颈资源上计划的所有活动分解成在非瓶颈资源上生产的那些物料或由供应商交付的物料;此外,对某些加工定单所必需的物料也将被预定。
排产计划将持续执行到某个事件信号发生时才进行更新,也即直到修改一个排产计划看来是可取的时候(见图1中的LoopII)。这个事件可以是一个新定单的到来、机器故障或冻结的计划部分已执行完毕(后面我们还将对排产计划的更新作详细讨论)。
改变车间生产模型的情况不太经常(如图1中的LoopI)。如果结构保持不变和只是数量上受到影响(例如一个机床组中的机床数或某些已知产品的新变种),那么,通过下载ERP系统中的数据,APS能自动更新模型。但当变化很大时(例如具有某些新特征的新生产阶段的引入),那么,由专家对模型进行手动调整则是可取的。
下面我们将对车间生产流程模型的建模方法作更详细的阐述。
APS中生产计划排程的基本原理: 图1、排产计划的一般步骤
生产流程建模
车间模型必须结合所有必要的生产流程细节来决定顾客定单的完成时间,模型需要的输入来自有关的物料和潜在的瓶颈资源。排产计划中每一步的时间间隔通常很小(如几个小时),有时甚至可以是连续的。
1、模型
我们可以把建模的范围限制在(潜在)瓶颈上执行的运作,因为只有这些资源限制了车间的产出。由于生产计划排程并不打算控制车间(这个任务留给了ERP系统),一些车间的细节(如监视定单当前状况的控制点)可以被忽略。
在模型的两个连续活动之间,在非瓶颈资源上执行的所有流程步骤都只被表达为固定的提前期差度(fixedleadtimeoffset)。这种处理方法与众所周知的“高级计划给出提前期只是作为计划的结果而不是一个事先给定的常数”这一叙述并没有矛盾。在这里,提前期差度仅包括前述非瓶颈资源上的加工和运输时间,因为等待时间不会存在。
模型可以通过关联的数据来定义,这些数据可分为结构数据(structuraldata)和状况相关数据(situationdependentdata)。
结构数据包括:生产地点,工件,物料单,工艺路径和相关的操作指令,(生产)资源,供应商清单,准备时间矩阵,和时间表(工厂日历)。
对车间分布在不同地方的一个大型供应链,把所有数据归集到一个专门地点或许会有好处。这样的话,一个零件就可以通过它的生产地点来识别,尽管它在顾客眼中是一样的。
物料清单通常是基于单层描述(存放在一个物料文件中),也即每一个零件号只连接到它下一层物料的那些零件号。一个给定零件的完整物料清单很容易在计算机上通过连接这些单层表达来构造。
每个工件的资源消耗可以从工艺路径和操作说明中得到。每个定单的工件数以及每个工件的资源消耗是计算单个定单顺序和排程所必须的。因此,可以用生产流程模型(PPM,ProductionProcessModel)来清晰地表达物料加工路径和生产操作。
图2给出了一个PPM的例子,它描述了一个特定尺寸和商标的瓶装蕃茄酱的两级生产流程。第一个PPM表达液体蕃茄酱的生产,包括清洗搅拌池,搅拌配料,和等待装瓶。一旦蕃茄酱准备好了,它将在24小时内被装瓶。蕃茄酱可同时用于不同尺寸的瓶子,每一种尺寸都将对应一个PPM。
APS中生产计划排程的基本原理: 图2、两级蕃茄酱生产流程模型(PPM)
一个PPM至少由一个运作(operation)组成,而每个运作包含一个或几个活动(activities)。一个运作总是与一个基本资源相关(如搅拌池)。二级资源–比如人员–也可归属于一个活动。活动或许要求一些输入物料并能产生一些物料作为输出。当然,我们必须指明什么时候需要输入物料和什么时候输出物料可用。在一个运作中,活动的技术顺序(也称为优先关系)可以用箭头线表示,就如同在项目计划活动中一样,可以用结束开始,结束结束,开始结束,开始开始关系和最大最小时间距离来连接。这就允许非常准确地建立包括平行执行活动(重叠的活动)在内的两个生产活动之间的时间约束模型。
一个顾客定单的计时、资源和物料需求可以通过有向标界线(peggingarcs)连接相关的PPMs导出(见图3中的粗体线和虚线)。有向标界线把一个PPM的输出物料(节点)与后一级PPM的输入物料(节点)连在一起。结果,从最后一级生产流程开始展开一个定单(如图3中的定单C505X)和相应的PPMs,就可以在各时间窗中生成关于资源和物料消耗的信息。这些时间窗可直接用于成生可行排产计划[2]。
工厂日历指明了休息日和其它资源工时的中断,另外还包括车间(或资源)是否以一班,两班或三班运作的信息。高级计划系统(APS)通常提供几个典型日历可供选择。
图3、标界线:连接两个生产流程模型(PPMs)
状况相关数据随车间当前的状况而变,它包括:初始库存(含在制品库存)、资源的准备状态、和给定时间间隔内要加工的一组定单。由用户指定的运作规则数据包括:批量规则,优先规则和加工路径选择。
尽管建立批量规则最好是根据实际生产情况–例如资源的利用和相关成本的情况,但APS通常要求事先输入一些简单规则。这些规则可以是固定批量、最小批量或给定定单间隔时间的批量。APS软件包或是提供一组规则可供选取,或是以高级编程语言的形式来编写它。在某个资源上决定定单优先次序的规则以类似的方式处理[3]。
如果执行一个生产定单存在可选路径,那么人们会期望APS在生成排产计划的过程中选择最佳路径。但经验表明,用户得自己选择一个适当的路径。有时可选路径是作为一个优先列表输入,只有当一个宁愿的路径导致不可行计划,求解器才会去试第二个最佳路径,然后试第三个最佳,等等。
2、目标
最后还要指定一个优化目标。这些目标指导寻找一个好的、期望能接近最优的计划方案。在生产计划排程模块中选择优化目标时,我们看到主要有下面一些面向时间的目标:
Makespan,完成所有定单任务所需要的时间。使makespan最小是多机床任务排序问题中常见的优化目标;
Lateness,定单任务完成时间和它的到期时间之差。使所有定单的lateness总和最小,或使单个定单中最大的lateness最小,是常见的排程目标。
Flowtime,一个定单任务在生产系统中花费的时间。使所有定单的flowtime总和最小也是一个优化目标。
Setuptime,每个定单任务的生产准备时间。使所有定单的setuptime总和最小也可以作为一个优化目标。
另外,还有三个与成本相关的目标,分别是:使可变生产成本总和最小;使生产准备成本总和最小;和使惩罚成本总和最小。
尽管在排产这个计划层对成本的自由度影响很有限,但我们可以看到,对于不同加工路径的选择(例如,是安排标准定单或是紧急定单),也还是要以货币的术语来评估。
如果需要对“软约束”建模(例如,为备货生产定单履行计划的交货时间),我们可以把惩罚成本包含在目标函数中。惩罚成本也称为缺货成本,它是当需求出现时没有足够的现货来满足需求所招致的成本。
如果决策人员想要同时追求上面几个优化目标,使每个目标都达到最优,这样“理想”的解答通常是不存在的。那么,只好寻求一个妥协方案。一种方法是建立上面单个目标的加权和,这个组合目标函数可以象单目标函数一样对待,因此,可以应用同样的求解方法[4]。
3、解的表达
表达一个模型的解也即详细的排产计划,有几种选择。它可以简单地表达为一个任务清单,上面列出了每个任务在分配给它的资源上的起始和完成时间。要把排产计划传送到其它模块中,这是最恰当的表达方式。
决策人员通常更喜欢排产计划以甘特图表达(如图4所示),用甘特图可以在一定的时间间隔上平行地显示所有资源。人们既可以专注于一个指定顾客定单和它在相应生产阶段的排程,也可以把注意力集中在单个资源及其在时间上的排程。
如果决策人员允许交互地改变排产计划,例如把一个运作交互地移到另一个资源,那么以平行方式显示所有资源的甘特图是最好的表达。
下面我们再来看看更新一个现有排产计划的一些选择。
排产计划更新
生产计划排程假定所有数据是确定已知的,也即决策状况是确定的。尽管这是一个理想的假设,但对一些时间段还是可以进行调整。为了处理不确定性(例如非计划的生产率变化或未预料的资源停工),软件工具允许监控人们假定发生在车间的变化,并生成一个更新了的期望的定单完成时间。这些变化是否大到需要重新优化排程将基于决策者的判断。在一个计划实际交付车间实施之前,可以通过提供大量的可选状况的生成和测试能力来帮助决策者的判断。这种方法也称为仿真,目前的APS软件工具都提供仿真手段(见图1的第3到第5步)。
在这里要提到的另一个特征是两步计划方法,也称为增量式计划。假定有一个新的定单到来。如果它落在生产计划排程的计划范围内,这个新顾客定单的活动可以插入到它所需资源上已排序好的定单中。在现行排产计划中寻找时间空隙,以便新定单的排程只须做微小的调整。如果能维持排产计划的可行性,那么就能导出新定单的一个计划交货期,并送回给顾客。
由于上面这一基本排程可以通过不同的定单顺序来改进,所以重新优化经常会被考虑,以便通过新的排序来减少成本。
下面我们就来举例说明。假定有4个定单需要在某个机床上排程,表1给出了定单交货时间,优化的目标是使顺序相关的生产准备时间总和最小。如果实际开始时间在100(时间单位),所有定单的加工时间相同(1个时间单位),顺序相关的准备时间是0,1/3,2/3或1个时间单位(表2给出了准备时间矩阵)。那么,最优的排程显然是ABCD(如图4所示)。
在开始加工定单A之后,我们被要求检查是否能够接收一个交货时间为107的新定单E。假定不允许因为一个新(紧急)定单而中断一个已经开始执行的定单,那么我们可以检查在完成定单A,B,C或D之后,把工作E直接插入现行排程。由于在定单A和E这个子顺序之间存在一个正的准备时间,插在A之后会违反定单B的交货期,因此是不可行的。依理可以找到三个可行排程,其中可选方案c)具有最小的准备时间总和。因此,交货期为107的新定单E可以被接受(假定定单E值一个时间单位的附加生产准备时间)。
当重新执行排程优化时,我们可以得到一个新的包括定单E的可行排产方案,它减少了1/3的生产准备时间(如图6所示)。
生成一个新的定单排程是费时的,并且通常会导致一些紧张(nervousness)。这些紧张是因为与先前的实际计划相比改变了定单开始的时间和生产的数量。紧张可能导致车间的额外工作,例如某些输入物料或许要更早交付,而这又要与供应商一起检查。为了减少紧张,通常可以把在一个资源上接下来的几个定单固定,也即它们的加工顺序是固定的而不作为重新优化的一部分。开始时间落在一个给定时间段(称为冻结范围)的所有定单都将被固定[5]。
结束语
假定已经生成了主生产计划,我们就可以为不同的车间和生产单元导出详细的排产计划。生产计划排程是在一个计划层中完成还是分两个计划层次来做,很大程度上取决于车间的生产类型。在一个资源上的定单排序通常有许多可选方案,要找到一个最优的排产计划,对一个资源上的n个定单理论上要评估n!种不同的排序。尽管强有力的求解算法已经开发出来减少寻找好的方案所要评估的解的数量,优化的计算量仍会随着排程定单的数量而急剧增加。幸运的是生成一个排产计划通常不必从零开始,因为先前计划的一部分已经是固定的(例如落在冻结区中的定单)。同样,把生产计划排程分为两个计划层次来做也减少了在低计划层上生成可行定单顺序的数量。此外,增量式计划或由决策者指定的部分排程的重新优化也限制了计算量。
参考文献
[1]Hartmut Stadtler,Christoph Kilger(Editors),(2000)Supply Chain
Managementand Advanced Planning–Concepts,Models,Software and Case Study,
Springer, NewYork.
[2]Vollman,T.E.,Berry,W.L.,Why
bark,D.C.,(1997)Manufacturing planning and controlsystems, 4thed., New
York.
[3]Silver,E.A.,Pyke,D.F.,Petersen,R.,(1998)Inventory
Managementand Production Planningand Scheduling, 3rded., NewYork.
[4]Tamiz,M.,(1996) Multiobjective programming and
goalprogramming, theories and applications, Lecture Notesin Economics and
Mathematical Systems, Vol.432, Berlin.
[5]姜铁虎,供应链高级计划系统(APS),2001,eworks.
|