基于多智能体强化学习的自动公交车队控制

266 阅读5分钟

基于多智能体强化学习的自动公交车队控制

Autonomous Bus Fleet Control Using Multiagent Reinforcement Learning


介绍

  • 存在噪声:因为随机到达和对环境不完全的观察——提出结合先进策略梯度算法的多智能体强化学习方法
  • 相对于启发式算法、动态规划算法,强化学习方法在随机和高维情况下是有效的
  • 主要贡献
    • 1、建模: 提出了多智能体强化学习方法来解决公交车队调度问题
    • 2、开发了 仿真平台(基于SimPy) 用于评估算法
    • 3、提出的强化学习方法优于其他方法

提出的MARL方法

  • 多agent期望收益梯度(公式5),每个agent有确定的策略μ={μθ1,...,μθN}μ=\{μ_{θ1},...,μ_{θN}\},其中每个s由所有的agent观察值组成。

    image-20230706113313538

    QiμθQ^{μθ}_i为:

    image-20230706113927895

    使用PPO代替DPG,使得目标在策略更新大小的约束下最大化:

    image-20230706114509300

    由于β值不好选取,提出修改(公式8):其中rt(θ)=πθ(atst)/πθold(atst)r_t(θ)=πθ(a_t|s_t)/πθ_{old}(a_t|s_t)为概率比;A^t\widehat{A}_t是时间步长t的优势函数的估计量;ε是一个参数,它使rt(θ)r_t(θ)远离1,以避免过大的策略更新

    image-20230706115527148

    最终改进的MADDPG算法:

    image-20230706193951344


仿真平台/环境

  • 使用SimPy作为仿真平台的框架

    在SimPy中所有活动组件(车、人等)被建模为一个进程,所有进程在一个环境下,遵循Gym架构,可以被RL算法使用。

  • 车辆作为唯一的agent,下面是一些定义:

    • 路线Route:固定的站点环线路线
    • 自动驾驶公交车(V):每个agent iVi∈V,这里有mm个agents (i=1...mi = 1...m),V/Λ后面跟着的数字表示车上的乘客数量;V/Λ表示agent在当前方向上的运行方向,- 表示空闲,等待策略更新;在一个站上可以有多个agent存在,他沿着确定的路线行驶,并可以在任何站掉头。
    • 车站(S):oSo∈S,有n个公交车站(n=1...n)(n=1...n)
    • 乘客(P):kPk∈P,V/Λ表示乘客乘车方向
    • 车辆容量(C):最多12个座位+6个站位;最大行驶速度(VmaxV_{max}):20km/h;站间距离(D):200-450m;制动时间(st):加速12s,减速12s;上下客时间(ltklt_k):正态分布随机变量,取值范围0.6-6.0s,均值1.75s;停站时间(dt):开关车门时间+上下客时间;乘客到达每个站为泊松分布,到达率为( λ)

    image-20230706190711777


解决方案

  • 基础

    • 状态空间(STATU):由观察空间和汽车状态 两个维度组成。

      • 观察空间:包括汽车位置、车内乘客数量、站台调度状态、车内请求。
      • 汽车状态:包括移动、空闲、预计停靠始发站、预计停靠终点站。
    • 动作空间(ACTS):两个维度共八个元素,在时间步t下可能有以下动作:

      • 0:_move_move:不停
      • 1:_move_idle:下一站停车
      • 2:_idle_ds_move:空闲,驶向始发站,不停车;
      • 3:_idle_ds_idle:空闲,驶向始发站,下一站停车;
      • 4:_idle_os_move:空闲,驶向终点站,不停车;
      • 5:_idle_os_idle:空闲,驶向终点站,下一站停车;
      • 6:_idle_idle:空闲,持续空闲;
      • 7:_idle_intend_os:空闲,预计驶向始发站;
      • 8:_idle_intend_ds:空闲,预计驶向终点站;
      • 9:_idle_intend_idle:空闲,预计空闲;
    • 奖励:目标是最小化平均平方乘客等待时间,其中wtkwt_k是乘客k的等待时间,γ是基于Bellman误差的奖励折扣率

      image-20230706200100047

  • 运行过程(其中粉色标记为数据,蓝色标记为MARL算法接口)

    image-20230706205509551

    • 环境

      • 定义了一个场景,根据场景数据为ACTS创建字典、为STATU创建状态。在每个流程步骤(Δs),将乘客和agent的位置和状态更新到STATUS中。
    • 乘客类

      • 生成每个乘客k∈P的初始站(oko_k)、目的站(dkd_k)和创建时间(ctkct_k
    • 公交车类

      • 定义每个agent iVi∈V的行为
    • 规则约束

      • 目标是减少乘客等待时间;

      • 决策发生在agent到达或加载完成时。当agent到站或完成前一个空闲事件时触发agent到达。当加载过程完成并且agent准备采取下一个操作时,将触发加载完成事件。

      • 有乘客想在某站下车时,agent不得越过此站;在该方向所有乘客下车前,不得掉头。

      • agent在移动时必须决定是否在下一站停车;如果agent处于空闲,必须选择预期的运行方向;下一站是终点站时必须停下;

      • agent i做出决策时,更新agent i的奖励

      • 乘客k呼叫agent i时,如满载,则返回False;否则乘客k进入agent i乘客列表,系统记录上车时间ptkpt_k;到达目的地时,移除列表;等待时间wtk=ptkctkwt_k = pt_k - ct_k,一轮(ττ)为1小时,每一轮后计算平均等待时间=总乘客等待时间/乘客数量;

        image-20230706211158514


实验

  • 在正式实验前,使用单个agent进行算法测试,再用多agent进行实验。madpg和DQN算法都能在单agent环境下学习到正确的行为,MADDPG的性能优于DQN。而在多agent下,MADDPG算法运行良好,MADQN无法学习正确的行为。

  • 在三种场景下实验:madpg算法的性能与服务频率密切相关

    • 大学校园(需求低):在乘客等待时间和VKH(车辆小时运营数)方面都比定时调度有效

    • 工业区(一般需求):在乘客等待时间优于定时调度,但在VKH方面不如

    • 市区(高需求):在乘客等待时间方面与定时调度相似,但在VKH方面的性能比定时调度差

      VKH较差的原因被解释为:为了减少乘客等待时间,所以VKH较差

  • 分配车队的影响:

    • 当乘客平均等待时间超过5分钟时,多加入一辆加班车
    • 在使用较小的车队规模来满足较大的出行需求方面,madpg方法明显优于定时调度

结论

  • 方法优于DQN、MADQN
  • 减少车队规模和减少低频路线乘客等待时间方面优于现有的调度方法