2016数学建模国赛B题湖北赛区省一等奖论文详解 - 图文

更新时间:2023-11-03 15:24:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

小区开放对道路通行的影响

摘 要

城市不断发展,小区不断增多,城市交通要道拥堵,开放小区能否达到优化路网结构的目的一直是人们热议的话题,封闭式小区破坏了城市路网结构,堵塞了城市“毛细血管”,容易造成交通堵塞。为此针对上述问题,建立如下模型:将所有开放的小区道路和无信号道路都看作是次要无信号干道,使问题尽可能的简化,周边和小区的交通情况就能看作只拥有“主干道”和“次干道”的假设。来具体分析小区开放对道路通行的影响。

针对问题一,对于能否良好的改善交通,本文将道路模型和影响的参变量都联系起来,将“穿越间隙理论”作为主要参变量,比如交通量、车距、穿越时间等的因素考虑进去得到了初步的模型,并且为了使情况更贴合实际,模仿泰勒公式并引入了修正系数,这样问题一的模型在大致基础上得到了解决。

针对问题二,引入了TPI、TBI、TCR三个评价指标,从不同的方面来研究小区开放对周边道路的影响。分别对应道路运行指数、时程可靠性指数,交通拥堵率指数。完全从通行的角度来研究,使得问题更加的具有针对性。

针对问题三,面对具体的问题,也就是开放小区的综合效果。需要考虑的细节也就越多,增添了司机想要达到路程与时间都少的“最短路”的条件,利用图论的知识从拓扑结构角度完成了考量,另一方面,又从几何结构方面,考虑了圆形的路程对于开放小区的影响,得到了圆形路程可以“拉直”成梯形直线,对于该问题的影响较小。最后又根据每天的交通高峰期,考虑了在拥堵时间行人也会影响机动车、自行车等的车辆行驶,由此得到了新的修正系数。

针对问题四,根据上述的模型,由于实际复杂程度和理想情况相去甚远,可以采用修建地铁,立交桥,小区出入口方式也变成像红外线灯的自动感应等方法以加快速度,从而减少交通拥堵现象。

本文常用的两个思想方法就是:“修正”,“加权”。通过这两种思想,得到的模型更加客观、全面、具有可信度。不仅用了理论分析,而且根据实际数据进行了验算,在此过程中使用到了Excel、Matlab等软件。得到的结论就是针对局部区域,需要按照模型步骤进行计算车流量以及TPI、TBI、TCR三大指数,与原来的畅通情况进行比较,得出是否开放小区的建议。

关键词:加权 修正系数 三大指数 Matlab 拓扑结构 几何结构

一、问题重述

随着城市规模的不断扩大,城市内交通变得越来越必要,因而开放小区能否优化城市网络结构也变成了人们关注的焦点之一。对于开放小区这个决定,有三方观点,一方认为,开放小区能够提高城市整体交通的“运营”,因为封闭的小区容易堵塞交通,让车辆无法自由行驶,就如同“毛细血管”的堵塞一样,而开放的小区就像为人体增加了“毛细血管”,更容易方便城市整个交通“血液”的运输。但是另一方认为,开放的小区会导致小区附近的车辆增多,就像身体某部分血液凝聚,而凝聚的地方多了,同样会导致主干“血管”的运输情况。还有一方认为,不同的小区的地理位置,面积大小,周围路线的情况是不同的,因为是否开放小区是根据各种因素综合评判之后才能决定的,不能一概而论。所以需搜集相关数据,建立合理的数学模型研究如下问题: (1) 选取合适的评价指标体系,用此分析小区是否开放对周边交通道路的影响情况

(2)建立标准,客观的车辆通道模型,用以研究开放的小区对周边道路通行的影响

(3) 小区开放产生的效果,可能会与小区结构及周边道路结构、车流量有关。选取或构建不同类型的小区,应用已建立的模型,定量比较各类型小区开放前后对道路通行的影响。 (4) 根据上述研究结果,从交通通行的角度,向城市规划和交通管理部门提出关于小区开放的合理化建议。

二、问题分析

2.1问题一的分析

2.1.1针对问题一,要求通过建立全面的指标和评价模型来研究小区开放对道路通行的影响。将这个问题分成两种类型来进行判断: (1)无信号控制交叉口一类的次要交通道路模型。(2)主干道路的交通能力模型。根据两类交通道路的情况,对小区的开放之后车辆通行的改变进行分析。用“开放小区”以及“不开放小区”两种情况进行对比,发现改变的因素从而得出需要研究的指标以及需要建立的模型。

针对问题二,其模型是在第一问的基础之上建立的。因此需要对第一问的评价体系和数学模型进行修正。假设双向车行为两股车流,将车量通道模型根据不同的交通流量,即不同的车道上的车辆数目,更严格的说是不同车道上的车辆密度来分为以下几种类型(不同类型相互独立):(1)道路类型:a.主干道b.次干路支路;(2)车道宽度不同;(3)侧向净宽不同;(4)车道流向:左转、中行、右转三种情况;(5)不同的车道数;(6)交通条件:如是否有信号灯或者是否有非机动车流,以及人流车流情况。

针对问题三,本文将居住的小区分为以下三种情况讨论,最常见类型(包括:最小的居住组团和适中的居住小区)和国内不常见类型(较大的居住区)

??居住组团(最小)?最常见?(中)??居住小区??国内不常见:居住区(大)而道路类型分为以下两种情况:

?次干道 ??主干道所以一共有3?2?6种小区与道路的组合

由于居住区占地面积非常大,而且居住内部常有次干道相互连接,在国内较为少见,在此不做讨论。本文就这几种情况做讨论,得到结论。

三、模型假设

区道路相较于城市主干道路可视为无信号控制的次要道路 2、假设小区道路(次要交通道路)的交通规律与主干道路一致; 3、假设次要交通道路不发生大规模拥堵; 4、假设所有的车都遵守交通规则;

5、假设交通情况不受驾驶者心理因素也不受天气因素、修路状况等的额外因素的影响

1、 假设开放小区不会在小区道路与主干道路交汇处设置交通信号灯,则小

四、符号说明

符号 v 意义 汽车行驶速度(km/h) 符号 意义 路段j的行程时间可靠指数 路段j行程时间的95%分位数 TBIj VKTSi 统计时段内路段Si的VKT值 t0.95,j

VSi- LSi TCR TBI 统计时段内路段Si的当量小汽车的交通量(单位:pcu) 路段Si的长度单位(单位:km) 道路交通拥堵率(%) 行程时间可靠性指数 交通量 临界间隙时间 tj t TPI fjtj路段j的平均行程时间 tjf畅通状态下路段j的行程时间 道路运行指数 通行能力 平均车头时距 车道数之比 车道宽修正系数 机动车道路通行能力分类系数 Q1 q Q0 t0 ? W M X 路况干扰系数 Y 侧向宽修正系数 五、模型建立和解决

5.1问题一模型的建立与求解

中国城市考虑到主要城市道路的通达功能,往往采用无信号控制方式,给予主干道较大的通行权,以充分保证主要道路的交通量。基于这种情况,本文对小区开放对于道路通行的影响进行分析。 5.1.1无信号控制交叉口次要交通模型

(1) 目前国内外在计算干路优先通行无信号交叉口的次要交通道路行为时,

采用可穿越同隙理论,对于这个理论有以下简述:在无信号控制路段或者是无信号控制的交叉路口,行人是可以利用机动车或者自行车等车辆的间隙穿越过马路,换言之,行人对于车辆的行驶等的状态基本是没有影响的。

(2) 在以上情况之下,可以得到道路通行能力的理论计算公式:

Q0e?qt Q1= (1) ?qt1-e0其中,Q1---次要交通道路下的通行能力(pcu/h)

Q0---主要交通道路下的交通量(pcu/h)

q为主要道路上的平均车头时距(pcu/s)(q=Q0/3600)

t0为临界间隙时间, 允许停车让行取7-9s,减速让行取6-8s。

t为次要道路上的车辆跟驰行驶的车头时距。一般去3-5s。 一般在这个公式的推导之下作如下的假设: A.主要道路上车辆优先通过无信号控制交叉路口 B.将主干路的双向车流看作一股车流

C.交通流量不大,车辆之间的间隙服从负指数分布。

(3) 为了使情况更贴近实际,本文对以上模型进行了修正:主干道交通量较少时,以上模型满足,当交通量变大,并且双向行车在交叉口时,需要进行以下修正 5.1.2无信号控制交叉口次要交通修正模型

当交通量度较大接近拥堵时,并且双向交通行车影响次干路穿越时,(1)式则不能很好的满足现实需求。因此需增加假设:

(1) 主干路双向行车看成两股车流,两股车流到达随机,且互相独立

(2) 主干道路双向行车在实际路况下不会在交叉路口超车,按一定规则有序

行驶

(3) 双向交通流量近似相同

(4) 当主要道路上的一个方向的间隙满足穿越,司机便穿过空隙,在中央行

车等待另一侧穿越。 (重要假设) 则式子(1)可以改成以上公式:

Q0(e?qt/2)?qt/2Q1?(1?e) (2)

1?e?qt00其中,Q1---次要交通道路下的通行能力(pcu/h)

Q0---主要交通道路下的交通量(pcu/h)

q为主要道路上的平均车头时距(pcu/s)(q=Q0/3600)

t0为临界间隙时间,允许停车让行取7-9s,减速让行取6-8s。

t为次要道路上的车辆跟驰行驶的车头时距。一般去3-5s。

说明:A. 当主要道路一个方向后来车之间间隔大于t0/2时,驾驶员启动汽车,当另一个方向来车间隔也大于t0/2,车辆顺利通过。当小于t0/2时,车辆停在道路中央。

B.无论是主干车流还是穿越主干车流均以按穿越主干车流计算。 5.1.3无信号控制交叉口次要交通最终修正模型

不仅考虑主干道路方向往来车影响,并考虑侧向来车的影响干扰,并对公式(2)进行修正:

Q0(e?qt/2)?qtQ1???(1?e1?e?qt00/2Q0(e?qt/2)?qt)+(1-?)?(1?e1?e?qt00/22) (3)

其中,Q1---次要交通道路下的通行能力(pcu/h)

Q0---主要交通道路下的交通量(pcu/h)

q为主要道路上的平均车头时距(pcu/s)(q=Q0/3600)

t0为临界间隙时间,允许停车让行取7-9s,减速让行取6-8s。

t为次要道路上的车辆跟驰行驶的车头时距。一般去3-5s。

? 按照道路车道数之比设计。 5.1.4需要的数据以及变量、参量等

(1)交通路口主要道路的交通量为1200pcu/h (2)车辆到达服从泊松分布

(3)次要道路可穿越临界车头时间t=6s (4)车量跟驰时间t=4s

(5)主干车道与次要道路之比为1:4,也就是?=0.25 (6)主干直行道通行能力: 主干道交通能力模型

?主干道:快速道(A)道路类型: ?

?次干路:支路?计算行车速度>40km/h 车道宽度为3.75m(B)车道宽度:?

?计算行车速度?40km/h 车道宽度为3.5m(C)侧向净宽:分为单向道路方向不定与双向道路方向确定,影响道路修正能力系数

?左转?(D)车道流向:?中行

?右转?(E)车道数:不同的车道数对应不同的抑成系数

图1:双车道示意图

图2:三车道示意图

图3:十字路口

?有无信号灯??车流?(F)交通条件: ?人流

?非机动车流???等等Nmax=3600/t0?36001000v=(辆/h) (4)

l0/(v/3.6)l0 其中 v是行车速度(km/h)

t0是车头最小时距(s)

l0是车头最小间隔(m)。

以基本同行能力为基础考虑实际道路和交通状况确认修正系数。 路况干扰系数---X 车道宽修正系数---W

侧向宽修正系数---Y

机动车道路通行能力分类系数---M

Nk?X?W?Y?M?Nmax (5) 注意:式子中的修正系数在理想情况之下为1,实际都应该小于1。 主干道交叉口同行能力:

Cr?C0??条??交??车道 (6) 其中:C0为单条车道理论通行能力 ,?条为车道折减系数,

?车道是车道负折减系数。

5.2问题二的模型与求解

道路运行能力是由车量的组成,车流密度,车速等的因素组成的。交通道路有十字交叉路口、丁字交叉路口,或者主干道、次干道再或者几级公路等的区分。针对问题,建立合适的评价指标评价体系,评价小区开放对周边道路的影响,用于评价整体城市道路网和区域交通道路网。 5.2.1 TPI模型即道路运行指数的计算

道路交通运行指数的计算方法:

(1) 以不高于15分钟的统计间隔,计算道路网中各路段的平均行程速度。 (2) 分别统计主干路与次干路处于严重拥堵等级的路段里程比例,交通运行等级见下表。

(3) 对各等级道路拥堵里程比例以及车公里数(VKT)作为权重进行加权计算确定道路网拥堵里程比例,VKT比例计算见表2

(4) 按照道路网拥堵里程比例与交通运行指数转换关系(详见表3)。

表1 主干路 次干路 畅通 v>40 v>35 30

表2 VKT比例计算方法 VKTSi?VSi?LSi 其中:VKTSi---统计时段内路段Si的VKT值,

VSi---统计时段内路段Si的当量小汽车的交通量(单位:pcu), LSi---路段Si的长度单位(单位:km)。

根据TPI的数值按照以下表格将道路交通运行水平划分为5个等级:

表3 道路交通运行水平划分

道路交通运行指数 (TPI) 0?TPI?2 2?TPI?4 4?TPI?6 6?TPI?8 8?TPI?10 道路网运行水平 畅通 基本畅通 轻度拥堵 中度拥堵 严重拥堵 拥堵里程比例:各等级道路处于中度拥堵、严重拥堵等级的路段里程比例,从空间分布的角度反映道路网交通网拥堵影响的范围。

拥堵里程比例的计算方法 5.2.2 TBI模型即行程时间可靠性指数

95%概率条件下,通过一个路段或者多个路段比平均时间多花费的时间与畅通状态下行程时间的比值,值越大,越不可靠。

行程时间可靠性指数反映道路网交通运行的波动性。 以下简述可靠性指数的计算方法:

(1) 按照下式计算统计间隔内,道路网各路段的行程时间可靠性指数:

TBIj?t0.95,j?tj (7)

tjf其中, TBIj---路段j的行程时间可靠指数

即95%的概率条件下通过路t0.95,j---路段j行程时间的95%分位数,

段行程时间

tjf---畅通状态下路段j的行程时间。 tj---路段j的平均行程时间。

(2) 以路段长度作为权重,统计各路段道路行程时间的可靠性指数。

(3) 对各级道路的行程可靠性指数,以VKT比例作为权重进行加权计算道路

网行程时间可靠性指数。VKT计算方法见表2

拥堵里程比例:各等级道路处于中度拥堵、严重拥堵等级的路段里程比例,从空间分布的角度反映道路网交通网拥堵影响的范围 5.2.3 TCR模型即道路交通拥堵率

特定时间内处于中度拥堵和严重拥堵等级的道路交通运行指数之和,与该路

段内所有交通运行质数之和的比值,综合反映时间段内交通拥堵程度,值越大拥堵程度越严重。

道路交通拥堵率按照下面公式计算:

TCR?TPIj?jTPIk?k?1N (8)

其中,TCR---道路交通拥堵率(%),

TPIj---特定时间段内统计间隔的道路交通运行指数。

j??TPIj?6?,

TPIk---特定时间段内第k个统计间隔的道路运行指数。

N?

5.3问题三的模型与求解 5.3.1 初级模型

根据问题三的分析,本文仅讨论居住小区对周边不同道路的影响,假设居住

团与居住小区内部均为单车道次干路,周边道路为两车道以及两车道以上的次干路和主干路。

小区次干路的同行能力为:

特定时段长度,(统计间隔一般不小于25分钟)

统计间隔长度Q0(e?qt/2)?qtQ1???(1?e1?e?qt00/2Q0(e?qt/2)?qt)+(1-?)?(1?e1?e?qt00/22) (9)

主干道直行通行能力为Nk?X?W?Y?M?Nmax 主干道交叉口通行能力为: Cr?C0??条??交??车道

四条主干道围成的一个矩形为一个街区,小区位于街区之内,街区长l1,宽

l2,十字路由边长l3的小正方形区域组成。

A.若不开放小区

-2?4?l3? P11?Nk???2?(l1?l2)? (10)

P11是一个截取的通行量 B.若开放小区

则会多出n1条横向次干路街道,n2条纵向次干路街道,新增2?(n1?n2)个无信号交叉路口。

则主干道的通行量为:

P21?Nk???2?(l1?l2)?2?4?l3?2?(n1?n2)?l3?? (11) 新增的主干道通行量为:

P22?n1?l1?Q1?n2?l2?Q1 (12)

C.得出以下结论

?P11?P21?P22,无价值小区? ?P12?P21?P22,改善不明显的小区 (13)

??P12?P21?P22,改善道路状况的小区5.3.2修正模型

A.最短路模型

由于司机在行驶时,一般为了时间最短,采用的“最短路”。本文将每个路口以及司机想要到达的目的地看作是图论问题中的一个个“节点”。而每条道路则看作是“边”。但是,这个由点和边构成的“图”不是简单的一个无向图,而是一个加权无向图。而图中的每条边也不是简单的以路程作为权重,而是综合了各种因素之后的权重变成的“边”。因此,在计算最短路的时候,首先要研究每条路的权重,而不能像最初模型,把它简单地看作是一个矩形平均分,可以先不考虑几何模型,只考虑它的拓扑模型,从而得出我们的结论。而对于一个固定的街区,采用的最短路算法是Dijkstra算法,这个算法经典而且常用。 Dijkstra算法的算法思想以及算法流程

1. 将定点集合分成两部分,一部分是已经知道且求出的定的集合Known,简

称K,另一部分是没有确定的定点集合Unknown,简称U。

2. 将集合U中的所有定点按照权重递增的顺序,一个一个加入集合K中。

加入的过程中要满足两个要求:(1)从起始点到K中任意一点的路径加权长度都要不大于起始点到U中任意一点的最短路长度。(2)每个顶点需要对应一个“值”。

3. 从中找到一个定点,它不仅与K的某一个顶点有边相邻,而且这条关联

边的权的最小的。记这个顶点为P,将它加入到集合K中。

4. 对U中剩下的所有“不确定”顶点进行如下的修改:加入了P作为K中

的顶点后,假如从起始点到目的点的距离值缩短,则修改这个距离值。 5. 重复3、4过程直到P是目的地点为止。 6. 根据算法写的程序见附录1。 最短路权重计算

虽然已经解决了最短路算法的问题,但重要的是,这个权重应当怎么计算,为了简化模型,采用初级模型中的计算方法。

但是理论都是建立在“可穿越间隙”的理论情况下计算的,事实上,由于在早高峰,晚高峰的时候都有行人,在这种高峰的时候,拥堵情况严重,但是行人对于交通的影响也是很大的。

研究了行人对于交通的影响,可得出以下二级模型:

行人过街模型

1. 行人过街模型一:假设行人可以一次性过街。并且假设行人是以“行人群体”的形式过街。因而可以根据参考文献的相关信息得到以下重要信息并列出关系式:

?S?qr?sp??qr???C??sp?bp?rp (14) ????Q/3600?L?S/B?其中S---是行人群体占据人行街道的面积(m2),

qr---行人在红灯亮的时候陆续到达的行人流量(p/h),

sp---一个行人所占道路的面积(m2/人),bp---行人之间的横向

的间距(m),

rp---行人过马路或者其他时间行走时的纵向间距(m),

?---行人流量到达率(人/s),C---信号周期时间(也就是平均机

动车、行人等的绿灯时间以及相位时间综合算下来的时间), L---行人群体的宽度, B---人行通道的宽度。

2. 行人过街等级划分

表4 行人过街交通服务等级划分 A级 行人可以完全自由行动 S>3(m2),bp>1(m),sp>3(m) B级 行人处于准自由状态,偶尔有降速行为, S为2-3(m2),0.9(m)< bp<1(m) 2.4(m)

再次将五个等级转化为线性权重。例如A级就是最终的指数乘以1.0,B最终的指数乘以1.5,C级就是最终指数乘以2.0,D级就是最终指数诚意2.5,

E级指数就是最终乘以3.0。

B.几何模型

1.车辆直行模型:车辆直行模型则认为车辆在行驶过程之中正常行驶,5.3.1中的流量计算结合问题一二的模型解决计算即是要考虑的因素。 2.车辆转弯模型:

简化模型如下:

(1)形式车辆为四轮车,且四个轮子在做圆周运动的时候它们的圆心位置是相同的。

(2)左前轮运动的圆周半径

Lcsin?z

(3)左后轮的运动圆周半径

Lc*cos?

sin?z(4)右前轮的运动圆周半径

Lcsin?y

(5)右后轮的运动圆周半径为

Lc*cos?

sin?y(6)左前轮转弯角和右前轮转弯角分别为?y和?z,这两个角度满足的关系为:

ctg?z?ctg?y?Sc/Lc

(7)四个轮子应当具有一样的瞬时速度: 根据示意图4进行简单的物理分析可得到上面的结论,在此不进行赘述 Vφy

θz θy

左前轮 左后轮

Qz Qy 右前轮 Vhz Hz Vhy Hy 右后轮 图4

5.3.3具体实例

得到如下表5的数据

表5:东西双向的机动交通合计 机动合计 东西向机动交通 西东向机动交通 175 92 83 235 137 98 215 115 100 210 10 105 209 109 109 133 77 56 159 81 78 131 61 70 165 88 77 157 77 80 211 80 131 196 70 125 118 23 95 由此做出如下直观的折线图5:

图5:东西双向小区周围主干道交通流量

表6:南北双向的机动交通合计 双向机动交通量合计合计 北向南机动交通量 南向北机动交通量 1152 455 697 1093 665 428 1170 554 616 1131 645 516 1005 437 568 617 271 346 873 283 590 1002 398 604 1209 605 604 1220 550 670 1149 465 684 818 330 488 309 288 21 由此做出直观的折线图6:

图6:南北双向小区周围主干道交通流量

通过计算,可以得出不开放小区时的主干道通行能力:

lij??ji=1?113M?EWij?rij??ij?1?113N?SNij (15)

其中,lij是东西向第i个时间,第j条路段的长度,总共东西向有M条路段,同理rij是南北向第i个时间,第j条路段的长度。EWij既是对应路段以及时间的流量,SNij同理。

而需要计算的数据如通行能力等,如下表:

而选择开放小区,也就是途中两个深蓝色的干路,根据理论分析,可以知道它们无论是否弯曲,都可以按“拉直”的直线算,且同一条道路上的流量密度保持不变,因而可以利用所加的次干道的平均值进行计算。

随机选取两个顶点,并且用到Dijkstra算法进行计算,最终得到的“最短路径之和”变短。具体计算部分见程序。因而可以认为这个小区开放了之后对于

减少流量是有好处的。

然后利用模型二三计算了TPI、TBI、TCR等指数,发现都合理,也就是说开放小区对于小区周围的交通情况有好处。 5.4问题四

对于是否开放小区的决定,我们提出以下意见:

这个问题不能一概而论。尽管在问题三中的实验结论是开放小区更好。但是我们不能认为所有的小区都开放了之后就可以达到城市交通运行通达的目的。反而,我们要在进行决定规划之前,要运行本模型进行细致的计算,不仅要计算出总流量是否减少,而且还要计算出TCR、TPI、TBI指数是否得到了优化。经过常识经验可知,在不怎么发生拥堵的地方,为了小区的安全性、完备性的目的,我们应当不开放小区。而对于中度拥堵,或者严重拥堵的情况下,我们应当适量的开放少数小区,且不是所有小区的街道都开放,而是开放部分能使得三大指数(即TCR、TPI、TBI)指数变大的次干路。由于实际复杂程度和理想情况相去甚远,我们总结出了如上表格的按等级的意见。我们不仅应该在开放小区上作出努力,更应该为了较少高峰期拥堵,尽可能的调整高峰情况的发生,比如修建地铁,立交桥,小区出入口方式也变成像红外线灯的自动感应,以加快速度,还有红绿灯的时间设计也应该经过计算之后巧妙设置。一旦真正发生了拥堵,也要让交警合理管理,或者是做出疏散的准备,为了安全,不能够为一己之私,做出超车抢道等的行为。法律法规是我们必须遵守的东西,这既是责任也是义务。

六、模型优缺点以及改进

6.1.1模型优点

模型有点就是考虑的情况比较充分,没有只看“流量”一个因素而作为是否开放小区的必要条件。并且将各种情况分类,做到了不片面、很具体的优点。 6.1.2模型缺点以及改进

(1)最短路模型虽然利用了,也确实是实际形式中的方式,但是权重计算是

for j=1:1:n for k=1:1:M

net(j)=net(j)+Wjk(j,k)*P(k); net_ab(j)=(net(j)-b(j))/a(j); end

y(i)=y(i)+Wij(i,j)*mymorlet(net_ab(j)); % y(i)=mysigmoid(2,y(i)); end end

epoch=epoch+1; err=T-y;

% SSE(epoch)=err*err'/M; % epoch=1:1:max_epoch; SSE(epoch)=err*err'/M; %[epoch SSE] end

%%%%%%

epoch=1:1:max_epoch; figure(1)

plot(epoch,SSE,'r');

title('训练后的均方误差');

%legend('target output','WNN output',1); % figure(1)

function [d,index1,index2]=Dijkf(a) %两点间最短距离的Dijkstra算法 % a表示图的权值矩阵

% d表示所求最短路的权和 % index1 表示标号顶点的顺序 % index2 表示标号顶点索引 % 起始点为第一个点 %参数初始化 M=max(max(a)); pb(1:length(a))=0; pb(1)=1; index1=1;

index2=ones(1:length(a)); d(1:length(a))=M; d(1)=0; temp=1;

%更新l(v),同时记录顶点顺序和顶点索引 while sum(pb)

tb=find(pb==0); %第i次循环处理第i+1个顶点

d(tb)=min(d(tb),d(temp)+a(temp,tb)); %更新l(v) tmpb=find(d(tb)==min(d(tb))); temp=tb(tmpb(1)); pb(temp)=1;

index1=[index1,temp]; %记录标号顺序

index=index1(find(d(index1)==d(temp)-a(temp,index1))); if length(index)>=2 index=index(1); end

index2(temp)=index; end

%记录标号索引

否合理,仍然需要大量的实验验证。

(2)几何模型光从长度上考虑,没有考虑到车的速度性能等的方面。 (3)小区是否开放以及怎样开放,开放多少,根据不同的小区建设结构怎么样开放,没有很好的完成。

(4)小区开放除了对小区之外的交通,对于小区内部的交通是否有影响。 (5)作为“毛细血管”这样一个“微观”的局部地区也许得到了改善,但是这个周围的范围有多大,作用有多强,也是这篇文章需要思考的地方。

七、参考文献

李向朋.城市交通拥堵对策一封闭型小区交通开放研究[D].长沙:长沙理工大学交通运输工程学院,2014.

崔建伟. 道路通行能力评价方式的分析[D].重庆:重庆交通大学土木建筑学院,2015.

马超群,杨权涛,杨克鹏,武汉慧. 无信号控制交叉口次要道路通行能力研究[D].西安:长安大学.2013.

八、附录

function y=d_mymorlet(t)

y = -1.75*sin(1.75*t).*exp(-(t.^2)/2)-t.*cos(1.75*t).*exp(-(t.^2)/2) ; t = 1:35; for n=1:35

s1(1, n)=P(1,n);s2(1, n)=P(2,n);s3(1, n)=P(3,n);s4(1, n)=P(4,n);s5(1, n)=P(5,n);s6(1, n)=P(6,n);s7(1, n)=P(7,n); end

plot (s1, 'r');hold on;plot (s2, 'g');hold on;plot (s3, 'b');hold on;plot (s4, 'k');hold on;plot (s5, 'c');hold on; clear clc

f=[27.12,40.68,100,433,750,915,1500,2450]; L=[1106,738,300,69.3,40,32.8,20,12.2]; jiedian=[113,97.3,71.7,53,52,51,49,47];

diandao=[0.612,0.693,0.889,1.43,1.54,1.80,1.77,2.21]; chuandao=[14.3,11.2,6.66,3.57,3.18,3.04,2.42,1.07];

Lzuzhi1=[68.1,51.3,27,8.76,5.34,4.46,2.81,1.76]; Lzuzhi2=[241,187,106,28.8,16.8,13.7,8.41,5.21]; %plot(f,jiedian,'--*r'); %plot(f,diandao,'--*g'); %plot(f,chuandao,'--*b'); plot(L,Lzuzhi1,'--*r'); hold on; grid on;

plot(L,Lzuzhi2,'--*g'); clc clear

Q1r=71.4125;Q2r=-38.0026;Q3r=-30.6475; Q1l=-5.8414;Q2l=65.8225;Q3l=-64.7657; y=0:0.5:12;

x=ones(1,length(y));

x1=(x+13.72)./((x+13.72).^2+(y-12).^2)-(x+13.72)./((x+13.72).^2+(y+12).^2); x2=x./(x.^2+(y-12).^2)-x./(x.^2+(y+12).^2);

x3=(x-13.72)./((x-13.72).^2+(y-12).^2)-(x-13.72)./((x-13.72).^2+(y+12).^2); y1=(y-12)./((x+13.72).^2+(y-12).^2)-(y+12)./((x+13.72).^2+(y+12).^2); y2=(y-12)./(x.^2+(y-12).^2)-(y+12)./(x.^2+(y+12).^2);

y3=(y-12)./((x-13.72).^2+(y-12).^2)-(y+12)./((x-13.72).^2+(y+12).^2); Exr=Q1r*x1+Q2r*x2+Q3r*x3; Exl=Q1l*x1+Q2l*x2+Q3l*x3; Eyr=Q1r*y1+Q2r*y2+Q3r*y3; Eyl=Q1l*y1+Q2l*y2+Q3l*y3; Ex=(Exr.^2+Exl.^2).^0.5.*1000; Ey=(Eyr.^2+Eyl.^2).^0.5.*1000; E=(Ex.^2+Ey.^2).^0.5; %plot(y,Exr,'--r*'); plot(y,Ex,'--r*'); grid on; hold on;

plot(y,Ey,'--g*'); hold on;

plot(y,E,'--b*'); xlabel('y(m)(x=0)'); ylabel('E(V/m)'); legend('Ex','Ey','E');

%%%% clc;

clear all;

err_goal = 0.001;

max_epoch = 100; lr = 0.7; epoch = 0; load P.mat; load T.mat; M = size(P, 2); N = size(P, 1); n = 50;

Wjk = randn (M, n); Wij = randn (N, n); a = 1:1:n;

b = randn(1, n); y = zeros(1, N); net = zeros(1, n); net_ab = zeros(1, n); %%%%% for i = 1:1:N for j = 1:1:n

for k = 1:1:M

net (1,j) = net (1, j) + P (j,k) * Wjk (k, j); net_ab (1, j) = (net (1, j) - b (1, j)) / a (1, j); end

y(1, i) = y(1, i) + Wij (i, j) * mymorlet (net_ab (1, j)); end end err=T-y;

SSE=err*err';

while (SSE>err_goal & epoch

T_Wij(i,j)=-(T(i)-y(i))*mymorlet(net_ab(j)); for k=1:1:M

T_Wjk(j,k)=T_Wjk(j,k)+ (T(i)-y(i)) * Wij(i,j) ;

T_Wjk(j,k)=-T_Wjk(j,k)*d_mymorlet(net_ab(j))*P(k)/a(j); end

T_b(j)=T_b(j)+(T(i)-y(i))*Wij(i,j);

T_b(j)=T_b(j)*d_mymorlet(net_ab(j))/a(j); T_a(j)=T_a(j)+(T(i)-y(i))*Wij(i,j);

T_a(j)=T_a(j)*d_mymorlet(net_ab(j))*((net(j)-b(j))/b(j))/a(j); end

end

%%%%%%

Wij=Wij-lr*T_Wij; Wjk=Wjk-lr*T_Wjk; b=b-lr*T_b; a=a-lr*T_a; y=zeros(1,N); net=zeros(1,n); net_ab=zeros(1,n); for i=1:1:N for j=1:1:n

for k=1:1:M

net(j)=net(j)+Wjk(j,k)*P(k); net_ab(j)=(net(j)-b(j))/a(j); end

y(i)=y(i)+Wij(i,j)*mymorlet(net_ab(j)); % y(i)=mysigmoid(2,y(i)); end end

epoch=epoch+1; err=T-y;

% SSE(epoch)=err*err'/M; % epoch=1:1:max_epoch; SSE(epoch)=err*err'/M; %[epoch SSE] end

%%%%%%

epoch=1:1:max_epoch; figure(1)

plot(epoch,SSE,'r');

title('训练后的均方误差');

%legend('target output','WNN output',1); % figure(1) clc;

clear all;

err_goal = 0.001; max_epoch = 10; lr = 0.7; epoch = 1; load P.mat; load T.mat; M = size(P, 2); N = size(P, 1);

n = 50;

Wjk = randn (M, n); Wij = randn (N, n); a = 1:1:n;

b = randn(1, n); y = zeros(1, N); net = zeros(1, n); net_ab = zeros(1, n); %%%%% for i = 1:1:N for j = 1:1:n

for k = 1:1:M

net (1,j) = net (1, j) + P (j,k) * Wjk (k, j); net_ab (1, j) = (net (1, j) - b (1, j)) / a (1, j); end

y(1, i) = y(1, i) + Wij (i, j) * mymorlet (net_ab (1, j)); end end

plot (y, 'r');hold on;

plot (T,'g');

SSE = ones (1, max_epoch); err = T - y;

SSE (1, 1) = err * err' / M; SSE (1, 1) = sqrt (SSE (1, 1));

while (SSE (1, epoch) > err_goal & epoch < max_epoch) T_Wjk = zeros (M, n); T_Wij = zeros (N, n); T_a = zeros (1, n); T_b = zeros (1, n); for i=1:1:N for j=1:1:n

T_Wij (i,j) = -(T(1, i) - y(1, i)) * mymorlet (net_ab (1, j)); for k=1:1:M

T_Wjk (k, j) = T_Wjk (k, j) + (T(1, i) - y(1, i)) * Wij(i, j);

T_Wjk (k, j) = -d_mymorlet (net_ab (1, j)) * T_Wjk (k, j) * P(1, k) / a(j); end

T_b (j) = T_b(j)+(T(i)-y(i))*Wij(i,j);

T_b (j) = T_b(j)*d_mymorlet(net_ab(j))/a(j); T_a (j) = T_a(j)+(T(i)-y(i))*Wij(i,j);

T_a(j) = T_a(j)*d_mymorlet(net_ab(j))*((net(j)-b(j))/b(j))/a(j);

end end %%%%%%

Wij = Wij - lr * T_Wij; Wjk = Wjk - lr * T_Wjk; b=b-lr*T_b; a=a-lr*T_a; y=zeros(1,N); net=zeros(1,n); net_ab=zeros(1,n); for i=1:1:N for j=1:1:n

for k=1:1:M

net(j) = net (j) + Wjk (k, j) * P(1, k); net_ab(j) = (net(j) - b(j)) / a(j); end

y(i)=y(i)+Wij(i,j)*mymorlet(net_ab(j)); % y(i)=mysigmoid(2,y(i)); end end

epoch = epoch + 1; err = T - y;

SSE (1, epoch) = err * err' / M;

SSE (1, epoch) = sqrt (SSE (1, epoch)); end

plot (y, 'g'); %%%%%% figure (2);

epoch=1:1:max_epoch; figure(1)

plot(epoch,SSE,'r');

title('训练后的均方误差');

%legend('target output','WNN output',1); % figure(1) clc;

clear all;

err_goal = 0.001; max_epoch = 10; lr = 0.7; epoch = 1; load P.mat; load T.mat; M = size(P, 2);

N = size(P, 1); n = 50;

Wjk = rand (M, n); Wij = rand (N, n); a = 1:1:n; b = rand(1, n); y = zeros(1, N); net = zeros(1, n); net_ab = zeros(1, n); %%%%% for i = 1:1:N for j = 1:1:n

for k = 1:1:M

net (1,j) = net (1, j) + P (j,k) * Wjk (k, j); net_ab (1, j) = (net (1, j) - b (1, j)) / a (1, j); end

y(1, i) = y(1, i) + Wij (i, j) * mymorlet (net_ab (1, j)); end end

plot (y, 'r');hold on;

plot (T,'g');

%输入向量

p=[97 28 12 32 18 3 0 3 10 3 6 14 8 20 2 11 24 0 9 6 3 5 3 1 3 14 2 10 2 173 17 5 1 61 7; 66 29 11 34 13 3 0 1 14 4 12 11 8 12 2 13 20 0 4 3 4 5 4 1 0 12 0 9 3 250 4 3 0 58 3; 61 30 12 35 6 2 0 1 11 7 5 9 11 17 2 3 22 2 4 3 5 5 4 2 0 16 5 12 4 237 11 4 1 59 2; 79 28 18 43 7 6 1 5 9 6 6 20 17 30 1 12 20 0 9 5 2 5 5 3 2 16 5 14 3 249 20 3 0 56 3; 94 38 15 39 9 4 1 3 13 2 12 15 10 27 2 17 16 2 4 3 4 9 4 2 0 20 7 10 0 230 37 2 0 68 6; 106 53 16 44 17 3 0 2 15 3 18 12 7 19 11 0 32 0 4 9 2 6 6 3 2 8 0 10 4 331 25 1 1 104 5; 106 55 18 21 17 3 1 2 14 3 11 16 11 29 1 13 12 0 3 8 3 10 7 3 5 5 7 7 1 529 50 7 1 141 0; 113 75 19 29 42 9 2 3 26 0 13 21 5 26 2 5 27 1 5 20 2 5 18 4 4 1 3 17 5 643 30 2 7 120 4; 110 62 18 30 18 6 0 5 17 1 18 10 14 24 1 6 18 0 3 14 6 6 24 5 5 11 6 18 4 573 42 2 4 122 4; 114 93 23 28 29 6 0 9 23 4 8 25 15 36 0 4 28 3 5 16 4 2 36 3 2 7 9 12 7 699 54 8 8 139 8;

152 107 23 48 50 15 2 4 29 4 20 29 13 40 1 7 42 3 7 28 4 18 50 6 3 13 3 23 3 785 30 7 5 207 10]';

%目标向量

t=[79 28 18 43 7 6 1 5 9 6 6 20 17 30 1 12 20 0 9 5 2 5 5 3 2 16 5 14 3 249 20 3 0 56 3; 94 38 15 39 9 4 1 3 13 2 12 15 10 27 2 17 16 2 4 3 4 9 4 2 0 20 7 10 0 230 37 2 0 68 6; 106 53 16 44 17 3 0 2 15 3 18 12 7 19 11 0 32 0 4 9 2 6 6 3 2 8 0 10 4 331 25 1 1 104 5; 106 55 18 21 17 3 1 2 14 3 11 16 11 29 1 13 12 0 3 8 3 10 7 3 5 5 7 7 1 529 50 7 1 141 0; 113 75 19 29 42 9 2 3 26 0 13 21 5 26 2 5 27 1 5 20 2 5 18 4 4 1 3 17 5 643 30 2 7 120 4; 110 62 18 30 18 6 0 5 17 1 18 10 14 24 1 6 18 0 3 14 6 6 24 5 5 11 6 18 4 573 42 2 4 122 4;

114 93 23 28 29 6 0 9 23 4 8 25 15 36 0 4 28 3 5 16 4 2 36 3 2 7 9 12 7 699 54 8 8 139 8;

152 107 23 48 50 15 2 4 29 4 20 29 13 40 1 7 42 3 7 28 4 18 50 6 3 13 3 23 3 785 30 7 5 207 10; 111 124 15 31 72 14 0 2 27 2 12 20 7 29 0 42 17 2 7 11 2 8 12 5 6 4 3 23 1 703 25 4 5 170 4;

144 116 24 52 52 12 1 4 12 3 11 28 14 45 2 19 18 0 5 17 6 11 14 4 13 15 5 31 3 674 24 6 9 166 7]' ;

%归一化 u=t;

for i=1:35

p(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:))); end

for i=1:35

t(i,:)=(t(i,:)-min(t(i,:)))/(max(t(i,:))-min(t(i,:))); end

%训练

threshold=[0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1]; net=newff(threshold,[19,35],{'tansig','logsig'},'trainlm'); net.trainParam.epochs=1000; net.trainParam.goal=0.001; LP.lr=0.1;

net.trainParam.show=20; P=[p(:,1)+p(:,2)+p(:,3) p(:,2)+p(:,3)+p(:,4) p(:,3)+p(:,4)+p(:,5) p(:,4)+p(:,5)+p(:,6) p(:,5)+p(:,6)+p(:,7) p(:,6)+p(:,7)+p(:,8) p(:,7)+p(:,8)+p(:,9) p(:,8)+p(:,9)+p(:,10) p(:,9)+p(:,10)+p(:,11)];

T=[t(:,1) t(:,2) t(:,3) t(:,4) t(:,5) t(:,6) t(:,7) t(:,8) t(:,9)]; net=train(net,P,T);

test=[ t(:,7)+t(:,8)+t(:,9)];

out=sim(net,test); %仿真预测

%反归一化 for i=1:35

predict(i)=out(i)* (max(u(i,:))-min(u(i,:)))+ min(u(i,:)); end predict

%结果整理

predictsum=predict(1); sum=u(1,10); for i=1:34

predictsum= predictsum +predict(i+1); sum=sum+u(i+1,10); end

sum predictsum

sumerror= predictsum-sum

%绘制预报曲线 x=[t(:,10)]; a=x-out; for i=1:35

error=a* (max(u(i,:))-min(u(i,:)))+ min(u(i,:)); end X=1:35; figure(1); plot(X,error)

xlabel('地上管网急修作业类型(X)'); ylabel('作业量预测误差(Y)'); figure(2);

plot(X, predict,'r*',X,u(:,10),'bo')

xlabel('地上管网急修作业类型(X)'); ylabel('作业量(Y)');

text (23,predict(30), 'predicted data'); text(25.5,u(30,10), 'real data');

%%%% clc;

clear all;

err_goal=0.001; max_epoch=100; lr=0.7; epoch=0;

%load C:\\Documents and Settings\\666\\桌面\\新建文件夹\\P.mat %load C:\\Documents and Settings\\666\\桌面\\新建文件夹\\T.mat %P = zeros (170, 35); %T = zeros (1, 170); P = randn (170, 35); T = randn (1, 170);

M = size(P,1); N = 1; n=50;

Wjk=randn(n,M); Wij=randn(N,n); a=1:1:n;

b=randn(1,n); y=zeros(1,N); net=zeros(1,n); net_ab=zeros(1,n); endy = (1, 170); %%%%% for i=1:1:N for j=1:1:n

for k=1:1:M

net(j)=net(j)+Wjk(j, k)*P(j, k); net_ab(j)=(net(j)-b(j))/a(j);

endy(i)=y(i)+Wij(i,j)*mymorlet(net_ab(j)); end end end err=T-y;

SSE=err*err';

while (SSE>err_goal & epoch

T_Wij(i,j)=-(T(i)-y(i))*mymorlet(net_ab(j)); for k=1:1:M

T_Wjk(j,k)=T_Wjk(j,k)+ (T(i)-y(i)) * Wij(i,j) ;

T_Wjk(j,k)=-T_Wjk(j,k)*d_mymorlet(net_ab(j))*P(k)/a(j); end

T_b(j)=T_b(j)+(T(i)-y(i))*Wij(i,j);

T_b(j)=T_b(j)*d_mymorlet(net_ab(j))/a(j); T_a(j)=T_a(j)+(T(i)-y(i))*Wij(i,j);

T_a(j)=T_a(j)*d_mymorlet(net_ab(j))*((net(j)-b(j))/b(j))/a(j); end end

%%%%%%

Wij=Wij-lr*T_Wij; Wjk=Wjk-lr*T_Wjk; b=b-lr*T_b; a=a-lr*T_a; y=zeros(1,N); net=zeros(1,n); net_ab=zeros(1,n); for i=1:1:N

本文来源:https://www.bwwdw.com/article/yeo2.html

Top