一种交叉口信号控制时段划分方法
技术领域
本发明属于交通信号控制领域,具体涉及一种交叉口信号控制时段划分方法。
背景技术
随着智能交通系统(ITS)的飞速发展,城市交通的管理也越来越精细化、数字化。城市道路的交叉口是城市交通精细化管理的关键,其中交叉口的信号控制是交通管理中最为有效的手段。多时段信号控制是把一天分为多个时间段,用不同的控制方案来控制信号路口。其中时段划分是多时段信号控制的关键技术。传统上,时段划分大多是根据交通工程师的经验来划分,不够科学、不够精细。
现有技术如,专利号为CN108615375A的《一种交叉口信号配时时段划分方法》的专利文献,该方法依据每个车道的交通流量比作为划分依据,该方法过分依赖于绿灯时间,往往在非常拥堵或者有特勤的情况下,交叉口受执勤交警指挥,此时无法获取正确的绿灯时间,因此统计的车流量和绿灯时间是不匹配的,存在计算结果错误的风险。其次,该方法只支持5个时段,对于一个流量变化较大的路口,显然是不足的。
现有技术又如,专利号为CN 108389406A的《信号控制时段自动划分方法》的专利文献,该方法依据过去一年中每个工作日的流量来划分下一个工作日的时段,该方法存在以下不足,首先时令对交通出行的影响,夏时令和冬时令的交通运行状况完全不一样;其次,不同时间段的交通数据对现在数据预测的价值是不一样的,越接近现在的数据越有价值,并且该方法只支持早高峰、平峰和晚高峰三个时段的划分,显然精细化程度不足。
所以,依靠交通工程师的经验来划分时段,具有一定的主观性,不够严谨,说服力不足。且当前时段划分的技术的不足,主要体现在技术的使用场景过于单一,对影响交通的运行的因素考虑的不足,时段划分的精细化程度不足。
发明内容
本发明的目的在于提供一种交叉口信号控制时段划分方法,该方法划分的时段精细化程度高,精确可靠,且使用灵活。
为实现上述目的,本发明所采取的技术方案为:
一种交叉口信号控制时段划分方法,所述交叉口信号控制时段划分方法,包括以下步骤:
获取交叉口一天的过车数据,并根据预设的时间粒度Δt将过车数据划分为若干个区间车辆数;
建立交叉口信号控制时段划分的最多时段数和最少时段数;
预设交叉口信号控制时段划分得到的时段个数为m,将若干区间车辆数根据时段个数m对应的时间区间进行汇总,得到m个过车数据集,根据m与最多时段数和最少时段数的关系,将m个过车数据集进行迭代分割与合并,直至迭代次数达到迭代上限或不满足分割条件与合并条件,最终得到n个过车数据集;
根据n个过车数据集计算每个过车数据集所对应的时间跨度,根据时间跨度将一天的24小时划分为n个时段,完成交叉口信号控制时段的划分。
作为优选,所述建立交叉口信号控制时段划分的最多时段数和最少时段数,包括:
建立交叉口信号控制时段划分得到的时段个数的最多时段数Cmax和最少时段数Cmin;
设定每个时段中包含的区间车辆数的个数的最小值为K,且满足关系3≤Cmin≤Cmax≤(24×60/(Δt×K)),其中Δt为时间粒度,单位为分钟。
作为优选,所述预设交叉口信号控制时段划分得到的时段个数为m,将若干区间车辆数根据时段个数m对应的时间区间进行汇总,得到m个过车数据集,包括:
预设交叉口信号控制时段划分得到的时段个数为m,且取m=Cmin,设定m个时段中除时段m-1以外的各时段均对应包含K个区间车辆数,依次将若干区间车辆数进行汇总,得到m个过车数据集;
其中,时段1的过车数据集为F1={v1,v2,…,vK};
时段i的过车数据集为Fi={v(i-1)K+1,v(i-1)K+2,…,vi×K},i∈{2,3,…,m-2};
时段m的过车数据集为Fm={vm-K+1,vm-K+2,…,vm};
剩余的区间车辆数即为时段m-1对应的过车数据集Fm-1中的数据;
汇总m个过车数据集,得到时段为m的过车数据集集合G={F1,F2,…,Fm};
根据公式Fi为过车数据集Fi,fj和fr为过车数据集Fi中的元素;逐一求取过车数据集集合G中过车数据集的类距离,得到类距离向量D=(d1,d2,…,dm);
设定时段分割标记向量为A=(a1,a2,…,am),且预设A=(1,1,1,…,1),时段分割标记向量A中的元素个数与时段个数m相同,且与每一时段相对应,时段分割标记向量A中的元素值为1表示对应的时段可分割,为0表示对应的时段不可分割。
作为优选,所述根据m与最多时段数和最少时段数的关系,将m个过车数据集进行迭代分割与合并,直至迭代次数达到迭代上限或不满足分割条件与合并条件,最终得到n个过车数据集,包括:
若迭代次数不超过迭代上限,则将类距离向量D与时段分割标记向量A中的元素对应相乘,得到向量B,B={bi|bi=di×ai,i∈{1,2,...,m}};获取向量B中元素值最大的元素对应的下标X,X=min{j|bj=max(bi),i∈{1,2,..,m}};
若下标X对应的元素bX>0,则下标X对应的过车数据集FX可以分割,并进入数据分割流程;若下标X对应的元素bX=0,则过车数据集集合G中的每一过车数据集均不可分割,则进入数据合并流程;
若迭代次数超过迭代上限,则将最新的m值赋予n,得到n个过车数据集,并得到最终的过车数据集集合G′={F1,F2,…,Fn}。
作为优选,所述数据合并流程,包括:
预设整数t的初始值为t=1,预设合并执行次数h的初始值为h=0;
执行条件判断:若(t≤m-1)&&(m>Cmin),则进行合并流程判断;否则进行合并执行次数h判断,在进行合并执行次数h判断时,若h=0,则结束整个迭代分割与合并的流程;若h≠0,则根据h的值累加迭代次数,并重新判断过车数据集集合G中的过车数据集是否可分割;
在进行合并流程判断时,令Fnew=Ft∪Ft+1,Ft和Ft+1为过车数据集集合G中的元素,并计算过车数据集合Fnew、Ft和Ft+1的类距离分别为dnew、dt和dt+1,同时得到过车数据集集合G中的最大类距离为dmax=max(di),i∈{1,2,..,m};
若dnew=dmax且dnew<dt+dt+1,或dnew<dmax,则令Ft=Fnew,dt=dnew,并删除集合Ft+1和类距离dt+1,同时令m=m-1,h=h+1,更新过车数据集集合G,并重新执行条件判断;否则,令t=t+1,并重新执行条件判断。
作为优选,所述数据分割流程,包括:
计算过车数据集FX中包含的区间车辆数的个数q,若q等于个数最小值K,则进一步判断过车数据集集合G中过车数据集的个数m与最少时段数Cmin的关系,若m>Cmin,则对过车数据集FX执行第一分割流程;否则,令过车数据集FX对应的时段分割标记元素aX=0,累计一次迭代次数并重新判断过车数据集集合G中的过车数据集是否可分割;
若(q>K)&&(q<2K),则对过车数据集FX执行第二分割流程;
若q≥2K,则对过车数据集FX执行第三分割流程。
作为优选,第一分割流程,包括:
将过车数据集FX分割为两部分得到FX1和FX2,分割方法为:获取过车数据集FX中的元素最大值和元素最小值分别对应的元素的下标,元素最小值对应的元素的下标为元素最大值对应的元素的下标为令起始下标is=min(imin,imax),结束下标ie=max(imin,imax);
时段分割条件计算:按照起始下标is进行分割,得到FX1={fj|fj∈FX,j∈{1,2,...,is}},FX2={fj|fj∈FX,j∈{is+1,...,q}};获取与时段X左相邻的时段X-1的过车数据集FX-1,并计算集合FX-1∪FX1的类距离获取与时段X右相邻的时段X+1的过车数据集FX+1,并计算集合FX+1∪FX2的类距离
若则令过车数据集FX-1=FX-1∪FX1,令过车数据集FX+1=FX+1∪FX2;令m=m-1,更新过车数据集集合G,并计算更新后的过车数据集集合G对应的类距离向量D、时段分割标记向量A和向量B,累计一次迭代次数并重新判断过车数据集集合G中的过车数据集是否可分割;
否则,判断起始下标is和结束下标ie的关系,若is≥ie,则令过车数据集FX对应的时段分割标记元素aX=0,累计一次迭代次数并重新判断过车数据集集合G中的过车数据集是否可分割;若is<ie,则令is=is+1,并重新进行时段分割条件计算。
作为优选,第二分割流程,包括:
将过车数据集FX分割为两部分得到FX1和FX2,分割方法为:获取过车数据集FX中的元素最大值和元素最小值分别对应的元素的下标,元素最小值对应的元素的下标为元素最大值对应的元素的下标为令起始下标is=min(imin,imax),结束下标ie=max(imin,imax);
时段分割条件计算:按照起始下标is进行分割,得到FX1={fj|fj∈FX,j∈{1,2,...,is}},FX2={fj|fj∈FX,j∈{is+1,...,q}},获取过车数据集FX1中包含的区间车辆数的个数q1,获取过车数据集FX2中包含的区间车辆数的个数q2;
若q1≥K,则计算过车数据集FX1的类距离dX1,获取与时段X右相邻的时段X+1的过车数据集FX+1,并计算集合FX+1∪FX2的类距离
若则令过车数据集FX=FX1,令过车数据集FX+1=FX+1∪FX2,更新过车数据集集合G,并计算更新后的过车数据集集合G对应的类距离向量D,初始化时段分割标记向量A中的元素均为1,累计一次迭代次数并重新判断过车数据集集合G中的过车数据集是否可分割;否则判断起始下标is和结束下标ie的关系,若is≥ie,重新对过车数据集FX执行第一分割流程;若is<ie,则令is=is+1,并重新进行时段分割条件计算;
若q2≥K,则计算过车数据集FX2的类距离dX2,获取与时段X左相邻的时段X-1的过车数据集FX-1,并计算集合FX-1∪FX1的类距离
若则令过车数据集FX=FX2,令过车数据集FX-1=FX-1∪FX1,更新过车数据集集合G,并计算更新后的过车数据集集合G对应的类距离向量D,初始化时段分割标记向量A中的元素均为1,累计一次迭代次数并重新判断过车数据集集合G中的过车数据集是否可分割;否则判断起始下标is和结束下标ie的关系,若is≥ie,重新对过车数据集FX执行第一分割流程;若is<ie,则令is=is+1,并重新进行时段分割条件计算;
若(q1<K)&&(q2<K),则判断起始下标is和结束下标ie的关系,若is≥ie,重新对过车数据集FX执行第一分割流程;若is<ie,则令is=is+1,并重新进行时段分割条件计算。
作为优选,第三分割流程,包括:
若过车数据集集合G中过车数据集的个数m与最少时段数Cmin的关系为m==Cmin,则执行第二分割流程;
否则,将过车数据集FX分割为两个集合得到FX1和FX2,分割方法为:获取过车数据集FX中的元素最大值和元素最小值分别对应的元素的下标,元素最小值对应的元素的下标为元素最大值对应的元素的下标为令起始下标is=min(imin,imax),结束下标ie=max(imin,imax);
时段分割条件计算:按照起始下标is进行分割,得到FX1={fj|fj∈FX,j∈{1,2,...,is}},FX2={fj|fj∈FX,j∈{is+1,...,q}},获取集合FX1中包含的区间车辆数的个数q1,获取集合FX2中包含的区间车辆数的个数q2,并计算集合FX1的类距离为dX1,集合FX2的类距离为dX2;
若(q1≥K)&&(q2≥K)且(dX1<dX)&&(dX2<dX),同时满足m<Cmax,则令过车数据集FX=FX1,并将集合FX2插入至过车数据集FX和过车数据集FX+1之间作为新的过车数据集,并更新m=m+1,更新过车数据集集合G,并计算更新后的过车数据集集合G对应的类距离向量D,初始化时段分割标记向量A中的元素均为1,累计一次迭代次数并重新判断过车数据集集合G中的过车数据集是否可分割;
否则,判断起始下标is和结束下标ie的关系,若is≥ie,重新对过车数据集FX执行第二分割流程;若is<ie,则令is=is+1,并重新进行时段分割条件计算。
作为优选,根据n个过车数据集计算每个过车数据集所对应的时间跨度,根据时间跨度将一天的24小时划分为n个时段,完成交叉口信号控制时段的划分,包括:
统计最终的过车数据集集合G′={F1,F2,…,Fn}中每一过车数据集中包含的区间车辆数的个数,得到对应的个数集合Q={q1,q2,…,qn};
获取预设的区间车辆数对应的时间粒度Δt,并将时间粒度Δt与个数集合Q中的每一元素相乘,得到对应的时间跨度集合P={p1,p2,…,pn};
根据一天的24小时的时间跨度向量,以00点00分为基准,在一天的00:00时刻上累计时间跨度集合P中的元素,得到最终的时段集合T;
T={00:00~T1,T1~T2,…,Tn-1-Tn},其中p1和pi为时间跨度集合中的元素。
本发明提供的交叉口信号控制时段划分方法,根据交叉口一天的过车数据,在预设的条件下进行多次数据的分割和合并,最终将过车数据划分为多个集合,并根据每一集合所对应的时间跨度,将一天划分为多个信号控制时段,该方法选用的过车数据接近当前时间,参考价值较高;且多次分割和合并后,所得到的划分结果精确度高;以较小的时间粒度开始数据的分割和合并,所得到的时段更为精细;只需获取交叉口的过车数据,不依赖其他附加数据,且通过调整预设的条件,即可改变划分策略,使得适应不同状况的交叉口,使用灵活。
附图说明
图1为本发明的交叉口信号控制时段划分方法的流程框图;
图2为本发明的划分流程的流程框图;
图3为本发明的数据合并流程的流程框图;
图4为本发明的第一分割流程的流程框图;
图5为本发明的第二分割流程的流程框图;
图6为本发明的第三分割流程的流程框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是在于限制本发明。
本实施例公开了一种交叉口信号控制时段划分方法,用于根据交叉口的过车数据,对交叉口的信号控制进行准确、精细的时段划分。
如图1所示,一种交叉口信号控制时段划分方法,包括以下步骤:
S1、数据采集
根据设置在交叉口的监控设备,获取交叉口一天(00:00~24:00)的过车数据,获取的过车数据可以是接近现在的任意一天的数据,当然最佳的数据是无意外情况发生时的一天的过车数据,获得过车数据后根据预设的时间粒度Δt将过车数据划分为若干个区间车辆数,区间车辆数的个数为(24×60/Δt)个。
时间粒度Δt即为最小时间单位,时间粒度Δt的单位为分钟,本实施例中设置时间粒度Δt为5分钟,在其他实施例中,时间粒度Δt可根据实际需要进行调整。
具体地,本实施例中对过车数据划分的一种方式如下:
获取交叉口时间为00:00~24:00的一天的过车数据;
取时间粒度Δt为5分钟,将一天的时间00:00~24:00划分为288个时间区间,得到时间区间集合T={00:00~00:05,00:05~00:10,…,23:55~24:00};
按照时间区间集合T中的各时间区间将一天的过车数据划分为288段,即按照时间区间集合T中各元素指定的时间段,获取该时间段中的过车数,得到288个区间车辆数,并形成区间车辆数集合F={v1,v2,…,vi,…,v288},其中vi表示第i个时间区间中交叉口的过车车辆数。
S2、条件设置
在进行时段划分调整之前,首先进行时段划分的条件设置,根据交叉口的实际情况调整条件,以得到最为准确,最合适的划分结果。
条件设置包括建立交叉口信号控制时段划分的最多时段数和最少时段数,由于一天的24小时可被划分的个数可大可小,为了避免过度划分或划分不够精细的现象出现,故需要设定时段划分的最多时段数和最少时段数。
具体地,建立交叉口信号控制时段划分得到的时段个数的最多时段数Cmax和最少时段数Cmin;设定每个时段中包含的区间车辆数的个数的最小值为K,且满足关系3≤Cmin≤Cmax≤(24×60/(Δt×K)),其中Δt为时间粒度,单位为分钟。
本实施例中Δt取5分钟时,关系式即为3≤Cmin≤Cmax≤(288/K),且初始默认Cmin=3,Cmax=int(24×60/(Δt×K))=int(288/K)。
由于区间车辆数对应的时间为一个时间粒度Δt,以本实施例时间粒度为5分钟为例,可知每个时段的最小时间跨度为5×K分钟。
初始化迭代次数为0,同时设定后续进行迭代分割和合并时的迭代上限值为itermax。
S3、划分流程
当过车数据准备完成且条件设置完成之后,开始进行时段的划分流程,划分流程的主要过程为:预设交叉口信号控制时段划分得到的时段个数为m,将若干区间车辆数根据时段个数m对应的时间区间进行汇总,得到m个过车数据集,根据m与最多时段数和最少时段数的关系,将m个过车数据集进行迭代分割与合并,直至迭代次数达到迭代上限或不满足分割条件与合并条件,最终得到n个过车数据集。
如图2所示,在划分流程中通过对原始的m个时段不断进行分割和合并,一步步优化之后能够得到最佳的时段划分结果。划分流程的具体过程如下:
S3.1、初始化
预设交叉口信号控制时段划分得到的时段个数为m,且取m=Cmin,设定m个时段中除时段m-1以外的各时段均对应包含K个区间车辆数,依次将若干区间车辆数进行汇总,得到m个过车数据集;K为每个时段中包含的区间车辆数的个数的最小值。
m个过车数据集中,时段1的过车数据集为F1={v1,v2,…,vK};
时段i的过车数据集为Fi={v(i-1)K+1,v(i-1)K+2,…,vi×K},i∈{2,3,…,m-2};
时段m的过车数据集为Fm={vm-K+1,vm-K+2,…,vm};
剩余的区间车辆数即为时段m-1对应的过车数据集Fm-1中的数据,即时段m-1的过车数据集为Fm-1=过车数据集集合G-∪Fi,{i|1,2,…,m-2,m},也就是所有的区间车辆数去除过车数据集F1至过车数据集Fm-2,以及过车数据集Fm中的元素之后剩余的区间车辆数,过车数据集Fm-1中的区间车辆数远大于K,将区间车辆数集中在过车数据集Fm-1中便于后续分割操作的进行,有利于得到更优的时段划分结果。
汇总m个过车数据集,得到时段为m的过车数据集集合G={F1,F2,…,Fm};
根据公式Fi为过车数据集Fi,fj和fr为过车数据集Fi中的元素;逐一求取过车数据集集合G中过车数据集的类距离,得到类距离向量D=(d1,d2,…,dm);类距离指对应过车数据集中两两元素之差的最大值。
设定时段分割标记向量为A=(a1,a2,…,am),且预设A=(1,1,1,…,1},时段分割标记向量A中的元素个数与时段个数m相同,且与每一时段相对应,时段分割标记向量A中的元素值为1表示对应的时段可分割,为0表示对应的时段不可分割。
S3.2、判断是否存在可以分割的时段
若迭代次数不超过迭代上限itermax,则将类距离向量D与时段分割标记向量A中的元素对应相乘,得到向量B,B={bi|bi=di×ai,i∈{1,2,...,m}};获取向量B中元素值最大的元素对应的下标X,X=min{j|bj=max(bi),i∈{1,2,..,m}};
若下标X对应的元素bX>0,则下标X对应的过车数据集FX可以分割,并进入数据分割流程,即进入步骤S3.4;若下标X对应的元素bX=0,则过车数据集集合G中的每一过车数据集均不可分割,则表示本次判断不满足分割条件,故进入数据合并流程,即进入步骤S3.3。
若迭代次数超过迭代上限itermax,则结束整个迭代分割与合并的流程,并将最新的m值赋予n,得到n个过车数据集,并得到最终的过车数据集集合G′={F1,F2,…,Fn}。
S3.3、数据合并流程
如图3所示,预设整数t的初始值为t=1,预设合并执行次数h的初始值为h=0;
S3.3.1、执行条件判断
若(t≤m-1)&&(m>Cmin),则进行合并流程判断,即进入步骤S3.3.2;
否则结束合并进行合并执行次数h判断,在进行合并执行次数h判断时,若h=0,则表示不满足分割条件的同时不满足合并条件,故结束整个迭代分割与合并的流程,并将最新的m值赋予n,得到n个过车数据集,并得到最终的过车数据集集合G′={F1,F2,…,Fn}。
若h≠0,则根据h的值累加迭代次数,并重新判断过车数据集集合G中的过车数据集是否可分割,即进入步骤S3.2,并按照步骤S3.2中的步骤向下执行;
S3.3.2、合并流程判断
在进行合并流程判断时,令Fnew=Ft∪Ft+1,Ft和Ft+1为过车数据集集合G中的元素,并计算过车数据集合Fnew、Ft和Ft+1的类距离分别为dnew、dt和dt+1,同时得到过车数据集集合G中的最大类距离为dmax=max(di),i∈{1,2,..,m};
若dnew=dmax且dnew<dt+dt+1,或dnew<dmax,则令Ft=Fnew,dt=dnew,并删除集合Ft+1和类距离dt+1,同时令m=m-1,h=h+1,更新过车数据集集合G,并重新执行条件判断,即进入步骤S3.3.1;否则,令t=t+1,并重新执行条件判断,即进入步骤S3.3.1。
S3.4、数据分割流程
计算过车数据集FX中包含的区间车辆数的个数q;
(1)、若q等于个数最小值K(q==K)
则进一步判断过车数据集集合G中过车数据集的个数m与最少时段数Cmin的关系,若m>Cmin,则对过车数据集FX执行第一分割流程,即进入步骤S3.5;否则,令过车数据集FX对应的时段分割标记元素aX=0,累计一次迭代次数,并重新判断过车数据集集合G中的过车数据集是否可分割,即进入步骤S3.2,并按照步骤S3.2中的步骤向下执行。
(2)、若(q>K)&&(q<2K)
则对过车数据集FX执行第二分割流程,即进入步骤S3.6。
(3)、若q≥2K
则对过车数据集FX执行第三分割流程,即进入步骤S3.7。
S3.5、第一分割流程
第一分割流程的执行步骤如图4所示。
S3.5.1、时段分割初始化
将过车数据集FX分割为两部分得到FX1和FX2,分割方法为:获取过车数据集FX中的元素最大值和元素最小值分别对应的元素的下标,元素最小值对应的元素的下标为元素最大值对应的元素的下标为令起始下标is=min(imin,imax),结束下标ie=max(imin,imax);进入下一步。
S3.5.2、时段分割条件计算
按照起始下标is进行分割,得到FX1={fj|fj∈FX,j∈{1,2,...,is}},FX2={fj|fj∈FX,j∈{is+1,...,q}};获取与时段X左相邻的时段X-1的过车数据集FX-1,并计算集合FX-1∪FX1的类距离获取与时段X右相邻的时段X+1的过车数据集FX+1,并计算集合FX+1∪FX2的类距离进入下一步。
S3.5.3、时段分割条件判断
若符合拆分条件,则进入下一步;否则,判断起始下标is和结束下标ie的关系,若is≥ie,则令过车数据集FX对应的时段分割标记元素aX=0,累计一次迭代次数,并重新判断过车数据集集合G中的过车数据集是否可分割,即进入步骤S3.2;若is<ie,则令is=is+1,并重新进行时段分割条件计算,即进入步骤S3.5.2。
S3.5.4、时段分割
则令过车数据集FX-1=FX-1∪FX1,令过车数据集FX+1=FX+1∪FX2并进入下一步,即将过车数据集FX1合并到过车数据集FX-1中,将过车数据集FX2合并到过车数据集FX+1中。由于过车数据集对应有不同的时段,故随着过车数据集的分割和合并相对应的也就是各时段的分割和合并。
S3.5.5、时段分割后续处理
由于将时段FX进行了分割且合并至其他时段中,故车数据集集合G中的元素减少一个,故令m=m-1,更新过车数据集集合G,并计算更新后的过车数据集集合G对应的类距离向量D、时段分割标记向量A和向量B,累计一次迭代次数,并重新判断过车数据集集合G中的过车数据集是否可分割,即进入步骤S3.2。
S3.6、第二分割流程
第二分割流程的执行步骤如图5所示。
S3.6.1、时段分割初始化
将过车数据集FX分割为两部分得到FX1和FX2,分割方法为:获取过车数据集FX中的元素最大值和元素最小值分别对应的元素的下标,元素最小值对应的元素的下标为元素最大值对应的元素的下标为令起始下标is=min(imin,imax),结束下标ie=max(imin,imax);进入下一步。
S3.6.2、时段分割条件计算
按照起始下标is进行分割,得到FX1={fj|fj∈FX,j∈{1,2,...,is}},FX2={fj|fj∈FX,j∈{is+1,...,q}},获取过车数据集FX1中包含的区间车辆数的个数q1,获取过车数据集FX2中包含的区间车辆数的个数q2;
(1)、若q1≥K
则计算过车数据集FX1的类距离dX1,获取与时段X右相邻的时段X+1的过车数据集FX+1,并计算集合FX+1∪FX2的类距离
若则令过车数据集FX=FX1,令过车数据集FX+1=FX+1∪FX2,更新过车数据集集合G,并计算更新后的过车数据集集合G对应的类距离向量D,初始化时段分割标记向量A中的元素均为1,累计一次迭代次数,重新判断过车数据集集合G中的过车数据集是否可分割,即进入步骤S3.2;否则进入步骤S3.6.3。
(2)、若q2≥K
则计算过车数据集FX2的类距离dX2,获取与时段X左相邻的时段X-1的过车数据集FX-1,并计算集合FX-1∪FX1的类距离
若则令过车数据集FX=FX2,令过车数据集FX-1=FX-1∪FX1,更新过车数据集集合G,并计算更新后的过车数据集集合G对应的类距离向量D,初始化时段分割标记向量A中的元素均为1,累计一次迭代次数,重新判断过车数据集集合G中的过车数据集是否可分割,即进入步骤S3.2;否则进入步骤S3.6.3。
(3)、若(q1<K)&&(q2<K)
则进入步骤S3.6.3。
S3.6.3、循环结束判断
判断起始下标is和结束下标ie的关系,若is≥ie,重新对过车数据集FX执行第一分割流程,即进入步骤S3.5;若is<ie,则令is=is+1,并重新进行时段分割条件计算,即进入步骤S3.6.2。
S3.7、第三分割流程
第三分割流程的执行步骤如图6所示。
若过车数据集集合G中过车数据集的个数m与最少时段数Cmin的关系为m==Cmin,则执行第二分割流程,即进入步骤S3.6;否则执行步骤S3.7.1。
S3.7.1、时段分割初始化
将过车数据集FX分割为两个集合得到FX1和FX2,分割方法为:获取过车数据集FX中的元素最大值和元素最小值分别对应的元素的下标,元素最小值对应的元素的下标为元素最大值对应的元素的下标为令起始下标is=min(imin,imax),结束下标ie=max(imin,imax);
S3.7.2、时段分割条件计算
按照起始下标is进行分割,得到FX1={fj|fj∈FX,j∈{1,2,...,is}},FX2={fj|fj∈FX,j∈{is+1,...,q}},获取集合FX1中包含的区间车辆数的个数q1,获取集合FX2中包含的区间车辆数的个数q2,并计算集合FX1的类距离为dX1,集合FX2的类距离为dX2;
若(q1≥K)&&(q2≥K)且(dX1<dX)&&(dX2<dX),同时满足m<Cmax,则令过车数据集FX=FX1,并将集合FX2插入至过车数据集FX和过车数据集FX+1之间作为新的过车数据集,并更新m=m+1,更新过车数据集集合G,并计算更新后的过车数据集集合G对应的类距离向量D,初始化时段分割标记向量A中的元素均为1,累计一次迭代次数,并重新判断过车数据集集合G中的过车数据集是否可分割,即进入步骤S3.2,并按照步骤S3.2中的步骤向下执行;否则进入下一步。
S3.7.3、循环结束判断
判断起始下标is和结束下标ie的关系,若is≥ie,重新对过车数据集FX执行第二分割流程,即进入步骤S3.6;若is<ie,则令is=is+1,并重新进行时段分割条件计算,即进入步骤3.7.2。
需要说明的是,文中所提及的进入下一步在未作特殊说明的情况下,即表示按照正常流程执行当前步骤的后面一步,不作跳转执行。
且在将最新的m值赋予n,得到n个过车数据集,并得到最终的过车数据集集合G′={F1,F2,…,Fn}时,由于多次分割和合并后,会得到一个最新的过车数据集集合G={F1,F2,…,Fm},为避免混淆出错,新建一个具有n个元素的集合G′,并将最新的过车数据集集合G中的元素对应值赋值给集合G′,得到最终的过车数据集集合G′={F1,F2,…,Fn}。
S4、得出结果
在不断进行划分流程执行后,最终得到一个过车数据集集合G′={F1,F2,…,Fn},该集合中存在n个过车数据集,最终根据n个过车数据集计算每个过车数据集所对应的时间跨度,根据时间跨度将一天的24小时划分为n个时段,完成交叉口信号控制时段的划分。
具体地,在得到时段划分结果时,首先统计最终的过车数据集集合G′={F1,F2,…,Fn}中每一过车数据集中包含的区间车辆数的个数,得到对应的个数集合Q={q1,q2,…,qn};个数集合中的元素值为,例如5个、10个、8个等。
获取预设的区间车辆数对应的时间粒度Δt,并将时间粒度Δt与个数集合Q中的每一元素相乘,得到对应的时间跨度集合P={p1,p2,…,pn},pi=qi×Δt,i={1,2,3,…,n};以本实施例中时间粒度Δt取5分钟为例,可得时间跨度集合中的元素值为,例如5×5=25分钟、10×5=50分钟、8×5=40分钟等。
根据一天的24小时的时间跨度向量,以00点00分为基准,在一天的00:00时刻上累计时间跨度集合P中的元素,得到最终的时段集合T,
T={00:00~T1,T1~T2,…,Tn-1-Tn},其中p1和pi为时间跨度集合中的元素。
时段集合计算时例如T1=00:00+25分钟=00:25,即表示在一天的时刻00点00分上累计25分钟,得到时刻00点25分,即得到时段集合中的时段1的时间区间为00:00~00:25分;再如T2=T1+50=00:25+50分钟=01:15,即表示在一天的T1时刻,即00点25分时刻上累计50分钟,得到时刻01点15分,即得到时段集合中的时段2的时间区间为00:25~01:15分,以此类推得到所有时段对应的时间区间,即完成对交叉口信号控制时段的划分。
需要说明的是,由于编辑器的原因,本发明中所涉及的字母存在斜体与非斜体状态,对于同一字母其斜体和非斜体均指该字母,即表示含义相同。例如时间跨度集合P={p1,p2,…,pn}中的p1和p1表示的含义相同。
本发明提供的交叉口信号控制时段划分方法,根据交叉口一天的过车数据,在预设的条件下进行多次数据的分割和合并,最终将过车数据划分为多个集合,并根据每一集合所对应的时间跨度,将一天划分为多个信号控制时段,该方法选用的过车数据接近当前时间,参考价值较高;且多次分割和合并后,所得到的划分结果精确度高;以较小的时间粒度开始数据的分割和合并,所得到的时段更为精细;只需获取交叉口的过车数据,不依赖其他附加数据,且通过调整预设的条件,即可改变划分策略,使得适应不同状况的交叉口,使用灵活。
在一个实施例中,提供了一种计算机设备,即一种交叉口信号控制时段划分系统,该计算机设备可以是终端,其内部结构可以包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现上述交叉口信号控制时段划分方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本实施例的交叉口信号控制时段划分系统,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现所述的交叉口信号控制时段划分方法。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。