• 大小: 12KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2023-01-27
  • 语言: 其他
  • 标签:

资源简介

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


评论

共有 条评论

相关资源