排产调度和设备维护是制造企业车间管理中最烧脑的两块。排产要考虑订单交期、设备产能、模具切换、物料齐套,牵一发而动全身;维护则长期陷入“不坏不修、坏了抢修”的被动局面,一次非计划停机可能损失几十万。智能制造Agent的思路是:让具备感知、推理、决策能力的智能体接管这些复杂决策,把人从无穷无尽的协调工作中解放出来。这篇文章聊聊Agent在排产调度与预测性维护中的技术落地方式。

一、智能制造Agent的整体架构设计
智能制造Agent并不是一个单体程序,而是一个典型的分层架构。最底层是数据感知层,通过工业网关采集PLC、传感器、MES系统的实时数据,包括设备状态、工序进度、振动温度信号等;中间是知识推理层,把领域知识(工艺路线、设备能力、维护规则)结构化存储,供Agent调用;最上层是决策执行层,Agent基于感知数据与知识库进行推理,输出排产计划、维护工单等决策结果。
与传统的调度软件相比,Agent的核心差异在于自主性和反应性。传统排产系统生成计划后,一旦现场出现插单或设备故障,需要人工重新计算;而Agent采用“感知-决策-执行-反馈”的闭环,事件触发时自动评估影响范围并重排。架构上通常会拆分为排产Agent、维护Agent、物料Agent等多个专职Agent,再通过一个协调Agent统筹全局,各Agent之间用消息队列通信,这种多Agent协作模式在大型车间里比单一巨型系统更灵活,也更容易增量部署。
二、排产调度Agent:从规则到智能优化
排产本质是一个组合优化问题。假设车间有20台设备、50个在制订单、每个订单平均8道工序,可行解的空间是天文数字,靠人工经验只能得到可行解而非最优解。排产Agent通常采用分层求解策略:先用启发式规则(如EDD最早交期优先、CR关键比率)快速生成初始解,再用遗传算法或模拟退火进行迭代优化,目标函数综合考量交期达成率、设备利用率、换型次数。
下面是一个简化版的排产Agent决策逻辑,用规则引擎处理插单事件:
class SchedulingAgent:
def __init__(self, machines, orders):
self.machines = machines # 设备资源池
self.orders = orders # 订单队列,含工序与交期
self.plan = [] # 当前排产计划
def on_rush_order(self, new_order):
"""插单事件触发:评估影响并局部重排"""
affected = [o for o in self.orders
if o.machine == new_order.preferred_machine]
# 交期紧迫度高的订单优先占用产能
affected.sort(key=lambda o: o.due_date)
new_order.priority = "HIGH"
self.orders.insert(0, new_order)
return self.reschedule(scope="local", machines=[new_order.preferred_machine])
def reschedule(self, scope, machines=None):
"""调用优化引擎重排,返回新计划与延迟订单清单"""
if scope == "local":
return self._optimize(machines)
return self._optimize(self.machines)
这套逻辑的关键在于局部重排:插单发生时不推翻整个计划,只对受影响的设备做局部优化,重排耗时可以从十几分钟压缩到几十秒。此外,Agent还会维护一个约束检查器,确保新计划满足设备产能上限、模具唯一性、班次日历等硬约束,违反软约束(如换型时间偏长)的方案则通过惩罚项体现在目标函数里。
实际落地时还要处理一个现实问题:排产计划需要现场班组认可并执行。因此很多项目会给Agent增加可解释性模块,输出类似“订单A排到3号机是因为其交期仅剩2天且3号机当前负荷最低”的决策理由,让计划员能够审核和微调,人机协同远比全自动黑盒更容易推广。
三、预测性维护Agent:让设备开口说话
预测性维护的核心是回答三个问题:设备当前健康状态如何、还能运行多久、什么时候修最合适。数据基础是安装在设备关键部位的传感器——主轴振动、电机电流、轴承温度、油液颗粒等。维护Agent持续采集这些时序数据,通过机器学习模型判断是否存在异常征兆。
技术路线上通常分两步走。第一步是异常检测,用无监督模型(如Isolation Forest、自编码器)识别偏离正常模式的信号,不需要故障样本积累就能上线;第二步是剩余寿命预测(RUL),在积累了足够故障数据后,训练基于LSTM或随机森林的回归模型,预测部件的剩余可用时长。下面是一个基于振动特征的异常检测示例:
import numpy as np
from sklearn.ensemble import IsolationForest
class MaintenanceAgent:
def __init__(self):
# 用正常运行期数据训练孤立森林模型
self.model = IsolationForest(contamination=0.02, random_state=42)
def fit(self, normal_features):
"""normal_features: 每行是一个时间窗口的特征向量
包含振动RMS、峰值因子、峭度、温度均值等"""
self.model.fit(normal_features)
def predict(self, window_features):
"""返回1表示正常,-1表示疑似异常"""
return self.model.predict(window_features)
def evaluate_health(self, vibration_signal):
rms = np.sqrt(np.mean(vibration_signal ** 2))
kurtosis = np.mean((vibration_signal - vibration_signal.mean()) ** 4) \
/ (vibration_signal.std() ** 4)
features = [[rms, kurtosis]]
if self.predict(features)[0] == -1:
return {"status": "疑似异常", "建议": "48小时内安排点检"}
return {"status": "正常", "建议": "按周期继续监测"}
特征工程在这里比模型选择更重要。以轴承故障为例,峭度指标对早期点蚀非常敏感,正常轴承峭度接近3,一旦出现局部损伤会明显升高;而RMS值适合跟踪磨损的渐进过程。把频域特征(包络谱中轴承特征频率处的幅值)与时域统计量组合使用,检出率能提升不少。维护Agent的价值在于把这些分析自动化、常态化,并且异常检出后自动联动维护工单系统,而不是停留在报表层面。
四、两个Agent的协同:维护窗口嵌入排产计划
排产与维护如果各自为政,会互相打架:维护刚安排检修,排产又把急单排到这台设备上。成熟的方案是让维护Agent把健康评估结果推送给排产Agent,排产时把“预测性维护窗口”作为一种特殊约束——设备健康度低于阈值的,尽量安排在其空闲时段检修,检修时段锁定为不可用产能。
具体的协同流程是:维护Agent每完成一轮健康评估,将设备剩余寿命预测值写入共享状态;排产Agent在生成计划时读取该状态,对剩余寿命短于计划周期的设备触发“机会维护”策略,即利用订单低谷期完成检修,避免故障停机打断正在加工的高价值订单。反过来,排产Agent也会把未来一周的设备负荷计划发给维护Agent,帮助它选择对产能影响最小的检修时间点。这种双向数据流动,能把非计划停机时间压降三成以上,同时减少不必要的定期过度维护。
五、实施路径与常见坑
落地智能制造Agent建议分三步:先做数据治理,打通设备联网,保证传感器数据质量,这一步往往占整个项目一半以上的工作量;再上单点Agent,比如先做预测性维护(价值容易量化,按避免的停机损失算ROI),验证效果后再扩展排产调度;最后做多Agent协同与持续优化,让模型随现场数据不断迭代。
几个常见的坑值得提前规避。一是数据标注缺失,设备故障样本天然稀少,建议从无监督异常检测切入,边运行边积累标注;二是过度追求最优解,排产优化跑到95分位就足够了,为最后几个百分点增加十倍计算时间得不偿失;三是忽视现场人员接受度,Agent输出的计划必须留有人工干预接口,并明确责任边界——Agent提方案、人做最终确认,这在质量追溯要求严格的行业尤其重要。把这些想清楚,智能制造Agent才能真正从演示走进车间。