基于旗鱼算法优化的BP神经网络(预测应用) - 附代码

基于旗鱼算法优化的BP神经网络(预测应用) - 附代码

文章目录

  • 基于旗鱼算法优化的BP神经网络(预测应用) - 附代码
    • 1.数据介绍
    • 2.旗鱼优化BP神经网络
      • 2.1 BP神经网络参数设置
      • 2.2 旗鱼算法应用
    • 4.测试结果:
    • 5.Matlab代码

摘要:本文主要介绍如何用旗鱼算法优化BP神经网络并应用于预测。

1.数据介绍

本案例数据一共2000组,其中1900组用于训练,100组用于测试。数据的输入为2维数据,预测的输出为1维数据

2.旗鱼优化BP神经网络

2.1 BP神经网络参数设置

神经网络参数如下:

%% 构造网络结构
%创建神经网络
inputnum = 2;     %inputnum  输入层节点数 2维特征
hiddennum = 10;     %hiddennum  隐含层节点数
outputnum = 1;     %outputnum  隐含层节点数

2.2 旗鱼算法应用

旗鱼算法原理请参考:https://blog.csdn.net/u011835903/article/details/109256699

旗鱼算法的参数设置为:

popsize = 20;%种群数量
Max_iteration = 20;%最大迭代次数
lb = -5;%权值阈值下边界
ub = 5;%权值阈值上边界
%  inputnum * hiddennum + hiddennum*outputnum 为阈值的个数
%  hiddennum + outputnum 为权值的个数
dim =  inputnum * hiddennum + hiddennum*outputnum + hiddennum + outputnum ;%  inputnum * hiddennum + hiddennum*outputnum维度

这里需要注意的是,神经网络的阈值数量计算方式如下:

本网络有2层:

第一层的阈值数量为:2*10 = 20; 即inputnum * hiddennum;

第一层的权值数量为:10;即hiddennum;

第二层的阈值数量为:10*1 = 10;即hiddenum * outputnum;

第二层权值数量为:1;即outputnum;

于是可知我们优化的维度为:inputnum * hiddennum + hiddennum*outputnum + hiddennum + outputnum = 41;

适应度函数值设定:

本文设置适应度函数如下:
f i t n e s s = a r g m i n ( m s e ( T r a i n D a t a E r r o r ) + m e s ( T e s t D a t a E r r o r ) ) fitness = argmin(mse(TrainDataError) + mes(TestDataError)) fitness=argmin(mse(TrainDataError)+mes(TestDataError))
其中TrainDataError,TestDataError分别为训练集和测试集的预测误差。mse为求取均方误差函数,适应度函数表明我们最终想得到的网络是在测试集和训练集上均可以得到较好结果的网络。

4.测试结果:

从旗鱼算法的收敛曲线可以看到,整体误差是不断下降的,说明旗鱼算法起到了优化的作用:

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

5.Matlab代码

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

消息队列前世今生 字节跳动 Kafka #创作活动

消息队列前世今生 1.1 案例一: 系统崩溃 首先大家跟着我想象一下下面的这个的场景, 看到新出的游戏机,太贵了买不起,这个时候你突然想到,今天抖音直播搞活动,打开抖音搜索,找到直播间以后&am…

Node基础--Node简介以及安装教程

1.Node简介 Node.js发布于2009年5月,由Ryan Dahl开发,是一个基于Chrome V8引擎的JavaScript运行环境,使用了一个事件驱动、非阻塞式I/O模型,让JavaScript 运行在服务端的开发平台,它让JavaScript成为与PHP、Python、Pe…

RabbitMq-3入门案例

rabbitmq入门 1.生产者&#xff08;服务提供方&#xff09; //依赖<dependencies> <!-- rabbitmq客户端依赖--><dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.8.0<…

Docker打包JDK20镜像

文章目录 Docker 打包 JDK 20镜像步骤1.下载 jdk20 压缩包2.编写 dockerfile3.打包4.验证5.创建并启动容器6.检查 Docker 打包 JDK 20镜像 步骤 1.下载 jdk20 压缩包 https://www.oracle.com/java/technologies/downloads/ 2.编写 dockerfile #1.指定基础镜像&#xff0c;并…

Linux: 使用scp命令复制文件夹报 not a regular file 错误解决

使用scp 命令复制文件夹报 not a regular file 错误解决 解决办法&#xff1a; 加入参数 -r&#xff1a; 递归复制整个目录 scp命令参数详解

【C++小项目】实现一个日期计算器

目录 Ⅰ. 引入 Ⅱ. 列轮廓 Ⅲ. 功能的实现 构造函数 Print 判断是否相等 | ! ➡️: ➡️!: 判断大小 > | > | < | < ➡️>&#xff1a; ➡️<&#xff1a; ➡️>&#xff1a; ➡️<&#xff1a; 加减天数 | | - | - ➡️&#xff1a;…

TypeScript——类型系统与类型推导

前言 TypeScript 是由 Microsoft 开发的一种开放源代码语言。 它是 JavaScript 的一个超集&#xff0c;这意味着你可以在 TypeScript 中使用 JS 已存在的所有语法&#xff0c;并且所有 JavaScript 脚本都可以当作 TypeScript 脚本&#xff0c;此外它还增加了一些自己的语法。T…

JVM——类加载与字节码技术—字节码指令

2.字节码指令 2.1 入门 jvm的解释器可以识别平台无关的字节码指令&#xff0c;解释为机器码执行。 2a b7 00 01 b1 this . init&#xff08;&#xff09; return 准备了System.out对象&#xff0c;准备了参数“hello world”,准备了对象的方法println(String)V&#xff…

1.文章复现《热电联产系统在区域综合能源系统中的定容选址研究》(附matlab程序)

0.代码链接 文章复现《热电联产系统在区域综合能源系统中的定容选址研究》&#xff08;matlab程序&#xff09;-Matlab文档类资源-CSDN文库 1.简述 本文采用遗传算法的方式进行了下述文章的复现并采用电-热节点的方式进行了潮流计算以降低电网的网络损耗 分析了电网的基本数…

C语言练习1(巩固提升)

C语言练习1 选择题 前言 “人生在勤&#xff0c;勤则不匮。”幸福不会从天降&#xff0c;美好生活靠劳动创造。全面建成小康社会的奋斗目标&#xff0c;为广大劳动群众指明了光明的未来&#xff1b;全面建成小康社会的历史任务&#xff0c;为广大劳动群众赋予了光荣的使命&…

在Ubuntu上安装和设置RabbitMQ服务器,轻松实现外部远程访问

文章目录 前言1.安装erlang 语言2.安装rabbitMQ3. 内网穿透3.1 安装cpolar内网穿透(支持一键自动安装脚本)3.2 创建HTTP隧道 4. 公网远程连接5.固定公网TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 RabbitMQ是一个在 AMQP(高级消息队列协议)基…

架构评估-架构师之路(十二)

软件系统质量属性 软件系统质量熟悉分为 开发期质量属性 和 运行期质量属性。 质量属性 性能&#xff1a;指 系统的响应能力&#xff0c;如 响应时间&#xff0c;吞吐率。 设计策略&#xff1a;优先级队列、增加计算资源、减少计算开销、引入并发机制、采用资源调度。 可靠…