AnyLogic中SelectOutput5未按CesselID正确分流容器的问题
问题:多船舶集装箱卸载流程中SelectOutput模块分流异常
背景
此前曾提问关于如何创建支持起重机同时为多艘船舶服务并卸载集装箱的流程。调试后确定方案:从包含{0,1,2,3}的ArrayList集合availableIDs中,按顺序为每艘船舶分配唯一ID至VesselID变量;再通过以下代码将船舶的int类型VesselID传递给集装箱的int类型CesselID:
agent.CesselID = agent.vessel.VesselID;
最后将Split模块连接至SelectOutput5模块,根据CesselID对代理进行条件分流。
异常现象
流程运行时,SelectOutput5将所有代理都导向第一条路径。但通过traceln日志检查,集装箱进入SelectOutput5模块时CesselID值正确:
Container 20079 going to selectOutput5 with CesselID: 0 Container 20951 going to selectOutput5 with CesselID: 1
相关代码与验证信息
- 船舶ID分配代码写在BerthSeize块的On exit事件中:
agent.berth = (Berth) unit; if (!availableIDs.isEmpty()) { agent.VesselID = availableIDs.remove(0); traceln("Vessel " + agent + " assigned VesselID: " + agent.VesselID); }
- 船舶ID分配正常,日志显示:
Vessel 115 assigned VesselID: 0 Vessel 116 assigned VesselID: 1
问题推测
推测问题出在SelectOutput5的条件设置上,流程示意图显示代理未按正确路径流动,SelectOutput5的条件设置示意图见对应截图。
内容的提问来源于stack exchange,提问作者Scar
相关产品推荐
相关产品推荐

