此示例显示如何使用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
由于资源的优先次序。