《2022年2022年节点移动模型-MATLAB仿真 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年节点移动模型-MATLAB仿真 .pdf(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、高斯马尔科夫模型实现和仿真高斯马尔科夫模型描述高斯马尔科夫模型描述为每个节点被赋予一个当前的速率v 和方向 sita,在一个固定的时间间隔?t(时隙 )后,每个节点更新当前的速率和方向,每次间隔之初更新,更新公式如下:21(1)(1)ttnvava vav,21(1)(1)ttnaaa。在每个指定的时间?周期t 内,得到1tv和1t的计算值,则运动的目标位置可以通过下述式子得到:1costtttxxv t,1sinttttyyvt。一个时间间隔内,节点都按照v 匀速运动到目标位置,称为一个step。一个完整的step 包括:1.节点参数的设置:仿真时间: T=1000;步进时间: dt=1;步
2、进时间越小,路径曲线越光滑。时间间隔 :nt=20;速度范围: vmin=1;vmax=1.5; 场景范围: xmin=0;xmax=100;ymin=0;ymax=50; 随机产生起始点的位置:xa=unifrnd(0,100,1,1); ya=unifrnd(0,50,1,1);初始速率设置为速率分布的期望:va=(vmin+vmax)/2;%初始速度初始速度方向设置为方向分布的期望:sitaa=(0+2*pi)/2; 速率平均值:vmean=(vmin+vmax)/2;速度方向平均值: sitamean=(0+2*pi)/2; 2.节点随机初始速度设置为vmean=(vmin+vmax
3、)/2,sitamean=(0+2*pi)/2 ;随机获取初始位置 xa,ya?。固定一个时间间隔t=20。 vn,sitan 是服从高斯分布的随机变量,vn 服从均值为1.5,方差为0.2 的高斯分布: vn=normrnd(1.5,0.2,1,1),sitan 服从均值为pi,方差为0.2的高斯分布sitan =normrnd(pi,0.2,1,1);随机变量a 的范围是( 0,1) ,并且在这个范围内均匀分布。2.节点在每个时间间隔更新速率和速度方向,根据初始节点的位置得到移动的目标位置xb,yb。3.目标节点位置变为下一个step 的初始节点。模型参数设置:变量:调节参数a, 速度 v
4、 ,方向 sita,节点位置( x,y ) ,随机参数 vn,sitan 初始节点位置节点位置:xmin=0;xmax=100;ymin=0;ymax=50; A(xa,ya) 初始节点速度参数:vmin=1;vmax=2; ,速度平均值 vmean=(vmin+vmax)/2,速度方向平均值sitamean=(0+2*pi)/2 时间参数: nt=20; clear all;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 14 页 - - - - - - - - - %
5、 相关参数设定T=1000;% 仿真时间 sdt=1;% 补进时间 snt=30;%时间间隔vmin=0.5;vmax=1;% 速度范围tmin=0.1;tmax=0.1;% 停顿时间范围sxmin=0;xmax=1000;ymin=0;ymax=500;%场景的范围 tex=0;% 初始化运行时间记忆变量%axis(xmin xmax ymin ymax);%设定坐标范围%figure(1);hold on ; %保留绘图内容 xa=unifrnd(0,100,1,1);%随机发生起始点坐标 ya=unifrnd(0,50,1,1); va=(vmin+vmax)/2;% 初始速度 sita
6、a=(0+2*pi)/2;% 随机发生一个初始速度方向,前进角度服从均匀分布 vmean=(vmin+vmax)/2;% 速度平均值 sitamean=(0+2*pi)/2;% 速度方向平均值while(1) a=unifrnd(0,1,1,1);%a用来调节随机性 vn=normrnd(1.5,0.2,1,1);% 服从高斯分布的速率参数 sitan=normrnd(pi,0.2,1,1);% 服从高斯分布的速度方向参数 vb=a*va+(1-a)*vmean+sqrt(1-a2)*vn;% 到达目的节点后确定下一段的速度 sitab=a*sitaa+(1-a)*sitamean+sqrt(
7、1-a2)*sitan;%到达目的节点后确定下一段的速度方向if T-tex=nt for t=0:dt:nt xb=xa+va*cos(sitab)*t; yb=ya+va*sin(sitab)*t;% 节点在到达目的节点后可以确定下一目的节点的位置 plot(xb,yb,.);if xbxmax %x坐标到达右边界 xa=xa-xmax;endif ybymax %y坐标到达上边界 ya=ya-ymax;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 14 页 - -
8、 - - - - - - - end tex=tex+dt;endelsefor t=0:dt:T-tex xb=xa+va*cos(sitab)*t; yb=ya+va*sin(sitab)*t;% 节点在到达目的节点后可以确定下一目的节点的位置 plot(xb,yb,.);if xbxmax %x坐标到达右边界 xa=xa-xmax;endif ybymax %y坐标到达上边界 ya=ya-ymax;end tex=tex+dt;returnendendxa=xb;ya=yb;% 将目标点更新为新Step 的起点va=vb,sitaa=sitab;end名师资料总结 - - -精品资料欢迎
9、下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 14 页 - - - - - - - - - 01002003004005006007008009001000050100150200250300350400450500名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 14 页 - - - - - - - - - 随机方向模型实现和仿真随机方向模型描述:随机方向移动模型描述为节点先在整个移
10、动区域内随机选择一个位置作为初始位置,随机选择运动速度的大小和方向,一直运动到边界上的一个点,就是目的节点, 随机停顿一段时间tp,将这个目的节点作为下一次移动的源节点,然后反复按相对固定的过程进行移动,通常称这个重复过程为Step。一个完整的Step 包括运动速度v、随机停顿时间tp,随机运动方向sita,然后以速度v 匀速直线运动到达边界位置后停顿时间tp。其中运动速度v、随机停顿时间tp,随机运动方向的范围和在该范围的分布可以通过模型参数的方式进行限定,如V 的范围为minmax(,)vv,并且在minmax(,)vv范围内服从平均分布;tp 的范围为minmax(,)tt,并且在min
11、max(,)tt范围内服从平均分布。随机运动方向根据在不同的边界,有不同的范围,在该范围内服从平均分布。模型参数设置:场景参数: xmin=0;xmax=100;ymin=0;ymax=50; 时间参数:运行时间T,记忆变量tex,运动时间tm,停顿时间tp; 速度参数: vmin=0.5;vmax=1.5; 速度大小 v,运动方向sita; 停顿时间参数:tmin=0.1; tmax=0.2; clear all;%相关参数设定T=1000;% 仿真时间 sdt=1;% 补进时间 svmin=1;vmax=1.5;% 速度范围tmin=0.1;tmax=0.2;% 停顿时间范围sxmin=0
12、;xmax=100;ymin=0;ymax=50;% 场景的范围tex=0;%初始化运行时间记忆变量axis(xmin xmax ymin ymax);% 设定坐标范围figure(1);hold on ; %保留绘图内容xa=unifrnd(0,100,1,1);%随机发生起始点坐标ya=unifrnd(0,50,1,1); while(1) v=unifrnd(vmin,vmax,1,1);% 随机发生一个速度值,速度大小服从均匀分布 tp=unifrnd(tmin,tmax,1,1);% 随机发生一个停顿时间,停顿时间服从均匀分布if ya=0 sita=unifrnd(0,pi,1,1
13、);% 随机发生一个前进角度,前进角度服从均匀分名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 14 页 - - - - - - - - - 布elseif ya=50 sita=unifrnd(1.5*pi,2*pi,1,1);%随机发生一个前进角度,前进角度服从均匀分布elseif xa=0 sita=unifrnd(-0.5*pi,0.5*pi,1,1);%随机发生一个前进角度,前进角度服从均匀分布elseif xa=100 sita=unifrnd(0.5*pi,
14、1.5*pi,1,1);% 随机发生一个前进角度,前进角度服从均匀分布else sita=unifrnd(0,2*pi,1,1);% 随机发生一个前进角度,前进角度服从均匀分布endfor t=0:dt:Tif texT % 本次 Step 内仿真时间会到returnelse x=xa+v*cos(sita)*t;%运动到边界位置的点 y=ya+v*sin(sita)*t; plot(x,y,.); hold on tex=tex+dt;ifx=0|x=100|y=0|y=50% 如果运动到边界,则到达的点就是目的节点break;endendendif T-tex=tp; pause(tp);
15、 %停止一段时间 tex=tex+tp;%更新运行时间记忆变量else pause(T-tex); % 时间到returnend xa=x;ya=y;%将目标点更新为新Step 的起点end名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 14 页 - - - - - - - - - 随机方向改进模型的实现和仿真随机方向改进模型描述:随机方向移动模型描述为节点先在整个移动区域内随机选择一个位置作为初始位置,随机选择运动速度的大小和方向、移动的距离, 节点移动这段距离后到达终
16、点,到达终点后随机停顿一段时间tp,将这个终点作为下一次移动的起始节点,这个过程为一个step。然后反复按相对固定的过程进行移动。如果节点在运动期间运动到边界,将从对称的边界重新出发,速度和方向不变。一个完整的Step 包括:1.随机产生运动速度大小v、 停顿时间 tp, 运动方向 sita, 运动距离 d。 v 的范围为minmax(,)vv,并且在minmax(,)vv范围内服从平均分布;tp 的范围为minmax(,)tt,并且在minmax(,)tt范围内服从平均分布。2.然后以速度v 匀速直线运动随机的一段距离d 后停顿时间tp。节点在运动过程中如果走到了边界,则从对称的边界出发,速
17、度,方向均不变。比如运动到了左边界(xmin,y ) ,则节点的位置变为(xmax,y) ;运动到了上边界(x,ymax) ,则节点的位置变为(x,ymin ) 。3.运动距离d 后,到达的终点的位置为下一个step的初始位置。模型参数设置:场景参数: xmin=0;xmax=100;ymin=0;ymax=50,运动距离dmin=20;dmax=100; 时间参数:运行时间T,记忆变量tex,运动时间tm,停顿时间tp; 速度参数: vmin=0.5;vmax=1.5; 速度大小 v,运动方向sita; 停顿时间参数:tmin=0.1; tmax=0.2; 仿真程序:clear all;%相
18、关参数设定T=100;%仿真时间 sdt=1;% 补进时间 svmin=1;vmax=1.5;% 速度范围tmin=0.1;tmax=0.2;% 停顿时间范围sxmin=0;xmax=100;ymin=0;ymax=50;% 场景的范围dmin=20;dmax=100;tex=0;%初始化运行时间记忆变量axis(xmin xmax ymin ymax);% 设定坐标范围figure(1);hold on ; %保留绘图内容xa=unifrnd(0,100,1,1);%随机发生起始点坐标ya=unifrnd(0,50,1,1); 名师资料总结 - - -精品资料欢迎下载 - - - - - -
19、 - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 14 页 - - - - - - - - - while(1) v=unifrnd(vmin,vmax,1,1);% 随机发生一个速度值,速度大小服从均匀分布 tp=unifrnd(tmin,tmax,1,1);% 随机发生一个停顿时间,停顿时间服从均匀分布 sita=unifrnd(0,2*pi,1,1);% 随机发生一个前进角度,前进角度服从均匀分布 d=unifrnd(dmin,dmax,1,1);% 随机发生一个前进距离,前进距离服从均匀分布 tm=d/v;%运动时间if T-t
20、ex=tm % 此次 step 时间不会到for t=0:dt:tm xb=xa+v*cos(sita)*t; yb=ya+v*sin(sita)*t; plot(xb,yb,.)if xb=xmax %x坐标到达右边界 xa=xa-xmax;endif yb=ymax %y坐标到达上边界 ya=ya-ymax;end tex=tex+dt; % 更新运行时间记忆变量endif T-tex=tp; pause(tp); % 停止一段时间 tex=tex+tp;% 更新运行时间记忆变量else pause(T-tex); %时间到returnendelse% 此次 step时间会到for t=0
21、:dt: T-tex xb=xa+v*cos(sita)*t; yb=ya+v*sin(sita)*t; plot(xb,yb,.)if xb=xmax %x坐标到达右边界 xa=xa-xmax;end名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 14 页 - - - - - - - - - if yb=ymax %y坐标到达上边界 ya=ya-ymax;endendreturnend xa=xb;ya=yb;%将目标点更新为新Step 的起点end仿真结果:01020
22、3040506070809010005101520253035404550名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 14 页 - - - - - - - - - 随机路点模型实现和仿真随机路点模型描述随机路点移动模型描述为节点先在整个移动区域内随机选择一个位置作为初始位置,随机选择一个位置为目的位置,将这个目的节点作为下一次移动的源节点,然后反复按相对固定的过程进行移动,通常称这个重复过程为Step。一个完整的Step 包括先通过随机选择目标点D、运动速度V 和随机
23、停顿时间Tp,然后以速度V 匀速直线运动到达目标点D 位置后停顿时间 T。其中运动速度V 和随机停顿时间Tp 的范围和在该范围的分布可以通过模型参数的方式进行限定,如V 的范围为minmax(,)vv,并且在minmax(,)vv范围内服从平均分布;Tp的范围为minmax(,)tt,并且在minmax(,)tt范围内服从平均分布。模型参数设置:场景参数: xmin=0;xmax=100;ymin=0;ymax=50; 时间参数:运行时间T,记忆变量tex,运动时间tm,停顿时间tp; 速度参数: vmin=0.5;vmax=1.5; 速度大小 v; 停顿时间参数:tmin=0.1; tmax
24、=0.2; clear all;%相关参数设定T=1000;% 仿真时间 sdt=1;% 补进时间 svmin=1;vmax=1.5;% 速度范围tmin=0.1;tmax=0.1;% 停顿时间范围sxmin=0;xmax=100;ymin=0;ymax=50;% 场景的范围 tex=0;% 初始化运行时间记忆变量 axis(xmin xmax ymin ymax);% 设定坐标范围 figure(1); hold on ; % 保留绘图内容 xa=unifrnd(0,100,1,1);%随机发生起始点坐标 ya=unifrnd(0,50,1,1); while(1) xb=unifrnd(0
25、,100,1,1);%随机发生一个路点坐标 yb=unifrnd(0,50,1,1); v=unifrnd(vmin,vmax,1,1);% 随机发生一个速度值,速度大小服从均匀分布 tp=unifrnd(tmin,tmax,1,1);% 随机发生一个停顿时间,停顿时间服从均匀分布 tm=sqrt(xb-xa)2+(yb-ya)2)/v; % 计算这个 Step 的移动时间名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 14 页 - - - - - - - - - if
26、 xa=xb&ya=yb % 在出发点和目的点坐标相同时单独处理 pause(tp); % 停止一段时间 tex=tex+tp;% 更新运行时间记忆变量elseif T-tex=tm;% 本次 Step 内仿真时间不会到for t=0:dt:tm x=xa+v*(xb-xa)/sqrt(xb-xa)2+(yb-ya)2)*t; y=ya+v*(yb-ya)/sqrt(xb-xa)2+(yb-ya)2)*t; plot(x,y,.); tex=tex+dt;% 更新运行时间记忆变量endif T-tex=tp; pause(tp); %停止一段时间 tex=tex+tp;%更新运行时间记忆变量e
27、lse pause(T-tex); % 时间到returnendelse% 本次 Step 内仿真时间会到for t=0:dt:T-tex x=xa+v*(xb-xa)/sqrt(xb-xa)2+(yb-ya)2)*t; y=ya+v*(yb-ya)/sqrt(xb-xa)2+(yb-ya)2)*t; plot(x,y,.);endreturn%时间到endendxa=xb;ya=yb;% 将目标点更新为新Step 的起点end名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页
28、,共 14 页 - - - - - - - - - 010203040506070809010005101520253035404550名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 14 页 - - - - - - - - - 随机路点模型实现和仿真随机路点模型描述随机路点移动模型描述为节点先在整个移动区域内随机选择一个位置作为初始位置,然后反复按相对固定的过程进行移动,通常称这个重复过程为Step。一个完整的 Step包括先通过随机选择目标点D、运动速度 V和随机停
29、顿时间 T,然后以速度 V匀速直线运动到达目标点D位置后停顿时间 T。 其中运动速度 V和随机停顿时间 T的范围和在该范围的分布可以通过模型参数的方式进行限定,如V的范围为minmax(,)VV,并且在minmax(,)VV范围内服从平均分布;T的范围为minmax(,)TT,并且在minmax(,)TT范围内服从平均分布。模型参数设置:1. 节点的速度,方向,时间间隔服从均匀分布2. 每隔一段随机的时间,节点重新选择速度,方向把节点速度分为 x,y 轴的速度分量,分别求位移。变量: 间隔 时间t, 速度v,移动角度 sitat,场景参数: xmin=0;xmax=100;ymin=0;yma
30、x=50; 速度参数: vmin=0.5;vmax=1.5; 停顿时间参数: tmin=0.1; tmax=0.2; 角度模型 Matlab 程序实现:xmin=0;xmax=100;ymin=0;ymax=50; axis(xmin xmax ymin ymax);% 场景的范围n=200 ;% 仿真次数sitat=unifrnd(0,2*pi,n,1);%节点移动的角度 sita服从均匀分布vmin=0.5;vmax=1.5; v=unifrnd(vmin,vmax,n,1);%速度 v的大小服从均匀分布vx=cos(sitat)*v;vy=sin(sitat)*v;%速度在 x轴y轴的分
31、量tmin=0.1; tmax=0.2; t=unifrnd(tmin,tmax,n,1);%时间间隔 t 服从均匀分布k=1;x(1)=0;y(1)=0; for i=1:n;for j=1:n;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 14 页 - - - - - - - - - x(k+1)=x(k)+vx(i)*t(j); y(k+1)=y(k)+vy(i)*t(j); k=k+1;endend %此刻的位移 =上一时刻的位移 +速度乘以时间plot(x,y); comet(x,y,0.01); -400-300-200-1000100200300-200-150-100-50050100150200图 1.随机路点模型仿真结果名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 14 页 - - - - - - - - -