交叉口信号控制深度学习优化毕业论文【附代码】_第1页
交叉口信号控制深度学习优化毕业论文【附代码】_第2页
交叉口信号控制深度学习优化毕业论文【附代码】_第3页
交叉口信号控制深度学习优化毕业论文【附代码】_第4页
交叉口信号控制深度学习优化毕业论文【附代码】_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

交叉口信号控制模型与基于深度学习的优化方法研究主要方案城市交通是城市的重要组成部分,是居民衣、食、住的有力保障。不难发现,随着国民经济的发展和城市化进程的加快,我国机动车保有量急剧增加。机动车保有量的迅猛增长,加剧了城市交通拥堵程度,交通安全和交通污染等问题也日益严重。综上所述,道路交通拥堵以及由此形成的其他危害,已成为大多数城市面临的“城市病”之一,城市交通问题在一定程度上已成为制约经济和城市可持续发展的瓶颈。通过提升当前交通管理水平,充分利用现有道路资源,使用先进的控制技术和协调方法,有效提高路网运行效能以缓解拥堵是目前最经济和可行的方案。在交叉口设置等待区是一种我国城市普遍采用以提升通行能力、缓解交通拥堵、抑制过饱和状态的做法,然而针对等待区的研究仍不够深入。另外,过往建立数学深度优化框架以提升交叉口性能的方法可能已经达到“理论极限”,基于机器学习的方法和技术已经在很多领域中取得成功,因此,开展在...基础上强化学习和深度强化方法的交通控制理论与方法的研究,是提升交通管理水平,提升交通通行效率,缓解交通拥堵,提升居民交通出行满意感的前提。

本文立足于交通控制的基本理论与方法,对等待区的设置和车辆运行特性、过饱和交叉口的信号改进等问题推进分析,并对深度强化学习方法在信号优化领域的实践开展研究。首先,分析评述了国内外过往的相关研究,结合我国国情,确定了

本文的研究思路、研究方法和技术路线;第二,在分析过饱和交通流运行特性的基础上,利用图解分析法,建立了过饱和状态下的延误模型,并以平均延误最小为改进目标,推导了适合过饱和交叉口的信号周期优化模型;第三,使用交通冲突理论对广泛应用于国内大、中等城市的等待区的设置方法、车辆启动特性等进行分析,建立了有等待区交叉口通行能力框架,并提出了适用于等待区交叉口的信号优化策略和方法;第四,在深入分析强化学习和深度强化学习方法的基础上,选择排队长度作为状态空间,将过饱和交叉口的信号改进问题转化为马尔科夫决策过程,由此呈现了基于强化学习方法的过饱和交叉口信号优化方法,并搭建了训练-测试平台,核实了所提方法的有效性;第五,依据干线交叉口协调控制理论与方法,确定其状态-动作关系,呈现了一种类似于k臂赌博机优化问题的分布式干线交叉口协调方法,使用神经网络进行状态梯度下降,并利用训练-测试平台对一条包含5个交叉口的城市干线进行测试,结果表明,

本文所提方法优于数学解析法。

本文的主要研究成果包括:(1)引入连续型延误框架建模方法,通过刻画车流到达-驶离规律,建立了在...基础上图解分析方法的过饱和交叉口延误框架;考虑整个过饱和时段,构建了以平均延误最小化为目标的周期改进模型。实证分析验证了该模型的有效性,案例表明,该模型可降低车辆行程延误4.22%、停车延误7.58%。(2)从交叉口交通冲突关系角度,结合驾驶员行为特性,呈现了等待区的设计方法;使用对比分析方法,将等待区对车辆启动过程和清空过程的影响推进了量化建模,并引入HCM通行能力框架建模方法,构建了有等待区交叉口通行能力模型;针对过饱和交通状态,提出最大化通行能力的改进策略,针对低饱和交通状态,提出两种降低交叉口延误的改进方法;仿真成果表明:针对未饱和状态的两种优化方法都可以减少交叉口的平均延误,分别可以减少交叉口延误5%-11%和10%-14%。(3)借鉴离散型延误框架建模分析方法,揭示了Bang-bang控制措施减少交叉口延误的运行机理,并建立了基于平均延误模型的奖励函数;通过刻画强化学习算法改进过程和马尔科夫决策过程(MDP),以交叉口排队长度作为状态空间、以绿信比作为动作空间,将过饱和交叉口信号优化问题转化为MDP,并呈现了基于Q-learning和DoubleDQN的过饱和交叉口信号改进方法;通过设置不同的约束条件和惩罚因子,避免车辆溢流现象;使用Python语言和TensorFlow工具包搭建了训练-测试平台,并对两相位和多相位交叉口推进了训练和测试。另外,仿真实验表明,两种改进方法可以有效降低过饱和交叉口的平均延误;无排队约束条件时,两种方法可以实现与两阶段Bang-bang控制方法一致的优化效果,并且最大排队长度减小1.7%,有排队约束时,最大排队长度减小约13%;同时,所提在...基础上DoubleDQN的改进方法比在...基础上Q-learning的改进方法有更好的适应性。由此可见,(4)通过分析干线交叉口协调控制的改进机理,确定将交叉口距离、机制速度、周期时长、上游交叉口相位差等关键参数作为系统状态,将当前交叉口相位差作为动作;由于这一状态-动作对相互影响过程难以转化为MDP,提出了一种类似k臂赌博机优化方法的分布式学习算法;由于创造性的将上游交叉口的相位差引入状态空间,并将交叉口上行车辆和下行车辆的加权平均停车率作为奖励函数,实现了双向分布式协调优化。以郑州市的一段包含5个交叉口的主干路作为实证案例,利用Vissim仿真软件和Python编程语言搭建了训练-测试平台;测试结果表明,基于深度学习算法的分布式干线协调优化方法优于数学解析法,整体停车率降低3%-37%,并且,分布式协调方法具有更好的适应性和可扩展性。✅简介:擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。

✅具体问题可以联系QQ或者微信:30040983。仿真代码functionramp_metering_control()

num_segments=8;

simulation_time=3600;

dt=10;

mainline_density=zeros(num_segments,simulation_time/dt);

mainline_speed=zeros(num_segments,simulation_time/dt);

mainline_flow=zeros(num_segments,simulation_time/dt);

ramp_queue=zeros(1,simulation_time/dt);

metering_rate=zeros(1,simulation_time/dt);

mainline_density(:,1)=25;

mainline_speed(:,1)=100;

fort=2:simulation_time/dt

demand=generate_demand(t,dt);

current_density=mainline_density(3,t-1);

current_speed=mainline_speed(3,t-1);

metering_rate(t)=alinea_control(current_density,current_speed);

ramp_demand=demand.ramp;

ramp_service=min(ramp_demand+ramp_queue(t-1),metering_rate(t)*dt/3600);

ramp_queue(t)=max(0,ramp_queue(t-1)+ramp_demand-ramp_service);

forseg=1:num_segments

ifseg==1

inflow=demand.mainline;

else

inflow=mainline_flow(seg-1,t-1);

end

ifseg==3

inflow=inflow+ramp_service;

end

ifseg==num_segments

outflow=mainline_flow(seg,t-1);

else

outflow=mainline_flow(seg,t-1);

end

mainline_density(seg,t)=update_density(mainline_density(seg,t-1),...

inflow,outflow,dt);

mainline_speed(seg,t)=fundamental_speed(mainline_density(seg,t));

mainline_flow(seg,t)=mainline_density(seg,t)*mainline_speed(seg,t);

end

end

plot_results(mainline_density,mainline_speed,ramp_queue,metering_rate,dt);

metrics=calculate_performance(mainline_density,mainline_speed,ramp_queue);

display_metrics(metrics);

end

functionrate=alinea_control(density,speed)

target_occupancy=0.25;

kr=70;

current_occupancy=density/180;

error=target_occupancy-current_occupancy;

rate=900+kr*error;

rate=max(240,min(rate,900));

end

functionrate=coordinated_control(densities,target_density)

num_ramps=length(densities);

rates=zeros(1,num_ramps);

fori=1:num_ramps

local_error=target_density-densities(i);

ifi>1

upstream_error=target_density-densities(i-1);

else

upstream_error=0;

end

rates(i)=600+50*local_error+20*upstream_error;

rates(i)=max(240,min(rates(i),900));

end

end

functiondemand=generate_demand(t,dt)

hour=floor(t*dt/3600);

ifhour>=7&&hour<9

peak_factor=1.5;

elseifhour>=17&&hour<19

peak_factor=1.4;

else

peak_factor=1.0;

end

base_mainline=2000;

base_ramp=400;

noise_mainline=randn()*100;

noise_ramp=randn()*50;

demand.mainline=(base_mainline*peak_factor+noise_mainline)*dt/3600;

demand.ramp=(base_ramp*peak_factor+noise_ramp)*dt/3600;

end

functionspeed=fundamental_speed(density)

vf=120;

kj=180;

kc=45;

ifdensity<kc

speed=vf;

elseifdensity<kj

speed=vf*(1-((density-kc)/(kj-kc))^2);

else

speed=0;

end

speed=max(speed,0);

end

functionnew_density=update_density(density,inflow,outflow,dt)

segment_length=500;

density_change=(inflow-outflow)*dt/segment_length;

new_density=density+density_change;

new_density=max(0,min(new_density,180));

end

functionrate=fuzzy_metering_control(density,queue_length)

density_normalized=density/180;

queue_normalized=min(queue_length/50,1);

ifdensity_normalized<0.3

ifqueue_normalized<0.3

rate=900;

elseifqueue_normalized<0.7

rate=750;

else

rate=600;

end

elseifdensity_normalized<0.6

ifqueue_normalized<0.3

rate=700;

elseifqueue_normalized<0.7

rate=550;

else

rate=450;

end

else

ifqueue_normalized<0.3

rate=500;

elseifqueue_normalized<0.7

rate=400;

else

rate=300;

end

end

end

functionrate=predictive_control(current_density,predicted_densities,horizon)

rates=zeros(1,horizon);

forh=1:horizon

target=45;

error=target-predicted_densities(h);

rates(h)=600+80*error;

rates(h)=max(240,min(rates(h),900));

end

rate=rates(1);

end

functionmetrics=calculate_performance(density,speed,queue)

avg_density=mean(density(:));

avg_speed=mean(speed(:));

total_flow=sum(density.*speed,'all');

max_queue=max(queue);

avg_queue=mean(queue);

total_delay=sum(queue)*10/3600;

metrics.avg_density=avg_density;

metrics.avg_speed=avg_speed;

metrics.total_flow=total_flow;

metrics.max_queue=max_queue;

metrics.avg_queue=avg_queue;

metrics.total_delay=total_delay;

end

functiondisplay_metrics(metrics)

fprintf('RampMeteringPerformanceMetrics:\n');

fprintf('AverageMainlineDensity:%.2fveh/km\n',metrics.avg_density);

fprintf('AverageMainlineSpeed:%.2fkm/h\n',metrics.avg_speed);

fprintf('TotalFlow:%.0fvehicles\n',metrics.total_flow);

fprintf('MaximumRampQueue:%.0fvehicles\n',metrics.max_queue);

fprintf('AverageRampQueue:%.2fvehicles\n',metrics.avg_queue);

fprintf('TotalDelay:%.2fhours\n',metrics.total_delay);

end

functionplot_results(density,speed,queue,rate,dt)

time_vector=(1:size(density,2))*dt/60;

figure('Position',[100,100,1200,800]);

subplot(2,2,1);

plot(time_vector,density(3,:),'b-','LineWidth',1.5);

xlabel('Time(minutes)');

ylabel('Density(veh/km)');

title('MainlineDensityatMergePoint');

gridon;

subplot(2,2,2);

plot(time_vector,speed(3,:),'r-','LineWidth',1.5);

xlabel('Time(minutes)');

ylabel('Speed(km/h)');

title('MainlineSpeedatMergePoint');

gridon;

subplot(2,2,3);

plot(time_vector,queue,'g-','LineWidth',1.5);

xlabel('Time(minutes)');

ylabel('QueueLength(vehicles)');

title('RampQueueLength');

gridon;

subplot(2,2,4);

plot(time_vector,rate,'m-','LineWidth',1.5);

xlabel('Time(minutes)');

ylabel('MeteringRate(veh/h)');

title('RampMeteringRate');

gridon;

end

functioncompare_strategies()

strategies={'NoControl','FixedRate','ALINEA','Fuzzy'};

delays=zeros(1,4);

throughputs=zeros(1,4);

fors=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论