2. 排产对象建模

排产系统能否给出可执行的计划,首先取决于它是否“认识”车间里的真实对象。排产对象建模的任务,就是把车间中的人、机、料、法、环抽象成计算机可以计算、可以约束、可以追踪的数据实体,并建立它们之间的引用关系。建模不准确,后续的约束求解、优先级排序、瓶颈识别都会建立在错误前提上。

一、六类核心实体的抽象方式

在多设备多工序场景中,最基础的实体可以归纳为六类:工件、工序、设备、模具、人员、班次。它们不是孤立的表,而是通过外键和约束相互引用。

  • 工件(Item):排产的最小交付单元。关键属性包括工件编码、所属产品型号、当前工序号、数量、交期、优先级、状态(待加工/在制/完工)。工件通常按批次管理,同一批次内数量相同、工艺路线一致。
  • 工序(Operation):工件在某一工位上的加工步骤。关键属性包括工序号、工序名称、所属工艺路线、标准工时、准备工时、可选设备组、所需模具类型、所需技能等级。工序是排产调度的基本粒度。
  • 设备(Machine):执行工序的物理资源。关键属性包括设备编号、设备类型、所属车间、可用日历、额定产能、当前状态(运行/待机/维修)。设备与工序通过“设备组—工序”的多对多关系关联。
  • 模具(Mold/Tool):与设备配合使用的工装。关键属性包括模具编号、适配设备类型、适配产品型号、当前所在设备、可用状态、寿命剩余次数。模具是典型的“共享资源”,同一模具可能被多台设备争用。
  • 人员(Operator):操作设备或执行工序的工人。关键属性包括工号、技能等级、可操作设备组、所属班组、可用班次。人员约束在劳动密集型工序中往往是瓶颈。
  • 班次(Shift):定义可用工作时间窗口。关键属性包括班次编号、开始时间、结束时间、所属工作日、适用设备组或班组。班次决定了设备与人员的可用时间边界。

这六类实体之间的关系可以用一张结构图清晰表达。下图展示了工件、工序、设备、模具、人员、班次之间的引用与约束关系,其中“工序”是连接工件与资源的枢纽节点。

工件 Item 编码/型号/数量/交期 工序 Operation 工序号/工时/设备组/模具类型 设备 Machine 编号/类型/产能/状态 模具 Mold 编号/适配设备/寿命 人员 Operator 工号/技能/设备组/班组 班次 Shift 开始/结束/适用设备组 工艺路线 Routing 工序序列/前后置关系 BOM 父件/子件/用量 1:N N:M N:M N:M 约束可用时间 定义工序序列 展开子件 关联

二、工艺路线与BOM的映射方法

工艺路线描述“怎么做”,BOM描述“用什么做”,两者必须映射到同一套工件与工序实体上,排产才有完整的输入。映射的核心思路是:BOM决定工件的父子关系与数量,工艺路线决定每个工件的工序序列与资源需求,两者通过“工件编码+工序号”作为联合主键进行关联。

具体映射过程分三步。第一步,从BOM展开得到所有需要排产的工件清单。例如产品P-100由子件A(用量2)和子件B(用量1)组成,则一个P-100批次会生成2个A工件和1个B工件,以及1个P-100总装工件。第二步,为每个工件绑定其工艺路线。总装工件走总装路线,子件A走机加工路线,子件B走注塑路线。第三步,将工艺路线中的每道工序展开为工序实例,并挂接设备组、模具类型、技能要求等资源约束。

映射时最容易出错的地方是工序号与BOM层级的对应关系。如果BOM中子件需要先加工再装配,那么子件工序的完成时间必须早于父件对应装配工序的开始时间。这个前后置约束必须在建模阶段显式记录,通常用“工序依赖表”表达:字段包括前序工件编码、前序工序号、后序工件编码、后序工序号、最小间隔时间。排产求解器读取这张表后,才能正确安排子件与父件的加工顺序。

建模检查要点:每个工件是否都有唯一工艺路线?每道工序是否至少绑定一个设备组?需要模具的工序是否指定了模具类型?需要人员的工序是否指定了技能等级?班次是否覆盖了设备与人员的可用时间?这五个问题全部为“是”,排产模型才算基本可用。

三、实体建模的粒度选择

建模粒度直接影响排产的计算规模与计划精度。粒度过粗,计划不可执行;粒度过细,求解时间爆炸。实践中常用的折中方案是:工件按批次建模,工序按工步合并,设备按机台建模,模具按类型+编号建模,人员按技能组建模,班次按工作日+班次号建模。

以一个注塑车间为例。某工件批次数量为500件,注塑工序标准工时为0.8分钟/件,准备工时为30分钟,则单批占用设备时间为500×0.8+30=430分钟。如果该设备一个班次可用时间为480分钟,那么这批工件在一个班次内可以完成。但如果模具需要切换,且切换时间为45分钟,则实际占用变为475分钟,接近班次上限,排产时就必须考虑是否跨班或调整顺序。这个例子说明,准备工时、切换时间、班次可用时间这三个参数必须准确建模,否则排产结果会过于乐观。

人员建模同样需要粒度控制。如果每道工序都绑定具体工号,排产会变成人员排班问题,复杂度大幅上升。更实用的做法是按“技能组”建模:将可操作同一设备组的工人归为一个技能组,排产时只约束技能组的人数上限,具体派工由车间班组长在计划执行时完成。这样既保证了人员约束不被忽略,又避免了排产求解器陷入人员组合爆炸。

四、班次与日历的建模细节

班次不是简单的时间段,它需要与设备日历、人员日历、工厂日历三层叠加。设备日历定义设备可运行的时间窗口,人员日历定义技能组可出勤的时间窗口,工厂日历定义全厂停线时间(如检修、节假日)。排产时,某道工序的可用时间窗口是三者交集。

例如,设备M-01的可用日历为周一至周六两班制(08:00-16:00,16:00-24:00),技能组G-03的可用日历为周一至周五两班制,工厂日历定义周日全厂停线。那么M-01在周六的16:00-24:00班次虽然设备可用,但人员技能组不可用,该时段不能安排需要G-03的工序。如果建模时只考虑设备日历,排产结果就会出现“有设备无人”的不可执行计划。

常见建模陷阱:把班次当作全局统一参数,忽略设备组与技能组的差异。多设备多工序场景中,不同设备组可能采用不同班制,建模时必须支持“设备组—班次”的多对多关联,而不是全厂一张班次表。

五、建模成果的交付形式

完成上述抽象后,排产对象模型通常以一组关联表的形式交付。核心表包括:工件表、工序表、设备表、模具表、人员技能组表、班次表、工艺路线表、BOM表、工序依赖表。每张表的主键与外键关系必须清晰,且所有时间参数统一使用分钟或秒作为单位,避免单位混用导致的计算错误。

在验证模型是否可用时,可以选取一个真实工件批次,手工推演其从投料到完工的完整路径:BOM展开得到哪些子件、每个子件走哪条工艺路线、每道工序占用哪台设备、是否需要模具、需要什么技能组、落在哪个班次窗口内。如果手工推演能走通,且每一步都能在模型表中找到对应记录,说明建模已经具备排产求解的基础条件。