一种必经点路由路径选择方法与流程

文档序号:12889973阅读:1026来源:国知局
一种必经点路由路径选择方法与流程

本发明涉及计算机应用技术领域,具体地说是一种必经点路由路径选择方法。



背景技术:

现有技术中,在基于internet的通信子网中实现数据传输最根本的问题就是根据某种路由算法选择合适的通信信道,路由算法的目的就是试图使网络流量最大,且使网络的平均分组时延最小。但是随着通信技术的发展,对路由算法又提出了新的难题:在路由路径选择的过程中,一个或者多个路由节点是整条路径的关键点,无论路由路径如何选择,这点关键点是必须经过的。即必经点路由路径选择问题,简单的说就是在有向加权图中寻找一条优先经过必经点的最短路径问题,或称必经点最短路径问题。

由于必经点集的存在,在路径搜索的过程中势必要牺牲路径长度的最优性而优先满足必经点集的遍历。而这种智能搜索是dijkstra和floyd都无法满足的。

蚁群算法在tsp问题中得到了有效应用。如桂林电子科技大学韦联旺、段复建发表的名称为“带参数信息素的蚁群算法”的论文中,以tsp问题为例,为验证方法,证明了其新蚁群算法的可行性,该论文中实现了参数优化,本身tsp只是一个验证,但是对于一个必经点最短路径问题,蚁群算法往往得不到一个最优解。这是因为蚁群算法在tsp搜索时退出条件是遍历所有的点,而必经点最短路径问题的退出条件是到达终点。因此,直接使用蚁群算法会得到一条到达终点的最优或较优路径,并不能保证经过所有的必经点,能否经过必经点,实际上取决于必经点是都在那条绝对最优的路径上。故而,直接使用蚁群算法是难以解决问题的。

综上所述,dijkstra和floyd都无法满足必经点最短路径的路径搜索,而直接使用蚁群算法甚至难以得到满足条件的初解。

因此,需要一种新的能够解决必经点最短路径的路径搜索问题的技术。



技术实现要素:

本发明的技术任务是针对以上不足之处,提供一种必经点路由路径选择方法。

一种必经点路由路径选择方法,其实现过程为:首先获取待搜索的路由路径;然后将非必经路由节点串联到必经路由节点之间,形成新的搜索路径;最后通过蚁群算法搜索路径,找到必经点最短路径。

所述待搜索的路由路径通过以下方式获取:读取路由信息,在读取的路由信息中确定所有路由节点,并在该路由节点中找出路径搜索的起点、终点、必经点和非必经点。

读取路由信息的具体过程为:通过读取路由信息获取每个路由节点间是否存在路径以及路径长度,并确定路径搜索的起点、终点、必经点,通过起点、终点、必经点间存在的可行的有向路径,构造一张有向加权图。

所述将非必经路由节点串联到必经路由节点是指通过floyd算法,将非必经点串联必经点,使必经点最短路径问题转化成一个以必经点、起点、终点为集合的tsp问题,同时将插入的非必经点与所述必经点、起点、终点形成新的有向加权图,当通过蚁群算法进行搜索时,从该新的有向加权图中找到必经点最短路径。

将路径搜索问题转化成一个tsp问题的过程为:

将路由信息中所有节点的集合配置为a,将必经点集、起点、终点配置成另一个集合b,b∈a;

以b作为关键点,将a-b中的点不断插入,通过floyd算法获得b集合中任意两点间的最短路径,从而形成新的以b为基础的有向加权图。

通过蚁群算法搜索路径的过程为:

首先初始化蚁群,将所有蚂蚁置于搜索起点上;

进行蚁群迭代搜索,找到所有路径;

进行蚁群筛选,找出所有经过必经点并到达终点的蚂蚁,并在其中寻找最短路径的蚂蚁;

所有路径进行信息素更新;

判断是否满足蚂蚁结束条件,若是,输出最优解,该最优解即为最短路径,若否,返回蚁群迭代搜索的步骤继续执行。

在初始化蚁群的步骤中,以b中节点为基础的有向加权图作为为蚁群算法的搜索图,相对应的,τi路径距离信息是b为基础的有向加权图中的全值;初始化蚁群的步骤还包括初始化以下蚁群参数:距离权重参数α、信息素权重参数β,信息素挥发率ρ,信息素总量m,蚁群蚂蚁数n,将信息素均匀初始化在每条可行路径上,即赋予τi定值。

所述蚁群迭代搜索的过程是指:蚁群中的每只蚂蚁依次完成一次独立的搜索,在搜索过程中,从起点出发,对每个节点,根据路径长度、信息素的值依据以下公式计算出该节点每条出路径的选择概率:

按照轮盘选择,依概率选择一条路径,不断执行,直到这只蚂蚁走到终点或者已经没有不成环路的路径可以选择,当所有蚂蚁都执行完毕,迭代结束。

所述蚁群筛选是指在每次迭代后,通过遍历每一只蚂蚁,筛选出通过所有必经点且到达终点的蚂蚁,并在其中寻找那只路径最短的蚂蚁,如果存在这只蚂蚁,将其信息保留下来,并进行信息素更新。

信息素更新通过以下公式实现:

其中,

结合上述公式,所述信息素更新分成以下两步:

第一步,对之前已经存留的信息素τi(n)按照挥发率相应的减少,公式中,ρ即为挥发率;

第二步,根据本次迭代,在原图中洒下信息素其中n是蚂蚁的数量,是第k只蚂蚁对路径i贡献的信息素增量,信息素的增量跟这次路径搜索的总长度lk成反比。

本发明的一种必经点路由路径选择方法和现有技术相比,具有以下有益效果:

本发明的一种必经点路由路径选择方法,基于floyd算法和蚁群算法获取必经点路由路径,可以实现在保证必经点都通过的前提下最短路径的选择,大大减小蚁群算法的搜索规模,本发明基于tsp的解决思想,将必经点集作为关键节点,作为tsp的结点,从而利用floyd构造新图,降低问题复杂度,实用性强,适用范围广泛,易于推广。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

附图1为本发明的具体实施流程图。

附图2为本发明实施例中原始有向加权图。

附图3为本发明实施例中基于floyd算法处理后的有向加权图。

具体实施方式

为了使本技术领域的人员更好地理解本发明的方案,下面结合具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如附图1所示,本发明提供一种必经点路由路径选择方法,使用floyd算法缩小图的规模,将必经点集用非必经点串联,从而将必经点最短路径问题转化成一个以必经点、起点、终点为集合的tsp问题,再使用蚁群算法进行搜索,从而达到必经点最短路径的搜索目的。

其中,dijkstra算法是从一个顶点到其余各顶点的最短路径算法,解决的是有向加权图中的最短路径问题。其主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。

floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的有向加权图中多源点之间最短路径的算法,与dijkstra算法类似,可以求出任意两点间的最短路径最优值。

蚁群算法是一种用来寻找优化路径的概率型算法,这种算法具有分布计算、信息正反馈和启发式搜索的特征,本质上是进化算法中的一种启发式全局优化算法。

tsp问题,即旅行商问题又译为旅行推销员问题、货郎担问题,是数学领域中著名问题之一。假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值。本发明提出了一种一种基于floyd算法和蚁群算法的必经点路由路径选择方法,可以实现在有向加权图中寻找一条优先经过必经点的最短路径。

其实现过程为:

首先获取待搜索的路由路径;然后将非必经路由节点串联到必经路由节点之间,形成新的搜索路径;最后通过蚁群算法搜索路径,找到必经点最短路径。

所述待搜索的路由路径通过以下方式获取:读取路由信息,在读取的路由信息中确定所有路由节点,并在该路由节点中找出路径搜索的起点、终点、必经点和非必经点。

读取路由信息的具体过程为:通过读取路由信息获取每个路由节点间是否存在路径以及路径长度,并确定路径搜索的起点、终点、必经点,通过起点、终点、必经点间存在的可行的有向路径,构造一张有向加权图。如图2所示,图中数字即代表路由节点,节点2、19分别代表起点、终点,节点3、5、7、11、13、17为必经点集,箭头表示路由节点间存在可行的有向路径,图中所有路径均存在大小不一的权重,为了简化说明并未标出。该问题即期望寻找一条从节点2出发到节点19且途经所有必经点集的路径。

所述将非必经路由节点串联到必经路由节点是指通过floyd算法,将非必经点串联必经点,使必经点最短路径问题转化成一个以必经点、起点、终点为集合的tsp问题,同时将插入的非必经点与所述必经点、起点、终点形成新的有向加权图,当通过蚁群算法进行搜索时,从该新的有向加权图中找到必经点最短路径。

将路径搜索问题转化成一个tsp问题的过程为:

将路由信息中所有节点的集合配置为a,将必经点集、起点、终点配置成另一个集合b,b∈a,即路由信息中,所有节点的集合为a={0-19},将必经点集{3,5,7,11,13,17}、起点{2}、终点{19}构造一个集合,记为b={2,3,5,7,11,13,17,19}(b∈a),则集合c=a-b={0,1,4,6,8,9,10,12,14,15,16,18};

以b作为关键点,将a-b中的点不断插入,通过floyd算法获得b集合中任意两点间的最短路径,从而形成新的以b为基础的有向加权图。与传统的floyd算法不同,在求解b集合任意两点x1,x2间的最短路径时,传统的floyd算法是将b集合x1、x2以外的点依次插入,如果这使得x1-x2的路径权重降低,则认为新插入的点是x1,x2最短路径上的点。由此,求得集合b两两最短路径。而此处使用floyd算法,是将集合c中的点不断插入,逐步优化最短路径。从而获得b集合中任意两点间的绝对最短路径。例如:求2-3的最短路径时,发现存在集合c中的点15、18,当15、18插入时,2-3的权重降低,则求得最短路径2-15-18-3;再如:5-17本不存在路径,但由于集合c中点6的插入,使得5-17存在最优路径5-6-17。利用集合b两两点间的最短路径,即可构成一张新有向加权图,如图3所示,图3仅为示意图。

将路径搜索问题转化成一个tsp问题后,寻找一条从节点2出发到节点19且途经所有必经点集的路径的问题便转换成在图3上寻找一条节点2到节点19的最短路径,但是需要遍历所有的点。从图中可以看出,问题规模大大降低,问题难度也变为一个经典的tsp问题,可以通过蚁群算法优化求解。

通过蚁群算法搜索路径的过程为:

首先初始化蚁群,将所有蚂蚁置于搜索起点上;

进行蚁群迭代搜索,找到所有路径;

进行蚁群筛选,找出所有经过必经点并到达终点的蚂蚁,并在其中寻找最短路径的蚂蚁;

所有路径进行信息素更新;

判断是否满足蚂蚁结束条件,若是,输出最优解,该最优解即为最短路径,若否,返回蚁群迭代搜索的步骤继续执行。

在初始化蚁群的步骤中,以b中节点为基础的有向加权图作为为蚁群算法的搜索图,相对应的,τi路径距离信息是b为基础的有向加权图中的全值;初始化蚁群的步骤还包括初始化以下蚁群参数:距离权重参数α、信息素权重参数β,信息素挥发率ρ,信息素总量m,蚁群蚂蚁数n,将信息素均匀初始化在每条可行路径上,即赋予τi定值。

所述蚁群迭代搜索的过程是指:蚁群中的每只蚂蚁依次完成一次独立的搜索,在搜索过程中,从起点出发,对每个节点,根据路径长度、信息素的值依据以下公式计算出该节点每条出路径的选择概率:

按照轮盘选择,依概率选择一条路径,不断执行,直到这只蚂蚁走到终点或者已经没有不成环路的路径可以选择,当所有蚂蚁都执行完毕,迭代结束。

所述蚁群筛选是指在每次迭代后,通过遍历每一只蚂蚁,筛选出通过所有必经点且到达终点的蚂蚁,并在其中寻找那只路径最短的蚂蚁,如果存在这只蚂蚁,将其信息保留下来,并进行信息素更新。

所述信息素更新分为两步:第一步,对之前已经存留的信息素按照挥发率,减少一部分,旨在避免蚁群陷入局部最优解。第二步,根据本次迭代,在原图中洒下信息素,信息素的量跟这次路径搜索的总长度成反比,旨在最优路径在此次迭代中获得信息素更多,更具优势,使得在下次迭代中,有更高的概率继续选择相同的路径,从而将路径选择向全局最优解靠拢。

信息素更新通过以下公式实现:

其中,

结合上述公式,所述信息素更新分成以下两步:

第一步,对之前已经存留的信息素τi(n)按照挥发率相应的减少,公式中,ρ即为挥发率;

第二步,根据本次迭代,在原图中洒下信息素其中n是蚂蚁的数量,是第k只蚂蚁对路径i贡献的信息素增量,信息素的增量跟这次路径搜索的总长度lk成反比。

最后重复蚁群迭代、蚁群筛选和信息素更新的步骤,直到迭代所得路径满足条件。

通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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