一种基于贝叶斯模型的城市环境下VANET消息转发方法与流程

文档序号:16521231发布日期:2019-01-05 09:59阅读:167来源:国知局
一种基于贝叶斯模型的城市环境下VANET消息转发方法与流程

本发明属于移动自组织网络领域,是一种消息包的转发方法,适用于vanet(vehicularad-hocnetwork)环境中。特别适合城市环境下的vanet消息投递。



背景技术:

在城市车联网的环境下,车辆是按照道路轨迹行驶的,并且城市环境下高楼林立,无线信号的覆盖受到影响,车辆节点的无线信号很难做覆盖其他车道,消息只能在同一道路上邻近车辆间进行投递,很难做到跨越道路传递,因此消息的路由轨迹几乎是沿着道路方向的。虽然vanet中的路由算法有很多种,但是无论是哪一种算法,能快速高效的将消息由一个路段投递到另一个路段,很大程度上决定vanet路由算法的性能,而实现的关键在于源节点对中继节点的选择策略。

目前vanet中比较主流的数据包转发策略有gpsr(greedyperimeterstatelessrouting)协议,它采用贪婪周边转发方法,贪婪转发模式时,能够将消息投递到距离目的节点最近的中继节点上,实现每次投递完成后消息距离目的节点都比投递前更近。由于gpsr协议采用贪婪转发方法,在选择下一跳节点时有一定的盲目性和随机性,会造成大量数据丢失和重传现象,并导致路径选择不合理,出现路由跳数增加及回环路由的情况,从而影响网络性能。此外,gpsr是基于理想链路模型的,由于电磁波在无线传播的过程中存在自由衰落和阴影效应,以及传输环境的多径衰落等现象,它并不能很好的和真实环境相契合。一味地考虑最远传输,并没有考虑符合投递条件的节点消息缓存使用情况,这样可能造成某个节点的消息缓存使用率过高,导致网络拥塞的现象。

基于以上的投递模型,有很多改进模型,这些模型有的提出真实链路模型,比如基于链路通信效率的高能效路由转发策略模型,但这些模型都缺乏自适应性,或者不能很好的将众多因素考虑在内。

综合以上情况,迫切需要提出一种真实链路模型,并且它能够应对恶劣环境,动态的调整,实现自适应的投递策略。



技术实现要素:

随着汽车电子设备的日益完善,依靠强大车载传感器的感知能力可以比较容易的获取上下文信息,依靠这些信息,本发明提出一种基于贝叶斯模型的城市环境下vanet消息转发方法,以解决现有消息投递方法的不足,该方法包括如下步骤:

(1)使用车载电子设备实时的获得车辆所处环境的相对湿度rh%,车辆经纬度坐标index,加速度大小a,加速度方向av,速度方向vv,速度大小v,节点的s1(缓存接收消息的内存)的使用率s1v以及气象数据,比如是否是雷电isthound,大雾情况isfog属性值。

(2)车辆节点将(1)中获得的数据构成hello数据包,并向周边节点广播该hello数据包,在彼此通信范围内的节点能够获得彼此的hello数据包,hello数据包的逻辑结构如图1所示,车辆节点通过hello数据包获得对方的上下文信息,并将这些信息同自身采集到的步骤(1)中所述的信息拼接成一条投递上下文的数据集di,此时di的issuccess(该issuccess表示投递是否成功,投递成功该位为1,失败为2,未更新投递状态该位为0)位为0,di的结构如图2所示。

(3)节点定时使用s2(s2为存储投递记录的内存)中的数据作为训练集,训练出新的贝叶斯模型参数(先验概率),实现自适应性。

(4)源节点使用(3)中的贝叶斯模型参数,计算出源节点将消息投递至通信范围内各个节点的投递成功率大小,并将投递成功率大小达到阀值的节点构成集合s,

(5)源节点根据(4)中s集合中各个节点的s1v大小,使用负载均衡算法去划分源节点s1中缓存消息,按照比例分配给s中的节点,防止盲目投递造成的网络拥塞。

(6)每次投递结束后,源节点和中继节点(或者目的节点)之间会反馈本次投递情况(成功或失败),源节点用来更新di中的issuccess,并向s2缓存队列中写入这些投递记录数据,作为(3)中贝叶斯模型训练数据集。

进一步,上述步骤(3)的具体实现是:

(3-1)节点对s2中部分连续的数据进行阶梯量化处理,以方便模型训练。

(3-2)节点周期的使用各自的s2数据算出di中每个属性的先验概率,得出新的贝叶斯模型参数(各个属性的先验概率)。

进一步,上述步骤(4)的具体实现是:

(4-1)读取(2)中的di中的各个属性值,用(3-1)中所述的阶梯化和归一化处理数据,使用(3-2)中的贝叶斯模型参数算出各个属性值下的投递成功率。

(4-2)因为各个属性间相互独立,对(4-1)计算出的各个属性值下的投递成功率使用全概率公式,计算出该条投递上下文环境下投递成功率。

(4-3)从(4-2)的计算结果中筛选出投递成功率达到阀值的节点组成集合s。

进一步,上述步骤(5)中的负载均衡的算法的具体实现是:

(5-1)源节点计算出s1中存储消息总量s1sum,以及消息平均大小x。

(5-2)获取s中各节点s1的使用率u={u1,u2...un},计算出u中对应各个节点s1的剩余量r={r1,r2...rn},将r进行量化得到集合k={ri/x,ri∈r},对k中元素进行升序排序得k={k1,k2...kn}。

(5-3)如果则表示已经发生网络拥塞,放弃本次投递,以缓解网络拥塞。

(5-4)如果则选中的s集合中目的节点符合投递条件。具体地:

(5-4-1)如果(其中j=1)大于需要投递总量,那么j自动加1,继续判断是否大于s1sum。

(5-4-2)如此循环直到j=t(1<t<n)时不再大于s1sum,此时取j的值为j-1。

(5-4-3)取集合kn={kj,kj+1...kn}作为投递对象,kn中各个节点分配源节点s1中的消息对应的量,构成的集合m={x(km-kj-1),km∈kn}。

本发明的有益效果:

传统的投递方法大多是使用固定的理想模型,忽略了由于电磁波在无线传播的过程中存在自由衰落和阴影效应,以及传输环境的多径衰落等现象,它并不能很好的和真实环境相契合。本发明将这些因素考虑在内,不断地使用更新的训练数据集训练出新的贝叶斯模型,实现动态自适应;引入一种分配算法,能够较好的均衡各个节点消息缓存的使用情况,较好的避免网络拥塞现象的发生,并且使用的模型简单,对硬件要求较低,能够很好的运行在车载嵌入式系统中。

附图说明

图1hello消息包的逻辑结构图

图2投递环境上下文数据逻辑结构图

图3s2存储策略图

图4源节点消息分配转发算法图。

具体实施方式

下面结合附图对本发明做进一步的说明,需要说明的是,本实例的具体实施是以本技术为前提,给出了详尽的实施过程和实施步骤,但是本发明的保护范围并不受限于本实施实例。

(1)到达广播周期时,源节点向外广播hello消息,具体步骤如下:

(1-1)源节点读取车辆经纬度坐标index,加速度大小a,加速度方向av,速度方向vv,速度大小v,节点的s1(缓存接收消息的内存)的使用率s1v以及气象数据,比如是否是雷电isthound,大雾情况isfog等属性值;

(1-2)源节点将(1-1)中读取到的属性数据拼成一条hello数据包,并对外广播,hello数据包是节点之间交换投递上下文信息的报文,逻辑结构如附图1所示,此时hello数据包中表示该条hello消息的请求或回复的逻辑位数值为0(如果是回应,该位为1);

(2)如果源节点收到回应消息则执行如下步骤:

(2-1)源节点会将收到的回复消息集m={m1,m2...mn}存入hello消息缓存区s3(s3是缓存hello消息的内存)中,并读取其投递环境上下文信息(环境的相对湿度rh%,当前经纬度坐标index,加速度大小a,加速度方向av,速度方向vv速度大小v,节点的s1缓存的使用率s1v以及气象数据,比如是否是雷电isthound,大雾情况isfog),

(2-2)从s3中读取m中各个元素,并将这些元素分别与(2-1)中自身获得投递环境上下文信息数据进行拼接,构成完整的投递上下文集合d={d1,d2...dn}其中di代表源节点与一个可投递节点的上下文环境,其中di中表示投递状态的属性值为0(等待投递结束反馈信息的更新),di有多条属性即di={v1,v2...vn}其逻辑结构如图2所示。

(2-3)对d进行过滤,得到d'(过滤标准:由di中的速度和经纬度属性值选出速度方向和源节点相同,且距离目标节点更近的上下文集),将d'集中元素的部分属性数据做梯度量化处理,具体如下:

(2-3-1)将di中的rh%,a,v,l(表示源节点和目的节点之间的距离)中各属性根据数值分布情况,决定具体划分成多少个梯度区间,各属性的各区间由低倒高依次取1到n个整数值。

(2-3-2)di中的rh%,a,v,l各个属性值落到哪个对应属性梯度区间,则该属性的梯度值就是对应的区间值。

(2-4)计算出d'的各个属性下的投递成功率,具体的计算方法如下:

(2-4-1)取st代表投递成功,由(5)中所述可以得到di中各个属性值下的先验概率值p(vj|st),(vi∈di)的大小,由先验概率求di中各个属性值下的投递成功率的大小

(2-4-2)di中各个属性相互独立,互不影响,由全概率公式得到d'中各个投递上下文情况下的投递成功率{vi∈di,di∈d'}。

(2-4-3)从(2-4-2)中计算的投递成功率筛选出投递成功率大于设定阀值f的对应目标节点集合s={si|si∈d'且pi>f};如果s为空,即源节点找不到符合投递条件的节点,结束本次投递,并清空s3,执行步骤(1)。

(2-5)若(2-4-3)中s不为空,源节点根据d中的目标节点s1资源使用情况做消息分配,分配算法流程图如图4所示,具体分配方法如下:

(2-5-1)源节点计算出其s1中需要投递的消息的平均值大小x。

(2-5-2)源节点读取s中各个节点的s1v(即节点的s1使用率)的值,构成s中节点的s1使用率集u={u1,u2...un},由u中的各个节点的s1v使用率计算出对应节点s1的剩余量集合r={r1,r2...rn},将r中元素分别除以x取整,得到s中各节点的s1的剩余量的量化值,对各个量化值进行升序排序得到量化值集合k={k1,k2...kn}。

(2-5-3)计算s中所有节点能容纳的消息总量如果即s中节点不能够容纳源节s1中的消息,这时已经发生网络拥塞,放弃本次投递,以缓解网络拥塞,并清空s3,回到(1)状态。

(2-5-4)如果说明选中的目的节点符合投递条件,将源节点的s1中消息分配到s中部分或者全部节点中,具体分配方法如下:

(2-5-4-1)如果(其中j=1)大于需要投递总量,那么j自加一,继续执行本步骤,直到不大于源节点s1中缓存消息大小,这时取j=j-1。

(2-5-4-2)这时取s集合的子集合s'={ki,ki∈s且i<j}中的元素作为源节点的投递对象,源节点将按集合m={x(km-kj),km∈s',kj∈s}中的元素大小为s'中各个节点分配相应的投递消息量,分配完成,进行投递。

(3)投递完毕后,s'集合中的节点向源节点反馈投递状态,即投递成功或投递失败,源节点根据反馈的投递状态更新d中对应元素的issuccess逻辑位的值,源节点将有更新的d中元素存入s2中,清空s3,向s2存入投递记录的存储方法如图3所示,具体如下:

(3-1)设节点缓存区s2是一个队列数据结构,如果s2不满,并且能够存储这些投递记录,则直接将新的记录存储在对首。

(3-2)如果s2缓存区已经满,或者不能容纳新的投递记录,则删除适量的队尾投递记录(保证s2能够存储新的元素即可),将新的投递记录存储队首。

(4)如果源节点收不到消息回应,则检查是否达到对外广播hello消息周期,若达到则执行(1)中所述步骤,如果没有达到广播周期则继续等待周边节点的消息回应。

(5)节点会定期更新自己的贝叶斯模型的参数,即各个属性的先验概率,具体更新步骤如下:

(5-1)如果节点到达模型参数更新周期,则会读取s2中的数据,统计di中各个属性出现的情况,和对应情况下投递成功的次数。

(5-2)分别计算出各个属性情况下出现的相应的频率(某个属性值情况下出现的次数比上s2中总的数据条数),频率近似等于先验概率,这样便得出新的贝叶斯模型参数。

上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1