⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 routing_r.m

📁 复杂网络中
💻 M
字号:

alapha=0.9;
N=600;

F=500;

for i=1:N
    Cii(i)=sum(Nodes(:,i));
end
   Ci=sum(Cii)/N;
 
%    aaa=zeros(10);
%当alapha=1,q=0,N=100时,R的临界值是80-100,
for R=420:20:500
    list=zeros(F*R,2);
    
    Packet=zeros(N,1);
    D=0;
    for i=1:N
        Packet(i)=0;
    end
        aa=zeros(F,1);
    for T=1:F
        list2=zeros(N,1);
 %     w=lamda*N*t
%         for i=1:N
%             list2(i,2)=0;
%         end
        for i=1:R
            b=rand(1,2)*N;
            B(i,:)=ceil(b);  
            while B(i,1)==B(i,2)   %选择R对源端和目的端,且源端和目的端不是同一点
                  b=rand(1,2)*N;
                  B(i,:)=ceil(b);   
            end
        end  
            list((T-1)*R+1:T*R,1:2)=B; %依次把选择的R对源端和目的端付给list
    
        for i=1:R;
            Packet(B(i,1))=Packet(B(i,1))+1; %选择的R个源端的数据包个数分别加1
        end
            D=D+R;  
   
        for i=1:R*T
            t2=1;
            e=100;
            ts=list(i,1);
            td=list(i,2);
            if ts==0
                 continue;
            end
                 list2(ts)=list2(ts)+1;    %list2第二列加一
            if list2(ts)>10  %第ts个节点对应的数据包超过了此节点的最大处理能力时,此时不进行传输
           % if list2(ts,2)>10
                 continue;
            end
        
            x=1;
           for k=1:N
               if Nodes(ts,k)==1
                  if k==td      %如果ts的邻居节点有目的节点,传递成功,源端赋0
%                    w=w-1;
                     D=D-1;
                     list(i,1)=0;
                     t2=0;
                     
                     continue;
                  end
               end       % if  Spath(k,td)<N
           end
        
           if t2~=0
               for k=1:N
                  if Nodes(ts,k)==1
                     Short=Spath(k,td);
                     e=alapha*Short+(1-alapha)*Packet(k)/Cii(k);
%                     e=alapha*Short+(1-alapha)*Packet(k)/5;
                      if x==1
                         min=e;
                         x=x+1; 
                         t2=k;
                      end
                      if e<min
                         min=e;
                         t2=k;
                      end
                  end
              end
   %执行路由策略,确定下一节点t2(i) 
              Packet(t2)=Packet(t2)+1;   
               list(i,1)=t2;
            
           end
         Packet(ts)=Packet(ts)-1 ;
%        list2(ts,2)=list2(ts,2)-1;
        
%       Short=N;        
       end
      aa(T)=D;
    end
%   aaa(R)=Ci*(aa(F)-aa(F-10)+aa(F-1)-aa(F-11)+aa(F-2)-aa(F-12)+aa(F-3)-aa(F-13)+aa(F-4)-aa(F-14)+aa(F-5)-aa(F-15)+aa(F-6)-aa(F-16)+aa(F-7)-aa(F-17)+aa(F-8)-aa(F-18)+aa(F-9)-aa(F-19))/(20*R);
    aaa(R)=aa(F)/(R*F);
%    semilogy(1:F,aa,'b-');
%    hold
end
 plot(60:20:400,aaa(60:20:400),'g*');
 
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -