基于距离完全蚁群算法的多播路由方法

文档序号:7684596阅读:255来源:国知局
专利名称:基于距离完全蚁群算法的多播路由方法
技术领域
本发明属于计算机网络通信中的路由技术,具体涉及一种运用蚁群算法的 多播路由方法。 技术背景随着计算机网络和通信技术的发展,出现了诸如多媒体会议、远程教学、 视频点播、协同工作等服务。多播技术就是一种点到多点的通讯方式。概括来 说,多播路由问题可以叙述为在一个特定的网络中,根据某项标准寻找从源节 点到多个目标节点的信息传送路径。若把网络视作连通的带权无向网络,将网 络节点和相关链接抽象为对应的图节点和边,并根据网络链接对网络资源的消 耗定义图中各边的权重。求解多播路由,就是寻找一条涵盖源节点和所有目标 节点,符合约束条件并且消耗最小的最优路径。事实上,不带约束的多播路由 问题等价于在图中生成Steiner树的问题,该问题已被证明是一个NP-难问题。 解决Steiner树问题的经典算法包括Takahashi和Matsuyama提出的MPH算法 [l], Kou、 Markousky和Berman提出的KMB算法[2], Rayward-Smith提出的 RS算法等C3]。 Leung等人将遗传算法运用到多播路由问题的求解中,并得到了 较好的结果[4]。在自然界中,单个蚂蚁的能力几乎是可以忽略的,但是作为一个整体时, 蚁群却是一个高度结构化的群体。虽然蚂蚁没有像视觉和听觉一样的直接的交 流工具,但它们可以释放一种特殊的分泌物——信息素来进行交流,通过这种 信息素蚁群可以很快的在蚁巢和食物之间找到一条最短的路径。由于蚁群算法 本身具有的正反馈性、并行性、强收敛性以及鲁棒性,使得其在组合优化问题 中有很好的表现,如旅行商问题、调度问题、二次分配问题等。与其它的元启 发式算法相比,蚁群算法具有较强的全局搜索能力和寻优能力,解的质量稳定 并具有更高的搜索效率。 参考文献[1] Takahashi H., Matsuyama A.: An approximate solution for the Steiner problem in graphs. Math Japonica, 1980, 24: p. 573-577.[2] Kou L., Markowsky G" Berman L: A fast algorithm for Steiner tress. Acta Information, 1981, 15: p. 141-145.[3] Rayward-Smith V.丄The computation of nearly minimal Steiner tress in graphs. Int. J. Math. Ed. Sci. Technol., 1983, 14(1): p. 15-23.[4] Y. Leung, G. Li, and Z. B. Xu: A genetic algorithm for the multiple destination routing problems. IEEE Trans, on Evolutionary Computation, vol. 2, no. 4, pp. 150-161, November 1998.

发明内容
本发明运用蚁群算法求解无约束的多播路由问题,基于蚁群系统的结构提 出了一种距离完全蚁群算法来搜索网络中最低费用的多播树。算法的具体步骤 包括(1) 运用Floyd算法建立多播路由网络的距离完全图。(2) 初始化算法的各个参数。设定距离完全图每条边上的信息素的初始值为其中7;是根据确定的冗余检测修正方法得到的树的费用。(3) 随机选择一个目标节点让蚂蚁A:开始搜索。蚂蚁将会根据状态转移规则以一定的概率选择下一个节点y',其公式如下.—Jarg maxre0t{[rO))].|>7( )]},如果《2《07=<U 否则其中,/是蚂蚁当前所在节点,0,是当前蚂蚁还未曾访问过的节点的集合,《是 均匀分布在区间[O, l]中的随机变量,《。(03dl)是一个参数。r(/,"表示连接 节点/和r的边上的信息素取值。;/(/,r)表示从节点/选择节点r的启发式信息值。 选择完成后,对蚂蚁经过的边进行局部信息素的更新。局部信息素的更新将会 分两步执行, 一个是逻辑边上的信息素更新,另一个是真实边上的信息素更新。 蚂蚁A不断重复以上选择过程,直到它经过所有所有的目标节点,从而得到一棵蚂蚁构造的多播树。(4) 对蚂蚁构造的多播树执行冗余检测和修正。首先,对访问过的节点执 行Prim算法。如果得到的最小生成树的费用低于蚂蚁构造的树,蚂蚁得到的解 就会被最小生成树代替。然后,检査无用的中间节点,将那些只有一个输出端 的中间节点删除。以上两个步骤不断重复,直到生成的树不能再优化为止。(5) 重复步骤(3)和(4)直到所有蚂蚁都完成解的构造。(6) 对历史最优的多播树进行全局信息素的更新。在最优生成树的真实边 上的信息素如下更新y') = (1 _ P)+A r其中A2^1/ry, r^,为最优生成树的总的费用。在最优生成树的逻辑边上的信息素也同样需要更新。假设节点/和_/之间选 定的真实路径为("。,a, "2,..., ),其中"。=/, ^"'。 ^为路径中边的数量。 则,逻辑边(i,力上新的信息素等于(7) 重复步骤(3)至(6)直到满足算法的终止条件。不同于其它用于求解多播路由问题的蚁群算法,发明的方法是是从一个随 机选择的目标节点开始搜索的,并且运用的Prim的最小生成树算法来构造多播 树。蚂蚁可以确定地选择下一个节点,也可以用一定的概率去选择。当一只蚂 蚁完成搜索后,运用Prim算法和冗余检测修正方法对蚂蚁得到的解进行检验和 修正以求得到更好的结果。在网络中的信息素将通过局部和全局信息素更新机 制进行更新。本发明的另一个创新之处在于,在启发式信息中通过一个参数//对 目标节点的选取赋予一定的倾向性。运用适当的启发式方法和参数设定增加了 目标节点(包括源节点)的选择概率。与同类型的算法相比,发明的算法可以 更加快速地解决多播路由问题。


图l多播路由网络示意2多播路由网络构造距离完全图的方法示意3逻辑边的扩展示意4距离完全蚁群算法的总体流程图
具体实施例方式以下结合附图进一步对发明的方法进行描述。一个网络图可以用G-(^,^,Q)表示,其中^表示网络中节点的集合,£c 表示连接节点的边的集合,Q表示约束条件。如果问题是不带约束的,则0 = 0。 在多播路由问题中^被分为三个子集^, ^和^,其中^是源节点的集合,^ 是目标节点的集合,^是中间节点的集合。通过每个属于五e的边e都有一个费 用c(O。如果Fo中的节点没有边连接,则设定相对应的费用为oo。多播路由问 题就是要寻找一棵连接^和^中的所有节点,费用最少并且符合Q中的约束条 件的树。用公式来表达,就是寻找一棵树『=(Fs + ^ + ^, A),其中^f^, ^G&,使min2^c0), r满足Q中的约束条件图1为一个多播路由的例子,在图中有十二个节点和一些边。灰色实心的 节点l是源节点,黑色实心节点2, 6,和ll是目标节点。问题是要找到一棵连 接所有目标节点和源节点,并且费用最小的树。图中连接节点2, 1, 5, 6, 7, 11的黑色边就构成了问题的一个解。由于本发明考虑的是不带约束的多播路由问题,所以可以将源节点和目标 节点统一考虑,因此将^和^合并成为^。多播路由的网络并不是一个完全连接的图,也就是说一些节点并不是由单 独的边直接连接的。而在一个网络的距离完全图中,任意两个节点都是逻辑连 接的,并且连接的费用是最小的。由于发明的蚁群算法是基于距离完全图的, 因此首先必须建立多播路由网络的距离完全图。其中一种生成距离完全图的经典算法是Floyd算法,它的伪代码如下 输入C x [^I:多播路由网络的费用矩阵 输出D^[^]:距离完全图的费用矩阵0一"[ ]:在距离完全图中从节点i到J的下一个中间节点伪代码For f:=0 to w-1Foiv':=0 to "画l《= If Ctf = ooOj/:=-l;Else。i/ :=刀End If End For End For〃如果在节点i和J之间没有边连接〃保存从节点i开始的下一个中间节点For A::=0to w誦lFor /:=0 to w-1F017 Oto w-1If / and cf汰+ c4j < A4/d汰+ ^;0"=0&; 〃记录新的中间节点 End If End For End For End For在输入的费用矩阵C^中,q表示连接节点/和y(/,户0,l,.』-l)的边的费用。 如果边不存在,则q为oo。输出包含两个矩阵,其一是生成的距离完全图的费用矩阵D"xw,其中 表示从节点Z'到节点/的逻辑边的最低费用。另一个是O"x ,其中^记录从节点z'到节点y的逻辑边的下一个中间节点。图2为一个六节点的拓扑结构示例。在图中的实线为两个节点间存在的真实的边,旁边的数字代表着这条边相对应的费用。可以看到节点a和b并不是直接相连的,但它们 之间可以通过节点c和d相连。算法可以将图2中的左图转化为右边的距离完全图,其中增加了连接a和b的最小费用逻辑边(虚线)。从a到b的最短路径是经过C的,因此4b的费用为2.5, Oab的取值为C。由于网络图是无向的,因 此Oba的取值也是C。对于节点a和d,虽然它们是直接相连的,但却存在一个更 短的通过节点e和f的路径,因此《d = dda =1.5, oad = e, oda = f。当"-l^l时Floyd算法的时间复杂度为0("3)。实际上,在一个真实的网络 中需要基于路由表上所提供的信息来建立距离完全图。 一旦距离完全图建立完 毕,它就不需要改变直到网络的拓扑结构发生了变化。当距离完全图建立好后, 就可以运用蚁群算法建立多播树了。发明的距离完全蚁群算法的结构是基于建立最小生成树的Prim算法的。假设S是空的节点集合,F是一个无向连接图中的节点的集合。Prim算法 将节点/添加到S中,如果^S, 7er-S,而且边(/,力有最低费用。当5 =厂时, 算法将终止。在发明的方法中,选择下一个节点的标准并不是简单的基于边的 费用,而是基于信息素和启发式信息的乘积。设边O',力的信息素和启发式信息的乘积表示为力(/,力,其中r(z',力表示 信息素的取值,7a力表示启发式信息的取值。在发明的方法中,启发式信息的 设置为<formula>formula see original document page 9</formula>否则其中A = max(l V1 |VG ,| VD |/| VG I)和a = min(l V1 |VG ,| VD |/| VG I)分别表示目标 节点和中间节点的加强率,〃 =/iD= max(l F, l V1 |VG ,| VD |/| VG I)|)称为目标节点和 中间节点的加强比例。4是距离完全图中连接节点z'和/的逻辑边的费用。/7是 一个正常数。运用以上的启发式方法使得算法更倾向于选择目标节点。当不同的边有一 样的费用时,贪婪操作更倾向于选择^中的节点。基于以上所介绍的Prim算法和启发式信息的设置,运用蚁群对网络进行搜 索。发明的距离完全蚁群算法是一种运作于距离完全图上的,基于蚁群算法框 架的带概率的Prim算法。其包含以下步骤(l)初始化<formula>formula see original document page 10</formula>将蚂蚁A放置于随机选择的目标节点/上,让它开始搜索。 (2)路径的构建蚂蚁将会根据状态转移规则以一定的概率选择下一个节点J,其公式如下arg max,/, 否则其中,/是蚂蚁当前所在节点,0,是当前蚂蚁还未曾访问过的节点的集合,g是均匀分布在区间[O, l]中的随机变量,《o (O^^l)是一个参数。r(z))表示连接 节点Z和r的边上的信息素取值。/70))表示从节点/选择节点r的启发式信息值。 由于已经预先建立了距离完全图,因此任意两个节点都是逻辑相连的。如果随 机产生的《小于⑨,蚂蚁就会选择信息素和启发式信息乘积最大的未访问节点。 否则,蚂蚁将按照一个称为随机比例规则的概率行为选择规则,来决定下一个 节点,蚂蚁选择节点/的概率为,如果风o, 否则(3)边的扩展和局部信息素更新-当一只蚂蚁完成解的构建后,它所访问过的边上的信息素将会被降低。这 是为了防止大量的蚂蚁选择相同的路径,使得其它蚂蚁能够分散地搜索整个网 络。局部信息素的更新将会分两步执行, 一个是逻辑边上的信息素更新,另一 个是真实边上的信息素更新。边(/,力上的信息素根据以下公式进行更新力=(1 — P). r(/,力+ p. rmin 其中/ (户e(0,l])是信息素的蒸发率。7^是每个边上的信息素的下限。由于 ra_/)2rmin ,更新后的信息素小于或者等于原来的取值。当下一个节点j'选择完成后,蚂蚁就会从节点z'移动到节点乂。由于蚂蚁是 在距离完全图中移动的,因此逻辑边(/,力可以扩展为真实路径仏 .,0。",…,力。 例如,如图3所示需要更新逻辑边(1,6)的信息素,而逻辑边(1,6)可以表示为路 径{1,2,3,4,5,6},所有相关的边(1,2), (1,3), (1,4), (1, 5), (1,6), (2,3), (2,4), (2,5), (2, 6), (3, 4), (3,5), (3,6), (4,5), (4,6), (5, 6),以及它们的对称边(例如(2, l))上的信息素都会根据公式进行更新。局部信息素更 新后,在附近区域的信息素浓度将降低。(4) 检查蚂蚁是否完成构建所有蚂蚁经过的节点和逻辑路径扩展后经过的节点都被当作已访问的节 点。蚂蚁完成构建的结束条件为它访问过所有的源节点和目标节点。如果结束 条件未满足,则回到步骤二继续搜索。否则,就认为蚂蚁完成了多播树的构造。(5) 冗余检测修正当蚂蚁完成连接源节点和目标节点的多播树的构造后,必须对这个树进行 冗余检测。首先,对访问过的节点执行Prim算法。如果得到的最小生成树的费用低于 蚂蚁构造的树,蚂蚁得到的解就会被最小生成树代替。然后,检查无用的中间节点,将那些只有一个输出端的中间节点删除。 以上两个步骤不断重复,直到生成的树不能再优化为止。 冗余的检测和修正也可以作为多播路由问题的一种确定性算法。将^中的 所有节点作为输入,树可以逐渐地被修正,得到的结果仍然是最小生成树而且 是问题的一个可行解。虽然这种方法不能够得到最好的树,但是却可以根据其 结果来初始化信息素。于是,在每条边上的信息素的初始值设定为其中t;是根据确定的冗余检测修正方法得到的树的费用。(6) 全局信息素更新当m只蚂蚁都完成了树的构造后,对历史最优的生成树执行全局信息素的 更新。在最优生成树的真实边上的信息素如下更新r 0', _/ ) = (1 - / ) r(z',力+ . A r 其中At^1/7L,, 7L,为最优生成树的总的费用。在最优生成树的逻辑边上的信息素也同样需要更新。假设节点z'和y之间选 定的真实路径为("。,A, "2,..., ~),其中"。=/,^为路径中边的数量。 则,逻辑边(z',力上新的信息素等于<formula>formula see original document page 12</formula>只有最优生成树中的真实边和逻辑边上的信息素被加强,得到信息素加强 的边会吸引更多的蚂蚁去利用它们。(7)重复步骤(1)至(6)直到满足结束条件。 距离完全蚁群算法的总体流程图如图4所示。为了验证算法的有效性,以OR库中b组的Steiner问题为例,对发明的距 离完全蚁群算法和Leung的遗传算法进行比较。发明的算法的具体参数设置为 《。=0.9, z -O.l, 7min=r。, m = 100, - = 2。 Leung提出的遗传算法在所有问 题上都能100%地求得最优解,而本文提出的算法除了 Steinb13问题外,对于其 它问题也能100%得到最优解。但本文提出的算法在四个循环内就能解决大部分 的问题,因此求解速度优于遗传算法。从测试结果中可以看出,发明的距离完 全蚁群算法可以更加快速地解决多播路由问题。
权利要求
1、一种基于距离完全蚁群算法的多播路由方法,其特征在于,该方法包括以下步骤(1)运用Floyd算法建立多播路由网络的距离完全图。(2)初始化算法的各个参数。设定距离完全图每条边上的信息素的初始值为 τ0=1/(|VG|·Ts)其中Ts是根据确定的冗余检测修正方法得到的树的费用。(3)随机选择一个目标节点让蚂蚁k开始搜索。蚂蚁将会根据状态转移规则以一定的概率选择下一个节点j,其公式如下其中,i是蚂蚁当前所在节点,Θk是当前蚂蚁还未曾访问过的节点的集合,q是均匀分布在区间
中的随机变量,q0(0≤q0≤1)是一个参数。τ(i,r)表示连接节点i和r的边上的信息素取值。η(i,r)表示从节点i选择节点r的启发式信息值。选择完成后,对蚂蚁经过的边进行局部信息素的更新。局部信息素的更新将会分两步执行,一个是逻辑边上的信息素更新,另一个是真实边上的信息素更新。蚂蚁k不断重复以上选择过程,直到它经过所有所有的目标节点,从而得到一棵蚂蚁构造的多播树。(4)对蚂蚁构造的多播树执行冗余检测和修正。首先,对访问过的节点执行Prim算法。如果得到的最小生成树的费用低于蚂蚁构造的树,蚂蚁得到的解就会被最小生成树代替。然后,检查无用的中间节点,将那些只有一个输出端的中间节点删除。以上两个步骤不断重复,直到生成的树不能再优化为止。(5)重复步骤(3)和(4)直到所有蚂蚁都完成解的构造。(6)对历史最优的多播树进行全局信息素的更新。在最优生成树的真实边上的信息素如下更新 τ(i,j)=(1-ρ)·τ(i,j)+ρ·Δτ其中Δτ=1/Tbest,Tbest为最优生成树的总的费用。在最优生成树的逻辑边上的信息素也同样需要更新。假设节点i和j之间选定的真实路径为(a0,a1,a2,...,aψ),其中a0=i,aψ=j。ψ为路径中边的数量。则,逻辑边(i,j)上新的信息素等于
2、 基于权利要求1所述的一种基于距离完全蚁群算法的多播路由方法,其 特征在于发明的方法是从一个随机选择的目标节点开始搜索的,并且运用的 Prim的最小生成树算法来构造多播树。
3、 基于权利要求l所述的一种基于距离完全蚁群算法的多播路由方法,其 特征在于当一只蚂蚁完成搜索后,运用Prim算法和冗余检测修正方法对蚂蚁得 到的解进行检验和修正以求得到更好的结果。
4、 基于权利要求1所述的一种基于距离完全蚁群算法的多播路由方法,其 特征在于在启发式信息中通过一个参数/z对目标节点的选取赋予一定的倾向 性。
全文摘要
本发明公开了一种基于距离完全蚁群算法的多播路由方法。首先,为多播路由网络建立距离完全图。然后,基于蚁群算法和Prim算法带随机性地构造多播树。其中,启发式信息的设置使得算法更倾向于选择目标节点。对生成的多播树进行冗余检测和修正并执行局部信息素的更新。最后,当所有蚂蚁都完成解的构造后,执行全局信息素的更新,对历史最优树上的边进行信息素的加强。仿真测试结果,以及与同类型算法的比较显示,本发明的距离完全蚁群算法可以更加快速地解决多播路由问题。
文档编号H04L12/56GK101237408SQ20081002647
公开日2008年8月6日 申请日期2008年2月27日 优先权日2008年2月27日
发明者军 张, 胡晓敏, 韬 黄 申请人:中山大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1