我们在供应链主计划之后,能够推导出各个工厂和生产单位的详细计划。在研究详细计划时,我们必须考虑制造决策的环境,研究怎样从模型中获得具体解决方案。我们研究共同的一些步骤,也就是建立模型和更新生产排程。难点是生产计划和排程模块是由单个计划层次还是由两个层次计划等级来完成,这主要取决于工厂作业的生产类型。
1、生产决策环境
生产计划与排程模块的目的是在相对短的时间间隔内为工厂制定详细的生产计划排程。生产计划排程是指在处理订单所需要生产资源的基础上,为在计划时间间隔内执行的每一份订单规定订单开始和结束的时间。因此,生产排程也指定了在给定生产资源上订单的先后顺序。甘特图(gantt-chart)能够可视化的、形象地描绘生产排程图。
根据所属的行业的不同,生产计划和排程模块的计划时间间隔可以从小时分钟、一天到几周之间。它的“精确”长度取决于几个因素:一方面它至少应涵盖与生产订单的最长批量生产时间相一致的时间间隔;另一方面计划时间间隔又受到己知客户订单或可靠需求预测可实现性的限制。很明显,只要这些计划是“相当”稳定的,也就是说如果它们不会因为发生不可预测的事件(如改变订货量或中断订货)而经常变化,那么在单个生产资源上对订单进行排序是非常有价值的。
对于一些生产方式(如小批量生产)来说,生产计划和排程模块需要在潜在瓶颈上为订单进行排序并安排订单进度。而对于其他生产方式(如加工群组制造技术)来说,对下一时间能力内一系列由生产资源处理的订单进行自动的、时间导向的生产能力检查就足够了。随后订单的排序可以由生产资源的有限约束来自动加载完成。当然,也可以在甘特图上手工交互完成。
计划任务能够也应当分散地利用各个工厂工作人员的专业知识,并结合工厂现有状况来完成(例如,员工的可获得性)。
供应链主计划为执行分散决策单位的生产计划和排程构造了一个框架。生产计划和排程相应的指令通常有:
(1)所使用的加班工作量或额外换班数;
(2)在各个节点上及时获得供应链上游产品的可能性;
(3)有关投入原料(从供应商那儿购买的)的采购协议;
此外,由于供应链主计划对供应链有更广泛的考虑以及其较长的计划时间间隔,它也将给出一些指令。供应链主计划给出的指令有
(1)在计划时期末建立的各种产品的季节性库存量(按库存生产策略);
(2)给定订单交付给供应链下游单位的时间(这一单位可能是下一个生产阶段,承运人或最终客户)。
2、怎样从模型到生产排程
车间作业模型到生产排程的一般步骤:
第1步:建立模型
车间作业模型必须考虑生产流程的特殊性质和相应的详细物料流动情况,目的是以最小成本制定可行的计划。
我们只能明确建立所有现存车间作业生产资源中一部分(也就是那些可能变成瓶颈的生产资源)的模型,因为系统的产出率只受这些潜在瓶颈的限制。
第2步:提取所需数据
生产计划和排程模块使用从下列来源中获得的数据
(1) ERP系统;
(2)供应链主计划模块;
(3)需求计划模块。
在制定生产计划和排程时仅用到从这些模块中获得的一部分信息。因此,我们必须指明哪些数据实际上才是建立指定产品模型所必要的。
第3步:构造一系列假设条件
除了一些从ERP、供应链主计划模块和需求计划模块这样的系统中获得的数据外,在工厂或生产地的决策制定者还可以获取一些有关车间作业目前和未来状况的进一步信息或预测,这些信息在其他地方是无法获得的。同时,还可能存在一些与可实现能力有关的选择方案(如根据灵活的倒班按排)。
因此,决策制定者还必须具有修正数据并相应地建立特定方案的能力。
第4步:制定(最初的)生产排程
自动为指定方案生成(最初的)生产排程。这一步或者由两阶段计划等级-计划和排程完成,或者在一个阶段(计划和排程不分)中完成。
第5步:分析生产排程和交互式修正
如果存在时间能力导向的高级计划,那么在制定详细排程之前,我们首先会分析这个生产计划。尤其是如果这个生产计划不可行,决策制定者将指定一些行为来平衡生产能力(例如,引入加班或给出各种路径)。这将比在单个生产资源(低计划等级)上更改详细排程要简单。不可行的行为如超过订单到期时间或超负荷使用生产资源等,都会显示为生产的预警信号。
同时,通过有效结合决策制定者的经验和知识,为某一方案制定的具体解决措施将会得以改善。然而,为了提供现实的决策支持,我们还需限定必要修正的次数。
第6步:批准方案
一旦决策者保证已经评估了所有可实现的选择,他们将选择出能够反映执行上最吸引人的方案的生产排程。
第7步:实施和更新生产排程
所选择的生产排程将会被导入到:
(1)MRP模块以激发计划;
(2)ERP系统以实施计划;
(3)运输计划模块以寻找完成客户订单后的车辆装运。
MRP模块会使所有瓶颈生产资源的计划行为蔓延到那些用非瓶颈生产资源生产出来的物料或那些从供应商那儿运来的原材料上。此外,我们会为特定订单保留所需的物料。
我们将执行排程,直到某个产生建议修改生产排程的事件的时间点。这个事件可能是新订单进入、设备损坏或者是代表排程的一部分内容已经执行的时间点。
我们很少改变工厂生产的模型。如果模型的结构保持不变并且只影响到数量(例如,一个设备组中设备的数量或一些已知产品的新的变化),那么模型能够通过从ERP系统中下载的数据自动更新。然而,对于像引进具有新特性的新生产阶段这样的变化来说,建议由专家通过手工处理来调整模型。
3、如何建立模型
为了确定(客户)订单完成时间、所需的物料和潜在瓶颈资源,车间作业模型必须和生产流程所有必要的细节结合在一起。生产排程中的时间隔要么很小(如以小时计算),要么就是连续的。
3.1 模型的详细程度
模型能够被限制在一定的操作范围内,这些操作是在(潜在)瓶颈资源上执行的,因为只有这些因素才能限制车间作业的产出。
由于生产计划和排程模块(目前)不打算控制车间作业(这些工作留给ERP系统),我们可以忽略一些细节,如管理订单当前状况的控制点。
在非瓶颈资源上执行的两个连续行为之间的所有处理步骤,在模型中都只是用固定提前期偏置(fixed lead time offset)来代表。这一建议与著名的结论即高级计划产生的提前期仅作为计划结果而不作为先前给定常数并不冲突。在这里,因为不存在等待时间,提前期偏置仅由在前面提到的非瓶颈资源上运行的处理和运输时间构成。
模型能够由相关数据来定义。我们要区分结构数据和需要依赖具体情况的数据。
结构数据(structural data)由下列几项构成:
-地址;
-零部件;
-物料清单;
-工艺线路和相关的操作指令;
-(生产)资源;
-供应商的具体情况;
-建立指标;
-时间表(日历)。
在一个拥有很多工厂(位于不同地点)的供应链中,将所有数据集中于一个特定地点可能是比较占优势的。
我们通常在单层次基础上描述物料清单(储存在物料文件中)。因此,每个零部件号仅与离它最近的上游产品的零部件号有关。我们可以通过连接单个层次上具有代表性的数据在计算机上简单地建立给定零部件的完整物料青单。
每一产品的资源消耗情况,我们都可以从工艺路径和操作指令中获得。对每个订单进行排序和安排都需要一些有关每份订单需要产品的数量和每个产品的资源消耗情况的资料。因此,这两方面组合到一起,就产生了所谓的生产流程模型的概念。
一个生产流程模型至少由一个工序(operation)组成,而每一个工序又包含了一个或几个活动(activities丿。每一工序通常都与一个最主要的生产资源有关。像人力这样的次要生产资源也可以归到活动中去。
各种活动需要输入一些原材料,同时也会生成一些材料作为产出。而我们必须确切指出在哪个时间点上需要输入原料、什么时候生产出材料。在一个工序中各个活动技术上的顺序也称之为优先关系可以用连线表示,就像在项目计划中,各个活动能够由下列关系连接起来一样:
(1)尾一头E-S、尾—尾E-E、头一尾S-E和头一头S-S关系
(2)最大和最小时间距离关系。 ¨ˉ
这一顺序允许我们在各种活动(包括同时执行的活动(相互交叉的:行为))之间建立-个有关顺序时间约束并且非常准确的模型。
一个客户订单所要求的时间、生产资源和原材料可以通过将相关的生产流程模型用所谓的箭头线连接起来得出。箭头线将一个生产流程模型的产出原材料(节点)和与下一个生产流程模型相关的投入原料(点)连接起来。作为结果,从最终的生产阶段开始,触发了一个订单和相应的生产流程模型,并在各自的时间窗内生成有关生产资源和原材料消耗状况的信息。在制定可行的排程时我们可能会直接用到这些时间窗。
工厂的时间表会显示出生产资源工作时间上的停止或其他中断情况。时间表所包含的另—方面信息显示出工厂(或资源)是以一班、两班还是三班的形式运营的。通常高级计划系统会提供几个时间表以供选择。
依赖具体情况的数据会随着工厂当前情况的不同而有所变化。它们包含:
- 初始库存,包括在线库存;
- 生产资源的调整准备状况;
- 在给定的时间间隔内需要处理的系列订单。
由客户指定的运作流程可能包含:
-批量原则;
-优先原则;
-路径的选择。
尽管批量生产原则的理想状态是应当以实际生产状况(像生产资源的使用情况和相关成本)为基础,可是高级计划系统通常都要求提前输入一些(简单)原则。这类原则可能包含固定批量、最小批量或订单之间给定时间内生产批量。我们利用软件可以在给定的系列原则中选择出一个原则,或者在高级编程语言中进行编程。确定某一定资源上订单顺序的原则也是以同样的方式来处理。
如果存在可替代的路线来履行生产订单,那么我们应当期望系统在制定生产排程的过程中能够选择出一个最优的路线。然而,我们的经验是客户必须给出一个“优先”路线。有时候可替代的路径是按等级形式放入系统中的。只有在优先路线不可行时,求解工具才会尝试次优路径,接着第三优路径等。
3.2 模型目标
最终的目标必须明确。这些目标指导着系统寻找出好的(希望也是接近最优的)解决方案。由于这些目标是从生产计划和排程模块中选择出来的,所以我们主要看到的是像最小化下列各项这样的与时间有关的目标:
-生产周期最短;
-总的延迟时间最小;
-最大延迟时间;
-总通过时间;
-总调整准备期
同时会涉及到三个与成本有关的目标,也就是最小化下列三项的总和:
-可变生产成本;
-生产准备成本;
-惩罚成本。
尽管在计划水平上对成本的影响程度是受限制的,我们仍可以设想用货币单位来评价不同路径的选择(如声明订单是标准的或紧急的)。
如果建立了有关软约束(soft constraint)的模型(例如履行按库存生产订单的计划交付时间),那么目标函数也可以包含惩罚成本。
如果决策者想同时追求上面提到的几个目标,那么“理想”的解决方案(也就是每个目标都达到最优状态)通常是不存在的。所以就要寻找一个折衷的解决方案。一个方法是求上述各项目标的加权和。这个混合目标函数可以被视为一个单独的目标来处理,因此,也就可以使用相同的求解方法了。
3.3 解的表达方式
我们有几种可选择的表示模型解的方法,也就是详细的生产排程。它可能只是简单的各种活动的列表,列出在所用资源上执行的各项活动的开始时间和结束时间。这种表达方式可能适合于将结果转换到其他模块中。
决策者通常都很喜欢生产进度表的甘特图。因为可以在甘特图中表示给定时间间隔内工厂所有的生产资源。作为选择,我们也可以集中精力于一个特定客户订单和这份订单各生产阶段的进度。同样,我们也能够把注意力放在单个生产资源和一段时间内它的生产进度表上。这就是订单甘特图和资源甘特图。
如果允许决策者改变生产排程,例如将工序转移到另一种(可替代的)生产资源上,那么平行显示所有生产资源的甘特表是很合适的。
4、更新生产排程
生产计划和排程模块假定所有数据都是确定已知的,也就是说决策状况都是确定的。尽管这是一个理想的假设条件,但对特定时间间隔来说也是合理的。为了处理不确定性因素(像未计划的生产率变化情况或无法预期的生产资源停工期),软件工具可以随时监控工厂中与假设偏离的各种情况,并据此更新订单的预期完成时间。这些变化是否大到需要重新优化排程,取决于决策者的判断。目前的软件工具会提供可替代方案的广泛的制定和测试(也称为模拟(simulation ),以提高判断能力,这些行为都是在排程实际交给工厂以前完成的。
在这里我们要提到的另一个特征是两步计划程序:也称为增量计划。假定新订单进入,如果这一订单落入生产计划和排程的计划时间期内,那么这一新客户订单的活动会被插入到所需生产资源的已定顺序订单中。在现有排程中寻找时间差,以保证只对订单进行小的时间上的调整。如果排程的可行性可以保持,那么我们就可以推导出新客户订单的计划交付时间,并将它送达客户。
由于这个(最初的)排程可以通过不同的订单顺序来改进,我们有时会考虑重新优化排程,目的是要产生新的成本更低的订单顺序。
制定新的订单排序方法是非常耗时的,并且通常会带来一些紧张。由于新计划与前面制定计划相比,相关工序的起始时间和生产量会发生变化,我们反对这种紧张。紧张会增加花费在工厂上的精力-例如需要较早地投入一些原材料,而这些原材料又必须与供应商核实。为了减少这些紧张,我们通常会将—种资源上“后几个订单”稳定或固定,也就是它们的排程是固定的,不再参与重新优化。那些起始时间落入给定时间间隔(称为冻结时间跨度)的所有订单都会被固定。
5、计划层次和限制的数量
5.1 生产计划和排程模块的计划层次
生产计划和排程的软件模块既允许在单个计划层次上也可以通过两层次计划等级来制定生产排程。因此,我们将要讨论这两种方法的正面影响和反面影响。
生产计划和排程模块的分解问题应依赖于由生产过程和操作重复性决定的生产类型。在一个工厂内可能会存在几个生产单位,每一单位都对应着一种特定的生产方式来满足供应链的需求。加工群组生产和流水线生产是其中两种著名的生产方式。
在加工群组生产中,大量具有相同功能的设备放在同一车间,一份订单的完成通常存在许多可选择的路径。在多阶段生产流程中最终产品通常需要许多项运作。为了减少调整准备期成本和时间,特定运作的需求可以组合成批量。
为了减轻计算上的负担,提供有效的决策支持,我们将总决策问题分为两个(等级)计划层次。其中较高的计划等级是以日或周时间能力单位为基础的,同时将具有相同功能的资源组成资源组。这些大的时间能力单位可以避免排队。因此,批量决策和能力负担的减轻就很容易了。根据高计划等级所提供解决方案的结构,低计划等级将把订单分配到属于资源组的各个资源。(如机器设备)上,并进行排序。将计划任务分为两个计划层次还需要为订单的完成路径增加一些额外能力和灵活性。
对于具有依赖于顺序的调整准备期的(自动)流水线生产来说,将计划层次分成两级是不行的。一方面使用大计划时间能力单位的计划等级不适合依赖于顺序的调整准备成本和时间的建模;另一方面,排序决策和批量决策在这里是不能分割的,因为通常流水线的利用率是非常高的,并且各种产品(批量)会互相争夺那些不充足的生产资源。幸运的是,我们通常只考虑一个到三个生产阶段和为数不多的产品(或产品系列),所以生产计划和排程能够在单计划层次上运行。
5.2 计算量的限制
为了得出最优的生产排程,我们必须牢记,通常存在很多种可替换的方法用来对一种生产资源处理的订单进行排序(但其中只有少数是可行的)。理论上讲,对n个需要在一种生产资源上处理的订单来说,我们应当评价n!种不同的顺序。对于五个订单来说,我们可以很快地完成所有的组合的检查(5!=120),然而要检查十个订单的所有组合(10!)就需要花费大量的时间,并且根本不可能在合理的时间限制内完成20个订单的所有组合的检查(20!)。此外,如果我们能够平行的多个资源中有其它的选择,可行的排序方法数目会迅速增加。尽管已经开发了强大的求解算法来减少寻找好的解所需评价的解的数量,随着排程中订单数量的增加,计算量也会迅速增加。
幸运的是,通常我们不需要从头制定一个全新的生产排程,因为先前的排程的一部分通常是固定的(如落入封冻期内的订单)。同样,将生产计划和排程分解成两个计划层次也会减少在低计划层次上需要制定的可行顺序的数量,因为在大时间容量内分配订单的行为需要在高计划层次上执行。同样,决策者所做的增量计划或部分顺序的重新优化也会限制计算量。
摘自APSS协会《研究APS系统的生产计划与排程运用的白皮书(2)》