2. 离散事件系统基础
离散事件系统(Discrete Event System, DES)的核心特征是:系统状态只在离散的时间点上发生跳变,两次跳变之间状态保持不变。产线正是典型的离散事件系统——一台机床在 08:15:23 完成加工、一个托盘在 08:15:24 被 AGV 取走、一台设备在 08:17:05 因故障停机,这些时刻才是系统真正"发生变化"的瞬间。理解 DES 的六个核心概念,就是理解产线仿真建模的语言基础。
一、六个核心概念及其产线对应物
实体(Entity)是系统中流动、被加工或被服务的对象。在产线中,实体通常是工件、托盘、工单批次,甚至是需要维修的刀具。实体具有属性,例如工件类型、工艺路线、优先级、当前工序号。实体是"被处理的东西",它不主动改变系统,而是被系统推动着前进。
资源(Resource)是执行加工、搬运、检测等操作的能力单元,包括机床、装配工位、AGV、机械手、操作工人、检测台。资源的关键属性是容量(Capacity):容量为 1 表示同一时刻只能服务一个实体(如单主轴加工中心),容量大于 1 表示可并行服务(如 3 个并行装配工位、2 台同型号检测设备)。资源还有可用性状态:空闲、忙碌、故障、换型、计划停机。
事件(Event)是使系统状态发生瞬时改变的动作或时刻。DES 仿真中通常区分两类事件:到达事件(工件到达某工位、订单下达)和离开事件(加工完成、搬运结束、故障发生)。事件是仿真时钟推进的驱动力——仿真引擎不断从事件日历中取出最早发生的事件,把时钟直接跳到该时刻,这就是"下一事件时间推进"机制。
活动(Activity)是两个事件之间的持续过程,具有明确的持续时间。例如"加工"这一活动从"开始加工"事件起,到"加工完成"事件止,持续 42 秒。活动本身不改变状态,它只是把两个事件在时间轴上连接起来。区分事件与活动是建模的关键:事件是点,活动是区间。
进程(Process)是实体在系统中经历的完整生命周期,由若干活动按逻辑顺序串联而成。一个工件的进程可能是:到达 → 排队 → 装夹 → 加工 → 卸料 → 检测 → 入库。进程描述的是"一个实体从生到死"的路径,是面向对象建模(如 SimPy 的 Process、Plant Simulation 的 Method)的基本单位。
队列(Queue)是实体在等待资源时停留的缓冲区,本质上是"等待中的实体集合"。队列有容量限制(无限、有限、零容量即不允许等待)和排队规则(FIFO、优先级、最短加工时间优先等)。队列长度和等待时间是产线仿真最常关注的性能指标之一。
二、概念之间的关系:一张图看清
下面这张图用一条真实产线的片段,把六个概念串起来:工件作为实体,在机床、AGV、检测台这些资源之间流动;每一次状态跳变是一个事件;两个事件之间是活动;工件走完全程构成进程;等待资源时进入队列。
三、从概念到建模:一个可执行的映射练习
把上述概念落到仿真模型里,需要做一次"对象映射"。以一条包含 1 台 CNC、1 台 AGV、1 个双工位检测台的产线为例,建模时的映射关系如下:
| DES 概念 | 仿真模型中的对象 | 关键参数/属性 | 产线对应物 |
|---|---|---|---|
| 实体 | Entity / Part | 类型、工艺路线、优先级 | 工件 W-001 |
| 资源 | Resource / Machine | 容量、可用率、换型时间 | CNC-01、AGV-02、QC-01 |
| 事件 | Event | 发生时刻、事件类型 | 到达、开始加工、加工完成 |
| 活动 | Activity / Delay | 持续时间分布 | 加工 42s、搬运 18s、检测 25s |
| 进程 | Process | 步骤序列、分支条件 | W-001 的完整加工路径 |
| 队列 | Queue / Buffer | 容量、排队规则 | Q1 无限 FIFO、Q2 容量 5 |
建模时最容易出错的地方是把"活动"和"事件"混为一谈。例如"加工 42 秒"是一个活动,它由"开始加工"和"加工完成"两个事件界定;如果只记录"加工完成"事件而忽略"开始加工"事件,就无法统计机床的忙碌时间,也无法计算设备利用率。另一个常见错误是忽略队列容量:当 Q2 容量设为 5 而实际在制品超过 5 时,仿真会触发"阻塞"逻辑,上游机床被迫停机,这个阻塞效应往往才是产能瓶颈的真正来源。
四、事件调度:仿真时钟如何推进
DES 仿真的运行机制可以用"事件日历"来理解。仿真开始时,日历中只有初始事件(如 t=0 工件到达)。引擎反复执行:取出日历中最早的事件 → 将仿真时钟推进到该时刻 → 执行该事件对应的状态变更 → 可能产生新事件并插入日历。当 t=0 的到达事件被执行后,会生成"t=8 开始加工"事件;t=8 事件执行后,又生成"t=50 加工完成"事件。时钟不是均匀走动的,而是从一个事件时刻直接跳到下一个事件时刻,这正是离散事件仿真比时间步长仿真高效的原因。
理解这一点对产能评估至关重要:仿真输出的产能、在制品、等待时间、资源利用率,全部来自事件序列的统计。如果事件定义不完整(例如漏掉故障事件、换型事件、班次切换事件),仿真结果就会系统性偏乐观。因此在建模阶段,建议先把产线中所有可能改变状态的事件列全,再逐一映射到资源与队列上,最后才去关心分布拟合和参数标定。