2019年第八届数学建模国际赛小美赛C题预测通过拥堵路段所需的时间解题全过程文档及程序
2019年第八届数学建模国际赛小美赛
C题 预测通过拥堵路段所需的时间
原题再现:
在导航软件中,行程时间的估计往往是一个重要的功能。现有的导航软件往往通过出租车或安装了该软件的车辆获取实时GPS数据来确定当前的路况。在交通拥堵严重的情况下,车辆速度较慢,因此对速度的估计非常不准确。其结果是,估计交通堵塞时间的准确性非常差。所需的实际时间有时甚至是预测时间的几倍到十倍。我们的问题是如何预测通过交通堵塞的时间?请收集现有数据并建立更精确的模型来解决此问题。
整体求解过程概述(摘要)
导航软件的普及在给人们带来便利的同时,其一些弊端也暴露出来。由于无法准确预测汽车的行驶速度和行驶时间,给人们的出行带来了很大的麻烦。构建城市区域网络模型,提取宏观交通特征。提出了用网格模型预测路段通过时间的方法。同时,建立了基于BP神经网络的拥堵路段通行时间预测模型,并对两种模型进行了比较。
本文对大量的车辆轨迹数据进行处理,提取网格的交通特征,并将网格作为研究区域交通的载体。首先提取网格中的静态交通特征,主要包括车辆进入网格的位置和出入口位置以及出入口位置之间的连接关系。然后,基于已有的静态数据,提取网格中的动态流量特征。,主要是指车辆通过网络节点对前后的时间。从而完成了网络模型的流量属性特征提取。
提出了一种基于网格模型的路段通过时间预测方法。结合过境时间和实际出行时间作为网格中的准备数据,通过挖掘大量的车辆轨迹数据,提取网格间的多条轨迹并提取有效路径,利用多元线性回归和KNN算法对路径进行时间预测。
本文还建立了基于BP神经网络算法的拥挤通过时间预测模型。从大量数据中提取历史流量数据并进行归一化处理,通过比较确定各层神经元的数量。选取部分数据作为样本,对神经网络进行训练和学习,实现对交通量的预测。基于速度-车流模型,对车速进行预测,得到通过路段的时间。
最后,对两种模型进行了比较分析。网格模型使用的数据量较大,对时间的预测更全面。问题的分析包括宏观和微观两个方面;而BP神经网络算法灵活、使用方便。然而,该模型中数据的使用并不充分,因此网格模型更具说服力。
模型假设:
1、不考虑不同车辆之间的超车情况;
2、不考虑交通事故造成的交通拥堵;
3、每辆车对前一辆车的响应延迟时间大致相等;
4、在拥堵路段,每辆车同时以一定的固定速度到达;从固定速度减速到停止所需的时间相等。
5、在拥堵道路上行驶的车辆油量充足。换言之,不考虑由于燃油耗尽而导致车辆无法驶出的情况。
6、不考虑拥堵路段不同车辆间超车情况
问题重述:
问题背景
随着经济的发展,人们的生活水平不断提高,生活节奏也在加快。开车旅行已经成为一种趋势。这确实方便人们出行,但不可否认的是,在北京、上海等一些大城市,早、晚高峰时段拥堵严重。有时,人们在车辆上依赖GPS。道路位置的即时定位和车速的精确估计,然而,在道路严重拥堵期间,车速的估计极不准确。有时到达目的地的实际时间与预测时间相差甚远。如果安排不合理,会影响人们正常的生活节奏,甚至造成一些不好的结果,如错过最后期限。在这种情况下,正确评估拥堵路段的速度并正确预测通过拥堵路段所需的时间非常重要。
问题重述
在交通拥堵严重的情况下,速度较慢,因此对速度的估计是非常不准确的。结果表明,交通拥挤时间估计精度较差。所需的实际时间有时甚至是预测时间的几到十倍。我们的问题是如何预测交通堵塞的时间?收集现有数据,建立更精确的模型来解决这一问题。
模型的建立与求解整体论文缩略图
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可
部分程序代码:(代码和文档not free)
Code:
%initialization
x=input('Please enter the starting latitude and longitude,longitude=');
y=input('latitude=');
dx=0.001;
%Grid build
Wzwangge=zeros(1000,7);
Sjwangge=zeros(1000,7);
For i=0:99
For j=0:99
Wzwangge(i*100+j+1,1)=i*100+j+1;
Wzwangge(i*100+j+1,2)=x+j*dx;
Wzwangge(i*100+j+1,3)=y+i*dx;
Wzwangge(i*100+j+1,4)=x+j*dx-dx/2;
Wzwangge(i*100+j+1,5)=x+j*dx+dx/2;
Wzwangge(i*100+j+1,6)=y+i*dx-dx/2;
Wzwangge(i*100+j+1,7)=y+i*dx+dx/2;
End
y=y-dx;
End
% determines the grid to be studied
a=input('input grid sequence:');
Jingdu=dashuju(:,7);
Weidu=dashuju(:,8);Jdhang=find((jingdu<(wzwangge(a,5)))&(jingdu>(wzwangge(a,4)))));
Wdhang=find((weidu<(wzwangge(a,7)))&(weidu>(wzwangge(a,6)))));
[C,ia,ib]=intersect(jdhang,wdhang);
Wgshuju=dashuju(C,:);
% seeking grid speed
Wgsudu=sum(wgshuju(:,10))/size(wgshuju,1);
Disp ('grid average speed');
Disp(wgsudu);
% draw grid scatter map
Figure(1);
Plot(wgshuju(:,7),wgshuju(:,8),'r.');
Axis equal
% shows grid speed change
Shijian10=1:144;
Shijian=wgshuju(:,4).*60+wgshuju(:,5);
Liuliang=zeros(144,1);
For i=1:144
C=find((shijian<i*10)&(shijian>(i-1)*10));
Liuliang(i)=sum(wgshuju(C,10))/size(C,1);
End
Tf=isnan(liuliang);
T=find(tf==1);
Kedu=shijian10./6;
Figure(2);
Plot(kedu,liuliang);
Xlabel('time');
Ylabel('speed');
%Use Shenzhen latitude and longitude scatter to make map of Shenzhen
r=randi(5774443,600000,1);
Plot(dashuju(r,7),dashuju(r,8),'r.');
Axis equal
Hold on
Ylabel('Longitude');
Xlabel('latitude');
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可
相关文章:
2019年第八届数学建模国际赛小美赛C题预测通过拥堵路段所需的时间解题全过程文档及程序
2019年第八届数学建模国际赛小美赛 C题 预测通过拥堵路段所需的时间 原题再现: 在导航软件中,行程时间的估计往往是一个重要的功能。现有的导航软件往往通过出租车或安装了该软件的车辆获取实时GPS数据来确定当前的路况。在交通拥堵严重的情况下&#…...
天干地支。
古代中国使用天干地支来记录当前的年份 天干一共有十个,分别为: 甲 (ia) 、乙(yi)、丙(bing) 、丁 (ding) 、成 (wu) 、己(ir) 、庚(geng)辛(xin)、王(ren)、类 (gui)。 分别为:子(zi)、丑 (chu)、寅地支一共有十二个,(yin)、卵 (mao)、辰 (chen) 、已(s…...
RabbitMQ插件详解:rabbitmq_web_stomp【RabbitMQ 六】
欢迎来到我的博客,代码的世界里,每一行都是一个故事 《RabbitMQ Web STOMP:打破界限的消息传递之舞》 前言STOMP协议简介STOMP(Simple Text Oriented Messaging Protocol)协议简介STOMP与WebSocket的关系 WebSocket和R…...
路由器的转换原理--ENSP实验
目录 一、路由器的工作原理 二、路由表的形成 1、直连路由 2、非直连路由 2.1静态路由 2.2动态路由 三、静态路由和默认路由 1、静态路由 1.1静态路由的缺点 1.2路由的配置--结合ensp实验 2、默认路由--特殊的静态路由 2.1概念 2.2格式 2.3默认路由的配置--ens…...
世界5G大会
会议名称:世界 5G 大会 时间:2023 年 12 月 5 日-12 月 8 日 地点:河南郑州 一、会议简介 世界 5G 大会,是由国务院批准,国家发展改革委、科技部、工 信部与地方政府共同主办,未来移动通信论坛联合属地主管厅局联合 承办,邀请全球友好伙伴共同打造的全球首个 5G 领域…...
FFmpeg-基础组件-AVFrame
本章主要介绍FFmpeg基础组件AVFrame. 文章目录 1.结构体成员2.成员函数AVFrame Host内存的获取 av_frame_get_bufferAVFrame device内存获取av_hwframe_get_buffer() 1.结构体成员 我们把所有的代码先粘贴上来,在后边一个一个解释。 typede…...
Vue 组件传参 emit
emit 属性:用于创建自定义事件,接收子组件传递过来的数据。 注意:如果自定义事件的名称,和原生事件的名称一样,那么只会触发自定义事件。 setup 语法糖写法请见:《Vue3 子传父 组件传参 defineEmits》 语…...
Makefile基本指令
语法规则 目标 ... : 依赖 ...命令1命令2. . .1、目标即要生成的文件。如果目标文件的更新时间晚于依赖文件更新时间,则说明依赖文件没有改动,目标文件不需要重新编译。否则会进行重新编译并更新目标文件。 2、默认情况下Makefile的第一个目标为终极目…...
爬取图片python代码
在百度上爬取图片 pic_baidu.py import re import requests from urllib import error from bs4 import BeautifulSoup import os num 0 numPicture 0 file List []def Find(url, A):global Listprint(正在检测图片总数,请稍等.....)t 0i 1s 0while t <…...
Android通过listview实现输入框自定义提示栏(代替AutoCompleteTextView自动完成文本框)
效果图 背景 本人因为一些需求初次接触android,需要实现一个类似android自带的AutoCompleteTextView(自动完成文本框),但和其不同的是通过后端接口直接筛选数据(自己的分词处理规则),然后返回前…...
DA-AD试验
/********************************************************************************** * * * 1.通过本例程了解并掌握AD-DA转换芯片的基本原理和使用 * * …...
Leetcode—896.单调数列【简单】
2023每日刷题(五十九) Leetcode—896.单调数列 实现代码 class Solution { public:bool isMonotonic(vector<int>& nums) {int up 0;int down 0;if(nums.size() 1) {return true;}for(int i 0; i < nums.size() - 1; i) {if(nums[i] …...
vue2生命周期
vue2生命周期 在进行组件化项目开发的时候都会存在一个组件的生命周期概念,像Vue、React、小程序等等,无一例外,而通常情况组件的生命周期主要分成三个阶段,包括:创建、更新以及销毁阶段。 Vue的生命周期钩子函数主要包…...
【Flink on k8s】 -- flink kubernetes operator 1.7.0 发布
目录 前言 重大特性 1、自动伸缩 2、版本支持 3、savepoint 触发改进 4、jdk 支持 前言 Flink 官方博客于 2023-11-22 发布了 flink kubernetes operator 1.7.0 发布的消息。这个版本对自动缩放进行了大量的改进,包括与 Kubernetes 的完全分离,以便…...
Java网络编程,对使用UDP实现TCP(一)三次握手实现的补充
修改片段1 在第一次握手时,由《TCP/IP详解》卷二中对tcp计时器的描述中,我们可知连接的建立是需要进行判断,如果客户端发送了SYN连接请求,服务端没有在有限时间内进行恢复,就会取消本次连接。 我们使用 setSoTimeout…...
Redis 的常见使用场景
01 缓存 作为 Key-Value 形态的内存数据库,Redis 最先会被想到的应用场景便是作为数据缓存。而使用 Redis 缓存数据非常简单,只需要通过 string 类型将序列化后的对象存起来即可,不过也有一些需要注意的地方: 必须保证不同对象的…...
VRRP协议详解
目录 一、基础概念 1、概念 2、VRRP的基本结构 状态机 二、VRRP主备备份工作过程 1、备份工作过程 2、VRRP的负载分担工作 三、实验 一、基础概念 1、概念 VRRP能够在不改变组网的情况下,将多台路由器虚拟成一个虚拟路由器,通过配置虚拟路由器的I…...
Linux 常用命令----mktemp 命令
文章目录 基本用法实例演示高级用法注意事项 mktemp 命令用于创建一个临时文件或目录,这在需要处理临时数据或进行安全性测试时非常有用。使用 mktemp 可以保证文件名的唯一性,避免因文件名冲突而导致的问题。 基本用法 创建临时文件: 命令 mktemp 默认…...
基于ssm服装定制系统源码和论文
idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 环境: jdk8 tomcat8.5 开发技术 ssm 基于ssm服装定制系统源码和论文751 1.1项目研究的背景 困扰管理层的许多问题当中,服装定制将是广大用户们不可忽视的一块。但是管理好服装定制又面临很多麻…...
【AI】如何准备mac开发vue项目的环境
为了在Mac上开发Vue项目,你需要准备一些工具和环境。以下是主要的步骤: 安装Node.js和npm: Vue.js是一个基于JavaScript的框架,因此你需要Node.js环境。访问Node.js官网下载并安装Node.js,这也会自动安装npm࿰…...
BERT大模型:英语NLP的里程碑
BERT的诞生与重要性 BERT(Bidirectional Encoder Representations from Transformers)大模型标志着自然语言处理(NLP)领域的一个重要转折点。作为首个利用掩蔽语言模型(MLM)在英语语言上进行预训练的模型&…...
JVM的类的生命周期
目录 前言 1. 加载(Loading): 2. 验证(Verification): 3. 准备(Preparation): 4. 解析(Resolution): 5. 初始化(Ini…...
uni-app获取response header响应头(h5/app/小程序三端)
h5、app获取方式:getResponseHeader(key) 示例:参考:HTML5 API Reference // 创建xhr实例: // #ifdef APP-VUE let xhr new plus.net.XMLHttpRequest(); // #endif // #ifdef H5 let xhr new window.XMLHttpRequest(); // #en…...
本地部署语音转文字(whisper,SpeechRecognition)
本地部署语音转文字 1.whisper1.首先安装Chocolatey2.安装3.使用 2.SpeechRecognition1.环境2.中文包3.格式转化4.运行 3.效果 1.whisper 1.首先安装Chocolatey https://github.com/openai/whisper 以管理员身份运行PowerShell Set-ExecutionPolicy Bypass -Scope Process -…...
js new 原理
mdn new new 调用函数时,该函数将被用作构造函数 类只能用 new 运算符实例化 不使用 new 调用一个类将抛出 TypeError。 过程 new Foo(…) 执行时: 创建一个空的简单 JavaScript 对象。 为方便起见,我们称之为 newInstance。 如果构造函数…...
智能优化算法应用:基于黏菌算法3D无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于黏菌算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于黏菌算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.黏菌算法4.实验参数设定5.算法结果6.参考文献7.MA…...
LeetCode每日一题——2132.用邮票贴满网格图
参考资料: 2132. 用邮票贴满网格图 - 力扣(LeetCode) 题目描述 给你一个 m x n 的二进制矩阵 grid ,每个格子要么为 0 (空)要么为 1 (被占据)。 给你邮票的尺寸为 stampHeight x…...
PyQt6 表单布局Form Layout (QFormLayout)
锋哥原创的PyQt6视频教程: 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计43条视频,包括:2024版 PyQt6 Python桌面开发 视频教程(无废话版…...
Python: any()函数
在Python中,any函数是一个内置函数,它接受一个可迭代对象作为参数,并返回一个布尔值。当可迭代对象中至少一个元素为真(非零、非空、非None等)时,any函数返回True;否则,返回False。 …...
一些AG10K FPGA 调试的建议-Douglas
PLL AGM FPGA 在配置成功时,PLL 已经完成锁定,lock 信号已经变高;如果原设计中用 lock 信号输出实现系统 reset 的复位功能,就不能正确完成上电复位;同时,为了保证 PLL 相移的稳定,我们需要在 P…...
门头沟做网站/比百度好用的搜索软件
Cache和Buffer是两个不同的概念,简单的说,Cache是加速“读”,而 buffer是缓冲“写”,前者解决读的问题,保存从磁盘上读出的数据,后者是解决写的问题,保存即将要写入到磁盘上的数据。在很多情况下…...
搭建动态网站/百度联盟个人怎么接广告
public class ArrayDemo2 {public static void main(String[] args) {//定义一个数组存放元素int[] arr3 {10, 20, 30, 40, 50, 60, 70, 80, 90};//arr3.length/2 需要互换的次数for (int i 0; i < arr3.length / 2; i) {//进行数组互换int sum arr3[i];arr3[i] arr3[ar…...
wordpress 侧边栏浮动/网站优化推广费用
http://pan.baidu.com/s/1kTG9DVD GUI源码 转载于:https://www.cnblogs.com/ldxsuanfa/p/10685067.html...
河南做网站公司/阿里云注册域名
1、走的桥多,不一定走的路就多。吃的盐多,不一定吃的饭就多。走路的时候有伴就不觉得路远,吃饭的时候有伴就吃得香。(幸运52李咏说的) 2、都说人往高处走,可是高处不胜寒。水往低处流,谁知低处纳百川!&…...
专业广州网站设计/安卓aso优化工具
python在ros中订阅雷达数据并可视化处理 文章目录python在ros中订阅雷达数据并可视化处理参考教程:预设条件:图片:程序:接着上一次的博客,我可视化激光雷达的数据还是整好了,记录一下吧,国内现成…...
怎样看一个网站是哪个公司做的/四川网站制作
http://acm.hdu.edu.cn/showproblem.php?pid5253 Prim算法是 1.每次选出 (已经选出的)点集 能够连接 边权值最小的点 2.使用新找出的点能带来的新的更小的边权,来更新旧的较大的边权 3.重复,直到连接所有点 的贪心算法 使用优先…...