首页 > 编程语言 >基于PSO粒子群算法优化RBF网络的数据预测matlab仿真

基于PSO粒子群算法优化RBF网络的数据预测matlab仿真

时间:2023-04-11 20:55:47浏览次数:48  
标签:粒子 end PSO pop matlab RBF 最优 函数

1.算法描述

      1985年,Powell提出了多变量插值的径向基函数(RBF)方法。径向基函数是一个取值仅仅依赖于离原点距离的实值函数,也可以是到任意一点c的距离,c点称为中心点。任意满足上述特性的函数,都可以叫做径向基函数。一般使用欧氏距离计算距离中心点的距离(欧式径向基函数)。最常用的径向基函数是高斯核函数。RBF神经网络只有三层,即输入层、隐藏层、输出层。RBF网络的基本思想是:用RBF作为隐单元的“基”构成隐含层空间,这样就可以将输入矢量直接映射到隐空间,而不需要通过权连接。当RBF的中心点确定以后,这种映射关系也就确定了。而隐含层空间到输出空间的映射是线性的,即网络的输出是隐单元输出的线性加权和,此处的权即为网络可调参数。其中,隐含层的作用是把向量从低维度的p映射到高维度的h,这样低维度线性不可分的情况到高维度就可以变得线性可分了,主要就是核函数的思想。这样,网络由输入到输出的映射是非线性的,而网络输出对可调参数而言却又是线性的。网络的权就可由线性方程组直接解出,从而大大加快学习速度并避免局部极小问题。RBF神经网络的隐节点采用输入模式与中心向量的距离(如欧式距离)作为函数的自变量,并使用径向基函数(如Gaussian函数)作为激活函数。神经元的输入离径向基函数中心越远,神经元的激活程度就越低(高斯函数)。RBF网络的输出与部分调参数有关,譬如,一个wij值只影响一个yi的输出,RBF神经网络因此具有“局部映射”特性。

 

 

 

 

 

 

      PSO中,每个优化问题的解都是搜索空间的一只鸟,我们称之为“粒子”。所有的粒子都有一个被优化的函数决定的适应值,每个粒子还有一个速度决定他们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。

 

       PSO初始化为一群随机粒子(随机解)。然后通过迭代找到最优解,在每一次迭代中,粒子通过跟踪两个“极值”来更新自己。第一个就是粒子本身所找到的最优解,这个解叫做个体极值。另一个极值是整个种群目前找到的最优解,这个极值是全局机制。另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值。

        PSO初始化为一群随机粒子(随机解)。然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个“极值(pbest和gbest)”来更新自己。在找到这两个最优值后,粒子通过下面的公式来更新自己的速度和位置。

 

 

 

 

 

 

 对于公式(1):

 

公式(1)中的第一部分称为记忆项,表示上次速度大小和方向的影响;

公式(1)中的第二部分称为自身认知项,是从当前点指向粒子自身最好点的一个矢量,表示粒子的动作来源于自己经验的部分;

公式(1)中的第三部分称为群体认知项,是一个从当前点指向种群最好点的矢量,反映了粒子间的协调合作和知识共享。粒子就是通过自己的经验和同伴中最好的经验来决定下一步的运动。

 

 

 

 

综上所述,标准PSO算法流程:

初始化一群微粒(群体规模为N),包括随机位置和速度;

评价每个微粒的适应度;

对每个微粒,将其适应值与其经过的最好位置pbest作比较,如果较好,则将其作为当前的最好位置pbest;

对每个微粒,将其适应值与其经过的最好位置gbest作比较,如果较好,则将其作为当前的最好位置gbest;

根据公式(2)、(3)调整微粒的速度和位置;

未达到结束条件则转到第二步。

迭代终止条件根据具体问题一般选为最大迭代次数Gk或微粒群迄今为止搜索到的最优位置满足预定最小适应阈值。

 

2.仿真效果预览

matlab2022a仿真结果如下:

 

 

 

 

 

 

 

 

3.MATLAB核心程序

 

V = 0.1*rands(m,n);
BsJ = 0;
 
%根据初始化的种群计算个体好坏,找出群体最优和个体最优
for s = 1:m
    indivi = pop(s,:);
    [indivi,BsJ] = func_obj(indivi,BsJ);
    Error(s) = BsJ;
end
 
[OderEr,IndexEr] = sort(Error);
Error;
Errorleast = OderEr(1);
for i = 1:m
    if Errorleast == Error(i)
        gbest = pop(i,:);
        break;
    end
end
ibest = pop;
 
 
for kg = 1:G
    kg
    for s = 1:m;
%个体有4%的变异概率        
        for j = 1:n
            for i = 1:m
                if rand(1)<0.04
                    pop(i,j) = rands(1);
                end
            end
        end
%r1,r2为粒子群算法参数        
        r1 = rand(1);
        r2 = rand(1);
 
%个体和速度更新        
        V(s,:) = w*V(s,:) + c1*r1*(ibest(s,:)-pop(s,:)) + c2*r2*(gbest-pop(s,:));
        pop(s,:) = pop(s,:) + 0.3*V(s,:);
        
        for j = 1:3
            if pop(s,j) < MinX(j)
                pop(s,j) = MinX(j);
            end
            if pop(s,j) > MaxX(j)
                pop(s,j) = MaxX(j);
            end
        end
        for j = 4:9
            if pop(s,j) < MinX(j)
                pop(s,j) = MinX(j);
            end
            if pop(s,j) > MaxX(j)
                pop(s,j) = MaxX(j);
            end
        end
        for j = 10:12
            if pop(s,j) < MinX(j)
                pop(s,j) = MinX(j);
            end
            if pop(s,j) > MaxX(j)
                pop(s,j) = MaxX(j);
            end
        end
 
%求更新后的每个个体适应度值        
        [pop(s,:),BsJ] = func_obj(pop(s,:),BsJ);
        error(s) = BsJ;
%根据适应度值对个体最优和群体最优进行更新        
        if error(s)<Error(s)
            ibest(s,:) = pop(s,:);
            Error(s) = error(s);
        end
        if error(s)<Errorleast
            gbest = pop(s,:);
            Errorleast = error(s);
        end
    end
    
    Best(kg) = Errorleast;
end
plot(Best,'-bs',...
    'LineWidth',2,...
    'MarkerSize',6,...
    'MarkerEdgeColor','r',...
    'MarkerFaceColor',[0.7,0.7,0.4]);
 
save net.mat gbest;

 

  

 

标签:粒子,end,PSO,pop,matlab,RBF,最优,函数
From: https://www.cnblogs.com/51matlab/p/17307677.html

相关文章

  • m基于GA遗传优化和OSPF协议的WSN最短路由算法matlab仿真,并输出节点的不同层域
    1.算法仿真效果matlab2022a仿真结果如下:    2.算法涉及理论知识概要2.1GA遗传优化        GA把问题的解表示成“染色体”,在算法中也即是以二进制编码的串。并且,在执行遗传算法之前,给出一群“染色体”,也即是假设解。然后,把这些假设解置于问题的“环境”中,并按......
  • 基于Matlab的数字水印设计——基于空域的水印处理系统
    基于Matlab的数字水印设计——基于空域的水印处理系统原文链接:https://blog.csdn.net/yl624624/article/details/119966213MATLAB数字水印处理系统【LSB,界面GUI】摘要数字水印(DigitalWatermarking)技术是我们生活中经常见到的信息隐藏技术。它将一些标识信息(即数字水印......
  • MATLAB代码:考虑灵活性供需不确定性的储能参与电网调峰优化配置
    MATLAB代码:考虑灵活性供需不确定性的储能参与电网调峰优化配置关键词:储能优化配置电网调峰风电场景生成 灵活性供需不确定性参考文档:《考虑灵活性供需不确定性的储能优化配置》复现其上层模型,下层模型未实现仿真平台:MATLAByalmip+cplex主要内容:代码主要做的是应用储能辅......
  • MATLAB代码:基于二阶锥规划的主动配电网动态重构研究
    MATLAB代码:基于二阶锥规划的主动配电网动态重构研究关键词:配电网重构二阶锥主动动态重构参考文档:《考虑动态网络重构的主动配电网优化运行策略》参考了重构部分公式《主动配电网最优潮流研究及其应用实例》参考了二阶锥松弛部分公式仿真平台:MATLABYALMIP+CPLEX优势:代码注......
  • MATLAB代码:考虑P2G与碳捕集机组的多能微网低碳经济调度
    MATLAB代码:考虑P2G与碳捕集机组的多能微网低碳经济调度关键词:碳交易阶梯碳交易碳捕集多能微网低碳调度仿真平台:MATLAB+yalmip+cplex主要内容:代码主要做的是一个含有碳捕集机组、电转气装置的多能源微网低碳调度模型,将捕集到的高浓度二氧化碳(CO2)作为原料供电转气设备......
  • MATLAB代码:基于SOE算法的多时段随机配电网重构方法
    MATLAB代码:基于SOE算法的多时段随机配电网重构方法关键词:配电网重构SOE算法多时段随机重构  仿真平台:MATLAB+CPLEXgurobi平台优势:代码具有一定的深度和创新性,注释清晰主要内容:代码主要做的是一个通过配电网重构获取最优网络拓扑的问题,从而有效降低网损,提高经济效益,同时......
  • 基于深度学习网络的5G通信链路信道估计算法matlab仿真
    1.算法描述        深度学习(英语:deeplearning),是一个多层神经网络是一种机器学习方法。在深度学习出现之前,由于诸如局部最优解和梯度消失之类的技术问题,没有对具有四层或更多层的深度神经网络进行充分的训练,并且其性能也不佳。但是,近年来,Hinton等人通过研究多层神经网络,......
  • m基于形态学处理和SVM的视频行人密集度分析matlab仿真
    1.算法描述       行人检测技术已经成为计算机视觉领域的关键研究方向。行人检测的最重要的任务就是对行人目标进行准确定位。行人检测技术有很强的使用价值,可以与多人跟踪、行人重识别等技术结合,应用于汽车无人驾驶系统、智能机器人、智能视频监控、人体行为分析、人流量......
  • m基于shepp-Logan模型和滤波反投影的医学图像多尺度全局重建和局部重建matlab仿真
    1.算法描述        从投影重建物体的截面图像是图像处理中非常重要的技术此技术在物体的无损伤性检测其内部缺陷的应用中能起很大作用从投影重建图像的技术早在20世纪中期就已经制成常规医疗诊断设备的商品1917年奥地利数学家J.Radon发表的论文证明了二维物体或三维物体......
  • MATLAB代码:综合能源系统优化模型概述及其鲁棒优化
    MATLAB代码:综合能源系统优化模型概述及其鲁棒优化主要内容:本文在分析典型冷热电联供(combinedcooling,heatandpower,CCHP)系统的基础上,并结合其他优秀lunwen加以补充模型中的不足处,并围绕该系统结构设计了微网调度优化模型构架.在该结构中,选取电气、烟气、蒸汽、......