周期性与时变参数
什么是周期?
实际流程在不同时段运行状态不同。比如客服在上班时间处理更多请求,制造业有轮班,零售有明显的淡旺季。
周期让你灵活定义特定模拟规则的生效时间。不用只设置一个全局值,而是能针对不同时间段设置参数:
- 工作日与周末
- 早班与晚班
- 旺季与淡季
- 营业时间与非营业时间
这样让模拟能精准还原不同时间段下的真实表现。
周期为何重要
举个简单例子:客户到达建模。
没有周期:
- 24小时每小时到达10人
有周期:
- 工作日09:00-18:00每小时25人
- 工作日18:00-21:00每小时15人
- 周末每小时5人
- 夜间每小时2人
第二种方案能更真实反应实际波动,提高队列、资源和产能利用率预测准确性。
可用周期类型
ProcessMind 支持九种周期类型,每种类型用于定义规则何时生效:
| 类型 | 参数 | 描述 |
|---|---|---|
| Always | (无) | 规则始终生效,无变动 |
| Default | (无) | 时间未命中其他规则时作为兜底规则 |
| Fixed Period | startDateTime, endDateTime | 一次性时间段(不循环) |
| Each Day | startTime, endTime | 每天相同时间段生效 |
| Each Weekday | startTime, endTime | 仅限周一到周五 |
| Each Weekend Day | startTime, endTime | 仅限周六、周日 |
| Each Week | startDay, startTime, endDay, endTime | 每周循环,可跨多天 |
| Each Month | startDayOfMonth, startTime, endDayOfMonth, endTime | 每月循环模式 |
| Each Year | startMonth, startDayOfMonth, startTime, endMonth, endDayOfMonth, endTime | 每年或季节性模式 |
周期类型详解
Always
最简单方式,规则始终生效,无变化。
适用场景: 参数与时间无关,或只需基础模拟时。
Default
兜底规则,在其他规则未命中时生效。
适用场景: 你希望针对特殊时段定义例外,其余时间统一参数。
务必添加 Default 规则
如有多条周期规则,请务必加 Default,保证所有时间段有参数,避免意外。
Each Day
该规则适用于每一天指定时间段。
参数:
startTime: 起始时间(如09:00)endTime: 结束时间(如17:00)
示例: 普通营业时间09:00-17:00,含周末均适用。
Each Weekday
该规则只在周一至周五指定时间段内生效。
参数:
startTime: 起始时间endTime: 结束时间
示例: 客服中心工作日08:00-18:00,周末规则不同。
Each Weekend Day
该规则仅在周六与周日指定时段生效。
参数:
startTime: 起始时间endTime: 结束时间
示例: 周末支持服务时间缩短为10:00-16:00。
Each Week
该规则适用于每周跨多天的特别时段,适合不便按单独一天划分的业务。
参数:
startDay: 起始星期(Monday等)startTime: 起始时间endDay: 截止星期endTime: 截止时间
示例: 周三14:00到周五12:00为高峰段。
Each Month
该规则适用每月指定日期范围。
参数:
startDayOfMonth: 起始日(1-31)startTime: 起始日时间endDayOfMonth: 截止日endTime: 截止日时间
示例: 每月结算高峰期:25日08:00至月底23:59。
Each Year
该规则适用每年指定日期范围。
参数:
startMonth: 起始月startDayOfMonth: 起始日startTime: 起始时间endMonth: 结束月endDayOfMonth: 结束日endTime: 结束时间
示例: 节假日零售高峰为每年11月15日00:00至12月31日23:59。
固定时段
该规则仅在特定日期和时间段内生效(非周期性)。用于一次性事件。
参数:
startDateTime:准确开始日期和时间endDateTime:准确结束日期和时间
**示例:**2025年3月15日至22日产品上线周,需设置专属处理规则。
组合多条规则
周期规则的强大之处在于可组合使用。你可为不同时间场景设定不同参数,模拟时会自动判定当前应用哪条规则。
示例:多班次处理用时
以制造业流程为例,不同班次下的处理时间如下:
| 规则名称 | 执行周期 | 处理时间分布 |
|---|---|---|
| 日班 | 每个工作日,08:00-16:00 | Normal(30 min, 5 min) |
| 晚班 | 每个工作日,16:00-00:00 | Normal(45 min, 10 min) |
| 周末班组 | 每个周末日,10:00-18:00 | Normal(60 min, 15 min) |
| 夜间/默认 | 默认 | Normal(90 min, 20 min) |
日班最快(人员齐全,员工精力充沛),晚班较慢(监督减少),周末最慢(仅保留基本人员)。默认规则适用于夜间时段。
规则优先级
当多条规则可能同时匹配时:
- 按照配置文件中定义顺序依次判断
- 采用第一条匹配的规则(上方优先)
- 默认规则仅在无其他规则适用时生效
提示: 建议将具体规则排在通用规则之前,如需区分工作日和周末,请将“每个工作日”放在“每天”上方。
周期的应用场景
周期可应用于多种模拟参数:
| 参数 | 周期应用案例 |
|---|---|
| Case Arrivals | 工作高峰期到达量高,夜间较低 |
| Processing Times | 人手充足时处理快,人少时变慢 |
| Resource Capacity | 高峰增人手,夜间只留值班 |
| Skip Chances | 节假日/周末用不同流程分支 |
| Gateway Probabilities | 按时间改变网关决策 |
综合示例:客服中心
以下是实际案例,展示周期规则如何作用于客户支持流程模拟的不同参数:
到达率配置示例
| 周期 | 到达率 |
|---|---|
| Each Weekday 09:00-18:00 | Poisson(每小时50) |
| Each Weekday 18:00-22:00 | Poisson(每小时20) |
| Each Weekend Day 10:00-16:00 | Poisson(每小时15) |
| Default | Poisson(每小时5) |
工作高峰时人流多,晚上适中,周末和夜间较低。
处理时长配置
| 执行周期 | 分布 |
|---|---|
| 每个工作日 09:00-17:00 | Triangular(10, 20, 45 min) |
| 每个周末日 | Triangular(20, 40, 90 min) |
| 默认 | Triangular(30, 60, 120 min) |
高峰时段最快,周末和非高峰时段较慢。
人员配置
| 执行周期 | 可用人数 |
|---|---|
| 每个工作日 09:00-18:00 | 10人 |
| 每个工作日 18:00-22:00 | 4人 |
| 每个周末日 10:00-16:00 | 3人 |
| 默认 | 1人 |
工作时间内人手充足,其他时段人手减少。
整体运行方式示例
周二上午10:00:
- 到达速率为每小时50人
- 处理采用快速三角分布
- 可用人员为10人
周二晚上8:00:
- 到达速率降至每小时20人
- 处理采用默认(较慢)分布
- 仅4人可用
周六下午2:00:
- 到达速率为每小时15人
- 处理采用周末分布
- 仅3人可用
最佳实践
1. 先设默认规则
建议先定义 Default 规则,确保所有未被其他规则覆盖的时间段都有参数。
2. 先粗后细
先区分大时间段(如工作日与周末),再根据需求细化更具体规则(如各班次)。
3. 初期保持简单
先只区分工作日/周末,之后按需补充小时或季节等复杂规则。
4. 以数据为依据
尽量分析历史 data,理解实际业务模式后再设定规则。比如分时段 arrival 量、处理时长及排班。
5. 检查边界情况
确保规则在交接时间点逻辑准确:
- 17:00换班如何切换?
- 跨午夜是否处理正确?
- 月末规则在大月小月效果是否一致?
6. 规则要写明注释
复杂周期设置后续难以理解。请备注每条规则的业务背景或用途,便于维护。