您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 图形图像 > Salama网络拓扑随机生成算法Matlab源码
Salama网络拓扑随机生成算法Matlab源码(2007-03-0610:19:00)%Salama博士的网络拓扑随机生成算法%Border_length----正方形区域的边长,单位:km%Node_amount------网络节点的个数%Alpha------------网络特征参数,Alpha越大,短边相对长边的比例越大%Beta-------------网络特征参数,Beta越大,边的密度越大%Sxy--------------用于存储节点的序号,横坐标,纵坐标的矩阵%Cost-------------用于存储边的费用的邻接矩阵,费用在[2,10]之间随机选取,无边的取无穷大%Delay------------用于存储边的时延的邻接矩阵,时延等于边的距离除以三分之二光速,无边的取无穷大function[Sxy,Cost,Delay]=Net_Create(Border_length,Node_amount,Alpha,Beta)%参数初始化Sxy=zeros(3,Node_amount);Cost=zeros(Node_amount,Node_amount);Delay=Cost;%在正方形区域内随机均匀选取Node_amount个节点fori=1:Node_amountSxy(2,i)=Border_length*rand;Sxy(3,i)=Border_length*rand;end%按横坐标由小到大的顺序重新为每一个节点编号temp=Sxy;Sxy2=Sxy(2,:);Sxy2_sort=sort(Sxy2);fori=1:Node_amountpos=find(Sxy2==Sxy2_sort(i));iflength(pos)1error('仿真故障,请重试!');endtemp(1,i)=i;temp(2,i)=Sxy(2,pos);temp(3,i)=Sxy(3,pos);endSxy=temp;%在节点间随机产生边,并构造延时矩阵和费用矩阵fori=1:(Node_amount-1)forj=(i+1):Node_amountDistance=((Sxy(2,i)-Sxy(2,j))^2+(Sxy(3,i)-Sxy(3,j))^2)^0.5;P=Beta*exp(-Distance/(Alpha*Border_length));ifPrandDelay(i,j)=0.5*Distance/100000;Delay(j,i)=Delay(i,j);Cost(i,j)=2+8*rand;Cost(j,i)=Cost(i,j);elseDelay(i,j)=inf;Delay(j,i)=inf;Cost(i,j)=inf;Cost(j,i)=inf;endendendNet_plot(Border_length,Node_amount,Sxy,Cost,Delay)%用于绘制网络拓扑的函数functionNet_plot(Border_length,Node_amount,Sxy,Cost,Delay)%画节点plot(Sxy(2,:),Sxy(3,:),'k.')%设置图形显示范围xlim([0,Border_length]);ylim([0,Border_length]);holdon%为节点标序号fori=1:Node_amountStr=int2str(i);text(Sxy(2,i),Sxy(3,i),Str);holdonend%画边,并给边标注费用和延时fori=1:(Node_amount-1)forj=(i+1):Node_amountifisinf(Cost(i,j))==0plot([Sxy(2,i),Sxy(2,j)],[Sxy(3,i),Sxy(3,j)]);xx=0.5*(Sxy(2,i)+Sxy(3,i));yy=0.5*(Sxy(2,j)+Sxy(3,j));Str1=num2str(Cost(i,j));Str2=num2str(Delay(i,j));Str1=Str1(1:3);Str2=Str2(1:3);%text(xx,yy,[Str1,',',Str2])holdonendendend
本文标题:Salama网络拓扑随机生成算法Matlab源码
链接地址:https://www.777doc.com/doc-4392600 .html