AnyLogic ATM模型:随机到达设置、队列异常及类型匹配错误求助
AnyLogic ATM仿真问题解决方案
1. 将schedule1设置为1000-2000随机整数
- 打开schedule1的配置窗口,将类型从「常量」切换为「表达式」
- 在表达式输入框中填入
uniform(1000, 2000),该函数会在每次调度时生成1000到2000之间的随机整数 - 保存配置即可生效
2. 队列始终保持1000人不减少的排查与解决
- 检查Source到达逻辑:确认schedule1对应的是「到达间隔时间」还是「每次到达的客户数量」。如果是后者,每次生成1000人会直接填满队列,需将schedule1改为控制到达间隔(比如1000-2000毫秒),而非单次到达数量
- 验证ATM流程链路:确保队列的输出端口正确连接到ATM的输入端口,ATM处理完成后通过
dispose模块让客户离开模型,避免客户滞留在流程中 - 查看事件日志:跟踪客户的流动路径,确认是否有客户从队列进入ATM,以及处理完成后是否正常离开,定位流程阻塞点
3. 切换Schedule为Rate类型时报类型不匹配的解决
Source设置为「按到达计划」时,要求引用的Schedule类型为Schedule<Integer>,而Rate类型的Schedule属于ScheduleWithUnits<RateUnits>,二者类型不兼容,解决方式二选一:
- 若想用速率控制到达:将Source的到达方式改为「按速率」,直接引用Rate类型的schedule,或在速率表达式中写入随机速率(如
uniform(0.5, 1),单位为客户/秒) - 若坚持用「按到达计划」:保持Schedule的整数类型,用前述随机表达式的方式实现随机值,不要切换为Rate类型
内容的提问来源于stack exchange,提问作者def init
相关产品推荐
相关产品推荐

