2.2.基于资源优先的排产算法
一种基于有限资源驱动的排产算法。本算法适用于资源受限的离散制造环境。其核心思想是:在每一轮排产中,首先确定当前可用的有限资源集合,然后为这些资源寻找最合适的待排工序,通过多级规则过滤,实现资源与工序的最佳匹配。
2.2.1、符号说明
Wi: 第 i 个订单,i = 1, 2, 3, …, n
Wij: 订单 Wi 的第 j 道工序,j = 1, 2, 3, …
n: 订单总数量
P: 待排产工序集合
R: 系统总资源集合(所有工位、设备)
AR: 当前可用资源集合
CR: 本轮候选资源集合
PO: 预排产方案集合
2.2.2、步骤解析
步骤 1:系统初始化
设定订单索引 i = 1
初始化待排产工序集合 P,令 P = ∅
初始化系统总资源集合 R
初始化当前可用资源集合 AR,令 AR = R
步骤 2:构建初始待排产集合
循环判断:若 i ≤ n,则执行以下操作:
获取第 i 个订单 Wi 的首道工序 Wij
将该工序 Wij 添加至待排产集合 P 中
订单索引 i 自增 1
此循环持续至 i > n 为止
步骤 3:检查排产终止条件
循环判断:若待排产集合 P 为空,则所有工序排产完毕,算法结束
若当前可用资源集合 AR 为空,则无可用资源,等待资源释放后继续
步骤 4:确定本轮候选资源集合
从当前可用资源集合 AR 中,筛选出当前时刻可参与排产的资源,构成候选资源集合 CR
筛选逻辑:
遍历 AR 中的每个资源 r
判断资源 r 是否就绪(非故障、非保养、已空闲)
若资源 r 就绪,则 CR = CR ∪ {r}
步骤 5:为候选资源生成预排产方案
初始化预排产方案集合 PO = ∅
循环处理:对于候选资源集合 CR 中的每一个资源 r,执行以下子步骤:
为资源 r 筛选可加工的候选工序:
从待排产集合 P 中,找出所有工艺路线允许在资源 r 上加工的工序,形成候选工序集 CP
从 CP 中,进一步筛选出当前可开始排产的工序(满足工序依赖关系和时间约束),形成可行工序集 FP
应用工序选择规则组合 (Ro1, Ro2, …, Roh) 对 FP 进行排序筛选:
初始化规则索引 q = 1
若 FP 中仅剩一个工序,或 q > h,则选定工序 op = FP[0]
否则,应用规则 Roq 对 FP 进行筛选,得到过滤后的子集 FP',令 FP = FP',并令 q = q + 1,重复此过程
为选定的工序 op 计算排产时间:
获取 op 的紧前工序结束时间 pt。若无紧前工序,则 pt 等于订单最早开始时间
获取资源 r 的最早可用时间 rt
计算计划开始时间:start_time = max(pt, rt)
计算计划结束时间:end_time = start_time + op 的计划加工时长
生成预排产方案:
将元组 (r, op, start_time, end_time) 封装为预排产方案 po
将 po 添加至预排产方案集 PO,即 PO = PO ∪ {po}
步骤 6:从预排产方案中确定最终排产方案
应用资源选择规则组合 (Rc1, Rc2, …, Rcl) 对 PO 进行排序筛选:
初始化规则索引 q = 1
若 PO 中仅剩一个方案,或 q > l,则选定最终方案 fpo = PO[0]
否则,应用规则 Rcq 对 PO 进行筛选,得到过滤后的子集 PO',令 PO = PO',并令 q = q + 1,重复此过程
步骤 7:执行排产并更新系统状态
根据最终排产方案 fpo (r, op, start_time, end_time) 执行排产:
将工序 op 正式分配给资源 r
锁定资源 r 在 [start_time, end_time] 时间段的产能
更新待排产集合 P:
将已排产的工序 op 从 P 中移除
若 op 存在紧后工序,则将该紧后工序加入 P
更新可用资源集合 AR:
将资源 r 从 AR 中暂时移除(因其已被占用)
当资源 r 完成工序 op 后,将其重新加入 AR
步骤 8:循环排产
算法跳转至步骤 3,开始下一轮的排产决策





![在苹果iPhone手机上编写ios越狱插件deb[超简单] - 鹿快](https://img.lukuai.com/blogimg/20251123/23f740f048644a198a64e73eeaa43e60.jpg)













暂无评论内容