主要内容

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

此示例显示如何使用MATLAB离散事件系统块与数据存储存储块之间的数据交换来建立资源调度。

示例模型生成两种类型的设施,部分B部分,经过加热过程。两个部件从相同资源池中获取用于加热过程的资源。资源收购部分优先级更高。什么时候部分获取一定数量的资源,B部分可以只获得1资源。该约束要求基于共享数据的进程和采集之间共享的资源总数。

模型描述

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

System Object™定义了获取的资源和资源获取事件的量部分

函数[实体,事件] = partaEntry(OBJ,存储,实体,来源)%将所获取的资源的量定义为随机值。Amount = randi([1 3]);RESREQ = obj.resourcescification(“资源”, 数量);%定义了资源采集事件。事件= obj.eventAcquireResource (resReq'resourceacq');结尾

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

函数[实体,事件] = resourceacquired(OBJ,存储,......实体,资源,标签)全球的TotalacquiredByparta;成功资源获取后%,转发实体%到输出|1|。Events = Obj.Eventforward('输出'1、obj.Delay);%更新获取的资源总数。TotalAcquiredByPartA = TotalAcquiredByPartA + resources.amount;结尾

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

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

System Object™定义了获取的资源和资源获取事件的量B部分

函数[实体,事件] = partBentry(OBJ,存储,实体,来源)全球的TotalacquiredByparta;如果由A部分获得的资源数量大于% 30则B部分只获得|1|资源。如果TotalAcquiredByparta> 30类= 1;别的%否则,Part B可以获得任意数量的资源%| 1 |和| 5 |。金额= randi([1 5]);结尾RESREQ = obj.resourcescification(“资源”, 数量);定义资源获取事件。事件= obj.eventAcquireResource (resReq'resourceacq');结尾

资源量B部分收购取决于所获得的资源部分.此次收购是实现的Partbstorage.系统对象™读取值TotalAcquiredByPartA为每个实体条目存储在数据存储A中。

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

函数[实体,事件] = resourceacquired(OBJ,存储,......实体,资源,标签)全球的TotalAcquiredByptB;%资源成功后收购,前进实体输出。活动=obj.eventforward('输出'1、obj.Delay);%更新总数资源获得。TotalAcquiredByPartB=TotalAcquiredByPartB+资源。结尾

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

跟踪模型中的资源组件,跟踪可用资源并按每个部分获取的资源数量。可用资源由此衡量可用金额,可用来自资源池块的统计信息。收购资源部分B部分通过数据存储读取块的输出观察到从数据存储A和数据存储B读取值的块。

仿真结果

模拟模型。观察连接到数据存储读取部分A.范围显示的范围块部分收购30.仿真时间周围的资源40

还要观察连接到数据存储的范围块读取部分B.范围显示B部分收购1资源后的模拟时间40由于资源的优先次序。

相关的话题