发明名称 一种基于混合蚂蚁算法的QoS多播路由的方法
摘要 本发明提供一种基于混合蚂蚁算法的QoS多播路由的方法,初期采用遗传算法过程生成信息素分布,后期利用蚂蚁算法正反馈求精确解。用遗传算法(见右式1):<img file="200510019243.0_ab_0.GIF" wi="475" he="58" />在规定的迭代次数以内求出最优解或次优解;用蚂蚁算法为信息路由表tabu赋值;比较所有蚂蚁走过的路径,选出F<sub>K</sub>最小的作为这次周游的最优路径,由下式计算Δτ<sub>ij</sub>(见右式2):<img file="200510019243.0_ab_1.GIF" wi="449" he="67" />进行信息素的全局更新,只有最优路径上的边信息素增加;输出最优解的路径,直到每个目的节点都已经经过为止。
申请公布号 CN1731761A 申请公布日期 2006.02.08
申请号 CN200510019243.0 申请日期 2005.08.05
申请人 武汉理工大学 发明人 李腊元;李春林;许毅;屈建伟
分类号 H04L12/56(2006.01) 主分类号 H04L12/56(2006.01)
代理机构 武汉开元专利代理有限责任公司 代理人 刘志菊
主权项 1.一种基于混合蚂蚁算法的QoS多播路由的方法,在NS2平台下实现,包括单播和多播路由方法,其特征在于:多播路由的方法是:1)初始化网络节点,给出每条存在的边的时延和费用的值:<maths num="001"><![CDATA[ <math><mrow><mi>D</mi><mrow><mo>(</mo><mi>T</mi><mo>)</mo></mrow><mo>=</mo><mi>max</mi><munder><mi>&Sigma;</mi><mrow><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>&Element;</mo><mi>p</mi><mrow><mo>(</mo><mi>s</mi><mo>,</mo><mi>di</mi><mo>)</mo></mrow></mrow></munder><mi>d</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>&lt;</mo><mi>&Delta;</mi><mo>,</mo><mi>C</mi><mrow><mo>(</mo><mi>T</mi><mo>)</mo></mrow><mo>=</mo><mi>min</mi><munder><mi>&Sigma;</mi><mrow><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>&Element;</mo><mi>T</mi></mrow></munder><mi>c</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths>式中:T代表多播树,i.j代表节点,Δ为设定值;t=0;//t是时间计数器,NC=0;//NC是为循环控制器;2)用下式遗传算法在规定的迭代次数以内求出最优解或次优解:<maths num="002"><![CDATA[ <math><mrow><msub><mi>&tau;</mi><mi>G</mi></msub><mo>=</mo><msub><mi>&tau;</mi><mi>C</mi></msub><mo>*</mo><msub><mi>f</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>T</mi><mo>)</mo></mrow><mo>=</mo><msub><mi>&tau;</mi><mi>C</mi></msub><mo>/</mo><mrow><mo>(</mo><munder><mi>&Sigma;</mi><mrow><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>&Element;</mo><mi>bestT</mi></mrow></munder><mi>c</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>*</mo><munder><mi>&Sigma;</mi><mrow><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>&Element;</mo><mi>bestT</mi></mrow></munder><mi>d</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo></mo><mo>)</mo></mrow></mrow></math>]]></maths>式中τ代表某一位置的信息素,G代表i、j等节点构成的拓扑;3)为信息路由表tabu赋值:(A)赋初值s=0式中s是tabu表的索引,tabu表是用来保存到t时刻为止到达的节点,tabu<sub>k</sub>(s)表示在当前路由选择中第k个蚂蚁访问的第s个节点;(B)根据下式按照概率P<sub>ij</sub><sup>k</sup>选择下一个节点j;<maths num="003"><![CDATA[ <math><mrow><msubsup><mi>p</mi><mi>ij</mi><mi>k</mi></msubsup><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mfrac><mrow><msup><mrow><mo>[</mo><msub><mi>&tau;</mi><mi>ij</mi></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>]</mo></mrow><mi>&alpha;</mi></msup><msup><mrow><mo>[</mo><msub><mi>&eta;</mi><mi>ij</mi></msub><mo>]</mo></mrow><mi>&beta;</mi></msup></mrow><mrow><msub><mi>&Sigma;</mi><mrow><mi>j</mi><mo>&Element;</mo><mi>U</mi></mrow></msub><msup><mrow><mo>[</mo><msub><mi>&tau;</mi><mi>ij</mi></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>]</mo></mrow><mi>&alpha;</mi></msup><msup><mrow><mo>[</mo><msub><mi>&eta;</mi><mi>ij</mi></msub><mo>]</mo></mrow><mi>&beta;</mi></msup></mrow></mfrac><mo>,</mo></mtd><mtd><mi>j</mi><mo>&Element;</mo><mi>U</mi></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mi>j</mi><mo>&NotElement;</mo><mi>U</mi></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>//式中τ<sub>ij</sub>(t)指t时刻(i,j)边上信息素的浓度,//U={0,1...,n-1}-tabu<sup>k</sup>表示第k个蚂蚁下一步可以选择的节点,//α表示信息启发因子,β表示期望启发因子,//η<sub>ij</sub>为启发因子,取η<sub>ij</sub>=1/c<sub>ij</sub>*d<sub>ij</sub>,为下一个节点j以及边(i,j)的时延和费用约束,计算出移到节点j之后的时延和费用的值,与时延约束Δ和费用约束C(T)比较,若超过约束值则重新选择节点,若无满足约束条件的路径可选,蚂蚁死亡;否则移动第k个蚂蚁到节点j;将节点j插入到tabu<sub>k</sub>(s);重复本步直到tabu列表中包括所有目的节点;4)比较所有蚂蚁走过的路径,选出F<sub>K</sub>最小的作为这次周游的最优路径;for(k=1;k<=m;++),其中F<sub>K</sub>+=F<sub>ij</sub>;//F<sub>k</sub>为路径所有边适应度之和,F<sub>ij</sub>为边(i,j)的适度度},按照下式计算Δτ<sub>ij</sub>:<img file="A2005100192430003C1.GIF" wi="1058" he="217" />//Δτ<sub>ij</sub>为最优蚂蚁在这次周游中在(i,j)边上留下的信息素的量,Q为开始时给出的一个常数初值,F<sub>K</sub>这里的值为这次周游最佳的路径中所有节点和边的时延和费用的和的积,为<maths num="004"><![CDATA[ <math><mrow><munder><mi>&Sigma;</mi><mrow><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>&Element;</mo><mi>best</mi></mrow></munder><mi>c</mi><msup><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>*</mo></msup><munder><mi>&Sigma;</mi><mrow><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>&Element;</mo><mi>best</mi></mrow></munder><mi>d</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>)</mo></mrow><mo>;</mo></mrow></math>]]></maths>5)进行信息素的全局更新,只有最优路径上的边信息素增加;6)输出最优解的路径,直到每个目的节点都已经经过为止。
地址 430070湖北省武汉市武昌珞狮路122号