基于Matlab和BP神经网络的固体火箭发动机比冲性能的预测

基于Matlab和BP神经网络的固体火箭发动机比冲性能的预测,第1张

(内蒙古工业大学理学院,内蒙古 呼和浩特 010051)

摘 要:本文采用基于误差反向传播算法(BP算法)的人工神经网络技术,利用Mat lab神经网络工具箱,建立了固体火箭发动机比冲性能预测的神经网络模型,并利用实验数据进行了验证。结果表明,可以利用该方法开展固体火箭发动机比冲性能的预测。

关键词:固体火箭发动机比冲;

BP算法;

Mat lab神经网络工具箱;

人工神经网络

中图分类号:V435∶TP183 文献标识码:A 文章编号:1007—6921(2007)08—0073—02

固体火箭发动机性能参数预测是发动机设计和研究的基本课题之一,正确预测发动机性能参数是提高发动机性能指标和精度并缩短研制周期的关键和基础。比冲性能的预测目前有两种方法。一种是以历次试验得到的修正系数对新设计的发动机的理论比冲进行修正。另一种是通过计算各种损失来预估比冲。这些方法存在需要样本数据大和预测精度差的缺点。

神经网络理论由于自身固有的超强适应能力和学习能力在很多领域获得了极其广泛的应用,解决了许多传统方法难以解决的问题。由于神经网络学习算法在数学计算上比较复杂过程也比较繁琐,容易出错。因此,采用神经网络软件包成为必然的选择。本文采用现在应用最为广泛的MATLAB神经网络工具箱,利用基于BP算法的人工神经网络建立固体火箭发动机比冲性能预测模型,以提高比冲的预测精度。

1 BP神经网络模型

BP网络由于结构简单,具有较强的非线性映射能力,是应用最为广泛的一类神经网络。BP神经网络的学习过程分为信息的正向传播过程和误差的反向传播过程两个阶段。外部输入的信号经输入层、隐含层的神经元逐层处理向前传播到输出层,给出结果。如果在输出层得不到期望输出,则转入逆向传播过程,将实际值与网络输出之间的误差沿原来联结的通路返回,通过修改各层神经元的联系权值,使误差减少,然后再转入正向传播过程,反复迭代,直到误差小于给定的值为止。

2 MATLAB神经网络工具箱的应用

神经网络工具箱是在Mat lab环境下开发出来的许多工具箱之一,它以人工神经网络理论为基础,用MATLAB语言构造出典型神经网络的激活函数,在网络训练过程中使用的是Mat lab

65 for Windows软件,对于网络的训练使用了Neural Networks Toolbox for Mat lab。美国的Math work公司推出的MATLAB软件包既是一种非常实用有效的科研编程软件环境,又是一种进行科学和工程计算的交互式程序。MATLAB本身带有神经网络工具箱,可以大大方便权值训练,减少训练程序工作量,有效的提高工作效率。

3 影响固体火箭发动机比冲性能的因素

比冲是反映发动机所用推进剂能量高低和内部工作过程完善程度的重要技术指标。影响比冲性能的因素很多,主要包括以下几项:喷管喉径、喷管潜入比、平均扩张比、工作时间、扩散半角、平均工作压强、平均燃速、推进剂密度。由于固体火箭发动机的全尺寸试车需要耗费大量的人力、物力和财力。因此比冲的试验数据比较缺乏,本文共收集了6组数据样本,选定其中的5组作为训练样本,一组作为测试样本。每组数据样本前8项为输入因子,输出因子为实际比冲。利用这6组数据对网络进行训练、测试。

4 网络模型设计

BP网络的设计主要包括输入层、隐层、输出层及各层之间的传输函数几个方面。

41 网络层数。BP网络可以包含不同的隐层,理论上已经证明:具有偏差和至少一个S型隐含层加上一个线性输出层的网络,能够逼近任何有理函数。对隐含层层数的经验选择为:对于线性问题一般可以采用感知器或自适应网络来解决,而不采用非线性网络,因为单层不能发挥出非线性激活函数的特长;

非线性问题,一般采用两层或两层以上的隐含层,但是误差精度的提高实际上也可以通过增加隐含层中的神经元数目获得,其训练效果也比增加层数更容易观察和调整,所以一般情况下,应优先考虑增加隐含层中的神经元数。

42 输入层的节点数和输出层的节点数。输入层起缓冲存储器的作用,它接收外部的输入数据,因此其节点数取决于输入矢量的维数。由于固体火箭发动机比冲性能预测的输入样本为8维的输入向量,因此,输入层一共有8个神经元。

输出层的节点数取决于两个方面,输出数据类型和表示该类型所需的数据大小。由于固体火箭发动机比冲性能预测的输出样本为1维的输出向量,因此,输出层有1个神经元。

43 隐含层神经元的节点数。隐含层神经元的节点数确定是通过对不同神经元数进行训练对比,然后适当的增加一点余量。根据前人经验,可以参照以下公式进行设计:

式中:n为隐层节点数;

n i 为输入节点数;

n 0 为输出节点数;

a为1~10之间的常数。

根据这一原则此BP网络的隐含层神经元的节点数为[KF(]8+1[KF)]+a(a=1~10),取为13。

44 传输函数。一般情况下BP网络结构均是在隐含层采用S型激活函数,而输出层采用线性激活函数。

45 训练方法的选取。采用附加动量法使反向传播减少了网络在误差表面陷入低谷的可能性有助于减少训练时间。太大的学习速率导致学习的不稳定,太小值又导致极长的训练时间。自适应学习速率通过保证稳定训练的前提下,达到了合理的高速率,可以减少训练时间。

46 学习速率的经验选择。一般情况下倾向于选取较小的学习速率以保证系统的稳定性,学习速率的选取范围在001~08之间。此网络学习速率选取为005。

47 期望误差的选取。一般情况下,作为对比,可以同时对两个不同的期望误差值的网络进行训练,最后通过综合因素的考虑来确定其中一个网络。

综上所述:BP网络拓扑结构为8×13×1的结构。中间层神经元的传递函数为S型正切函数tansig。由于输出已被归一化到区间[0,1]中,输出层神经元的传递函数可以设定为S型对数函数logsig。网络的训练函数采用学习率可变的动量BP算法修正神经网络的权值和阀值函数traingdx。

5 网络的训练与测试

在对神经网络进行学习训练以及预测比冲时,必须先对输入输出数据进行预处理,即归一化或标准化,将网络的输入输出数据限制在[0,1]区间内。进行归一化的主要原因有:①网络的各个输入数据常常具有不同的物理意义和不同的量纲,归一化可使得各输入分量被赋以同等重要的地位;

②某些输入变量的值可能与其它输入变量相差甚远,归一化可避免数值大的变量掩盖数值小的变量;

③可以避免神经元饱和。

6组实测数据样本经过归一化处理后的数据如表1所示。

用仿真函数sim来计算网络的输出,其预报误差曲线如图1。



由图可见,网络预测值和真实值之间的误差是非常小的,均小于3%。完全满足应用要求。

6 结论

神经网络作为一种输入/输出的高度非线性映射,通过对作用函数的多次复合,实现了固体火箭发动机比冲性能参数预测。并得到以下结论:

61 无需建立系统的数学模型,只要有足够的训练样本(由实验数据或仿真数据得到)即可预测。

62 BP网络根据样本数据,通过学习和训练,找出输入与输出之间的关系,从而求取问题的解,而不是依据对问题的经验判断,因而具有自适应功能,克服了统计回归方法分析小样本数据的不足。

63 结果表明,训练好的BP网络模型可以较准确的开展固体火箭发动机比冲性能的预测。

64 模型预测的规律受样本的性质影响,由于固体火箭发动机比冲的实验数据比较缺乏,因此本模型还有待于进一步的试验数据验证。

[参考文献]

[1] 刘佩进,吕翔,何国强基于人工神经网络的燃速相关性研究[J]推进技术,2004,25(2):156-158

[2] 张宇星基于神经网络原理的固体火箭发动机比冲性能的预示研究[D]呼和浩特:内蒙古工业大学硕士研究生论文,2002

[3] 飞思科技产品研发中心MATLAB65应用接口编程[M]北京:电子工业出版社,2003

[4] 闻新,周露,王丹力,等Mat lab神经网络应用设计[M]北京:科学出版社,2000

[5] 蒋宗礼人工神经网络导论[M]北京:高等教育出版社,2001

P=[];‘输入,开盘价,最高价,最低价,收盘价成交量依次5天的数据’

T=[];’输出,即第二日的收盘’

net=newff(minmax(P),[7,1],{'tansig','logsig'},'traingdx');

nettrainParamepochs=1000; ‘最大训练次数,根据需要可自行调节’

nettrainParamgoal=001; ‘误差’

nettrainParamlr=001; ‘学习率’

net=train(net,P,T); ‘训练网络’

test=[];‘待预测数据输入’

out=sim(net,test); ‘仿真预测’

我的这个程序没有进行初始化,你还需要先将数据进行初始化后才能算。

P=[。。。];输入T=[。。。];输出

% 创建一个新的前向神经网络

net_1=newff(minmax(P),[10,1],{'tansig','purelin'},'traingdm')

% 当前输入层权值和阈值

inputWeights=net_1IW{1,1}

inputbias=net_1b{1}

% 当前网络层权值和阈值

layerWeights=net_1LW{2,1}

layerbias=net_1b{2}

% 设置训练参数

net_1trainParamshow = 50;

net_1trainParamlr = 005;

net_1trainParammc = 09;

net_1trainParamepochs = 10000;

net_1trainParamgoal = 1e-3;

% 调用 TRAINGDM 算法训练 BP 网络

[net_1,tr]=train(net_1,P,T);

% 对 BP 网络进行仿真

A = sim(net_1,P);

% 计算仿真误差

E = T - A;

MSE=mse(E)

x=[。。。]';%测试

sim(net_1,x)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

不可能啊 我2009

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/12187516.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存