基于PCA主成分分析和BP神经网络企业库存预测的研究

腾杨刚 陈劲杰 葛桂林


摘 要:近年来,人力资源和物流及仓储成本的不断攀升,导致零件制造成本不断上升,而准确的库存预测有助于企业据此调整生产计划,降低制造成本,有助于实现企业利润最大化。本文通过PCA主成分分析方法确定影响企业库存的因素,编写python代码分析出影响库存的主要因素,包括订单、当月销量等因素,提出JIT即零库存作为企业库存管理的发展方向。随后选取影响库存的因素,分析并计算相关网络参数,建立BP神经网络,用MATLAB编写预测算法,预测9月的库存,确认预测的合理性,验证了算法的有效性。
关键词:PCA主成分分析;BP神经网络;库存预测;Python;机器学习
中图分类号:TP311 文献标识码:A
文章编号:2096-1472(2018)-07-14-03
1 引言(Introduction)
近年来,制造业的人力和土地成本不断攀升,给企业利润造成较大的压力,而根据企业现有的库存所受的制约状况,分析企业库存的主要影响因素,合理的预测出企业某一阶段的库存,可以让企业提前做好生产储备计划,不仅能够为企业生产减少库存面积,还能为企业节省大量的流动资金、人力资源等,为企业增大利润空间。随着神经网络[1]和相关数学分析方法的不断完善,以及相关语言算法的不断发展,这为预测企业的某一阶段库存提供了可能。
2 PCA主成分分析(Principal component analysis)
在实际的生产实践中,影响库存的因素极其复杂且不确定,甚至是天气的异常变化都会对库存产生影响,但是在大多数情况下,库存的主要影响因素相对固定,表1中选取主要影响因素并对其进行PCA(Principal Component Analysis)降维[2]。
在表1中,列出由8个指标组成的8维随机向量,数据矩阵为
如果库存影响因素的前n个主成分累计贡献率越大,则可以认为前n个主成分可以表征数据,当累计贡献率超过80%时,即可认为所选的主成分可以代表整组数据,下面利用上述计算方法,将认为影响库存的八个因素进行主成分分析,比较这八个因素可否代表库存的主要影响因素。
调用Numpy、matplotlib.pyplot、PCA、pandas、python经典库计算数组的特征值及协方差矩阵等。
def pca(dataMat,percentage=0.8): #百分比
meanVals=mean(dataMat,axis=0)#平均值
meanRemoved=dataMat-meanVals #移除均值
covMat=cov(meanRemoved,rowvar=0) #求协方差
eigVals,eigVects=linalg.eig(mat(covMat))
k=eigValPct(eigVals,percentage)
eigValInd=argsort(eigVals) #排序
eigValInd=eigValInd[:-(k+1):-1] #主成分
redEigVects=eigVects[:,eigValInd]
lowDDataMat=meanRemoved*redEigVects#降维
lowDDataMat reconMat=(lowDDataMat*redEigVects.T)+meanVals
#重构数据
在CMD运行python程序,计算库存影响因素相关性矩阵(表2)、总方差(表3)并绘出碎石图(图1)。
在表3中可以算出,订单、当月销量、在制零件、采购周期四个因素累计贡献率为87.529%,大于80%,再结合图1碎石图,前四个成分下降最为明显,可以认为这四个因素是库存影响的主要因素,提取四个主成分,将主成分系数矩阵除以特征根得主成分函数表达式:
F1=-0.042*Zx1+0.377*Zx2-0.530*Zx30.862*Zx4+0.749*Zx5+0.084*Zx6+0.499*Zx7+0.65*Zx8;
F2=0.759*Zx1+0.488*Zx2+0.746*Zx3-0.047*Zx4+0.324*Zx5+0.737*Zx6-0.095*Zx7-0.082*Zx8;
F3=0.561*Zx1-0.019*Zx2-0.216*Zx3+0.294*Zx4+0.352*Zx5-0.514*Zx6-0.525*Zx7+0.321*Zx8;
F4=0.291*Zx1-0.680*Zx2+0.242*Zx3+0.210*Zx4+0.152*Zx5-0.041*Zx6+0.635*Zx7+0.229*Zx8
由综合主成分公式F=0.3270*F1+0.2668*F2+0.1563*F3+0.1253*F4,前四个成分得分依次为:3.0213、2.5447、1.5178、1.4115,該得分证明认为所列库存影响因素可以代表库存的主要影响因素。
3 数据整理(Data organization)
对库存数据进行整理,得训练集P、测试集T两个矩阵如下:
P=[2727 2530 2512 2552 2213 2588 2829 2142; 2034 1961 2004 1998 2061 2098 1921 1835; 698 603 649 687 624 684 706 663; 2 1.5 1 2 2 1.5 2.5 2;3 4 3.5 3 2.5 4 3 2.5; 5 3 5 4 4 5 4 4;786 814 831 939 570 850 534 938; 38 40 21 29 23 18 0 8];
T=[2348 2041 2142 2076 2741 2456 2875 2668]
4 BP神经网络(Back-Propation neural networks)
BP(Back Propagation)神经网络[1,2]由输入(input layer)、隐含(hide layer)和输出(output layer)三层构成,图2是三层神经网络结构模型,库存预测模型选用S型传递函数,通过输出层误差调整函数:,隐含层误差函数:,输入层误差函数:,通过偏导求出权重:
不断调节权值和阈值使E至最小[3]。
5 网络结构设计(Networks design)
(1)输入输出层的设计
订单、当月销量、在制零件、采购周期、到货周期、供应商数、临采、退货作为输入,以库存作为输出,故输入层节点为8,输出层的节点为1。
(2)隐含层设计
首先根据经验公式来确定神经元的个数[3,4],公式为,由8个库存影响因素得输入层的神经元个数为8,输出层的神经元个数为1,,即,所以,,故库存预测模型选择6个隐含层的神经元。
网络结构示意图如图2和图3所示。
6 激励函数的选取(Select incentive functions)
一般情况下,激励函数选用Sigmoid。隐含层的激励函数选择tansig。而因网络的输出在[-1, 1], 本库存预测模型输出层的激励函数选取S型对数函数logsig[5]。
7 模型的实现(Model achievement)
构建库存预测模型的步骤如下:
将影响库存的数据归一化后输入构建的训练网络, 隐含和输出层分别为tansig和logsig激励函数,隐含层神经元个数为6。设定相关网络参数:网络的epochs为5000次, 期望的误差
设定为0.0000001, 学习的速率为0.01[6,7]。
Net.trainParam.epochs=5000;
[net,tr]=train(net,p1,t1); %训练
n=[2406 2131 682 1.5 3 4 734 7];%测试
n=premnmx(n);
m=sim(net.n);
c=postmnmx(m,mint,maxt);
运行结果显示,在通过866次重复学习在达到期望误差后完成学习,网络训练完毕后,预测9月库存为2709个零件,达到预定的算法目标,不考虑其他未知或不可控因素,可以根据2709个零件编制采购生产计划。
8 结论(Conclusion)
本文首先采用PCA主成分分析方法验证了选取库存影响因素的合理性,使用python进行数据降维度分析[8,9]后,结果证明选取的库存影响因素可以代表库存的影响因素,随后建立BP神经网络模型,编写程序,预测9月的库存,有助于企业实现JIT的目标。但在实际中,库存的影响因素十分复杂甚至某些因素无法事先预知,接下来,仍需在企业生产中,统计企业库存的固定和偶然影响因素,并统计各项数据,增大训练集,才能使库存预测更加精确。
参考文献(Reference)
[1] 孙文荣,周先春,嵇亚婷.基于直方图均衡化、PCA和SVM算法的人脸识别[J].软件,2014,35(08):11-15.
[2] Marta Skiba,Maria Mrówczyńska,Anna Bazan-Krzywoszańska. Modeling the economic dependence between town development policy and increasing energy effectiveness with neural networks.Case study:The town of Zielona Góra[J]. Applied Energy,2017:188.
[3] 冉维丽,乔俊飞.基于PCA时间延迟神经网络的BOD在线预测软测量方法[J].电工技术学报,2004(12):78-82.
[4] 高豪杰.基于BP神经网络的阀门制造企业库存需求预测应用研究[D].北京交通大学,2015.
[5] M.A. Hakeem,M. Kamil.Analysis of artificial neural network in prediction of circulation rate for a natural circulation vertical thermosiphon reboiler[J].Applied Thermal Engineering,2017:112.
[6] 吕健发.粒子群神经网络在手机物料库存预测中的应用[J].大众科技,2014,16(10):41-42.
[7] 馬法尧.基于BP神经网络模型与ARMA模型的库存预测比较[J].统计与决策,2014(19):34-37.
[8] 王哲,李衍达,罗发龙.一种用于PCA与MCA的神经网络学习算法[J].电子报,1996(04):12-16.
[9] 侯严庭.基于Three.js的机械产品自动装配演示[J].软件工程,2018,21(03):23-26.
作者简介:
腾杨刚(1991-),男,硕士生.研究领域:机器学习.
陈劲杰(1967-),男,硕士,副教授.研究领域:智能机器人.
葛桂林(1990-),硕士生.研究领域:软体机器人.
相关文章!
  • 融合正向建模与反求计算的车用

    崔庆佳 周兵 吴晓建 李宁 曾凡沂<br />
    摘 要:针对减振器调试过程中工程师凭借经验调试耗时耗力等局限性,引入反求的思想,开展了

  • 浅谈高校多媒体教育技术的应用

    聂森摘要:在科学技术蓬勃发展的今天,我国教育领域改革之中也逐渐引用了先进技术,如多媒体技术、网络技术等,对于提高教育教学水平有很

  • 卫星天线过顶盲区时机分析

    晁宁+罗晓英+杨新龙<br />
    摘 要: 分析直角坐标框架结构平台和极坐标框架平台结构星载天线在各自盲区状态区域附近的发散问题。通过建