APP下载

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

2018-10-22腾杨刚陈劲杰葛桂林

软件工程 2018年7期
关键词: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-),硕士生.研究领域:软体机器人.

猜你喜欢

BP神经网络机器学习
基于网络搜索数据的平遥旅游客流量预测分析
前缀字母为特征在维吾尔语文本情感分类中的研究
复杂背景下的手势识别方法
BP神经网络在软件质量评价中的应用研究 
基于支持向量机的金融数据分析研究
BP神经网络算法在数值预报产品释用中的应用