2013年国赛高教杯数学建模A题车道被占用对城市道路通行能力的影响解题全过程文档及程序

2013年国赛高教杯数学建模

A题 车道被占用对城市道路通行能力的影响

  车道被占用是指因交通事故、路边停车、占道施工等因素,导致车道或道路横断面通行能力在单位时间内降低的现象。由于城市道路具有交通流密度大、连续性强等特点,一条车道被占用,也可能降低路段所有车道的通行能力,即使时间短,也可能引起车辆排队,出现交通阻塞。如处理不当,甚至出现区域性拥堵。
  车道被占用的情况种类繁多、复杂,正确估算车道被占用对城市道路通行能力的影响程度,将为交通管理部门正确引导车辆行驶、审批占道施工、设计道路渠化方案、设置路边停车位和设置非港湾式公交车站等提供理论依据。
  视频1(附件1)和视频2(附件2)中的两个交通事故处于同一路段的同一横断面,且完全占用两条车道。请研究以下问题:
  1. 根据视频1(附件1),描述视频中交通事故发生至撤离期间,事故所处横断面实际通行能力的变化过程。
  2. 根据问题1所得结论,结合视频2(附件2),分析说明同一横断面交通事故所占车道不同对该横断面实际通行能力影响的差异。
  3. 构建数学模型,分析视频1(附件1)中交通事故所影响的路段车辆排队长度与事故横断面实际通行能力、事故持续时间、路段上游车流量间的关系。
  4. 假如视频1(附件1)中的交通事故所处横断面距离上游路口变为140米,路段下游方向需求不变,路段上游车流量为1500pcu/h,事故发生时车辆初始排队长度为零,且事故持续不撤离。请估算,从事故发生开始,经过多长时间,车辆排队长度将到达上游路口。
  附件1:视频1
  附件2:视频2
  附件3:视频1中交通事故位置示意图
  附件4:上游路口交通组织方案图
  附件5:上游路口信号配时方案图
  注:只考虑四轮及以上机动车、电瓶车的交通流量,且换算成标准车当量数。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

  交通是城市的命脉。车道往往会因为交通事故等原因被占用,从而降低了道路的通行能力,严重的话会导致交通堵塞。为了帮助交通管理部门更好地管理城市交通,需要正确估算车道被占用对城市道路通行能力的影响程度。 为了更准确地计算视频中上流路口进入事发路段的车辆和通过交通事故所占车道的横断面的车辆情况,本文在使用了背景差分法为主,直方图均衡化、中值滤波法、、形态学滤波法和边缘检测算法为辅的图像处理方法得到检测运动车辆的视频,使计算更简便。
  针对问题一,根据权威文献计算出事故发生期间事故所处横断面理论通行能力和实际通行能力,由两种通行能力随时间变化的图像可知实际通行能力在事故期间随时间在理论通行能力上下波动,而且这种波动符合正态分布。
  针对问题二,在视频一和视频二的数据通过正态检验和方差齐次检验后,利用这些数据使用方差分析得到同一横断面交通事故所占车道不同对该横断面实际通行能力的影响无显著性差异的结论。为了得到这种影响的实际情况,本文又进一步使用了通径分析,得到的结果为同一横断面交通事故所占车道不同对横断面实际通行能力的影响决定于各车道的流量比例。
  针对问题三,首先使用城市交通二流理论计算得到事发路段随事故持续时间增加而改变的排队长度,然后使用非线性比例尺改进算法统计视频的排队长度。然后用夹角余弦法对事故横断面实际通行能力、路段上游车流量分配权重统一为一个自变量,和事故持续时间一同作为BP神经网络的输入样本,排队长度作为输出样本进行训练,得到一个拥挤交通流排队长度模型。最后用遗传算法对神经网络进行优化。模型的结果和样本数据拟合效果较好,显示排队长度会随着排队时间变大,路段上游车流量变大,事故横断面实际通行能力下降而不断增加。
  针对问题四,将车看作元胞,根据所给的数据制定元胞运动规则,构造出基于元胞自动机的交通流预测模型。经过模拟仿真,得到的结果为:事故发生后,在上游车流量波动不大的情况下,经过8.3分钟到9分钟之间的时间,车辆排队长度将到达上游路口。对模型进行改进,考虑红绿灯的情况,得到车辆排队长度达到上游路口的时间缩短为8分到8.4分钟之间,平均时间为8.36分钟,且排队长度曲线的波动程度变大。

模型假设:

  1. 只考虑四轮及以上机动车、电瓶车的交通流量,且换算成标准车当量数。
  2. 车只分为小、中、大三种车型,小轿车、小型客货车为小型,中型客货车、轻型客货车为中型,大型货车、大型客车为大型,且同一车型的车大小相差不大。
  3. 上游车流量不受事故持续时间影响。

问题重述:

  车道被占用是指因交通事故、路边停车、占道施工等因素,导致车道或道路横断面通行能力在单位时间内降低的现象。由于城市道路具有交通流密度大、连续性强等特点,一条车道被占用,也可能降低路段所有车道的通行能力,即使时间短,也可能引起车辆排队,出现交通阻塞。如处理不当,甚至出现区域性拥堵。 车道被占用的情况种类繁多、复杂,正确估算车道被占用对城市道路通行能力的影响程度,将为交通管理部门正确引导车辆行驶、审批占道施工、设计道路渠化方案、设置路边停车位和设置非港湾式公交车站等提供理论依据。 视频1(附件1)和视频2(附件2)中的两个交通事故处于同一路段的同一横断面,且完全占用两条车道。请研究以下问题:
  1. 根据视频1(附件1),描述视频中交通事故发生至撤离期间,事故所处横断面实际通行能力的变化过程。
  2. 根据问题1所得结论,结合视频2(附件2),分析说明同一横断面交通事故所占车道不同对该横断面实际通行能力影响的差异。
  3. 构建数学模型,分析视频1(附件1)中交通事故所影响的路段车辆排队长度与事故横断面实际通行能力、事故持续时间、路段上游车流量间的关系。
  4. 假如视频1(附件1)中的交通事故所处横断面距离上游路口变为140米,路段下游方向需求不变,路段上游车流量为1500pcu/h,事故发生时车辆初始排队长度为零,且事故持续不撤离。请估算,从事故发生开始,经过多长时间,车辆排队长度将到达上游路口。

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

在这里插入图片描述
在这里插入图片描述

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

程序代码:

% 计算队列长度

function [cal] = calline(road)
global length DU;
cals = zeros(1,3);
for i = 2:4
   for j = 2:length-1
       if road(i,j) == DU && road(i,j+1) == DU
          cals(i-1) = cals(i-1)+1;                                         
       end
   end
end    
    
cal = max(cals);
end
function ret=Code(lenchrom,bound)
%本函数将变量编码成染色体,用于随机初始化一个种群
% lenchrom   input : 染色体长度
% bound      input : 变量的取值范围
% ret        output: 染色体的编码值
flag=0;
while flag==0
    pick=rand(1,length(lenchrom));
    ret=bound(:,1)'+(bound(:,2)-bound(:,1))'.*pick; %线性插值,编码结果以实数向量存入ret中
    flag=test(lenchrom,bound,ret);     %检验染色体的可行性
end
        
function ret=Cross(pcross,lenchrom,chrom,sizepop,bound)
%本函数完成交叉操作
% pcorss                input  : 交叉概率
% lenchrom              input  : 染色体的长度
% chrom     input  : 染色体群
% sizepop               input  : 种群规模
% ret                   output : 交叉后的染色体
 for i=1:sizepop  %每一轮for循环中,可能会进行一次交叉操作,染色体是随机选择的,交叉位置也是随机选择的,%但该轮for循环中是否进行交叉操作则由交叉概率决定(continue控制)
     % 随机选择两个染色体进行交叉
     pick=rand(1,2);
     while prod(pick)==0
         pick=rand(1,2);
     end
     index=ceil(pick.*sizepop);
     % 交叉概率决定是否进行交叉
     pick=rand;
     while pick==0
         pick=rand;
     end
     if pick>pcross
         continue;
     end
     flag=0;
     while flag==0
         % 随机选择交叉位
         pick=rand;
         while pick==0
             pick=rand;
         end
         pos=ceil(pick.*sum(lenchrom)); %随机选择进行交叉的位置,即选择第几个变量进行交叉,注意:两个染色体交叉的位置相同
         pick=rand; %交叉开始
         v1=chrom(index(1),pos);
         v2=chrom(index(2),pos);
         chrom(index(1),pos)=pick*v2+(1-pick)*v1;
         chrom(index(2),pos)=pick*v1+(1-pick)*v2; %交叉结束
         flag1=test(lenchrom,bound,chrom(index(1),:));  %检验染色体1的可行性
         flag2=test(lenchrom,bound,chrom(index(2),:));  %检验染色体2的可行性
         if   flag1*flag2==0
             flag=0;
         else flag=1;
         end    %如果两个染色体不是都可行,则重新交叉
     end
 end
ret=chrom;
function ret=Decode(lenchrom,bound,code,opts)
% 本函数对染色体进行解码
% lenchrom   input : 染色体长度
% bound      input : 变量取值范围
% code       input :编码值
% opts       input : 解码方法标签
% ret        output: 染色体的解码值
switch opts
    case 'binary' % binary coding
        for i=length(lenchrom):-1:1
        data(i)=bitand(code,2^lenchrom(i)-1);  %并低十位,然后将低十位转换成十进制数存在data(i)里面
        code=(code-data(i))/(2^lenchrom(i));   %低十位清零,然后右移十位
        end
        ret=bound(:,1)'+data./(2.^lenchrom-1).*(bound(:,2)-bound(:,1))';  %分段解码,以实数向量的形式存入ret中
        
    case 'grey'   % grey coding
        for i=sum(lenchrom):-1:2
            code=bitset(code,i-1,bitxor(bitget(code,i),bitget(code,i-1)));
        end
        for i=length(lenchrom):-1:1
        data(i)=bitand(code,2^lenchrom(i)-1);
        code=(code-data(i))/(2^lenchrom(i));
        end
        ret=bound(:,1)'+data./(2.^lenchrom-1).*(bound(:,2)-bound(:,1))'; %分段解码,以实数向量的形式存入ret中
        
    case 'float'  % float coding
        ret=code; %解码结果就是编码结果(实数向量),存入ret中
end
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数学建模算法与应用 第11章 偏最小二乘回归及其方法

目录 11.1 偏最小二乘回归概述 11.2 Matlab 偏最小二乘回归命令 Matlab代码示例:偏最小二乘回归 11.3 案例分析:化学反应中的偏最小二乘回归 Matlab代码示例:光谱数据的PLS回归 习题 11 总结 偏最小二乘回归(Partial Least …

MySQL 【日期】函数大全(三)

DATEOFYEAREXTRACTFROM_DAYSFROM_UNIXTIMEHOURLAST_DAYLOCALTIMELOCALTIMESTAMP 1、DATEOFYEAR DATEOFYEAR(expr) :返回一个从 1 到 366 代表给定日期是一年中的第几天的数字。 如果指定的表达式不是一个合法的日期或者日期时间,DAYOFYEAR() 函数将返回…

无功补偿设备在室内及室外安装的区别

无功补偿设备在室内和室外的安装存在多方面的区别,包括环境条件、设备选择、安装要求以及维护方式。下面详细介绍两者的区别及相应的注意事项。 一、环境条件的差异 1、室内安装 温度和湿度:相对受控,温度变化较小,湿度可调节&…

k8s的部署和安装

k8s的部署和安装 一、Kubernets简介及部署方法 1.1 应用部署方式演变 在部署应用程序的方式上,主要经历了三个阶段: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参…

STM32传感器模块编程实践(六) 1.8寸液晶屏TFT LCD彩屏简介及驱动源码

文章目录 一.概要二.TFT彩屏主要参数三.TFT彩屏参考原理图四.TFT彩屏模块接线说明五.模块SPI通讯协议介绍六.TFT彩屏模块显示1.显示英文字符串2.显示数字3.显示中文 七.TFT彩屏实现图片显示八.STM32单片机1.8寸 TFT LCD显示实验1.硬件准备2.软件工程3.软件主要代码4.实验效果 九…

Redis set类型 zset类型

set类型 类型介绍 集合类型也是保存多个字符串类型的元素的,但和列表类型不同的是,集合中 1)元素之间是⽆序 的 2)元素不允许重复 ⼀个集合中最多可以存储 个元素。Redis 除了⽀持 集合内的增删查改操作,同时还⽀持多…

【Vue】扫盲(五)Vue 的生命周期与钩子函数详解

【Vue】Vue扫盲(一)事件标签、事件修饰符:click.prevent click.stop click.stop.prevent、按键修饰符、及常用指令 【Vue】Vue扫盲(二)指令:v-for 、v-if、v-else-if、v-else、v-show 【Vue】Vue扫盲&…

多种方式确定Linux是CentOS还是Ubuntu

目录 前言正文 前言 对应的基本知识比较少,以下只是记录总结 由于目前使用的是centos,后续找到linux会对应补充 正文 要确定Linux系统是CentOS还是Ubuntu,可以通过以下几种方式进行分析 一、查看发行版信息文件: CentOS&…

Prism导航入门学习笔记

首先创建一个空的Prism项目 在View文件夹中创建一个UserControl的A界面&#xff0c;再在ViewModel中创建一个AViewModel的类 在主页面中创建Button按钮&#xff0c;使用Command属性&#xff0c;指向导航命令的方法&#xff0c;CommandParameter指向导航的页面 <Grid><…

【Java】画心形图形

开始看到的是这个爱心图形&#xff0c;挺好看的&#xff08;感谢这些前端巨佬&#xff09;&#xff1a; HTML流光爱心_爱心代码html-CSDN博客 本来想着自己看下这个源代码能不能实现&#xff0c;看了下源代码其实非常复杂。 在看代码的过程中发现&#xff0c;源代码里边给出…

多线程(二):创建线程关键属性终止线程

目录 1、run & start 2、Thread类常见的属性和方法 2.1 构造方法 2.2 属性 3、后台进程 & 前台进程 4、后台线程的判断和设定——isDaemon & setDaemon 5、线程是否存活——isAlive 6、终止一个线程 6.1 lambda变量捕获 6.2 currentThread & isInterr…

使用three.js 实现蜡烛效果

使用three.js 实现蜡烛效果 import * as THREE from "three" import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js"var scene new THREE.Scene(); var camera new THREE.PerspectiveCamera(60, window.innerWidth / window.in…

【opengl学习】opengl的compute shader

目的 opengl虽然老&#xff0c;但是算上opengl es&#xff0c;应该是应用最广泛的显卡api。用compute shader做计算&#xff0c;可以一定程度上摆脱N卡的限制&#xff0c;也摆脱windows和linux&#xff0c;mac等平台的限制。 计算着色器应该没有完全榨干硬件的性能&#xff0c…

CUDA - 如何让线程和内存对应

前提&#xff1a; 本文的目的就是设置的程序中&#xff0c;每个线程可以负责一个单独的计算任务。帮助学习和理解线程是如何组织的。 本文处理一个二维数据的加法。 数据在内存中的存储 以线性、行为主的方式存储。 例如&#xff0c;一个16*8的一维数组&#xff0c;在内存…

站在用户视角审视:以太彩光与PON之争

作者:科技作家-郑凯 园区,是企业数字化转型的“中心战场”。 云计算、大数据、人工智能等数智化技术在园区里“战火交织”;高清视频、协同办公,智慧安防等大量创新应用产生的海量数据在园区内“纵横驰骋”;加上大量的IOT和智能化设备涌入“战场”,让园区网络面对着难以抵御的…

查看PyTorch的GPU使用情况的工具

文章目录 torch.cuda APIPyTorch SnapshotPyTorch ProfilerNVIDIA Nsight Systemstorchinfo torch.cuda API torch.cuda.memory_stats&#xff1a;返回给定设备的 CUDA 内存分配器统计信息字典。该函数的返回值是一个统计字典&#xff0c;每个字典都是一个非负整数。torch.cud…

antDesign Form.List下的Form.Item如何通过setFieldsValue设置值

翻了一下antDesign官网只看见了Form可以使用setFieldsValue设置值&#xff0c;却没找到Form.List使用setFieldsValue设置值。 于是研究了一下&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 我的解决方案是&#xff1a; 先设置为空数组, 再设置成…

利用编程思维做题之反转链表

牛客网题目 1. 理解问题 给到我们的是一个单链表的头节点 pHead&#xff0c;要求反转后&#xff0c;返回新链表的头节点。 首先在心里设想能够快速理解的例子&#xff0c;如给你123序列&#xff0c;要你反转此序列如何回答&#xff1f;将最后一个数字3作为头&#xff0c;然后修…

学习threejs,THREE.MeshBasicMaterial网格材质、THREE.MeshLambertMaterial漫反射材质

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.MeshBasicMaterial网…

MATLAB代码解析:利用DCGAN实现图像数据的生成

摘要 经典代码&#xff1a;利用DCGAN生成花朵 MATLAB官方其实给出了DCGAN生成花朵的示范代码&#xff0c;原文地址&#xff1a;训练生成对抗网络 (GAN) - MATLAB & Simulink - MathWorks 中国 先看看训练效果 训练1周期 训练11周期 训练56个周期 脚本文件 为了能让各位…