基于面向服务架构的分布式交通仿真平台及其仿真方法

文档序号:6699149阅读:260来源:国知局

专利名称::基于面向服务架构的分布式交通仿真平台及其仿真方法
技术领域
:本发明属于分布式交通仿真领域,具体涉及面向服务架构(Service-OrientedArchitecture,S0A)、多智能体、数据库和分布式仿真等技术。
背景技术
:鉴于交通系统的复杂性,基于交通仿真的优化成为交通信号优化控制的主要方法之一。它大大减少了在评估交通系统时对数学公式或物理模型的解算所造成的负担,大大降低了现场试验的要求,为科研工作者提供了一种节约时间、节省费用、安全可行的研究手段。分布式交通仿真主要研究如何将对大规模路网的复杂仿真过程分成许多较小的部分,并将它们分配到多个计算机上并行处理,最后综合这些处理结果得到最终的仿真结果,可以大幅提高仿真的速度和效率。分布式交通仿真平台往往包括新模块的开发与已有模块的集成。新旧模块在开发语言、传输协议、软硬件平台等技术方面会有所不同,要求仿真系统具有较高的异构性。此外,随着信息化建设的不断发展,不同应用系统之间的交互日益频繁,要求分布式系统各个模块具有较好的可重用性。目前分布式仿真平台主要采用HLA(HighLevelArchitecture)规范,然而其重用性受限于特定的仿真支撑平台(RTI平台),与其它领域技术和标准脱节。虽然WebService提供了良好的标准服务接口,然而与J2EE或.NET平台结合的传统开发模式各自只能选择EJB(EnterpriseJavaBean)或.NET语言的组件实现方式,异构性较差。
发明内容本发明的主要目的在于提供一种基于面向服务架构的分布式交通仿真平台,以解决传统分布式交通仿真存在的上述各种问题,提高系统的异构性,灵活性与模块的可重用性,降低系统的开发难度。基于面向服务架构的分布式交通仿真平台包括4层结构用户界面层、协调仿真多智能体层、数据服务中心层与仿真资源层;其中,用户界面层包括仿真客户端和数据维护客户端;协调仿真多智能体层包括交互智能体、路网生成智能体、协调智能体、仿真结果处理智能体与区域仿真模块,区域仿真模块由VC区域仿真模块组成;数据服务中心层包括数据服务中心,而数据服务中心又包括Hibernate0RM子模块(0RM即Object/RelationM即ping,对象-关系数据库映射)、数据生成子模块和数据调遣子模块;仿真资源层是Oracle数据库;用户界面层中的仿真客户端通过访问协调仿真多智能体层中的交互智能体的仿真启动服务,下达仿真任务,并在仿真过程中通过交互智能体的仿真数据获取服务,获得最终的统计数据结果和实时仿真结果,并将其显示;用户界面层中的数据维护客户端,用来完成路网数据与信号机参数的添加、修改、查询与删除;协调仿真多智能体层中的交互智能体,连接着仿真客户端与仿真平台内部组件,向外提供仿真启动、仿真数据获取与仿真结果上传三个服务;交互智能体接受仿真任务,根据仿真任务,确定仿真区域以及参与仿真的区域仿真模块中的VC区域仿真模块,并调用数据服务中心层中数据服务中心的数据生成子模块的服务,然后等区域仿真路网数据准备完毕后初始化VC区域仿真模块,当所有的VC区域仿真模块初始化结束后,仿真启动服务开始调用协调仿真多智能体层中的协调智能体的协调初始化服务,并在仿真过程中接收协调仿真多智能体层中的仿真结果处理智能体通过仿真结果上传服务,上传的实时仿真结果;仿真结果处理智能体,提供实时结果上传服务与统计结果生成服务;各VC区域仿真模块调用仿真结果处理智能体的实时结果上传服务,向仿真结果处理智能体更新本周期的仿真实时信息,而仿真结果处理智能体通过仿真结果上传服务,上传实时仿真结果给交互智能体;协调智能体,向外提供协调初始化服务,内部包括协调判定服务与信号调整服务;协调智能体的协调初始化服务被调用时,首先开辟多个线程,接着循环执行线程调用各VC区域仿真模块的周期仿真服务,并在每一个仿真周期中根据上一周期仿真结果判断是否需要区域协调,若当前仿真周期无需进行区域间协调,则协调智能体继续调用VC区域仿真模块的周期仿真服务,实现给定周期内的区域交通仿真,若当前仿真周期需要进行区域间协调,则协调智能体调用信号调整服务进行决策;区域仿真模块,内部嵌入SOA接入模块,向交互智能体提供区域仿真初始化服务,向协调智能体提供周期仿真服务;区域仿真模块产生交通流与车源,模拟车辆的运动行为,负责所属子区域的仿真;VC区域仿真模块调用数据服务中心的数据调遣子模块的服务,获取区域仿真路网数据;路网生成智能体作为数据解析部分嵌入SOA接入模块,向VC区域仿真模块提供路网生成服务,路网生成服务从数据服务中心获得路网与信号机的数据对象,并转换成区域仿真模块对应的数据结构类型,使数据适用于区域仿真模块;数据服务中心包括3个子模块①HibernateORM子模块,完成对象_关系映射,实现基于对象原语的数据建立,并将其持久化到仿真资源层中的Oracle数据库中;②数据生成子模块提供数据生成服务,从Oracle数据库中获取分布式交通仿真所需要的路网信息,并将其封装为SDO数据;③数据调遣子模块提供数据调遣服务,通过WebService获取路网生成智能体的仿真原始数据发送请求,将生成的SDO数据发送到区域仿真模块;Oracle数据库,存储仿真所需的路网数据信息与信号机配置信息;交互智能体、协调智能体和仿真结果处理智能体以及数据服务中心采用服务组件架构SCA(ServiceComponentArchitecture)规范,并各自封装成SCA构件;已有的单机仿真程序模块则通过SOA接入模块作为区域仿真模块接入本发明的仿真平台中。系统的区域协调仿真基于逻辑时钟同步,每个仿真模块调用或提供粗粒度的服务,基于不同的仿真服务,仿真平台完成大规模的分布式交通仿真。所述的VC区域仿真模块,指用VisualC++实现的单机仿真程序模块通过SOA接入模块作为区域仿真模块的。所述的SOA接入模块由两个部分组成服务绑定模块与服务调用模块;服务绑定模块采用SCAJava构件实现,包括数据解析子模块和Socket请求子模块,其应用原理为首先,服务绑定模块接受SOA环境中的服务调用请求,并获得SDO数据;接着,数据解析子模块解析SD0数据,并通过Socket请求子模块将数据经Socket连接发送到VC单机仿真程序模块,VC单机仿真程序模块与SOA接入模块位于同一台计算机上,VC单机仿真程序模块执行其自身仿真程序的相关操作;然后,VC单机仿真程序模块通过Socket连接将结果返回到服务绑定模块;最后,服务绑定模块将返回得数据结果封装成SDO数据对象,并返回给服务调用者;服务调用模块则采用组件对象模型COM(ComponentObjectModel)组件的实现方式,包括服务引用子模块和数据转换子模块,服务引用子模块采用公共语言运行时CLR(CommonLanguageRuntime)托管程序开发,并以动态链接库DLL(DynamicLinkLibrary)形式生成;VC单机仿真程序模块通过COM组件接口调用服务引用子模块,实现仿真服务(如数据发送服务)的引用,并得到SDO数据;数据转换子模块解析SDO数据并进行重新组合,使数据存储格式与VC单机仿真程序模块中的一致。数据类型在VC程序,COM组件,托管DLL中需要进行相应的转化,VC程序调用COM服务时传递的参数与返回值应使用Variant类型变量,COM组件访问托管DLL时传递的参数与返回值则需要进行托管,非托管类型转化。基于面向服务架构的分布式交通仿真方法主要包括以下步骤步骤1、仿真启动;仿真客户端访问交互智能体的仿真启动服务,交互智能体根据仿真任务确定仿真区域以及参与仿真的VC区域仿真模块;步骤2、数据准备;交互智能体调用数据服务中心的数据生成子模块的服务,数据服务中心从Oracle数据中获取原始的路网数据,并按区域将数据重组并封装成SDO数据对象,生成区域仿真路网数据,数据准备完毕后,交互智能体初始化区域仿真模块并同时等待初始化完成;步骤3、初始化区域仿真模块,包括步骤3.1与步骤3.2,这两个步骤都是多任务并发;步骤3.l,仿真启动服务根据参与仿真的VC区域仿真模块的数量开辟多线程,在多线程中调用区域仿真初始化服务;步骤3.2,仿真启动服务在主线程中通过标志位等待步骤3.1中的仿真初始化完成;步骤4、获取区域仿真路网数据;各VC区域仿真模块通过调用路网生成智能体的路网生成服务,获取在步骤2生成的区域仿真路网数据;步骤5、区域协调仿真启动,具体为步骤5.1,当所有的VC区域仿真模块初始化结束后,仿真启动服务开始调用协调智能体的协调初始化服务,此时仿真启动服务的生命周期结束;步骤5.2,仿真客户端开始循环调用交互智能体的仿真数据获取服务,获取公交车辆当前时刻坐标,干线、路口交通流情况以及各信号当前相位,协调智能体的协调初始化服务首先开辟多个线程,并循环执行线程,调用各VC区域仿真模块的周期仿真服务;步骤6、区域协调控制;协调智能体在每一个仿真周期中首先根据上一周期仿真结果判断是否需要区域协调,若当前仿真周期无需进行区域间协调,则执行步骤7,若当前仿真周期需要进行区域间协调,则转到步骤10;步骤7、周期性区域协调仿真;协调智能体调用区域仿真模块的周期仿真服务,实现给定周期内的区域交通仿真,根据子区域所处的位置进行边界信息的更新,包括社会车辆交通流信息与公交车位置信息,然后执行步骤8;步骤8、生成实时交通仿真数据;各VC区域仿真模块调用仿真结果处理智能体的实时结果上传服务,向仿真结果处理智能体更新本周期的仿真实时信息,包括公交车辆经纬度,行驶方向,信号状态;步骤9、仿真状态判定与数据上载,包括步骤9.1与步骤9.2;步骤9.l,本周期的仿真实时信息更新后,仿真结果处理智能体通过交互智能体的仿真结果上传服务,上传实时仿真结果给交互智能体,仿真客户端可以通过交互智能体的仿真数据获取服务,获得实时仿真结果并显示;步骤9.2,协调智能体根据仿真时间判断整个仿真过程是否结束,若仿真没有结束则循环进行下一周期的仿真,执行步骤6;否则结束区域仿真,执行步骤12;步骤10、协调控制决策;协调智能体调用信号调整服务进行决策;步骤11、更新信号机参数;根据步骤10信号调整服务的结果在下一个仿真周期中更新信号机的参数,然后执行步骤7;步骤12、仿真统计数据生成;交互智能体调用仿真结果处理智能体的统计结果生成服务,将生成的统计数据上传到交互智能体,然后执行步骤13;步骤13、统计数据显示与结束;仿真客户端通过交互智能体的仿真数据获取服务获得最终的统计数据结果并显示,整个分布式仿真任务结束,并等待下一个仿真任务的到来。本发明的优点与积极效果在于(1)采用SOA架构,提高分布式仿真平台的灵活度,易于分散开发,减少系统的开发成本与周期;(2)仿真模块采用SCA构件实现方式,系统的异构性、可重用型与可集成性强;(3)S0A接入模块进一步增强了系统的可重用性,整个系统易于在异质环境中部署;(4)仿真方法相对现有方法速度较快。图1为基于面向服务架构的分布式交通仿真平台架构示意图2为基于SCA组件的系统实现示意图;图3为基于面向服务架构的分布式交通仿真平台SOA接入模块示意图4为基于面向服务架构的分布式交通仿真方法运行步骤示意图5为本发明实施例验证试验中采用的路网示意图6为本发明实施例验证试验所得数据;图中l-仿真客户端,2-数据维护客户端,3-交互智能体,4-仿真结果处理智能体,5-协调智能体,6-区域仿真模块,7-路网生成智能体,8-数据服务中心,801-数据调遣子模块,802-数据生成子模块,803-HibernateORM子模块,9-0racle数据库,10-服务绑定模块,101-数据解析子模块,102-Socket请求子模块,11-服务调用模块,111-数据转换子模±央,112-服务引用子模块,12-VC单机仿真程序模块,a-仿真启动服务,b-仿真数据获取服务,c-仿真结果上传服务,d-数据生成服务,e-数据调遣服务,f-实时结果上传服务,g-统计结果生成服务,h-协调初始化服务,i-区域仿真初始化服务,j-周期仿真服务。具体实施例方式下面将结合附图和实施例对本发明作进一步的详细说明。如图l所示,基于面向服务架构的分布式交通仿真平台包括四层结构用户界面层、协调仿真多智能体层、数据服务中心层与仿真资源层;其中,用户界面层包括仿真客户端1和数据维护客户端2,仿真客户端1包含多个客户端(客户端dl,客户端d2,……客户端dN)进行显示;协调仿真多智能体层包括交互智能体3、仿真结果处理智能体4、协调智能体5、路网生成智能体7与区域仿真模块6,区域仿真模块6中根据仿真任务接入VC区域仿真模块(VC区域仿真模块j,VC区域仿真模块—2,……VC区域仿真模块—k,……,VC区域仿真模块—N,1《k《N);数据服务中心层是数据服务中心8,数据服务中心8又包括Hibernate0RM子模块803、数据生成子模块802和数据调遣子模块801;仿真资源层是Oracle数据库9。结合图l,基于面向服务架构的分布式交通仿真平台各模块实现细节及模块间关系如下1)用户界面层參仿真客户端1:采用VB(VisualBasic)与MapX实现。仿真客户端1显示的路网底图来源于美国M即Info公司的桌面地理信息系统软件M即Info电子地图。仿真客户端1与交互智能体3通过SOA接入模块相互连接,所交互的数据采用SDO模型进行封装。仿真客户端1通过访问交互智能体3的仿真启动服务a下达仿真任务,如图2,并在仿真过程中通过交互智能体3的仿真数据获取服务b,获得最终的统计数据结果和实时仿真结果,并将其显示。參数据维护客户端2:采用JavaSWT(StandardWidgetToolkit)实现,通过Hibernate0RM子模块803完成路网数据与信号机参数的添加、修改、查询与删除。2)协调仿真多智能体层參交互智能体3:采用SCAJava构件实现,与WebService绑定后向外提供仿真启动服务a、仿真数据获取服务b与仿真结果上传服务c,如图2。仿真启动服务a的输入参数是仿真客户端1发送的仿真请求SDO数据,该服务通过XSD(XMLSchemasDefinition)数据描述文件与SD0API(应用程序编程接口)提取出仿真路网范围,区域划分个数,车辆设定参数等信息。仿真启动服务a会通知数据服务中心8生成对应路网的数据,并根据区域个数创建若干线程用于启动区域仿真模块6。仿真数据获取服务b的返回参数是SDO数据,包含当前仿真时刻车辆与信号机的状态。仿真结果上传服务c的输入是仿真过程中产生的实时数据与仿真结束后生成的统计数据。交互智能体3接受仿真任务,根据仿真任务确定仿真区域,以及参与仿真的区域仿真模块6中的VC区域仿真模块,并调用数据服务中心8的数据生成子模块802的服务,然后等区域仿真路网数据准备完毕后初始化VC区域仿真模块,当所有的VC区域仿真模块初始化结束后,仿真启动服务a开始调用协调智能体5的协调初始化服务h,并在仿真过程中接收仿真结果处理智能体4通过实时结果上传服务f上传的实时仿真结果,如图2。參仿真结果处理智能体4:采用SCAJava构件实现,提供实时结果上传服务f与统计结果生成服务g,如图2。实时结果上传服务f的输入参数为仿真实时数据,包括公交车辆经纬度与信号灯状态等信息。统计结果生成服务g的输入参数为各路口历史状态,其根据历史状态计算区域信号控制整体指标,包括各路口的公交车平均延误时间,各条公交线路的平均旅行时间等指标。各VC区域仿真模块调用仿真结果处理智能体4的实时结果上传服务f,向仿真结果处理智能体4更新本周期的仿真实时信息,而仿真结果处理智能体4通过仿真结果上传服务c,上传实时仿真结果给交互智能体3。參协调智能体5:通过逻辑时钟同步区域仿真,确定区域协调决策;采用SCAJava构件实现,向外提供协调初始化服务h,内部包括协调判定服务与信号调整服务,如图2。协调初始化服务h的输入参数是参与仿真的区域仿真模块的编号。协调判定服务的输入参数是包括公交车延误与排队长度在内的路口状态信息,返回值是协调方案决策。信号调整服务的输入参数是协调方案与协调区域当前信号状态,返回值是调整后的信号参数。协调初始化服务h被调用时,首先会开辟多个线程,并循环执行线程调用各VC区域仿真模块(VC区域仿真模块_1、VC区域仿真模块_2、……、VC区域仿真模块_N)的周期仿真服务j,并在每一个仿真周期中调用协调判定服务,根据上一周期仿真结果判断是否需要区域协调,若当前仿真周期无需进行区域间协调,则协调智能体5继续调用区域仿真模块6中的VC区域仿真模块的周期仿真服务j,实现给定周期内的区域交通仿真,若当前仿真周期需要进行区域间协调,则协调智能体5调用信号调整服务进行决策。參区域仿真模块6:采用VC++实现。仿真模型采用宏观微观相结合的混合仿真模型,公交车辆采用微观仿真模型精确描述其行驶,超车,进站等行为。社会车辆用宏观交通流代替。区域仿真模块6内部嵌入SOA接入模块,向外提供区域仿真初始化服务i与周期仿真服务j,如图2。区域仿真初始化服务i实现区域仿真模块内部的路网构建,公交车辆生成与社会车辆交通流生成等仿真初始化操作。周期仿真服务j实现各仿真子区域在一个周期内的仿真。区域仿真模块6产生车流与交通流,模拟车辆的运动行为,负责所属子区域的仿真;其内接入的VC区域仿真模块调用数据服务中心8的数据调遣子模块801的服务,获取区域仿真路网数据。參路网生成智能体7:采用C++COM组件实现,嵌入SOA接入模块,提供路网生成服务。路网生成服务从数据服务中心8获得路网与信号机的SDO数据对象,并转换成区域仿真模块6对应的struct数据结构类型。3)数据服务中心层參数据服务中心8:采用SCAJava构件实现,包括HibernateORM子模块803、数据生成子模块802与数据调遣子模块801。HibernateORM子模块803基于Hibernate的关联映射实现路网数据结构及其在0racle数据库9中的持久化存储。数据生成子模块802通过组件内的数据生成服务d完成基于面向对象的路网数据提取,并生成SDO数据对象。数据调遣子模块801中的数据调遣服务e通过WebService将SDO数据发送到区域仿真模块6。4)仿真资源层參Oracle数据库9:所存储的仿真路网采用包括拓扑信息,属性信息,地理信息的三层模型。其中的地理信息存储在OracleSpatial数据库中。整个数据库包括路网拓扑信息表,路网元素属性信息表,路网元素地理信息表,信号机参数表与映射集合表等13个关系型数据表。本发明各模块间的数据传输方式有四种,如图1所示,仿真客户端1与交互智能体3之间,交互智能体3与区域仿真模块6之间,交互智能体3与数据服务中心8之间,仿真结果处理智能体4与区域仿真模块6之间,协调智能体5与区域仿真模块6之间,以及路网生成智能体7与数据服务中心8之间,均采用的是WebService进行数据传输;交互智能体3与仿真结果处理智能体4之间,交互智能体3与协调智能体5之间,数据维护客户端2与数据服务中心8之间,以及数据服务中心8中的数据调遣子模块801与数据生成子模块802之间,数据生成子模块802与HibernateORM子模块803之间,采用的是SCAService进行数据传输;此外,数据服务中心8与Oracle数据库9之间采用的是Java数据库连接JDBC(JavaDataBaseConnectivity)进行数据传输,区域仿真模块6与路网生成智能体之间采用COMService进行数据传输。本发明的基于面向服务架构的分布式交通仿真平台中各模块的工作基于逻辑时间同步,从仿真客户端1部署仿真任务到仿真结束返回统计数据结果。本发明仿真平台的交互智能体3、协调智能体5、仿真结果处理智能体4以及数据服务中心8采用服务组件架构SCA规范,并各自封装成SCA构件,SCA的语言无关性使得SCA组件可由多种语言实现,包括Java、C、C++、BPEL、PHP、COBOL等等。每个SCA构件由若干SCA组件构成。每个SCA组件包含如下4个部分參服务组件本身向其他组件提供的业务功能;參实现特定业务功能的实现代码;參属性对业务功能中的数据值进行配置,进而影响实现的行为;參引用本组件实现对其他组件所提供服务的依赖。本发明实施例中SCA组件采用Java实现,组件包括服务接口、实现、属性、引用接口四部分。一个SCA组件可对外提供一个或多个服务,每个服务对应一个接口类,服务对应的方法在服务接口类中体现为一系列的抽象方法,若服务被定义为远程调用,需要用@Remotable进行注释,在实现类中,用@ServiCe(*.class)指定服务接口,并重写服务接口中的方法。若组件的实现需包含对其它组件服务的引用,则需调用相应的set方法并以◎Reference进行注释。属性的配置需要在服务实现类中用@Property标记字段或Setter方法,并在配置文件中的〈property〉元素中进行配置。由于分布式仿真平台结构复杂,涉及多个模块,仅由一名开发人员从底层开始完成系统的全部开发是不现实的。首先,分布式系统的开发应尽可能建立在现有的模块之上,其次,分布式系统应先以模块为单位进行分散开发,最后将各模块进行集成。仿真模块SCA的实现与SD0数据封装已经解决了SCA模块系统集成的问题,而独立开发的非SCA模块的集成需要设计相应的解决方案。为了将单机仿真程序与整个仿真平台结合,其需要具备提供服务与调用服务的能力。虽然单机的仿真程序可以将关键部分分离出来,重新封装成SCA组件,但这样操作具有许多弊端。首先,作为一个完整的单机仿真程序,重新对其关键组件封装会破坏软件的整体结构,不利于软件后续的升级与维护。其次,单机仿真程序本身规模较大,重新封装成SCA组件代码改动量大。再次,SCA组件的运行依赖特殊的Web容器,系统运行的独立性降低。最后,单机仿真程序的开发人员须同时具有SOA、SCA、SDO的相关知识,否则不利于整个系统的分散开发。而本发明创新的实现了一种单机程序SOA接入模块,可将单机仿真程序模块接入SOA环境并作为分布式仿真平台模块的一部份,并进行极少的代码修改。SOA接入模块与VC单机仿真程序模块12位于同一台计算机上,如图3所示,涉及到两个环境SOA环境与非SOA环境,SOA环境指本发明的仿真平台环境,VC单机仿真程序模块是由用Visual0++实现的单机仿真程序模块,处于非5(^环境。SOA接入模块包括两个部分服务绑定模块10与服务调用模块11。服务绑定模块10采用SCAJava构件实现,包括数据解析子模块101和Socket请求子模块102,其应用原理为首先,服务绑定模块10通过WebService传输数据,接受SOA环境中的服务调用请求,并获得SDO数据;接着,数据解析子模块101解析SDO数据,并通过Socket请求子模块102将数据经Socket连接发送到VC单机仿真程序模块12,VC单机仿真程序模块12执行其内仿真程序的相关操作,然后,VC单机仿真程序模块12通过Socket连接将结果返回到服务绑定模块10;最后,服务绑定模块10将返回的数据结果封装成SDO数据对象,并返回给服务调用者。服务调用模块11则采用COM组件的方式实现,包括数据转换子模块111和服务引用子模块112。服务引用子模块112采用CLR托管程序开发,并以DLL形式生成。VC单机仿真程序模块12通过COM组件接口调用服务引用子模块112,实现仿真服务(如数据发送服务)的引用,并得到SD0数据。数据转换子模块lll解析SDO数据并进行重新组合,使数据存储格式与VC单机仿真程序模块12中的一致。数据类型在VC程序,COM组件,托管DLL中需要进行相应的转化,VC程序调用COM服务时传递的参数与返回值应使用Variant类型变量,COM组件访问托管DLL时传递的参数与返回值则需要进行托管,非托管类型转化。图3中C0M组件提供的接口都需要从IUnknown接口继承。基于面向服务架构的分布式交通仿真平台的仿真方法,其仿真流程如图4所示,具体步骤说明如下步骤1、仿真启动;仿真客户端1访问交互智能体3的仿真启动服务,交互智能体3根据仿真任务确定仿真区域以及参与仿真的区域仿真模块6接入的VC区域仿真模块。步骤2、数据准备;交互智能体3调用数据服务中心8的数据生成子模块802的服务,数据服务中心8从Oracle数据库9中获取原始的路网数据,并按区域将数据重组并封装成SDO数据对象,生成区域仿真路网数据。数据准备完毕后,交互智能体3初始化区域仿真模块6并同时等待初始化完成。步骤3、初始化区域仿真模块,包括步骤3.1与步骤3.2,这两个步骤都是多任务并发;步骤3.l,仿真启动服务根据参与仿真的VC区域仿真模块的数量开辟多线程,在多线程中调用区域仿真初始化服务;步骤3.2,仿真启动服务在主线程中通过标志位等待步骤3.1中的仿真初始化完成;步骤4、获取区域仿真路网数据;各VC区域仿真模块通过调用路网生成智能体的路网生成服务,获取在步骤2生成的区域仿真路网数据。步骤5、区域协调仿真启动,具体为步骤5.1,当所有的VC区域仿真模块初始化结束后,仿真启动服务开始调用协调智能体5的协调初始化服务,此时仿真启动服务的生命周期结束;步骤5.2,仿真客户端1开始循环调用交互智能体3的仿真数据获取服务,获取公交车辆当前时刻坐标,干线、路口交通流情况以及各信号等当前相位。协调智能体5的协调初始化服务首先会开辟多个线程,并循环执行线程调用各VC区域仿真模块的周期仿真服务。步骤6、区域协调控制;协调智能体5在每一个仿真周期中首先根据上一周期仿真结果判断是否需要区域协调。若当前仿真周期无需进行区域间协调,则执行步骤7,若当前仿真周期需要进行区域间协调,则执行步骤IO。步骤7、周期性区域协调仿真;协调智能体5调用区域仿真模块6的周期仿真服务,实现给定周期内的区域交通仿真,根据子区域所处的位置进行边界信息的更新,包括社会车辆交通流信息与公交车位置信息,然后执行步骤8。步骤8、生成实时交通仿真数据;各VC区域仿真模块调用仿真结果处理智能体4的实时结果上传服务,向仿真结果处理智能体4更新本周期的仿真实时信息,包括公交车辆经纬度,行驶方向,信号等状态等。步骤9、仿真状态判定与数据上载,包括步骤9.1与步骤9.2;步骤9.1,本周期的仿真实时信息更新后,仿真结果处理智能体4通过交互智能体3的仿真结果上传服务,上传实时仿真结果给交互智能体3,仿真客户端1可以通过交互智能体3的仿真数据获取服务,获得实时仿真结果并显示;步骤9.2,协调智能体5根据仿真时间是否到期判断整个仿真过程是否结束,若仿真没有结束则循环进行下一周期的仿真,转到步骤6执行,若仿真结束,则结束区域仿真,然后转步骤12。步骤10、协调控制决策;协调智能体5调用信号调整服务进行决策。步骤11、更新信号机参数;根据步骤10信号调整服务的结果在下一个仿真周期中更新信号机的参数,然后执行步骤7。步骤12、仿真统计数据生成;交互智能体3调用仿真结果处理智能体4的统计结果生成服务,将生成的统计数据上传到交互智能体3,然后执行步骤13。步骤13、统计数据显示与结束;仿真客户端1通过交互智能体3的仿真数据获取服务获得最终的统计数据结果并显示,整个分布式仿真任务结束,等待下一个仿真任务的到来。最后,为了验证本发明的分布式交通仿真平台的可行性,本文选择了某区内一真实路网进行实验,路网如图5所示。整个路网被分成3个子区域,用虚线框与实线框分出,路网内设置了3条公交线路Linel:A1-A2-A14-A15-A16-A17-A18-A19-A7-A8-A9-A21-A31-A32-A33-A34,共有7站;Line2:A25-A26-A27-A28-A16-A17-A18-A19-A29-A30-A31-A21-A22-A23-A24,共有8站;Line3:A35-A36-A37-A38-A39-A28-A29-A40-A41-A42-A43,共有7站;每条线路上、下行方向共有20辆公交车,发车间隔为1分钟,公交车辆的平均速度为12米/秒,社会车辆以交通流方式在路口处注入,信号控制采用半感应控制,信号周期为120秒,最小绿灯时间为20秒,最大绿灯时间为60秒,仿真时间设定为1小时。整个分布式仿真耗时87秒,证明了本发明的分布式交通仿真平台的高效性。三条线路的平均旅行时间分别为1303.10秒,1159.58秒和1096.32秒。此外,本文统计了路口公交车辆通过数(APB)与公交车辆路口平均延误(AD,秒)两个指标,如图6所示。以路口A8和A12为例,通过路口A8的公交车数量为96,公交车平均延误为11.47秒;路口A12没有公交车通过,则其平均延误时间无法统计。分布式仿真所得数据与单机仿真程序所得数据基本一致,表明分布式仿真平台可以正确模拟车辆的行为,验证了其正确性。权利要求基于面向服务架构的分布式交通仿真平台,其特征在于,包括四层结构用户界面层、协调仿真多智能体层、数据服务中心层与仿真资源层;其中,用户界面层包括仿真客户端和数据维护客户端;协调仿真多智能体层包括交互智能体、路网生成智能体、协调智能体、仿真结果处理智能体与区域仿真模块,区域仿真模块由VC区域仿真模块组成;数据服务中心层包括数据服务中心,而数据服务中心又包括HibernateORM子模块、数据生成子模块和数据调遣子模块;仿真资源层是Oracle数据库;用户界面层中的仿真客户端通过访问协调仿真多智能体层中的交互智能体的仿真启动服务,下达仿真任务,并在仿真过程中通过交互智能体的仿真数据获取服务,获得最终的统计数据结果和实时仿真结果,并将其显示;用户界面层中的数据维护客户端,用来完成路网数据与信号机参数的添加、修改、查询与删除;协调仿真多智能体层中的交互智能体,连接着仿真客户端与仿真平台内部组件,向外提供仿真启动、仿真数据获取与仿真结果上传三个服务;交互智能体接受仿真任务,根据仿真任务,确定仿真区域以及参与仿真的区域仿真模块中的VC区域仿真模块,并调用数据服务中心层中数据服务中心的数据生成子模块的服务,然后等区域仿真路网数据准备完毕后初始化VC区域仿真模块,当所有的VC区域仿真模块初始化结束后,仿真启动服务开始调用协调仿真多智能体层中的协调智能体的协调初始化服务,并在仿真过程中接收协调仿真多智能体层中的仿真结果处理智能体通过仿真结果上传服务上传的实时仿真结果;仿真结果处理智能体,提供实时结果上传服务与统计结果生成服务;各VC区域仿真模块调用仿真结果处理智能体的实时结果上传服务,向仿真结果处理智能体更新本周期的仿真实时信息,而仿真结果处理智能体通过仿真结果上传服务,上传实时仿真结果给交互智能体;协调智能体,向交互智能体提供协调初始化服务,内部包括协调判定服务与信号调整服务;协调智能体的协调初始化服务被调用时,首先开辟多个线程,接着循环执行线程调用各VC区域仿真模块的周期仿真服务,并在每一个仿真周期中根据上一周期仿真结果判断是否需要区域协调,若当前仿真周期无需进行区域间协调,则协调智能体继续调用VC区域仿真模块的周期仿真服务,实现给定周期内的区域交通仿真,若当前仿真周期需要进行区域间协调,则协调智能体调用信号调整服务进行决策;区域仿真模块,内部嵌入SOA接入模块,向交互智能体提供区域仿真初始化服务,向协调智能体提供周期仿真服务;区域仿真模块产生交通流与车源,模拟车辆的运动行为,负责所属子区域的仿真;VC区域仿真模块调用数据服务中心的数据调遣子模块的服务,获取区域仿真路网数据;路网生成智能体作为数据解析部分嵌入SOA接入模块,向VC区域仿真模块提供路网生成服务,路网生成服务从数据服务中心获得路网与信号机的SDO数据对象,并转换成区域仿真模块对应的数据结构类型,使数据适用于区域仿真模块;数据服务中心包括3个子模块①HibernateORM子模块,完成对象-关系映射,实现基于对象原语的数据建立,并将其持久化到仿真资源层中的Oracle数据库中;②数据生成子模块提供数据生成服务,从Oracle数据库中获取分布式交通仿真所需要的路网信息,并将其封装为SDO数据;③数据调遣子模块提供数据调遣服务,通过WebService获取路网生成智能体的仿真原始数据发送请求,将生成的SDO数据发送到区域仿真模块;Oracle数据库,存储仿真所需的路网数据信息与信号机配置信息;交互智能体、协调智能体、仿真结果处理智能体以及数据服务中心采用服务组件架构SCA规范,并各自封装成SCA构件;已有的单机仿真程序模块则通过SOA接入模块作为区域仿真模块接入仿真平台中;系统的区域协调仿真基于逻辑时钟同步,每个仿真模块调用或提供粗粒度的服务,基于不同的仿真服务,仿真平台完成大规模的分布式交通仿真;其中,SOA代表面向服务架构,SCA代表服务组件架构,VC即VisualC++,SDO即ServicedataObjects,ORM代表对象-关系数据库映射。2.根据权利要求1所述的基于面向服务架构的分布式交通仿真平台,其特征在于,所述的VC区域仿真模块,指用VisualC++实现的单机仿真程序模块,通过SOA接入模块接入区域仿真模块。3.根据权利要求1或2所述的基于面向服务架构的分布式交通仿真平台,其特征在于,所述的SOA接入模块由两个部分组成服务绑定模块与服务调用模块;服务绑定模块采用SCAJava构件实现,包括数据解析子模块和Socket请求子模块,其应用原理为首先,服务绑定模块接受SOA环境中的服务调用请求,并获得SDO数据;接着,数据解析子模块解析SDO数据,并通过Socket请求子模块将数据经Socket连接发送到VC单机仿真程序模块,VC单机仿真程序模块与SOA接入模块位于同一台计算机上,VC单机仿真程序模块接收数据执行其自身仿真程序的相关操作;然后,VC单机仿真程序模块通过Socket连接将结果返回到服务绑定模块;最后,服务绑定模块将返回得数据结果封装成SDO数据对象,并返回给服务调用者;服务调用模块则采用COM组件的实现方式,包括服务引用子模块和数据转换子模块,服务引用子模块采用CLR托管程序开发,并以DLL形式生成;VC单机仿真程序模块通过COM组件接口调用服务引用子模块,实现仿真服务的引用,并得到SDO数据;数据转换子模块解析SDO数据并进行重新组合,使数据存储格式与VC单机仿真程序模块中的一致;其中,COM代表组件对象模型,CLR代表公共语言运行时,DLL代表动态链接库。4.根据权利要求1所述的基于面向服务架构的分布式交通仿真平台,其特征在于,所述的交互智能体采用SCAJava构件实现,提供的三个服务具体为仿真启动服务的输入参数是仿真客户端发送的仿真请求SDO数据,仿真启动服务通知数据服务中心生成对应路网的数据,并根据区域个数创建若干线程用于启动区域仿真模块;仿真数据获取服务的返回参数是SDO数据,包含当前仿真时刻车辆与信号机的状态;仿真结果上传服务的输入是仿真过程中产生的实时数据与仿真结束后生成的统计数据。5.根据权利要求1所述的基于面向服务架构的分布式交通仿真平台,其特征在于,所述的仿真结果处理智能体采用SCAJava构件实现,提供的两个服务具体为实时结果上传服务的输入参数为仿真实时数据,包括公交车辆经纬度与信号灯状态信息;统计结果生成服务的输入参数为各路口历史状态,其根据历史状态计算区域信号控制整体指标,包括各路口的公交车平均延误时间,各条公交线路的平均旅行时间。6.根据权利要求1所述的基于面向服务架构的分布式交通仿真平台,其特征在于,所述的协调智能体采用SCAJava构件实现,其提供的三个服务具体为协调初始化服务的输入参数是参与仿真的区域仿真模块的编号;协调判定服务的输入参数是包括公交车延误与排队长度在内的路口状态信息,返回值是协调方案决策;信号调整服务的输入参数是协调方案与协调区域当前信号状态,返回值是调整后的信号参数。7.应用权利要求1所述的基于面向服务架构的分布式交通仿真平台的仿真方法,其特征在于,包括如下步骤步骤1、仿真启动;仿真客户端访问交互智能体的仿真启动服务,交互智能体根据仿真任务确定仿真区域以及参与仿真的VC区域仿真模块;步骤2、数据准备;交互智能体调用数据服务中心的数据生成子模块的服务,数据服务中心从Oracle数据中获取原始的路网数据,并按区域将数据重组并封装成SDO数据对象,生成区域仿真路网数据,数据准备完毕后,交互智能体初始化区域仿真模块并同时等待初始化完成;步骤3、初始化区域仿真模块,包括步骤3.1与步骤3.2,这两个步骤都是多任务并发;步骤3.l,仿真启动服务根据参与仿真的VC区域仿真模块的数量开辟多线程,在多线程中调用区域仿真初始化服务;步骤3.2,仿真启动服务在主线程中通过标志位等待步骤3.1中的仿真初始化完成;步骤4、获取区域仿真路网数据;各VC区域仿真模块通过调用路网生成智能体的路网生成服务,获取在步骤2生成的区域仿真路网数据;步骤5、区域协调仿真启动,具体为步骤5.1,当所有的VC区域仿真模块初始化结束后,仿真启动服务开始调用协调智能体的协调初始化服务,此时仿真启动服务的生命周期结束;步骤5.2,仿真客户端开始循环调用交互智能体的仿真数据获取服务,获取公交车辆当前时刻坐标,干线、路口交通流情况以及各信号当前相位,协调智能体的协调初始化服务首先开辟多个线程,并循环执行线程,调用各VC区域仿真模块的周期仿真服务;步骤6、区域协调控制;协调智能体在每一个仿真周期中首先根据上一周期仿真结果判断是否需要区域协调,若当前仿真周期无需进行区域间协调,则执行步骤7,若当前仿真周期需要进行区域间协调,则转到步骤10;步骤7、周期性区域协调仿真;协调智能体调用区域仿真模块的周期仿真服务,实现给定周期内的区域交通仿真,根据子区域所处的位置进行边界信息的更新,包括社会车辆交通流信息与公交车位置信息,然后执行步骤8;步骤8、生成实时交通仿真数据;各vc区域仿真模块调用仿真结果处理智能体的实时结果上传服务,向仿真结果处理智能体更新本周期的仿真实时信息,包括公交车辆经纬度,行驶方向,信号状态;步骤9、仿真状态判定与数据上载,包括步骤9.1与步骤9.2;步骤9.l,本周期的仿真实时信息更新后,仿真结果处理智能体通过交互智能体的仿真结果上传服务,上传实时仿真结果给交互智能体,仿真客户端能够通过交互智能体的仿真数据获取服务,获得实时仿真结果并显示;步骤9.2,协调智能体根据仿真时间判断整个仿真过程是否结束,若仿真没有结束则循环进行下一周期的仿真,执行步骤6;否则结束区域仿真,执行步骤12;步骤10、协调控制决策;协调智能体调用信号调整服务进行决策;步骤11、更新信号机参数;根据步骤10信号调整服务的结果在下一个仿真周期中更新信号机的参数,然后执行步骤7;步骤12、仿真统计数据生成;交互智能体调用仿真结果处理智能体的统计结果生成服务,将生成的统计数据上传到交互智能体,然后执行步骤13;步骤13、统计数据显示与结束;仿真客户端通过交互智能体的仿真数据获取服务获得最终的统计数据结果并显示,整个分布式仿真任务结束,并等待下一个仿真任务的到来。全文摘要本发明公开了一种基于面向服务架构(Service-OrientedArchitecture,SOA)的分布式交通仿真平台及其仿真方法,主要包括交互智能体、仿真结果处理智能体、协调智能体、路网生成智能体、区域仿真模块及数据服务中心等几个模块,通过不同智能体的相互协调完成基于大规模真实路网的仿真。本发明模块采用服务组件架构SCA、VisualC++和VisualBasic实现。此外,本发明设计了基于SCA的SOA接入模块,用于集成已有的单机仿真程序,满足了分布式仿真平台对异构性的要求,提高了系统的灵活性,业务模型的可重用性与服务的可互操作性,并使得系统更加易于集成。文档编号G08G1/00GK101710361SQ20091026038公开日2010年5月19日申请日期2009年12月17日优先权日2009年11月13日发明者刘倩,姜秉楠,张海,郭欣蕾申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1