【路由优化】基于蚁群算法优化无线传感器路由选择问题含Matlab源码
【路由优化】基于蚁群算法优化无线传感器路由选择问题含Matlab源码
TT_Matlab
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。
1 简介
无线传感器网络(Wireless Sensor Network, WSN)[1]是伴随着信息技术的发展,继因特网之后基于无线通信技术、分布式计算系统、微电机系统等学科发展起来的一个新的研究领域。作为一门交叉学科,它涉及了计算机、微电子、传感器、网络、通信、信号处理等诸多领域,能够通过传感器节点对其所在环境的各种信息进行实时探测采集,再经过适当精简处理以后传输给终端用户使用。无线传感器网络通常由数量众多的微小传感器节点组成。这些节点的能量供给十分有限,在很多应用环境下替换能源的做法不可行,利用太阳能,风能等可再生能源为传感器提供所需能量的技术水平与大规模实际应用之间还有较大差距。为了尽可能延长网络生命周期,设计优化路由协议,改进路由策略成为当前唯一可行的技术途经,这也是目前无线传感器网络研究领域的一个重要课题。近年来国内外众多学者针对无线传感网络的应用需求提出了许多改进的路由协议,但是大多数协议把改进目标放到提升网络服务质量上,对节点能量紧缺问题的关注较为不足。随着各种智能算法的相继出现,越来越多的学者将它们应用于无线传感器网络路由协议的研究中,而蚂蚁寻找食物的行为与网络中节点寻找路由的过程十分相似,因此基于蚁群算法的路由协议被陆续提出。此外,由于蚁群算法是一种利用蚂蚁群体协作行为开发的智能算法,拥有群体算法的本质并行性,拥有良好的自组织与鲁棒性,因此被逐步引入到无线传感网路由协议设计中来。本文对蚁群算法的原理与其自身特点进行了深入的研究分析,并在对现有的无线传感器网路由协议,特别是基于蚁群算法的路由协议的研究基础上,以延长网络生命期为目标,将蚁群算法的优良特性与无线传感器网络路由协议设计的要求结合起来。
2 部分代码
clear all
close all
clc
%% GPU配置
%
gpu = gpuDevice;
% gpu(
1
);
tic
%% 此模拟的主要配置值
dataset.nodeNo = 9;%
节点数
ACOnodeNo = dataset.nodeNo;
dataset.nodePosition(
1
,
:
) = [
1
50
50
];
%(发送节点固定位置)
dataset.nodePosition(
2
,
:
) = [
2
900
900
];
%(接收节点固定位置)
dataset.NeighborsNo =
5
;
dataset.range =
500
;%成为一个节点的邻居的%容差距离(基于欧几里得距离)
dataset.atenuationFactor =
1.8
; %自由空间中的 %衰减因子 - 范围从
1.8
到
4
适当的环境
dataset.minEnergy =
80
; % Mw - 毫瓦(
70
% 能量)
dataset.maxEnergy =
100
; % Mw - 毫瓦(全能量 (
100
%) -
1
伏特能量内的
1
mAh 充电容量)
dataset.energyconsumptionperCicle =
0
.
85
;
dataset.energyrecoveryperCicle =
0
.
2
;
dataset.minenergyfactor =
0
.
18
;
dataset.maxenergyfactor =
0
.
2
;
STenergy=inf;
packet=
0
;
iterationcounter=
1
;
plotgraphs=
1
; %如果要绘制图形,选择
1
表示“是”或选择
0
表示“否”(如果没有则性能更好)
reprodutibily =
0
; %
1
= 是(总是生成相同的随机数)(
0
)表示不可重现(每次代码执行时使用不同的随机数);
% 位置排序
if
reprodutibily ==
0
rng(
’shuffle’
);
else
rng(
’default’
);
end
for
a =
3
: dataset.nodeNo
dataset.nodeId = a;
garbage.x = randi([
1
900
]); %Xpos sortition
garbage.y = randi([
1
900
]); %Ypos sortition
dataset.nodePosition(a,
:
) = [dataset.nodeId garbage.x garbage.y]; %NodeID, X
and
Y position into nodePosition table
end
%欧几里得距离计算从一个节点到所有其他节点
for
i =
1
: dataset.nodeNo
for
j =
1
: dataset.nodeNo
garbage.x1 = dataset.nodePosition(i,
2
);
garbage.x2 = dataset.nodePosition(j,
2
);
garbage.y1 = dataset.nodePosition(i,
3
);
garbage.y2 = dataset.nodePosition(j,
3
);
dataset.euclidiana(i,j) = sqrt( (garbage.x1 - garbage.x2) ^
2
+ (garbage.y1 - garbage.y2)^
2
);
end
end
%边缘矩阵定义由于“范围”变量值
dataset.weights = lt(dataset.euclidiana,dataset.range);
% 图表构建
G=graph(dataset.weights,
’omitselfloops’
); %Graph creation based on adjacency matrix (Edges matrix) built above
%欧几里得距离提取所有存在的端到端形成
%“距离容差”(范围变量值)
for
a =
1
: height(G.Edges)
garbage.s = G.Edges.EndNodes(a,
1
);
garbage.t = G.Edges.EndNodes(a,
2
);
garbage.Z(a,
:
) = dataset.euclidiana(garbage.s,garbage.t);
end
G.Edges.Euclidiana = garbage.Z(
:
,
1
);
%初始能量排序(从
70
% 到
100
% - minEnergy 和 max Energy 变量值)
[dataset.nodePosition(
:
,
4
)] = dataset.maxEnergy -(dataset.maxEnergy-dataset.minEnergy)*rand(dataset.nodeNo,
1
);
dataset.nodePosition(
1
:
2
,
4
)=STenergy;
fclose(fileID); %关闭外部数据采集器文件
if
plotgraphs ==
1
%用红色绘制所有死节点
for
a =
1
: length(garbage.deadnodelist)
garbage.b=garbage.deadnodelist(a,
1
);
scatter(dataset.nodePosition(garbage.b,
2
),dataset.nodePosition(garbage.b,
3
),
’MarkerFaceColor’
,
’red’
);
end
end
%最后一个图的标题
try
title([
’WSN最短路径: ’
,num2str(iterationcounter),
’ |跳数: ’
,num2str(hopsnumber),
’ |发送的数据包: ’
,num2str(packet),
’ |死节点: ’
,num2str(deadnode),
’ |路由器节点: ’
, num2str(garbage.routepath),
’{color{red} - ALL ROUTES UNAVAILABLE}’
])
catch
disp(
’NO ROUTES BETWEEN SOURCE (NODE1) AND TARGET (NODE2)’
)
end
%Message 如果在第一次迭代中源和目标之间没有路径
disp(
’NO ROUTES BETWEEN SOURCE (NODE1) AND TARGET (NODE2)’
)
%调用 aco.m 文件以在 aco 脚本中运行相同的场景
toc
run aco.m
3 仿真结果
4 参考文献
[1]陶强. 基于蚁群算法的无线传感器网络路由优化研究[D]. 安徽理工大学, 2015.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
-
2023年血糖新标准公布,不是3.9-6.1,快来看看你的血糖正常吗? 2023-02-07
-
2023年各省最新电价一览!8省中午执行谷段电价! 2023-01-03
-
GB 55009-2021《燃气工程项目规范》(含条文说明),2022年1月1日起实施 2021-11-07
-
PPT导出高分辨率图片的四种方法 2022-09-22
-
2023年最新!国家电网27家省级电力公司负责人大盘点 2023-03-14
-
全国消防救援总队主官及简历(2023.2) 2023-02-10
-
盘点 l 中国石油大庆油田现任领导班子 2023-02-28
-
我们的前辈!历届全国工程勘察设计大师完整名单! 2022-11-18
-
关于某送变电公司“4·22”人身死亡事故的快报 2022-04-26
