主要内容

事件和事件动作

在离散事件模拟中,事件是可以改变状态变量、输出或其他事件发生的瞬时事件。通过使用SimEvents®,您可以创建自定义操作,这些操作在实体的事件发生时发生,例如当实体进入或退出一个块时发生。

事件的概述

在SimEvents中,您可以根据实体状态指定事件动作。SimEvents模型中的典型事件序列是:

  1. 生成一个实体。

  2. 实体从实体发电机块一个实体服务器块。

  3. 实体服务器块完成一个实体的服务。

  4. 实体出口实体服务器阻塞并输入实体终结者块。

  5. 实体被摧毁了。

当一个实体被创建、进入或退出一个块、被服务或被销毁时,这个实体的状态就会改变。您可以使用某些SimEvents库块来创建在这些状态发生变化时触发的事件动作。你可以使用以下方法编写事件动作:

  • MATLAB®执行计算的代码。

  • 金宝app®函数调用,调用执行计算的函数。

有关事件操作语言的更多信息,请参见事件动作语言和随机数生成

为事件动作编写自定义代码

要创建事件操作代码和语言,请在SimEvents块中选择事件动作选项卡并选择调用该操作的事件。例如,在实体发电机块中,提供了两个事件来调用事件操作,生成退出.事件动作在实体生成或退出块时触发。

实体生成器块窗口显示生成操作字段。

如果你点击生成事件,您可以在产生行动字段。

当你使用事件动作时:

  • 这些实体可用作MATLAB结构,包括表示实体属性值的结构字段。

  • 保留字段,如实体ID和实体优先级,也可在单独的MATLAB结构中使用entitySys

有关使用事件操作的示例,请参见使用事件操作管理实体

SimEvents包含事件动作的块

控件上有哪些事件操作可用事件动作块的制表符。这些是您可以为之创建操作的可能事件。

实体发电机块 实体队列块 实体服务器块 实体终结者块 资源收购者块 实体批处理创建块

实体的一代

实体条目到队列块

服务器块的实体条目

到终止符块的实体条目

到收购方块的实体条目

批处理块的实体条目

实体退出块

实体退出块

实体服务完成情况

N/A

从收购方块退出实体

实体批量代

N/A

实体被阻塞

实体退出块

N/A

实体被阻塞

实体退出块

N/A

N/A

实体被阻塞

N/A

N/A

实体被阻塞

N/A

N/A

实体是抢占

N/A

N/A

N/A

此图显示了实体通过离散事件系统模拟移动时的动作流程。

存储中发生的实体流和事件。实体被转发到存储器或在存储器内生成。实体在存储中被服务或终止。如果转发过程没有被阻塞,实体将退出存储。

注:

  • 实体进入、退出和阻止操作作为实体转发事件的一部分执行。

  • 服务完成动作在计时器事件之后执行。

  • 实体终止事件执行销毁操作。

您还可以修改实体属性(entityNameattributeName)、实体优先级(sys.entity.priority)和实体id (sys.entity.id).但是,您不能更改实体属性或系统属性(entitySys)用于退出操作。尝试更改这些值会在模拟时产生错误。

使用事件动作助手

事件动作助手帮助您根据统计分布为事件动作的重复序列或随机事件动作创建代码。例如,要访问实体发电机布洛克:

  1. 打开区块并选择事件动作选项卡并选择生成事件动作。

  2. 产生行动字段中,单击插入模式按钮。

实体生成器块窗口

假设您想要生成实体并为它们分配随机属性值。这些值是由均匀分布产生的01

为了达到这种行为:

  1. 选择随机数

  2. 若要选择均匀分布,请设置分布参数统一的

  3. 默认情况下,最低最大参数指定为01,分别。

  4. 将值附加到实体属性Attribute1,设置指定输出参数实体。Attribute1

助手创建代码。

MATLAB代码由助手在生成动作字段中创建

代码为种子创建一个持久变量。然后附加一个随机值实体。Attribute1.定义操作后,Event操作选项卡中出现星号(*),表示为该事件调用了代码。在此例中,“”后会显示一个星号生成事件动作。

有关事件操作助手的更多信息,请参见事件动作语言和随机数生成

跟踪事件与事件日历

SimEvents不以图形方式表示事件。相反,SimEvents软件维护一个事件日历来安排事件。在调试SimEvents模型时,可以使用事件日历来观察事件。有关更多信息,请参见调试SimEvents模型

您还可以使用simevents。SimulationObserver方法。您可以使用这个类及其方法创建自定义事件观察器。有关更多信息,请参见使用SimulationObserver类来监控sievents模型

可视化事件动作

当您创建事件操作时,{…}标记出现在块上,表示创建了操作。出现的徽章取决于哪些事件操作具有关联的代码。

例如,这幅图显示了一个实体队列块,并使用实体进入和退出块调用的事件操作。

带有事件动作徽章的实体队列块

当您将鼠标悬停在徽章上时,您可以看到事件动作。例如,本图描述了一个实体退出操作。

显示事件动作的徽章

双击徽章直接打开事件动作块的标签。

防止有限数量的同时发生的事件的活锁

同时发生的事件是在相同模拟时钟时间发生的事件。事件日历上不时安排的事件TT如果0≤Δt≤,则+Δt视为同步128 * eps *T,在那里每股收益浮点数在MATLAB软件中的相对精度和T为模拟时间。如果您的模拟创建了大量同时发生的事件,那么这个数字可能表明出现了不需要的活锁情况。在活锁情况下,块经常无限地在同一时刻返回相同的状态。SimEvents软件通过以下限制来阻止livelock:

  • SimEvents将每个块的最大并发事件数限制为5,000。

  • SimEvents将每个模型的最大同时事件数限制为100,000。

另请参阅

||||||

相关的例子

更多关于