CN1731761A - 一种基于混合蚂蚁算法的QoS多播路由的方法 - Google Patents
一种基于混合蚂蚁算法的QoS多播路由的方法 Download PDFInfo
- Publication number
- CN1731761A CN1731761A CNA2005100192430A CN200510019243A CN1731761A CN 1731761 A CN1731761 A CN 1731761A CN A2005100192430 A CNA2005100192430 A CN A2005100192430A CN 200510019243 A CN200510019243 A CN 200510019243A CN 1731761 A CN1731761 A CN 1731761A
- Authority
- CN
- China
- Prior art keywords
- node
- ant
- path
- sigma
- limit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于混合蚂蚁算法的QoS多播路由的方法,初期采用遗传算法过程生成信息素分布,后期利用蚂蚁算法正反馈求精确解。用遗传算法(见右式1):在规定的迭代次数以内求出最优解或次优解;用蚂蚁算法为信息路由表tabu赋值;比较所有蚂蚁走过的路径,选出FK最小的作为这次周游的最优路径,由下式计算Δτij(见右式2):
Description
技术领域
本发明涉及一种基于混合蚂蚁算法的QoS多播路由的方法(GA-AntMRQoS),用于Internet的QoS路由方法,属于电子技术,网络技术,通信技术,多媒体应用技术
背景技术
在QoS的早期研究中,许多QoS的研究着眼于调度,拥塞控制,资源预留,而对QoS路由研究得不多。近几年来许多学者开始从事QoS多播路由的研究,这对提高网络服务质量有一定的作用。研究基于Internet的QoS路由和多播路由算法,以获得较好的网络服务质量和高的网络资源利用率具有十分重要的研究意义,目前主要采用各种启发式算法来求解,如遗传算法蚂蚁算法等。
遗传算法是从代表问题可能潜在的解集的一个群体(population)开始的,而一个群体则由经过基因编码的一定数目的个体组成。每个个体实际上是染色体带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现是某种基因组成,它决定了个体的开头的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组成决定的。因此,在一开始需要实现从表现型到基因型的映射即编码工作。由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码。初代群体产生之后,按照适者生存和优胜劣汰的原理,逐代演化产生出越来越好的近似解。在每一代,根据问题域中个体的适应度大小挑选个体,并借助于自然遗传学的遗传算子进行组合交叉和变异,产生出代表新的解集的群体。这个过程将导致群体像自然进化一样的后代群体比前代更加适应于环境,末代群体中的最优个体经过解码,可以作为问题近似最优解。
遗传算法是近些年提出的一种新的仿生型优化算法,它被广泛用于解决各种具有NP难度的问题。其优点是具有大范围的全局搜索能力,鲁棒性强,具有内在的并行性,收敛速度快。其缺点是不能充分利用系统的反馈信息,产生大量冗余迭代,过快收敛会陷入局部最优解问题。随着人们研究的深入,人们发现一些优化算法如爬山法、梯度法、模拟退火算法具有很强的局部搜索能力,而另一些含问题相关的启发知识的启发式算法也有很高的运行效率,将这些优化算法的思想加以合理的融合,形成一种混合型算法,是一种提高运行效率和求解质量的有效手段。
蚂蚁算法的基本原理,首先从真实蚁群搜索食物的一个具体过程谈起。蚂蚁是一种群居昆虫,单个蚂蚁的行为极其简单,但由这样的单个简单的个体所组成的蚂蚁群体却表现出极其复杂的行为,能够完成复杂的任务。不仅如此,蚂蚁还能够适应环境的变化,如在蚁群运动路线上突然出现障碍物时,蚂蚁能够很快地重新找到最优路径。经过大量研究发现,蚁群之所以表现出复杂有序的行为,个体之间的信息交流与相互协作起着重要的作用。蚂蚁在运动过程中,能够在它所经过的路径上留下一种称之为信息素的物质,而且蚂蚁在运动过程中能够感知这种物质的存在及其强度,并以此指导自己的运动方向,蚂蚁倾向于朝着该物质强度的方向移动。蚂蚁个体之间就是通过这种信息的交流达到搜索食物的目的。
蚂蚁算法是一种仿生类算法,人工蚂蚁寻找最优路径的方法就是根据上面的真实蚂蚁寻找最优路径的方法提出的,即让人工蚂蚁根据路径上的数字信息素的大小(即强度)选择路径,并在所经过的路径上留下数字信息素,然后随着时间的推移,最优路径上的数字信息素就会越来越大,从而选择它的几率也就越来越大,最终所有的人工蚂蚁都将选择这条路径。这种模拟蚁群搜索食物的过程与著名的旅行商问题(TSP)非常相似(即:通过个体之间的信息交流与相互协作最终找到从蚁穴到食物源的最短路径),这就是最初提出用蚂蚁算法来求解TSP的原因。
混合蚂蚁算法的算法原理。
蚂蚁算法的优点是具有全局优化能力和本质上的并行性,同时具有天然的随机性、自适应性和分布式等特点,适合并行计算和求精确解。其缺点是初始信息素匮乏,求解速度慢。
发明内容
本发明的目的是基于遗传算法的快速全局搜索能力和蚂蚁算法的正反馈收敛机制,提出一种基于混合蚂蚁算法的QoS多播路由的方法,初期采用遗传算法过程生成信息素分布,后期利用蚂蚁算法正反馈求精确解,优势互补。
本发明的技术方案:本发明的基于混合蚂蚁算法的QoS多播路由的方法,在NS2平台下实现,包括单播和多播路由,其多播路由的方法是:
1)初始化网络节点,给出每条存在的边的时延和费用的值:
式中:T代表多播树,i.j代表节点,Δ为设定值;
t=0;//t是时间计数器,NC=0;//NC是为循环控制器;
2)用下式遗传算法在规定的迭代次数以内求出最优解或次优解:
式中τ代表某一位置的信息素,G代表i、j等节点构成的拓扑;
3)为信息路由表tabu赋值:
(A)赋初值s=0
s是tabu表的索引,tabu表是用来保存到t时刻为止到达的节点,tabuk(s)表示在当前路由选择中第k个蚂蚁访问的第s个节点;
(B)根据下式按照概率pij k选择下一个节点j;
//式中τij(t)指t时刻(i,j)边上信息素的浓度,
//U={0,1...,n-1}-tabuk表示第k个蚂蚁下一步可以选择的节点,
//α表示信息启发因子,β表示期望启发因子,
//ηij为启发因子,取ηij=1/cij*dij,为下一个节点j以及边(i,j)的时延和费用约束,计算出移到节点j之后的时延和费用的值,与时延约束Δ和费用约束C(T)比较,若超过约束值则重新选择节点,若无满足约束条件的路径可选,蚂蚁死亡;
否则移动第k个蚂蚁到节点j;将节点j插入到tabuk(s);重复本步直到tabu列表中包括所有目的节点;
4)比较所有蚂蚁走过的路径,选出FK最小的作为这次周游的最优路径;for(k=1;k<=m;++),其中FK+=Fij;//Fk为路径所有边适应度之和,Fij为边(i,j)的适度度},
按照下式计算Δτij:
//Δτij为最优蚂蚁在这次周游中在(i,j)边上留下的信息素的量,Q为开始时给出的一个常数初值,FK这里的值为这次周游最佳的路径中所有节点和边的时延和费用的和的积,为
5)进行信息素的全局更新,只有最优路径上的边信息素增加;
6)输出最优解的路径,直到每个目的节点都已经经过为止。
本发明的优点:初期采用遗传算法过程生成信息素分布,后期利用蚂蚁算法正反馈求精确解,兼有两者的优点。实验结果证明,用C++对本发明的方法进行了仿真并同遗传算法进行了比较,本发明的方法的时延曲线开始时抖动要大一些,这是因为在初始阶段,信息素对蚂蚁选择路径的影响不是很充分,随着迭代次数增加,信息素的影响充分发挥出来,曲线也趋于平稳;代价曲线比遗传算法平稳,收敛速度快于遗传算法。
附图说明
图1是本发明的流程图。
具体实施方式
本发明基于遗传算法的快速全局搜索能力和蚂蚁算法的正反馈收敛机制,提出一种混合蚂蚁GA-AntMRQoS算法,初期采用遗传算法过程生成信息素分布,后期利用蚂蚁算法正反馈求精确解,优势互补。
首先路径上的信息量由蚂蚁走过的路径上的目标函数决定,提出时延和最小费用约束的多播路由模型.计算机通信网一般用无向图G(V,E)表示,其中V(v1,v2,v3,……,VN)是网络节点的集合,E是链路的集合,每条链路e(i,j)∈E上具有两个参数:链路费用c(i,j)和链路时延d(i,j),s表示源节点,D(d1,d2,d3,……,dm)表示目的节点集合,所有目的节点的时延约束规定为Δ。时延受限多播路由算法要构造一棵根为源节点s,且覆盖所有目的节点的费用最小多播树T,同时树中各个目的节点的时延要满足时延约束Δ,这里目的节点的时延d(i,j)是指源节点到目的节点的路径(记为p(s,di))上每条边上时延的总和,多播树的时延D(T)是指目的节点时延的最大值,即:
其次进行描述性定义:路径上的信息量由蚂蚁走过的路径上的目标函数决定,即路径要满足的QoS约束。这里我们取
我们定义目标函数为FK=C(T)*D(T),适应度函数为:
本发明在NS2平台下实现,包括单播和多播路由,多播路由的方法如图1的流程图,具体如下:
1)初始化网络节点:
给出每条存在的边的时延和费用(dij,cij)的值即给出约束条件:
式中:T代表多播树,i.j代表节点,Δ为设定值;
t=0,//t是时间计数器;NC=0,//NC是为循环控制器;
2)用下式遗传算法在规定的迭代次数以内求出最优解:
式中τ代表某一位置的信息素,G代表i-j之间某一位置;
3)为信息路由表tabu赋值:
(A)赋初值s=0
对遗传算法求出的最优解中的边设置信息素初值为τij(t)=τC+τG,其它边设置为τC,τmin=τC;
for(k=1,k<=m;k++)
{将源节点值置入tabuk(s)中;}//即为将m只蚂蚁放在源节点,式中s是tabu表的索引,tabu列表是用来保存到t时刻为止到达的节点,tabuk(s)表示在当前路由选择中第k个蚂蚁访问的第s个节点;
(B)根据下式按照概率pk ij(t)选择下一个节点j;
//式中τij(t)指t时刻(i,j)边上信息素的浓度,
//U={0,1...,n-1}-tabuk表示第k个蚂蚁下一步可以选择的节点,
//α表示信息启发因子,β表示期望启发因子,
//ηij为启发因子,在TSP问题中取蚂蚁走过路径长度,在这里我们关心的是时延和费用,所以在这里我们取ηij=1/cij*dij,为下一个节点j以及边(i,j)的时延和费用约束。
S++;
for(k=1;k<=m;k++)
4)比较所有蚂蚁走过的路径,选出FK最小的作为这次周游的最优路径:
计算出移到节点j之后的时延和费用的值,与时延约束Δ和费用约束C(T)比较,若超过约束值则重新选择节点,若无满足约束条件的路径可选,蚂蚁死亡;按照下式计算Δτij:
FK+=Fij;//Fk为路径所有边适应度之和,Fij为边(i,j)的适度度;
for(k=1;k<=m;++)
其FK为无穷大;否则移动第k个蚂蚁到节点j;将节点j插入到tabuk(s),//Δτij为最优蚂蚁在这次周游中在(i,j)边上留下的信息素的量,Q为开始时给出的一个常数初值,FK这里的值为这次周游最佳的路径中所有节点和边的时延和费用的和的积,为
5)进行信息素的全局更新,只有最优路径上的边信息素增加;
if(i,j)∈best then
if τij(t+rn)<τmin then τij(t+n)=τmin;
else ifτij(t+n)>τmin then τij(t+n)=τmax;
else ifτij(t+n)=(1-ρ)*τmin+Δτij;
else ifτij(t+n)=(1-ρ)*τij(t);
//参数ρ必须设置为[0,1]之间的值,这是为了避免过快收敛,
在仿真中我们认为比较好的取值范围是0.5~0.7之间。
T=t+n;NC++;
将每条边(i,j)的信息素增量Δτij清零;//为下一次循环作准备。
6)输出最优解的路径,直到每个目的节点都已经经过为止。
if(NC<NCmax)**(无停滞状态出现)
then
{
清空所有tabu列表;
转到第4步,进行下一次循环;
else
{
输出最优解的路径,直到每个目的节点都已经经过为止;
}
本发明在Windows下运用VC的实现:
1)公共部分的实现:
定义路径节点
struct pathnode{//路径节点结果,
int path[150];//path[3*i]为路径的第i节点的节点号
......
pathnode*nest;//下一路径节点};
定义双亲链表
struct Tnode{
int status;//节点状态,0=根结点,1=不在树中,不是目的节点,
2=不在树中,是目的节点,3=在树中,不是目的
节点,4=在树中,是目的节点
......
TChile*next;//下一孩子结点};
2)遗传类的实现
chlass Graph{
public:
p[athnode*pathBak[VertexNum];//备用路径集
int numEdge;//图的边数
.......
public:
Init();
Graph();
......
bool pathrepeat(int,pathnode*);//加入的备用路径是否重复
};
class LTree//根结点序号为0
{
public:
TNode tree[VertexNum];
int wl;//树的费用
int maxtreeDelay;//树的最大时延
public:
LTree()’
virtual~LTee();
......
class Genetic
{
public:
double pmutation;//变异概率
double pcross;//交叉概率
......
public:
Genetic();
virtual~Genetic();
Init();//初始化,设置初始染色体
int min TreeFee(int mode);//最小费用
......
Genetic::CalFitness(){//计算适应度函数
......
Fitness[POPSIZE-1]=10000}
3)最小生成树的实现
void GGraph::prim(){
bool visited[VertexNum];//是否访问过的节点
int i,j,parent,child,min,k=0;
int minside[VertexNum][2];
LTree MSTtree;
MSTtree.Init();
For(i=0;i<VertexNum;i++)visited[i]=false;
visited[0]=true;//当前加入的边
......
child=k;parent=minside[k][1];
MSTtree.InsertEdge(parent,child);
visited[k]=true;//
for (j=1;j<VertexNum;j++)//更新最短边数组
......
LTree::mutation(){
int i,ok=0,k,child;
TChild*temp;
......
temp=tree[i].first;//随机挑选一条染色体
......
AmentTreeDelay();//修正树
AmentTreefee(0,0,0);}
3)蚂蚁类的实现
class Ant{
public:
int VertexNum;节点数
int**delayMatrix;//时延矩阵
int**costMatrix;//费用矩阵
double**pheromoneMatrix;//信息素矩阵
......
int GetDelay(int,int);取边的时延
void localsearch();//搜索路径
double antselect(int,int)}
Ant :: initpheromone(int VertexNum;int VertexNum;doublepheromone)
{for(inti=0;i<VertexNum;i++)
for(intj=0;j>VertexNum;j++)
pheromone[i][j]=phermone;}
......
sum +=pheromoneMatrix[i][k]/(delayMatrix[i][k]*costMatrix{i}[ki]);}
Solution*Solution::copy(){//将当前最优解保存
Solution*nesSol=new Wolution();
nesSol_>fitness=fitness;
nesSol_>solution=solution;
return nesSol;
最后进行正确性证明和复杂性分析,证明是有效的。
Claims (1)
1.一种基于混合蚂蚁算法的QoS多播路由的方法,在NS2平台下实现,包括单播和多播路由方法,其特征在于:多播路由的方法是:
1)初始化网络节点,给出每条存在的边的时延和费用的值:
式中:T代表多播树,i.j代表节点,Δ为设定值;
t=0;//t是时间计数器,NC=0;//NC是为循环控制器;
2)用下式遗传算法在规定的迭代次数以内求出最优解或次优解:
式中τ代表某一位置的信息素,G代表i、j等节点构成的拓扑;
3)为信息路由表tabu赋值:
(A)赋初值s=0
式中s是tabu表的索引,tabu表是用来保存到t时刻为止到达的节点,tabuk(s)表示在当前路由选择中第k个蚂蚁访问的第s个节点;
(B)根据下式按照概率Pij k选择下一个节点j;
//式中τij(t)指t时刻(i,j)边上信息素的浓度,
//U={0,1...,n-1}-tabuk表示第k个蚂蚁下一步可以选择的节点,
//α表示信息启发因子,β表示期望启发因子,
//ηij为启发因子,取ηij=1/cij*dij,为下一个节点j以及边(i,j)的时延和费用约束,计算出移到节点j之后的时延和费用的值,与时延约束Δ和费用约束C(T)比较,若超过约束值则重新选择节点,若无满足约束条件的路径可选,蚂蚁死亡;
否则移动第k个蚂蚁到节点j;将节点j插入到tabuk(s);重复本步直到tabu列表中包括所有目的节点;
4)比较所有蚂蚁走过的路径,选出FK最小的作为这次周游的最优路径;for(k=1;k<=m;++),其中FK+=Fij;//Fk为路径所有边适应度之和,Fij为边(i,j)的适度度},
按照下式计算Δτij:
//Δτij为最优蚂蚁在这次周游中在(i,j)边上留下的信息素的量,Q为开始时给出的一个常数初值,FK这里的值为这次周游最佳的路径中所有节点和边的时延和费用的和的积,为
5)进行信息素的全局更新,只有最优路径上的边信息素增加;
6)输出最优解的路径,直到每个目的节点都已经经过为止。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2005100192430A CN1731761A (zh) | 2005-08-05 | 2005-08-05 | 一种基于混合蚂蚁算法的QoS多播路由的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2005100192430A CN1731761A (zh) | 2005-08-05 | 2005-08-05 | 一种基于混合蚂蚁算法的QoS多播路由的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1731761A true CN1731761A (zh) | 2006-02-08 |
Family
ID=35964065
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2005100192430A Pending CN1731761A (zh) | 2005-08-05 | 2005-08-05 | 一种基于混合蚂蚁算法的QoS多播路由的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1731761A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101170503B (zh) * | 2007-11-23 | 2010-08-18 | 中兴通讯股份有限公司 | 一种组播路由蚁群算法的优化方法 |
CN1996921B (zh) * | 2006-12-31 | 2010-11-24 | 华为技术有限公司 | 建立业务连接的方法、路由设备、业务网络 |
CN101237469B (zh) * | 2008-02-27 | 2011-07-20 | 中山大学 | 运用蚁群算法优化多QoS网格工作流的方法 |
CN101605139B (zh) * | 2009-07-10 | 2013-07-03 | 中兴通讯股份有限公司 | 端到端业务创建的方法和装置 |
CN103634842A (zh) * | 2013-12-20 | 2014-03-12 | 大连大学 | 一种分布式卫星网络群间路由方法 |
CN105791117A (zh) * | 2016-03-21 | 2016-07-20 | 广东科学技术职业学院 | 一种基于蚁群算法快速求解QoSR的方法 |
CN111385853A (zh) * | 2020-03-06 | 2020-07-07 | 重庆邮电大学 | 无线传感器网络中基于改进蚁群算法的定向扩散路由方法 |
CN113472671A (zh) * | 2020-03-30 | 2021-10-01 | 中国电信股份有限公司 | 组播路由的确定方法、装置和计算机可读存储介质 |
-
2005
- 2005-08-05 CN CNA2005100192430A patent/CN1731761A/zh active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1996921B (zh) * | 2006-12-31 | 2010-11-24 | 华为技术有限公司 | 建立业务连接的方法、路由设备、业务网络 |
CN101170503B (zh) * | 2007-11-23 | 2010-08-18 | 中兴通讯股份有限公司 | 一种组播路由蚁群算法的优化方法 |
CN101237469B (zh) * | 2008-02-27 | 2011-07-20 | 中山大学 | 运用蚁群算法优化多QoS网格工作流的方法 |
CN101605139B (zh) * | 2009-07-10 | 2013-07-03 | 中兴通讯股份有限公司 | 端到端业务创建的方法和装置 |
CN103634842A (zh) * | 2013-12-20 | 2014-03-12 | 大连大学 | 一种分布式卫星网络群间路由方法 |
CN103634842B (zh) * | 2013-12-20 | 2016-09-21 | 大连大学 | 一种分布式卫星网络群间路由方法 |
CN105791117A (zh) * | 2016-03-21 | 2016-07-20 | 广东科学技术职业学院 | 一种基于蚁群算法快速求解QoSR的方法 |
CN111385853A (zh) * | 2020-03-06 | 2020-07-07 | 重庆邮电大学 | 无线传感器网络中基于改进蚁群算法的定向扩散路由方法 |
CN113472671A (zh) * | 2020-03-30 | 2021-10-01 | 中国电信股份有限公司 | 组播路由的确定方法、装置和计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1731761A (zh) | 一种基于混合蚂蚁算法的QoS多播路由的方法 | |
CN1708958A (zh) | 无线自组织网络中的最大生存时间路由 | |
CN1288519C (zh) | 机器人系统控制 | |
CN1517869A (zh) | 处理器、运算处理方法和优先度决定方法 | |
CN1877532A (zh) | 编译装置 | |
CN101061672A (zh) | 通信系统、无线局域网基站控制装置和无线局域网基站装置 | |
CN1221909C (zh) | 并行处理方法中的作业分配方法及并行处理方法 | |
CN1855867A (zh) | 用于在无线网格网络中分发移动站信息的方法和设备 | |
CN1781093A (zh) | 用于存储和访问互锁树数据仓库中的数据的系统和方法 | |
CN1722130A (zh) | 可重配置运算装置 | |
CN1908892A (zh) | 测试用例设计方法和系统 | |
CN1945602A (zh) | 一种基于人工神经网络的特征选择方法 | |
CN1900959A (zh) | 设计制造的支援装置、支援程序和支援方法 | |
CN1533102A (zh) | 数据分组通信设备 | |
CN101031892A (zh) | 排列的生成方法以及排列生成程序 | |
CN1222926C (zh) | 语音编码方法及其装置 | |
CN1666474A (zh) | 管理节点设备、节点设备、网络配置管理系统、网络配置管理方法、节点设备控制方法、和管理节点设备控制方法 | |
CN1304996C (zh) | 超大规模集成电路避障碍的直角Steiner树方法 | |
CN1309222C (zh) | 通信量分布控制装置和方法 | |
CN1474297A (zh) | 一种基于gis的计算机网络地图的组织维护方法 | |
CN1828532A (zh) | 一种将业务流程图转换为执行语言的方法 | |
CN1444161A (zh) | 物料清单(bom)数据的拆分方法 | |
CN100336065C (zh) | 线长优化的绕障碍的直角布线树方法 | |
CN101046867A (zh) | 工作流决定方法以及工作流决定系统 | |
CN1653486A (zh) | 模式的特征选择方法、分类方法、判定方法、程序及单元 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |