中易网

介绍MATLAB在水利电力专业领域的应用实例

答案:1  悬赏:20  
解决时间 2021-01-13 16:11
  • 提问者网友:未信
  • 2021-01-13 07:19
介绍MATLAB在水利电力专业领域的应用实例
最佳答案
  • 二级知识专家网友:千夜
  • 2021-01-13 07:39
一、 BP网络
BP (Back Propagation)神经网络是一种神经网络学习算法,全称基于误差反向传播算法的人工神经网络。
拓扑结构的单隐层前馈网络,一般称为三层前馈网或三层感知器,即:输入层、中间层(也称隐层)和输出层。它的特点是:各层神经元仅与相邻层神经元之间相互全连接,同层内神经元之间无连接,各层神经元之间无反馈连接,够成具有层次结构的前馈型神经网络系统。单计算层前馈神经网络只能求解线性可分问题,能够求解非线性问题的网络必须是具有隐层的多层神经网络。
在人工神经网络发展历史中,很长一段时间里没有找到隐层的连接权值调整问题的有效算法。直到误差反向传播算法(BP算法)的提出,成功地解决了求解非线性连续函数的多层前馈神经网络权重调整问题。
BP (Back Propagation)神经网络,即误差反传误差反向传播算法的学习过程,由信息的正向传播和误差的反向传播两个过程组成。输入层各神经元负责接收来自外界的输入信息,并传递给中间层各神经元;中间层是内部信息处理层,负责信息变换,根据信息变化能力的需求,中间层可以设计为单隐层或者多隐层结构;最后一个隐层传递到输出层各神经元的信息,经进一步处理后,完成一次学习的正向传播处理过程,由输出层向外界输出信息处理结果。当实际输出与期望输出不符时,进入误差的反向传播阶段。误差通过输出层,按误差梯度下降的方式修正各层权值,向隐层、输入层逐层反传。周而复始的信息正向传播和误差反向传播过程,是各层权值不断调整的过程,也是神经网络学习训练的过程,此过程一直进行到网络输出的误差减少到可以接受的程度,或者预先设定的学习次数为止。
二、应用举例
下表为某土壤的基质吸力(基质势的绝对值)S与体积含水量θ的测定数据,设计一BP网络,完成表中土壤的基质吸力S与体积含水量θ的非线性映射。

S 695 3365 1255 447 330 259 209 168 134 106

θ 0.05 0.06 0.08 0.10 0.12 0.14 0.16 0.18 0.20 0.22

S 78 64 53 43 34 26 18 10 3 0

θ 0.24 0.26 0.28 0.30 0.32 0.34 0.36 0.38 0.40 0.41

网络结构设计:该问题中输入、输出单元个数均为1;取1个隐含层,隐含层单元数q初步取为3;隐含层和输出层的激活函数均取为对数S型(logsig)。
实现以上非线性映射的MATLAB代码为:
>> q=3;
>> s=[6975 3365 1255 447 330 259 209 168 134 106 78 64 53 43 34 26 18 10 3 0];
>> sita=[0.05 0.06 0.08 0.10 0.12 0.14 0.16 0.18 0.20 0.22 0.24 0.26 0.28 0.30 0.32 0.34 0.36 0.38 0.40 0.41];
>> net=newff([0 6975],[q 1],{'logsig' 'logsig'},'trainlm','learngdm','mae');
>> net=init(net);
>> net.trainparam.goal=0.01;
>> net.trainparam.epochs=1000;
>> net=train(net,s,sita);

>> q=3;
>> s=[6975 3365 1255 447 330 259 209 168 134 106 78 64 53 43 34 26 18 10 3 0];
>> sita=[0.05 0.06 0.08 0.10 0.12 0.14 0.16 0.18 0.20 0.22 0.24 0.26 0.28 0.30 0.32 0.34 0.36 0.38 0.40 0.41];
>> net=newff([0 6975],[q 1],{'logsig' 'logsig'},'trainlm','learngdm','mae');
>> net=init(net);
>> net.trainparam.goal=0.01;
>> net.trainparam.epochs=1000;
>> net=train(net,s,sita);
>> s1=[6975 6000 5000 4000 3500 3000 2500 2000 1800 1600 1400 1200 1000 900 800 700 600 500 400 300 250 200 180 160 140 120 100 90 80 70 60 50 40 30 20 15 10 8 6 3 1];
>> sitac=sim(net,s1);
>> semilogy(sitac,s1,sita,s,'o')
>> xlabel('θ')
>> ylabel('s')

网络训练用平均绝对误差来控制,误差限取为0.01。通过一定次数的训练达到精度要求,网络训练和仿真结果如上图所示。可以看出,BP网络能较好的反应S~θ间的关系。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息