You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用SimPy实现工序衔接的并行生产流程并优化时间计算

生产工序时间优化模型构建方案

基础参数梳理

  • 机器配置(类型/单台产能/数量):
    • A:产能1,1台(对应S1、S2工序)
    • B:产能3,2台(对应S4工序)
    • C:产能2,2台(无对应工序,暂不参与)
    • D:产能5,1台(对应S3工序)
    • E:产能1,3台(对应S5工序)
  • 工序流转顺序:S1→S2→S3→S4→S5
  • 核心约束:
    • 机器处理某批次组件对应工序期间,不可切换至其他工序
    • 后工序需在前工序产出量≥自身单台产能时启动并行处理
    • 机器被占用时,后续组件批次需等待至机器空闲

核心模型逻辑

1. 触发规则与批次拆分

定义最小触发批次量为后工序单台机器的产能:

  • 前工序持续产出,每累计到对应后工序的最小触发批次量,立即生成一个子批次推送至后工序待处理队列,无需等待前工序整批完成。
  • 若前工序剩余产出不足触发量,暂存至累计满足后再推送。

2. 机器占用与时间计算逻辑

为每个工序维护两个核心数据:

  • 可用机器数:初始值为该工序对应机器的总数量
  • 待处理子批次队列:按到达顺序存储满足触发条件的子批次

时间计算流程:

  1. 从S1开始,按单台产能持续产出,每产出满S2的触发量(A机器产能1,即每1件),立即推送子批次至S2队列。
  2. 当S2队列有子批次且有可用机器时,分配机器处理该子批次,记录机器的占用结束时间(当前时间 + 子批次量÷单台产能)。
  3. 机器到达占用结束时间后,释放回可用池,同时将该子批次的产出推送至S3队列(满足触发量则推送,不足则暂存)。
  4. 后续工序重复步骤2-3,直到所有子批次完成S5工序。

3. 示例对比(以10件总任务为例)

原串行计算(整批流转)

  • S1:10÷1=10单位时间
  • S2:10÷1=10单位时间(总耗时20)
  • S3:10÷5=2单位时间(总耗时22)
  • S4:10÷(2×3)≈1.67单位时间(总耗时≈23.67)
  • S5:10÷(3×1)≈3.33单位时间(总耗时≈27)
    总耗时≈27单位时间

优化后并行计算

  • S1&S2并行:S1每1单位时间产出1件,S2立即启动处理,S1完成10件耗时10,S2完成最后1件耗时11(并行缩短9单位时间)。
  • S2&S3并行:S2累计5件后推送至S3,S3处理耗时1(结束时间6);剩余5件在S2完成时推送,S3处理至12时间完成。
  • S3&S4并行:S3完成的5件拆分为3件+2件,3件推送后由1台B处理至7时间;后续累计的7件拆分为两个3件,分别由两台B处理至13、14时间。
  • S4&S5并行:S4完成的3件批次,由3台E处理1单位时间即可完成;最后1件单独处理至15时间。
    总耗时≈15单位时间

4. 实现关键要点

  • 为每台机器维护空闲时间点,严格按时间顺序分配子批次,避免冲突。
  • 前工序产出需实时累计,触发条件满足后立即推送子批次,最大化并行空间。
  • 子批次优先级遵循“先到先处理”,确保流程有序。

内容的提问来源于stack exchange,提问作者Sneha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 04:43:31