rbf神经网络预测matlab_MATLAB 基于灰色神经网络的预测算法研究—订单需求预测...

2023-11-12

点击上方蓝字关注“公众号”

3914c5d31e381ad9fb31ec485e054b00.gif

MATLAB  神经网络变量筛选—基于BP的神经网络变量筛选

灰色系统理论是一种研究少数据、贫信息、不确定性问题的新方法,它以部分信息已知,部分信息未知的“小样本”,“贫信息”不确定系统为研究对象,通过对“部分”已知信息的生成、开发,提取有价值的信息,实现对系统运行行为、演化规律的正确描述和有效监控。

灰色理论强调通过对无规律的系统已知信息的研究,提炼和挖掘有价值的信息,进而用已知信息取揭示未知信息,使系统不断“白化”。

灰色系统中建立的模型称为灰色模型(Grey Model),简称GM模型,该模型是以原始数据序列为基础建立的微分方程。

灰色建模中最有代表性的模型是针对时间序列的GM建模,它直接将时间序列数据转化为微分方程,利用系统信息,使抽象的模型量化,进而在缺乏系统特性知识的情况下预测系统输出。

739089987077aacfbdd81129b9ec38f0.gif

灰色神经网络预测流程包含灰色神经网络构建,灰色神经网络训练和灰色神经网络预测三个部分。

其中,灰色神经网络构建根据输入输出数据维数确定灰色神经网络结构。

由于本案例输入数据为5维,输出有1维,所以灰色神经网络结构为1-1-6-1,即LA层有1个节点,输入为时间序列t,LB层有1个节点,LC层有6个节点,从第2个到第6个分别输入市场份额、需求趋势、价格波动、订单满足率、分销商联合预测等5个因素的归一化数据,输出为预测订单量。

灰色神经网络训练用训练数据训练灰色神经网络,使网络具有订单预测能力。

灰色神经网络预测用网络预测订单数量,并根据预测误差判断网络性能。

共有过去3年36个月的数据,首先取前30个月的数据作为训练数据训练网络,网络共学习进化100次,然后用剩余6组数据评价网络的预测性能。

d430157e1d175a9c18e3f5710874f238.gif a7015b5461185ef465ef726690b6fa78.png f0acd0ea10632502a50c174ff6c253bc.png

01

灰色神经网络算法程序

%% 清空环境变量
clc
clear
load data
%% 数据累加作为网络输入
[n,m]=size(X);
for i=1:n
    y(i,1)=sum(X(1:i,1));
    y(i,2)=sum(X(1:i,2));
    y(i,3)=sum(X(1:i,3));
    y(i,4)=sum(X(1:i,4));
    y(i,5)=sum(X(1:i,5));
    y(i,6)=sum(X(1:i,6));
end

b9759714bffd697e447b9d43e7d18c87.gif

01

训练

%% 网络参数初始化
a=0.3+rand(1)/4;
b1=0.3+rand(1)/4;
b2=0.3+rand(1)/4;
b3=0.3+rand(1)/4;
b4=0.3+rand(1)/4;
b5=0.3+rand(1)/4;
%% 学习速率初始化
u1=0.0015;
u2=0.0015;
u3=0.0015;
u4=0.0015;
u5=0.0015;
%% 权值阀值初始化
t=1;
w11=a;
w21=-y(1,1);
w22=2*b1/a;
w23=2*b2/a;
w24=2*b3/a;
w25=2*b4/a;
w26=2*b5/a;
w31=1+exp(-a*t);
w32=1+exp(-a*t);
w33=1+exp(-a*t);
w34=1+exp(-a*t);
w35=1+exp(-a*t);
w36=1+exp(-a*t);
theta=(1+exp(-a*t))*(b1*y(1,2)/a+b2*y(1,3)/a+b3*y(1,4)/a+b4*y(1,5)/a+b5*y(1,6)/a-y(1,1));
kk=1;

02

%% 循环迭代
for j=1:10
%循环迭代
E(j)=0;
for i=1:30
%% 网络输出计算
t=i;
LB_b=1/(1+exp(-w11*t));   %LB层输出
LC_c1=LB_b*w21;           %LC层输出
LC_c2=y(i,2)*LB_b*w22;    %LC层输出
LC_c3=y(i,3)*LB_b*w23;    %LC层输出
LC_c4=y(i,4)*LB_b*w24;    %LC层输出
LC_c5=y(i,5)*LB_b*w25;    %LC层输出
LC_c6=y(i,6)*LB_b*w26;    %LC层输出
    LD_d=w31*LC_c1+w32*LC_c2+w33*LC_c3+w34*LC_c4+w35*LC_c5+w36*LC_c6;    %LD层输出
    theta=(1+exp(-w11*t))*(w22*y(i,2)/2+w23*y(i,3)/2+w24*y(i,4)/2+w25*y(i,5)/2+w26*y(i,6)/2-y(1,1));   %阀值
    ym=LD_d-theta;   %网络输出值
    yc(i)=ym;
    %% 权值修正
    error=ym-y(i,1);      %计算误差
    E(j)=E(j)+abs(error);    %误差求和       
    error1=error*(1+exp(-w11*t));     %计算误差
    error2=error*(1+exp(-w11*t));     %计算误差
    error3=error*(1+exp(-w11*t));
    error4=error*(1+exp(-w11*t));
    error5=error*(1+exp(-w11*t));
    error6=error*(1+exp(-w11*t));
    error7=(1/(1+exp(-w11*t)))*(1-1/(1+exp(-w11*t)))*(w21*error1+w22*error2+w23*error3+w24*error4+w25*error5+w26*error6);
    %修改权值
    w22=w22-u1*error2*LB_b;
    w23=w23-u2*error3*LB_b;
    w24=w24-u3*error4*LB_b;
    w25=w25-u4*error5*LB_b;
    w26=w26-u5*error6*LB_b;
    w11=w11+a*t*error7;
end
end  
%画误差随进化次数变化趋势
figure(1)
plot(E)
title('训练误差','fontsize',12);
xlabel('进化次数','fontsize',12);
ylabel('误差','fontsize',12);
%print -dtiff -r600 28-3
%根据训出的灰色神经网络进行预测
for i=31:36
    t=i;
    LB_b=1/(1+exp(-w11*t));   %LB层输出
    LC_c1=LB_b*w21;           %LC层输出
    LC_c2=y(i,2)*LB_b*w22;    %LC层输出
    LC_c3=y(i,3)*LB_b*w23;    %LC层输出
    LC_c4=y(i,4)*LB_b*w24;    %LC层输出
    LC_c5=y(i,5)*LB_b*w25;
    LC_c6=y(i,6)*LB_b*w26;
    LD_d=w31*LC_c1+w32*LC_c2+w33*LC_c3+w34*LC_c4+w35*LC_c5+w36*LC_c6;    %LD层输出
    theta=(1+exp(-w11*t))*(w22*y(i,2)/2+w23*y(i,3)/2+w24*y(i,4)/2+w25*y(i,5)/2+w26*y(i,6)/2-y(1,1));   %阀值
    ym=LD_d-theta;   %网络输出值
    yc(i)=ym;
end
yc=yc*100000;
y(:,1)=y(:,1)*10000;

03

%计算预测的每月需求量
for j=36:-1:2
    ys(j)=(yc(j)-yc(j-1))/10;
end
figure(2)
plot(ys(31:36),'-*');
hold on
plot(X(31:36,1)*10000,'r:o');
legend('灰色神经网络','实际订单数')
title('灰色系统预测','fontsize',12)
xlabel('月份','fontsize',12)
ylabel('销量','fontsize',12)

04

仿真结果图

32df4884417ac039b54cf2087396c511.png

ceabffea3ba81dd15ec0d0838279a384.png

24b15724be48b80394debc4350f40b2f.gif

具体仿真程序链接,微信公众号回复【神经网络】即可获得链接。

未完待续

扫码关注

不迷路

4819ca143a8c7495cacccc9bf2d76c4b.gif

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

rbf神经网络预测matlab_MATLAB 基于灰色神经网络的预测算法研究—订单需求预测... 的相关文章

  • MFC 树形控件CTreeCtrl显示文件路径及文件

    在上篇文章中简单讲述了 MFC单文档分割窗口显示图片 但是我想实现的是左边显示图片的路径 右边显示图片的情况 所以这里需要讲述如何使用控件List Control和Tree Control CListCtrl 列表控件 可以用大图标 小图标
  • C#- FTP递归下载文件

    c ftp递归下载文件 找来找去这个最好 打断点 一小处foreach要改成for
  • Linux系统cif2cell v1.2.10的安装与测试

    本文在最新的Ubuntu版本20 04 LTS系统上安装cif2cell程序的1 2 10版本 cif2cell现已支持多种电子结构计算程序所需的格式输出 常用的CASTEP VASP Quantum Espresso和ABINIT等程序包
  • 6-3 删除字符 (20 分)void delchar( char *str, char c ){ int i,j; i=j=0; while(str[j]){

    这里提供一种全新的思路 因为考虑到数组变换内部一个数值其实需要o n 的时间维度 因此要尽可能的少的进行整个数组的变动 有一种解决方法是另建立一个暂时的数组进行暂存 筛选结束后进行复制 但这样在空间维度上需要o n 这里采用一种虚拟的另设数
  • 游戏开发unity杂项知识系列:抗锯齿处理

    游戏中需要进行抗锯齿处理的地方非常多 这里先写两点 一个是通过使用unity自带的抗锯齿设置 QualitySettings 可以参考下面的连接 QualitySettings也可以通过代码去设置 unity图片抗锯齿设置 LCHUIHUI
  • 【Java】阿里巴巴Java开发手册

    文章目录 前言 一 编程规约 一 命名风格 二 常量定义 三 代码格式 四 OOP 规约 五 集合处理 六 并发处理 八 注释规约 九 其它 二 异常日志 一 异常处理 二 日志规约 三 单元测试 四 安全规约 五 MySQL 数据库 一
  • 服务器无限矿场,深度揭秘人人矿场是如何实现分布式全网算力超600PiB?

    原标题 深度揭秘人人矿场是如何实现分布式全网算力超600PiB Filecoin的封装 指的是将原始数据 订单数据或垃圾数据 经过特定的算法进行反复计算 加密 生成符合Filecoin格式的有效扇区 并将有效扇区最终写入存储进行保存 需要注
  • 神经网络参数的计算

    在神经网络中参数量如何计算呢 卷积层 参数量 核高 times 核宽 times 核通道数
  • wms软件和ERP系统有何不同?

    wms仓库管理系统和ERP仓库管理系统有哪些区别 打个比喻 wms软件好比仓库主管 必须重视对过程中的人 机 料 法 环进行全面管理 而ERP系统就像是仓库经理 会重点关注进销存 wms软件和ERP系统有何不同 wms软件和ERP系统有何不
  • android okgo的使用及简单封装,同时配合Gson传参和返回数据解析

    闲来无事 把网络框架okgo简单的封装了一下 其实这种方法比较简单 步骤如下 1 导入依赖 一般网络请求基本会用到okgo和gosn compile com lzy net okgo 2 0 0 compile com google cod
  • LaTex 点乘,叉乘,点除,分数等常用算法

    点乘 a cdot b 叉乘 a times b 点除 a div b 分数 frac a b 待续
  • AI崛起,剑指终极对决!第二届广州·琶洲算法大赛复赛结果出炉

    广州市人民政府主办 海珠区人民政府 广州市科学技术局 广州市工业和信息化局 广州市政务服务数据管理局 琶洲实验室与北京百度网讯科技有限公司共同承办的 第二届广州 琶洲算法大赛 于2023年4月25日正式启动 共吸引了来自21个国家的国内外3
  • kibana集成内部账号_nginx和kibana/es集成

    利用elk搞了一个日志平台 随着日志越来越多 使用的人反应kibana上查询比较慢 kibana虽然有日志 但记录的信息不全 无法分析到底是什么样的查询比较慢 因此考虑在kibana和elk之间加一个nginx 主要作用有两个 1 记录ki
  • 树的广度遍历

    在二叉树的遍历当中 有一种遍历方法是不常见的 那就是广度遍历 和其他三种遍历方法不同 二叉树的广度遍历需要额外的数据结构来帮助一下 什么数据结构呢 那就是队列 因为队列具有先进先出的特点 这个特点要求我们在遍历新的一层数据之前 必须对上一次
  • java Integer类型比较

    在比较两个new的Integer对象时 不能直接使用 这里比较的是对象的地址 应该调用 equals 方法 Integer i new Integer 888 Integer j new Integer 888 System out pri
  • uniapp 中使用jssdk正确姿势

    这是基于企业项目实战分享 npm方式使用下方进行安装 npm install jweixin module save 安装在项目中的效果如图 接下自己定义个js 引入我们用npm引入的模块 jwx 代码 let jweixin requir
  • html总结

  • 两个常用的数据标准化方法及Matlab和Python实现

    参考 数据归一化和两种常用的归一化方法 博主对原文进行了润色并添加了Matlab和Python实现 数据标准化处理是数据挖掘的一项基础工作 不同评价指标往往具有不同的量纲和量纲单位 这样的情况会影响到数据分析的结果 为了消除指标 特征 之间
  • 【Linux_】环境变量

    Linux 环境变量 心有所向 日复一日 必有精进 专栏 Linux 作者 沂沐沐 目录 Linux 环境变量 什么是环境变量 常见变量 查看环境变量方法 环境变量相关的命令 通过系统调用获取或设置环境变量 环境变量通常是具有全局属性的 导

随机推荐

  • Javascript设计模式-17-装饰者模式

    Javascript 设计模式 17 装饰者模式 简介 装饰者模式可以动态的给某个对象添加一些额外的职责 而不会影响从这个类中派生出的其他对象 优势 传统的面向对象语言中 给对象添加功能常常使用继承的方式 但是继承的方式并不灵活 还会带来许
  • C语言 操作符详解 上

    C语言中操作符介绍 表达式求值 操作符分类 1 算数操作符 2 移位操作符 lt lt gt gt 3 位操作符 4 赋值操作符 5 单目操作符 sizeof 6 关系操作符 gt lt gt lt 7 逻辑操作符 8 条件操作符 9 逗号
  • Swagger与Knife4j学习笔记

    Swagger 介绍 在前后端分离开发的过程中 前端和后端需要进行 API 对接进行交互 就需要一个 API 规范文档 方便前后端的交互 但 API 文档不能根据代码的变化发生实时动态的改变 这样后端修改了接口 前端不能及时获取最新的接口
  • 百度搜索自动补全(百度搜索常见api)

    一 百度搜索常用api 百度搜索常用api 一 搜索关键字自动补全 一 数据源 https sp0 baidu com 5a1Fazu8AA54nxGko9WTAnF6hhy su wd 关键词 json 1 二 代码 可以使用前端插件 B
  • DDT数据驱动+yaml/csv(自动化测试,接口测试)

    目录 1 ddt读取yaml文件 2 ddt读取csv文件 3 ddt式测试报告怎么填用例描述 背景 对于输入框来言 使用等价类边界值 场景法等进行数据输入 接口相同 输入的内容都非常相似 却有不同的响应结果 如果我们对于每次输入都编写一条
  • Linux中的$0、$1、$@、$?、$*等特殊变量介绍

    特殊变量 是传给脚本的参数个数 0 是脚本本身的名字 1 是传递给该shell脚本的第一个参数 2 是传递给该shell脚本的第二个参数 是传给脚本的所有参数的列表 是以一个单字符串显示所有向脚本传递的参数 与位置变量不同 参数可超过9个
  • Invalid prop: type check failed for prop “data“. Expected Array, got Object[已解决]

    Vue warn Invalid prop type check failed for prop data Expected Array got Object 要处理这个bug就必须先明白这个bug到底是什么类型是怎么一回事 那字面意思就是
  • Mirai环境搭建

    20200805 引言 关于Mirai的环境搭建 我记得能搜到很多结果 不过我当时并没有想要启动mirai的所有功能 毕竟其实他的代码也有缺陷 现在想扫出来结果也有点难了 后面可能还是需要这些功能来辅助扫描结果 其他功能还是要开启 这里先记
  • C语言基础_文件操作-1

    目录 写在前面 学习目标 学习总结 正文 1 文件打开 关闭 2 getc putc 3 fprintf fscanf gets不安全 用fgets 4 fgets gputs 5 文件光标操作 a fseek ftell long范围内操
  • C++语言分号的使用

    C 语言中 表达式的一部分能够组成独立的语句 所以必须加分号分割 c a b 成立 c a b 也成立 if 1 1 do something 成立 if 1 1 do something 也成立 class foo bar 成立 含义为独
  • c++能不能给类的成员变量在声明的时候初始化?

    能 可能早先的版本不能 但是c 11标准下能 有人说在声明的时候初始化相当于在构造函数中初始化 其实不是的 成员变量初始化的顺序为 先进行声明时初始化 然后进行初始化列表初始化 最后进行构造函数初始化 如下代码 另外初始化列表中初始化的顺序
  • STM32启动BOOT0 BOOT1设置方法

    转载自 https www jianshu com p 38c4a90bac19 不同的下载方式对应STM32启动方式也不同 如下图是STM32三种启动方式 第一种启动方式是最常用的用户FLASH启动 正常工作就在这种模式下 STM32的F
  • webpack4 sideEffects实战轻松搞懂

    sideEffects 译作副作用 函数副作用是指函数在正常工作任务之外对外部环境所施加的影响 具体地说 函数副作用是指函数被调用 完成了函数既定的计算任务 但同时因为访问了外部数据 尤其是因为对外部数据进行了写操作 从而一定程度地改变了系
  • Vue的过渡

    目录 单元素过渡 1 css过渡 2 过渡的类名介绍 3 CSS动画 4 自定义过渡的类名 5 元素过渡使用JavaScript钩子函数 多元素过渡 1 基础用法 2 key属性 3 过渡模式 多组件过渡 列表过渡 单元素过渡 1 css过
  • Android Zebra斑马打印机 打印面单不清楚 解决方法

    刚开始的效果 字体模糊 分析原因 1 打印机的打印浓度太低 2 文本字体不对 3 bitmap的问题 因为这个面单是通过view 获取到bitmap再喂给打印机打印的 下载打印机的驱动 设置打印机打印浓度 没有效果 调整字体类型没有效果 分
  • Java 加解密技术系列之 SHA

    序 上一篇文章中介绍了基本的单向加密算法 MD5 也大致的说了说它实现的原理 这篇文章继续之前提到的单向加密 主要讲的是 SHA 同 MD5 一样 SHA 同样也是一个系列 它包括 SHA 1 SHA 224 SHA 256 SHA 384
  • 服务器怎么开虚拟用户,Linux文件服务器实战详解(虚拟用户)

    vsftpd基于系统用户访问ftp服务器 系统用户越多越不利于管理 不利于系统安全 这样就以vsftp虚拟防护的方式来解决 虚拟用户没有实际的真实系统用户 而是通过映射到其中一个真实用户以及设置相应权限来访问验证 虚拟用户不能登陆系统 1
  • android项目迁移到androidX:类映射(android.support.design*)

    支持库类 AndroidX 类 android support design animation AnimationUtils com google android material animation AnimationUtils and
  • 01. 实现登录功能的UI自动化测试脚本

    在软件开发过程中 登录功能是一个非常重要且常见的功能 为了确保登录功能的稳定性和正确性 我们可以利用UI自动化测试来自动验证登录流程 本文将介绍如何编写一个登录功能的UI自动化测试脚本 并通过使用Selenium和pytest库实现自动化测
  • rbf神经网络预测matlab_MATLAB 基于灰色神经网络的预测算法研究—订单需求预测...

    点击上方蓝字关注 公众号 MATLAB 神经网络变量筛选 基于BP的神经网络变量筛选 灰色系统理论是一种研究少数据 贫信息 不确定性问题的新方法 它以部分信息已知 部分信息未知的 小样本 贫信息 不确定系统为研究对象 通过对 部分 已知信息