模拟引擎的工作原理
了解模拟引擎
ProcessMind使用**离散事件模拟(DES)**引擎对流程建模。了解引擎的工作原理,有助于您更有效地配置模拟并准确解读结果。您可以通过免费试用,在自己的流程中体验该引擎。
什么是离散事件模拟?
在离散事件模拟中,系统状态只会在特定事件发生时改变:时钟从一个事件跳到下一个事件,事件之间不会发生变化。这种方法适用于业务流程,因为:
- 活动有明确的开始和结束时间
- 资源会在特定时刻分配和释放
- 案例会在明确的时间点进入流程并完成
为什么采用离散事件?
与用于物理或流体动力学的连续模拟不同,业务流程无需逐时刻建模。贷款申请不会从“已提交”逐渐变为“已批准”,而是在特定事件发生时改变状态。
核心事件循环
模拟引擎按以下简单循环运行:
1. Initialize: Set up starting conditions
2. Get Next Event: Find the earliest scheduled event from the priority queue
3. Advance Time: Move simulation clock to that event's time
4. Process Event: Handle the event (start activity, complete activity, etc.)
5. Schedule New Events: Based on what happened, add new events
6. Repeat: Continue until end time or max events reached (5,000,000)
7. Output: Generate the complete event log 事件类型
模拟会生成并处理多种事件:
| 事件类型 | 发生情况 |
|---|---|
| 案例到达 | 新案例通过开始事件进入流程 |
| 活动开始 | 案例开始执行一项活动(分配资源) |
| 活动完成 | 案例完成一项活动(释放资源) |
| 网关评估 | 决策点确定要走的路径 |
| 案例完成 | 案例到达结束事件 |
案例生成与到达
案例通过BPMN模型中的开始事件进入模拟。到达模式由案例生成分布控制。
默认到达模式
默认情况下,案例按泊松分布到达,速率为每小时1个案例。这会产生符合许多业务流程实际情况的随机到达间隔。
自定义到达模式
您可以使用概率分布文档中介绍的分布,配置不同的到达模式。
案例在流程中的流转
顺序流
案例完成某个元素后,会立即沿着流出的顺序流继续前进。如果只有一条流出路径,案例会自动沿该路径前进。
网关行为
网关控制案例的分支和合并:
| 网关类型 | 行为 |
|---|---|
| XOR(排他) | 根据概率权重随机选择一条流出路径。概率会作为相对权重处理,并自动归一化。 |
| AND(并行) | 同时沿所有流出路径前进。案例会拆分为并行 token。 |
| OR(包容) | 随机选择路径,并确保至少选择一条。 |
| 事件驱动 | 从可用事件中随机选择。 |
设置概率
对于XOR网关,您可以为每条流出顺序流设置概率。这些概率是相对权重:
- 如果将顺序流设为70、20和10,归一化后分别为70%、20%和10%
- 如果设为7、2和1,结果相同
- 未设置的顺序流使用剩余百分比
活动执行
案例到达任务(活动)后,引擎会按以下顺序处理:
1. 检查资源是否可用
所需资源是否有可用容量?
2. 必要时进入队列
如果资源不可用,案例会进入等待队列。ProcessMind默认采用**FIFO(先进先出)**顺序:按案例到达的先后顺序处理。
3. 分配资源
资源可用后,系统会为该案例预留所需数量的资源单位。
4. 抽取处理时间
引擎会从已配置的处理时间分布中抽取一个数值,以确定活动所需时长。
5. 安排完成事件
系统会在current_time + processing_time将完成事件加入事件队列。
6. 释放资源
完成事件触发后,资源会返回资源池,供其他案例使用。
最短处理时间
为确保时间戳唯一且行为符合实际,所有活动的最短时长均为1秒。即使分布设置为零时长,活动也至少需要1秒。
跳过概率
您可以为活动设置跳过概率(0至100%)。跳过活动时:
- 案例立即前进到下一个元素
- 不消耗资源
- 不经过时间(最短1秒除外)
- 事件日志中会记录该活动,时长为最短时长
这可用于模拟实际流程中偶尔跳过某些步骤的情况。
时间处理
模拟时钟
模拟会维护一个虚拟时钟,按事件逐步推进。如果下一个事件发生在上午10:35,而当前时间是上午10:30,时钟会直接跳到上午10:35。
时间单位
所有时间都会在内部转换为统一单位。您可以使用以下单位指定时长:
- 秒
- 分钟
- 小时
- 天
到达率单独设置,可按小时、天、周、月或年计算。
周期性与时间段
参数可以随模拟时间变化。例如:
- 工作日和周末采用不同的到达率
- 早班和午班采用不同的处理时间
- 高峰时段采用不同的资源容量
配置详情请参阅周期性文档。
资源管理
资源池
每种资源都有明确的容量,即它能同时处理的案例数量。
队列管理
需求超过容量时,案例会在队列中等待。ProcessMind默认采用**FIFO(先进先出)**顺序,确保按到达顺序处理案例。
生成事件日志
模拟运行期间,每次活动执行都会记录在输出事件日志中:
| 字段 | 说明 |
|---|---|
| 案例ID | 每个案例的唯一标识符(按顺序生成) |
| 活动 | BPMN元素的名称 |
| 开始时间戳 | 活动开始时间 |
| 完成时间戳 | 活动完成时间 |
| 资源 | 执行活动的资源 |
| 属性 | 此时案例的各项属性 |
此事件日志采用标准格式,可使用所有ProcessMind工具进行分析。
模拟限制
| 限制 | 数值 | 用途 |
|---|---|---|
| 最大事件数 | 5,000,000 | 防止模拟无限运行 |
| 最短时长 | 1秒 | 确保时间戳唯一 |
先从小规模开始,再逐步扩大
创建模拟时,建议先设置较短的时间段(几天或几周)来验证配置。确认模型运行正常后,再延长模拟时间。
后续步骤
优化流程,构建互联架构,掌控全局。
无需信用卡,也无需等待,即刻开始。将组织的实际工作方式转化为清晰、互联的流程设计。
构建流程架构,明确职责归属与管控措施,并在各层级统一角色分工。
开始免费试用,为流程治理、管理和持续改进建立可靠的统一基础。