主要内容

基于MATLAB的离散事件系统资源调度与数据存储内存块

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

该示例模拟了一个生成两种类型部件的设施,部分而且B部分,经过加热过程。两个部分从同一个资源池中获取加热过程所需的资源。资源的获取部分优先级更高。当部分获得一定数量的资源,B部分只能获得1资源。这个约束要求在进程之间共享资源的总数,以及基于共享数据计划的获取。

模型描述

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

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

函数[entity,event] = PartAEntry(obj,storage,entity,source)%将获取的资源数量定义为随机值。Amount = randi([1 3]);resReq = obj. resourcspecification (“资源”、数量);定义资源获取事件。event = obj.eventAcquireResource(resReq,“ResourceAcq”);结束

部分成功获取资源,则将实体转发到输出。TotalAcquiredByPartA存储在数据存储内存块中的数据是否代表所获取资源的总数部分.系统对象™首先调用存储在数据存储区a中的值TotalAcquiredByPartA通过增加获得资源的数量来衡量价值。

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

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

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

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

函数[entity,event] = PartBEntry(obj,storage,entity,source)全球TotalAcquiredByPartA;如果A获得的资源数量大于% 30,那么B部分只获得|1|资源。如果TotalAcquiredByPartA > 30 Amount = 1;其他的否则,部分B可以获得任意数量的资源% |1|和|5|。Amount = randi([1 5]);结束resReq = obj. resourcspecification (“资源”、数量);定义重新获取事件。event = 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,在工艺完成后释放资源并离开设施。

模型中的跟踪资源组件,跟踪每个部分的可用资源和已获得的资源数量。可用资源由可用金额,可用资源池块的统计信息。获得的资源部分而且B部分是从数据存储A和数据存储B读取值的数据存储读块的输出观察。

仿真结果

模拟模型。观察连接到数据存储读部分a的作用域块部分获得30.模拟时间前后的资源40

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

相关的话题