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

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

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仿真结果如下:
1.png
2.png
3.png
4.png
5.png
6.png

3.MATLAB核心程序

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
相关文章
|
9天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
137 55
|
15小时前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
|
7天前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
32 3
|
5天前
|
供应链 算法 调度
排队算法的matlab仿真,带GUI界面
该程序使用MATLAB 2022A版本实现排队算法的仿真,并带有GUI界面。程序支持单队列单服务台、单队列多服务台和多队列多服务台三种排队方式。核心函数`func_mms2`通过模拟到达时间和服务时间,计算阻塞率和利用率。排队论研究系统中顾客和服务台的交互行为,广泛应用于通信网络、生产调度和服务行业等领域,旨在优化系统性能,减少等待时间,提高资源利用率。
|
13天前
|
算法
基于模糊PI控制算法的龙格库塔CSTR模型控制系统simulink建模与仿真
本项目基于MATLAB2022a,采用模糊PI控制算法结合龙格-库塔方法,对CSTR模型进行Simulink建模与仿真。通过模糊控制处理误差及变化率,实现精确控制。核心在于将模糊逻辑与经典数值方法融合,提升系统性能。
|
13天前
|
存储 算法
基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
本项目基于HMM模型实现金融数据预测,包括模型训练与预测两部分。在MATLAB2022A上运行,通过计算状态转移和观测概率预测未来值,并绘制了预测值、真实值及预测误差的对比图。HMM模型适用于金融市场的时间序列分析,能够有效捕捉隐藏状态及其转换规律,为金融预测提供有力工具。
|
13天前
|
机器学习/深度学习 算法 信息无障碍
基于GoogleNet深度学习网络的手语识别算法matlab仿真
本项目展示了基于GoogleNet的深度学习手语识别算法,使用Matlab2022a实现。通过卷积神经网络(CNN)识别手语手势,如&quot;How are you&quot;、&quot;I am fine&quot;、&quot;I love you&quot;等。核心在于Inception模块,通过多尺度处理和1x1卷积减少计算量,提高效率。项目附带完整代码及操作视频。
|
16天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于深度学习网络的宝石类型识别算法matlab仿真
本项目利用GoogLeNet深度学习网络进行宝石类型识别,实验包括收集多类宝石图像数据集并按7:1:2比例划分。使用Matlab2022a实现算法,提供含中文注释的完整代码及操作视频。GoogLeNet通过其独特的Inception模块,结合数据增强、学习率调整和正则化等优化手段,有效提升了宝石识别的准确性和效率。
|
19天前
|
算法
基于WOA算法的SVDD参数寻优matlab仿真
该程序利用鲸鱼优化算法(WOA)对支持向量数据描述(SVDD)模型的参数进行优化,以提高数据分类的准确性。通过MATLAB2022A实现,展示了不同信噪比(SNR)下模型的分类误差。WOA通过模拟鲸鱼捕食行为,动态调整SVDD参数,如惩罚因子C和核函数参数γ,以寻找最优参数组合,增强模型的鲁棒性和泛化能力。
|
25天前
|
机器学习/深度学习 算法 Serverless
基于WOA-SVM的乳腺癌数据分类识别算法matlab仿真,对比BP神经网络和SVM
本项目利用鲸鱼优化算法(WOA)优化支持向量机(SVM)参数,针对乳腺癌早期诊断问题,通过MATLAB 2022a实现。核心代码包括参数初始化、目标函数计算、位置更新等步骤,并附有详细中文注释及操作视频。实验结果显示,WOA-SVM在提高分类精度和泛化能力方面表现出色,为乳腺癌的早期诊断提供了有效的技术支持。