一种面向动态城市交通路网的快速路径规划方法与流程

文档序号:22113344发布日期:2020-09-04 15:18阅读:436来源:国知局
一种面向动态城市交通路网的快速路径规划方法与流程

本发明属于计算机科学和智能交通技术领域,涉及一种路径规划方法,具体涉及一种面向动态城市交通路网的快速路径规划方法。



背景技术:

新时期下,城市化的迅速发展使越来越多的人口集中到城市,给城市交通路网带来了巨大的交通需求,由此引发的交通拥堵问题给城市发展造成巨大困扰,为车辆提供路径规划是缓解交通拥堵和提高交通通行效率的重要举措。很多路径规划方法为了简化问题,选择忽视城市交通的时间依赖的属性,把城市交通路网中路径规划问题当作静态最短路径问题求解,但不可否认的是城市交通系统中时间依赖性是真实存在的,并对路径规划决策产生重要影响。因此,时间依赖的最短路径算法对于城市交通路网中路径的合理规划具有重要意义。

传统的网络模型中,可以证明最短路径的子路径同样也是该子路径头尾节点之间的最短路径,因此静态最短路径算法在求解传统网络模型时满足无后效性。不同于传统的网络模型,时间依赖的网络模型是随时间动态变化的,如果仍然在时间依赖的网络模型中使用静态最短路径算法,则必须知道当前阶段之前的一系列阶段的状态才能做好下一步的决策,而且容易陷入局部最优的窠臼。

很多研究为了降低问题的复杂性忽视交通流的时间依赖性,假定道路行驶成本和交通流的关系是独立于时间的,因此无论何时出发其推荐的路径基本保持不变,但在动态城市交通路网中需要正视交通路网中客观存在的时间依赖性。交通路网中时间依赖性产生原因是,城市交通路网是所有交通参与者共同博弈的系统,路网中交通需求随时间变化而波动,而路网的通行能力又受交通需求的影响,最终表现在道路行驶成本随时间变化。最早研究时间依赖网络中的最短路问题的是cooke等人,他们首次提出时间依赖网络中的最短路径不仅和当前位置有关,还和当前时间有关。随后dreyfus等人为了避免因将时间离散化而导致的巨大空间开销,提出了一种改进的dijkstra算法,但不久被证明该算法只适用于满足一致性原则的路网中,若路网违背一致性原则就无法正确求解。demiryurek等人将交通路网分割成多个不重叠的区域,对区内和区外进行预计算,并使用基于改进的启发函数和后向搜索技术的a*算法,显著改善了求解时间依赖网络的最短路径的搜索效率,但无法适用在快速变化的网络中。鉴于大多数路径推荐研究基于的是静态的路网,李等人通过对历史交通数据的挖掘获得行驶经验并构建了时间依赖的路径推荐模型,能更有效的避免交通拥堵和改善交通体验。城市交通路网交通需求具有很高的随机性质,因此如何在随机网络中规划时间依赖的可信路径同样得到大量研究和关注。例如,chen等人提出了在给定出发时间的动态交通路网中求解最早到达时间的时间依赖的“下班”算法和在给定到达时间的动态交通路网中求解最晚出发时间的时间依赖的“上班”算法。



技术实现要素:

本发明的目的在于基于两种动态规划模型提出了两种对应的求解算法,分析了两种算法具备的优势和不足,提出了一种自适应起终点矩阵选择最优计算策略从而大幅提高计算效率的时间依赖的最短路径算法。

本发明所采用的技术方案是:一种面向动态城市交通路网的快速路径规划方法,其特征在于,包括以下步骤:

步骤1:基于第一种动态规划模型构建rsa算法;

首先对于任意节点x和任意时刻t,对fx(t)按照下式赋初始值:

fx(t)=∞

其中,fx(t)表示t时刻从x节点出发到达目的点y需要的时间,路网中的十字路口为节点;

然后对于任意节点x和任意时刻t,如果fx(t)的值未知,则调用rsa(x,t)函数;

rsa(x,t)函数中,如果fx(t)已知则停止执行并返回调用处,否则遍历x的任意邻居节点y,调用并等待返回,如果则令其中表示t时刻从节点x出发并到达节点y所需要的时间;

步骤2:基于第二种动态规划模型构建fsa算法;

步骤2.1:路网数据预处理;

令时间依赖的路网用g=(v,e,t,c)表示;其中,v={v1,v2,...,vn}表示节点集合,n为节点个数;e表示节点间的边集合,对于任意vi,vj节点,eij∈e表示两节点之间的边;表示离散的时间集合,σ表示时间粒度的大小,是一个比路网中所有用户最晚到达时刻还大的时刻;c表示路网道路在不同时刻的行驶时间的集合,表示t时刻从节点x出发并到达节点y所需要的时间;路网中的十字路口为节点;

在时间依赖的路网g中,为了计算从x节点出发在给定时刻到达y节点的最短路径,定义gx(t)表示从x节点出发并在t时刻到达x节点的最晚出发时间,则bellman方程式:

其中,t′表示任意时刻;

gy(0),gy(1),gy(2),…,gy(t)为bellman方程式的最终解,gy(t)表示从x节点出发在t时刻到达y节点的最晚出发时间,可获得从x节点出发在t时刻到达y节点的最短路径;

的组合[x,t]定义成状态,则所有状态的个数为|v|×|t|,状态是基本单元,将令gx(t)≠-1的状态定义为有意义的状态,因为令gx(t)≠-1的状态才可用于拓展其它状态,反之,将令gx(t)=-1的状态定义为无意义的状态;

对路网数据进行预处理,具体包括以下子步骤:

步骤2.1.1:对c矩阵进行预处理得到d矩阵;

时间集合中,令应足够大;确定的值后,依照下式对c矩阵进一步处理得到d矩阵以解决边界问题;

给d矩阵中超过时间集合边界的元素赋值为负数,表示这些元素的存在无意义;

步骤2.1.2:对令gx(t)=-1;

步骤2.1.3:对令gx(t)=t;

步骤2.1.4:初始化拓展队列初始化追溯表其中,拓展队列queue由等待拓展的状态组成,追溯表come记录每个子状态的父状态,子状态由父状态拓展得到;

步骤2.2:令变量t由大到小遍历t时间集合,如果遍历结束则执行步骤2.11;否则继续往下执行步骤2.3:

步骤2.3:把[x,t]加入到拓展队列queue中;

步骤2.4:若则返回步骤2.2;否则继续往下执行步骤2.5;

步骤2.5:取出拓展队列queue中任意元素[x,t];

步骤2.6:遍历x的任意邻居节点y,若遍历结束则返回步骤2.4;否则继续往下执行步骤2.7;

步骤2.7:

步骤2.8:如果gx(t)≤gy(t′),返回步骤2.6;否则继续往下执行步骤2.9;

步骤2.9:gy(t′)=gx(t),come[y,t′]=[x,t];

步骤2.10:如果[y,t′]不在拓展队列queue中,将[y,t′]加入到拓展队列queue。返回步骤2.6;

步骤2.11:回溯追溯表come表输出t0时刻x节点到y节点的时间依赖的最短路径;

步骤3:根据路网拓扑信息和起终点矩阵构造二分图,其中左、右点集合分别用x和y表示;

步骤4:使用匈牙利算法计算二分图的最大匹配;

步骤5:在二分图的最大匹配中找到能覆盖二分图所有边的最少的点;

从y集合所有没有被匹配的节点出发,不断尝试拓展未匹配边、匹配边的交错路,在拓展的过程将遇到的x和y节点进行染色;

步骤6:对x集合中被染色的节点使用fsa算法求解;

步骤7:对y集合中未被染色的节点使用rsa算法求解。

相对于现有技术,本发明的有益效果是:在求解时间依赖的最短路径时,rsa算法和fsa算法虽然各有其适用的起终点矩阵,但无法在更广泛的起终点矩阵中获得很快的求解速度,为了加快问题的求解效率,可以首先对起终点矩阵特征进行判定,然后根据特征的不同决定选择何种算法。但是该方案存在两个问题,第一,若起终点矩阵规模巨大,大多数情况下无法直接判断rsa算法和fsa算法的优劣。第二,rsa算法和fsa算法适用的场景比较单一,而起终点矩阵非常多样,只有在少数场景下rsa算法和fsa算法的性能表现有较明显的差异,在大多数场景下rsa算法和fsa算法的性能表现没有明显的差异。相比于rsa算法或fsa算法的单独使用,本发明能综合rsa算法和fsa算法的优势,并克服rsa算法和fsa算法的不足,通过自适应起终点矩阵选择最佳计算策略从而大幅提高计算效率。

附图说明

图1为本发明实施例的流程图;

图2为本发明实施例的简单路网结构图;

图3为本发明实施例的rsa算法特性二分图表示;

图4为本发明实施例的fsa算法特性二分图表示;

图5为本发明实施例的特征略复杂的起终点矩阵二分图表示;

具体实施方式

为了便于本领域普通技术人员理解和实施本发明,下面对本发明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。

新时期下,城市化的迅速发展使越来越多的人口集中到城市,给城市交通路网带来了巨大的交通需求,由此引发的交通拥堵问题给城市发展造成巨大困扰,为车辆提供路径规划是缓解交通拥堵和提高交通通行效率的重要举措。很多路径规划方法为了简化问题,选择忽视城市交通的时间依赖的属性,把城市交通路网中路径规划问题当作静态最短路径问题求解,但不可否认的是城市交通系统中时间依赖性是真实存在的,并对路径规划决策产生重要影响。因此,时间依赖的最短路径算法对于城市交通路网中路径的合理规划具有重要意义,存在很多数学模型用于求解时间依赖的最短路径,但众所周知,建立一个好的数学模型并不困难,困难的是建立一个不太复杂的模型以进行有效的优化。针对以上问题,本文基于两种动态规划模型提出了两种对应的求解算法,分析了两种算法具备的优势和不足,最后从理论上推导并提出了一种面向动态城市交通路网的快速路径规划方法,其能自适应起终点矩阵选择最优计算策略从而大幅提高计算效率。

请见图1,本发明提供的一种面向动态城市交通路网的快速路径规划方法,包括以下步骤:

步骤1:基于第一种动态规划模型构建rsa算法;

首先对于任意节点x和任意时刻t,对fx(t)按照下式赋初始值:

fx(t)=∞

其中,fx(t)表示t时刻从x节点出发到达目的点y需要的时间,路网中的十字路口为节点;

然后对于任意节点x和任意时刻t,如果fx(t)的值未知,则调用rsa(x,t)函数;

rsa(x,t)函数中,如果fx(t)已知则停止执行并返回调用处,否则遍历x的任意邻居节点y,调用并等待返回,如果则令其中,表示t时刻从节点x出发并到达节点y所需要的时间;

rsa算法的时间复杂度为o(nt),空间复杂度也为o(nt)。虽然rsa算法最初的目的是计算t0时刻x节点到y节点的时间依赖的最短路径,但算法还产生了一些附带的成果,即该算法还计算出任意节点在任意时刻出发到达y节点的最短路径。

以图2为例,假如需要求解0时刻从节点1出发到达节点5的最短路径,rsa算法还计算出任意节点在任意时刻出发到达5节点的最短路径。若将图2路网结构转化成如图3所示的二分图,则可以更明了的说明rsa算法的特性。其中黑色连线代表rsa算法的最初目的,即求解节点1到达节点5的时间依赖的最短路径,虚线代表rsa算法执行完成后顺带求解的其它节点到达节点5的时间依赖的最短路径。

步骤2:基于第二种动态规划模型构建fsa算法;

步骤2.1:路网数据预处理;

令时间依赖的路网用g=(v,e,t,c)表示;其中,v={v1,v2,...,vn}表示节点集合,n为节点个数;e表示节点间的边集合,对于任意vi,vj节点,eij∈e表示两节点之间的边;表示离散的时间集合,σ表示时间粒度的大小,是一个比路网中所有用户最晚到达时刻还大的时刻;c表示路网道路在不同时刻的行驶时间的集合,表示t时刻从节点x出发并到达节点y所需要的时间;路网中的十字路口为节点;

在时间依赖的路网g中,为了计算从x节点出发在给定时刻到达y节点的最短路径,定义gx(t)表示从x节点出发并在t时刻到达x节点的最晚出发时间,则bellman方程式:

其中,t′表示任意时刻。

gy(0),gy(1),gy(2),…,gy(t)为bellman方程式的最终解,gy(t)表示从x节点出发在t时刻到达y节点的最晚出发时间,可获得从x节点出发在t时刻到达y节点的最短路径;

的组合[x,t]定义成状态,则所有状态的个数为|v|×|t|,状态是基本单元,将令gx(t)≠-1的状态定义为有意义的状态,因为令gx(t)≠-1的状态才可用于拓展其它状态,反之,将令gx(t)=-1的状态定义为无意义的状态;

对路网数据进行预处理,具体包括以下子步骤:

步骤2.1.1:对c矩阵进行预处理得到d矩阵;

时间集合的大小对方程式涉及的状态空间有直接影响,令应该足够大,才能正确求解出答案,否则无法求解出答案。确定的值后,依照下式对c矩阵进一步处理得到d矩阵以解决边界问题;

道路的行驶时间不可能是负数,通过给d矩阵中超过时间集合边界的元素赋值为负数,表示这些元素的存在无意义。通过精简和明确d矩阵的规模,排除了到达时间超过时间集合t范围的路径,避免了求解方程式时的无效搜索。

步骤2.1.2:对令gx(t)=-1;

步骤2.1.3:对令gx(t)=t;

步骤2.1.4:初始化拓展队列初始化追溯表其中,拓展队列queue由等待拓展的状态组成,追溯表come记录每个子状态的父状态,子状态由父状态拓展得到;

本实施例在执行的过程中拓展队列queue中不断删除已有状态和加入新的状态,当拓展队列queue为空时方法运行结束;

步骤2.2:令变量t由大到小遍历t时间集合,如果遍历结束则执行步骤2.11;否则继续往下执行步骤2.3:

步骤2.3:把[x,t]加入到拓展队列queue中;

步骤2.4:若则返回步骤2.2;否则继续往下执行步骤2.5;

步骤2.5:取出拓展队列queue中任意元素[x,t];

步骤2.6:遍历x的任意邻居节点y,若遍历结束则返回步骤2.4;否则继续往下执行步骤2.7;

步骤2.7:

步骤2.8:如果gx(t)≤gy(t′),返回步骤2.6;否则继续往下执行步骤2.9;

步骤2.9:gy(t′)=gx(t),come[y,t′]=[x,t];

步骤2.10:如果[y,t′]不在拓展队列queue中,将[y,t′]加入到拓展队列queue。返回步骤2.6;

步骤2.11:回溯追溯表come表输出t0时刻x节点到y节点的时间依赖的最短路径;

fsa算法的时间复杂度为o(nt),空间复杂度也为o(nt)。观察fsa算法的计算过程,其最初目的是求解t0时刻从起始点x到给定目的点y的时间依赖的最短路径,为了实现这一目标,fsa算法的思路是掌握x到任意节点的最短路径,其附带结果是,求解了任意时刻从起始点x到任意节点的时间依赖的最短路径。

以图2为例,假如需要求解0时刻从节点1出发到达节点5的最短路径,fsa算法还计算出任意时刻从起始点1到任意节点的时间依赖的最短路径。若将图2路网结构转化成如图4所示的二分图,则可以更明了的说明fsa算法的特性。其中黑色连线代表fsa算法的最初目的,即求解节点1到达节点5的时间依赖的最短路径,虚线代表fsa算法执行完成后顺带求解的节点1到达任意节点的时间依赖的最短路径。

步骤3:根据路网拓扑信息和起终点矩阵构造二分图,其中左、右点集合分别用x和y表示;

步骤4:使用匈牙利算法计算二分图的最大匹配;

步骤4.1:遍历任意节点x;

步骤4.2:遍历x的任意邻居节点y,如果遍历结束返回步骤4.1:否则继续往下执行步骤4.3;

步骤4.3:如果y在增广路径上,返回步骤4.2;否则继续往下执行步骤4.4;

步骤4.4:将y加入增广路径;

步骤4.5:如果y是未覆盖点或者y的原匹配点能找到增广路径,则令y的匹配点为x,返回步骤4.1;否则返回步骤4.2。

步骤5:在二分图的最大匹配中找到能覆盖二分图所有边的最少的点;

从y集合所有没有被匹配的节点出发,不断尝试拓展未匹配边、匹配边的交错路,在拓展的过程将遇到的x和y节点进行染色。由于此时已经是二分图的最大匹配,故不可能存在增广路径,所以最后拓展的交错路一定以匹配边结束,且以y点结束。最后x中被染色的节点和y中没有被染色的节点就是能覆盖所有边的节点。

步骤6:对x集合中被染色的节点使用fsa算法求解;

步骤7:对y集合中未被染色的节点使用rsa算法求解。

以图5为例,为了计算该图中黑色实线代表的时间依赖的最短路径,面向动态城市交通路网的快速路径规划方法将把y集合中除2节点以外的节点染色,且只把x集合中的5节点染色。所以面向动态城市交通路网的快速路径规划方法将会分别调用一次fsa算法计算5节点出发的时间依赖的最短路径,调用一次rsa算法计算2节点为终点的时间依赖的最短路径,总共的执行次数为2次。但如果单独使用rsa算法或fsa算法,则总的执行次数都为4次。因此,相比于rsa算法或fsa算法的单独使用,面向动态城市交通路网的快速路径规划方法能综合rsa算法和fsa算法的优势,并克服rsa算法和fsa算法的不足,通过自适应起终点矩阵选择最佳计算策略从而大幅提高计算效率。

综上所述,本文提出的面向动态城市交通路网的快速路径规划方法能自适应起终点矩阵特征选择最佳的计算策略,无论在何种情况下都能取得很好的性能表现。

应当理解的是,本说明书未详细阐述的部分均属于现有技术。

应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。

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