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

news2025/4/21 11:26:04

基于鸽群算法优化的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/109774886

鸽群算法的参数设置为:

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.coloradmin.cn/o/923712.html

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

相关文章

遥感影像的缨帽(K-T)变换Python实现

(1)介绍 缨帽变换(Kirchhoff Transform,K-T变换) 是一种在遥感图像处理中常用的技术,它可以有效地提取地物的空间特征和频谱信息。本文将对遥感缨帽变换的提出者、原理方法、公式、现在的发展、作用进行详…

Mybatis (3)-----分页的运用

目录 一、分页查询 二,特殊的字符处理 三、总结 前言:在我们上篇已经学的动态sql的基础上,今天继续讲解关于maybatis的分页,特殊的字符处理。希望这篇博客可以帮助到大家哦! 一、分页查询 为什么要重写mybatis的分…

ATFX汇市:美国PMI数据不及预期,非农基数又遭下修,经济前景堪忧

环球汇市行情摘要—— 昨日,美元指数下跌0.22%,收盘在103.38点, 欧元升值0.17%,收盘价1.0864点; 日元升值0.7%,收盘价144.85点; 英镑贬值0.06%,收盘价1.2725点; 瑞郎…

基于Visual studio创建API项目

API(英文全称:Application Programming Interface,中文:应用程序编程接口) 为什么要 通过API接口可以与其他软件实现数据相互通信,API这项技术能够提高开发效率。 本文是基于vs2017 .net平台搭建API。希望可以帮助到学…

Python Opencv实践 - 图像直方图自适应均衡化

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/cat.jpg", cv.IMREAD_GRAYSCALE) print(img.shape)#整幅图像做普通的直方图均衡化 img_hist_equalized cv.equalizeHist(img)#图像直方图自适应均衡化 #1. 创…

一、MQ的基本概念

1、初识MQ MQ全称是Message Queue,消息队列,多用于系统之间进行异步通信。队列的概念数据结构中有详细介绍过,先进先出,消息队列就是存储消息的数据结构。 同步调用和异步调用两者之间的区别: 同步调用:发…

使用yapi生成漂亮接口文档

YApi-教程 1. 进入yapi 的菜单 2. 从微服务中导出swagger的json 从浏览器页面访问http://localhost:端口/服务/swagger-ui.html,然后打开浏览器的控制台,查看network,刷新下页面,找到XHR中的api-docs,然后查看res…

【代码】Java中的动态代理实战

文章目录 1. JDK 动态代理2、CGLIB 动态代理 动态代理允许你在运行时创建代理对象,来代替原始对象执行某些操作。这在AOP(面向切面编程)中非常有用,用于实现日志记录、性能监控、事务管理等功能。 Java提供了两种主要的动态代理实…

缓存的设计方式

问题情况: 当有大量的请求到内部系统时,若每一个请求都需要我们操作数据库,例如查询操作,那么对于那种数据基本不怎么变动的数据来说,每一次都去数据库里面查询,是很消耗我们的性能 尤其是对于在海量数据…

【0基础入门Python Web笔记】一、python 之基础语法、基础数据类型、复合数据类型及基本操作

一、python 之基础语法、基础数据类型、复合数据类型及基本操作 基础语法规则基础数据类型数字类型(Numbers)字符串类型(String)布尔类型(Boolean) 复合数据类型List(列表)Tuple&…

【C++代码】有序数组的平方,长度最小的子数组,螺旋矩阵 II--代码随想录

题目:有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 题解 数组其实是有序的, 只不过负数平方之后可能成为最大数了。那么数组平方的最大值就在数组的…

shell 编写一个带有进度条的程序安装脚本

需求 使用 shell 写一个 软件安装脚本,带有进度条 示例 #!/bin/bash# 模拟软件安装的步骤列表 steps("解压文件" "安装依赖" "配置设置" "复制文件" "")# 计算总步骤数 total_steps${#steps[]}# 安装进度的初…

JVM——类加载与字节码技术—类加载器+运行期优化

5.类加载器 jdk的类加载器具有层级关系。 启动类加载器》扩展类加载器》应用程序类加载器》自定义类加载器 对应类加载器只会负责加载对应目录的类。 双亲委派上级机制 应用程序类加载器加载一个类之前会先查询上级加载器是否已经加载过了该类。然后再让上级询问上上级。都…

代码随想录算法训练营第四十四天|LeetCode 309,714

目录 LeetCode 309.最佳买卖股票时机含冷冻期 动态规划五步曲: 1.确定dp[i][j]的含义 2.找出递推公式 3.初始化dp数组 4.确定遍历方向 5.打印dp数组 LeetCode 714.买卖股票的最佳时机含手续费 动态规划五步曲: 1.确定dp[i]的含义 2.找出递推公式 3.初始…

项目构建工具:CMake的核心用法

Golang有go mod、Python有pip、Java有maven。但C语言没有这么好用的包管理工具。当然Conan大概可以算是一个,但其也有自身的局限性,使用起来并不简单。 这就导致我们在写C代码的时候,老是要把心思放在怎么构建项目上。比如有一个项目&#x…

重磅!亚马逊将于10月再次举行秋季会员大促!

今年亚马逊7月份的Prime Day大促出乎卖家意料,效果出奇之好,大促确实有提振销量和信心的奇效。 而在近期,亚马逊宣布,将在今年10月,继续为亚马逊Prime会员带来“Prime秋季会员大促”。 19个国家(包括澳大…

使用BeanShell写入内容到文件【JMeter】

一、前言 ​ 在我们日常工作中,可能会遇到需要将请求返回的数据写入到文件中。在我们使用JMeter进行性能测试时,就经常能够遇到这种情况。要想达到这种目的,我们一般采取BeanShell后置处理器来将内容写入到文件。 二、提取 ​ 在目前大多数的…

使用代理突破浏览器IP限制

一、实验目的: 主要时了解代理服务器的概念,同时如何突破浏览器IP限制 二、预备知识: 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息。形象的说:它是网络信息的中转站,特别是它具有一个cac…

【Python】从入门到上头—Python基础(2)

文章目录 一.基础语法1.编码2.标识符3.保留字4.注释5.行与缩进6.多行语句7.数字(Number)类型8.字符串(String)9.空行10.等待用户输入11.同一行显示多条语句12.多个语句构成代码组13.print 输出14.import 与 from...import 二.基本数据类型1.变量和赋值2.多个变量赋值3.标准数据…

win10某个软件字体模糊修复

1、在桌面找到该软件,右键选择属性,如下: 2、打开后选择兼容性--更改高DPI设置。 3、点击高DPI缩放替代--应用程序。 4、点击应用,然后退出属性设置。重新打开软件,发现软件字体变得清晰了。