RETURN_TO_INDEX

RESEARCH_ENTRY // 研究笔记

仓储场景中的多智能体调度思路

从路径冲突、任务分配与动态避障出发,梳理 AGV 多智能体调度模型。

问题定义

仓储 AGV 调度需要同时回答三个问题:哪台车执行哪个任务、选择哪条路径,以及发生阻塞时如何重新规划。局部最优的路径不一定带来全局最优的吞吐量。

可以把系统状态表示为车辆位置、电量、载荷、任务队列、地图占用和时间。约束不仅来自静态障碍,还包括路口互斥、窄通道方向、充电站容量、取放货服务时间与安全距离。

目标函数也往往不止最短路:

cost = α × 总完成时间
     + β × 迟到惩罚
     + γ × 空驶距离
     + δ × 冲突与重规划次数

权重必须对应真实运营目标。只优化平均完成时间,可能让少数任务长期饥饿;只追求设备利用率,也可能造成主通道拥堵。

分层求解

上层调度器根据距离、电量和队列负载分配任务;下层规划器基于时空图搜索无冲突路径。执行过程中持续收集位置和任务状态,在滚动时间窗内重新优化。

任务分配

简单场景可以使用匈牙利算法求车辆与任务的最小费用匹配。费用不应只有欧氏距离,还应包含到达取货点的预计时间、剩余电量、当前载荷、任务优先级和区域拥堵。

持续到来的任务适合滚动优化:每隔固定时间或在关键事件发生时重新计算未锁定任务,已经进入执行阶段的任务则设置切换成本,避免车辆频繁改派。

无冲突路径

单车 A* 只保证不撞静态障碍。多车系统需要在“位置 + 时间”空间中规划,并建立顶点与边的预约表,阻止两辆车同时进入同一节点或沿同一边对向交换。

优先级规划实现简单、实时性好,但高优先级车辆可能堵死低优先级车辆;CBS(Conflict-Based Search)能通过冲突约束寻找更优解,但车辆多时计算成本较高。工程上常采用分区、时间窗和优先级规划组合,在局部拥堵区域再使用更精细的冲突搜索。

执行与重规划

真实车辆不会严格按仿真时间到达。定位误差、装卸延迟和临时障碍都可能使预约失效,因此执行器要持续比较计划状态与实际状态。

并非每次偏差都要全局重算。轻微延迟可以局部顺延预约;路径被阻断时重算受影响车辆;只有吞吐明显下降或出现死锁风险时才触发全局调度。频繁重规划本身也会造成系统震荡。

死锁与拥堵

死锁常见于窄通道和环形等待。除了运行时检测等待图,还可以在地图层预先标记单向通道、会车点和禁止停留区。调度器应限制热点区域同时进入的车辆数,并为充电、停车与异常车辆保留缓冲位。

比“检测到死锁再后退”更好的策略,是让预约系统提前识别循环等待,并在进入关键区域前调整优先级。

Agent 化的可能性

语言模型不适合直接替代确定性的路径搜索,但可以参与异常解释、策略选择与人机协同。让模型负责“理解情境”,让算法负责“保证约束”,通常更可靠。

一个合理的分工是:优化器输出可行计划和指标,规则引擎守住碰撞与设备约束,LLM 读取结构化状态和历史事件,生成异常摘要、推荐策略或操作员可理解的解释。模型提出的“封锁区域”“降低任务优先级”等动作仍要经过权限校验和仿真验证。

评估方法

调度算法至少应在以下场景中回放:正常峰值流量、任务突发、单车故障、通道封闭、定位延迟、充电站排队和网络抖动。观察吞吐量、P95 完成时间、空驶率、能耗、停车次数、死锁次数和重规划耗时。

离线仿真需要保留随机种子和完整事件日志,才能比较两版策略。上线时先做影子计算:新调度器只生成计划不控制车辆,与现网决策对比,确认稳定后再逐步接管低风险区域。

仓储调度的难点不是找到一条最短路径,而是在持续变化的共享空间中,让局部决策服从全局吞吐、安全与可恢复性。