




已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于面向对象的交通仿真设计毕业论文0引言随着我国国民经济的迅猛发展,城市机动车的保有量逐年上升,城市土地利用和开发也带来了城市布局以及环境的改变,由此引起的城市交通阻塞和混乱情况日益严重。为了有效地提高城市道路的利用率,解决交通拥堵问题,有必要对城市道路的交通现状做出科学的分析,找出合理的改善措施。交通流微观仿真作为交通优化设计的一个重要手段,可以从交叉口的设计、交通流的组织和渠化以及信号控制等方面来对交通现状进行仿真分析,在费用及时间投入都很少的情况下及时得出评估结果,提出最优方案,改善交通状况。1. 交通仿真的发展及研究现状1.1交通仿真的研究意义 随着社会的发展,影响交通系统的相关因素越来越多,而我们又总是力求寻找最优解决方案,以期解决各种交通问题,然而,在现实交通环境中,某些领域需要大量资金的投入,某些领域还隐含着很多不安全因素,这就使得寻求最优方案的期望变得很渺茫,甚至是不可能现实的。此时,应用计算机技术进行交通仿真就成为了一种很有效的技术手段。交通仿真是计算机技术在交通工程领域的一个重要应用,它不仅可以复现交通流时空变化的技术、为交通道路设计规划提供技术依据,而且还可以对各种参数进行比较和评价,以及环境影响的评价等。同时,交通仿真系统通过计算机动画手段能够非常直观地表现出路网上车辆的运行情况,动画过程中哪个局部位置的交通拥挤比较突出?哪个地方比较畅通,均可以做到一目了然。因此,交通仿真就成了交通工程研究人员测试和优化各种道路交通规划、设计方案、描述复杂道路交通现象的一种直观、方便、灵活、有效的交通分析工具。 交通仿真技术作为智能交通运输系统(ITS)的一项重要内容,伴随着 ITS 的蓬勃发展,目前已成为国内外交通工程界研究的热点领域之一。1.2交通仿真研究的核心内容要建立一个能尽可能反映真实状况的仿真系统,必须有一个与之匹配的仿真模型,建立的模型要便于仿真系统逼真地模拟实现路网中的各种实际交通行为,如车辆的跟驰行驶、车道变换、超车行驶、道路交叉口信号灯的控制等各种变化情况;另外,为了使仿真系统达到交通规划、评价的性能,还要求模型的建立要便于仿真系统能够随时反应全局路网的动态特性,以及能记录路网中任一实体当前的各种状态和彼此间的关系,以便于获得各种统计参数。所以,交通仿真模型的建立和交通仿真系统的开发就成了交通仿真研究的两个核心内容。1.3交通仿真模型分类 根据交通仿真模型对交通系统描述的细节程度不同, 可将交通仿真模型划分为宏观、中观(又称准微观)、微观 3 种.1.3.1宏观交通仿真模型 宏观交通仿真模型对交通系统的要素、实体、行为及其相互作用的细节描述非常粗糙,例如通过流密度等关系来描述交通流的一些集聚性的宏观模型,对车道变换之类的细节行为可能根本不予以描述。宏观模型的重要参数是车辆速度、密度和流量。宏观交通仿真模型对计算机资源要求较低,它的仿真速度很快,主要用于研究交通基础设施的新建与扩建及宏观管理措施等。根据目前计算机硬件的发展水平,可以在大规模的路网范围内进行交通宏观仿真。1.3.2中观交通仿真模型 相对于宏观模型来说,中观模型对交通系统要素、实体运动和相互作用的细节描述程度要比宏观模型高得多。例如,中观交通仿真模型对交通流的描述往往以若干辆车构成的队列为单元,能够描述队列在路段和节点的流入和流出行为,就每辆车而言,车道变换被描述成建立在相关车道的实体基础上的瞬时决策事件,而非细致的车辆间相互作用。1.3.3微观交通仿真模型 由于微观交通仿真模型既融合了宏观和中观模型的某些方面,又非常细致地描述了交通系统的交通环境及车辆实体等构成要素, 因而它对交通系统的要素及行为等的细节描述程度是 3 种模型中最高的。它是以单个车辆为对象,通过一些相对简单但真实的仿真模型来模拟车辆在不同道路和交通条件下的路网上运行,并以动态图像的形式显示出来,在描述和评价路网交通流状况方面具有传统数学模型所无法比拟的优越性。例如,微观模型对交通流的描述是以单个车辆为基本单元的,车辆在道路上的跟车、超车及车道变换行为等微观行为都能够非常细致和真实的反映出来。 微观模型的重要参数是每辆车的当前速度和位置。 当前的交通仿真模型在一定程度上基本能满足仿真的需要 ,但是也存在或多或少的不足之处 ,如大部分的仿真都是理想化的仿真 ,略去了行人和自行车的影响等 ,而这些在实际交通中是具有很大影响力的交通因素 。将来交通仿真的发展趋势势必会向着虚拟现实技术和并行计算的方向发展 ,因为虚拟现实技术有着实景仿真的效果 ,并行计算具备处理海量数据的能力 。随着计算机技术和相关知识的发展 ,交通仿真会更加成熟 ,在交通工程领域也必将发挥着越来越大的作用 。1.4交通仿真的研究状况1.4.1国外交通仿真的发展 目前,国外在交通仿真研究方面已经进行了有效的、比较成熟的工作,并开发了众多的交通仿真软件,其中一些软件已经实现了产品化和商业化。20世纪60年代开始出现从交通仿真以来,综观其整个发展过程,大致经历了60年代,70至 80年代,80年代末以来3个较为明显的阶段。20世纪60年代(起步阶段) 这一时期的交通仿真系统主要以优化城市道路的信号设计为应用目的,因而宏观交通仿真模型被广泛使用,但模型的灵活性和描述能力都较为有限,加上当时计算机性能较低,所以仿真结果的表达也就不够理想。在这个阶段,最具代表性的当属英国道路与交通研究所(TRRL)的 D.L.罗伯逊于 1967 年开发的道路交通流仿真软件 TRANSYT,它主要用于确定定时交通信号参数的最优值;Gerlough 在 1963年建立的用于道路网络信号配置的 TRANS 模型;美国联邦公路局(FHWA)1956-1966 年研制的 SIGOP 仿真系统。20 世纪 7080 年代(迅速发展阶段) 这阶段由于计算机的迅速发展,计算机仿真模型的精度也得到了提高,功能也更加多样化了。同时,微观交通仿真模型也得到了较大的发展。这期间的典型代表是美国联邦公路局开发的 TRAF-NETSIM 4模型,该模型是一个描述单个车辆运动、应用时间扫描法的网络微观交通仿真模型,该模型对道路几何条件的描述也很灵活。TRAF-NETSIM 模型经过多次版本升级,其功能日趋强大,广泛应用于交通控制和管理系统方案优化、交通设计方案优化以及交通工程相关领域的理论研究方面;1971年,E.B.Lieferman建立了用以描述个别车辆运动的 UTCS-1模型;1974 年,日本科学警察研究所开发了MISTRAN 模型,用以研究左右转车辆与横穿道路的步行者之间的相互影响;1976年,英国利兹大学开发了用于平面交叉口交通信号控制的 SATURN 宏观模型。20 世纪 80 年代末以后(成熟阶段) 由于早期计算机性能及发展水平限制,当时开发的交通仿真模型主要用在大、中型计算机以及图形工作站上,而且几乎都是采用面向过程的传统的软件开发方法, 大多数都是采用 Fortran 语言或专用的仿真语言为开发工具,仿真模型也很难真正体现复杂的交通现象,系统的通用性、交互性、可维护性、扩展性都较差。随着计算机技术的迅速发展,软件开发技术的进步,20 世纪 80 年代末以来,ITS 成为了国外研究的热点,世界各国都展开了以 ITS 为应用背景的交通仿真软件的研究与开发,从而出现了一大批评价和分析ITS 系统效益的仿真软件,如表 1 所示。表11.5国内交通仿真系统的发展 与国外相比,由于我国交通国情的限制,长期以来交通仿真并未引起有关部门的重视, 随着 ITS 在世界各国研究的广泛开展,我国交通界认识到了在我国开展 ITS 研究的重要性。与此同时,作为 ITS 核心技术之一的交通仿真也受到了极大的关注。目前,同济大学、吉林工业大学、东南大学、华中科技大学、上海交通大学、中国农业大学、北方交通大学、北京工业大学、交通部公路科学研究所等学校和科研单位都展开了实质性的研究工作,并取得了一定的成果。但从总体上来看,现在国内的交通仿真研究多是“各自为政”式的自主开发,而没有更多的联系与合作,显得比较零散,往往只局限于对单一问题的研究解决, 很少从整个交通环境的大系统来考虑,比如对多车道通行能力的仿真研究、高速公路入口匝道范围的仿真、信号交叉口的组织优化、超车模型和车道变换模型的仿真研究等等。 下面就我国现有的一些交通仿真现状作一些简单介绍。 国内交通仿真技术由于受诸多因素的影响 , 上世纪 90年代之后才逐渐发展起来 。目前看来 ,研究单位大多集中于高等院校和一些科研机构 ,主要有同济大学 、浙江大学 、天津大学 、山东大学 、清华大学 、吉林工业大学 、东南大学 、上海交通大学 、北方交通大学 、北京工业大学 、西安交通大学 、交通部公路科学研究所等 。具体的仿真成果大致有:同济大学的邹智军 、杨东援开发的TJTS;浙江大学的王晓薇 、李平研究的城域混合交通流仿真系统的人机界面设计实现;同济大学的钟邦秀、杨晓光建立了面向对象微观交通仿真系统;山东大学贾磊 、彭勃等建立的城市交通仿真系统(UTSS);清华大学的娄明、张毅研究的基于Java3D技术的虚拟车辆仿真系统;北京工业大学的荣建、向怀坤 、冯天科研究的基于GIS的城市快速路交通仿真模型研究;中国农业大学的孙晋文对基于Agent的智能交通控制策略与可视化动态仿真进行了研究等 。 国内仿真模型所使用的大多是面向对象编程的计算机语言,具体而言所使用的开发环境主要有: V isual Studio. Net、VC+ +、Delphi + +、JBuilder等。1.6典型仿真软件简介1.6.1 CORSIM CORSI是由美国联邦公路局 ( FHWA ) 开发的、综合了两个微观仿真模型 (用于城市的 N ETSM和用于高速公路的F I SM) ,能够仿真城市道路和高速公路的交通流。CORSM的目标是交通系统管理的开发和评价。它是一个能够真实再现动态交通的随机交通仿真模型 ,有先进的跟车模型和车道变换模型,以 ls为间隔模拟车辆的运动。CORSM提供便于用户观察仿真结果的动画显示。1997年 , FHWA 发行了一个加强版 ,大大增强了 ITS的仿真 ,称为 TREPGS,主要加强了对高速公路 、干线、交叉口、各种车型 (小汽车、公交车、货车 ) 、控制策略的模拟。CORSM主要的缺点在于缺少分配算法 ,这使得评价匝道控制、 事故和出行者信息引起的交通量转移难以进行。 CORSM模型用于国内交通状况的研究也逐渐展开。1.6.2 PARAM ICS PARAMICS ( PARAllel M IC roscopic Simulator)是苏格兰Quad stone公司的微观交通仿真产品。由于采用了并行计算技术,PARAMICS不仅可以对大规模的路网进行仿真,而且在仿真ITS基础设施和拥挤道路网方面有突出表现, PARAM ICS主要由 5个主要工具模块组成 ,分别是建模工具(Modelle r)、处理工具( Processo r)、分析工具(A na lyser)、编程工( Programmer)和监视工具(Monitor) , 在新近发布的版本中增加了OD反估工具( Estimator)。其中建模工具是整个系统的核心,主要用来建立交通路网 ,提供3维交通仿真和统计数据输出 ,并均支持直观的图形界面;而编程工具则为用户提供了基于C + + 的应用程序接口 (A P I),用户可以通过系统提供的接口函数来添加 ITS子系统和交通管理措施的算法或定义其他一些特殊的控制策略,描述它们对路网中用户的驾驶行为的影响,形成应用程序模块并嵌入仿真当中,从而对这些交通管理和控制策略进行设计和测试。目前在PARAM ICS的编程工具中可以提供 4大类约 700个左右的接口函数供用户程序调用。1.6.3 VISSIM VISSIM 是德国 PTV公司的产品 ,它是一个离散的 、随机的 、100 s为时间步长的微观仿真模型 。以车辆的纵向运动采用心理 - 物理跟驰模型 ( psycho- physical car - follow ingmodel ) , 横向运动 (车道变换) 则采用基于规则 ( rule -based ) 的算法. 不同驾驶员行为的模拟分为保守型和冒险型 。VISSIM 提供了图形化的界面 ,用 2D 和 3D 动画向用户直观显示车辆运动 ,运用动态交通分配进行路径选择。VISSIM能够模拟许多城市内和非城市内的交通状况,特别适合模拟各种城市交通控制系统,主要应用有 : 由车辆激发的信号控制的设计、 检验、评价;公交优先方案的通行能力分析和检验;收费设施的分析;匝道控制运营分析;路径诱导和可变信息标志的影响分析等。该软件不但对公交车辆的组成及运行特点作了特别详细的考虑,而且还在交通流组成中考虑了摩托车、自行车及行人等。然而,该软件交通模型的详细性及所模拟的交通组成的多样性增加了计算机硬件资源的消耗(三维模拟时显得尤为突出),因而它对计算机硬件有较高的要求。2. 基于面向对象的交通仿真2 . 1 面向对象的程序设计思想 面向对象的思想是用软件对象模拟实际对象。面向对象方法是基于客观世界对象模型的软件开发方法,是20世纪90年代软件开发的主流,其出发点和追求的基本原则是软件系统对现实世界的直接模拟,将现实世界中的事物直接映射到软件系统的解空间。面向对象方法可以增强仿真模型的直观性、易理解性、可扩充性和可重用性。基于面向对象的交通仿真与控制,可动态地、逼真地仿真交通流和交通事故等各种交通现象,深入地分析车辆、驾驶员和行人、道路以及交通流的交通特征,有效地进行交通规划、交通组织与管理、交通能源节约与物资运输流量合理化等方面的研究。 C+语言是一种面向对象、类型安全、功能强大的高级程序开发语言,因此所有这些优点使它成为交通仿真首选的高级程序语言。程序设计包括结构化程序设计和面向对象程序设计,结构化程序设计的主要思想是功能分解并逐步求精,结构化程序设计为处理复杂问题提供了有力的手段, 但它仍是一种面向数据过程的设计方法。它将数据和处理数据的过程分离为相互独立的对象,在编程时必须时刻考虑所要处理的数据格式,使数据与程序过程始终保持相匹配。面向对象程序设计的本质是把数据和处理数据的过程当成一个整体对象。它是软件系统设计与实现的一种趋势,是通过增加软件可扩容性和可重用性,改善并提高程序编写的效率,控制维护软件的复杂性和开销。面向对象程序设计吸取了结构化程序设计的一切优点,它支持将数据和对数据的操作作为一个相互依存,不可分割的整体来处理,并采用数据抽象与信息隐藏技术,将象及对对象的操作抽象成一种新的数据类型类, 通过类的成员函数来访问其成员变量。 面向对象程序设计的实现需要4方面的技术:封装、数据隐藏、继承和多态。C+ 语言充分支持面向对象程序设计, 通过 C+ 建立用户定义类型 (类) 支持封装性和数据隐藏。定义的类一旦生成后, 就成为一个封装的实体, 作为一个整体单元使用, 而类内部的行为被隐藏起来, 用户只要知道如何使用这个类,不必知道它是如何工作的。C+采用继承支持重用的思想, 程序可以在扩展 现有类型的基础上声明新类型,采用多态性为每个类指定表现行为。构成交通网络仿真系统的基本元素是车辆、路段、车道、交叉口、信号灯和时钟, 交通网络中的各交通元素和路网结构都可以看作一个单独的对象, 它们之间的相互作用构成了整个网络仿真的过程, 面向对象的程序设计方法非常适合定义这种交通网络。所以在程序编制中, 定义交通网络数据结构也就是定义交通网络仿真系统基本对象各自成员变量和成员函数以及各对象之间的关系 。因此,采用C+语言, 通过面向对象的类定义方式来建立交通网络仿真的数据结构。2.2 面向对象的类定义 交通流仿真系统具有非常复杂多样的实体和属性, 在实际的应用研究中, 一般应该对复杂的实际问题加以简化和假设, 以便建立合适的模型求解问题。在交通网络中, 实体主要包括车辆、路段、车道、交叉口、信号灯、时钟等 6 个对象, 通过分析交通网络中各实体之间的关系, 把这些实体映射到面向对象模拟空间中形成抽象的类: 交叉口类(tintersection)、路段类(tlink)、车道类 (tlane)、车辆类(tvehicl)、信号灯类(tsignal)和时钟类(tclock)。 然后针对每个类的不同特点及相互之间的联系, 再定义各个类的成员变量和成员函数。 1) 车辆类。车辆类用来描述仿真中车辆实体的属性,它的不断产生可以保证仿真的持续进行。车辆类的各个成员变量和成员函数均从不同角度反映车辆在网络中运行时的动态特性。 定义的车辆属性可区分为私有、保护和公有属性,不同的属性界定了该类对其它类的开放程度。为了对路网中车辆的运行行为进行较为深入细致的微观描述, 笔者对车辆类的私有属性考虑得较为全面, 包括车辆标号、长度、宽度、类型、车辆存在状态、车辆位置、 速度、最大速度、期望速度、平均速度、加速度、 最大加速度、最大减速度、前车标号、后车标号、转弯方向、 以及驾驶员对环境的熟练程度和冒险倾向等。 2 ) 路段类。 在路网图上, 路段是连接两个交叉口或2个节点间的有方向的线段, 是组成道路网的基本要素。其类结构的定义与车辆类相似, 主要成员变量包括私有属性和公有属性, 私有变量主要包括路段标号、路段长度、车道数、通行能力、自由流车速、下游节点标号和上游节点标号等, 成员函数用来设置、确定当前路段标号及其在网络中的属性, 主要的函数为: setcu rrentlink ( ) ,getcurrentlink ( ) , setdownlink( )和getdownlink()等。 路段类是路网面向对象模拟中必不可少的, 不仅用来描述各个单独路段的属性,而且也描述网络内部各节点、各路段之间的链接关系。 3 ) 车道类。 车辆的运行是在车道上, 研究车道上的车辆队列非常重要。 车道一般作为一个单独的类。 其成员变量包括车道宽度、转弯方向、车辆排队长、最大排队长和车道控制类型等。车道类是微观仿真的基本单元。 4) 交叉口类。交叉口类的每个成员变量分别描述交叉口不同方面的属性, 如交叉口标号、交叉口上下游节点、与各方向相连的进出口路段标号和各个进口的属性等。 交叉口类是交通网络仿真的一个基本单元, 交叉口类对象定义为例来描述交叉口类的基本结构, 如图所示。 5) 信号灯类。信号灯类主要是用来描述信号配时参数中的红绿灯时长等属性, 它可以控制每个车道中等待车辆队列的放行。它的成员变量主要包括信号灯标号、信号周期时长、当前的信号灯色、红灯时长、绿灯时长、黄灯时长、相序、绿信比以及从模拟开始到当前时钟信号灯已经过的周期数等。 6) 时钟类。时钟类主要是为了控制仿真中当前时钟的推进而设置的, 它随事件的推进而推进,可以控制仿真的进程, 多用在定时模块中。钟类的成员变量主要包括当前时间值、 仿真时间步长、仿真时间等。 各个类通过以下语句进行定义。 Class T name / 实体类名称 public: 成员函数定义; private: 成员变量定义; ; 数据成员一般均为私有成员, 对外界都是封闭的, 只有通过其相应的成员函数才能对其进行调用。 定义了交通网络元素的各实体类后, 在程序中通过以下语句声明其对象。 Tname name; /类对象 name 为声明的对象, 在程序中通过对对象的编程实现对各对象的控制。2.3基于C+编程的 deque 队列结构交通网络中各实体进行类定义后,对于每一类实体, 单个对象只是交通网络仿真系统对象集合的一个单元,如一个车辆对象只是整个网络所有车辆对象的一个单元, 因此, 通过建立共享数据结构来实现多任务并行存取数据, 从而提高数据的存取速度, 共享数据结构是采用C+中的 模板函数来定义容纳各种类对象或指针的队列结构, 笔者定义了以下 4 种deque 队列结构。 typedef deque TV EHICLELIST;/车辆队列的定义 typedef deque TLNKLIST;/路段队列的定义 typedef deque SECTIONLIST;/交叉口队列的定义 typedef deque TSIGNALLIST;/信号灯队列的定义 其中: TV EHICLELIST为车辆 deque 队列结构, 用于存放路网上产生的所有车辆的类对象;TLIKLIST为路段deque队列结构, 用于存放路网中所有路段的类对象;TINTERSECTIONLIST为交叉口deque 队列结构, 用于存放路网中所有交叉口的类对象;TSIGNALLIST 为信号灯 deque 队列结构, 用于存放路网中所有信号灯的类对象。 定义了各对象的 deuqe 队列结构后, 通过下面语句建立其队列对象。 TVEHICLELIST vehiclelist;车辆队列对象的定义 TLIKLIST link list;路段队列对象的定义 ONLIST intersection list;交叉口队列对象的定义 TSIGNALLIST signallist;信号灯队列对象的定义3. 平面交叉口交通仿真的建模3.1模型基本组成部分 平面交叉口主要由信号灯、交通标志 、交通标线、交叉口 、车道 5 部分组成 ;使用者由机动车、非机动车、行人3部分组成 。 因此用 C+实现的交叉口仿真模型就必须相应地由以下8个类组成。 1) 信号灯类。属性: 信号灯相位 ,颜色;方法:确定颜色,显示颜色。 2) 交通标线类。属性: 类型 ,内容;方法:诱导车辆。 3) 交通标志类。属性:类型 ,大小 ,内容;方法:对车辆要求。 4) 交叉口类。属性:类型 ,编号;方法:进、出口使用类型编号。 5) 车道类。属性: 宽度 , 类型 ( 直行 , 左转 , 右转);方法:变换车道,确定车道类型。 6) 机动车类。属性: 车辆类型,车辆吨位;方法:直行,左转,右转,加速,减速,停车,超车。 7) 非机动车类。属性:类型 ,车速;方法:直行,左转,右转。 8) 行人类。属性: 方向;方法:直行,左转,右转。3.2建立模型3.2.1交叉口模型 交叉口模型包括交叉口类型、车道数、交通标线及交通标志内容、信号灯配时参数,模型参数通过有关路口参数的一个对话框输入。此模型为静态模型,从仿真初始化后就不再变化。界面如下图3.2.2车辆模型 XSWXZQ SA 车辆模型包括车辆颜色、形状、位置、最高速度、反应时间等内容。本模型假设各种车辆在交叉口占据相同大小的空间。4. 平面交叉口仿真的实现过程4.1 需求分析 根据限定条件仿真十字路口路口的交通运行情况: 以十字路口为一个系统,共有四个出入口: 两个横向出入口,两个纵 向出入口,小车的出发地和目的地依据假设的概率随机产生。 车在行驶时,依照下列交通规则: 绿灯行,红灯停,黄灯忽略。红绿灯的控制规则为:绿灯亮 10 秒后红灯亮 10 秒。 4.2 系统模型4.2.1 系统中重要类的识别在系统设计中,识别出主要两个类:汽车类CCar和红绿灯类CRedGreenLight类。其中CCar类是系统中各类汽车的抽象,它封装了各类汽车的数据结构和方法;CRedGreenLight类是二个十字路口CR1和CR2上八个交通灯的抽象,它封装了交通灯的数据结构和方法。系统中的其它主要类CMainFrame类、CDemoView类、CDemoDoc类由VC Studio集成开发环境自动创建,其中:CMainFrame类是应用程序窗口框架类,它负责应用程序窗口框架中所有的可视对象,如菜单、工具条,并处理应用程序中来自窗口框架对象所发的所有消息。CDemoView类是应用程序视图区类,它负责在视区向用户显示可视化文档(即数据),并负责将用户输入的信息传送至CDemoDoc类,并从CDemoDoc类接收显示的信息。CDemoDoc类负责应用程序文档(数据)的存贮,并和CDemoView类进行交互。4.2.2 系统中的类图4.2.3 汽车及红绿灯的状态迁移图红绿灯的状态迁移图汽车状态迁移图4.2.4 标识符命名规则类的命名形式为“C+类名的意义单词”(类名中每个单词的首字母大写)。比如:CCar,CRedGreenLight。类中成员函数的命名规则为:代表成员函数的功能的单词的组合,其中每个单词首字母大写。比如:GetNextDirection。类中成员变量的命名规则为:“m_表示其含义的单词”。如m_direction。局部变量用小写单词表示。总之,系统中所有标识符都做到了见其名能知其义。5. 系统中重要类及方法的说明5.1 CCar类的说明它是系统中各种汽车的抽象。有如下属性和方法:class CCar privateAddress m_From; /汽车的起点Address m_To; /汽车的终点Direction m_direction; /目前的方向 bool m_Handled; /标志,表示汽车是否已被处理,用于串行模拟并行的调度中int m_x,m_y; /汽车目前的逻辑坐标,用于判断是否该移动 public:CRedGreenLight *GetRedGreenLight(int x, int y); /取得汽车所在地当前的红绿灯CCar* GetCar(int x, int y, Direction CurDirection); /取得前面的汽车Place Where(int x,int y); /取得汽车当前所处的路段Direction GetNextDirection(int x, int y, Address addressTo, Direction CurrentDir); /取得汽车下一次的前行方向CCar(Address From,Address To,int x,int y,Direction direction);/构造函数void Move(); /汽车移动,它描述了汽车前行的规则void GoStep(); /汽车前行一步virtual CCar(); /析构函数,清除自己;5.2 CRedGreenLight类的说明class CRedGreenLight privatebool m_State; /交通灯状态,绿为true,红为falseint m_RedTime,m_GreenTime; /交通灯显示红、绿时间变量int m_Timecount; /计数器,以便于交通灯显示状态的变化int m_x,m_y; /交通灯的坐标public:bool IsRed(); /判当前交通灯是否显示红色,是则truebool IsGreen(); /判当前交通灯是否显示绿色,是则truevoid SetTime(bool State,int GreenTime,int RedTime,int Timecount);void Change(); /交通灯显示状态切换CRedGreenLight(int x,int y,bool State,int GreenTime,int RedTime,int Timecount); /汽车的Constructorvirtual CRedGreenLight(); /汽车的Destructor;5.3 CMainFram类CMainFram类是应用程序的主框架类。该类由VC Studio集成开发环境自动生成,它负责管理应用程序的主框架,并接收来自窗口中所有对象的消息。在该类中,添加了如下的属性和方法:属性:1) Timer计时器变量 2) 各种颜色的画笔、画刷类对象 3) 一个bool量,用于标示在一个时钟中断信号到达时,系统中灯、汽车及其它事务是否都已处理完毕4) interval变量,用于标示十字路口交通灯绿灯显示的时差5) 屏幕单位坐标偏移量方法: 1) DrawRoad() /画出十字路口路图 2) OnTimer() /Timer时钟中断处理函数 3) ProduceCar() /根据需求,在预定时刻在四个路口产生汽车 4) OnStart() /用于启动应用程序的执行 5) OnEnd() /用于停止应用程序的执行另外,在该类的Constructor(集成环境自动生成)中,对添加的属性进行初始化,启动Timer开始工作,并生成四个交通灯对象,十字路口交通灯显示绿灯的时差在OnTimer()函数中实现。5.4重要的数据结构在系统实现中,定义了如下数据结构:enum DirectionEast, South, West, North; /汽车前行的方法enum AddressEHW,EHE,BSN,BSS,TBN,TBS /各路口标示enum PlaceRodeMiddle, RodeSide,Cross /汽车所处的位置,由此可判别其下一步的动作CCar* RoadMap10232 /路图中各坐标点汽车的指针CRedGreenLight* pLight9 /pLight1pLight4分别装入四个交通灯的指针, pLight0未用6.系统仿真流程6.1平面交叉口仿真的软件环境 开发环境 :Visual C+6.0;编程语言:C+6.2仿真流程 1 ) 首先建立仿真模型。 2) 要有10组以上各类型平面交叉口的交通流数据、相对应的信号灯参数、交叉口相关参数,分别存入 SQL SERVER中的交通流数据表、信号灯参数表和交叉口参数表中(其中交通流数据需要最近半年的)。 3) 读入交叉口参数、信号灯参数(信号灯周期、绿信比、相位差)和交通流数据,通过接口初始化仿真模型。 4) 进入仿真周期,开始计时。 5) 一个周期结束后,看读入时间有几个周期组成,反复执行 3 ) 、4) ,直到仿真时间结束 ,然后将仿真结果写回到数据库的交通状况表中 ,以备将来做各种方案的对比。 6) 在进入仿真周期的同时通过程序调用Open GL 输出交叉口的整个动画仿真过程 ,如果与实际情况相差较大 ,则返回 1) ,修改仿真模型 ,若基本相符,则继续。 7) 直到所有数据测试完毕且模型基本满足交叉口交通再现的需求,进入下一步。 8) 最后看仿真的交通情况是否令人满意,若不满意,修改信号灯参数或交叉口其他管理设施(交通标志 、交通标线等),达到满意为止。 具体仿真流程图如下图所示 。6.3仿真运行城市道路交通仿真一般待系统运行稳定以后开 始记录仿真结果,同一项目一般要运行 3 次以上 ,取各次运行结果的平均值为最终结果。6.4仿真结果效益评价以及最优方案的确定仿真结果主要是仿真后的统计数据,包括瞬时分布统计,如:点速度、车头时距、排队分布、停车次数等,以及区段分布统计,如:行车延误、行程时间、 平均行驶车速、超车率等。提取不同方案的仿真结 果,分析比较各个可能措施的交通影响和投资,排除一些不可行、效益不明显的或因投资太大和周期太长不宜实现的方案,最后形成若干可行的、效益显著的、效益投资比令人满意的方案。方案的比选阶段必须同业主、城市主管部门、所涉及的单位等进行方案的说明、讨论及修改,然后根据各方要求再进行系统模拟,提交仿真结果,直至最优方案的确定。其流程如下图所示6.5仿真结果7. 道路交通微观仿真的发展前景城市道路交通微观仿真技术在城市交通改善中 起到了积极的作用 ,它为动态地进行交通系统规划、评价和优化提供了一种直观、形象而又科学的方法,必将促进城市道路交通系统的发展。目前,从国外交通仿真系统的发展来看,面向 ITS 应用是交通仿真技术的最新发展趋势。先进的交通管理系统和先进的出行者信息系统是国外众多交通仿真系统的主要研究应用领域,而交通仿真分析技术可以完全替代传统理论公式化的交通流模型,来满足以上两系统动态交通管理方案的效益评价和优化。交通仿真作为 ITS 研究中的一个重要手段,必将发挥越来越重要的作用。8.结束语 本文主要讨论了一种基于面向对象的交通仿真方法,并对其中一个重要子系统 平面交叉口仿真做了初步研究。随着对各子系统仿真研究的深入,最终建立的综合性的交通仿真系统必将在交通仿真研究领域发挥重要的作用 。9.致谢在本论文的写作过程中,我的导师马冬梅老师倾注了大量的心血,从选题到开题报告,从写作提纲,到一遍又一遍地指出每稿中的具体问题,严格把关,在此我表示衷心感谢。同时我还要感谢在我学习期间给我极大关心和支持的各位老师以及关心我的同学和朋友。写作毕业论文是一次再系统学习的过程,毕业论文的完成,同样也意味着新的学习生活的开始。10.附录程序源代码/ trafficlightsDlg.cpp : implementation file/#include stdafx.h#include trafficlights.h#include trafficlightsDlg.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialogpublic:CAboutDlg();/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX ;/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/AFX_MSG(CAboutDlg)/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutDlg)/ No message handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/ CTrafficlightsDlg dialogCTrafficlightsDlg:CTrafficlightsDlg(CWnd* pParent /*=NULL*/): CDialog(CTrafficlightsDlg:IDD, pParent)/AFX_DATA_INIT(CTrafficlightsDlg)/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CTrafficlightsDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CTrafficlightsDlg)DDX_Control(pDX, IDC_TRAFFIC, m_traffic);DDX_Control(pDX, IDC_LIGHTYEL4, m_lightyel4);DDX_Control(pDX, IDC_LIGHTYEL3, m_lightyel3);DDX_Control(pDX, IDC_LIGHTYEL2, m_lightyel2);DDX_Control(pDX, IDC_LIGHTYEL1, m_lightyel1);DDX_Control(pDX, IDC_LIGHTRED4, m_lightred4);DDX_Control(pDX, IDC_LIGHTRED3, m_lightred3);DDX_Control(pDX, IDC_LIGHTRED2, m_lightred2);DDX_Control(pDX, IDC_LIGHTRED1, m_lightred1);DDX_Control(pDX, IDC_LIGHTGRE4, m_lightgre4);DDX_Control(pDX, IDC_LIGHTGRE3, m_lightgre3);DDX_Control(pDX, IDC_LIGHTGRE2, m_lightgre2);DDX_Control(pDX, IDC_LIGHTGRE1, m_lightgre1);DDX_Control(pDX, IDC_CARUP4, m_carup4);DDX_Control(pDX, IDC_CARUP3, m_carup3);DDX_Control(pDX, IDC_CARUP2, m_carup2);DDX_Control(pDX, IDC_CARRIGHT4, m_carright4);DDX_Control(pDX, IDC_CARRIGHT3, m_carright3);DDX_Control(pDX, IDC_CARRIGHT2, m_carright2);DDX_Control(pDX, IDC_CARLEFT4, m_carleft4);DDX_Control(pDX, IDC_CARLEFT3, m_carleft3);DDX_Control(pDX, IDC_CARLEFT2, m_carleft2);DDX_Control(pDX, IDC_CARDOWN4, m_cardown4);DDX_Control(pDX, IDC_CARDOWN3, m_cardown3);DDX_Control(pDX, IDC_CARDOWN2, m_cardown2);DDX_Control(pDX, IDC_CARDOWN, m_cardown);DDX_Control(pDX, IDC_CARUP, m_carup);DDX_Control(pDX, IDC_CARRIG
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江西音乐招聘题库及答案
- 2025年产品质量考试试题及答案
- 2025年山东省政府采购评审专家考试真题库(带答案)
- 2025年村知识试题及答案
- 2025年数控期末考试试题及答案
- 2025年银行五笔考试试题及答案
- 2025年数学思维作题目及答案
- 长治县小学考试试题及答案
- SVG无功补偿原理课件
- smart原则精美课件
- T/CSPSTC 75-2021微动探测技术规程
- 信任主题班会课件
- 借款抵押合同协议书
- 资质借用合同 协议书
- 严重创伤规范化处理流程
- 2025年幼儿教师资格证《保教知识与能力》考试必刷题库(附典型题、重点题)443题附答案
- SZTJ-AF-2024 苏州市无障碍设施通 用图集(试行)2025
- 水务集团安全培训课件
- 智能矿山技术在硬岩铀矿山的应用实例与挑战
- 网络直播带货运营模式分析及流量转化策略设计
- 2025-2030中国中子发生器市场供应风险及投资风险预警研究报告
评论
0/150
提交评论