首页 > 编程语言 >m基于PSO粒子群算法的重采样算法仿真,对比随机重采样,多项式重采样,分层重采样,系统重采样,残差重采样,MSV重采样

m基于PSO粒子群算法的重采样算法仿真,对比随机重采样,多项式重采样,分层重采样,系统重采样,残差重采样,MSV重采样

时间:2023-02-13 21:58:52浏览次数:49  
标签:采样 粒子 PSO 分层 sqrt 算法 XY 随机

1.算法描述

       重采样的主要方法有随机重采样,多项式重采样,分层重采样,系统重采样,残差重采样,MSV重采样等。

 

a.随机采样是一种利用分层统计思想设计出来的,将空间均匀划分,粒子打点后会产生高集中的均匀分布区,将各分布区的粒子点进行权重累计并解算(例如求平均权重),生成若干个区间权重,使用该信息进行求解。其理解起来的几何思想就是给粒子点做索引编号,对应较多的索引编号将会保留,而较少的就会被淘汰。随机采样可能会因为存在多个权重接近的均匀区而产生求解方向错误,甚至陷入局部最优。以下给出一段随机采样的matlab代码。[1]随后几种其他重采样方法代码不再展示。

 

b.多项式采样是1993年提出的改进,基本解决了粒子滤波的粒子退化问题。其基本形式与推进思想与随机采样相似,不同在于多项式采样会不断记录并复制计算相似或相同结果的权重累计值,从而得到最优的发展结果。

 

c.系统重采样是2000年提出的,这种算法与多项式采样算法较为近似,即将原有的权重空间分层,在每一层中抽取粒子,而系统重采样产生了一个随机数来供所有层使用,其结果更加均匀。

 

d.残差重采样法是1998年提出的,它以多项式重采样法为基础,其基本思想是直接保留原有的权重大的粒子,剩下的不足部分随机选取重新赋权的粒子补充。

 

e.分层采样是分别对每个类别进行随机采样。分层采样往往是为保证在采样空间或类型选取上的均匀性及代表性所采用的方法。分层的依据可因精度评价的目标而异,常用的分层有地理区、自然生态区、行政区域或分类后的类别等。

 

f.最小采样方差(MSV:minimum sampling variance)最优重采样方法,在满足渐近无偏性的前提下获得最小采样方差.方法:给出三种"重采样同分布"测度方法:Kullback-Leibler偏差,Kolmogorov-Smirnov统计和采样方差(sampling variance).所提出的最小采样方差重采样放宽了无偏性条件,仅满足渐近无偏,但获得了最小采样方差(参见定理2-4论证以及仿真性能对比).

 

2.仿真效果预览

matlab2022a仿真结果如下:

 

 

3.MATLAB核心程序

 

clc;
clear all;
close all;
warning off;
addpath 'func\';
for ij = 1:100
    rng(ij);  
ij 
global NUM;  
global NOISE;
global XY_pso;
  
%粒子滤波学习因子 
c1   = 0.3;             
c2   = 0.3;  
%惯性权重
w    = 0.75;    
%粒子数量
N    = 100;  
ITER = 200;    
wmax = 0.9;                      
wmin = 0.4;
D    = 2;     
NUM  = 7;    
 
BS = [0,        0,          1.5,          1.5,        0,         -1.5,       -1.5;
      0,  sqrt(3),  0.5*sqrt(3), -0.5*sqrt(3), -sqrt(3), -0.5*sqrt(3), 0.5*sqrt(3)];
for i = 1:NUM
    X_(1,i) = BS(1,i);
    X_(2,i) = BS(2,i);
end 
R        = 3000;
 
 
XY_robot = R/3+2*R/3*rand(1,D);%定义真实位置
XY_pso   = R*X_;
 
for i = 1:NUM
    R0(i) = sqrt((XY_pso(1,i) - XY_robot(1))^2 + (XY_pso(2,i) - XY_robot(2))^2);
end
for i = 1:NUM-1
    R_n(i)=R0(i+1)-R0(1);
end
NOISE = R_n+10*randn(1,NUM-1);
%50的时候产生强干扰
if ij >= 50 & ij <= 60
NOISE = R_n+200-20*(ij-50)*ones(1,NUM-1);
end
 
 
 
%粒子初始化
x     = rand(N,D);
v     = rand(N,D);
for i=1:N
    p(i)   = fitness(x(i,:));
    y(i,:) = x(i,:);
end
pg = x(N,:);   
 
for i=1:(N-1)
    if fitness(x(i,:))<fitness(pg)
        pg=x(i,:);
    end
end
%开始粒子滤波
for t=1:ITER
    for j=1:N
        fv(j)=fitness(x(j,:));
    end
    
    fvag = sum(fv)/N;         
    fmin = sum(fv);      
    
    
    
    %自适应权重计算公式
    for i=1:N
        if fv(i)<fvag       
            w = wmin + (fv(i)-fmin)*(wmax-wmin)/(fvag-fmin);
        else
            w = wmax;
        end
        v(i,:) = w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:));
        x(i,:) = x(i,:) + v(i,:);
        
        if x(i,1)<0
           x(i,1)=0;
        end
        if x(i,2)<0
           x(i,2)=0;
        end        
        if x(i,1)>=R
           x(i,1)=R;
        end
        if x(i,2)>=R
           x(i,2)=R;
        end          
        
        if fitness(x(i,:))<p(i)
           p(i)=fitness(x(i,:));
           y(i,:)=x(i,:);
        end
        if p(i)<fitness(pg)
           pg=y(i,:);
        end
    end
    %分层重采样算法
    x    = resample0(1:N,p',x); %重采样
end
xm = pg';
fv = fitness(pg);
 
%计算误差
ERR(ij) = abs([(XY_robot(1)-xm(1))+(XY_robot(2)-xm(2))]/2);
%这里用简化方式效果更好些
ERR2(ij)= N/(ERR(ij)+1);
end
02_070m

 

  

 

标签:采样,粒子,PSO,分层,sqrt,算法,XY,随机
From: https://www.cnblogs.com/51matlab/p/17117942.html

相关文章

  • m基于GA遗传优化的三维工程施工设施布局算法matlab仿真,显示二维和三维布局优化效果
    1.算法描述       GA把问题的解表示成“染色体”,在算法中也即是以二进制编码的串。并且,在执行遗传算法之前,给出一群“染色体”,也即是假设解。然后,把这些假设解置于......
  • 《分布式技术原理与算法解析》学习笔记Day10
    调度框架:单体调度什么是调度?分布式系统架构的目的是将多个服务器资源管理起来,对外提供服务。调度是指为用户任务寻找合适的服务器的过程,它是分布式系统中一个非常重要的......
  • ACM算法目录
    ACM算法目录数学基础C-CakeHDU-1722(数学)动态规划最长公共子序列(模板LCSL)P2430严酷的训练题解+P2347砝码称重(01背包)+P18025倍经验日(01背包问题......
  • 密码学简单数论笔记(2):最大公约数、扩展欧几里得算法和最小公倍数
      参考资料:1.https://www.bilibili.com/video/BV1x3411s7Sy/?spm_id_from=333.788&vd_source=e66dd25b0246f28e772d75f11c80f03c2.http://t.csdn.cn/diQ272.余红兵:《......
  • 毕业设计实现思路-算法部分
    原理已有AP的坐标信息是提前录入系统的,客户端是可以拿到这个信号的,拿到信号后与自己扫描到的周边信号信息进行运算,从而确定位置发现一个新的定位技术叫wifiRTT,根据往返时......
  • 代码随想录算法训练营Day12 栈与队列
    代码随想录算法训练营代码随想录算法训练营Day12栈与队列|239.滑动窗口最大值 347.前K个高频元素 总结239.滑动窗口最大值给定一个数组nums,有一个大小为 k......
  • Vue中的diff算法探析
    一、什么是diff diff 是什么?diff 就是比较两个树,render 会生成两颗树,一个新树newVnode,一棵旧树oleVnode。然后两棵树进行对比更新差异就是diff,全称是difference......
  • 代码随想录算法训练营Day12 栈与队列
    代码随想录算法训练营代码随想录算法训练营Day12栈与队列|239.滑动窗口最大值 347.前K个高频元素 总结239.滑动窗口最大值给定一个数组nums,有一个大小为 k......
  • hamilton路径-图论算法模板
    什么是哈密尔顿路径哈密顿图(哈密尔顿图)(英语:Hamiltoniangraph,或Traceablegraph)是一个无向图,由天文学家哈密顿提出,由指定的起点前往指定的终点,途中经过所有其他节点且只经过......
  • Kruskal’s算法正确性的证明
     Kruskal’s算法产生一棵最小生成树证明:设T是贪心法产生的解,U是最优解  设e是属于T但不属于U的成本最小的边;换言之,T中成本小于c(e)的边都在U中.设f是{e}+U产生的环路......