回归预测 | Matlab实现基于GA-Elman遗传算法优化神经网络多输入单输出回归预测

回归预测 | Matlab实现基于GA-Elman遗传算法优化神经网络多输入单输出回归预测

目录

    • 回归预测 | Matlab实现基于GA-Elman遗传算法优化神经网络多输入单输出回归预测
      • 效果一览
      • 基本介绍
      • 程序设计
      • 参考资料

效果一览

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

在这里插入图片描述

基本介绍

1.Matlab实现基于GA-Elman遗传算法优化神经网络多输入单输出回归预测(完整源码和数据)
2.数据集为excel,输入多个特征,输出1个变量,运行主程序GA_Elman即可,其余为函数文件,无需运行,程序含优化前后对比;
3.运行环境Matlab2018b及以上.
4.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。

程序设计

  • 完整源码和数据获取方式(资源出下载):Matlab实现基于GA-Elman遗传算法优化神经网络多输入单输出回归预测。
%%  ELMAN神经网络
%%  网络创建
net = newelm(p,t,S1,{'tansig','purelin'},'trainlm'); 

%% 设置训练参数
net.trainParam.show = 10;
net.trainParam.epochs = 2000;
net.trainParam.goal = 1.0e-3;
net.trainParam.lr = 0.1;

%%  网络训练
[net,tr] = train(net,p,t);

%% 仿真测试
s_elman = sim(net,P_test);    % Elman神经网络的仿真结果

%% GA-Elman神经网络
R = size(p,1);
S2 = size(t,1);
S = R*S1 + S1*S2 + S1 + S2;
aa = ones(S,1)*[-1,1];

%%  遗传算法优化
%%  初始化种群
popu = 100;  % 种群规模
initPpp = initializega(popu,aa,'gaelmanEval',[],[1e-6 1]);  % 初始化种群

%% 迭代优化
gen = 100;  % 遗传代数
% 调用GAOT工具箱,其中目标函数定义为gabpEval
[x,endPop,bPop,trace] = ga(aa,'gaelmanEval',[],initPpp,[1e-6 1 0],'maxGenTerm',gen,...
                           'normGeomSelect',[0.09],['arithXover'],[2],'nonUnifMutation',[2 gen 3]);
%% 绘均方误差变化曲线
figure(1)
plot(trace(:,1),1./trace(:,3),'r-o','linewidth',1);
hold on
plot(trace(:,1),1./trace(:,2),'k-','linewidth',1);
xlabel('Generation');
ylabel('Sum-Squared Error');
set(gca, 'Box','off' , ...  
  'TickDir','out', ...
  'TickLength',[.01 .01] , ...
  'XColor', [0 0 0], ...
  'YColor', [0 0 0], ...
  'FontSize',10.5,...
  'FontName','Times New Roman',...
  'LineWidth', 1);
%%  绘制适应度函数变化
figure(2)
plot(trace(:,1),trace(:,3),'b-o','linewidth',1);
hold on
plot(trace(:,1),trace(:,2),'k-','linewidth',1);
xlabel('Generation');
ylabel('Fittness');

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/129215161
[2] https://blog.csdn.net/kjm13182345320/article/details/128105718

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java重修第一天—学习数组

1. 认识数组 建议1.5倍速学习,并且关闭弹幕。 数组的定义:数组是一个容器,用来存储一批同种类型的数据。 下述图:是生成数字数组和字符串数组。 为什么有了变量还需要定义数组呢?为了解决在某些场景下,变…

安装extiverse/mercury时报错

问题描述 作者在安装 Flarum 的插件 extiverse/mercury 时报错,内容如下图所示 解决方案 ⚠警告:请备份所有数据再进行接下来的操作,此操作可能会导致网站不可用! 报错原因:主要问题是在安装过程中解决依赖关系。具…

Day24 回溯算法part01 理论基础 77.组合

回溯算法part01 理论基础 77.组合 理论基础(转载自卡码网) 什么是回溯法 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。 在二叉树系列中,我们已经不止一次,提到了回溯,例如二叉树:以为使用了递归,其…

nVisual如何实现数据中心资产管理

背景 随着信息技术的迅速发展,数据中心已经成为了企业信息化建设的重要基础设施之一。数据中心不仅承载着大量的企业数据和业务应用,而且也需要大量的资产投入来支持其运营和发展。 因此,数据中心资产管理的重要性也日益凸显,数…

SparkStreaming基础解析(四)

1、 Spark Streaming概述 1.1 Spark Streaming是什么 Spark Streaming用于流式数据的处理。Spark Streaming支持的数据输入源很多,例如:Kafka、Flume、Twitter、ZeroMQ和简单的TCP套接字等等。数据输入后可以用Spark的高度抽象原语如:map、…

OpenCV-15位运算

OpenCV中的逻辑运算就是对应位置的元素进行与、或、非和异或。 Opencv与Python不同的是:OpenCV中0的非反过来是255,255反过来是0。 但是Python中255非为-256。 一、非运算 使用API---cv.bitwise_not(str) 示例代码如下: import cv2 imp…

Jenkins集成部署java项目

文章目录 Jenkins简介安装 Jenkins简介 Jenkins能实时监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象的展示项目构建的趋势和稳定性。 官网 安装 在官网下载windows版本的Jenkins 但是我点击这里浏览器没有反应&#xff0…

系列十一、(一)Sentinel简介

一、Sentinel简介 1.1、官网 【英文文档】 https://github.com/alibaba/Sentinel/wiki【中文文档】 https://github.com/alibaba/Sentinel/wiki/%E4%B8%BB%E9%A1%B5 1.2、概述 1.3、功能

JAVA基本语法(关键字,保留字)和快捷键

java基本语法: 1 大小写敏感 2 类名首字母大写 3 变量名、方法名首字母小写,遵循驼峰命名法 4 源文件名必须和类相同 命名法: 驼峰命名法(推荐):由若干单词组成,每个单词首字母大写&#…

[足式机器人]Part2 Dr. CAN学习笔记-动态系统建模与分析 Ch02-3流体系统建模

本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记-动态系统建模与分析 Ch02-12课程介绍电路系统建模、基尔霍夫定律 流量 flow rate q q q m 3 / s m^3/s m3/s 体积 volume V V V m 3 m^3 m3 高度 heigh h h h m m m 压强 pressure p p p …

在线的omniplan甘特图制作工具

在线的omniplan甘特图制作工具 快捷键 按住空格键 可以拖动画布Tab 将选中的任务右缩进(设置为子任务)Shift Tab 将选中的任务提升一级(取消子任务)按住Shift可以选择多个任务按住Ctrl 或者 Mac 的 command 可以选择多个任务按…

threejs在透视相机模式下,绘制像素大小固定的元素

要求:在透视相机模式下绘制一个图标,图标大小始终为32*32px。图标如下: 实现思路: 使用THREE.Sprite。因为 SpriteMaterial 支持配置 sizeAttenuation 使Sprite大小不随相机的深度而衰减。所以我们只要保证sprite的初始的大小合适…

qt源码阅读准备

qt源码阅读准备 阅读qt源码前先了解以下知识,对阅读qt源码有极大的好处。 D-pointer介绍 D-pointer介绍 d-pointer它可以把一个类库的实施细节对使用的用户隐藏, 而且对实施的更改不会打破二进制兼容。其基本贯穿qt所有类。 Qt类的的结构 我们以QO…

第84讲:基于各种场景使用mysqldump逻辑备份数据库

文章目录 1.mysqldump备份工具的语法格式2.使用mysqldump进行全库备份3.备份单个库或者多个库的数据4.备份某个库下的单表或者多表的数据5.mysqldump备份数据库时必加的一些参数5.1.基本参数5.2.核心参数 6.mysqldump备份数据库时的一些其他参数 1.mysqldump备份工具的语法格式…

UG装配-引用集

引用集是控制组件的图素在装配体中显示与隐藏 装配体体环境控制组件显示与隐藏的四种方式 1、图层 2、引用集 3、隐藏命令 Ctrl B 4、抑制,取消此组件装配,但保留操作在导航器方便启用 引用集有两种类型 1、UG自动创建的引用集 2、用户定义的引…

【linux】线程同步+基于BlockingQueue的生产者消费者模型

线程同步基于BlockingQueue的生产者消费者模型 1.线程同步2.生产者消费者模型3.基于BlockingQueue的生产者消费者模型 喜欢的点赞,收藏,关注一下把! 1.线程同步 在线程互斥写了一份抢票的代码,我们发现虽然加锁解决了抢到负数票的…

【Spark精讲】Spark on Hive性能优化

目录 第一章 1.1 集群配置概述 1.2 集群规划概述 第二章 Yarn配置 2.1 Yarn配置说明 yarn.nodemanager.resource.memory-mb yarn.nodemanager.resource.cpu-vcores yarn.scheduler.maximum-allocation-mb yarn.scheduler.minimum-allocation-mb 第三章 Spark的配置说…

RA8900CE汽车用c总线接口实时时钟模块

汽车用c总线接口实时时钟模块内置调频32.768 kHz晶体单元和DTCXO,高稳定性和电源切换。 接口类型我 2C-Bus接口(400kHz)界面电压范围2.5V ~ 5.5V温度补偿电压范围2.0V至5.5V计时电压范围1.6V ~ 5.5V可选时钟输出(32.768 kHz, 1024 Hz, 1 Hz)各种功能齐全的日历、报…

提示循环引用 一个循环引用但无法列出导致循环的引用且文件打不开无法修改

目录 设备环境: 提示内容: 具体错误问题描述: 图示: Office 报错 WPS 报错 问题分析: 问题解决: 关注我的 GitHub(魔法网络访问): 设备环境: Window…

【React系列】React中的CSS

本文来自#React系列教程:https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. React中的css方案 1.1. react 中的 css 事实上,css 一直是 React 的痛点,也是被很多开发…