【BP分类】基于花朵授粉算法优化BP神经网络实现数据分类附matlab代码

简介: 【BP分类】基于花朵授粉算法优化BP神经网络实现数据分类附matlab代码

 1 简介

为了提高分类的准确性,降低因预测精度不高带来的电能损失,提出将花朵授粉算法(flower pollination algorithm,FPA)与BP神经网络相结合,利用FPA算法具有收敛速度快,全局搜索能力强的特点,对BP神经网络的权值和阈值进行优化,改善传统BP神经网络因权值和阈值的选择具有随机性而陷入局部最优和收敛速度慢的缺点.最后,通过某地区实际负荷数据验证了优化后的BP神经网络的预测精度得到了提高.

2 部分代码

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Flower Pollination Algorithm for Multimodal Optimization (MFPA)%Jorge G醠vez, Erik Cuevas and Omar Avalos%%This is the line to execute the code:%%[mem,bestSol,bestFit,optima,FunctionCalls]=FPA([500.255002]);%FitFunc implements the function to be optimized%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function [mem,bestSol,bestFit,optima,FunctionCalls]=FPA(para)% Default parametersif nargin<1,   para=[50 0.25 500];   endn=para(1);           % Population sizep=para(2);           % Probabibility switchN_iter=para (3);  % Number of iterationsphase = 1; %First statephaseIte= [0.5,0.9,1.01]; %State vector%Deb Functiond = 1;Lb = 0;Ub = 1;optima =  [.1;.3;.5;.7;.9];% Initialize the populationfor i=1:n,  Sol(i,:)=Lb+(Ub-Lb).*rand(1,d);  Fitness(i)=fitFunc(Sol(i,:));  %%Evaluate fitness functionend% Initialice the memory[mem,bestSol,bestFit,worstF] = memUpdate(Sol,Fitness, [], zeros(1,d), 100000000, 0, phase,d,Ub,Lb);S = Sol;FunctionCalls = 0;% Main Loopfor ite = 1 : N_iter,                    %For each pollen gamete, modify each position acoording                    %to local or global pollination                    for i = 1 : n,                                % Switch probability                                if rand>p,                                                                                        L=Levy(d);                                            dS=L.*(Sol(i,:)-bestSol);                                            S(i,:)=Sol(i,:)+dS;                                            S(i,:)=simplebounds(S(i,:),Lb,Ub);                                else                                            epsilon=rand;                                            % Find random flowers in the neighbourhood                                            JK=randperm(n);                                            % As they are random, the first two entries also random                                            % If the flower are the same or similar species, then                                            % they can be pollenated, otherwise, no action.                                            % Formula: x_i^{t+1}+epsilon*(x_j^t-x_k^t)                                            S(i,:)=S(i,:)+epsilon*(Sol(JK(1),:)-Sol(JK(2),:));                                            % Check if the simple limits/bounds are OK                                            S(i,:)=simplebounds(S(i,:),Lb,Ub);                                end                                Fitness(i)=fitFunc(S(i,:));                    end                    %Update the memory                    [mem,bestSol,bestFit,worstF] = memUpdate(S,Fitness,mem,bestSol,bestFit,worstF,phase,d,Ub,Lb);                                       Sol = get_best_nest(S, mem, p);                                      FunctionCalls = FunctionCalls + n;                                   if ite/N_iter > phaseIte(phase)                        %Next evolutionary process stage                        phase = phase + 1;                        [m,~]=size(mem);                        %Depurate the memory for each stage                        mem = cleanMemory(mem);                        FunctionCalls = FunctionCalls + m;                   endend%Plot the solutions (mem) founded by the multimodal frameworkx = 0:.01:1;y = ((sin(5.*pi.*x)).^ 6);plot(x,y)hold onplot(mem(:,1),-mem(:,2),'r*');

3 仿真结果

image.gif编辑

4 参考文献

[1]牛庆、曹爱民、陈潇一、周冬. 基于花朵授粉算法和BP神经网络的短期负荷预测[J]. 电网与清洁能源, 2020, 36(10):5.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。


相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
1月前
|
传感器 算法 计算机视觉
基于肤色模型和中值滤波的手部检测算法FPGA实现,包括tb测试文件和MATLAB辅助验证
该内容是关于一个基于肤色模型和中值滤波的手部检测算法的描述,包括算法的运行效果图和所使用的软件版本(matlab2022a, vivado2019.2)。算法分为肤色分割和中值滤波两步,其中肤色模型在YCbCr色彩空间定义,中值滤波用于去除噪声。提供了一段核心程序代码,用于处理图像数据并在FPGA上实现。最终,检测结果输出到&quot;hand.txt&quot;文件。
|
4天前
|
机器学习/深度学习 人工智能 算法
基于DCT和扩频的音频水印嵌入提取算法matlab仿真
本文介绍了结合DCT和扩频技术的音频水印算法,用于在不降低音质的情况下嵌入版权信息。在matlab2022a中实现,算法利用DCT进行频域处理,通过扩频增强水印的隐蔽性和抗攻击性。核心程序展示了水印的嵌入与提取过程,包括DCT变换、水印扩频及反变换步骤。该方法有效且专业,未来研究将侧重于提高实用性和安全性。
|
2天前
|
机器学习/深度学习 传感器 数据可视化
MATLAB用深度学习长短期记忆 (LSTM) 神经网络对智能手机传感器时间序列数据进行分类
MATLAB用深度学习长短期记忆 (LSTM) 神经网络对智能手机传感器时间序列数据进行分类
15 1
MATLAB用深度学习长短期记忆 (LSTM) 神经网络对智能手机传感器时间序列数据进行分类
|
2天前
|
机器学习/深度学习 算法 数据挖掘
基于PSO优化的CNN-LSTM-Attention的时间序列回归预测matlab仿真
该文档介绍了使用MATLAB2022A中PSO优化算法提升时间序列预测模型性能的过程。PSO优化前后对比显示了优化效果。算法基于CNN、LSTM和Attention机制构建CNN-LSTM-Attention模型,利用PSO调整模型超参数。代码示例展示了PSO的迭代优化过程及训练、预测和误差分析环节。最终,模型的预测结果以图形形式展示,并保存了相关数据。
|
8天前
|
机器学习/深度学习 数据可视化 网络架构
matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类
matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类
12 0
|
8天前
|
数据可视化
matlab用高斯曲线拟合模型分析疫情数据
matlab用高斯曲线拟合模型分析疫情数据
13 0
|
8天前
|
文字识别 算法 计算机视觉
图像倾斜校正算法的MATLAB实现:图像倾斜角检测及校正
图像倾斜校正算法的MATLAB实现:图像倾斜角检测及校正
15 0
|
9天前
|
机器学习/深度学习 算法 网络架构
matlab使用贝叶斯优化的深度学习
matlab使用贝叶斯优化的深度学习
15 0
|
11天前
|
机器学习/深度学习 算法
【MATLAB】GA_ELM神经网络时序预测算法
【MATLAB】GA_ELM神经网络时序预测算法
282 9
|
17天前
|
存储 人工智能 机器人
【Matlab】Matlab电话拨号音合成与识别(代码+论文)【独一无二】
【Matlab】Matlab电话拨号音合成与识别(代码+论文)【独一无二】

热门文章

最新文章