基于灰色神经网络的预测算法——订单需求预测

       大家好,我是带我去滑雪!

       灰色系统理论的不确定性处理与神经网络的非线性建模相结合,有望更好地处理实际问题中的不确定性和复杂性。本期使用灰色神经网络实现预测冰箱订单需求。

一、问题背景与模型建立

(1)灰色理论

        灰色系统理论(Grey System Theory)是由中国学者李明提出的一种系统科学理论,它主要应用于处理那些信息不完备、不确定性较大、难以精确描述的系统问题。该理论最初应用于经济领域,但后来被拓展到了工程、环境科学、社会科学等多个领域。

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

(2)灰色神经网络

       灰色神经网络是指一种基于神经网络框架,同时结合了灰色系统理论的方法。包括使用神经网络进行数据建模和模式识别,同时考虑到灰色系统理论中处理不完整信息的特点。灰色神经网络的学习流程如下:

  • 步骤1:根据训练数据特征初始化网络结构,初始化参数a,b,并根据a,b的值计算u;
  • 步骤2:根据网络权值定义计算权值;
  • 步骤3:对每一个输入序列,计算每层的输出;
  • 步骤4:计算网络预测输出和期望输出的误差,并根据误差调整权值和阈值;
  • 步骤5:判断训练是否结束,若否,返回步骤3。

(3)冰箱订单预测背景

        对于冰箱市场来说,影响需求量的因素很多,比如季节性因素、成本、产品质量、品牌认可度、售后服务、产品结构、产品生命周期、价格波动及销售力度、竞争对手、市场特征、性能价格比等,根据各因素对订单需求影响的大小,从中选取需求趋势、产品市场份额预测、销售价格波动、订单缺货情况和分销商的联合预测情况5个因素作为主要因素预测冰箱订单量。

需求趋势:涉及分析市场对产品或服务的需求如何变化的趋势。这可能包括季节性变化、长期趋势、新兴市场的增长等。了解需求趋势有助于企业调整生产计划、库存策略和市场营销活动,以满足不断变化的市场需求。

产品市场份额预测:预测产品在市场上的份额变化。这包括了解竞争对手的动态、消费者偏好的变化、市场份额的增长或减少等。有效的市场份额预测有助于企业制定竞争策略、定价策略和产品创新战略。

销售价格波动:考察销售价格的波动情况,即产品或服务价格如何随时间变化。这可能受到原材料成本、竞争状况、市场需求等多种因素的影响。了解销售价格波动有助于企业确定合适的定价策略,最大化盈利并保持市场竞争力。

订单缺货情况:分析订单履行过程中产品缺货的情况。这包括了解导致缺货的原因,如生产问题、供应链中断等。解决订单缺货问题对于维护客户满意度和保持业务正常运作至关重要。

和分销商的联合预测情况:与分销商合作,共同预测产品的需求。这有助于建立更为准确的供应链和库存管理系统,减少库存过剩或缺货的风险。有效的合作预测可以提高供应链的敏捷性,同时确保分销商和制造商之间的合作更为紧密。

(4)模型建立

        基于灰色神经网络的冰箱订单预测算法流程:其中,灰色神经网络构建根据输入、输出数据维数确定灰色神经网络结构。由于本案例输入数据为5维,输出数据为1维,所以灰色神经网络结构维1-1-6-1,即LA层有1个节点,输入为时间序列,LB层有1个节点,LC层有6个节点,第2-6个分别输入需求趋势、产品市场份额预测、销售价格波动、订单缺货情况和分销商的联合预测5个因素的归一化数据,输出为预测订单需求。

二、代码实现与结果分析

(1)数据处理

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

(2)网络初始化

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;

(3)网络学习

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  

(4)结果预测

     

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;

%计算预测的每月需求量
for j=36:-1:2
    ys(j)=(yc(j)-yc(j-1))/10;
end

 (5)结果分析

      灰色神经网络训练过程:

       可以看出,灰色神经网络收敛速度很快,但是网络很快陷入局部最优,无法进一步修正参数。用训练好的灰色神经网络预测冰箱订单,预测结果:


更多优质内容持续发布中,请移步主页查看。

若有问题可邮箱联系:1736732074@qq.com 

博主的WeChat:TCB1736732074

   点赞+关注,下次不迷路!

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

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

相关文章

中国制库:创新引领,效率突破,塑造行业新标准

制库是一家专注于企业知识应用的在线SAAS平台,主要构成部分包括制度、表单、流程、制问和集合。作为集合了各种管理制度的平台,制库不仅提供了丰富的制度资源,还通过SAAS版实现了知识集成、修订和应用的全流程。目标是打造中国全面的企业制度库,帮助企业快速建立核心管理系统,并…

ON1 Photo RAW MAX 2024 v18.0.4.14758

ON1 Photo RAW MAX 2024 for mac是一款专业的raw照片编辑软件,提供了各种各样的编辑工具,包括调整曝光、对比度、色彩、锐化、裁剪、旋转和去除红眼等功能,用户可以根据具体需求对照片进行精确的调整。ON1 Photo RAW MAX 2024还提供了智能修复…

98.qt qml-使用曲线图综合示例、支持多种鼠标交互、支持百万数据显示(已适配黑白风格)

在上章我们只是简单实现了曲线图和折线图的显示: 79.qt qml-如何在QML中使用QCustomPlot之曲线/折线示例(已适配黑白风格)_qml 折线图_诺谦的博客-CSDN博客 所以本章实现综合示例、并添加多种功能如下所示: 详细显示:鼠标任意移动显示具体值内容鼠标右击: 弹出菜单栏,支持…

【C++】:继承

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关C继承的知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 数据结…

洛谷 P1064 [NOIP2006 提高组] 金明的预算方案 python解析

P1064 [NOIP2006 提高组] 金明的预算方案 时间:2023.11.19 题目地址:[NOIP2006 提高组] 金明的预算方案 题目分析 动态规划的0-1背包,采用动态数组。如果不了解的话,可以先看看这个背包DP。 这个是0-1背包的标准状态转移方程 f…

域名的理解

域名的分类 见下图 这里引用的阿里云对域名的定义,个人理解是有两种叫法,一种是传统的叫法,也就是将sample.org.cn划分成了三级域名,还有一种叫法是基于用户注册的域名来说的,将用户注册的整体域名称作一级域名&…

SOME/IP 协议介绍(五)指南

指南(信息性) 选择传输协议 SOME/IP直接支持互联网上使用最广泛的两种传输协议:用户数据报协议(UDP)和传输控制协议(TCP)。UDP是一种非常简洁的传输协议,仅支持最重要的功能&#…

Java Swing实现简单的文本编辑器

内容要求 1) 本次程序设计是专门针对 Java 课程的,要求使用 Java 语言进行具有一定代码量的程序开发。程序的设计要结合一定的算法,在进行代码编写前要能够设计好自己的算法。 本次程序设计涉及到 Java 的基本语法,即课堂上所介绍的变量、条件语句、循…

Jmeter配置脚本录制进行抓包并快速分析、定位接口问题

对于测试人员、开发人员来说,善用抓包工具确实是快速分析和定位问题的一大必备神技,现将配置过程记录如下: 1、打开jmeter后,首先添加—个线程组: 2、线程组可以重新命名按项目名称分类: 如果你想学习自动化测试,我这边给你推荐一…

Leetcode经典题目之“双指针交换元素“类题目

1 LC 27. 移除元素 class Solution {public int removeElement(int[] nums, int val) {int nnums.length;int s0;for(int i0;i<n;i){// 只有不等于目标值的时候才会进行交换&#xff0c;然后移动s指针if(nums[i]!val){swap(nums,i,s);}}return s;}void swap(int[]nums, int…

22. 深度学习 - 自动求导

Hi&#xff0c;你好。我是茶桁。 咱们接着上节课内容继续讲&#xff0c;我们上节课已经了解了拓朴排序的原理&#xff0c;并且简单的模拟实现了。我们这节课就来开始将其中的内容变成具体的计算过程。 linear, sigmoid和loss这三个函数的值具体该如何计算呢&#xff1f; 我们…

『力扣刷题本』:环形链表(判断链表是否有环)

一、题目 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&am…

苹果iOS系统开发APP应用启动几种速度优化技巧与实践

在移动应用开发过程中&#xff0c;启动速度是影响用户体验的关键因素之一。一个应用如果启动迅速&#xff0c;会给用户留下良好的第一印象&#xff0c;相反&#xff0c;如果启动缓慢&#xff0c;用户的耐心和满意度可能会大打折扣。对于iOS开发者而言&#xff0c;优化启动速度不…

uart_printf自定义串口printf输出

暂时只格式化了%s和%c&#xff0c;需要其他格式化的可自行添加&#xff0c;后续也可能更新 标准库 #include <stdarg.h> //需要包含的头文件--->任意参数功能需要void UART_printf(USART_TypeDef *USARTx, const char *fmt, ...) {va_list args;va_start(args, fmt)…

安装第三方包报错 error: Microsoft Visual C++ 14.0 or greater is required——解决办法

1、问题描述 手动安装第三方软件时&#xff0c;可以使用setup.py&#xff0c;来安装已经下载的第三方包。一般文件下会存在setup&#xff0c;在所要安装库的目录下的cmd执行&#xff1a;python setup.py install报错&#xff1a;error: Microsoft Visual C 14.0 or greater i…

详解ssh远程登录服务

华子目录 简介概念功能 分类文字接口图形接口 文字接口ssh连接服务器浅浅介绍一下加密技术凯撒加密加密分类对称加密非对称加密非对称加密方法&#xff08;也叫公钥加密&#xff09; ssh两大类认证方式&#xff1a;连接加密技术简介密钥解析 ssh工作过程版本协商阶段密钥和算法…

程序员如何做事更细致?

最近在工作中老是犯一些小错误&#xff0c;哦&#xff0c;当然也不是最近了&#xff0c;其实我一直是个马虎的人&#xff0c;我很讨厌做一些细活&#xff0c;因为这会让我反复改动多次在会成功&#xff0c;而平时的代码由于有debug&#xff0c;即便出错了&#xff0c;再改回来即…

高效背单词——单词APP安利

大英赛&#xff0c;CET四六级&#xff0c;以及考研英语&#xff0c;都在不远的未来再度来临&#xff0c;年复一年的考试不曾停息&#xff0c;想要取得好成绩&#xff0c;需要我们的重视并赋予相应的努力。对于应试英语&#xff0c;词汇量是不可忽略的硬性要求。相比于传统默写&…

SOME/IP 协议介绍(六)接口设计的兼容性规则

接口设计的兼容性规则&#xff08;信息性&#xff09; 对于所有序列化格式而言&#xff0c;向较新的服务接口的迁移有一定的限制。使用一组兼容性规则&#xff0c;SOME / IP允许服务接口的演进。可以以非破坏性的方式进行以下添加和增强&#xff1a; • 向服务中添加新方法 …

Node.js环境配置级安装vue-cli脚手架

一、下载安装Node.js (略) 二、验证node.js并配置 1、下载安装后&#xff0c;cmd面板输入node -v查询版本、npm -v ,查看npm是否安装成功&#xff08;有版本号就行了&#xff09; 2、选择npm镜像&#xff08;npm config set registry https://registry.npm.taobao.org&…