熟肉加工是一种典型的混合流水车间(Hybrid Flowshop)环境,生肉依次经过 batch(批次)和 flow(连续流)工序——腌制、烹饪、冷却、切片和包装——具有不同的产品工艺路线和过敏原驱动的换线约束。本指南向生产计划员和运营经理展示如何在 Schantt 中对其熟肉加工厂进行建模,使排程算法能够自动排序批次、分配设备并遵守卫生窗口。
本指南以一家基于熟肉加工行业研究构建的虚构综合性公司为例;所有名称、参数和数据均为示意用途。
行业背景
熟肉加工通过一系列批次和连续流工序,将生肉转化为即食产品。整块肉产品(如火腿和烤牛肉)在烹饪前先经过盐水注射和长时间滚揉,而乳化产品(如法兰克福香肠)则先绞碎和灌装再进入烟熏炉。培根则遵循另一条路径,包含长时间的烟熏、压制成型,然后切片。尽管前端工艺路线不同,所有三种产品族都在烹饪工序汇合,并经过相同的下游冷却、切片和包装工序——这使其成为典型的混合流水车间(Hybrid Flowshop)环境。
一个典型的中小企业工厂每年处理 3,000–7,000 吨肉类,涵盖多个产品族和数十种 SKU。烹饪在批量烟熏炉或蒸汽烤箱中进行,每炉容量为 500–2,000 kg,周期时间为 2–8 小时,具体取决于产品类型和厚度。烹饪完成后,每个产品必须冷却至 ≤4°C 方可切片——这是一个被动等待过程,需 2–6 小时,具体取决于产品质量和冷却设备容量。高速切片机运行速度为 200–400 kg/小时,包装线以 150–300 kg/小时的速度进行裹包或真空密封。烹饪和切片工序之间的换线时间为 20–90 分钟,由过敏原清洁要求驱动——整块肉产品中的大豆基盐水与乳化香肠中的乳蛋白之间的切换。
Sterling Valley Meats 在 4,500 m² 的工厂中拥有 85 名员工,生产三种产品族——整块熟肉、乳化香肠和烟熏培根——涵盖五个生产工序,由三人计划团队负责排程。
工艺流程概述
flowchart LR
Curing["腌制和滚揉"] --> Cooking["烹饪和烟熏"] --> Chilling["冷却"] --> Slicing["切片"] --> Packaging["包装"]
从腌制到包装的五阶段熟肉生产工艺流程。
关于工序跳过的说明: 乳化香肠和培根产品跳过腌制工序,直接进入烹饪工序。跨越该跳过的转移时间在工序详情页面配置。
排程挑战及 Schantt 的处理方式
Sterling Valley Meats 的熟肉生产由成品订单驱动——计划团队每周收到订单簿并据此构建生产序列。优化器通过智能排序作业和分配设备来最小化总完工时间——即所有产品的总体完成时间。Schantt 从选定的开始日期向前排程;本指南假设使用一周的计划周期。两种排程模式可用:Auto 模式,算法确定作业顺序和设备分配;Semi-Auto 模式,计划员固定生产顺序,算法在此范围内优化设备分配。
Schantt 擅长处理的内容
- 同一工艺路线中包含批次和连续流工序的顺序多阶段生产
- 每道工序的并行设备——多台烟熏炉、切片机和包装线
- 批次和连续流混合管道,批次烹饪为连续流切片和包装供料
- 具有工序跳过的多产品工艺路线——每个产品族遵循自己的路径
- 序列相关换线——过敏原驱动的定向清洁时长
- 考虑班次的可用性,包含计划的设备停机时间和工作日历例外
Schantt 如何处理各项挑战
1. 跨产品族的批量和连续流时序混合。
- Sterling Valley 运营三种产品族,烹饪时间差异很大——整块肉 6 小时,乳化香肠 3 小时,培根 10 小时——全部共享四台烟熏炉。时序不匹配意味着计划员必须决定哪些烟熏炉生产哪种产品以及顺序如何,否则在下游包装线等待合适产品完成烹饪时可能闲置。
- Schantt 将每台烟熏炉建模为具有每类周期时间和批量大小的批次工序。切片和包装是具有每类吞吐量的连续流工序。模拟按顺序将每个作业推进其各工序——腌制、烹饪、冷却、切片、包装——根据类型计时每个步骤:批次工序使用数量除以批量大小,向上取整,乘以周期时间;连续流工序使用数量乘以从吞吐量导出的单位时间。算法探索作业顺序和设备分配,以保持下游生产线供料,同时最小化总完工时间。
2. 过敏原驱动的换线排序。
- 整块肉产品使用大豆基盐水,而乳化香肠含有乳蛋白。在同一台烟熏炉上切换这两者需要 90 分钟的全套卫生清洁——是同类产品换线时间的三倍。一个简单交替产品族的序列每天可能因过度清洁损失数小时,而计划团队的电子表格无法在决定每周生产顺序时对这种权衡进行建模。
- 换线时间配置为定向、按设备的条目——例如,将 Smokehouse-1 从整块肉切换为乳化香肠需 90 分钟,而同一烟熏炉上的同类切换需 30 分钟,培根到香肠的切换仅需 20 分钟。当 Auto 模式评估候选序列时,它将每个换线时间纳入受影响作业的开始时间,自然地倾向于将同类运行分组以减少总换线时间的序列。在 Semi-Auto 模式下,计划员的固定顺序得以保留,但算法仍分配作业到设备以最小化该顺序内的换线影响。在甘特图上,每个换线出现在其操作的处理条之前,作为一个带标注的片段,便于查看时间花费在哪些转换上。
3. 共享资源约束下的卫生窗口排程。
- 每台烟熏炉每周需要一次 4 小时的 CIP 卫生窗口。由于四台烟熏炉共享一个 CIP 清洁回路,一次只能清洁一台。计划员必须错开这些窗口,使任意两个不重叠,同时保持生产吞吐量。
- 计划卫生被建模为每台烟熏炉上的设备停机时间窗口——一个 4 小时的时段,在此期间该设备不可用。四个停机窗口在一周内错开,使共享 CIP 回路永远不会被重复预订。在排程过程中,算法将作业安排避开每台设备的停机时间,甘特图将阻塞时段显示为带阴影的叠加层,并在悬停详情中显示原因(CIP 卫生)。计划员审核甘特图以确认错开的窗口没有重叠——Schantt 独立排程每台设备的可用性,共享 CIP 重叠检查是手动审核步骤。
4. 烹饪与切片之间的冷却等待。
- 烹饪完成后,产品必须冷却至 ≤4°C 方可切片。此冷却等待需 2–6 小时,具体取决于产品——整块肉冷却 4 小时,乳化香肠 2 小时,培根 6 小时。等待期间没有主动加工,但生产排程必须考虑这一点,以便切片工序知道每个批次何时就绪。
- 冷却等待配置为工序详情页面上的转移时间——从烹饪工序到冷却工序——具有按产品族的持续时间。转移时间按挂钟经过时间分钟计算,因此数小时的冷却等待在工作时间之外也持续进行。等待结束后,下一个活跃工序(冷却)在工作时间内恢复。这使产品流程保持真实,无需专用的带容量跟踪的冷却工序。
5. 不同产品工艺路线中的工序跳过。
- 乳化香肠和培根完全跳过腌制工序——它们在烹饪工序进入生产线。整块肉产品在烹饪前经过腌制(盐水注射和滚揉)。计划员必须为每个产品族设置不同的路线,而无需为产品从不经过的工序创建虚拟操作。
- 按产品族工艺路线可自然地处理此问题。整块肉产品经过所有五个工序:腌制 → 烹饪 → 冷却 → 切片 → 包装。乳化香肠和培根经过从烹饪开始的四个工序:烹饪 → 冷却 → 切片 → 包装。当生产排程运行时,跳过的工序不产生操作、设备分配和甘特图行——产品仅在甘特图上从其第一个必需工序开始。从腌制工序(位置 1)到烹饪工序(位置 2)配置了桥接转移时间,使从烹饪进入的类别的交接仍保持正确的前向延迟。
在 Schantt 中建模的内容
在设置生产排程之前,创建反映 Sterling Valley 实际布局的生产实体。
| 实体 | 数量 | 说明 |
|---|---|---|
| 工序 | 5 | 腌制、烹饪、冷却、切片、包装 |
| 设备 | 16 | 腌制 4 台、烹饪 4 台、冷却 2 台、切片 3 台、包装 3 台 |
| 产品族 | 3 | 整块肉、乳化香肠、烟熏培根 |
| 产品 | 3 | 每类一个代表产品(烟熏火腿、法兰克福香肠、五花培根) |
| 工作日历 | 1 | 周一至周五两班制,周六加班 |
分步设置
1. 创建工序。 按生产顺序添加五个工序:腌制和滚揉(批次类型)、烹饪和烟熏(批次)、冷却(连续流)、切片(连续流)和包装(连续流)。设置位置 1 至 5。在每个工序上,配置连续工序之间的转移时间:
- 腌制 → 烹饪:30 分钟
- 烹饪 → 冷却:整块肉 240 分钟,乳化香肠 120 分钟,培根 360 分钟(即冷却等待)
- 冷却 → 切片:15 分钟
- 切片 → 包装:10 分钟
- 同时添加从腌制到烹饪的短时间桥接转移时间——这承载了从烹饪而非腌制进入的类别的交接。
2. 添加设备。 向每个工序添加设备:腌制工序 3 台真空滚揉机和 1 台盐水注射机,烹饪工序 4 台烟熏炉,冷却工序 2 个急冻间,切片工序 3 台切片机,以及 3 条包装线(流动裹包、真空包装、托盘密封)。
3. 创建产品族。 定义三个产品族:整块熟肉(单位:kg)、乳化香肠(kg)和烟熏培根(kg)。设置每个产品族的工艺路线:
- 整块肉按顺序经过所有五个工序
- 乳化香肠和烟熏培根跳过腌制,从烹饪开始
- 对于乳化香肠,在烹饪到冷却的交接处启用部分转移,部分转移量为 200 kg——这使得小部分可以移至冷却,同时烟熏炉中的其余部分继续完成烹饪
4. 添加产品。 每个产品族添加一个代表产品:烟熏火腿(整块肉)、法兰克福香肠(乳化香肠)和五花培根(烟熏培根)。为每个产品分配甘特图渲染颜色。
5. 设置设备产能参数。 在每个设备详情页面上,配置加工参数:
烹饪工序(批次):
- Smokehouse 1–4:批量大小 1,200 kg,周期时间 360 分钟(整块肉);600 kg,周期时间 180 分钟(乳化香肠);1,000 kg,周期时间 600 分钟(培根)
腌制工序(批次):
- 滚揉机 1–3:批量大小 800 kg,周期时间 720 分钟(整块肉,滚揉)
- 盐水注射机 1:批量大小 500 kg,周期时间 60 分钟(整块肉,注射)
冷却工序(连续流):
- BlastChill-1 和 BlastChill-2:600 kg/hr(整块肉),500 kg/hr(乳化香肠),400 kg/hr(培根)
切片工序(连续流):
- 切片机 1–3:300 kg/hr(整块肉),250 kg/hr(乳化香肠),200 kg/hr(培根)
包装工序(连续流):
- PackLine-1(流动裹包):250 kg/hr(整块肉),300 kg/hr(香肠),200 kg/hr(培根)
- PackLine-2(真空包装):200 kg/hr(整块肉),250 kg/hr(香肠),180 kg/hr(培根)
- PackLine-3(托盘密封):180 kg/hr(整块肉),200 kg/hr(香肠),150 kg/hr(培根)
然后添加每台烟熏炉和每台切片机的定向换线时间——每台设备 6 个定向对的完整矩阵,涉及整块肉和乳化香肠之间过敏原清洁的换线具有较长时间(90 分钟),同类或培根相关切换具有较短时间(20–30 分钟)。
6. 配置工作日历和停机时间。 设置标准工作日历:工作日每天两班,周六缩减班次——周一至周五 06:00–14:30(第一班)和 14:30–23:00(第二班),周六 06:00–14:30(加班),周日休息。添加工作日历例外:元旦(休息)、国际劳动节(休息)、平安夜(仅 06:00–12:00 工作)、圣诞节(休息)。然后为每台烟熏炉添加每周 CIP 卫生的计划设备停机时间——在周一和周二错开 4 小时窗口,使共享清洁回路永远不被两台烟熏炉同时使用。最后,添加 12 月最后一周的年终全厂维护停机。有了这些工作日历和停机时间,每台设备的可用工时反映了实际工厂排程,算法仅在有人值守的非清洁窗口内计划生产。
有关在 Schantt 中配置这些内容的分步说明,请参见 Schantt 文档。
常见错误
1. 将冷却建模为独立工序而非转移时间。 添加带设备、产能和加工时间的专用冷却工序会引入不必要的复杂性,并暗示跟踪冷却设备容量。实际上,冷却是一个被动等待过程——没有设备在执行工作。将其建模为从烹饪到冷却的按产品族转移时间,以保持设置简单和排程准确。
修正方法: 删除冷却工序及其设备。将冷却时长设置为烹饪工序详情页面上的转移时间,如果不同产品族的冷却时间不同则设置不同的值。
2. 对所有转换使用单一统括换线时间。 当所有产品族对共享相同换线时间时,算法无法偏向将相似产品分组以减少清洁时间的序列。过敏原驱动的清洁(90 分钟)是同类转换(30 分钟)的三倍,排程应利用这种差异。
修正方法: 为每台共享设备上的每个(from_class, to_class)对输入定向换线时间。对涉及过敏原的转换使用较长时间,对同类或低风险切换使用较短时间。
3. 定义一个覆盖整块肉和香肠工艺路线的产品族。 一个工艺路线访问每个工序的单一产品族会强制所有产品经过腌制,为应跳过腌制的类别创建虚拟操作。跳过工序的产品需要自己的工艺路线。
修正方法: 为每个不同的工艺路线创建独立的产品族。整块肉访问所有五个工序;乳化香肠和培根跳过腌制,从烹饪开始。甘特图随后仅在产品实际使用的工序上显示每个产品。
4. 在四台烟熏炉共享单一 CIP 清洁回路时设置相同的可用性。 如果每台烟熏炉具有相同的设备停机时间排程,排程可能会尝试同时清洁两台——但共享清洁回路一次只能处理一台。
修正方法: 错开停机窗口。将 Smokehouse-1 和 Smokehouse-2 安排在周一(上午和下午),Smokehouse-3 和 Smokehouse-4 安排在周二。在甘特图上确认没有两台烟熏炉的停机时间重叠。
5. 输入不考虑上游供料速度的设备吞吐量。 如果切片吞吐量超过冷却工序的有效输出,排程将显示切片机运行速度快于肉类供应速度——产生一个不现实的方案,下游工序看似独立于其物料供应运行。
修正方法: 输入等于或低于上游工序速度的吞吐量值。在 Sterling Valley,将所有三台切片机设置为每台 200–300 kg/hr,将两台上游急冻设备设置为每台 400–600 kg/hr。由于每台冷却设备为多台切片机供料,合并的冷却设备吞吐量(总计 800–1,200 kg/hr)轻松覆盖合并的切片需求(总计 600–900 kg/hr),因此冷却设备始终以等于或高于切片速度的速率供料。
良好排程的样子
当优化器在正确配置的模型上运行时,甘特图显示每个产品逐步经过其工序,并带有换线、冷却等待和班次边界的实际间隙。
之前(手动电子表格): 计划团队每周花费 6–8 小时手动排序烟熏炉负载和计算转移时间。过敏原换线在单独列中跟踪,经常被遗漏,导致周中跳过清洁,迫使剩余天数完全返工。冷却等待近似为固定的"次日"缓冲,要么过度约束切片排程,要么超出实际等待窗口。卫生窗口手写在共享白板上,有时当两台烟熏炉安排在同一个 CIP 回路上进行清洁时会产生重叠——直到清洁人员到达才有人注意到这个冲突。结果是排程纸上谈兵,但在实际条件下崩溃,每周使工厂损失数小时的吞吐量。
之后(Schantt Auto 模式): 生产排程在几分钟内构建完成,而非数小时。算法对烟熏炉负载进行排序以最小化跨产品族换线——将整块肉运行集中在周一上午,然后在切换到乳化香肠之前执行一次 90 分钟清洁,最后在本周结束时生产培根。冷却等待显示为每个产品时间线上烹饪和冷却之间的计划转移间隙,不同产品族具有不同时长(香肠 2 小时,整块肉 4 小时,培根 6 小时)。卫生窗口显示为每台烟熏炉行上的阴影停机带,错开排列使无重叠——在甘特图上一目了然。整周订单的总完工时间明显短于手动方案,因为算法找到了电子表格方法根本无法评估的排序和设备分配。
在 Schantt 中尝试
注册 Schantt 并加载内置示例数据集,自己构建此场景——本指南中的每个工序、设备、产品族、产品和日历,及其工艺路线、换线、转移时间和停机时间均已配置,随时可进行排程。您的配置和生产排程将局限于您的团队账户。要深入了解任何步骤,请参见 Schantt 文档。