分布式多智能体深度强化学习在多线动态公交时刻表优化中的应用

303 阅读4分钟

分布式多智能体深度强化学习在多线动态公交时刻表优化中的应用

Distributed Multiagent Deep Reinforcement Learning for Multiline Dynamic Bus Timetable Optimization


摘要

  • 提出了一种多智能体深度强化学习框架学习信息不完全的情况
  • 采用分布式强化学习算法克服了计算成本高、效率低的局限性

多线调度:一个公共汽车站可能由几条不同的公共汽车线路共享,乘客可以有多种路线选择到达目的地,调度时应考虑多条公交线路之间的相互作用。

分布式强化学习相关知识: asynchronous advantage actor–critic 算法和 importance weighted actor–learner architecture 算法;分布式优先经验重放架构:distributed prioritized experience replay (Ape-X) ->Ape-X DQN和Ape-X DDPG;


介绍

  • 主要问题

    1、难以建模

    2、==一个epoch持续时间很长==:公交线路从早上运行到晚上

  • 贡献

    1、建模->可动态决策;在运行过程中==动态调度==,而不是基于历史数据估计未来状态形成固定的调度。

    2、分布式环境下的强化学习框架


框架

  • 基本变量

    • ll表示公交线路;jj表示站点;sjls^l_j表示站点j-1到j的距离;TjklT^l_{jk}代表线路l在k次旅途时(=第k个车)从j-1车站到j车站的运行时间;tjklt^l_{jk}代表到达j车站的时间戳;ejkle^l_{jk}代表驶离车站j的载客数;ujku_{jk}代表在车站j的上客人数;djkd_{jk}代表下客人数;CAPklCAP_k^l代表车辆容量上限;UjklU_{jk}^l乘客在站点j的总等待时间;xklx_k^l代表发车时间。
  • 观察函数:用双目标函数来计算运营成本和乘客成本,并将其转化为一个单目标优化问题。

    • 运营花费:其中αα表示平均车辆运营成本;hah_a平均每客上车时间;hbh_b平均每客下车时间;h(j,k,l)h(j,k,l)停站时间。【原文公式格式有误,(2):h(j,k,l)h(j,k,l)=max{...}】image-20230703173855015

      每条线路、每个车辆、每个站点的运行时间+停站时间 求和乘以系数;其中停站时间=max{平均上客时间*min{上客人数,本站载客数-上站载客数},平均下客时间*下客数}

    • 乘客等待花费:ββ代表每位乘客等待花费的现金价值image-20230703175308514

      每条线路、每个车辆、每个站点的等待时间求和并乘以系数

    • 将多目标优化转化为单目标优化:image-20230703175535641

  • 约束

    • 营业时间BeginlxklEndlBegin^l\le x^l_k\le End^l ;其中BeginlBegin^l为运营开始时间,EndlEnd^l为运营结束时间。

      发车时间在营业时间内

    • 间隔时间 MinHWlxklxk1lMaxHWlMinHW^l\le x^l_k-x^l_{k-1}\le MaxHW^l;其中MinHWlMaxHWlMinHW^l和MaxHW^l 分别表示最小间隔时间和最大间隔时间

      k车与k-1车发车间隔在一个约束范围内

    • 到达时间tjkl=t(j1)kl+Tjkl+h(j1,k,l)t^l_{jk}=t^l_{(j-1)k}+T^l_{jk}+h(j-1,k,l)

      到站时间=前一站到站时间+站间运行时间+前一停站时间

    • 容量 ejkl=min{e(j1)kl+ujkdjk,CAPk}e^l_{jk}=min\{e^l_{(j-1)k}+u_{jk}-d_{jk},CAP_k\}

      车上人数=min{上一站车上人数+上客人数-下客人数 ,最大容量}

    • 车队数量g(t,l)FSlg(t,l) \le FS_l;其中FSlFS_l表示线路上最大车辆数,g(t,l)g(t,l)表示时间戳t时的车辆数
  • 强化学习框架

    • 步长:Δt表示,类似于时钟

    • agent:代表一条线路,每条公交线路是异构的,因此每个agent使用不同的policy

    • 动作空间:使用p代表选择发车的概率(如公式10),这种情况下间隔越大,概率越低,性能差AlA_lAl-A_l表示增加和减少发车间隔时间,al(t)a_l(t)表示动作,HWtlHW^l_t表示时间戳t时刻规定的间隔时间;当前时间-前一车发车时间 \ge 规定的间隔时间 并且 线路上的车辆 \le 最大车辆数 时 发车。规定agent每K步执行一次,因此动作步表示为KΔtKΔt

      image-20230704203543760image-20230704205039888

    • 状态空间:<Tjkl,sjl,ejkl,HWtl,txk1l,g(t,l),时间戳><T^l_{jk},s^l_j,e^l_{jk},HW^l_t,t-x^l_{k-1},g(t,l),时间戳>,其中的sjls^l_j表示站间距离

      状态空间的维度会随着车辆的增多而增多,因此把维度固定为(3×FSl+3)(3 × FS_l + 3),不足的padding填充。

    • 奖励函数:u(t,l)u(t,l)表示在时间t时刻线路l上所有站点人数

      根据公式4:奖励应该涉及到运营(公式14)和乘客等待(公式15),奖励为每个动作步下×车辆数or人数×系数;奖励函数与目标函数的关系可表示为公式17、18

      image-20230704212141221image-20230704212608032

      最终奖励:image-20230704213215234,其中γ表示折扣率。

  • 算法:使用Ape-X DQN

    • DQN:使用double Q-learning解决高估问题,multistep bootstrap targets作为学习算法,dueling network architecture作为函数值近似。

    • Ape-X DQN:

      image-20230705094910333.png

      1、不同的actor生成不同的experience,存放到buffer中,并计算初始优先级。2、learner从buffer中采样、优化参数、更新优先级。3、lt(θ)l_t(θ)较大的数据共享给整个系统。4、为解决时间跨度大的问题,将experience分为一小批让learner进行训练。5、使用多步时间差(TD)误差作为优先级,用lt(θ)l_t(θ)表示;lt(θ)l_t(θ)越大,表示数据优先级越高,数据优先级高的数据会引起更多的训练。公式中的n为步数。image-20230705093959810

      • 经验获取组件(actor)image-20230705095842349
      • 采样学习组件(learner)image-20230705095903027