源文件程序链接,有用的话点个关注再走哦
链接:https://pan.baidu.com/s/1tEp7HiMKcZguBMewBykq4Q?pwd=wqrw
提取码:wqrw
一、实验目的
在现实生活中,高速公路上的交通拥堵是一个常见而头疼的问题。今年春节假期间,我们一家人从江苏苏州驱车前往安徽合肥的老家。作为全国高速交通的重要枢纽,安徽段高速也迎来了一年一度的春运堵车高峰。为了避免路上堵车耽误行程,我们特地选择凌晨车流较少时出发,但仍然遇到了4段比较严重的堵车,但是这几次堵车体验下来,只有1次是车辆追尾事故导致的堵车,其他的均为不明原因导致的无事故堵车,交通领域的专家们将这一现象称为“幽灵堵车”。
理解和模拟高速道路中“幽灵堵车”现象对于交通管理和规划至关重要。本课程作业旨在利用群体智能的方法,通过NetLogo软件模拟高速道路上的交通流动情况,分析高速路上不同车辆之间车道、车速以及变道策略对于道路通畅程度的影响,以便更好地理解和研究堵车现象的产生机制及应对策略。
二、实验内容
1、高速堵车问题建模
为了尽可能真实的模拟高速实际行驶与堵车产生情况,我结合自己的驾驶经验,总结出几条高速道路行驶过程中的几条规则:
1.1道路环境
1)高速公路具有多条车道,通过查阅资料可知,我国车道一般均为单向2-4个车道;
2)在正常行驶、无匝道口等其他情况时,相邻两个车道之间可以允许相互变道。
1.2车辆行为
1)车辆在车道上保持单向行驶,不可以逆行;
2)行驶时具备可以测量和控制的速度,且不能大于设定的最高速度,也不能小于实际的最低速度0;
3)车辆具有最大的加速度和最大的减速度,会根据前车的位置完成加速和减速;
4)当正常行驶的车辆遇到同车道的相对慢速的前车时,车辆会执行减速以确保不会相撞,但当等待前方慢车的时间过长,后方车辆则会选择变更至相邻车道完成超车;
5)根据交通规则,车辆只能在相邻两条车道之间进行变道,即使车道数足够,也不可以进行跨车道的变道操作。
2、Netlogo实现
根据前文中针对实际高速公路行驶场景的规则分析,可以结合前面的几点规则完成Netlogo的仿真实现,对前文提到的几点规则结合实际情况做出如下的简化与改进设计:
2.1道路环境
1)程序仅研究正常直线行驶路段现象的形成原因,并分析影响因素,暂不考虑匝道汇入、违规变道、交通事故道路变窄等比较显著的外界影响因素。
2)仿真程序中车道取2-4之间的固定值,也可以比较不同车道数对于高速堵车现象的影响。
2.2车辆行为
1)在车辆的属性定义上,每辆车设定有实际行驶速度、最大行驶速度、目标车道和变道耐心值等属性,同时具有加速、减速、变道的行为,每种行为均为Netlogo程序中的一个子程序,当行驶达成某种条件时便会进行调用以实现功能。
2)单独说明下最后一个与前文有些变动的变道耐心值属性,这是用于控制车辆是否选择变道的变量,其功能为:对于设定的耐心值,初始时正常行驶的所有车辆均设定为最高耐心值,而当车辆由于前方的拥堵导致的减速时,没经历一个仿真时刻的减速就会将耐心值减1,当耐心值归零时,车辆就会随机选择相邻的车道进行变道,并更新耐心值为最大值。
3)仿真道路中车辆均保持单向行驶,初速度设定为某一设定速度±15%范围内的随机值,且车道分布随机,以模拟实际高速道路行车的实际情况。
程序的总体原理框图如图 1所示: