AnyLogic中如何让车辆在停车场等待至下一个停车场调用?
AnyLogic道路交通库:车辆跨停车场等待调度方案
核心模块选择
不用纠结delay块的untilstopdelay()配置,优先用道路交通库原生的Parking Lot模块,配合Wait模块或Move To模块的条件判断即可实现需求,逻辑更直观。
具体实现步骤
方案1:Wait模块+Move To模块
- 车辆从第一个停车场驶出后,接入
Wait模块,设置等待条件为:
(将parkingLot2.getNumberOfFreeSpaces() > 0parkingLot2替换为你第二个停车场的实际命名) - 当条件满足时,车辆离开Wait模块,进入
Move To模块,目标选择第二个停车场,完成转移。
方案2:Delay模块替代Wait(适配你的原有尝试)
- 把Delay块的延迟时间设为0,勾选「Wait until condition is true」,同样填入判断条件
parkingLot2.getNumberOfFreeSpaces() > 0 - Delay块出口直接衔接
Move To模块前往第二个停车场,车辆会一直滞留到目标停车场空闲才出发。
方案3:事件触发式调度(更高效)
- 给第二个停车场添加
On space freed事件,写入代码:// 假设用Queue<Vehicle> waitQueue存储等待的车辆 if (!waitQueue.isEmpty()) { Vehicle v = waitQueue.remove(); v.moveToParkingLot(parkingLot2); } - 车辆从第一个停车场驶出后,先判断目标停车场状态:
if (parkingLot2.getNumberOfFreeSpaces() > 0) { agent.moveToParkingLot(parkingLot2); } else { waitQueue.add(agent); }
车辆调用关键代码
- 判断目标停车场空闲:
parkingLot2.getNumberOfFreeSpaces() > 0 - 触发车辆转移:
agent.moveToParkingLot(parkingLot2);(agent为当前车辆对象)
内容的提问来源于stack exchange,提问作者Sushma
相关产品推荐
相关产品推荐

