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采用了例外管理(ManagementByexception)的技术,如果出现问题和不可行性(如超过定单交货期或资源过载),APS就会发出警告(alerts)。这些警告首先被“过滤”,然后,正确的警告被传递到供应链中正确的组织单位。此外,针对一种生产状况产生的排产方案还可以通过结合决策者的经验和知识交互地改进。当然,为了提供真正的决策支持,必要的修改次数应当受到限制。6、生产状况核准当决策人员确定已经评估了所有可选方案时,他/她将选择那个体现最佳生产状况的排产计划去执行。7、执行和更新排产计划决策人员选定的排产计划将被传递给:MRP模块(分解计划)、ERP系统(执行计划)和运输计划模块(在顾客定单完成时安排装运车辆)。MRP模块把在瓶颈资源上计划的所有活动分解成在非瓶颈资源上生产的那些物料或由供应商交付的物料;此外,对某些加工定单所必需的物料也将被预定。排产计划将持续执行到某个事件信号发生时才进行更新,也即直到修改一个排产计划看来是可取的时候(见图1中的LoopII)。这个事件可以是一个新定单的到来、机器故障或冻结的计划部分已执行完毕(后面我们还将对排产计划的更新作详细讨论)。改变车间生产模型的情况不太经常(如图1中的LoopI)。如果结构保持不变和只是数量上受到影响(例如一个机床组中的机床数或某些已知产品的新变种),那么,通过下载ERP系统中的数据,APS能自动更新模型。但当变化很大时(例如具有某些新特征的新生产阶段的引入),那么,由专家对模型进行手动调整则是可取的。下面我们将对车间生产流程模型的建模方法作更详细的阐述。生产流程建模车间模型必须结合所有必要的生产流程细节来决定顾客定单的完成时间,模型需要的输入来自有关的物料和潜在的瓶颈资源。排产计划中每一步的时间间隔通常很小(如几个小时),有时甚至可以是连续的。1、模型我们可以把建模的范围限制在(潜在)瓶颈上执行的运作,因为只有这些资源限制了车间的产出。由于生产计划排程并不打算控制车间(这个任务留给了ERP系统),一些车间的细节(如监视定单当前状况的控制点)可以被忽略。在模型的两个连续活动之间,在非瓶颈资源上执行的所有流程步骤都只被表达为固定的提前期差度(fixedleadtimeoffset)。这种处理方法与众所周知的“高级计划给出提前期只是作为计划的结果而不是一个事先给定的常数”这一叙述并没有矛盾。在这里,提前期差度仅包括前述非瓶颈资源上的加工和运输时间,因为等待时间不会存在。模型可以通过关联的数据来定义,这些数据可分为结构数据(structuraldata)和状况相关数据(situationdependentdata)。结构数据包括:生产地点,工件,物料单,工艺路径和相关的操作指令,(生产)资源,供应商清单,准备时间矩阵,和时间表(工厂日历)。对车间分布在不同地方的一个大型供应链,把所有数据归集到一个专门地点或许会有好处。这样的话,一个零件就可以通过它的生产地点来识别,尽管它在顾客眼中是一样的。物料清单通常是基于单层描述(存放在一个物料文件中),也即每一个零件号只连接到它下一层物料的那些零件号。一个给定零件的完整物料清单很容易在计算机上通过连接这些单层表达来构造。每个工件的资源消耗可以从工艺路径和操作说明中得到。每个定单的工件数以及每个工件的资源消耗是计算单个定单顺序和排程所必须的。因此,可以用生产流程模型(PPM,ProductionProcessModel)来清晰地表达物料加工路径和生产操作。图2给出了一个PPM的例子,它描述了一个特定尺寸和商标的瓶装蕃茄酱的两级生产流程。第一个PPM表达液体蕃茄酱的生产,包括清洗搅拌池,搅拌配料,和等待装瓶。一旦蕃茄酱准备好了,它将在24小时内被装瓶。蕃茄酱可同时用于不同尺寸的瓶子,每一种尺寸都将对应一个PPM。图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总和最小也可以作为一个优化目标。另外,还有三个与成本相关的目标,分别是:使可变生产成本总和最小;使生产准备成本总和最小;和使惩罚成本总和最小。尽管在排产这个计划层对成本的自由度影响很有限,但我们可以看到,对于不同加工路径的选择(例如,是安排标准定单或是紧急定单),也还是要以货币的术语来评估。如果需要对“软约束”建模(例如,为备货生产定单履行计划的交货时间),我们可以把惩罚成本包含在目标函数中。惩罚成本也称为缺货成本,它是当需求出现时没有足够的现货来满足需求所招致的成本。如果决策人员想要同时追求上面几个优化目标,使每个目标都达到最优,这样“理想”的解答通常是不存在的。那么,只好寻求一个妥协方案。一种方法是建立上面单个目标的加权和,这个组合目标函数可以象单目标函数一样对待,因此,可以应用同样的求解方