QoS组播路由问题的蚁群算法通用MATLAB源码Word文件下载.doc

上传人:b****2 文档编号:14618721 上传时间:2022-10-23 格式:DOC 页数:6 大小:69.50KB
下载 相关 举报
QoS组播路由问题的蚁群算法通用MATLAB源码Word文件下载.doc_第1页
第1页 / 共6页
QoS组播路由问题的蚁群算法通用MATLAB源码Word文件下载.doc_第2页
第2页 / 共6页
QoS组播路由问题的蚁群算法通用MATLAB源码Word文件下载.doc_第3页
第3页 / 共6页
QoS组播路由问题的蚁群算法通用MATLAB源码Word文件下载.doc_第4页
第4页 / 共6页
QoS组播路由问题的蚁群算法通用MATLAB源码Word文件下载.doc_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

QoS组播路由问题的蚁群算法通用MATLAB源码Word文件下载.doc

《QoS组播路由问题的蚁群算法通用MATLAB源码Word文件下载.doc》由会员分享,可在线阅读,更多相关《QoS组播路由问题的蚁群算法通用MATLAB源码Word文件下载.doc(6页珍藏版)》请在冰豆网上搜索。

QoS组播路由问题的蚁群算法通用MATLAB源码Word文件下载.doc

N)

延时邻接矩阵(N×

源节点

组播目的节点(行向量)

Dmax 

延时约束

迭代次数(指蚂蚁出动多少波)

蚂蚁个数(每一波蚂蚁有多少个)

Alpha 

表征信息素重要程度的参数

Beta 

表征启发式因子(费用)重要程度的参数

Gamma 

表征启发式因子(延时)重要程度的参数

Tau 

初始信息素矩阵

Rho 

信息素蒸发系数

信息素增加强度系数

%%输出参数列表

MRT 

最优组播树(01邻接矩阵表示)

EDGES 

最优组播树所有的边

cost 

最优组播树的费用

%%

%%第一步:

变量初始化

N=size(C,1);

%网络节点个数为N

P=length(E);

%目的节点个数为M

MRT=zeros(N,N);

cost=inf;

ROUTES=cell(P,K,M);

%用细胞结构存储到每一个目的节点的每一代的每一只蚂蚁的爬行路线

DELAYS=inf*ones(P,K,M);

%用三维数组存储每代每个蚂蚁爬行到各个目的节点的延时

COSTS=inf*ones(P,K,M);

%用三维数组存储每代每个蚂蚁爬行到各个目的节点的费用

%%第二步:

启动到P个目的节点的K轮蚂蚁觅食活动,每轮派出M只蚂蚁

forp=1:

P

Tau=ones(N,N);

fork=1:

K

form=1:

M

%% 

第三步:

状态初始化

W=S;

%当前节点初始化为起始点

Path=S;

%爬行路线初始化

PD=0;

%爬行路线延时初始化

PC=0;

%爬行路线费用初始化

TABU=ones(1,N);

%禁忌表初始化

TABU(S)=0;

%S已经在初始点了,因此要排除

CC=C;

%费用邻接矩阵备份

DD=D;

%延时邻接矩阵备份

第四步:

下一步可以前往的节点

DW=DD(W,:

);

DW1=find(DW<

inf);

forj=1:

length(DW1)

ifTABU(DW1(j))==0

DW(j)=inf;

end

LJD=find(DW<

%可选节点集

Len_LJD=length(LJD);

%可选节点的个数

觅食停止条件:

蚂蚁未遇到食物或者陷入死胡同

while(W~=E(p))&

&

(Len_LJD>

=1)

第五步:

转轮赌法选择下一步怎么走

PP=zeros(1,Len_LJD);

fori=1:

Len_LJD

PP(i)=(Tau(W,LJD(i))^Alpha)*(C(W,LJD(i))^Beta)*(D(W,LJD(i))^Gamma);

PP=PP/(sum(PP));

%建立概率分布

Pcum=cumsum(PP);

Select=find(Pcum>

=rand);

to_visit=LJD(Select

(1));

%下一步将要前往的节点

第六步:

状态更新和记录

Path=[Path,to_visit];

%路径增加

PD=PD+DD(W,to_visit);

%路径延时累计

PC=PC+CC(W,to_visit);

%路径费用累计

W=to_visit;

%蚂蚁移到下一个节点

forkk=1:

N

ifTABU(kk)==0

CC(W,kk)=inf;

CC(kk,W)=inf;

DD(W,kk)=inf;

DD(kk,W)=inf;

TABU(W)=0;

%已访问过的节点从禁忌表中删除

第七步:

记下每一代每一只蚂蚁的觅食路线和路线长度

ROUTES{p,k,m}=Path;

ifPath(end)==E(p)&

PD<

=Dmax

DELAYS(p,k,m)=PD;

COSTS(p,k,m)=PC;

else

DELAYS(p,k,m)=inf;

COSTS(p,k,m)=inf;

第八步:

更新信息素

Delta_Tau=zeros(N,N);

%更新量初始化

ifCOSTS(p,k,m)<

inf&

DELAYS(p,k,m)<

Dmax

ROUT=ROUTES{p,k,m};

TS=length(ROUT)-1;

%跳数

Cpkm=COSTS(p,k,m);

fors=1:

TS

x=ROUT(s);

y=ROUT(s+1);

Delta_Tau(x,y)=Delta_Tau(x,y)+Q/Cpkm;

Delta_Tau(y,x)=Delta_Tau(y,x)+Q/Cpkm;

Tau=(1-Rho).*Tau+Delta_Tau;

%信息素挥发一部分,新增加一部分

end

%%第九步:

整理输出结果

MINCOSTS=NaN*ones(1,K);

allcost=zeros(1,0);

fork=1:

COSTkm=COSTS(:

k,m);

DELAYkm=DELAYS(:

ifsum(COSTkm)<

sum(DELAYkm)<

inf

Tree=zeros(N,N);

forp=1:

path=ROUTES{p,k,m};

RLen=length(path);

(RLen-1)

Tree(path(i),path(i+1))=1;

Tree(path(i+1),path(i))=1;

TC=Tree.*C;

forii=1:

forjj=1:

ifisnan(TC(ii,jj))

TC(ii,jj)=0;

mincost=0.5*sum(sum(TC));

ifmincost<

cost

MINCOSTS(1,k)=mincost;

MRT=Tree;

cost=mincost;

allcost=[allcost,cost];

MM=triu(MRT);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1