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࿰…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
