在一个处理网络(PN )模型中,处理对象(表示例如客户或原材料)会通过一个抵达事件,经由入口节点处进入系统。然后处理对象会流过一个或多个处理节点(表示例如服务台或制造机器),而它们在通过一个离开事件而在出口节点处离开系统之前,会经过一系列处理活动。
对象事件模拟-网络处理建模(OES-PN)的概念基于对象,事件和活动的基本离散事件模拟(DES)建模概念。 网络处理(PN)模型的节点表示的建模元素,是重载的并且具有两个含义。入口和出口节点组合了一个(可能是空间的)节点对象和关联且隐式的(到达或离开的)事件类型,而处理节点组合了一个(可能是空间的)节点对象和关联且隐式活动类型。这种语义重载使PN模型更简洁,更易于阅读和理解。
由于其直观的构建模块及其对制造和服务行业问题的适用性,网络处理建模(PN)是最广泛使用的离散事件模拟(DES)建模范例。它受到许多仿真工具的支持,例如 Arena , Simio , ExtendSim , Simul8 和 AnyLogic ,每个人都使用他们自己的专有术语和图表语言来实现相同的概念。
用于PN建模的OES概念是这些商业工具专有PN建模技术的开源替代方案,可用作理解和比较它们的参考概念框架。
OES-PN | Arena | SIMUL8 | SIMIO | AnyLogic |
---|---|---|---|---|
处理对象Processing Object | 实体Entity | 工作项Work Item | 标记Token | 代理Agent |
条目节点Entry Node | 创建Create | 起点Start Point | 来源Source | 来源Source |
处理节点Processing Node | 处理Process | 队列+活动Queue + Activity | 服务器Server | 服务Service |
退出节点Exit Node | 处置Dispose | 终点End Point | 水槽Sink | 水槽Sink |
入口节点
入口节点由入口对象组成,该入口对象参与导致创建处理对象的外部到达事件,处理对象被路由到后继节点或被推送到输出队列。 入口节点的定义组合定义(可能是空间的)入口对象和关联的隐式到达事件类型。 可以被建模为入口节点的对象的示例是:办公室/建筑物入口和邮件接收办公室。
基本功能
一个入口节点对象定义应该包括:
- 一个
successorNode
属性槽,用于分配处理对象路由到的后继节点; - 一个
maxNmrOfArrivals
属性槽,用于定义最大到达事件数,之后不再创建更多到达事件(因此,模拟可能会用完未来事件); - 或者
- 一个
arrivalRate
属性槽,用于定义指数概率分布函数的事件率参数,用于计算两个连续到达事件之间的时间, 或者 - 一个
arrivalRecurrence
用于计算到达事件重现的到达再现方法(通常是随机变量)。
- 一个
如果既没有定义 arrivalRate
也没有定义 arrivalRecurrence
方法,则事件率为1的指数分布将用作默认重复。
入口节点具有内置(只读)统计属性nmrOfArrivedObjects
,用于计算到达给定入口节点的对象数。
高级功能
一个入口节点应该包括:
- 一个
outputType
槽,用于定义自定义输出类型(而不是默认的pROCESSINGoBJECT
输出类型); - 一个
onArrival
事件规则方法,用于定义特定状态更改或调度特定后续事件。
处理节点
处理节点由参与处理活动的处理器对象组成(通过扮演actor的特殊资源角色)。 处理节点的定义组合了定义处理器对象(作为actor)和相关的隐式活动类型。 可以被建模为处理节点的对象的示例是:服务台,自动柜员机和制造机器。
基本功能
处理节点具有用于传入处理对象的输入队列。 处理节点的定义可以包括:
- 一个
successorNode
属性,用于分配处理对象路由到的后继节点; - 一个
capacity
属性,用于将一次处理的处理对象的数量设置为大于1的数字,这是默认值; - 或者
- 一个
fixedDuration
属性,用于将节点处理活动的持续时间设置为固定值,或者 - 一个
randomDuration
方法,用于将节点处理活动的持续时间的随机变化建模为随机变量。
- 一个
如果既未定义fixedDuration
也没有定义randomDuration
方法,则具有可自定义的默认事件率1的指数分布将用作分配处理活动持续时间的默认随机变量。
由于它们是执行活动的参与者,因此会自动为所有处理节点计算利用率统计信息。
高级功能
一个处理节点定义应该包括:
- 一个
inputType
槽,用于定义自定义输入类型,而不是默认的pROCESSINGoBJECT
输入类型; - 一个
inputTypes
集合槽,用于在处理节点处理多种类型的输入时定义输入类型; - 一个
outputTypes
集合槽,用于在处理节点将输入转换为输出时定义输出类型; - 一个
onActivityStart
事件规则方法,用于定义特定状态更改或在启动处理活动时调度后续事件; - 一个
onActivityEnd
事件规则方法,用于定义特定状态更改或在处理活动结束时安排后续事件。
退出节点
退出节点由退出对象组成,该退出对象参与离开事件,从而导致从模拟中移除离开的处理对象。
基础功能
退出节点有两个内置统计信息属性:
nmrOfDepartedObjects
计算在给定出口节点处离开的对象的数量,还有cumulativeTimeInSystem
用于在系统中累计所有离开的对象的时间。
高级功能
退出节点定义可以包括onDeparture
事件规则方法,用于定义特定状态改变或在处理对象离开时调度后续事件。