2024年国赛高教杯数学建模E题交通流量管控解题全过程文档及程序

2024年国赛高教杯数学建模

E题 交通流量管控解题

原题再现

  随着城市化进程的加快、机动车的快速普及,以及人们活动范围的不断扩大,城市道路交通拥堵问题日渐严重,即使在一些非中心城市,道路交通拥堵问题也成为影响地方经济发展和百姓幸福感的一个“痛点”,是相关部门的棘手难题之一。
  考虑一个拥有知名景区的小镇。景区周边道路上既有本地居民出行,也有过境车辆,还有大量前来景区游览的游客车辆,后者常常会因寻找停车位而在周边道路上来回低速绕圈,影响了道路的通行效率。
  图1是小镇中两条主路的情况:纬中路,从环西路到环东路,约3.5公里;经中路,从环北路到环南路,约1.8公里。两条路上共有12个交叉口,监控设备可以记录每个交叉口四个方向的车流数据。以经中路-纬中路交叉口为例,有经中路北往南(north-south)、经中路南往北(south-north)、纬中路东往西(east-west)、纬中路西往东(west-east)四个相位通过的每辆车的信息,包括拍摄地点、行驶方向、拍摄时间和车牌号。
在这里插入图片描述
  附件2记录了2024年4月1日到5月6日这两条主路上有监控设备的地方出现过的所有车辆信息。监控设备安装在停车线后方,因此并不知道车辆通过停车线后是左转、直行还是右转。
  由于沿途有住宅小区、酒店和写字楼等建筑物,车辆可以驶入这些建筑物的停车场或者从停车场驶出,所以可能造成这两条主路上的车辆会突然出现或者突然消失。 请结合实际,探讨以下几个问题:
  问题1 对经中路-纬中路交叉口,根据车流量的差异,可将一天分成若干个时段,估计不同时段各个相位(包括四个方向直行、转弯)车流量。
  问题2 根据所给数据和上述模型,对经中路和纬中路上所有交叉口的信号灯进行优化配置,在保证车辆通行的前提下,使得两条主路上的车流平均速度最大。
  问题3 对五一黄金周期间的数据进行分析,判定寻找停车位的巡游车辆,并估算假期景区需要临时征用多少停车位才能满足需求?
  问题4 五一黄金周期间,该小镇对景区周边道路实行了临时性交通管理措施,具体管控措施见附件3。请结合数据评价临时管控措施在两条主路上的效果。
  附件1 路段行驶方向编号及交叉口之间的距离
  附件2 纬中路各交叉口车辆信息
  附件3 五一黄金周期间交通管控措施

整体求解过程概述(摘要)

  交通拥堵问题已经日益严重,特别在旅游景区周围更加严重。基于该区域交通流量数据,分析该镇主要道路的交通现状,交通优化方案已经成为相关部门的急需。
  针对问题一,通过对交通监控数据的聚合处理,统计了经中路-纬中路交叉口不同时间的总车流量。利用 K-Means 聚类算法分析总车流量变化趋势,依据肘部法得出聚类数为3,将时段划分为高峰、中峰和低峰三类。用粒子群优化(PSO)算法分配每个时段的车流方向比例,依据比例算出各方向(直行、左转、右转)的车流量,多次迭代粒子群优化算法,最终得出期每个时段内各个方向的平均车流量(辆/时),低峰时段所有数据的最高值 30.65,最低值 9.99,均值 20.34;中峰时段所有数据的最高值 46.25,最低值 14.79,均值 32.45;高峰时段所有数据的最高值 371.17,最低值 117.20,均值 269.08。
  针对问题二,为了优化经中路和纬中路交叉口的信号灯配置,使两条主路的车流速度最大化,本文构建了基于马尔可夫决策过程(MDP)的量化交通状态和信号灯的配时策略模型,采用深度Q学习(DQN)算法来优化每个时段的信号灯绿灯持续时间。模型通过奖励函数衡量交通流的通行效率,并以最大化平均车速为优化目标。在多次训练和迭代中,模型得到了最佳的信号灯配时方案,在信号灯周期固定为120秒的前提下,分别为四个方向分配相位时间,并计算了不同方向的平均等待时间。结果表明,方向1和方向4的相位时间在高峰时段内获得了更多的分配,达到了 34.38 秒,等待时间相应从 45.83 秒缩短至 42.80 秒,有效提高了高峰期的通行效率。
  针对五一黄金周景区停车位不足问题,查询文献建立以低车速、短时间重复出现为准则的寻找停车位的巡游车辆判定模型,标记出巡游的车辆。依据标记的车辆信息,结合泊松分布模型,估算巡游车辆的停车需求,查阅发改委文件显示泊位对应出行停车需求为 0.2 个,以泊松分布的 95%置信区间,算出要临时增加的停车位数量为 1287 个。车位增加后可减少道路车流 28%。
  针对问题四,需评估五一黄金周景区周边实行交通管理措施效果。分析车流量、等待时间和车速关键指标,采用对比管控前后各交叉口的交通方式。车流量管控后 5 个交叉口的车流量显著下降,在高峰时段环东路-纬中路的车流量减少了 95.91%,表明管控措施拥堵压力效果显著减小。等待时间显示 4 个交叉口的等待时间大幅缩短,以环东路-纬中路路口为例,管控前后的平均等待时间从 7 分 37 秒降至 2 分 43 秒,等待时间缩短了 64.18%,有效提高了车辆通行效率。整体来看,五一黄金周的临时管控措施在缓解主要道路交通压力、提升流动性方面取得了显著成效。

模型假设:

  1. 假设在一天内车流量具有一定的周期性或时间段特性。
  2. 假设可以根据某些先验信息或历史数据,对车辆转弯的比例进行估计。
  3. 假设可以忽略行人、非机动车等其他交通因素的影响。
  4. 假设某些车辆多次出现在同一地区,并以低速移动时,可以将其视为在寻找停车位。

问题分析:

  本次交通流量管控问题,围绕一个拥有知名景区的小镇交通问题展开,特别是在高峰期或假日期间,如何有效管理交通流量,优化道路通行效率和停车问题。问题设计基于对车流量的分析、信号灯优化以及假日期间临时交通管控措施的评价。
  问题一分析
  问题一要求根据车流量的差异,将一天分成若干时段,估计经中路-纬中路交叉口在不同时间段各个相位的车流量。为解决这个问题,需要对车流量进行时间分段分析。通过分析监控设备记录的数据,可以根据车流量的变化确定交通高峰和低谷的时间段。首先,使用统计学方法,如聚类分析,找出车流量随时间的变化规律,将一天划分为若干时段。为了估算每个方向的直行、左转、右转车流量,我们需要合理假设或基于历史数据得出各个方向上直行、左转、右转的比例。通过引入智能优化算法自动调整模型参数(如直行、左转、右转的比例),使得车流量估计更加准确。我们可以使用粒子群优化算法(PSO)、差分进化算法等来实现这一目标。最后,估计各个相位在每个时段的车流量,便于后续信号灯的优化调整。
  问题二分析
  问题二要求对经中路和纬中路上所有交叉口的信号灯进行优化配置,以在保证车辆通行的前提下,使得两条主路上的车流平均速度最大。该问题的核心在于通过信号灯的优化配置,减少交通拥堵,提升整体交通效率。小镇的交通情况复杂,除了本地居民出行,还有游客车辆在寻找停车位时的低速绕行,进一步加剧了拥堵。因此,需要在交通信号灯的控制策略上进行精细化管理。我们可以使用交通流量数据和强化学习方法,建立一个能够动态调整信号灯配时的模型。通过对经中路-纬中路交叉口车流量的实时监测,识别出车流高峰和低峰时段,并对信号灯进行优化配时,使车辆的平均等待时间最小化,从而提高车流速度。具体建模可以使用深度强化学习模型(如DQN),将每个交叉口的信号灯配时视为动作空间,车流速度视为奖励函数,进行迭代优化。此外,仿真验证是确保模型有效性的关键步骤,可以使用交通仿真软件(如SUMO)对不同信号灯配置策略进行测试和验证,评估其对车流平均速度的影响。通过对不同配置方案的比较和优化,最终可以找到一个最佳的信号灯配时方案,以最大化两条主路的车流速度,减少交通拥堵,提高通行效率。
  问题三分析
  问题三重点在于通过对五一黄金周期间的车俩数据进行深入分析,判定哪些车辆因寻找停车位而在景区周边巡游,并估算需要征用多少临时停车位来满足需求。首先,需通过车辆低速行驶和频繁经过同一交叉口等特征识别巡游车辆。接着,分析巡游车辆的数量和巡游时长,结合泊松分布模型估算巡游车辆的停车需求。根据发改委意见,0.1-0.3 个泊位对应出行停车需求,基于此需求量利用泊松分布的 95%置信区间估算出停车位的最大需求量。最终结果有助于为高峰期停车管理提供数据支持,合理规划临时停车位,以缓解交通压力,提高景区通行效率。
  问题四分析
  问题四要求评价五一黄金周期间对景区周边道路实行的临时性交通管理措施的效果。首先,通过对比五一黄金周期间和日常交通流量、车速等数据,可以定量分析交通管理措施的效果。例如,通过比较车辆的平均速度、车辆的通行时间等指标,可以评估管理措施是否有效缓解了交通拥堵。其次,通过对巡游车辆和停车需求的分析,可以判断措施是否有效减少了因寻找停车位而产生的低速行驶情况。此外,还可以分析拥堵区域的分布变化,判断管理措施是否达到了疏导交通的目的。结合这些定量指标,可以全面评估临时管控措施的实施效果。

模型的建立与求解整体论文缩略图

在这里插入图片描述

全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

部分程序代码(完整论文以及代码请联系博主):

数据处理代码:
import pandas as pd
# 使用 GBK 编码加载 CSV 文件,处理中文字符
file_path = '附件 2.csv'
data = pd.read_csv(file_path, encoding='gbk')
# 将“时间”列转换为日期时间格式
data['时间'] = pd.to_datetime(data['时间'].str[:19])
# 定义“方向”列的映射,将数字代码转换为易读的方向描述。
direction_map = {1: 'north-south', 2: 'south-north', 3: 'east-west', 4: 'west-east'}
data['方向'] = data['方向'].map(direction_map)
# 提取日期,小时,分钟
data['日期'] = data['时间'].dt.date
data['小时'] = data['时间'].dt.hour
data['分钟'] = data['时间'].dt.minutedata.to_csv('整理后的附件 2.csv', index=False)
# 按“交叉口”、“方向”、“日期”和“小时”进行分组,计算每组的大小(即车流量)
hourly_flow = data.groupby(['交叉口', '方向', '日期', '小时']).size().reset_index(name='车流量')
hourly_flow.to_excel('聚合处理数据.xlsx', index=False)
import numpy as np
from pyswarm import pso
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler# 设置 matplotlib 以支持中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False# 读取聚合处理后的数据
file_path = '聚合处理数据.xlsx'
df = pd.read_excel(file_path)# 筛选出特定交叉口的数据(经中路-纬中路)
intersection_data = df[df['交叉口'] == '经中路-纬中路']
# 保存筛选出的交叉口数据到新的 Excel 文件
intersection_data.to_excel('问题一-经中路-纬中路交叉口数据.xlsx')# 按小时汇总车流量
hourly_traffic_flow = intersection_data.groupby(['小时'])['车流量'].sum().reset_index()# 绘制该交叉口 24 小时车流量变化趋势图
plt.figure(figsize=(10,6))
plt.plot(hourly_traffic_flow['小时'],hourly_traffic_flow['车流量'],marker='o', linestyle='-')
plt.title('经中路-纬中路交叉口 24 小时车流量变化趋势', fontsize=14)
plt.xlabel('小时', fontsize=12)
plt.ylabel('车流量', fontsize=12)
plt.xticks(range(0, 24, 1))
plt.grid(True)
plt.savefig('./picture/经中路-纬中路交叉口 24 小时车流量变化趋势.png', dpi=300)# 再次读取数据并筛选经中路-纬中路交叉口的数据
file_path = '聚合处理数据.xlsx'
data = pd.read_excel(file_path)
data = data[data['交叉口'] == '经中路-纬中路']# 按小时汇总车流量
flow_data_sum = data.groupby(['小时']).sum(numeric_only=True).reset_index()# 提取车流量列并进行标准化
X = flow_data_sum[['车流量']].values
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)# 使用肘部法确定最佳聚类数 k,k 值范围为 1 到 10
wcss = []
k_values = range(1, 11)
for k in k_values:kmeans = KMeans(n_clusters=k, random_state=42)kmeans.fit(X_scaled)wcss.append(kmeans.inertia_)# 绘制肘部法图,确定最佳聚类数
plt.figure(figsize=(10, 6))
plt.plot(k_values, wcss, marker='o')
plt.title('肘部法求解最佳聚类数 k', fontsize=14)
plt.xlabel('聚类数(k 值)', fontsize=12)
plt.xticks(ticks=range(0, 11), fontsize=12)
plt.ylabel('WCSS(簇内平方和)', fontsize=12)
plt.grid(True)
plt.savefig('./picture/肘部法求解最佳聚类数 k.png', dpi=300)# 根据肘部法确定 k=3 为最佳聚类数
optimal_k = 3# 对数据进行按方向和小时分组,并标准化车流量
flow_data = data.groupby(['小时', '方向'])['车流量'].sum().unstack().fillna(0)
scaled_flow_data = scaler.fit_transform(flow_data)
kmeans = KMeans(n_clusters=optimal_k, random_state=42)# 将每小时的车流量聚类,并添加聚类结果到数据中
flow_data['Cluster'] = kmeans.fit_predict(scaled_flow_data)
flow_data['Hour'] = flow_data.index
flow_data_sorted = flow_data.sort_values('Cluster')# 打印聚类后的结果
print(flow_data_sorted[['Hour', 'Cluster']])# 绘制聚类结果散点图
plt.figure(figsize=(10, 6))
for i in range(optimal_k):cluster_data = flow_data_sorted[flow_data_sorted['Cluster'] == i]plt.scatter(cluster_data.index, cluster_data.sum(axis=1), label=f'Cluster {i}')
plt.title('聚类结果散点图', fontsize=14)
plt.xlabel('小时', fontsize=12)
plt.ylabel('车流量', fontsize=12)
plt.legend()
plt.show()
plt.xticks(ticks=range(0, 24), fontsize=12)
plt.ylabel('车流量', fontsize=12)
plt.legend(title='簇', fontsize=12)
plt.grid(True)
plt.savefig('./picture/聚类结果散点图.png', dpi=300)# 读取问题一的交叉口数据
file_path = '问题一-经中路-纬中路交叉口数据.xlsx'
data = pd.read_excel(file_path)# 根据小时分类时间段
def classify_time_period(hour):if hour in [23, 0, 1, 2, 3, 4, 5]:return '低峰时段'elif hour in [6, 21, 22]:return '中峰时段'else:return '高峰时段'# 应用分类函数,将每个小时分类为低峰、中峰或高峰时段
data['Time Period'] = data['小时'].apply(classify_time_period)# 按时间段和方向汇总车流量
period_flow = data.groupby(['Time Period', '方向'])['车流量'].sum().reset_index()
actual_flows = period_flow['车流量'].values# 定义 PSO 的目标函数,用于优化直行、左转、右转比例
def pso_objective(params, actual_flow):straight_proportion, left_turn_proportion, right_turn_proportion = params# 如果比例和不为 1,返回无穷大if straight_proportion + left_turn_proportion + right_turn_proportion != 1:return np.inf# 估算各个方向的车流量estimated_straight_flow = actual_flow * straight_proportionestimated_left_turn_flow = actual_flow * left_turn_proportionestimated_right_turn_flow = actual_flow * right_turn_proportion# 返回估算的总流量与实际流量的差异return np.abs(estimated_straight_flow + estimated_left_turn_flow + estimated_right_turn_flow - actual_flow)# 设置 PSO 的上下限
lb = [0.4, 0.1, 0.1]
ub = [0.8, 0.3, 0.3]# 对每个实际车流量应用 PSO 优化算法
optimized_results_pso = []
for flow in actual_flows:xopt, fopt = pso(pso_objective, lb, ub, args=(flow,), swarmsize=10, maxiter=50)# 将优化结果归一化normalized_xopt = xopt / np.sum(xopt)optimized_results_pso.append(normalized_xopt)
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

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

相关文章

穿越是时空之门(java)

emm,之前做过一道类似的题目,但是这次又忘了 一开始的错误代码 package Lanqiao;import javax.swing.plaf.synth.SynthTextAreaUI; import java.math.BigInteger;/*** author zb* date2025/3/19 21:33*/ public class L19701 {public static void main…

npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本的处理方法

1、安装了node.js后,windows powershell中直接输入npm,然后就报错 2、出现原因:权限不够 系统禁用了脚本的执行,所以我们在windows powershell输入npm -v的时候,就会报上面的错误。 3、解决 Set-ExecutionPolicy Un…

蓝桥杯单片机之AT24C02(基于自己对AT24C02的学习和理解)

一、先用抽象法说明原理,让原理变得简单易懂: 1、向AT24C02写入数据: 有个关系户,他想安排自己的儿子进某个大厦里某个楼层的公司,那么他就要先找到这个公司的地址,然后再找到该公司是第几楼,最…

Java面试易忽略知识点

1. CompletableFuture中thenApply()与thenCompose()的区别 考察点:组合式异步编程 解析: ​**thenApply()**:接收前序任务结果,返回普通对象(同步转换),适用简单数据处理。​**thenCompose()*…

VLLM专题(十九)—兼容 OpenAI 的服务器

vLLM 提供了一个 HTTP 服务器,能够实现 OpenAI 的 Completions API、Chat API 等功能! 您可以通过 vllm serve 命令启动服务器,或者通过 Docker 启动: vllm serve NousResearch/Meta-Llama-3-8B-Instruct --dtype auto --api-key token-abc123要调用服务器,您可以使用官…

【云原生之kubernetes实战】在k8s环境中高效部署minio对象存储(详细教程)

【云原生之kubernetes实战】在k8s环境中高效部署minio对象存储(详细教程) 前言一、minio介绍1.1 MinIO简介1.2 主要特点1.3 主要使用场景二、相关知识介绍2.1 本次实践存储介绍2.2 k8s存储介绍三、本次实践介绍3.1 本次实践简介3.2 本次环境规划3.3 部署前需准备工作四、检查…

【高项】信息系统项目管理师(八)项目质量管理【3分】

项目质最管理包括把组织的质量政策应用于规划、管理、控制项目和产品质量要求。以满足干系人目标的各个过程。项目质量管理以执行组织的名义支持过程的持续改进活动,项目质量管理需要兼顾项目管理与项目可交付成果两个方面,它适用于所有项目无论项目的可付成果具有何种特性。质…

python-leetcode 48.括号生成

题目: 数字n代表生成括号的对数,设计一个函数,用于生成所有可能并且有效的括号组合。 方法一:回溯 可以生成所有 2**2n 个 ‘(’ 和 ‘)’ 字符构成的序列,然后检查每一个是否有效即可 为了生成所有序列&#xff0c…

TDE透明加密技术:免改造实现华为云ECS中数据库和文件加密存储

在数字经济与云计算深度融合的今天,华为云ECS(弹性云服务器)已成为企业数字化转型的核心载体,承载着数据库、文件存储、AI训练等关键业务。然而,云上数据安全形势日益严峻:2024年全球云环境勒索攻击同比激增…

3D点云数据处理中的聚类算法总结

1.欧式聚类: 基于点的空间距离(欧几里得距离)来分割点云,将距离较近的点归为同一簇。 欧式聚类需要的参数:邻域半径R,簇的最小点阈值minPts,最大点数阈值maxPts。 实现效率: O(n * log n) 实现…

PCL--点云可视化

用于单个显示、多个显示的头文件<visual_.h> visual_.h #pragma once #include <iostream> #include <thread> #include <pcl/visualization/pcl_visualizer.h>using namespace std::chrono_literals;/********************************************…

火星探测发展概述2025.3.20

一.火星探测历程 1.1 探索启蒙 火星探测的启蒙阶段可追溯至20世纪60年代,标志着人类对这颗神秘行星的科学探索正式拉开帷幕。这一时期的标志性事件包括: 1960年10月至1964年11月间,苏联和美国进行了6次火星探测尝试,但均以失败告终。 1964年11月28日,美国成功发射“水手…

DAPO:一个开源的大规模大型语言模型LLM强化学习系统

推断扩展赋予了大型语言模型前所未有的推理能力,强化学习作为激发复杂推理的核心技术,清华大学联合字节提出了解耦片段与动态采样策略优化(DAPO)算法,并全面开源了一个最先进的大规模强化学习系统,该系统使用Qwen2.5-32B基础模型在AIME 2024上取得了50分的高分。还开源了…

力扣刷题46. 全排列

46. 全排列 - 力扣&#xff08;LeetCode&#xff09; 使用dfs搜索&#xff0c;查找所有的情况&#xff0c;首先定义所有的链表集合list&#xff0c;在定义每一种情况的链表res&#xff0c;在主函数中遍历所有的初始元素&#xff0c;首先初始化res&#xff0c;并且添加到res中&…

Metasploit Framework(MSF)使用教程与命令详解

Metasploit Framework&#xff08;简称MSF&#xff09;是一款功能强大的开源渗透测试工具&#xff0c;广泛应用于网络安全领域。它集成了大量的漏洞利用模块&#xff08;exploits&#xff09;、辅助模块&#xff08;auxiliary&#xff09;和载荷&#xff08;payloads&#xff0…

【Netty】客户端功能完善

超时控制 public class RequestTimeoutManager {private final HashedWheelTimer timer new HashedWheelTimer();private final ConcurrentMap<Long, Timeout> pendingRequests new ConcurrentHashMap<>();public void addRequest(long requestId, long timeout…

【鸿蒙开发】Hi3861学习笔记- DS18B20温度传感器

00. 目录 文章目录 00. 目录01. DS18B20简介02. DS18B20引脚及电路03. DS18B20内部结构框图04. DS18B20内存映射05. 硬件设计06. 软件设计07. 实验现象08. 附录 01. DS18B20简介 DS18B20 是常用的数字温度传感器&#xff0c;其输出的是数字信号&#xff0c;具有体积小&#xf…

跨境大文件传输如何突破延迟与丢包双重困局

一、行业痛点&#xff1a;跨国传输的挑战 在全球化业务场景中&#xff0c;跨境大文件传输常面临网络延迟高、丢包率频发等问题。传统TCP协议因其“先建联再传输”的机制&#xff0c;在高时延、高丢包环境下效率骤降&#xff0c;导致跨国协作、影视渲染、科研数据共享等场景中传…

uni-app——计时器和界面交互API

API 基本概要 概念说明 API&#xff08;应用程序接口&#xff09;是预先定义的方法集合&#xff0c;用于实现特定功能。在 uni-app 中&#xff0c;通过全局对象 uni 调用 API&#xff0c;例如 uni.getSystemInfoSync 获取设备信息。 API 分类与调用规则 事件监听型 以 on 开…

Dify 升级攻略:从0.15.3迈向1.1.0,元数据管理全攻略!

嘿&#xff0c;小伙伴们&#xff01;今天给大家带来一个超实用的干货分享——Dify从0.15.3升级到1.1.0版本的详细攻略。这次升级不仅带来了功能上的更新&#xff0c;还特别强化了元数据管理。相信很多小伙伴和我一样&#xff0c;一直在使用Dify来提升工作效率&#xff0c;但每次…