AnyLogic技术咨询:如何实现从随机选取的集合关联参数中减1
飞行器运营仿真的备件消耗实现方案
代码实现方式
如果是通过集合+参数手动维护备件数量,可在状态图的故障处理动作中添加以下逻辑:
- 若你的集合元素直接关联备件计数参数(比如每个部件对象有
spareCount属性),选中部件后执行:selectedPart.spareCount -= 1; - 若备件是全局独立参数(如
engineSpare、rotorbladeSpare),通过判断选中的部件类型对应减1:if(selectedPart.equals("engine")) { engineSpare--; } else if(selectedPart.equals("rotorblade")) { rotorbladeSpare--; }
更优仿真方案
推荐使用AnyLogic内置的**资源池(ResourcePool)**模块替代手动参数维护:
- 创建两个ResourcePool,分别对应engine和rotorblade,初始容量设置为1
- 故障发生时,调用
resourcePool.take()获取备件,模块会自动减少库存;若库存不足,该方法返回null,可直接用于判断无备件的场景 - 资源池自带库存监控、资源状态跟踪功能,比手动维护参数更符合仿真逻辑,且减少代码出错概率
内容的提问来源于stack exchange,提问作者Mohammad Zaki Mohammud
相关产品推荐
相关产品推荐

