​基于学习的地铁客流动态预测智能调度方法

news2024/12/24 20:52:15

1 文章信息  

文章题为“A Learning Based Intelligent Train RegulationMethod With Dynamic Prediction forthe Metro Passenger Flow”,该文于2023年发表至“IEEE TRANSACTIONS ON INTELLIGENT TRANSPORTATION SYSTEMS”。文章的核心观点是提出了一种基于学习的智能列车调节方法,该方法通过动态预测地铁乘客流来优化列车的运行。

2 摘要  

随着城市化的加速,动态乘客流对实际列车运营的影响日益增长。在本文中,我们提出了一种基于学习的智能列车调节方法,该方法具有动态乘客流预测功能。为了捕捉动态地铁乘客流的特征,建立了一个卷积神经网络来实时预测从空间和时间两个维度的乘客流。由于实际乘客流数据的不足限制了预测精度,构建了一个深度卷积生成对抗网络来生成与原始乘客流数据集具有相同分布的数据。然后,考虑到动态乘客流对列车运营的影响和列车容量限制,将动态列车调节问题表述为一个多阶段最优控制问题,目标函数是最小化列车牵引能耗和乘客的总旅行时间。为了在每个决策步骤中有效地获得最优调节策略,提出了一种深度Q网络算法来解决制定的问题,从而避免了由于过度状态空间引起的维数爆炸。数值实验表明了我们提出的算法和模型的高效性和有效性。

3 引言  

现有的列车调度方法主要是基于静态乘客流数据设计的,例如假设客流遵循某种固定分布,直接使用某一天的历史乘客流数据。然而,客流的分布具有随机性,在时间和空间上都会出现波动,这可能会降低列车调度方案的性能。因此,有必要设计一种能够适应动态乘客流需求的智能列车调度策略。

当训练数据量足够大时,可利用深度学习模型进行客流预测。然而,由于隐私保护和利益冲突的原因,不同城市轨道交通管理部门的乘客流数据很少共享。因此,可采用数据增强的方法弥补这一缺陷,本文利用GAN来实现数据增强。

文章贡献之处在于:

1、构建CNN网络实时预测乘客到达率和下车率。此外,为了缓解训练数据不足对CNN模型精度的影响,引入了一种基于GAN的数据生成方法来实现数据增强。

2、为了求解具有动态参数更新的非线性最优控制问题,利用预测的实时乘客到达率和下车率来训练基于DQN的算法,以获得理想的调节策略。该算法既避免了状态空间过大带来的维数爆炸,又满足了列车运行调控的高实时性要求。

4 问题定义 

设列车集合为03021fbf3eda4e1322abca682ed97842.png,车站集合为5240550b0cf62abd1d54b41644fd0d81.png,假设所有列车在地铁线路上按顺序向一个方向运行,不允许超车和两车平行运行。假设在列车i在车站k停靠期间,到达的乘客会乘坐下一辆列车。此外,所有乘客都应该遵循先进先出的原则。

(1)列车动态运行模型

设列车i到达k站的时间为f21fb4edfa73c688d2406e7744c4b849.png,列车在k到k+1站的运行时间为82720efa19224ad37906518f121b2337.png,列车在k站的停站时间为ad5c169a7415a18a4c9e36a8bf193f25.png,其中,停站时间为决策变量,当3fbc84fd4ac47c82c37af5ca99c0f5a7.png时设d80ef514d3189ec280214362cae4fa03.png为车站k的开通时间。则

6dc071021181d7ea25dcbd2dc47066c1.png

列车停站时间需要满足最大最小的约束,即:

a4a95b4f1f84f3ba58fe3240f69b5498.png

同时,列车在铁路上行驶时,不允许后面的列车超过前面的列车,列车i−1到达时间与列车i到达时间之间的车头距应满足以下约束条件:

caa1963ec4b2a60c5ccf7ea218f537a6.png

其中,ddc41bb9a716f3dcf28e0b9275c3547c.png表示列车车头距的最大最小值。

列车在始发站76386ede56d00fcf7a332e999490266c.png的发车时间为:

cc883b9c8f516d9ea6b61038c11f1039.png

在前后两辆列车达到k站的时间间隔内,客流人数为:

ba99197688a3dccaa5002838d5696460.png

其中,f2fd43389158fa2d4697b2330e5d9382.png为第i辆列车到达k站时的乘客到达率。

下车率与上车人数成正比,在k站下车i列车的乘客人数为:

0f8647651c0548163afa7ebcc27170df.png

其中,27e2bd278d20f5b73ee3cb46521cc715.png表示在k−j站乘坐列车i并在k站下车的乘客的下车率。

e255339402ba7b99c3b0332d95a59292.png为列车i到达k车站时的可变乘客数,C为列车容量。

8d3cd1e63e677c0e0ac156a80a716f37.png

157f8fcbf9d3fb62314a72af2f898f6f.png为在k车站未能登上列车i的乘客数:

e8e4fae30bab71c470fd01e7b8ad4e4d.png

其中,在公式7和公式8中都以逗号分为两部分,公式7中,第一部分表示不计列车运力,列车i到达k站时的理想乘客人数。如果第一部分小于列车的载客量,那么所有到达车站的乘客都可以上车。如果第一部分大于列车容量,则列车只能容纳最大容量。公式8中,第一部分的前四项之和大于列车载客量,则可能有部分乘客需要等待下一辆列车,剩余乘客的数量将等于前四项减去列车载客量。否则,没有乘客留下,则a1e789a9da0858356fc35978a4102ab5.png为0。

(2)动态客流预测模型

文章利用CNN进行动态客流预测,采用单步预测。其过程可描述为:

2ccea43fb2d0221a1391153c86a7acd6.png

其中f为卷积神经网络模型,n为时间步,x、y、z为各站历史客流数据,6e22c108b57d717229785b5eac434403.png为各站下一时刻客流预测值。

(3)目标函数

文章的目标是最小化列车牵引能耗和乘客总旅行时间。设S为旅客的总出行时间,包括旅客在车时间和在站台等候时间,可表示为:

ec638218de937b8b599f71f54b2e5b6b.png

其中,α1为旅客在车时间权值,α2为旅客等待时间权值。

总旅客在车时间S1由列车运行时间和列车停留时间组成,如下:

de887bf708162770e7de015d13de707b.png

旅客在车总时间包括两个部分。第一部分表示列车在两站之间运行时乘客在列车上的总时间。第二部分表示列车到站时乘客在列车上的总时间,其中乘客人数可以通过列车到站时已经在列车上的乘客人数减去下车的乘客人数加上上车的乘客人数来计算。

乘客在站台的总等候时间S2也由两部分组成。第一部分是列车i和列车i−1到站时间内到达车站的旅客的等待时间,第二部分是被末班车抛下,需要等待下一班车的旅客的等待时间,如下。

de3007652bfd287bb655062257c17fed.png

列车牵引能耗可表示为:

2011ae6574056d28eb35632dab2278b6.png

其中,645dd458a77e2bfe9d9721e87cbcaefe.png为列车牵引能耗,3d0db56e9288b1b874e31991cbb332d3.png乘客平均重量,34a4300afe7e50c1225136c9f6c39510.png为列车重量,ab525255c1e45d85cf68ca0ad35dfb5e.png为列车牵引能耗系数。

综上,目标函数可设为:

d81e82c5867c856bd3a46313a1d5916b.png

其中,α3为乘客出行时间权重,α4为能耗权重。

(4)优化模型

根据以上描述,优化模型如下:

91e56eafbdef93bd8ca34ada3911c07a.png

该问题是一个非线性动态规划问题,258daeab13c8ce692c694ef2b72c2520.pngad379e173f5d311a5a4fb62d7cadfd2b.png为决策变量,975dc3a982632f4a6c5253e47b86aaf8.png2bde017b63bb05bf24b6907cfdcc5efc.png9f731efd3485590ad9adf9fb61cb1a24.png为状态变量,前三个方程是状态转移方程。第五个不等式方程是决策变量98c20b55ca4387f2bd34950baa99c2a1.png的约束。由公式4可知,列车i在始发站40a7ad2f1499044f2c4ba01f5ce25cf3.png的发车时间与到达时间e9f65db8cbd053998073980c8272f38c.png和停站时间19527c40eea482106700291ab805f22f.png有关,因此,第四个和第五个不等式方程是决策变量5a1e7f1573ceae5d60ee9845816ed501.png的约束。

基于GAN数据生成的客流预测方法

文章提到原始的GAN网络生成的数据质量令人不满意,于是提出了深度卷积生成对抗网络DCGAN,用卷积神经网络代替了生成器和鉴别器,使得生成的样本质量和模型的收敛速度都有了明显的提高。其结构如图所示。文章提到数据量偏少的问题,可经过该网络获得真实的客流数据,弥补该问题。

ce5eadf8988ad8bf24940886d51690c3.png

6 基于卷积神经网络的客流预测

在实验中发现,使用历史客流数据来训练调节模型并不能很好地匹配车站动态客流的特征。因此,引入卷积神经网络来实时预测客流量进而计算乘客到达率和下车率。具体来说,模型使用历史乘客流量数据作为输入,预测接下来时刻的客流量。这些预测的乘客流量数据包括了不同站点的信息,允许模型同时预测多个站点的乘客流量。然后,利用这些预测的乘客流量数据,可以计算出每个站点的乘客到达率(即单位时间内到达的乘客数量)和下车率(即单位时间内离开列车的乘客数量)。这些率随后被用作动态火车调节模型中的参数,以此来优化火车的运行时间表和站台停留时间,减少能耗,并改善乘客的出行体验。下图为模型结构。

4043b1d0729cad28b8fcb2e680bc32eb.png

7 列车智能调度算法设计

强化学习是一种让计算机通过不断的尝试从错误中学习,最终找到规则并完成目标的方法。在强化学习算法中,决策者与环境相互作用。通过观察环境s的状态,决策者采取行动a,然后环境返回给决策者奖励r和新状态s’,然后决策者根据奖励采取新行动a'。决策者的目标是使回报最大化。

在提出的列车运行实时调整问题中,决策者是每列列车。动作为列车i在始发站的出发时间和列车i在k站的停留时间。由式(4)可知,列车i在始发站71c39307e86a75f367d6b2eb4aa24a2b.png的出发时间与到达时间323260655651d13e746fcd29cdf82e02.png和停留时间416153efd38609f12f7026fa4da95249.png有关。因此,我们将动作1dadf98aa428072c8f6b30880e289410.png定义为:

adae33d6a8a944821b8f1eb06300a178.png

另外,将第i次列车在k站的奖励定义为列车牵引能耗、乘客在车时间和乘客在站台等待时间之和,表示为:

c85ad57ce08f13a2024f3ab5a7af33cd.png

由于模型的目标是使列车牵引能耗和乘客总出行时间最小,所以需要找到一个使所有车站所有列车的总奖励最小的行动策略:

6a5a0915cd0ace0459989a13b13de8ee.png

强化学习引入一个价值函数来评估某一行动策略所获得的总收益。价值函数可以根据当前状态的行为策略预测未来累积收益的期望。为了评估每个动作的值,定义动作值函数的Bellman方程:

7038971b32e08e3e05d843552733e53c.png

Q学习是一种重要的基于值函数的强化学习方法。它以表格的形式存储每个动作9b2be21dcaaefbb915a34f3aa5c6fe76.png的值函数。Q-learning的迭代实际上是对每个状态-动作的Q值表的更新。当Q表最终收敛时,决策者使用贪心策略根据值函数表选择行动:

89ff983d90b041fb4e7e13b3acaa7f66.png

贪心策略是一种确定性策略,它只选择使价值函数最优的行为。如上所述,最优行为是使价值函数最小化。因此,我们让:

d64dcc8c336fd95d54b5f8f1d85bc9eb.png

但是,如果状态空间的维数非常大,或者状态空间是连续的,则值函数不能存储在表中。在我们提出的列车运行实时调整优化模型中,状态变量是一个三维向量,表格强化学习方法不再适用。

深度Q网络算法(DQN)将深度学习与Q学习相结合,允许深度神经网络近似Q函数,从而完美地解决了维数过大问题。因此,选择DQN来处理列车运行实时调整模型。DQN的结构如图所示。用来逼近Q函数的神经网络称为Q网络。DQN算法值函数的更新是参数θ的更新。采用随机梯度下降法,使目标Q值与待逼近Q值之间的差值最小,形成为:

f9552ce74d06782ac9ba85b1c5287b12.png

其中,eba83c293afc503c2de2c054b59cd711.png是目标值。

8275de26193c21ccb63f117fe0c39223.png

然而,用于计算目标Q值的参数与梯度更新中要逼近的值函数相同,这会导致数据之间的相关性,降低训练的稳定性。因此,提出了一种双重网络结构。设计一个目标网络来计算目标Q值。目标网络的结构与Q网络相同。Q网络的参数θ每步更新一次,目标网络的参数31416d6429e35cc41f9937506288c041.png每F步更新一次。当更新目标网络的参数时,Q网络复制它的参数θ到目标网络。然后,将值函数更新为:

0fae32df4962c8b6cfa3435cb9403833.png

DQN设计了一个重放缓冲区来打破训练数据之间的相关性。决策者按时间顺序将当前状态s、当前动作a、下一个状态s'和奖励r'存储到重放缓冲区中。然后,采用均匀随机抽样的方法从回放缓冲区中提取数据进行神经网络训练,降低了数据之间的相关性,稳定了训练结果。列车运行实时调整DQN的训练如以下算法所示。

bbdfaafe6523f9859c7071d24bdf290d.png

根据以上研究,列车运行动态调整过程可归纳为算法3。首先基于DCGAN,生成与原始客流数据分布相同的数据,并将生成的数据作为CNN的训练集。然后将CNN预测的客流数据作为算法2的参数,使用算法2训练DQN。最后,基于训练好的DQN进行列车运行调整。

5613aa11f4ee232d25a9890ebde95b14.png

8 实验

作者做了三组实验,第一组实验验证了所提出的数据增强模型DCGAN的有效性,第二组实验比较了RNN、LSTM、CNN和基于DCGAN的卷积神经网络模型的预测结果,以证明该模型的优越性。最后一组实验将基于经验的DQN方法的结果与设计的基于动态预测客流的DQN方法的结果进行了对比,验证了基于动态预测客流的DQN方法的性能。考虑推文篇幅,主要介绍第三组实验的内容。作者使用具有13个站的北京地铁13号线作为实验对象。

在这组实验中,使用基于经验的方法为方法1、基于固定客流的方法为方法2、基于固定客流的DQN方法为方法3、基于动态客流设计的DQN方法为方法4。

方法1中列车运行时间和停留时间的调度均基于北京地铁13号线的实际运行数据;方法2和方法3中,由于仅以列车停留时间为优化变量,列车运行时间也以实际运行数据为基础,固定的客流参数采用地铁13号线2014年3月平均客流计算。方法4采用本文提出的CNN模型对动态客流参数进行预测。我们首先观察方法3和方法4的值函数的收敛过程。然后,利用本文提出的方法编制列车运行时刻表。最后,比较了四种列车运行方案的目标值、牵引能耗、乘客在车时间和乘客候车时间。

da62505a87542e0dd7fb7ab74fdeaf22.png

该图显示了方法3和方法4的收敛过程。DQN模型的训练过程是不稳定的。如果迭代次数不够,模型将不能很好地收敛。此外,在迭代开始时,模型波动较大。随着迭代次数的增加,奖励将逐渐收敛,最终在最优奖励附近略有波动。

下图为基于方法4绘制的列车运行时刻表。由于每列列车在各站停留时间是一个有待优化的变量,因此列车i与列车i−1在k站到达时间之间的车头距是不同的,这就意味着运行时间是不规律的。

77116c7587cde06a861242789a475c23.png

下表给出了四种列车运行调度方法对应的计算结果。比较了三种列车运行方案的目标值、牵引能耗、乘客在车时间、乘客等待时间和决策时间等因素。目标值按式(13)计算,牵引能耗按式(12)计算,旅客在车时间按式(10)计算,旅客候车时间按式(11)计算。

fc489be4d3edeb240bb2e203df6c5451.png

可以看出,采用方法绘制的列车运行时刻表的目标值、牵引能耗、旅客在车时间和旅客候车时间均最高。即根据经验设计列车运行时刻表是不合理和不科学的,这会增加能源消耗,降低服务水平。

通过对比方法2和方法3,可以发现方法2的训练次数要比方法3少得多。这是因为DQN方法需要训练神经网络,这比训练表要困难得多。然而,当比较优化结果时,方法3比方法2要好得多,这是因为使用ADP算法需要离散化训练状态来降低维数,从而降低了模型的精度。DQN模型采用Q神经网络对列车停留时间进行决策,不需要降低列车状态维数。此外,我们还注意了方法的决策时间。可以观察到,当训练完成时,方法3的决策时间也小于方法2,这是因为方法2需要遍历整个表才能找到最优的训练停留时间,而方法3使用Q网络直接输出最优结果。

根据方法3和方法4比较,可以发现使用方法3制定的列车运行计划的确降低了列车牵引能耗和乘客总行程时间,但优化结果也不如方法4,这是由于方法3没有考虑动态客流的影响。采用方法4编制的列车运行时刻表的旅客总行程时间小于方法3,说明本文提出的方法4能更好地适应动态客流。此外,方法4大大降低了列车牵引能耗。并且采用方法4对列车发车时间和停留时间进行调整,可以在节约能源和提高乘客舒适度之间取得平衡。

9 结论

文章首先构建DCGAN模型,以生成足够的客流数据。然后,基于所提出的DCGAN生成的数据进行客流预测。建立了从空间和时间两个维度预测客流的CNN。根据预测的实时乘客上车率和下车率,提出了一种基于DQN的学习算法,计算列车调度策略,动态调整列车发车时间和停留时间,使列车牵引能耗和乘客总旅行时间最小。利用北京地铁13号线的运行数据对该方法进行了验证。仿真结果证明了该方法的有效性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2234848.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot+FileBeat+ELK8.x版本收集日志

一、准备环境 1、ElasticSearch:8.1.0 2、FileBeat:8.1.0 3、Kibana:8.1.0 4、logstach:8.1.0 本次统一版本:8.1.0,4个组件,划分目录,保持版本一致。 说明:elasticsearch和kib…

【大数据学习 | HBASE】habse的表结构

在使用的时候hbase就是一个普通的表,但是hbase是一个列式存储的表结构,与我们常用的mysql等关系型数据库的存储方式不同,mysql中的所有列的数据是按照行级别进行存储的,查询数据要整个一行查询出来,不想要的字段也需要…

论文速读:动态再训练-更新用于无源目标检测的Mean Teacher(ECCV2024)

原文标题:Dynamic Retraining-Updating Mean Teacher for Source-Free Object Detection 中文标题:动态再训练-更新用于无源目标检测的Mean Teacher 本篇文章为论文速读,以帮助大家快速了解大意,具体详解可以看这篇分享。ECCV2024…

科研绘图系列:R语言带有面积区域的折线图(linechart)

文章目录 介绍加载R包数据画图准备图1图2图3图4图5图6图7图8图9图10合并所有图形系统信息介绍 带有面积区域的折线图通常被称为面积图(Area Chart)。面积图结合了折线图和条形图的特点,通过在折线下方的区域填充颜色或纹理,来展示一个或多个组的数值如何随第二个变量(通常…

Golang--文件操作

1、文件 文件:文件用于保存数据,是数据源的一种 os包下的File结构体封装了对文件的操作(记得包os包) 2、File结构体--打开文件和关闭文件 2.1 打开文件 打开文件,用于读取(函数): 传…

Ubuntu学习笔记 - Day3

文章目录 学习目标:学习内容:学习笔记:vim简介vim键盘图工作模式 vim移动光标操作上下左右移动翻页 vim替换和删除操作替换删除 vim插入模式详解进入模式搜索 vim底行模式操作保存退出行号 学习目标: 一周掌握 Linux基本使用技巧 …

Java中的JDBC的详解

数据库驱动包 Java提出的一套关于数据库操作的接口 各个数据库厂商要把自己的api对接到/适配到jdbc上 程序员只需要掌握一套api就可以操作不同的数据库了 数据库厂商提供的这个原生api适配到jdbc转换程序,称为“数据库驱动包” 1)创建数据源 //1,创…

Apache-Hive数据库使用学习

前期准备 Hadoop-分布式部署(服务全部在线) Mysql-node1节点部署(确认安装正常) apache-hive -node1节点部署(需要与MySQL元数据联动存储) 参考博客: Hadoop Hadoop集群搭建-完全分布式_hadoop完…

【极客兔兔-Web框架Gee详解】Day2 上下文Context

文章目录 一、框架结构二、设计上下文(Context):day2-context/gee/context.go1. 设计Context必要性1.1 接口粒度过细:1.2 缺乏扩展性:2. 代码3. 优势三、路由(Router): day2-context/gee/router.go四、框架入口:day2-context/gee/gee.go1. 代码五、框架使用: day2-context/m…

LeetCode17. 电话号码的字母组合(2024秋季每日一题 59)

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digits “23” 输出:[“…

DApp开发定制:合约设计与源码搭建支持快速上线

随着区块链技术的飞速发展,去中心化应用(DApp)已经成为区块链生态中不可或缺的一部分。DApp不仅改变了传统互联网应用的运作方式,还通过去中心化的理念和智能合约的支持,赋能了用户和开发者。无论是金融、游戏、社交、…

【C++】手动实现C++ vector容器:深入理解动态数组的工作原理

💯个人主页: 起名字真南 💯个人专栏:【数据结构初阶】 【C语言】 【C】 【OJ题解】 目录 1. 引言2. 实现思路3. vector 容器的代码实现4. 代码详解4.1 构造与析构函数4.2 容量管理4.3 迭代器与访问操作4.4 增删操作 5.测试代码6. 时间和空间复杂度分析7.…

深入探讨钉钉与金蝶云星空的数据集成技术

钉钉报销数据集成到金蝶云星空的技术案例分享 在企业日常运营中,行政报销流程的高效管理至关重要。为了实现这一目标,我们采用了轻易云数据集成平台,将钉钉的行政报销数据无缝对接到金蝶云星空的付款单系统。本次案例将重点介绍如何通过API接…

Appium环境搭建/使用教程(图文超详细)

一,环境依赖JDK和Android SDK搭建 (1) JDK: 下载安装(推荐java8版本,其他版本不兼容,会导致appiumServer启动不了) 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html根据自己的系…

大数据-209 数据挖掘 机器学习理论 - 梯度下降 梯度下降算法调优

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

模拟实现strcat函数

1.strcat的作用 char * strcat ( char * destination, const char * source ); 作用:将源字符串的附加到目标字符串中。目标字符串中的终止空字符将被源字符串的第一个字符替换,并且在将两个字符串连接形成的新字符串的末尾将包含一个空字符。 destina…

c++多线程QThreadpool调用Python脚本时崩溃报错的解决方案二

问题 还是c Qt多线程调用Python脚本时的问题。使用QthreadPool的方式调用,按照上次的解决方案也可以实现,虽然可能不出现崩溃问题。但是仍然有很大可能会出现死锁。即调入函数后,再无输出,变成一个黑洞… 解决方案 因为我使用的…

知从科技受邀出席ARM日产技术日

10月29日,上海知从科技有限公司受 ARM 之邀,参与了由其主办的日产技术日活动。此次活动在日本神奈川县厚木市的日产技术中心盛大举行,这一活动汇聚了行业内的前沿技术与精英人才,成为科技创新技术交流的重要平台。 知从科技积极参…

设计模式讲解02—责任链模式(Chain)

1. 概述 定义:责任链模式是一种行为型模式,在这个模式中,通常创建了一个接收者对象的链来处理请求,该请求沿着链的顺序传递。直到有对象处理该请求为止,从而达到解耦请求发送者和请求处理者的目的。 解释:责…

Vue项目引入侧边导航栏

Vue项目引入侧边导航栏 侧边导航栏能够非常方便进行信息检索,这一款不错的侧边导航栏:vue-side-catalog,基本上能满足快速检索的需求 安装 官网 首先需要进入** vue-side-catalog**的官网,然后下载对应的源码,下载…