零售企业销售预测系统的设计与实现
2015-03-15李雅莉
李雅莉
(宝鸡文理学院 电子电气工程系,陕西 宝鸡 721016)
1 引言
销售分析是通过对已有数据的多角度分析,获取有价值的信息,帮助企业做出合理的决策。而销售预测是在销售分析的基础上,对影响市场供求变化的诸多因素及过去和现在的销售资料进行分析、研究,运用科学的方法,对未来市场产品的供求发展趋势进行估计和推测。根据销售预测结果,企业可以科学制订各种计划。
为了方便企业决策者使用,本文主要研究如何在客户端通过微软VB 6.0设计一款基于BP神经网络的零售业销售预测系统,通过简单的界面操作,使企业决策者很清楚地了解未来产品的发展趋势,从而制定出科学合理的决策,及时有效地应对市场变化。
2 BP神经网络
神经网络是由大量简单神经元相互连接构成的复杂网络,其通过模拟人脑反复学习技术来工作,对给出的样本数据,神经网络通过类似人类记忆过程的方式学习数据中的统计规律,归纳出能描述样本特征的数据模型,然后用已学会的数据模型进行预测处理。
BP网络是目前应用最为广泛的一种神经网络,具有很强的映射能力,可以实现输入和输出间的任意非线性映射。BP网络一般由一个输入层、一个或多个隐含层以及一个输出层组成,是通过误差反向传播学习算法来修正网络的权值和阈值的。由于BP算法采用梯度下降法来收敛实际输出与理想输出之间误差,网络有可能陷入局部极小值。可采用附加动量与自适应学习速率相结合的方法来改进算法。
3 系统的总体结构
在基于BP神经网络的零售业销售预测系统中,采用两层C/S结构进行设计,包括数据仓库层和客户端层,如图1所示。
图1 销售预测系统结构
(1)数据仓库层 按照销售预测主题需要,在Microsoft SQL Server 2000下设计销售预测数据仓库,完成数据抽取、清理和转换任务,将数据装载到数据仓库中。
(2)客户端层 利用微软的VB 6.0开发一个良好的人机交互系统,能实现BP神经网络的训练及对销售量和销售利润的预测,将结果以曲线图及数据的方式呈现给用户,供用户决策使用。
4 系统功能设计
系统按照模块化思想进行功能设计开发,其功能模块如图2所示。
图2 系统的功能
4.1 数据仓库更新
以销售预测为主题的数据仓库创建好后,利用数据转换服务创建要进行数据提取转换加载的DTS包以及数据更新的DTS包,在客户端利用DTSPkg.dll动态链接库提供的LoadFromSQLServer方法,执行远程DTS包来完成。
4.2 模型数据提取
此模块主要是从数据仓库中为BP网络提取所需要的数据,并保存在数据仓库的临时数据表中,供BP神经网络训练、检测及预测使用。当数据仓库中的数据发生变化,调用此功能模块能实现数据的同步更新。
在SQL Server 2000下创建choicedata包,在执行SQL任务属性中书写SQL语句,完成从数据仓库的维表和事实表中以月为粒度提取商品的销售时间,商品的月平均价格,购买此商品顾客的平均收入,本月此商品的销售量,本月此商品的销售利润并保存在数据仓库的临时数据表中。图3为所创建的choicedata包,图4为包中第一个执行SQL任务的属性内容。数据的提供不是一次就能完成的,此包共分10次完成。在客户端通过执行远程DTS包来实现。
图3 DTS包
图4 SQL任务属性
4.3 销售量预测
先进行网络模型训练,根据预测时间和商品类型,系统会自动从数据仓库的临时数据表中提取此类商品的销售信息,启动后台MATLAB仿真平台,进行BP预测模型训练和学习。其次对模型进行检测,如果误差太大,重新训练。将训练好的网络模型保存,供预测使用。最后在预测界面,根据预测时间和商品类型进行预测,结果以数据和图形形式输出。
网络训练和模型检测不是每次都需要运行,当数据仓库中的销售信息发生变化后,网络模型就需要及时更新。
通过销售量的网络预测,就可以得出在预测时间内预测商品的月销售量,为决策者提供有效的帮助。
4.4 销售利润预测
同销售量预测方式一样,最终得到预测模型,可以预测出某商品的月销售利润。
5 系统实现
5.1 VB 与数据仓库
Visual Basic是Microsoft公司推出的面向对象的可视化集成编程系统。在VB中利用ADO(ActiveX Data Objects)控件能够访问数据库系统,ADO控件能访问的数据,除了标准的关系数据库中的数据之外,还包括邮件数据,Web上的文本或图形,目录服务等。ADO访问数据是通过OLE DB来实现的[1]。
在VB中要访问数据仓库,先要连接数据仓库,通过下列代码可连接到数据仓库。
Set cn = New ADODB.connection
cn.ConnectionString = "Provider =SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=数据仓库名;Data Source=服务器名"
cn.Open
5.2 VB 与 DTS 包
Microsoft公司的数据转换工具DTS通过OLE DB接口能够在关系数据源、非关系数据源以及ODBC数据源之间转移数据,可以自动或交互地从多个异构数据源向数据仓库装入数据;DTS支持使用VBScript或JavaScript等脚本语言创建自定义的转换脚本,也允许使用编程语言(如VisualBasic或VisualC++)编写自定义的组件,能够在转换中对数据进行校验、清理等各种操作。集成在SQL Server 2000中的DTS可以自动调度导入或操作任务,也可以使用SQL代理服务来进行调度[2]。
通过DTS设计器创建的数据抽取、清理、转换和加载的DTS包,数据更新及模型数据提取的DTS包,在VB中可以用下列代码远程执行。
Dim MyPackage As DTS.Package
Set MyPackage = New DTS.Package
With MyPackage
.LoadFromSQLServer"服务器名","用户名","密码",DTSSQLStgFlag_Default,,,,"DTS包名"
.Execute
5.3 VB 与 MATLAB
ActiveX部件是Microsoft公司提供的一种用于模块集成的新协议,它是VB工具箱的扩充部分。在VB下通过ActiveX自动化接口可将MATLAB作为Visual Basic语言的一个ActiveX部件调用,实现 MATLAB 与 VB 的集成[3-6]。
在VB应用程序中用ActiveX部件实现MATLAB与VB的集成,代码如下:
Dim Matlab As Object(在变量声明部分申明要调用MATLAB的ActiveX)
SetMatlab = CreateObject("Matlab.Application")(链接 MATLAB的ActiveX部件)
Matlab.Execute(“待执行的MATLAB命令语句”) (执行MATLAB命令)
Call MatLab.Quit (退出 MATLAB)
5.4 系统测试
网络训练界面中,网络参数都设计成可以变化的值,这样的网络模型更具有灵活性。
图5 模型训练界面
图6 模型检验界面
图7 模型销售量预测界面
6 总结
本系统界面友好,操作简单,利用此系统可以对零售业的商品销售量和销售利润进行合理预测,通过预测曲线图和具体的预测数据帮助决策人员制订科学合理的采购、库存及营销计划。
[1] 李雅莉.决策支持系统中数据仓库的设计[J].中国管理信息化,2009(17):84-87.
[2] 陈鸿雁.保险数据仓库数据抽取的设计与实现[J].中国金融电脑,2011(4):48-52.
[3] 隗燕琳,陈进明.基于VB与MATLAB的混合编程方法[J].计算机与数字工程,2013(8):1388-1390.
[4] 李波,曹洪奎.VB 与 MATLAB 技术的研究[J].渤海大学学报:自然科学版,2009,30(1):89-92.
[5] 王新态,曹爽,丁海勇.VB调用MATLAB神经网络工具箱在测绘软件设计中的应用[J].测绘通报,2011(11):59-62.
[6] 陈丽芳,冯力静.基于VB与MATLAB集成技术的预测系统设计与实现[J].河北理工大学学报:自然科学版,2010,32(1):34-38.