WSN定位蒙特卡洛方法MCL的MATLAB

合集下载

matlab用蒙特卡洛方法进行概率和分位计算

matlab用蒙特卡洛方法进行概率和分位计算

matlab用蒙特卡洛方法进行概率和分位计算【主题】matlab用蒙特卡洛方法进行概率和分位计算【序号1】引言在概率和统计领域,计算概率和分位数一直是一个重要的课题。

传统的方法可能在计算复杂的分布时显得力不从心,而蒙特卡洛方法却能够以随机模拟的方式来解决这些问题。

本文将介绍如何使用MATLAB来进行概率和分位计算,重点讨论如何利用蒙特卡洛方法来进行模拟,以及如何在MATLAB环境中实现这一过程。

【序号2】MATLAB中的蒙特卡洛方法MATLAB作为一个强大的数值计算工具,提供了丰富的函数和工具箱,可以方便地进行概率和统计计算。

在MATLAB中,蒙特卡洛方法可以通过随机数生成函数和循环结构来实现。

我们需要生成符合指定分布的随机数样本,然后利用这些样本进行模拟计算,最终得到所需的概率和分位数结果。

【序号3】随机数生成在MATLAB中,可以利用内置的随机数生成函数来生成符合某个特定分布的随机数样本。

可以使用randn函数来生成符合正态分布的随机数样本,使用rand函数来生成在[0,1]区间均匀分布的随机数样本。

除了内置函数,MATLAB还提供了更多灵活的工具箱,可以生成更加复杂的分布样本,如指数分布、泊松分布等。

【序号4】模拟计算一旦得到了符合特定分布的随机数样本,就可以利用这些样本进行模拟计算。

以正态分布为例,我们可以利用蒙特卡洛方法来估计在某个区间内的概率,或者计算某个分位数的取值。

通过多次模拟,取平均值可以得到一个较为准确的估计结果。

在MATLAB中,可以利用循环结构和向量化的方式来高效地实现这一过程,并得到稳健可靠的结果。

【序号5】具体案例下面通过一个具体案例来展示如何在MATLAB中使用蒙特卡洛方法进行概率和分位计算。

假设我们需要计算标准正态分布的概率P(-1<Z<1)和95%的分位数。

我们可以利用randn函数生成一组标准正态分布的随机数样本,然后利用循环结构来进行模拟计算。

我们得到了P(-1<Z<1)约等于0.6827和95%的分位数约等于1.645,这些结果可以帮助我们更好地理解正态分布的性质。

基于蒙特卡洛的无线传感网移动节点定位分析

基于蒙特卡洛的无线传感网移动节点定位分析

摘要东华理工大学研究生毕业论文中文摘要首页用纸毕业论文题目:基于蒙特卡洛的无线传感网移动节点定位研究计算机科学与技术专业2012级硕士生姓名:李坤指导教师(姓名、职称):何月顺教授摘要随着信息化科技的迅猛发展,作为一种集信息采集、通信和计算于一身的综合性平台,无线传感器网络(Wireless Sensor Networks,WSN)在家庭、医疗、工业和军事等领域得到了越来越广泛的应用。

在实际应用中,多元化的监测任务和复杂的应用环境经常会使WSN节点发生移动,随之产生的关于移动WSN节点的定位问题已经成为国内外学者的研究热点之一。

本文对WSN节点定位算法进行了分类研究,主要对蒙特卡洛移动节点定位算法(MCL)进行深入研究,针对MCL算法中定位精度不高、采样效率低下和低鲁棒性等缺陷,结合实际应用中面对不同的监测环境出现的不同问题,科学的提出了针对性的解决方法,进而得到更精准的定位信息。

本论文的主要研究成果如下:(1)针对传感器节点的通信半径在实际应用中会由于节点的高度变化而发生变化这一现象,提出了一种结合跳\距转换模型的蒙特卡洛定位改进算法(HDMCL),利用节点间的跳数信息和跳\距转换模型得到一个精化的采样区域,取代了传统MCL算法利用通信半径确定的采样区域,HDMCL算法不仅解决了通信半径波动大的问题,而且在定位精度和采样效率上都有很大的提升。

(2)考虑到锚节点的成本和功耗问题,针对低锚节点密度的WSN网络提出一种自主择优的蒙特卡洛定位算法(PWMCB),基于锚盒子信息,自主筛选出高精度的优质节点,用以辅助其他普通节点定位。

结果显示该算法能大大提升节点的定位精度,提高网络的鲁棒性,并且在低锚节点密度的网络环境下优化效果更明显。

(3)在PWMCB算法中优质节点坐标的计算阶段,利用节点运动的连贯性,引入节点前两个时刻的位置,提出MCMCB算法,赋予采样样本更科学的权值,使优质节点的坐标估计更精确,从而更好的辅助其他节点定位。

蒙特卡罗算法与matlab教程

蒙特卡罗算法与matlab教程

第一章:M o n t e C a r l o方法概述讲课人:Xaero Chang | 课程主页:本章主要概述Monte Carlo的一些基础知识,另外包括一个最简单的用Monte Carlo方法计算数值积分的例子。

Monte Carlo方法的实质是通过大量随机试验,利用概率论解决问题的一种数值方法,基本思想是基于概率和体积间的相似性。

它和Simulation有细微区别。

单独的Simulation只是模拟一些随机的运动,其结果是不确定的;Monte Carlo在计算的中间过程中出现的数是随机的,但是它要解决的问题的结果却是确定的。

历史上有记载的Monte Carlo试验始于十八世纪末期(约1777年),当时布丰(Buffon)为了计算圆周率,设计了一个“投针试验”。

(后文会给出一个更加简单的计算圆周率的例子)。

虽然方法已经存在了200多年,此方法命名为Monte Carlo 则是在二十世纪四十年,美国原子弹计划的一个子项目需要使用Monte Carlo方法模拟中子对某种特殊材料的穿透作用。

出于保密缘故,每个项目都要一个代号,传闻命名代号时,项目负责人之一von Neumann灵犀一点选择摩洛哥著名赌城蒙特卡洛作为该项目名称,自此这种方法也就被命名为Monte Carlo方法广为流传。

十一、Monte Carlo方法适用用途(一)数值积分计算一个定积分,如,如果我们能够得到f(x)的原函数F(x),那么直接由表达式: F(x1)-F(x0)可以得到该定积分的值。

但是,很多情况下,由于f(x)太复杂,我们无法计算得到原函数F(x)的显示解,这时我们就只能用数值积分的办法。

如下是一个简单的数值积分的例子。

数值积分简单示例如图,数值积分的基本原理是在自变量x的区间上取多个离散的点,用单个点的值来代替该小段上函数f(x)值。

常规的数值积分方法是在分段之后,将所有的柱子(粉红色方块)的面积全部加起来,用这个面积来近似函数f(x)(蓝色曲线)与x轴围成的面积。

基于Matlab的WSN定位算法仿真设计

基于Matlab的WSN定位算法仿真设计

基于Matlab的WSN定位算法仿真设计沙勇【摘要】在对比分析多种WSN定位算法原理基础上,重点讨论了基于matlab软件平台的仿真分析.得到了WSN节点分布、测距和定位的仿真程序及结果.结果表明,基于TDOA的WSN定位算法具有不需要节点间全局同步,具有节点功耗和成本低等优点.【期刊名称】《齐齐哈尔大学学报(自然科学版)》【年(卷),期】2017(033)006【总页数】3页(P42-44)【关键词】WSN;定位算法;仿真【作者】沙勇【作者单位】齐齐哈尔大学学报(自然科学版)编辑部,黑龙江齐齐哈尔 161006【正文语种】中文【中图分类】TN929Matlab是Mathworks公司开发的一种集计算、图形可视化和编辑功能于一体的优秀数学应用软件之一。

Matlab的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用matlab来解算问题要比用C和fortran等语言完成相同的事情简捷得多。

设所有WSN节点均可随机分布边长为A正方形区域内,网络节点的个数用N表示,B1表示信标节点数;Sxy用于存储节点的序号横纵坐标的矩阵;B2表示信标节点坐标矩阵;UN表示未知节点坐标矩阵;D为未知节点到信标节点距离矩阵;D_all表示所有节点间的相互距离;h表示节点间初始跳数矩阵;R代表行,L代表列;C表示网络节点个数与信标节点个数之差;X代表节点估计坐标初始矩阵,X=[x,y]';R为节点的通信距离,一般为10~100 m。

设正方形节点分布区域为100*100。

首先用语句D_all=zeros(R,L)初始化未知节点到信标节点的距离的初始矩阵;其次应用语句h=zeros(R,L)对WSN节点跳数赋初值为0;然后用语句X=zeros(2,C)估计节点坐标初始矩阵;最后,在100*100的正方形区域内产生均匀分布的随机拓扑,语句为C=A.*rand(2,N);规定带逻辑号的节点坐标:Sxy=[[1:N];C1];信标节点坐标:B2=[Sxy(2,1:B1);Sxy(3,1:B1];未知节点:UN=[Sxy(2,(B+1):N);Sxy(3,(B+1):N)]。

自适应蒙特卡罗无线传感器网络移动节点定位算法

自适应蒙特卡罗无线传感器网络移动节点定位算法

第44卷第4期吉林大学学报(工学版)Vol.44No.42014年7月JournalofJilinUniversity(EngineeringandTechnologyEdition)July2014自适应蒙特卡罗无线传感器网络移动节点定位算法李建坡,时明,钟鑫鑫(东北电力大学信息工程学院,吉林吉林132012)摘要:针对无线传感器网络中蒙特卡罗定位算法在节点的无线射程为非理想条件下定位精度不高、采样率低等缺点,提出一种自适应蒙特卡罗移动节点定位算法。

该算法利用不同区域的采样粒子对未知节点的定位精度影响不同,自适应地调整不同区域的采样粒子的影响权重,对未知节点进行定位;同时,利用上一时刻采样粒子增加限定条件,提高定位精度。

仿真结果表明,本算法在规则度不同的条件下节点的定位误差平均下降了约13%,在速度不同的条件下定位误差平均下降了约10%,网络覆盖率可达到99.19%。

关键词:通信技术;移动节点定位;蒙特卡罗定位算法;无线传感器网络中图分类号:TN911文献标志码:A文章编号:1671-5497(2014)04-1191-06DOI:10.13229/j.cnki.jdxbgxb201404044Self-adaptiveMonteCarlolocalizationalgorithmofmobilenodesinWSNLIJian-po,SHIMing,ZHONGXin-xin(SchoolofInformationEngineering,NortheastDianliUniversity,Jilin132012,China)Abstract:ToovercomethedisadvantagesoflowlocalizationaccuracyandpoorefficiencyofMonteCarloLocalization(MCL)algorithminharshWirelessSensorNetwork(WSN),aself-adaptivelocalizationalgorithmbasedonMCLisproposed.Thesampleparticlesindifferentregionshavedifferenteffectsonunknownnodelocalizationaccuracy.Theproposedalgorithmassignsself-adaptiveweightstosampleparticlesindifferentregionstopositiontheunknownnodes.Atthesametime,thealgorithmaddstheconstraintconditionusingthelast-timesampleparticles.Simulationresultsshowthattheaveragelocalizationerroroftheproposedself-adaptiveMCLalgorithmdescends13%atdifferentdegreesofirregularity.Theaveragelocalizationerrordescendsabout10%atdifferentnodespeeds.Thenetworkcoverageratereaches99.19%.Keywords:communication;mobilenodelocalization;MonteCarlolocalization(MCL)algorithm;wirelesssensornetwork0引言节点定位在无线传感器网络(WirelessSensorNetwork,WSN)应用中占有重要的地位,例如目标追踪、事件监测、定位路由、战场定位等[1]。

蒙特卡罗方法详解与MATLAB实现

蒙特卡罗方法详解与MATLAB实现

蒙特卡罗方法详解与MATLAB实现1.定义问题:首先需要明确问题的数学表达式或目标函数。

2.设计抽样方法:根据问题的特点,设计合适的抽样方法,通过生成随机数进行模拟。

3.数据生成:根据设定的抽样方法,生成一组模拟数据。

4.计算统计量:根据数据计算求解问题所需要的统计量,如均值、方差、概率等。

5.统计推断:通过统计量的计算结果,进行推断和分析,得出对问题的解答或估计。

1.定义问题函数:首先需要用MATLAB编写问题的数学表达式或目标函数。

例如,如果要判断一个点是否在一些区域内,可以定义一个函数来判断该点的坐标是否满足区域的条件。

2. 设计抽样方法:根据问题的特点,设计合适的抽样方法,通过生成随机数进行模拟。

在MATLAB中可以使用rand(或randn(等函数生成随机数。

3.数据生成:根据设定的抽样方法,生成一组模拟数据。

可以使用循环来生成多组随机数,以模拟多次试验的结果。

4. 计算统计量:根据生成的模拟数据,计算求解问题所需要的统计量。

根据具体的问题,可以使用MATLAB内置的统计函数,如mean(、var(等。

5. 统计推断:根据统计量的计算结果,进行推断和分析,得出对问题的解答或估计。

可以使用if语句或逻辑判断来判断判断是否满足条件,得到对问题的解答。

以求解圆的面积为例,详细说明蒙特卡罗方法在MATLAB中的实现:1. 定义问题函数:定义一个函数isInsideCircle(x, y)来判断点(x, y)是否在单位圆内:function inside = isInsideCircle(x, y)if x^2 + y^2 <= 1inside = true;elseinside = false;endend2. 设计抽样方法:通过rand(函数在区间[-1, 1]上生成一组随机数,表示点的横纵坐标。

x = 2 * rand(n, 1) - 1;y = 2 * rand(n, 1) - 1;4.计算统计量:根据生成的模拟数据,计算圆的面积的统计量。

Matlab学习系列18-蒙特卡罗方法

Matlab学习系列18-蒙特卡罗方法

Matlab学习系列18-蒙特卡罗⽅法18. 蒙特卡罗⽅法(⼀)概述⼀、原理蒙特卡罗(Monte Carlo )⽅法,是⼀种基于“随机数”的计算机随机模拟⽅法,通过⼤量随机试验,利⽤概率统计理论解决问题的⼀种数值⽅法。

其理论依据是:⼤数定律、中⼼极限定理(估计误差)。

常⽤来解决如下问题:1. 求某个事件的概率,基于“频率的极限是概率”;2. 可以描述为“随机变量的函数的数学期望”的问题,⽤随机变量若⼲个具体观察值的函数的算术平均值代替。

⼀般形式为求积分:[]()()()d ba E f X f x x x ?=? X 为⾃变量(随机变量),定义域为[a,b], f (x )为被积函数,()x ?为概率密度函数。

蒙特卡罗法步骤为:(1) 依据概率分布()x ?不断⽣成N 个随机数x , 依次记为x 1, …, x N , 并计算f (x i );(2) ⽤f (x i )的算术平均值1()Nii f x N =∑近似估计上述积分类⽐:“积分”同“求和”,“d x ”同“1/N ”,“()x ?”同“服从()x ?分布的随机数”;(3) 停⽌条件:⾄⾜够⼤的N 停⽌;或者误差⼩于某值停⽌。

3. 利⽤随机数模拟各种分布的随机现象,进⽽解决实际问题。

⼆、优缺点优点:能够⽐较逼真地描述具有随机性质的事物的特点及物理实验过程;受⼏何条件限制⼩;收敛速度与问题的维数⽆关;误差容易确定。

缺点:收敛速度慢;误差具有概率性;进⾏模拟的前提是各输⼊变量是相互独⽴的。

三、应⽤随机模拟实验,随机最优化问题,含有⼤量不确定因素的复杂决策系统进⾏风险模拟分析(⾦融产品定价、期权)。

(⼆)⽤蒙特卡罗法求事件概率⼀、著名的“三门问题”源⾃博弈论的⼀个数学游戏:参赛者⾯前有三扇关闭的门,其中⼀扇门的后⾯藏有⼀辆汽车,⽽两扇门的后⾯各藏有⼀只⼭⽺。

参赛者从三扇门中随机选取⼀扇,若选中后⾯有车的那扇门就可以赢得该汽车。

当参赛者选定了⼀扇门,但尚未开启它的时候,节⽬主持⼈会从剩下的两扇门中打开⼀扇藏有⼭⽺的门,然后问参赛者要不要更换⾃⼰的选择,选取另⼀扇仍然关着的门。

(完整word版)蒙特卡罗Monte Carlo模拟误差分析课程设计哈工大误差原理课程设计

(完整word版)蒙特卡罗Monte Carlo模拟误差分析课程设计哈工大误差原理课程设计

Monte Carlo模拟误差分析课程设计Monte Carlo模拟误差分析课程设计1。

实验目的1。

1 学习并掌握MATLAB软件的基本功能和使用。

1.2 学习并掌握基于Monte Carlo Method(MCM)分析的不确定度计算方法。

1。

3 研究Guide to the expression of Uncertainty in Measurement(GUM)法与MCM法的区别与联系和影响因素,自适应MCM方法,基于最短包含区间的MCM法。

2. MATLAB软件介绍实验内容2.1 介绍MATLAB软件的基本知识MATLAB名字由MATrix和LABoratory 两词的前三个字母组合而成。

20世纪七十年代,时任美国新墨西哥大学计算机科学系主任的Cleve Moller出于减轻学生编程负担的动机,为学生设计了一组调用LINPACK和EISPACK矩阵软件工具包库程序的“通俗易用”的接口,此即用FORTRAN编写的萌芽状态的MATLABMATLAB语言的主要特点(1). 具有丰富的数学功能(2)。

具有很好的图视系统(3)。

可以直接处理声言和图形文件。

(4)。

具有若干功能强大的应用工具箱。

(5). 使用方便,具有很好的扩张功能.(6). 具有很好的帮助功能演示内容:(1)。

MATLAB的数值计算功能在“命令行”Command提示窗口中键入:“A=eye(5,5);A=zeros(5,5);A=ones(5,5)”等命令生成各类矩阵;在“命令行"Command提示窗口中键入:“[v,d]=eig (A)"生成特征矩阵和特征向量;在“命令行"Command提示窗口中键入:“expm(A)”对矩阵A求幂;在“命令行"Command提示窗口中键入:x=[1 3 5];y=[2 4 6];z=conv(x,y);显示结果:z = 2 10 28 38 30(2)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

clear;clc;%初始化工作Ns = 20;Nn = 200;Vmax = 20;Xrange = 200;Yrange = 200;tr = 50;step = 20;N = 20;Nf = 3; %采样盒子确定时,估计位置要扩大圆面积ns_range = 200; %每个采样盒子的最大采样次数for i = 1:NsXseed(1,i)=rand(1,1)*Xrange;Yseed(1,i)=rand(1,1)*Yrange;endfor i = 1:NnXnode(1,i)=rand(1,1)*Xrange;Ynode(1,i)=rand(1,1)*Yrange;Xnode_g(1,i)=Xnode(1,i); %MCL估计位置,初始值设置为真实位置Ynode_g(1,i)=Ynode(1,i);end%初始时刻的粒子群,for every nodefor i = 1:Nnfor j = 1:Nlx(i,j,1) = Xnode_g(1,i);ly(i,j,1) = Ynode_g(1,i);endend%figure(1);%plot(Xseed,Yseed,'bo',Xnode,Ynode,'k*');%节点们开始运动,每次定位完成才开始下一次运动,这里假设这个定位过程耗时非常短%仿真步数for k=2:step%新的时刻,节点们先运动一下,RWP模型for i = 1:Nsr = rand(1,1)*Vmax;thita = rand(1,1)*2*pi;Xseed(k,i) = Xseed(k-1,i) + r*cos(thita);if Ynode(k,i) > Yrange || Ynode(k,i) < 0Xnode(k,i) = Xnode(k-1,i) + r*cos(thita);Ynode(k,i) = Ynode(k-1,i) - r*sin(thita);endend%对每一个node逐个进行定位for i = 1:Nn%测试每个seed是否可以用来定位A1 = []; %存储1跳锚节点序号A2 = []; %存储2跳锚节点序号for j = 1:Nsd1 = sqrt((Xnode(k,i)-Xseed(k,j))^2+(Ynode(k,i)-Yseed(k,j))^2);if d1<=trA1 = [A1 j];endif d1>tr && d1<=2*trfor m = 1:Nnif m ~= idmi = sqrt((Xnode(k,i)-Xnode(k,m))^2+(Ynode(k,i)-Ynode(k,m))^2);dms = sqrt((Xnode(k,m)-Xseed(k,j))^2+(Ynode(k,m)-Yseed(k,j))^2);if dmi<=tr && dms<=trA2 = [A2 j];endendendendend%接下来要获取采样盒子,每个粒子都要有一个采样盒子,然后还要进行采样,每个采样盒子的采样都要有一个次数限制,这里还是要分四种情况temp1 = size(A1,2);temp2 = size(A2,2);%第一种情况if temp1==0 && temp2==0Xnode_g(k,i)=Xnode_g(k-1,i);Ynode_g(k,i)=Ynode_g(k-1,i);for j = 1:Nlx(i,j,k) = 0; %周围没有锚节点,没法进行定位,则粒子群全部置零ly(i,j,k) = 0;endend%第二种情况if temp1~=0 && temp2==0for j = 1:Nsambox1 = [ Xnode_g(k-1,i)-Nf*Vmax];sambox2 = [ Xnode_g(k-1,i)+Nf*Vmax];sambox3 = [ Ynode_g(k-1,i)-Nf*Vmax];sambox4 = [ Ynode_g(k-1,i)+Nf*Vmax];Xsambox_min(i,j,k) = max(sambox1);Xsambox_max(i,j,k) = min(sambox2);Ysambox_min(i,j,k) = max(sambox3);Ysambox_max(i,j,k) = min(sambox4);%从采样盒子里采样lx(i,j,k) = unifrnd(Xsambox_min(i,j,k),Xsambox_max(i,j,k),1,1);ly(i,j,k) = unifrnd(Ysambox_min(i,j,k),Ysambox_max(i,j,k),1,1);ns = 1;%滤波and = [];for m = 1:temp1d1(m) = sqrt((lx(i,j,k)-Xseed(k,A1(m)))^2+(ly(i,j,k)-Yseed(k,A1(m)))^2);endendns = ns+1;end%进行最终的判断and = [];for m = 1:temp1d1(m) = sqrt((lx(i,j,k)-Xseed(k,A1(m)))^2+(ly(i,j,k)-Yseed(k,A1(m)))^2);if d1(m)<=trand = [and 0];endif d1(m)>trand = [and 1];endendif sum(and)~=0lx(i,j,k) = 0;ly(i,j,k) = 0;endend%至此节点i 的粒子群已经得到%下面是进行定位,粒子群的优化num_zero = 0;for j = 1:Nif lx(i,j,k) == 0num_zero = num_zero+1;endend%k时刻的定位位置if num_zero == NXnode_g(k,i) = Xnode_g(k-1,i);Ynode_g(k,i) = Ynode_g(k-1,i);endif num_zero ~= NXnode_g(k,i) = sum(lx(i,:,k))/(N-num_zero);Ynode_g(k,i) = sum(ly(i,:,k))/(N-num_zero);end%粒子群补全N个if num_zero == Nfor j = 1:Nlx(i,j,k) = 0;ly(i,j,k) = 0;endendif num_zero ~= Nfor j = 1:Nif lx(i,j,k) == 0lx(i,j,k) = Xnode_g(k,i);ly(i,j,k) = Ynode_g(k,i);endendendend%第三种情况if temp1==0 && temp2~=0for j = 1:Nsambox1 = [ Xnode_g(k-1,i)-Nf*Vmax];sambox2 = [ Xnode_g(k-1,i)+Nf*Vmax];sambox3 = [ Ynode_g(k-1,i)-Nf*Vmax];sambox4 = [ Ynode_g(k-1,i)+Nf*Vmax];Xsambox_min(i,j,k) = max(sambox1);Xsambox_max(i,j,k) = min(sambox2);Ysambox_min(i,j,k) = max(sambox3);Ysambox_max(i,j,k) = min(sambox4);and = [and 0];elseand = [and 1];endendns = ns+1;end%进行最终的判断and = [];for m = 1:temp2d1(m) = sqrt((lx(i,j,k)-Xseed(k,A2(m)))^2+(ly(i,j,k)-Yseed(k,A2(m)))^2);if d1(m)>tr && d1(m)<=2*trand = [and 0];elseand = [and 1];endendif sum(and)~=0lx(i,j,k) = 0;ly(i,j,k) = 0;endend%至此节点i 的粒子群已经得到%下面是进行定位,粒子群的优化num_zero = 0;for j = 1:Nif lx(i,j,k) == 0num_zero = num_zero+1;endend%k时刻的定位位置if num_zero == NXnode_g(k,i) = Xnode_g(k-1,i);Ynode_g(k,i) = Ynode_g(k-1,i);endif num_zero ~= NXnode_g(k,i) = sum(lx(i,:,k))/(N-num_zero);Ynode_g(k,i) = sum(ly(i,:,k))/(N-num_zero);end%粒子群补全N个if num_zero == Nfor j = 1:Nlx(i,j,k) = 0;ly(i,j,k) = 0;endendif num_zero ~= Nfor j = 1:Nif lx(i,j,k) == 0lx(i,j,k) = Xnode_g(k,i);ly(i,j,k) = Ynode_g(k,i);endendendend%第四种情况if temp1~=0 && temp2~=0for j = 1:Nsambox1 = [ Xnode_g(k-1,i)-Nf*Vmax];sambox2 = [ Xnode_g(k-1,i)+Nf*Vmax];sambox3 = [ Ynode_g(k-1,i)-Nf*Vmax];sambox4 = [ Ynode_g(k-1,i)+Nf*Vmax];Xsambox_min(i,j,k) = max(sambox1);Xsambox_max(i,j,k) = min(sambox2);Ysambox_min(i,j,k) = max(sambox3);Ysambox_max(i,j,k) = min(sambox4);%从采样盒子里采样lx(i,j,k) = unifrnd(Xsambox_min(i,j,k),Xsambox_max(i,j,k),1,1);ly(i,j,k) = unifrnd(Ysambox_min(i,j,k),Ysambox_max(i,j,k),1,1);ns = 1;%滤波and = [];for m = 1:temp1d1(m) = sqrt((lx(i,j,k)-Xseed(k,A1(m)))^2+(ly(i,j,k)-Yseed(k,A1(m)))^2);if d1(m)<=trand = [and 0];endif d1(m)<=trand = [and 0];endif d1(m)>trand = [and 1];endd1(m) = sqrt((lx(i,j,k)-Xseed(k,A2(m)))^2+(ly(i,j,k)-Yseed(k,A2(m)))^2);if d1(m)>tr && d1(m)<=2*trand = [and 0];elseand = [and 1];endendif sum(and)~=0lx(i,j,k) = 0;ly(i,j,k) = 0;endend%至此节点i 的粒子群已经得到%下面是进行定位,粒子群的优化num_zero = 0;for j = 1:Nif lx(i,j,k) == 0num_zero = num_zero+1;endend%k时刻的定位位置if num_zero == NXnode_g(k,i) = Xnode_g(k-1,i);Ynode_g(k,i) = Ynode_g(k-1,i);endif num_zero ~= NXnode_g(k,i) = sum(lx(i,:,k))/(N-num_zero);Ynode_g(k,i) = sum(ly(i,:,k))/(N-num_zero);end%粒子群补全N个if num_zero == Nfor j = 1:Nlx(i,j,k) = 0;ly(i,j,k) = 0;error_total(k) = sum(error(k,:))/Nn;endk = 1:size(error_total,2)plot(k,error_total,'b-o');。

相关文档
最新文档