资源简介
LEACH的改进算法,LEACH-C,优化网络结构,节省网络能量
代码片段和文件信息
% 初始化设置 %%%%%%%%%%%%%%-initial of parameters-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear;
%设定平面坐标
xm=200;
ym=200;
%基站的纵横坐标
sink.x=0.5*xm;
sink.y=1.25*ym;
n=50; %总的节点数
ncl=4; %分区域的数目
m=5;%每个簇内与基站通信节点的数目
%初始能量设置每一个节点的初始化能量
E0=0.5;
ET=E0-0.1;
%能量模型:单位焦耳;
%发送和接受数据的能量;
ETX=50*10^(-9);
ERX=50*10^(-9);
%放大器的两个参数
Efs=10*10^(-12);
Emp=0.0013*10^(-12);
%融合数据所要消耗的能量
EDA=5*10^(-9);
packetsize=4000;%数据包的大小
ksize=100;%控制包大小
%能量损耗的界限值,大于它符合friss free space model小于它则符合two-ray ground model
d0=sqrt(Efs/Emp); % d0=87;
%%%%%%%%%%%%%%-End of parameters-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%-产生随机节点绘出图形-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure(1);
for i=1:1:n
S(i).xd=rand(11)*xm;
S(i).yd=rand(11)*ym;
S(i).type=‘0‘; %N节点一般节点
%给初始节点能量赋值
S(i).E=E0;
S(i).energy=0;%初始节点消耗的能量;
plot(S(i).xdS(i).yd‘o‘ ‘MarkerEdgeColor‘‘k‘‘MarkerFaceColor‘‘g‘‘MarkerSize‘8);
hold on;
end
%绘出基站点坐标
S(n+1).xd=sink.x;
S(n+1).yd=sink.y;
plot(S(n+1).xdS(n+1).yd‘X‘‘MarkerSize‘8);
%%%%%%%%%%%%%%-随机节点产生完毕-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%
% 按区域划分链,先分为几个区域并找到这个区域内的节点
line([0 xm][ym ym]‘linestyle‘‘--‘‘color‘‘r‘)
for j=1:1:ncl
cn=0;
j;
line([j/ncl*xm j/ncl*xm][0 ym]‘linestyle‘‘--‘‘color‘‘r‘);
for i=1:1:n
if S(i).xd<=(j/ncl)*xm &&S(i).xd >(j-1)/ncl*xm
cn=cn+1;
S(i).cl=j;
S(i).clid=cn;
i;
end
end
cn;
C(j).cn=cn;
end
%节点分配完毕
%根据大小纵坐标成链,先进行排序
for j=1:1:ncl
sid=1;
while sid<=C(j).cn
for i=1:1:n
if S(i).cl==j && S(i).clid==sid
C(j).hid=i;
end
end
for k=1:1:n
if S(k).cl==j && S(k).yd temp.xd=S(C(j).hid).xd;
temp.yd=S(C(j).hid).yd;
S(C(j).hid).xd=S(k).xd;
S(C(j).hid).yd=S(k).yd;
S(k).xd=temp.xd;
S(k).yd=temp.yd;
end
end
sid=sid+1;
end
end
%排序完成后按纵坐标的顺序排列,簇内的排列顺序与节点的纵坐标有关,按纵坐标从大到小;
%把簇内节点属性按簇内的顺序赋值为一个数组H,操纵H来实现其它功能;
for j=1:1:ncl
t=1;
while t<=C(j).cn
for i=1:1:n
if S(i).cl==j &&S(i).clid==t
H(jt).cl=j;
H(jt).id=i;
H(jt).clid=S(i).clid;
H(jt).xd=S(i).xd;
H(jt).yd=S(i).yd;
H(jt).E=S(i).E;
H(jt).energy=S(i).energy;
end
end
t=t+1;
end
end
%按节点在每个簇内的顺序进行选择父节点和子节点;cid为子节点,pid为父节点,并定义节点类型;
for j=1:1:ncl
for t=1:1:m
T(jt)=t;
end
end
for j=1:1:ncl
H(jn+1).xd=sink.x;
H(jn+1).yd=sink.y;
for t=1:1:C(j).cn
if t==1
H(jt).pid=n+1;
H(jt).cid=T(jt+1);
H(jt).type=‘H‘;
sb=1;
elseif t H(jt).pid=T(jt-1);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 22393 2009-01-28 01:15 work\byang.m
文件 87 2009-01-27 16:42 work\distance.m
文件 6096 2009-02-05 16:04 work\qie.m
文件 5814 2009-01-27 23:58 work\qie2.m
文件 5808 2009-01-28 01:32 work\qie3.m
文件 5903 2009-02-02 22:04 work\qqie.m
文件 6096 2009-02-04 20:12 work\qie.asv
目录 0 2009-02-28 20:17 work
----------- --------- ---------- ----- ----
52197 8
- 上一篇:传智黑马UI整套课程
- 下一篇:TM1650手册
评论
共有 条评论