资源简介
该程序是基于蜂群算法的QOS多播路由技术,可以将随机节点进行自适应路径选择,能量最低
代码片段和文件信息
function [MRTEDGEScost]=ACA_QoS_MR(CDSEDmaxKMAlphaBetaGammaTauRhoQ)
%% Ant Colony Algorithm for QoS Multicast Routing
% QoS组播路由蚁群算法
% 【GreenSim.C原创】QoS组播路由问题的蚁群算法通用Matlab源码
% GreenSim团队原创作品,转载请注明
% 此源代码完整无删减,请放心使用
% 欲与原作者技术交流请发邮件aihuacheng@gmail.com
%% 输入参数列表
% C 费用邻接矩阵(N×N)
% D 延时邻接矩阵(N×N)
% S 源节点
% E 组播目的节点(行向量)
% Dmax 延时约束
% K 迭代次数(指蚂蚁出动多少波)
% M 蚂蚁个数(每一波蚂蚁有多少个)
% Alpha 表征信息素重要程度的参数
% Beta 表征启发式因子(费用)重要程度的参数
% Gamma 表征启发式因子(延时)重要程度的参数
% Tau 初始信息素矩阵
% Rho 信息素蒸发系数
% Q 信息素增加强度系数
%% 输出参数列表
% MRT 最优组播树(01邻接矩阵表示)
% EDGES 最优组播树所有的边
% cost 最优组播树的费用
%%
C=rand(88);
D=rand(88);
S=3;
E=[61];
Dmax=10;
K=10;
M=3;
Alpha=0.63;
Beta=0.4;
Gamma=0.8;
Tau=ones(88);
Rho=ones(88);
Q=2;
%% 第一步:变量初始化
N=size(C1);%网络节点个数为N
P=length(E);%目的节点个数为M
MRT=zeros(NN);
cost=inf;
ROUTES=cell(PKM);%用细胞结构存储到每一个目的节点的每一代的每一只蚂蚁的爬行路线
DELAYS=inf*ones(PKM);%用三维数组存储每代每个蚂蚁爬行到各个目的节点的延时
COSTS=inf*ones(PKM);%用三维数组存储每代每个蚂蚁爬行到各个目的节点的费用
%% 第二步:启动到P个目的节点的K轮蚂蚁觅食活动,每轮派出M只蚂蚁
for p=1:P
Tau=ones(NN);
for k=1:K
for m=1:M
%% 第三步:状态初始化
W=S;%当前节点初始化为起始点
Path=S;%爬行路线初始化
PD=0;%爬行路线延时初始化
PC=0;%爬行路线费用初始化
TABU=ones(1N);%禁忌表初始化
TABU(S)=0;%S已经在初始点了,因此要排除
CC=C;%费用邻接矩阵备份
DD=D;%延时邻接矩阵备份
%% 第四步:下一步可以前往的节点
DW=DD(W:);
DW1=find(DW for j=1:length(DW1)
if TABU(DW1(j))==0
DW(j)=inf;
end
end
LJD=find(DW Len_LJD=length(LJD);%可选节点的个数
%% 觅食停止条件:蚂蚁未遇到食物或者陷入死胡同
while (W~=E(p))&&(Len_LJD>=1)
%% 第五步:转轮赌法选择下一步怎么走
PP=zeros(1Len_LJD);
for i=1:Len_LJD
PP(i)=(Tau(WLJD(i))^Alpha)*(C(WLJD(i))^Beta)*(D(WLJD(i))^Gamma);
end
PP=PP/(sum(PP));%建立概率分布
Pcum=cumsum(PP);
Select=find(Pcum>=rand);
to_visit=LJD(Select(1));%下一步将要前往的节点
%% 第六步:状态更新和记录
Path=[Pathto_visit];%#ok %路径增加
PD=PD+DD(Wto_visit);%路径延时累计
PC=PC+CC(Wto_visit);%路径费用累计
W=to_visit;%蚂蚁移到下一个节点
for kk=1:N
if TABU(kk)==0
CC(Wkk)=inf;
CC(kkW)=inf;
DD(Wkk)=inf;
DD(kkW)=inf;
end
end
TABU(W)=0;%已访问过的节点从禁忌表中删除
DW=DD(W:);
DW1=find(DW
- 上一篇:倒立摆simuli
nk控制仿真.zip - 下一篇:多层bp神经网络代码附带数据集
相关资源
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
- 通过不同方法进行粗糙集属性约简m
评论
共有 条评论