AnyLogic中按条件拾取指定数量Agent及索引问题解决
AnyLogic仿真问题解决方案
问题1:实现Pickup块等待指定数量Product的逻辑
你当前的Pickup数量设置代码未区分数量充足/不足的场景,导致无法触发等待逻辑。正确实现方式如下:
- 在Pickup块的筛选条件中,设置Product的匹配规则:
q.ProductID == ((Order)container).getIndex() - 在Pickup块的数量设置中,编写条件判断逻辑:
当队列中符合ProductID的Agent数量≥订单需求时,返回需要拾取的数量;否则返回0,此时Pickup块会自动等待,直到满足数量条件后再执行拾取操作。count(queue1, q-> q.ProductID == ((Order)container).getIndex()) >= ((Order)container).OrderSize ? ((Order)container).OrderSize : 0
问题2:正确引用Order agent的getIndex()
container.getIndex()不符合预期是因为container默认类型不是Order,需强制转换类型后调用方法:
((Order)container).getIndex()
将所有需要获取对应Order索引的位置,替换为上述代码即可。
内容的提问来源于stack exchange,提问作者Jahidul Hasan Razib
相关产品推荐
相关产品推荐

