本发明涉及网络通信路由技术领域,尤其涉及一种基于dag的多约束路由优化的计算方法。
背景技术
随着网络应用和探索的日益多样化,网络正被迫满足各种流量需求,并具有明确且关键的服务质量(qualityofservice,简称qos)要求,比如带宽、时延、时延抖动、丢包率等。同时考虑两个以及两个以上qos指标约束的路由问题称为多约束qos路由问题,是在多约束条件下求最优解的问题。已有研究表明,多约束qos路由问题是一个npc问题,该优化问题的求解很困难。
现有技术中基于剪枝策略进行求解多约束路由的问题,一般都是将不满足凹性条件的链路进行剪枝,没有对加性条件(乘性条件可以转为加性条件)的链路进行剪枝。现有的基于图论的多约束路由算法中,都是将多约束qos参数通过线性或非线性代价函数拟合成单一函数值,再以该函数值为路径选择的度量,利用最短路径算法近似解决多约束路由问题。其理论依据是单个度量函数求解两节点间最短路径能在多项式时间内完成。如jaffe提出将路径代价分量进行线性综合,把多约束问题转化回单约束问题,然后再利用dijkstra算法求出源节点到目的节点之间具有最小代价的最优路由。korkmaz与krunz提出的h_mcop算法利用dijkstra算法正反两个方向进行搜索,反向搜索时利用线性代价函数,正向搜索时利用非线性代价函数求出最优路径。另外有算法提出首先求出k条最短路径算法,然后利用综合评价指标选出最优的一条路径。
上述算法都是简单的对多约束参数进行综合,没有考虑实际业务对各个参数的不同要求,使得计算过程复杂,计算量大。
技术实现要素:
本发明实施例提供了一种基于dag的多约束路由优化的计算方法,解决了现有技术中多约束路由算法计算复杂的问题。
本发明实施例提供的基于dag的多约束路由优化的计算方法,包括:s11,将源节点加入队列,且对所述源节点进行标记;s12,对所述源节点的每一个邻居节点进行松弛判断:若所述邻居节点满足扩展条件,则将所述邻居节点加入队列,并根据先进先出原则剔除所述源节点,则所述邻居节点为队列的首节点,所述方法进入s13;若所述邻居节点不满足所述扩展条件,则将所述源节点与所述邻居节点之间的链路剪枝,并重复s12;s13,对所述邻居节点的每一个邻居节点进行松弛判断:若所述邻居节点的邻居节点满足扩展条件,则将所述邻居节点的邻居节点加入队列,并根据先进先出原则,剔除所述邻居节点,则所述邻居节点的邻居节点为队列的首节点,所述方法进入s14;若所述邻居节点的邻居节点不满足所述扩展条件,则将所述邻居节点与所述邻居节点的邻居节点之间的链路剪枝,并重复s13;s14,对队列中的首节点重复所述s13,并对加入队列中的节点进行标记,至队列中的所有节点被剔除,得到所述源节点与其余节点之间的路径,得到剪枝后的dag图;其中,所述扩展条件包括凹性条件、乘性条件及加性条件;s2,根据得到所述dag图,确定所述源节点到目的节点的最优路径:s21,确定满足带宽、延迟及延迟抖动的多约束值的代价函数:
综上,本发明实施例提供的基于dag的多约束路由优化的计算方法,首先利用图论有关性质和剪枝策略,计算出源节点到其余节点的满足多约束要求的所有路径,将原网络拓扑图剪枝为dag图。然后采用多约束路径计算策略,利用链路综合代价函数,对带宽、延时、时延抖动、成本等qos参数进行均衡,使用主客观赋权法g1_标准离差法和邻居节点集自适应调整链路权重,基于dag图寻找一条源节点到目的节点的最优路径,从而增加了计算结果的准确度,避免了不相连节点的无用计算过程,有效减小计算量,提高了计算效率。
附图说明
图1为本发明实施例提供的基于dag的多约束路由优化的计算方法的流程示意图。
图2为本发明实施例提供的基于dag的多约束路由优化的计算方法的随机生成的网络拓扑图。
图3为本发明实施例提供的基于dag的多约束路由优化的计算方法的剪枝后的dag。
图4为本发明另一实施例提供的基于dag的多约束路由优化的计算方法的网络拓扑图。
具体实施方式
下面结合本发明中的附图,对本发明实施例的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
为了便于理解和说明,下面通过图1至图4详细说明本发明实施例提供的基于dag的多约束路由优化的计算方法。该方法可以包括:
s1,对原网络拓扑图进行剪枝:
应理解,本发明中利用了图论思想中的队列,对搜索过程进行辅助。具体的:
s11:从源节点开始进行搜索,首先将源节点加入队列并对源节点进行标记,表明已经对源节点搜索过了。
s12:对源节点的每一个邻居节点进行松弛判断,如果邻居节点满足扩展条件,就将该邻居节点进入队列,然后按照队列“先进先出”的原则将源节点剔出队列,则邻居节点为队列的首节点,方法进入s13。
如果该邻居节点不满足扩展条件,则将源节点与该邻居节点之间的链路剪枝。并重复s12。
其中,扩展条件包括凹性条件、乘性条件及加性条件。
可选的,在对源节点的每一个邻居节点进行松弛判断时,具体可以通过如下方法进行:
s121,判断该源节点与该源节点的邻居节点的链路是否满足凹性约束条件。例如带宽等约束条件。如果不满足该凹性约束条件,则将该源节点与该邻居节点的链路进行剪枝,该松弛判断结束,该邻居节点不满足扩展条件,如果满足凹性约束条件,则该方法进入s122。
s122,判断该链路是否满足加性条件:若该源节点与该邻居节点关于约束条件的和大于请求的约束,删除该邻居节点,该松弛判断结束,该邻居节点不满足扩展条件;若该源节点与该邻居节点关于约束条件的和小于请求的约束,则该邻居节点处保存该源节点与该邻居节点关于约束条件的和,该方法进入s123。
应理解,加性约束条件可以为多个,如延长及延迟抖动等,在判断过程中,需要逐一做比较。
s123,判断该链路是否满足乘性条件:对该乘性条件的约束取对数,得到加性条件的约束,利用该s122中的方法,判断该链路是否满足取对数得到的加性条件的约束:若不满足取对数得到的加性条件的约束,则删除该邻居节点,结束该松弛判断,该邻居节点不满足扩展条件;若满足取对数得到的加性条件的约束,则将该邻居节点加入队列。同样的,则该邻居节点处保存该源节点与所述邻居节点关于约束条件的和。
应理解,乘性条件同样可以有多个。例如丢包率约束等。并且,如丢包率的约束在转换为加性条件时:
其中,e为路径p中的一条链路,loss(e)为链路e上的丢包率,loss(p)为路径p上的丢包率。
则取对数的结果如下:
从而在将乘性条件的丢包率约束在取对数后,转换成了加性条件。
s13,对邻居节点的每一个邻居节点进行松弛判断:
若邻居节点的邻居节点满足扩展条件,则将邻居节点的邻居节点加入队列,并根据先进先出原则,剔除邻居节点,则邻居节点的邻居节点为队列的首节点,方法进入s14。
若邻居节点的邻居节点不满足扩展条件,则将邻居节点与邻居节点的邻居节点之间的链路剪枝,并重复s13。
可选的,在对邻居节点的每一个邻居节点进行松弛判断时,具体可以通过如下方法进行:
s131,判断该邻居节点与该邻居节点的每一个邻居节点的链路是否满足凹性约束条件,如果不满足该凹性约束条件,则将该邻居节点的邻居节点与该邻居节点的链路进行剪枝,该邻居节点的邻居节点不满足该扩展条件,该松弛判断结束;如果满足凹性约束条件,则该方法进入s132。
s132,判断该链路是否满足加性条件:将该源节点与队列首节点关于约束条件的和与该邻居节点与该队列首节点关于约束条件的和相加。
当相加的值小于请求的约束时,该队列首节点处保存该相加的值,该方法进入s133。
当相加的值大于请求的约束时,则触发该队列首节点保存的该源节点到该队列首节点的关于约束的最小值,并将该最小值重新与该队列首节点与该队列首节点的邻居节点之间链路上的延迟约束相加,若结果小于所请求的约束,则在该首节点处保存该最小值,该方法进入s133;若结果大于请求的约束值,则删除该邻居节点的邻居节点,该松弛判断结束,该邻居节点的邻居节点不满足加性条件。
s133,判断该链路是否满足乘性条件:对该乘性条件的约束取对数,得到加性条件的约束,利用该s132中的方法判断该链路是否满足取对数得到的加性条件的约束:若不满足,则删除该邻居节点的邻居节点,结束该松弛判断,该邻居节点的邻居节点不满足扩展条件;若满足,则将该邻居节点的邻居节点加入队列。同样的,该队列首节点处保存源节点与队列首节点关于约束条件的和与邻居节点与队列首节点关于约束条件的和相加的值或队列首节点保存的源节点到队列首节点的关于约束的最小值。
s14,对队列中的首节点重复s13,并对加入队列中的节点进行标记,至队列中的所有节点被剔除,得到源节点与其余节点之间的路径,得到剪枝后的dag图。
s2,基于上一步得到的dag图,根据多约束请求(源节点,目的节点,带宽约束,延迟约束,延迟抖动约束),寻找一条满足约束请求从源节点到目的节点的最优路径:
在该步骤中,引入了一个链路综合代价函数,对带宽、延时、时延抖动、成本等qos参数进行权衡,使用主客观赋权法g1_标准离差法和邻居节点集自适应调整链路权重进行综合度量。
s21:链路代价函数的确定。
由于希望找到一条满足带宽、延迟、延迟抖动等要求的最优路径,所以定义基于这三个约束值的代价函数为:
其中,wi为权值系数,且wi>0,
s22:权系数的确定:
具体的,权系数的确定一般有两种,主观赋权法和客观赋权法。主观赋权法都是专家或决策者根据自己所掌握的相关信息或偏好直接人为确定权系数。客观赋权法根据实际数据信息进行权系数确定。本文使用主客观赋权法g1_标准离差法和邻居节点集自适应调整链路权重进行综合度量。
应理解,对于主观赋权法,具体计算如下:首先确定各元素的序关系。x1≥x2≥…≥xn,表示x1,x2,…,xn按照“≥”顺序确定了序关系。
其次,确定序关系中相邻指标xi-1和xi之间的相对重要程度ri。
公式如下:
然后根据ri可以求出第n个指标的g1法权重wn为:
最后,由权重wn可得第n-1,n-2,…,3,2,1个指标的权重,计算公式为
wi-1=wirii=n,n-1,…,3,2
设w(i=1,2,…,n)为评价指标的g1法权重构成的向量,则w为w=(w1,w2,…,wn)。
还以理解,对于标准离差法的思想与熵权法是十分类似的.但它基于的不再是信息熵而是标准差。一般我们认为,一个指标的标准差越大.则说明该指标的变异越大.即其中包含的信息越多.其权重自然也应该越大。基于这种思想,利用第j个指标的标准差。可采用如下的方式计算权重:
均值:
标准差:
主客观组合赋权法有加法集成法和乘法集成法两种,本发明使用乘法集成法:
其中,wi代表第i个指标的最终权重,ai代表第i个指标的客观赋值,bi代表第i个指标的主观赋值,经过主客观的权值相乘,最后再除以所有指标主客观权值的乘积和,以进行归一化处理,最终达到取长补短,相对客观、公正地对实验教学质量进行评判。
因此,在本发明实施例中,根据主客观赋权法g1_标准离差算法中的g1算法计算出权系数向量w′,w′=(w′1,w′2,…,w′n)。
根据主客观赋权法g1_标准离差算法中的标准离差法和节点的邻居节点集计算出权系数向量w″,w″=(w″1,w″2,…,w″n)。
利用乘法集成法对系数进行组合,则综合权系数向量为w,w=(w1,w2,…,wn),
s23:路由选择:基于剪枝后的dag图,使用改进dijkstra算法利用第一步和第二步求得的链路代价函数寻找源节点到目的结点的最优路径:
s231,将源节点加入禁忌表;
s232,根据所述剪枝后的dag图、第一向量w′、第二向量w″及所述综合权值系数向量w源节点及公式(1)确定源节点到其余节点的链路,
s233,确定综合约束最小的链路,并将该链路中的节点加入到禁忌表,作为第二个节点;
s234,根据所述剪枝后的dag图,利用s233确定所述第二个节点与所述第二个节点的邻居节点集中的综合约束最小的链路。
s235,重复s234至得到所述源节点到目的节点之间的最短路由。
具体的,以图3为例详细解释确定最短路由的过程。假设图3为剪枝后的dag图。则在图3中,需要求出源节点1到目的节点6的最短路由。链路中的参数分别代表带宽、时延、时延抖动,即(带宽、时延、时延抖动)。需要借助于禁忌表,表示该节点已经访问过。
假设带宽:时延:时延抖动=5:3:2,则利用g1法求得第一权重:w′=(0.5,0.3,0.2)。
首先将节点1加入到禁忌表中,根据禁忌表中的节点集求出下一个节点,由于此时禁忌表中只有一个节点,然后根据以下步骤求出节点1的邻接节点:
则先利用标准离差法求出w″,因为节点1的邻居节点有2,3,7,4。则可以得出矩阵
则利用公式
之后利用
然后根据乘法集成法求出w=[0.5160.2780.206]。
此时根据
可知链路
此时链路l(1,4)上的综合约束最小,则将节点4加入到禁忌表中。
然后根据上述步骤继续寻找下一节点,此时禁忌表中的节点集为{1,4},故需要同时在节点1的邻居节点集和节点4的邻居节点集中寻找综合约束最小的链路,重复上述步骤,直到找到目的节点为止。
通过上述计算,可找到源节点1到目的节点6的一条最短路由(1,4,8,9,6)。
综上,本发明实施例提供的基于dag的多约束路由优化的计算方法,首先利用图论有关性质和剪枝策略,计算出源节点到其余节点的满足多约束要求的所有路径,将原网络拓扑图剪枝为dag图。然后采用多约束路径计算策略,利用链路综合代价函数,对带宽、延时、时延抖动、成本等qos参数进行均衡,使用主客观赋权法g1_标准离差法和邻居节点集自适应调整链路权重,基于dag图寻找一条源节点到目的节点的最优路径,从而增加了计算结果的准确度,避免了不相连节点的无用计算过程,有效减小计算量,提高了计算效率。
以上公开的仅为本发明的几个具体实施例,但是,本发明实施例并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。