【优化求解】基于深度强化学习DQN的城市轨道交通线网韧性恢复模型MATLAB代码、Logit 客流分配、地铁站点故障应急、公交接驳优化
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。
🍎完整代码获取 定制创新 论文复现点击:Matlab科研工作室
👇 关注我领取海量matlab电子书和数学建模资料
🍊个人信条:做科研,博学之、审问之、慎思之、明辨之、笃行之,是为:博学慎思,明辨笃行。
🔥 内容介绍
一、引言
城市轨道交通作为现代城市公共交通的核心组成部分,承担着大量的客流运输任务。然而,诸如地铁站点故障等突发事件可能严重影响线网的正常运营,降低其韧性。因此,构建有效的韧性恢复模型至关重要。基于深度强化学习的深度 Q 网络(DQN)技术为解决这一问题提供了新的视角,结合 Logit 客流分配方法,能够更好地实现地铁站点故障应急以及公交接驳的优化。
二、关键技术概述
深度强化学习与 DQN
深度强化学习原理:强化学习是智能体通过与环境进行交互,根据环境反馈的奖励信号来学习最优行为策略的过程。深度强化学习则是将深度学习与强化学习相结合,利用深度神经网络强大的函数逼近能力,处理高维、复杂的状态空间。
DQN 的工作机制:DQN 是深度强化学习的经典算法之一。它引入了经验回放机制和目标网络,解决了传统强化学习中数据相关性和 Q 值估计不稳定的问题。智能体在环境中采取行动,环境返回新的状态和奖励,这些经验被存储在经验回放池中。DQN 从池中随机采样经验进行学习,通过优化 Q 网络,使得 Q 值能够准确估计采取某个行动在某个状态下的长期累积奖励,从而找到最优策略。
三、城市轨道交通线网韧性恢复模型构建
状态定义:为了让 DQN 能够有效处理轨道交通线网的状态信息,需要合理定义状态空间。状态可以包括各条线路的运营状态(正常、故障)、各站点的客流积压情况、列车的运行位置和载客量等。例如,用一个多维向量表示状态,其中每个维度对应一个特定的信息,如第一个维度表示某条关键线路的故障与否(0 表示正常,1 表示故障),后续维度表示各个站点的实时客流数量等。
行动空间:行动空间定义了智能体在每个状态下可以采取的操作。在轨道交通线网韧性恢复场景中,行动可以包括调整列车的运行时刻表、改变列车的停靠站点、启动公交接驳方案等。例如,行动可以编码为离散的整数,每个整数对应一种具体的操作,如 0 表示不进行任何调整,1 表示增加某条线路的列车班次,2 表示改变某列车的停靠站点组合等。
奖励设计:奖励函数是引导智能体学习最优策略的关键。奖励应与线网的韧性恢复目标紧密相关,例如,减少客流积压、缩短乘客平均出行时间、提高线网整体运营效率等。当智能体采取的行动能够有效缓解站点客流积压时,给予正奖励;若行动导致线网运营状况恶化,如增加了乘客的等待时间或导致更多的列车晚点,则给予负奖励。例如,奖励函数可以设计为:R=αΔP+βΔT+γΔE,其中R是奖励值,ΔP是客流积压的变化量,ΔT是乘客平均出行时间的变化量,ΔE是线网运营效率的变化量,α、β、γ是权重系数,用于调整各因素在奖励中的相对重要性。
⛳️ 运行结果
📣 部分代码
alfa=0.88;%风险规避程度
beita=0.88;%风险偏好程度
lamada1=0.2;%风险规避系数(出发时间)
lamada2=0.33;%风险规避系数(出发时间)
u0=tte+(tta-tte)/2;
rdt=(dt-1)*10;%出发时间换算
for k=1:cell{i,j}.route_num
if rdt+cell{i,j}.bus_travel_time(k,dt)>=tte&&rdt+cell{i,j}.bus_travel_time(k,dt)<u0
futillity(k)=lamada1*(rdt+cell{i,j}.bus_travel_time(k,dt)-tte)^alfa;%收益
elseif rdt+cell{i,j}.bus_travel_time(k,dt)>=u0&&rdt+cell{i,j}.bus_travel_time(k,dt)<=tta
futillity(k)=lamada1*(tta-rdt-cell{i,j}.bus_travel_time(k,dt))^alfa;%收益
elseif rdt+cell{i,j}.bus_travel_time(k,dt)<tte%到得太早
futillity(k)=-lamada2*(tte-rdt-cell{i,j}.bus_travel_time(k,dt))^beita;
elseif rdt+cell{i,j}.bus_travel_time(k,dt)>tta%到得太晚
futillity(k)=-lamada2*(rdt+cell{i,j}.bus_travel_time(k,dt)-tta)^beita;
end
end
