VC++和Matlab实现的木材品质神经网络预测模型NeuralNetworkForecastModelofWoodQualityusingVC++andMatLab作者:长春理工大学软件学院张渊博摘要:本文给出了基于木材结构和组份的木材品质神经网络预测模型的VC++和Matlab的软件实现。VC++和Matlab接口部分的设计与实现为此类复杂多元问题提供了通用高效的解决途径。Abstract:Thispaperpresentstheneuralnetworkforecastmodelfromwoodmicrostructureandconstituenttowoodquality,alsocoversitssoftwarerealizationusingVC++andMatLab.ThesuccessfuldesignandimplementationoftheinterfacebetweenVC++andMatLabprovidesageneraleffectivesolutiontothiskindofcomplexandmultidimensionalprojects.关键词:广义回归神经网络MatLab工具箱逐步回归分析控件Keywords:GRNN(GeneralRegressionNeuralNetwork),MatLabToolbox,stepwiseregressionanalysis,Control.1引言随着木材在现代生产、生活中的愈加广泛和高效的应用,业界亟需了解木材微观结构与其外部物理力学性能之间的关系。深入研究木材内部结构参数到木材物理、力学特性的映射关系将为树木优质种质资源培育、树木转基因工程、定向培育材质改良的树木新品种等提供强有力的科学依据及研究方法[1]。本文原始数据来源于相关林业研究机构的杉木和72杨实验样本,包括杉木各种微观结构参数与物理、力学特性参数。2神经网络建模原理及数据预处理2.1广义回归神经网络广义回归神经网络(GRNN)[2]是DonaldF.Specht在1991年提出的一种新型的神经网络,它是一个正规化的RBF网络,能够根据样本数据逼近其中隐含的映射关系(如图2.1所示)。图2.1广义回归神经网络(GRNN)结构图Matlab的Neuralnetwork工具箱[3,4]为我们提供了GRNN神经网络模型设置和实施的平台。网络设置如图2.2所示。图2.2MatLab中的GRNN网络网络的输入为X(R维向量),训练样本对的总数为M,网络输出为S维向量Y。GRNN包含两层:第一层为径向基隐含层,单元个数等于训练样本数M,该层的权值函数为欧几里德距离度量函数(用dist表示),其作用是计算网络输入与第一层的权值IW1,1(为M*N矩阵,即全部样本输入向量)之间的距离。2.2数据预处理根据各组原始数据描点,分析其变化趋势,并作曲线拟合yi=f(xi)由于测量方法的限制,个别量在接近表皮处无法获得,为了保留每一个珍贵样本,利用拟合所得的函数关系yi=f(xi)进行插值。在建模之前分别作了数据标准化、主成分分析[5]、逐步回归分析[6]等预处理工作。2.3MatLab建模具体的建模任务是围绕计划的三类模型展开的,具体来讲,包括杉木总体关系模型、杉木基于不同树龄的关系模型(8个子模型)、杉木基于关键变量组合的关系模型(对应于杉木的7个输出指标,每个指标分别有若干个有代表性的优化组合)。图2.3杉木品质-结构回归曲线对于总体模型建模,首先将训练数据集正规化,并对正规化的数据进行主成分变换。通过仿真网络,并还原网络输出,然后对还原后的网络输出和目标向量作线性回归,来检验网络训练的性能。在网络响应和目标值之间作线性回归来计算网络响应和目标值之间的相关系数(如图2.3所示)。3MatLab与VC++接口设计本章内容主要探讨前台VC++实现的UI与后台MATLAB的连接方法。3.1MatLab与VC接口概述MatLab与VC++接口实现有以下三种方法。采用MatLab引擎[7]优点:直观可靠,通过引擎可以直接和matlab对话缺点:要额外配置集成开发环境,程序独立性差采用Matcom4.5或Matlab编译器优点:翻译后的代码运行速度快,独立性好缺点:翻译程序不够智能利用C++自行编制GRNN算法优点:自己编制的算法易于维护,易于拓展缺点:需要大量的编程投入本文采用的是MatLab引擎,后续章节为关于MatLab引擎的详细阐述。3.2MATLAB计算引擎与VC交互的实现在头文件中加入engine.h,其中包含启动MATLAB调用和关闭的函数声明[8],如图3.1所示。图3.1MatLab与VC++集成开发环境的配置4软件设计与实现4.1应用程序架构设计为了将完成的神经网络模型真正应用到木材行业,拟通过VC++来实现友好的用户界面,用户通过前台的接口调用后台Matlab运算模块,即实现一种功能强大的查询平台。图4.1所示为应用程序的整体架构。4.1应用程序框架4.2界面元素在应用程序界面中,主要突出以下几类应用:shockwaveflashobject控件、CButtonST按钮类、透明Slidercontrol类。程序起始时如图4.2所示的flash欢迎画面,并给出查询类型备选:整体模型查询、分年龄段查询和不完全查询。图4.2flash欢迎画面本文实现了将flash制作的界面嵌入程序中,并让flash动画与VC++应用程序交互。其实现首先需要安装flash.ocx,在工程中添加registeredactiveXcontrols中的shockwaveflashobject控件。为实现按钮的优雅风格,如图4.3所示,本文复用了按钮扩展类CButtonST。图4.3按钮关于应用程序的输入控件,本文使用了一种透明的滑动控件类如图4.4所示。本文采用的透明滑动控件类,它使用CSliderCtrl作为基类,在表现形式上作了相应的美观处理。图4.4透明滑动控件4.3木材品质预测模型运行示例将前两节所述的功能模块和界面元素统一架构起来,即实现了此类可用于木材品质分析(限于30年树龄的杉木河72杨)的木材品质预测平台。图4.5、4.6、4.7给出了以上三种查询流程的截屏(以杉木品质查询为例)。3.-图4.5整体查询图4.5所示,在选择整体模型查询后,输入杉木微观结构数据,即可立即调用后台MatLab计算得出杉木力学和干缩特性数据。图4.6分年龄段查询如图4.6所示,为分年龄段查询的主界面,首先选择杉木年龄,在图中下拉框给出1-30年树龄的不同选项。不同的树龄对应着微观结构不同的定义域,这种差异体现木材的径向变异。图4.7给出了进行关键变量组合查询的过程。在这种查询方式中,包括VC和MatLab的两次交互,其一,利用逐步回归分析法挑选关键因子组合;其二,进行神经网络模型的运算。图4.7关键变量查询5结论本文基于一组木材微观结构参数和物理、力学特性的数据样本,利用神经网络建模,并基于VC++和MatLab得以实现。通过对MatLab外部应用程序接口的深入研究和反复实践,本文实现了VC和MatLab引擎的自由通信和灵活调用,从而将功能强大的运算模块嵌入到了友好的用户界面中。这种在集成环境下的软件开发,通过各个开发工具的合作和协调,能充分发挥出每个开发工具的独特优势,大大缩短软件开发周期。6参考文献[1]刘晓丽王喜明姜笑梅殷亚方,沙棘材解剖及物理力学性质的研究,北京林业大学学报.2004,26(2)-84-89,117[2]SimonHaykin,神经网络的综合基础(第2版),2001年10月,清华大学出版社[3]曾繁会李伟等,多重共线性问题的神经网络实例分析,辽宁工程技术大学学报:自然科学版.2001.020(005).-659-661[4]郝鑫陈德钊吴晓华俞欢军,广义回归神经网络的改进及在延迟焦化建模中的应用,化工学报.2004,55(4).-608-612[5]闻新,周露等,MATLAB神经网络仿真与应用,2003年7月,北京[6]FredricM.Ham,IvicaKostanic,PrinciplesofNeurocomputingforScienceandEngineering,机械工业出版社,2003-7-1[7]楼顺天施阳,基于MATLAB的系统分析与设计——神经网络,1998年9月,西安电子科技大学出版社[8]李涛贺勇军刘志俭,Matlab工具箱应用指南---应用数学篇,2000年5月,电子工业出版社