主要内容

使用事件操作管理实体

这个例子展示了如何在一个简单的排队系统中控制实体生成速率和编写事件动作来改变实体属性。在离散事件模拟中事件是对可能改变状态变量、输出或其他事件发生的瞬间事件的观察。SimEvents®允许您在事件发生时创建自定义操作。这些动作被称为事件动作.事件可以有相应的动作。您可以使用MATLAB编写事件动作来更改实体属性®代码或仿真软件万博1manbetx®功能。

从一个简单的排队系统开始

这是一个简单的队列系统,包含实体生成器、实体队列、实体服务器和实体终止程序块。在本例中,实体表示到达加油站的卡车的油箱。实体的属性表示油箱中当前的汽油量。事件动作表示油箱中汽油浓度的变化。油箱是随机生成的,排队的,它们由一个泵提供服务,在一秒钟内输送恒定数量的汽油。油箱带着新的总油量离开加油站。

修改模型

  1. 选择整个模型或实体路径实体发电机实体队列,实体服务器块并右击选择日志选择信号.仿真数据检查器用于可视化的流动的坦克和他们的气体水平在模型。有关更多信息,请参见检查模拟数据

  2. 重命名实体发电机块作为坦克发电机,实体队列块作为等待队列,实体服务器作为泵,和实体终结者块退出。

    对于这个特定的应用程序,块被重命名

  3. 重命名路径从坦克生成器块为坦克到队列,等待队列块为坦克到泵,泵块为坦克到出口。

配置和模拟模型

  1. 双击坦克发电机,并选择实体类型选项卡。改变实体类型名称坦克,属性名称CurrentGasLevel

    实体属性CurrentGasLevel表示每个油箱中现有的汽油量。

  2. 模拟模型。打开仿真数据检查.观察水箱以相同的速率接近等待队列、泵和出口。

    油箱带着最初的汽油量离开加油站1这是属性初始值

    万博1manbetxSimulink Data检查器显示每个到达队列的实体的CurrentGasLevel值为1

    万博1manbetxSimulink Data检查器显示每个到达泵的实体的CurrentGasLevel值为1

    万博1manbetxSimulink Data检查器显示,对于到达出口的每个实体,CurrentGasLevel值为1

  3. 打开坦克发电机块参数对话框。在实体的一代选项卡,设置时间源Matlab的行动.观察默认的MATLAB代码。

    dt =兰德(1,1);

    代码随机化实体代际时间参数dt来代表随机到达的坦克。

  4. 模拟更新后的模型。在仿真数据检查,观察坦克随机到达与相同的初始气体量1

    万博1manbetx显示实体随机生成的Simulink数据检查器

    观察罐是随机产生的,但它们接近泵的速率是固定的,因为泵的服务时间是1

    万博1manbetx显示实体偏离队列的Simulink数据检查器被调整为常数值1

  5. 打开油箱发电机对话框。在事件动作选项卡,产生行动字段,输入代码。

    实体。CurrentGasLevel =兰迪([1,4]);

    到达加油站的油箱有随机的油量,从14

  6. 模拟更新后的模型。在仿真数据检查在美国,你可以观察到气罐的数量是随机的。

    万博1manbetxSimulink数据检查器显示,实体是用随机初始气体值生成的

  7. 对于泵块,设置以下参数:

    1. 事件动作选项卡上,选择服务完成

    2. 服务完成行动字段,输入代码。

      实体。CurrentGasLevel =实体。CurrentGasLevel + 3;

      每个油箱充3单位的汽油1S持续时间,然后离开泵。

    观察Tank Generator和Pump块用事件动作图标{…}表示块定义了一个事件动作。

    在坦克生成器和泵块上使用事件动作图标进行建模

  8. 模拟更新后的模型。在仿真数据检查,观察每个油罐离开加油站时都有3单位额外的汽油。

    万博1manbetxSimulink数据检查器显示实体离开泵与添加的气体

修改了在排队系统中管理实体的模型

这是在配置了简单的排队系统后修改的模型。

另请参阅

|||

相关的话题