今天刚结束了全国大学生美国数学建模大赛,我们组选择的貌似是很多人选择的A题。
我们采用的是元胞自动机交通流模型来完成的建模。
首先,说说我们队题目的理解:
一、问题解读
1.题目的背景是说例如中国和美国的的公路运输都规定汽车行驶的时候必须是靠右行,我们必须建立一个模型来判断这个模型对增大交通流是否起作用?
既然是要判断对增大车流量是否有效,那这就需要我们进行对比,我们对比了德国的交通规则,自己假设的混合型交通规则(汽车在任意的道路上行驶,在安全距离允许的范围内可以超车)
对于道路上不同交通负荷必须要做一个判断。在低负荷和高负荷情况下的这些交通规则的区别是什么?这必须是要在模型中设计到的东西
2.左行规则和右行规则有什么区别?
需要查资料,详细弄得这两个规则
3.如果道路是智能系统,或者车辆安装了智能系统,又会有什么区别?
人在行驶的时候,整个过程是很复杂的,就比如说在安全的距离范围内,前面有一辆车,人们可以选择超车或者跟随,但是智能系统却可以提前计算好整个道路的交通情况,给你提出最佳的建议,并且保持交通流量最大化的选择。因此,模型中的有些变量或许就要发生改变。
例如,我们的模型当中认为,如果要是流量尽可能的大,我们应该在安全距离允许的范围内可以在限速要求的前提下,以最大限速的速度行驶。如果发现前面有一辆车,并且超车道超车的条件适宜,那么我可以选择超车或者是跟随这辆车。这个可能是由驾驶员的心情决定的。但是,如果在智能系统的环境下,系统能够提供给驾驶员更多的建议,从反应时间到是否选择换道都是有影响的。我们对每一辆可以超车的车都随机分配一个概率,并设定一个常数概率P,在模型中我们假设换道超车的概率就是0.9,当随机分配的概率小于等于0.9的时候我们就认为超车,大于0.9时我们就认为车辆驶跟随行驶的。但是在智能系统中完全是以系统的意志来决定的。
二.模型建立
我们建立双车道元胞自动机交通流模型来分析以上问题。 这个模型的优点是吧时间和空间都离散化,这样必须要考虑太多的细节问题,简化了问题的求解。例如,汽车超车可能是后面的车速递比前面的车速度大,匀速超过或者加速超过的,又或者等等,但这些对于元胞自动机都是不需要考虑的。我们关注某一个时刻的状态,并不关心你是怎么超车的。 只要条件满足,我们就可以选择换道,超车,以及并道。1.模型的假设(靠右行模型建立)
- 只有两条车道,右边的为行车道,左边的为超车道
- 汽车一般被认为在满足条件的情况下有换道、超车、并道这三个步骤
- 公路是单向的封闭的,不存在岔路口汽车可以驶入和驶出,也就是在这一路段流量是守恒的
- 汽车不出现抛锚等问题,路段上也没有交通事故发生
- 行车道上有速度的最低和最高限制
- 超车道上也有速度的最低最高限制
- 没有违规驾驶的驾驶员
- 初始时刻我们认为超车道上是没有任何车辆的,行车道上存在n辆汽车
- 汽车进入高速公路匝口是按照泊松分布产生的
- 进入高速的每一辆汽车都是在速度规定的范围内
- 在高速公路上我们认为0表示没有汽车,1表示存在汽车
2.符号定义
在我们的模型中,时间、空间以及速度都被整数离散化。道路被划分成离散的格子(即元胞),每个元胞或者是空的,或者被一辆车占据,每辆车的速度可取为0, 3, 4, …, Vmax,是汽车的最大速度,0代表没有汽车。在t->t+1过程中,模型按照如下规则进行演化:
1) 加速。Vn->min(Vn+1,Vmax)对应于现实生活中司机希望以最大的速度行驶的特点
2) 减速。Vn->min(Vn,dn)驾驶员为了避免和前车的碰撞而采取减速的措施
3) 随机慢化。以概率p,Vn->max(Vn-1,Vmax);由于各种不确定的原因(司机心情,路面状况等)导致车辆减速
4) 运动。Xn->Xn+Vn;车辆按照调整后的速度行驶。这里可以知道dn=Xn+1-Xn-1;
三.编码实现
我们使用matlab实现模型的仿真代码的整理架构1.初始化模块首先,先进性初始化操作,建议元胞模型,n为元胞个数,由于是双车道,这是一个2*n的矩阵。
n=100; %数据初始化
z=zeros(1,n); %元胞个数
z=roadstart(z,5); %道路状态初始化,路段上随机分布5辆
cells=z;
之后我们要在行车道上任意分配n辆汽车,并使得速度在高速公路要求的范围内为其分配相应的速度
汽车的入口控制我们设置泊松分布来模拟某段时间内汽车进入高速公路的数量
今天先写到这里,明天继续好了,想看点别的
转载注明出处:http://blog.csdn.net/chichoxian/article/details/19089457