Anylogic值机仿真队列超量引导行人时ped无法解析报错求解
问题解决方法
报错原因
你收到ped cannot be resolved to a variable报错的核心原因是:AnyLogic行人库的pedservice模块中,「进入时」动作的默认当前行人代理变量名为agent,你代码里用的ped没有被定义,因此无法识别。
修复方案
- 方案1:直接修改你现有代码里的变量名,把
ped替换为agent即可,修改后代码如下:
QueueSize = CheckInEco.size(); if (QueueSize > 15) CheckInEco.cancel(agent);
- 方案2:如果你想保留
ped作为变量名,可打开CheckInEco模块的「高级」设置页,将「代理名称」配置项的参数值改为ped,原有代码不需要改动即可正常运行。
逻辑优化建议
你不需要额外定义QueueSize变量存储队列长度,可直接调用模块的size()方法做判断,简化后的代码如下:
if (CheckInEco.size() > 15) { CheckInEco.cancel(agent); }
注意事项
- 请确认
CheckInEco模块的ccl(取消出口)已经和备用服务通道的入口正确连接,被取消进入的行人才会正常流入备用通道流程。 - 你当前的判断逻辑是基于队列长度触发分流,如果后续需要切换为按队列等待时间阈值触发,需要额外遍历队列内的行人计算最早进入队列的行人等待时长,再做判断。
内容的提问来源于stack exchange,提问作者Speedmaxl
相关产品推荐
相关产品推荐

