首页 > 行业资讯 > 【路径规划】基于Djisktra算法实现路由无线传感器网络模拟随机路点运动模型含Matlab源码

【路径规划】基于Djisktra算法实现路由无线传感器网络模拟随机路点运动模型含Matlab源码

时间:2022-02-23 来源: 浏览:

【路径规划】基于Djisktra算法实现路由无线传感器网络模拟随机路点运动模型含Matlab源码

天天Matlab 天天Matlab
天天Matlab

TT_Matlab

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。

收录于话题 #雷达通信matlab源码 14个

1 简介

基于Djisktra算法实现路由无线传感器网络模拟随机路点运动模型

2 部分代码

clc; clear all; close all; global EexL X Y Xb Yb N nodesCH alpha beta A SN pause( 4 ) rng default; stop1= 0 ; RoutingId= 3 ; % 3 --- Modified Dijikstra N= 80 ; % No. of nodes t1= ’800x800’ ; t2=strsplit(t1, ’x’ ); min1= 0 ; max1=str2double(t2( 2 )); X = min1+(max1-min1)*rand( 1 ,N); Y = min1+(max1-min1)*rand( 1 ,N); %% figure, plot(X,Y, ’o’ , ’LineWidth’ , 1 ,... ’MarkerEdgeColor’ , ’k’ ,... ’MarkerFaceColor’ , ’g’ ,... ’MarkerSize’ , 7 ’); xlabel(’ X in m ’) ylabel(’ Y in m ’) for i2 = 1:N text(X(i2), Y(i2), num2str(i2),’ FontSize ’,10); hold on; end hold on xlabel(’ x ’); ylabel(’ y ’); %% RWM model % velocity distribution min and max (0,2) minVel=-4; maxVel=4; % PauseTime (0,1) minPause=0; maxPause=1; simTime=350;% Round750 Rc=150; % coverage Area %Rc=280; %sensor field Radius % position of source node tb=’ 0 x0 ’; t2=strsplit(tb,’ x ’); Xs =str2double(t2(1)); Ys =str2double(t2(2)); hold on plot(Xs,Ys,’ s ’,’ LineWidth ’,1,... MarkerEdgeColor ’,’ k ’,... MarkerFaceColor ’,’ r ’,... MarkerSize ’,12’ ); xlabel( ’X in m’ ) ylabel( ’Y in m’ ) text(Xs, Ys, ’Source’ , ’FontSize’ , 10 ); hold on; % position of sink node %t1= ’410x410’ ; t2=strsplit(t1, ’x’ ); Xb =str2double(t2( 1 )); Yb =str2double(t2( 2 )); hold on plot(Xb,Yb, ’s’ , ’LineWidth’ , 1 ,... ’MarkerEdgeColor’ , ’k’ ,... ’MarkerFaceColor’ , ’y’ ,... ’MarkerSize’ , 12 ’); xlabel(’ X in m ’) ylabel(’ Y in m ’) text(Xb, Yb, ’ Base ’,’ FontSize ’,10); hold on; %% alpha=0.01;%0.001 energy per distance% 0.001 %% node to CH power Ratio beta=0.045;%0.0015 %% CH to sink distance power ratio Sector1=1; nodes=N;% Total No. of Nodes %% Energy mi1=0; mi2=25; mi3=50; ma1=50;ma2=75; ma3=100; Ep =4*1e3; % 4000 mW E1=Ep.*(mi1+(ma1-mi1).*rand(1,round(nodes/3)))./100 E2=Ep.*(mi2+(ma2-mi2).*rand(1,round(nodes/3)))./100 E3=Ep.*(mi3+(ma3-mi3).*rand(1,nodes-2*round(nodes/3)))./100 E=[E1 E2 E3] %E=4.*ones(1,nodes); % intial Energy 4W PackSize=2; % 2Mb/sec nodesCH=10;% no of cluster head EexL=E; E1=E; %% Ch selection chalg1=’ chselalg.m chalg=strrep(chalg1,’ .m ’,’ ’); varName=matlab.lang.makeValidName(chalg); chselalg=str2func(varName) %% Routing Route_type = ’ custom ’; %% EnergyFunction Efun1=’ Energyfun.m Efun=strrep(Efun1,’ .m ’,’ ’); varName=matlab.lang.makeValidName(Efun); Efun=str2func(varName) A=3; if(strcmp(Route_type,’ custom ’)) Ralg1=’ DjisktraRoute.m ’; Ralg=strrep(Ralg1,’ .m ’,’ ’); varName=matlab.lang.makeValidName(Ralg); Ralgfun=str2func(varName) end %% %% ThroughputFn Thfun1=’ Throughputfun.m ’; Thfun=strrep(Thfun1,’ .m ’,’ ’); varName=matlab.lang.makeValidName(Thfun); Thfun=str2func(varName) %% Simulation Starts round=simTime; roundDelay=0.05; %% ipp=1; Alivenodes=zeros(1,round); AvgEc=zeros(1,round); Throughput=zeros(1,round); d=1; apL=1; %% X1=[Xs X Xb]; Y1=[Ys Y Yb]; matrizP=pdist2([X1 ;Y1]’ ,[X1; Y1] ’); %% %N=nodes; %N1=1:nodes; figure, slider1_data.val=40;% 110 percent mobility PauseTime=minPause+(maxPause-minPause).*rand(1,N); ipppause=zeros(1,N); while(ipp<round) %% Mobility Range cla; axis([min1-30 max1+30 min1-30 max1+30]) hold on Velocity=minVel+(maxVel-minVel).*rand(2,N); [valPause,indexPause]=find(abs(PauseTime-ipppause)>0); ipppause(indexPause)=0; ipppause=ipppause+1; m1=10;%0.01+(slider1_data.val/100); aa=-1;ba=1; delx=Velocity(1,:); dely=Velocity(2,:); delx(indexPause) = Velocity(1,indexPause); dely(indexPause) = Velocity(2,indexPause); X(indexPause)=X(indexPause)+delx.*m1; Y(indexPause)=Y(indexPause)+dely.*m1; X(X<min1 | X>max1)=X(X<min1 | X>max1)-delx(X<min1 | X>max1).*m1; Y(Y<min1 | Y>max1)=Y(Y<min1 | Y>max1)-dely(Y<min1 | Y>max1).*m1; %% X1=[Xs X Xb]; Y1=[Ys Y Yb]; matrizP=pdist2([X1 ;Y1]’ ,[X1; Y1] ’); %Ah=[ipp X Y] plot(X,Y,’ o ’,’ LineWidth ’,1,... MarkerEdgeColor ’,’ k ’,’ Linewidth ’, 0.5,... MarkerFaceColor ’,’ g ’,... MarkerSize ’,8’ ); xlabel( ’X in m’ ) ylabel( ’Y in m’ ) for i2 = 1 :N text(X(i2), Y(i2), num2str(i2), ’FontSize’ , 10 ); hold on; end hold on xlabel( ’x’ ); ylabel( ’y’ ); hold on plot(Xb,Yb, ’s’ , ’LineWidth’ , 1 ,... ’MarkerEdgeColor’ , ’k’ ,... ’MarkerFaceColor’ , ’y’ ,... ’MarkerSize’ , 12 ’); xlabel(’ X in m ’) ylabel(’ Y in m ’) text(Xb, Yb, ’ Base ’,’ FontSize ’,10); hold on; % Source plot(Xs,Ys,’ s ’,’ LineWidth ’,1,... MarkerEdgeColor ’,’ k ’,... MarkerFaceColor ’,’ r ’,... MarkerSize ’,12’ ); xlabel( ’X in m’ ) ylabel( ’Y in m’ ) text(Xs, Ys, ’Source’ , ’FontSize’ , 10 ); hold on; %% EneExL(ipp)= 0 ; A1=randperm(N); % Randomly select Source node ind=A1( 3 ); pathL=[]; %% Custom Adhoc Routing if (A== 3 ) Source = 1 ; Dest=numel(X1); Rc1=Rc;% 4 .* matrizP(matrizP>Rc1)=inf; [pathP,cost]=Ralgfun(Source,Dest,matrizP); costN=cost.*length(pathP); dist1L=costN; dist2L= 0 ; apL= 0 ; if (~isempty(pathP)) if (pathP( end )~=Dest) pathP=[pathP Dest]; end if (EexL(ind)~= 0 ) pathP(pathP==Source)=- 2 ; pathP(pathP==Dest)=- 1 ; pathL=pathP;%[ind - 1 ]; path11=pathP; path11(path11==- 1 )=[]; path11(path11==- 2 )=[]; path11=path11; % Sink Node Assign as PathL=- 1 apL=apL+ 1 ; path11=path11- 1 EexL(path11)=EexL(path11)-Efun(alpha,beta,dist1L,dist2L,A); EneExL(ipp)=Efun(alpha,beta,dist1L,dist2L,A).*numel(path11); end end end %% %EexL(ind)=EexL(ind)-alpha.*dist1L -(beta+ 0.5 ).*dist2L; %id1(ind) %EexL(id1(ind)) if (EexL(ind)<= 0 ) EexL(ind)= 0 ; end %% if (Sector1== 1 ) if (~isempty(pathL)) path1=pathL; for p = 1 :(size(path1, 2 ))- 1 if (path1(p+ 1 )==- 1 ) line([X1(path1(p)) Xb], [Y1(path1(p)) Yb], ’Color’ , ’c’ , ’LineWidth’ , 2 , ’LineStyle’ , ’-’ ) arrow([X1(path1(p)) Y1(path1(p)) ], [Xb Yb ]) elseif (path1(p)==- 2 ) line([Xs X1(path1(p+ 1 ))], [Ys Y1(path1(p+ 1 ))], ’Color’ , ’c’ , ’LineWidth’ , 2 , ’LineStyle’ , ’-’ ) arrow([Xs Ys ],[X1(path1(p+ 1 )) Y1(path1(p+ 1 )) ]) else line([X1(path1(p)) X1(path1(p+ 1 ))], [Y1(path1(p)) Y1(path1(p+ 1 ))], ’Color’ , ’c’ , ’LineWidth’ , 2 , ’LineStyle’ , ’-’ ) arrow([X1(path1(p)) Y1(path1(p)) ], [X1(path1(p+ 1 )) Y1(path1(p+ 1 ))]) end hold on end end end EexL(EexL<= 0 )= 0 ; indg3=find(EexL<= 0 ); % if (A== 2 || A== 4 || A== 5 ) % [CH]=chselalg(EexL,nodesCH,RoutingId) % end %% Store Parameters Ec2L(ipp)=sum(EexL); % Energy Consumption REc2L(ipp)=sum(E1) - sum(EexL); % Remaining Energy Level % Throughput Calc RxData1L=apL; if (ipp> 1 ) ThroughputL(ipp)=Thfun(ThroughputL,RxData1L,ipp- 1 ); else ThroughputL(ipp)=RxData1L*PackSize; end % AliveNodes Calc hold on plot(X(indg3),Y(indg3), ’o’ , ’LineWidth’ , 1 ,... ’MarkerEdgeColor’ , ’k’ ,... ’MarkerFaceColor’ , ’k’ ,... ’MarkerSize’ , 8 ’); xlabel(’ X in m ’) ylabel(’ Y in m ’) hold on AlivenodesL(ipp)=N-numel(indg3); %Avg Energy Consumed AvgEcL(ipp)=mean(EneExL); ipp=ipp+1; txt = {[’ Time in Sec-> ’ num2str(ipp)]}; text(10,600,txt) %set(h,’ string ’,[’ Time in Sec-> ’ num2str(ipp)]); pause(roundDelay) if(stop1==1) stop1=0; break; end end %% inde=find(Ralg1==’ . ’); Az=Ralg1(1:inde-1); fname=[’ - ’ Az]; save([’ ResultAlivenodes ’ fname ’ .mat ’],’ AlivenodesL ’) save([’ ResultAvgEc ’ fname ’ .mat ’],’ AvgEcL ’) save([’ ResultEc2 ’ fname ’ .mat ’],’ Ec2L ’) save([’ ResultREc2 ’ fname ’ .mat ’],’ REc2L ’) save([’ ResultThroughput ’,fname,’ .mat ’],’ ThroughputL ’) % %% figure, plot(1:numel(AlivenodesL)-1,AlivenodesL(1:end-1),’ -*k ’) xlabel(’ Rounds ’) ylabel(’ AliveNodes ’) title(’ Alivenodes ’) % figure, plot(1:numel(AvgEcL)-1,AvgEcL(1:end-1),’ -*k ’) xlabel(’ Rounds ’) ylabel(’ AvgEnergyConsumption ’) title(’ AvgEnergyConsumption ’) %% figure, plot(1:numel(Ec2L),Ec2L(1:end),’ -*k ’) xlabel(’ Rounds ’) ylabel(’ Remaining Energy Level ’) title(’ Remaining Energy Level ’) %% figure, plot(1:numel(REc2L),REc2L(1:end),’ -*k ’) xlabel(’ Rounds ’) ylabel(’ Energy Consumption Level ’) title(’ Energy Consumption Level ’) %% % Throughput figure, plot(1:numel(ThroughputL)-1,ThroughputL(1:end-1),’ -*k ’) xlabel(’ Rounds ’) ylabel(’ Recieved-Packets ’) title(’ Recieved-Packets ’)

3 仿真结果

4 参考文献

[1]王菁华, 张翠敏. 智能机器人综合路径规划算法在Matlab中的实现[J]. 天津工程师范学院学报, 2006, 16(3):4.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐