时间:2024-05-04
腾杨刚 陈劲杰 葛桂林
摘 要:近年来,人力资源和物流及仓储成本的不断攀升,导致零件制造成本不断上升,而准确的库存预测有助于企业据此调整生产计划,降低制造成本,有助于实现企业利润最大化。本文通过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-),硕士生.研究领域:软体机器人.
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!