主要内容

利用MATLAB离散事件系统和数据存储内存块进行资源调度

这个例子展示了如何使用MATLAB离散事件系统块和数据存储内存块之间的数据交换来建模资源调度。

该示例为一个设备建模,该设备生成两种类型的部件,部分B部分,它们经历一个加热过程。两部分都从同一资源池中获取加热过程所需的资源。资源的获取部分有更高的优先级。当部分获得一定数量的资源,B部分只能获得1资源。这个约束要求进程之间共享的资源总数和基于共享数据的获取计划。

模型描述

在模型中,实体生成器块生成类型的实体PartA.然后这些部件被发送到存储单元,从资源池块中获取资源。一个MATLAB离散事件系统块,使用PartAStorageSystem Object™表示存储单元。

系统对象™定义了获取的资源数量和资源获取事件部分

函数(实体、事件)= PartAEntry (obj、存储实体,源)将获取的资源数量定义为一个随机值。Amount = randi([1 3]);resReq = obj.resourceSpecification (“资源”、数量);定义资源获取事件。事件= obj.eventAcquireResource (resReq“ResourceAcq”);结束

部分成功获取资源后,实体被转发到输出。TotalAcquiredByPartA存储在data Store内存块中的数据是否表示获得的资源的总数部分.系统对象™首先调用存储在数据存储a中的值,它更新并写入新值TotalAcquiredByPartA通过增加获得的资源的数量来增加价值。

函数[entity,events] = resourceAcquired(obj, storage,...实体、资源标签)全球TotalAcquiredByPartA;%成功获取资源后,转发实体%到输出|1|。事件= obj.eventForward (“输出”1、obj.Delay);%更新获取的资源总数。TotalAcquiredByPartA = TotalAcquiredByPartA + resources.amount;结束

该部件被发送到加热过程A,它由一个实体服务器块表示。当加热过程完成时,部件释放所获得的资源并离开设备。

在模型中,另一个Entity Generator块生成类型为的实体B部分.然后这些部件被发送到存储单元,从资源池块中获取资源。一个MATLAB离散事件系统块,使用PartBStorageSystem Object™表示另一个存储单元。

系统对象™定义了获取的资源数量和资源获取事件B部分

函数(实体、事件)= PartBEntry (obj、存储实体,源)全球TotalAcquiredByPartA;%如果A部分获得的资源数量大于% 30则B部分只获得|1|资源。如果TotalAcquiredByPartA > 30 Amount = 1;其他的%否则,Part B可以获得任意数量的资源% |1|和|5|。Amount = randi([1 5]);结束resReq = obj.resourceSpecification (“资源”、数量);定义资源获取事件。事件= obj.eventAcquireResource (resReq“ResourceAcq”);结束

资源的数量B部分获得取决于获得的资源部分.这个收购是通过PartBStorage的值的系统对象™TotalAcquiredByPartA为每个实体条目存储在数据存储A中。

成功获取资源后,实体被转发到输出。系统对象(TM)更新TotalAcquiredByPartB并将新值写入数据存储B。

函数[entity,events] = resourceAcquired(obj, storage,...实体、资源标签)全球TotalAcquiredByPartB;%资源成功后收购,向前实体输出。事件obj.eventForward (“输出”1、obj.Delay);%更新总数资源收购。TotalAcquiredByPartBTotalAcquiredByPartB+ resources.amount;结束

然后零件被送到加热过程b,在过程完成后释放资源并离开设备。

模型中的Track Resources组件,跟踪每个部件的可用资源和获取的资源数量。可用资源由量,效果从资源池块统计。所获得的资源部分B部分从数据存储A和数据存储B读取值的数据存储读块的输出。

仿真结果

模拟模型。观察连接到数据存储Read Part a的Scope块部分获得30.资源周围的模拟时间40

还观察连接到数据存储读取部分b的作用域块B部分获得1资源后的模拟时间40由于资源的优先次序。

相关的话题