当作业共享设备时,单一平均周期时间为何失效
用每道工序一个平均周期时间构建的计划,无法说出哪台设备运行哪项作业、何时运行、竞争如何化解。四个隐藏的效应说明了原因,以及设备级建模改变了什么。
你无法向车间解释的计划
你的计划为每道工序保留一个数字:电子表格列里的一个周期时间、ERP 的标准分钟数、以每小时单位数计的一条产线速度。无论是每单位的时间还是它的倒数速率,它都是一个代表这道工序的数字。该工序上的每一项作业都从它那里取得时间。到了车间,这个数字就撑不住了。作业运行的时间比计划说的长,或它在计划显示为空的地方等待,于是自然的结论是数据坏了或运气不好。通常两者都不是原因。问题在于抽象本身:一个数字无法承载哪台设备运行哪项作业、何时运行,或共享设备池的竞争如何化解。一旦一道工序有了以不同速率运行、以不同方式换线、或遵循不同工作日历的设备,这个单一平均值就再也代表不了这道工序。
一道有两台设备的工序
取一个带两台设备的小型假设工序。设备 A 以每小时 100 单位运行,设备 B 以每小时 60 单位运行。计划员录入每台设备 80 单位每小时的单一平均值,因为计划为每道工序保留一个数字。一项 10,000 单位的作业需要这道工序。表 1 承载了整个例子。其中的每一个数字都是为这次演练虚构的;没有一个经过测量。
表 1. 假设的两设备工序(仅供说明)
| 数量 | 值 |
|---|---|
| 设备 A 产线速度 | 100 units/h |
| 设备 B 产线速度 | 60 units/h |
| 计划员的平均速率 | 每台设备 80 units/h |
| 平均计划中的工序产能 | 160 units/h(2 × 80) |
| 作业规模 | 10,000 units |
| 该作业的计划时长 | 62.5 h |
| 作业只在设备 A 上 | 100 h |
| 作业只在设备 B 上 | 167 h |
| 在 B 上、紧接不同产品族之后的换线 | 90 min |
平均计划的 62.5 小时是 10,000 除以 160:它把作业对着整个工序计时,像对一个 160 units/h 的产能桶一样,把作业拆分到两台设备上。它没有按每台设备 80 units/h 的平均值对着单台设备给作业计时,那会是 125 小时;这个例子中没有哪台设备以 80 units/h 运行。作业只在设备 A 上要 100 小时,在 B 上要 167 小时(10,000 除以 60,四舍五入到整小时)。B 上 90 分钟的换线被单独列出,让换线效应有自己的一行。
效应 1:作业实际落在哪台设备上
在一道设备以不同速度运行的工序上,同一项作业在每台设备上的时长不同。平均化把两台设备折进一个数字,而这个数字哪台都不匹配。计划自己的计时就显示出差距:它给 10,000 单位的作业 62.5 小时,因为它按工序合并的 160 units/h 产能来读作业。生产排程则必须把作业放在一台设备上、按它的真实速率:在 A 上 100 小时,在 B 上 167 小时。超时不是数据错误;它是合并平均值与生产排程实际会用的那台设备之间的差距。计划甚至说不出是哪台设备。设备分配,这个生产排程之所以存在的决策,在两台速率变成一个数字时被抹掉了。
效应 2:每台设备何时空闲(竞争)
两项都需要设备 A 的作业在同一时钟时刻竞争它:一项在另一项结束时开始,两者之间可能有一次换线。在平均计划里,工序是单个 160 units/h 的桶,因此两项作业看起来并排推进。在车间里,设备 A 一次只处理一项作业,因此第二项作业排进队列。下游工序随后从一个设备池无法兑现的开始时刻被计时,因为计划在等待将要发生的地方没有显示等待。竞争是设备级的:一项作业在它被分配的那台设备上等待,只有那台设备的占用才产生等待。用每道工序一个数字构建的计划没有地方容纳队列,所以队列照常发生,只是不在纸面上。
效应 3:只有设备的顺序已知时才存在的换线代价
换线时间属于一台设备,也属于顺序中的一对产品族:设备 B 切换要多久,取决于下一项作业之前 B 上运行的是什么。直到一台设备持有一串作业,这个代价都不存在。按工序的平均值无法容纳它,因为平均值是在任何设备或顺序存在之前计算出来的;一个数字里没有地方让这些分钟附着。结果是生产时间被低估:计划显示运行小时数,省略了换线分钟数,恰好缺了它从未排程进去的切换。每当 B 的顺序把两个产品族放在一起,B 上 90 分钟的换线就是真实的设备时间,而一份只持有平均值的计划无从知道这些分钟存在。
效应 4:逐设备的可用性
设备携带工作日历:计划维护、清洗窗口、假日停机、班次之间的间隔。一台星期四停机的设备当天无法处理作业,而一台对设备建模的生产排程会绕开缺口。每道工序一个平均速率没有钩子容纳这个事实。平均值无法区分两台设备都在运行的星期四与其中一台停机的星期四,因此计划把作业装进不可用的窗口,承诺的完工时间就滑落了窗口的长度。设备池保留它的工作日历;计划没有。
平均数在什么时候是合理的
这些都无损平均数的价值。在正确的视野上,它是做产能检查的合适单位。对工序是否具备下月产量的足够产能这样的中期问题,一个汇总速率是合理而标准的工具;分级规划正是建立在这种模式之上,中期汇总、向生产排程方向分解。这里的主张刻意更窄:在一个异构工序上,平均数对设备级的有限产能生产排程而言是错的单位,而那种生产排程的全部职责就是说出哪台设备运行哪项作业、在何时运行。
设备级建模改变了什么
修复改变的是数据的层级,而不是数据本身。平均数背后那些标准时间与产线速度已经存在。按设备、按产品族录入它们,每台设备带上自己的换线时间和自己的工作日历,就把同样的数字放到了能决定设备分配的地方。排程算法随后把作业放到设备上,竞争不再不可见:同一台设备上的作业按时间排队,生产排程在它们之间最小化总生产时间。
对阅读生产排程的人来说,变化的最后一步是分组。按设备给生产排程分组,让每台设备成为自己的泳道,运行时长、相邻作业之间的换线、等待与停机缺口都出现在它们发生的地方。上述四个效应之所以不可见,是因为计划没有设备可以附着;每台设备一条泳道,就是它们变得可见的地方。一位车间主管能逐台设备指过去的生产排程,是一份已经说出自己设备的生产排程。产品的指南详细覆盖了录入与阅读的步骤。
要点:有限产能生产排程会说出它的设备
每道工序一个数字,是做产能检查的正确单位,却是必须决定哪台设备运行哪项作业的生产排程的错误单位。一旦一道工序的设备彼此不同,这四个效应就是一个单一平均值无法表示的;问题是抽象,不是数据。计时反映真实设备池的生产排程,是一份对设备池建模的生产排程:它的设备、速率、换线、工作日历与停机,以及生产排程之内工序之间流动的物料。在被建模的设备池之外,不做任何主张。