【BP回归预测】基于matlab随机蛙跳算法SFLA优化神经网络数据回归预测【含Matlab源码 2272期】

news2025/1/13 7:58:24

⛄一、蛙跳算法

1 改进的免疫蛙跳算法
免疫蛙跳算法具有混合蛙跳算法的全局优化与局部细致搜索优点, 可以优化连续问题和离散问题, 具有较强的鲁棒性;同时, 群体具有的免疫机制对群体进行控制和调节, 把目标函数和制约条件作为青蛙群体的抗原, 保证生成的青蛙群体直接与问题相关联, 收敛方向得以控制;对与抗原亲和力高的青蛙抗体进行记忆, 并从中提取免疫疫苗对抗体群进行注射, 保证抗体群在更新过程中的多样性, 提高算法的效率, 防止群体的退化。参照免疫算法和混合蛙跳算法的设计原理, 下面给出具体实现步骤:

  1. 步骤1:抗原输入。输入目标函数和各种约束作为免疫蛙跳算法的抗原。

  2. 步骤2:针对F只青蛙 (解) , 产生初始群体。生成初始抗体群N、促进记忆青蛙群N1、检测记忆青蛙群N2。
    在这里插入图片描述
    式中:Tact为一个预先确定的亲和力阈值。

  3. 步骤4:免疫记忆青蛙群体更新。根据一定比例, 从青蛙抗体群N中选出亲和力高的抗体, 用它们替换促进记忆青蛙群体N1中亲和力低的抗体;将抗体群N中亲和力低的抗体选入检测记忆青蛙群体N2, 用它们替换检测记忆青蛙群体N2中亲和力高的抗体。

  4. 步骤5:青蛙抗体群的促进与抑制。当记忆青蛙群体N1中抗体浓度的最大值cmax低于抗体浓度阈值th时, 记忆青蛙群体中的抗体处于多样化;否则抗体趣于一致化, 随机产生的新个体代替被淘汰的浓度大的个体。用检测记忆青蛙群体N2去检测N中是否含有已搜索过的抗体 (即N2中记录的抗体) , 如果有就用随机青蛙抗体取代它。

  5. 步骤6:将促进记忆青蛙群体N1与检测后的青蛙抗体群N相结合生成新的青蛙抗体种群, 将F只青蛙按适应值降序排列分为m子群体, 对每一个子群体中的青蛙个体找出其最优个体和最差个体, 在指定迭代次数内提高差个体的适应值, 针对各个子群体, 按适应值降序排列体, 进行重新分配和混合蛙跳运算;

  6. 步骤7:终止条件是否满足?如果满足, 结束迭代, 否则转向Step3。

2 基于ISFLA优化的WNN预测模型
2.1 WNN模型的原理与结构

小波神经网络是一种结合小波分析和神经网络而提出的一种前馈神经网络。一般的WNN模型用小波函数代替Sigmoid函数作为隐含层的激活函数, 既具有神经网络的学习能力、泛化能力及非线性映射能力, 又具有小波变换的多尺度时频分析手段和良好的逼近特性。本文采用只含有一个隐含层的3层网络。网络的隐层神经元采用小波函数做激励函数, 输出层神经元采用Sigmoid函数做激励函数。

设输入的样本的个数为m, 输入层节点的个数为p, 隐含层节点的个数为n, 输出层节点的个数为q;wij为连接输出层节点与隐含层节点的连接权值, wjk为连接隐含层节点与输入层节点的连接权值, θj为隐含层节点的阈值, θi为输出层节点的阈值, aj和bj分别为第j个隐含层节点的伸缩系数和平移系数;则上述WNN模型可表示为:
在这里插入图片描述
式中:f (x) 为Sigmoid函数, 即f (x) =1/[1+exp (-x) ]。

由于Morlet小波基对干扰的鲁棒性好、误差小、计算稳定等特点[10], ψ (x) 采用较多使用的Morlet母小波

ψ (x) cos (1.75x) exp (-x2/2) (4)

单结点输出时, 网络输出的均方误差 (mean square error, MSE) 为
在这里插入图片描述
WNN模型采用梯度下降法训练网络, 利用前馈网络反向传播误差, 不断地调整、优化、确定网络的权值和尺度因子、平移因子, 节点之间的权重值与阈值, 使网络计算输出与期望输出拟合最优, 即MSE最小。

2.2 ISFLA-WNN模型的实现
2.2.1 确定算法的参数
根据WNN模型的输入输出样本集确定网络的拓扑结构并作规范化处理, 对优化的网络参数进行编码, 将神经网络的各连接权值、各阈值、伸缩平移系数作为青蛙个体。

2.2.2 初次优化网络参数
利用免疫蛙跳算法对WNN模型参数 (权值、阈值、伸缩平移系数) 进行初次优化, 代替了神经网络参数初始的随机赋值, 克服了仅凭借误差的传播作为修正法则的弊端。

2.2.3 适应值评价
根据ISFLA算法, 以WNN模型的均方差MSE作为青蛙种群搜索性能的评价指标, 适应度越高, 网络实际输出和期望输出的误差越小, 记录最佳个体适应度值, 及其对应的青蛙个体, 该青蛙个体就是下次迭代中WNN模型的最优网络参数。

2.2.4 判断中止条件
判断适应度值是否达到最大误差设定值以及迭代次数是否达到最大迭代步数, 若不满足条件, 按免疫蛙跳算法进行更新, 并生成新一代种群, 返回 (2) ;如果满足条件, 将全局最优青蛙个体映射为WNN网络的权值、域值、伸缩平移系数, 得到一个建立好参数的WNN网络。

2.2.5 进行WNN模型操作, 生成最优解
将上述方法得到的最优解作为WNN网络的初始权值、域值、伸缩平移系数, 对这些参数用WNN模型的梯度下降法进行二次优化训练直到网络达到性能指标, 经过以上训练, 改进的免疫蛙跳算法优化的小波神经网络达到最佳状态, 将该状态下的最终网络参数用于水稻的需水量预测, 输出预期结果。

⛄二、部分源代码

clear;
data=JustLoad();
warning(‘off’);
% Inputs (Train and Test)
inputs=rescale(data.TrainInputs)‘;
TstInputs=rescale(data.TestInputs)’;

% Targets (Train and Test)
targets=rescale(data.TrainTargets)‘;
TstTargets=rescale(data.TestTargets)’;

sizenn=size(inputs);sizenn=sizenn(1,1);

% Number of neurons----------------------
n = 12;
%----------------------------------------

% ‘trainlm’ Levenberg-Marquardt
% ‘trainbr’ Bayesian Regularization (good)
% ‘trainbfg’ BFGS Quasi-Newton
% ‘trainrp’ Resilient Backpropagation
% ‘trainscg’ Scaled Conjugate Gradient
% ‘traincgb’ Conjugate Gradient with Powell/Beale Restarts
% ‘traincgf’ Fletcher-Powell Conjugate Gradient
% ‘traincgp’ Polak-Ribiére Conjugate Gradient
% ‘trainoss’ One Step Secant (good)
% ‘traingdx’ Variable Learning Rate Gradient Descent
% ‘traingdm’ Gradient Descent with Momentum
% ‘traingd’ Gradient Descent
% Creating the NN ----------------------------
net = feedforwardnet(n,‘traingdx’);
%---------------------------------------------

% configure the neural network
[net tr]= train(net,inputs, targets);
perf = perform(net,inputs, targets);%mse

% Current NN Weights and Bias
% Create Handle for Error
h = @(x) NMSE(x, net, inputs, targets);

%% SFLA NN
[x, err_ga] = sfla(h, sizenn*n+n+n+1);
%-----------------------------------------

net = setwb(net, x’);
% Optimized NN Weights and Bias
getwb(net);
% Error for Optimized NN
Error = targets - net(inputs);
calc = mean(Error.^2)/mean(var(targets’,1));

%-----------------------------------------
Outputs=net(inputs);
TestOutputs=net(TstInputs);

% Train
TrMSE=mse(targets,Outputs);
TrRMSE=sqrt(TrMSE);
TrMAE=mae(targets,Outputs);
TrCC= corrcoef(targets,Outputs);
TrR_Squared=TrCC*TrCC;

%Test
TsMSE=mse(TstTargets,TestOutputs);
TsRMSE=sqrt(TsMSE);
TsMAE=mae(TstTargets,TestOutputs);
TsCC = corrcoef(TstTargets,TestOutputs);
TsR_Squared=TsCC*TsCC;

% Statistics
% Train
fprintf(‘Training “MSE” Is = %0.4f.\n’,TrMSE)
fprintf(‘Training “RMSE” Is = %0.4f.\n’,TrRMSE)
fprintf(‘Training “MAE” Is = %0.4f.\n’,TrMAE)
fprintf(‘Training “Correlation Coefficient” Is = %0.4f.\n’,TrCC(1,2))
fprintf(‘Training “R_Squared” Is = %0.4f.\n’,TrR_Squared(1,2))
% Test
fprintf(‘Testing “MSE” Is = %0.4f.\n’,TsMSE)
fprintf(‘Testing “RMSE” Is = %0.4f.\n’,TsRMSE)
fprintf(‘Testing “MAE” Is = %0.4f.\n’,TsMAE)
fprintf(‘Testing “Correlation Coefficient” Is = %0.4f.\n’,TsCC(1,2))
fprintf(‘Testing “R_Squared” Is = %0.4f.\n’,TsR_Squared(1,2))
view(net);

⛄三、运行结果

在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]李琳,隋树涛.基于免疫蛙跳算法的小波神经网络的水稻需水量预测[J].黑龙江水利科技. 2012,40(03)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/74784.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

亚马逊爆锤之下,中国跨境电商出路何在?

跨境电商服务行业已经发展了十几年了,加之新冠疫情的影响,众多卖家企业都将视线转向了跨境电商市场,行业里一直不断涌现着众多的服务平台,今年,许多像Starday这样的新生跨境电商服务平台在行业里势头猛进,而…

ImmunoChemistry丨ICT艾美捷一氧化氮合酶说明书

ImmunoChemistry艾美捷一氧化氮合酶测定为评估亚硝化应激抑制剂和活化剂的效力提供了一个很好的筛选选择,并将有助于确定氧化和亚硝化应激如何调节不同的细胞内途径。该试剂盒使用二氨基荧光素-2二乙酸酯(DAF-2DA)染料评估细胞内游离一氧化氮…

原生API编写简单富文本编辑器003

原生API编写简单富文本编辑器003 系列文章快速阅读: 富文本编辑器开发系列-1-基础概念 富文本编辑器开发系列2-document.execCommand 的API 富文本编辑器开发系列3-selection 富文本编辑器开发系列4——Range对象 富文本编辑器开发系列5——浏览器Selection API探究…

思科设备中STP生成树协议及其配置

目录 一、网络冗余存在的问题 1.广播风暴 2.MAC地址表震荡 二、STP简介 1.BPDU简介与字段含义 2.网桥ID 3.路径开销 4.端口ID 5.BPDU计时器 (1)Hello Time (2)Forward Delay转发延迟 (3)Max Ag…

[附源码]JAVA毕业设计小区物业管理系统录像展示.mp4(系统+LW)

[附源码]JAVA毕业设计小区物业管理系统录像展示.mp4(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09…

【Golang】切片的底层实现(关于slice调用append函数后分配新数组的问题)

问题描述 今天在写代码的时候遇到一个很奇怪的现象,先看下面两段代码 func push(a []int, v int) {a[1] 2a append(a, v) } func main() {a : []int{0, 1, 2}push(a, 3)fmt.Println(a) }结果:[0 2 2] func push(a []int, v int) {a append(a, v)a[…

宝塔下 nginx 支持图片放缩

要想通过nginx实现图片的放缩功能,首先需要对nginx添加http_image_filter_module模块的支持,首先查看安装的nginx是否已经支持了对应的模块 nginx -V 如图,如果返回的代码中没有包含 http_image_filter_module,则代表安装的nginx…

Docker学习笔记3(狂神)

可视化 这样我们就已经安装成功了。 我们一般选择本地的。 然后我们就可以看到这样的面板。 不过这个我们平时不会去使用,只是作为了解即可。 镜像分层的理解: 如何提交一个自己的镜像。 Commit镜像 实战测试 我们现在启动了tomcat。 我们进入了tomc…

Spring RestTemplate请求过程

文章目录前言1. RestTemplate请求整体过程2. httpRequest 创建3. doWithRequest4. execute5. http响应解析前言 目前Spring RestTemplate是常用的http请求工具类,本文简单Spring RestTemplate的请求过程。 1. RestTemplate请求整体过程 接下来以ResponseEntity e…

paddleOCR识别问题和解决方案

常见问题解答: 文本检测相关FAQ paddle ocr 常见问答 https://aistudio.baidu.com/aistudio/projectdetail/4491412 参数介绍 import argparse import os import sys import cv2 import numpy as np import paddle from PIL import Image, ImageDraw, ImageFont …

如何基于 APISIX 迭代数字智联平台

分享嘉宾:沈巍,浙大网新研发总监。 网新电气成立于 2011 年,属于浙大网新旗下,为绿色智慧交通系统解决方案的提供商。业务范围包括铁路、隧道、城市智能交通、航空、高速公路等行业。整个高铁信息化的业务分布占到了全国市场的 20…

Electron 麒麟 Linux 系统 root 账户报错

使用Electron打包成客户端在麒麟Linux 操作系统上运行,普通用户启动程序正常 使用root用户出现各种问题。总结问题如下: 1. Running as root without --no-sandbox is not supported。 解决方案: 在启动命令后面加入 --no-sandbox sudo …

为SSH远程配置固定的公网TCP端口地址【内网穿透】

由于使用免费的cpolar生成的公网地址,为随机临时地址,24小时内会发生变化,并且带宽较小,只有1M。对于需要长期SSH远程的用户来说,配置固定的公网TCP端口地址,提高带宽就很有必要。 1. 保留一个固定TCP端口地…

信息收集道道之外网信息收集

#信息收集道道之外网信息收集 从个人的角度去简单整理下打点前的信息收集那些事。从信息收集本质上来说多数内容都是大同小异,遇到坚壁时,不用死磕,毕竟条条大路通罗马(大佬们也可以说说看法~向各位大佬学习! 红队知…

业务数据LEFT JOIN 多表查询慢--优化操作

首先你会想到,给表加索引,那么mysql会给主键自动建立索引吗? 会的,当然会。 在我们查询的业务表操作的时候,表业务数据庞大起来的时候,以及left join多的时候,甚至多表关联到几十张表的时候,查…

【云原生】二进制部署k8s集群(中)搭建node节点

内容预知 连接上文 1. 部署 Worker Node 组件 1.1 work node 组件部署前需了解的节点注册机制 1.2 Worker Node 组件部署步骤 2. k8s的CNI网络插件模式 2.1 k8s的三种网络模式 K8S 中 Pod 网络通信: (1)Pod 内容器与容器之间的通信 &am…

2022年四川建筑八大员(标准员)考试试题及答案

百分百题库提供建筑八大员(标准员)考试试题、建筑八大员(标准员)考试真题、建筑八大员(标准员)证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 1.施工项目管理目标…

[附源码]Python计算机毕业设计SSM基于框架的校园爱心公益平台的设计与实现(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

java基于Springboot的学生毕业离校系统-计算机毕业设计

项目介绍 学生毕业离校系统的开发过程中,采用B / S架构,主要使用Java技术进行开发,结合最新流行的springboot框架。中间件服务器是Tomcat服务器,使用Mysql数据库和Eclipse开发环境。该学生毕业离校系统包括管理员、学生和教师。其…

【SpringBoot应用篇】SpringBoot+JasperReport导出PDF

【SpringBoot应用篇】SpringBootJasperReport导出PDFJasperReport简介JasperReport的开发步骤生命周期执行流程模板工具Jaspersoft Studio概述安装配置面板介绍基本使用模板制作编译模板入门案例环境准备导出一个最基本的PDF文件导出用户列表需求数据直接从数据库中获取数据从后…