创建一个自定义资源收购者
这个例子展示了如何使用资源管理方法来创建一个自定义实体存储块从指定哪些实体获取资源资源池块。
假设你管理一个工厂生产零部件从两个不同的材料,材料1
和材料2
,履行订单。后产生的一部分,是评估的质量保证。
质量控制的两个测试方法是:
测试1从材料用于生产部分
1
。测试2是用于零件生产材料
2
生产阶段后,部分是根据他们的材料标记应用正确的测试。
生成自定义行为,您创建一个对象™使用离散事件系统matlab.DiscreteEventSystem
资源管理类方法。
创建离散事件系统对象
生成一个自定义实体存储块具有一个输入,一个输出,一个存储元素。
块接受一个实体类型的部分
其存储容量1
。实体的属性测试
来表示材料的一部分。基于属性的值,指定的实体获得的资源资源池块和离开块进行测试。
自定义块的行为
定义
Test1
和Test2
类型资源收购实体类型部分
。函数resNames = getResourceNamesImpl (obj)%定义资源的名称。resNames = obj.resourceType (“部分”,{“Test1”,“Test2”});结束
实体进入存储。如果它的
entity.data.Test
值是1
,从产生的实体Material1
。实体获得1
资源的资源池块的资源类型Test1
。类似地,如果其entity.data.Test
值是2
,实体获得的一个资源资源池块的资源类型Test2
。方法函数(实体、事件)=条目(obj、存储实体,源)%在实体条目,获取指定的资源池。如果entity.data.Test== 1%如果从Material1实体,它获得Test1类型的资源。resReq = obj.resourceSpecification (“Test1”1);其他的%如果从Material2实体,它获得Test2类型的资源。resReq = obj.resourceSpecification (“Test2”1);结束%获得相应的资源池。事件= obj.eventAcquireResource (resReq,“TestTag”);结束函数(实体、事件)= resourceAcquired (obj、存储、…实体、资源标签)%资源收购后,提出了实体到输出。事件= obj.eventForward (“输出”0.0、存储);结束结束
资源是成功收购后,
resourceAcquired
调用实体的转发。
实现自定义的块
保存
。m
文件CustomBlockAcquireResources
。链接SimEvents的系统对象®模型通过使用一个MATLAB离散事件系统块。关于链接的更多信息,请参阅创建自定义模块使用MATLAB的离散事件系统。创建一个SimEvents模型使用MATLAB离散事件系统块,一个实体发电机块和一个实体终结者块,两个资源池块。如图表所示连接块。
标签实体发电机块作为发电机和一部分实体终结者块,离开测试。
在发电机部分:
在实体的一代选项卡,设置生成实体在仿真开始来
从
。在实体类型选项卡,设置实体类型名称作为
部分
和属性名称来测试
。在事件动作选项卡,生成的行动领域输入:
实体。测试= randi([1 2]);
部分生成的相生的时间
1
和他们的测试
属性值是1
或2
表明材料类型。
在资源池布洛克:
设置资源名称来
Test1
和可重用在释放参数从
。在统计数据选项卡中,输出量,效果统计并连接到一个范围。
在资源Pool1布洛克:
设置资源名称来
Test2
和可重用在释放参数从
。在统计数据选项卡中,输出量,效果统计并连接到一个范围。
右键单击该实体路径生成器的一部分MATLAB离散事件系统块,并选择日志选择信号。
模拟模型。
观察
测试
传入的实体的属性值的自定义块。三个实体需要测试1和7个实体需要测试2。观察到三种类型的资源
Test1
是收购的实体。观察到七资源类型
Test2
是收购的实体。
另请参阅
matlab.DiscreteEventSystem
|条目
|matlab.System
|cancelAcquireResource
|getResourceNamesImpl
|resourceAcquired
|eventAcquireResource
|resourceSpecification