Anylogic中Conveyor故障时间建模及资源池关联方法咨询
AnyLogic输送机与资源池关联解决方案
问题1:如何基于现有Conveyor库创建资源池?
标准Conveyor不属于AnyLogic的Resource类型,没法直接加入资源池,得通过自定义资源包装的方式实现:
- 新建一个自定义资源类型(比如命名为
ConveyorResource),在这个类型里添加一个Conveyor类型的属性(比如叫conveyor),用来绑定实际的输送机对象。 - 拖拽
Resource Pool组件到模型,将其资源类型设置为刚才创建的ConveyorResource。 - 初始化模型时,把所有Conveyor实例包装成
ConveyorResource加入资源池:
在Main的On startup事件里写入代码:// 假设你已经把所有输送机存入conveyorList集合 for(Conveyor c : conveyorList) { ConveyorResource res = new ConveyorResource(this, c); conveyorResourcePool.add(res); }
问题2:是否可以将Conveyor关联至Resource pool?
不能直接关联,因为标准Conveyor不是Resource类的子类,没有资源池需要的状态管理属性。但可以通过上面的自定义资源包装方法间接关联,把Conveyor作为自定义资源的属性绑定到资源池中,这样就能利用资源池的逻辑管理输送机的可用/占用、故障状态。
问题3:物料处理库的Conveyor没有关联Resource pool的设置,怎么办?
这是因为标准Conveyor本身不是资源组件,所以没有对应的设置项。解决思路还是用自定义资源包装:
- 按问题1的方法把Conveyor包装成自定义资源并加入资源池。
- 故障逻辑绑定:当输送机触发故障时,调用
resourcePool.take(res)或者通过res.setBusy(true)标记资源不可用;故障恢复时,调用resourcePool.free(res)或者res.setBusy(false)释放资源。 - 如果需要更精细的状态控制,可以在自定义资源类型里添加故障状态属性,配合资源池的资源状态过滤逻辑。
内容的提问来源于stack exchange,提问作者George BOLES
相关产品推荐
相关产品推荐

