生产排产技能 (Production Scheduling)
面向工厂 PMC(生产计划控制)岗位的智能排产工具。基于有限能力排程(Finite Capacity Scheduling)算法,自动完成工单排序、工序安排与物料齐套分析。
功能概述
- 工单管理 - 录入订单/工单信息(产品、数量、交期、优先级)
- 物料齐套检查 - 自动检查库存与在途物料是否满足生产需求
- 智能排产 - 基于优先级的有限能力排程算法
- 甘特图可视化 - 交互式排产结果展示
- 物料需求计划 - 输出采购/领料建议
数据格式
BOM配置(产品-物料关系)
产品与原材料的对应关系在 assets/bom.csv 中维护:
| 产品 | 原材料 | 单件用量 | 单位 | |------|--------|----------|------| | 电机壳体 | 原材料A | 2.0 | kg | | 电机壳体 | 原材料B | 1.0 | kg | | 电机壳体 | 包装材料 | 0.5 | 个 | | 连接支架 | 原材料A | 1.0 | kg | | 连接支架 | 原材料B | 0.5 | kg |
维护方式:
- 直接编辑
assets/bom.csv文件 - 或在提交工单时附带 BOM 数据
工单数据(必填)
支持 CSV 或直接描述,字段说明:
| 字段 | 说明 | 示例 |
|------|------|------|
| order_id | 工单号 | WO2026041201 |
| product | 产品名称 | 电机壳体 |
| quantity | 数量 | 100 |
| due_date | 交期 | 2026-04-20 |
| priority | 优先级(1-5,1最高) | 1 |
| bom | 物料清单(JSON) | 见下方 |
BOM 示例:
{
"原材料A": 2.5,
"原材料B": 1.2,
"包装材料": 0.5
}
物料库存(必填)
| 字段 | 说明 | 示例 |
|------|------|------|
| material | 物料名称 | 原材料A |
| stock | 库存数量 | 500 |
| on_the_way | 在途数量 | 200 |
| lead_time | 采购周期(天) | 5 |
工序资源(可选)
| 字段 | 说明 | 示例 |
|------|------|------|
| process | 工序名称 | CNC加工 |
| capacity | 日产能 | 200 |
| time_per_unit | 单位耗时(分钟) | 30 |
排产流程
第一步:数据收集
请按以下格式提供数据:
1. 工单信息(必填)
工单号, 产品名称, 数量, 交期, 优先级
WO001, 电机壳体, 100, 2026-04-20, 1
WO002, 连接支架, 200, 2026-04-22, 2
2. 物料库存(必填)
物料名称, 库存数量, 在途数量, 采购周期(天)
原材料A, 500, 200, 5
原材料B, 300, 100, 3
3. 工序配置(可选,不提供则使用默认参数)
工序名称, 日产能, 单位耗时(分钟)
CNC加工, 200, 30
装配, 150, 20
第二步:数据验证
运行 scripts/scheduler.py 进行数据格式校验:
- 工单字段完整性
- 物料数据有效性
- 交期合理性
第三步:排产计算
排产引擎按以下规则执行:
- 优先级排序 - 优先级数字越小越优先
- EDC 法则 - 同优先级按交期从早到晚
- 有限能力排程 - 按工序产能约束安排起止时间
- 物料齐套检查 - 标记物料缺口
第四步:结果输出
生成三种输出:
- 甘特图 - 交互式 HTML 页面
- 排产明细表 - CSV 格式
- 物料需求表 - 缺口物料及采购建议
执行示例
用户输入方式一:结构化数据
请帮我排产,以下是工单数据:
工单号, 产品, 数量, 交期, 优先级
WO001, 电机壳体, 100, 2026-04-20, 1
WO002, 连接支架, 200, 2026-04-22, 2
物料库存:
原材料A: 库存100, 在途200
原材料B: 库存50, 在途100
工序配置:
CNC加工: 日产能200, 单位耗时30分钟
装配: 日产能150, 单位耗时20分钟
用户输入方式二:直接描述
我有3个工单:
1. WO001 电机壳体 100件 4月20日交 优先级1
2. WO002 连接支架 200件 4月22日交 优先级2
3. WO003 底座支架 150件 4月25日交 优先级3
当前库存:原材料A 500kg, 原材料B 300kg
每个电机壳体需要原材料A 2kg, 原材料B 1kg
每个连接支架需要原材料A 1kg, 原材料B 0.5kg
每个底座支架需要原材料A 1.5kg, 原材料B 0.8kg
车间产能:每天可生产200件
算法说明
优先级规则
| 规则 | 说明 | 适用场景 | |------|------|----------| | EDD | 最早交期优先 | 紧急订单多 | | SPT | 最短工时优先 | 追求效率 | | CR | 关键比率 | 动态优先级 | | FCFS | 先到先服务 | 公平性要求 |
默认使用 EDD+优先级组合。
排产模式
- 正向排程:从最早可用时间开始,计算完成时间
- 反向排程:从交期倒推,确保按时交付
默认使用反向排程模式。
注意事项
- 物料数据必须准确,否则齐套分析结果不可靠
- 工序配置不完整时,系统使用默认参数(单工序、日产能100)
- 排产结果仅供参考,实际执行需结合车间情况调整
- 甘特图中红色标记表示物料缺口或产能超负荷
输出示例
甘特图
- 展示各工单在各工序的时间安排
- 鼠标悬停显示详细信息
- 支持缩放和拖拽
排产明细表
| 工单号 | 产品 | 数量 | 工序 | 开始时间 | 结束时间 | 状态 | |--------|------|------|------|----------|----------|------| | WO001 | 电机壳体 | 100 | CNC | 04-15 08:00 | 04-15 14:00 | ✓ | | WO001 | 电机壳体 | 100 | 装配 | 04-15 14:30 | 04-16 10:00 | ✓ |
物料需求表
| 物料 | 需求总量 | 可用量 | 缺口 | 建议采购量 | 到货时间 | |------|----------|--------|------|------------|----------| | 原材料A | 800 | 700 | 100 | 100 | 04-18 | | 原材料B | 400 | 400 | 0 | - | - |
Scan to contact