节点移动模型-MATLAB-仿真

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

高斯马尔科夫模型实现和仿真高斯马尔科夫模型描述高斯马尔科夫模型描述为每个节点被赋予一个当前的速率v和方向sita,在一个固定的时间间隔∆t(时隙)后,每个节点更新当前的速率和方向,每次间隔之初更新,更新公式如下:21(1)(1)ttnvavavav,21(1)(1)ttnaaa。在每个指定的时间∆周期t内,得到1tv和1t的计算值,则运动的目标位置可以通过下述式子得到:1costtttxxvt,1sinttttyyvt。一个时间间隔内,节点都按照v匀速运动到目标位置,称为一个step。一个完整的step包括:1.节点参数的设置:仿真时间:T=1000;步进时间:dt=1;步进时间越小,路径曲线越光滑。时间间隔: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)/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,方向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;clearall;%相关参数设定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([xminxmaxyminymax]);%设定坐标范围%figure(1);holdon;%保留绘图内容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;%速度方向平均值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-a^2))*vn;%到达目的节点后确定下一段的速度sitab=a*sitaa+(1-a)*sitamean+sqrt((1-a^2))*sitan;%到达目的节点后确定下一段的速度方向ifT-tex=ntfort=0:dt:ntxb=xa+va*cos(sitab)*t;yb=ya+va*sin(sitab)*t;%节点在到达目的节点后可以确定下一目的节点的位置plot(xb,yb,'.');ifxbxmin%x坐标到达左边界xa=xa+xmax;elseifxbxmax%x坐标到达右边界xa=xa-xmax;endifybymin%y坐标到达下边界ya=ya+ymax;elseifybymax%y坐标到达上边界ya=ya-ymax;endtex=tex+dt;endelsefort=0:dt:T-texxb=xa+va*cos(sitab)*t;yb=ya+va*sin(sitab)*t;%节点在到达目的节点后可以确定下一目的节点的位置plot(xb,yb,'.');ifxbxmin%x坐标到达左边界xa=xa+xmax;elseifxbxmax%x坐标到达右边界xa=xa-xmax;endifybymin%y坐标到达下边界ya=ya+ymax;elseifybymax%y坐标到达上边界ya=ya-ymax;endtex=tex+dt;returnendendxa=xb;ya=yb;%将目标点更新为新Step的起点va=vb,sitaa=sitab;end01002003004005006007008009001000050100150200250300350400450500随机方向模型实现和仿真随机方向模型描述:随机方向移动模型描述为节点先在整个移动区域内随机选择一个位置作为初始位置,随机选择运动速度的大小和方向,一直运动到边界上的一个点,就是目的节点,随机停顿一段时间tp,将这个目的节点作为下一次移动的源节点,然后反复按相对固定的过程进行移动,通常称这个重复过程为Step。一个完整的Step包括运动速度v、随机停顿时间tp,随机运动方向sita,然后以速度v匀速直线运动到达边界位置后停顿时间tp。其中运动速度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,运动方向sita;停顿时间参数:tmin=0.1;tmax=0.2;clearall;%相关参数设定T=1000;%仿真时间sdt=1;%补进时间svmin=1;vmax=1.5;%速度范围tmin=0.1;tmax=0.2;%停顿时间范围sxmin=0;xmax=100;ymin=0;ymax=50;%场景的范围tex=0;%初始化运行时间记忆变量axis([xminxmaxyminymax]);%设定坐标范围figure(1);holdon;%保留绘图内容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]);%随机发生一个停顿时间,停顿时间服从均匀分布ifya==0sita=unifrnd(0,pi,[1,1]);%随机发生一个前进角度,前进角度服从均匀分布elseifya==50sita=unifrnd(1.5*pi,2*pi,[1,1]);%随机发生一个前进角度,前进角度服从均匀分布elseifxa==0sita=unifrnd(-0.5*pi,0.5*pi,[1,1]);%随机发生一个前进角度,前进角度服从均匀分布elseifxa==100sita=unifrnd(0.5*pi,1.5*pi,[1,1]);%随机发生一个前进角度,前进角度服从均匀分布elsesita=unifrnd(0,2*pi,[1,1]);%随机发生一个前进角度,前进角度服从均匀分布endfort=0:dt:TiftexT%本次Step内仿真时间会到returnelsex=xa+v*cos(sita)*t;%运动到边界位置的点y=ya+v*sin(sita)*t;plot(x,y,'.');holdontex=tex+dt;ifx==0||x==100||y==0||y==50%如果运动到边界,则到达的点就是目的节点break;endendendifT-tex=tp;pause(tp);%停止一段时间tex=tex+tp;%更新运行时间记忆变量elsepause(T-tex);%时间到returnendxa=x;ya=y;%将目标点更新为新Step的起点end随机方向改进模型的实现和仿真随机方向改进模型描述:随机方向移动模型描述为节点先在整个移动区域内随机选择一个位置作为初始位置,随机选择运动速度的大小和方向、移动的距离,节点移动这段距离后到达终点,到达终点后随机停顿一段时间tp,将这个终点作为下一次移动的起始节点,这个过程为一个step。然后反复按相对固定的过程进行移动。如果节点在运动期间运动到边界,将从对称的边界重新出发,速度和方向不变。一个完整的Step包括:1.随机产生运动速度大小v、停顿时间tp,运动方向sita,运动距离d。v的范围为minmax(,)vv,并且在minmax(,)vv范围内服从平均分布;tp的范围为minmax(,)tt,并且在minmax(,)tt范围内服从平均分布。2.然后以速度v匀速直线运动随机的一段距离d后停顿时间tp。节点在运动过程中如果走到了边界,则从对称的边界出发,速度,方向均不变。比如运动到了左边界(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;仿真程序:clearall;%相关参数设定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([xminxmaxyminymax]);%设定坐标范围figure(1);holdon;%保留绘图内容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]);%随机发生一个停顿时间,停顿时间服从均匀分布sita=unifrnd(0,2*pi,[1,1]);%随机发生一个前进角度,前进角度服从均匀分布d=unifrnd(dmin,dmax,[1,1]);%随机发生一个前进距离,前进距离服从均匀分布tm=d/v;%运动时间ifT-tex=tm%此次step时间不会到fort=0:dt:tmxb=xa+v*cos(sita)*t;yb=ya+v

1 / 14
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功