本发明涉及一种路由算法,尤其是一种面向多层级网络的多qos路由约束的蚁群算法。
背景技术:
qos(qualityofservice,服务质量),用来解决网络延迟和阻塞等问题。
qos路由是基于网络可用资源和以满足服务qos要求为前提,进行路径选择的路由机制。qos路由与传统的求最短路径路由存在差异,它是一种能够适应具体业务需求的路由机制,利用qos路由主要为达到几个目标:(1)动态地选择目标路径,根据用户提出的qos服务请求,找到满足其约束条件的目标路径;(2)优化网络资源配置,并尽可能平衡网络负载,使全局网络资源利用率达到最优,从而使网络能够最大化响应其他服务请求;(3)对比传统路由机制,可以提升网络整体吞吐量,改善网络性能退化问题。
因此对qos路由算法提出了几个要求:(1)优化功能:路由算法具有找到最佳路径的能力,至于什么是最优,需要根据度量和权值来进行计算。(2)简洁性:算法应该尽量简洁,尽量减少软件或者硬件的开销,这在物理资源有限的场景中非常重要。(3)健壮性:路由算法会有时会处于不正常的环境,例如硬件故障、高负载、节点受损时,都能正常运行。(4)快速收敛:当网路某个异常事件引起路由不能正常工作时,路由信息就会更新,导致最佳路径计算重新进行,造成网络计算负载,因此路由算法要能尽快收敛。
目前,主流的路由算法有dijkstra算法,floyd算法等,但它们多面向静态路径规划;而在动态路径选择算法中,遗传算法是多目标优化算法,在执行效率方面并不适合路径选择问题;模拟退火算法缺点是全局搜索能力差,在解空间很大的时候,比较难以找到最优解;蚁群算法具有分布式计算能力,每个节点都只需存储和自己相邻节点信息,响应速度快,同时增加网络节点,也能表现良好的性能,并且已经证明蚁群算法的健壮性比较好,能在网络负载较高的条件下运用。因此蚁群算法被用来解决网络路由问题,其算法流程如图1所示;其算法步骤如下:
步骤s1,初始化参数:开始时每条边信息素浓度相等;
步骤s2,将各只蚂蚁放置各节点,各蚂蚁的禁忌表中初始值为对应的节点;
步骤s3,取1只蚂蚁,按公式(1.1)计算转移概率
步骤s4,计算该只蚂蚁留在各边的信息素量,该蚂蚁死去;
步骤s5,重复步骤s3和s4,直到m只蚂蚁都搜索完毕;m为最大蚂蚁数;
步骤s6,计算各边的信息素增量δτij和信息素量τij(t+1);
步骤s7,记录本次迭代的路径,更新当前的最优路径,清空禁忌表;
步骤s8,判断是否达到预定的最大迭代次数,或者是否出现停滞现象;若是,算法结束,输出当前最优路径;否则,转步骤s2,进行下一次迭代。
公式与参数说明如下:
其中,
τij(t)——t时刻边(i,j)上的信息素量;
δτij——本次迭代中边(i,j)上的信息素增量;
ηij(t)——t时刻节点i到节点j之间距离的倒数;
τis(t)——t时刻边(i,s)上的信息素量;
ηis(t)——t时刻节点i到节点s之间距离的倒数;s∈allowedk;
allowedk——选择下一节点允许的节点集;
α——信息素的相对重要程度;
β——为启发式因子η的重要程度系数;
τij(t+1)=(1-ρ)*τij(t)+δτij(1.2)
ρ——挥发因子;
m——最大蚂蚁数;
q表示蚂蚁一个搜索过程释放的信息素总量,lk表示蚂蚁k在本次搜索中走过的路径长度;
上面的蚁群算法主要针对平面网络,并且一般也只用在求单个约束条件(如带宽)下的最短路径,适用场景有限。
技术实现要素:
本发明的目的在于克服现有技术中存在的不足,提供一种面向多层级网络的多qos路由约束的蚁群算法,可以适应多层网络的路由搜索,也考虑了多个约束条件,使得算法的计算过程更合理。本发明采用的技术方案是:
一种面向多层级网络的多qos路由约束的蚁群算法,其主要改进之处在于,
对于源-目的节点的路由,在搜索时,先采用跳数最少的路由方法寻找一级节点之间的路由;对于一级节点内的二级节点,在各一级节点内调用蚁群算法进行搜索;将每个一级节点内部搜索出来的最短路径连接扩展成完整的路由路径。
进一步地,所述的面向多层级网络的多qos路由约束的蚁群算法,具体包括以下步骤:
步骤s21,初始化网络;
步骤s22,根据设定的源-目的节点,确定源节点和目的节点是否在同一个一级节点内,如在,直接调用蚁群算法,计算源-目的节点的路由;若不在,进入下一步;
步骤s23,一级节点之间的路由为源节点至目的节点之间跳数最少的路由;选择源节点至目的节点之间跳数最少的路由上的一级节点;
步骤s24,确定所选一级节点内部的源-目的节点,作为蚁群算法的输入,调用蚁群算法,计算一级节点内的二级节点之间的路由;
步骤s25,根据步骤s23、s24两步的结果,得到完整路由,判断是否满足要求,如果满足则结束这次搜索;如果不满足,返回到步骤s23继续进行计算。
进一步地,所述蚁群算法中的状态转移规则为:
其中,
λ1、λ2、λ3为加权系数,
蚁群算法为:
步骤s1,初始化参数:开始时每条边信息素浓度相等;
步骤s2,将各只蚂蚁放置各节点,各蚂蚁的禁忌表中初始值为对应的节点;
步骤s3,取1只蚂蚁,按公式(2.5)计算转移概率
步骤s4,计算该只蚂蚁留在各边的信息素量,该蚂蚁死去;
步骤s5,重复步骤s3和s4,直到m只蚂蚁都搜索完毕;m为最大蚂蚁数;
步骤s6,计算各边的信息素增量δτij和信息素量τij(t+1);
步骤s7,记录本次迭代的路径,更新当前的最优路径,清空禁忌表;
步骤s8,判断是否达到预定的最大迭代次数,或者是否出现停滞现象;若是,算法结束,输出当前最优路径;否则,转步骤s2,进行下一次迭代;
τij(t)——t时刻边(i,j)上的信息素量;
δτij——本次迭代中边(i,j)上的信息素增量;
ηij(t)——t时刻节点i到节点j之间距离的倒数;
τis(t)——t时刻边(i,s)上的信息素量;s∈allowedk;
allowedk——选择下一节点允许的节点集;
α——信息素的相对重要程度;
β——为启发式因子η的重要程度系数;
τij(t+1)=(1-ρ)*τij(t)+δτij(1.2)
ρ——挥发因子;
m——最大蚂蚁数;
q表示蚂蚁一个搜索过程释放的信息素总量,lk表示蚂蚁k在本次搜索中走过的路径长度。
本发明的优点在于:
1)本发明相比传统求最短路径的蚁群算法,可以适应多层网络的路由搜索。
2)本发明将多个约束条件整合到一个加权综合值,考虑到了多个约束条件。
3)本发明在适用范围方面,提出了扩展性的思路。
附图说明
图1为现有蚁群算法流程图。
图2为本发明的多层级网络示意图。
图3为本发明的改进的蚁群算法流程图。
具体实施方式
下面结合具体附图和实施例对本发明作进一步说明。
本发明提出的面向多层级网络的多qos路由约束的蚁群算法,可以适用于如图2所示的二层网络;
所述二层网络包括多个一级节点,如一级节点x、y、a、b、c;各一级节点之间的路由方法采用跳数最少的路由方法;
每个一级节点又包含若干二级节点,比如x可以细分为x0,x1,x2,x3,x4,x5;
对于源-目的节点的路由x1-c4,在搜索时,先找一级节点之间的路由,比如x->a->c和x->b->c,假设选定一级节点之间的路由为x->a->c进行搜索;然后在各一级节点内调用蚁群算法进行搜索;此时x1->x3、a2->a2、c3->c4变为蚁群算法的源-目的路由,将每个一级节点内部搜索出来的最短路径连接扩展成完整的路由路径。
面向多层级网络的多qos路由约束的蚁群算法,具体包括以下步骤:
步骤s21,初始化网络;
步骤s22,根据设定的源-目的节点,确定源节点和目的节点是否在同一个一级节点内,如在,直接调用蚁群算法,计算源-目的节点的路由;若不在,进入下一步;
步骤s23,一级节点之间的路由为源节点至目的节点之间跳数最少的路由;选择源节点至目的节点之间跳数最少的路由上的一级节点;
步骤s24,确定所选一级节点内部的源-目的节点,作为蚁群算法的输入,调用蚁群算法,计算一级节点内的二级节点之间的路由;
步骤s25,根据步骤s23、s24两步的结果,得到完整路由,判断是否满足要求,如果满足则结束这次搜索;如果不满足,返回到步骤s23继续进行计算。
蚁群算法中,传统求最短路径的启发式因子η一般为最短路径的倒数,但是如果面临如下多个约束条件:
(1)在一个路由w的每条路径l上,带宽可用限制为:
b(l)≥bw(2.1)
b(l)为路径l上的实际带宽,bw表示qos要求的带宽;
(2)在一个路由w上,端到端时延限制为:
各节点和各路径上时延的和≤dw(2.2)
dw表示qos要求时延;
(3)在一个路由w上,端到端包丢失率限制为:
lr(n)为节点n的包丢失率,v1为路由w上的节点集合;lw表示qos要求包丢失率;
则需要将启发式因子进行修改,则需要将启发式因子进行修改,将时延、带宽利用率、丢失率表示为多项指标的综合值,记作代价:
λ1、λ2、λ3为加权系数,
于是蚁群算法的状态转移规则即公式(1.1)修改为:
其中,
最后所应说明的是,以上具体实施方式仅用以说明本发明的技术方案而非限制,尽管参照实例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。