主权项 |
一种基于动态径向基函数神经网络的油田产量预测方法其特征在于,主要包括以下步骤:A.获取数据根据油田实际情况,确定影响油田产量因素指标,获取历史数据集并将其划分为训练数据集和检测数据集;B.归一化处理对历史数据集进行归一化处理,归一化方法可以采用离差标准化方法,使不同量纲的数据转化为统一的处理格式,转换函数如下:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><msup><mi>x</mi><mo>*</mo></msup><mo>=</mo><mfrac><mrow><mi>x</mi><mo>-</mo><msub><mi>x</mi><mi>min</mi></msub></mrow><mrow><msub><mi>x</mi><mi>max</mi></msub><mo>-</mo><msub><mi>x</mi><mi>min</mi></msub></mrow></mfrac></mrow>]]></math><img file="FDA0000696260850000011.GIF" wi="644" he="156" /></maths> (公式1)其中x<sub>max</sub>为样本数据的最大值,x<sub>min</sub>为样本数据的最小值;C.预测模型的建立及训练RBF神经网络中,设K是隐含层神经元数,x(x<sub>1</sub>,…,x<sub>m</sub>)是输入向量,α<sub>k</sub>是第k个隐含层神经元与输出层神经元的联结权值,φ<sub>k</sub>是第k个隐含层神经元的输出,因此RBF神经网络的输出可描述为:<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mi>y</mi><mo>=</mo><munderover><mi>Σ</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>K</mi></munderover><msub><mi>α</mi><mi>k</mi></msub><msub><mi>φ</mi><mi>k</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000696260850000012.GIF" wi="530" he="174" /></maths> (公式2)(1)给定一个隐含层神经元为任意自然数的RBF神经网络进行训练,设定训练的次数;(2)计算每一个隐含层神经元输出值,由公式(1)可得到第k个隐含层神经元的输出为:<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><msub><mi>φ</mi><mi>k</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><msup><mi>e</mi><mfrac><mrow><mo>-</mo><mo>|</mo><mo>|</mo><mi>x</mi><mo>-</mo><msub><mi>μ</mi><mi>k</mi></msub><mo>|</mo><mo>|</mo></mrow><msubsup><mi>σ</mi><mi>k</mi><mn>2</mn></msubsup></mfrac></msup></mrow>]]></math><img file="FDA0000696260850000013.GIF" wi="532" he="155" /></maths> (公式3)(3)对每一个神经元输出进行敏感度分析,计算其对输出的贡献值,隐含层神经元的输出加权值作为敏感度法的输入量,利用下式计算隐含层神经元输出对神经网络对输出所做的贡献:<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><msub><mi>S</mi><mi>h</mi></msub><mo>=</mo><mfrac><mrow><msub><mi>var</mi><mi>h</mi></msub><mo>[</mo><mi>E</mi><mrow><mo>(</mo><mi>y</mi><mo>|</mo><msub><mi>Z</mi><mi>h</mi></msub><mo>=</mo><msub><mi>α</mi><mi>h</mi></msub><msub><mi>φ</mi><mi>h</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>)</mo></mrow><mo>]</mo></mrow><mrow><mi>var</mi><mrow><mo>(</mo><mi>y</mi><mo>)</mo></mrow></mrow></mfrac></mrow>]]></math><img file="FDA0000696260850000021.GIF" wi="819" he="187" /></maths> (公式4)其中,Z=[Z<sub>1</sub>,Z<sub>2</sub>,...,Z<sub>k</sub>]是敏感度法的输入向量,y是神经网络输出量,y与Z的关系可表示为y=f(Z<sub>1</sub>,Z<sub>2</sub>,...,Z<sub>k</sub>),var<sub>h</sub>[E(y|Z<sub>h</sub>=α<sub>h</sub>φ<sub>h</sub>(x))]是Z<sub>h</sub>等于α<sub>h</sub>φ<sub>h</sub>(x)时对y方差的影响,var(y)是y的方差,S<sub>h</sub>是α<sub>h</sub>φ<sub>h</sub>对输出y的一阶灵敏度表示,对S<sub>h</sub>进行归一化处理:<maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><msub><mi>ST</mi><mi>h</mi></msub><mo>=</mo><mfrac><msub><mi>S</mi><mi>h</mi></msub><mrow><munderover><mi>Σ</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>K</mi></munderover><msub><mi>S</mi><mi>i</mi></msub></mrow></mfrac></mrow>]]></math><img file="FDA0000696260850000022.GIF" wi="392" he="227" /></maths> (公式5)(4)选取ε值并根据隐含层神经元输出贡献值调整神经网络结构,ε的值一般小于目标误差值,对于贡献值最大且大于ε<sub>1</sub>的隐含层神经元进行分裂,对于贡献值小于ε<sub>2</sub>的隐含层神经元进行删除,这里ε<sub>1</sub>>ε<sub>2</sub>,最终实现调整神经网络结构,定义误差目标函数为(N为训练样本数):<maths num="0006" id="cmaths0006"><math><![CDATA[<mrow><mi>E</mi><mo>=</mo><mfrac><mn>1</mn><mrow><mn>2</mn><mi>N</mi></mrow></mfrac><munderover><mi>Σ</mi><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><msubsup><mi>e</mi><mi>j</mi><mn>2</mn></msubsup></mrow>]]></math><img file="FDA0000696260850000023.GIF" wi="397" he="173" /></maths> (公式6)(5)根据目标误差函数,利用梯度下降算法来调整神经网络的隐含层神经元的输出权值、中心值和函数宽度:<maths num="0007" id="cmaths0007"><math><![CDATA[<mrow><msub><mi>a</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>t</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo>=</mo><msub><mi>a</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>-</mo><msub><mi>η</mi><mn>1</mn></msub><msub><mi>ST</mi><mi>i</mi></msub><mfrac><mrow><mo>∂</mo><mi>E</mi></mrow><mrow><msub><mrow><mo>∂</mo><mi>a</mi></mrow><mi>i</mi></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mrow></mfrac></mrow>]]></math><img file="FDA0000696260850000024.GIF" wi="847" he="168" /></maths> (公式7)<maths num="0008" id="cmaths0008"><math><![CDATA[<mrow><msub><mi>μ</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>t</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo>=</mo><msub><mi>μ</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>-</mo><msub><mi>η</mi><mn>2</mn></msub><msub><mi>ST</mi><mi>i</mi></msub><mfrac><mrow><mo>∂</mo><mi>E</mi></mrow><mrow><msub><mrow><mo>∂</mo><mi>μ</mi></mrow><mi>i</mi></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mrow></mfrac></mrow>]]></math><img file="FDA0000696260850000025.GIF" wi="846" he="157" /></maths> (公式8)<maths num="0009" id="cmaths0009"><math><![CDATA[<mrow><msub><mi>σ</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>t</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo>=</mo><msub><mi>σ</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>-</mo><msub><mi>η</mi><mn>3</mn></msub><msub><mi>ST</mi><mi>i</mi></msub><mfrac><mrow><mo>∂</mo><mi>E</mi></mrow><mrow><msub><mrow><mo>∂</mo><mi>σ</mi></mrow><mi>i</mi></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mrow></mfrac></mrow>]]></math><img file="FDA0000696260850000026.GIF" wi="847" he="156" /></maths> (公式9)其中,η<sub>1</sub>,η<sub>2</sub>,η<sub>3</sub>为参数学习步长;(6)达到期望误差或计算步骤时停止计算;D.残差修正在建立的神经网络模型的基础上,对训练样本的预测值与实际产量值对比,计算出误差序列,将误差序列作为一个马尔可夫过程,进行状态划分,以频率代替概率,计算误差状态的转移概率矩阵;E.模型验证运用检测数据集对模型进行检验,如果输出的预测值与实际对比值的误差达到了预期的期望,神经网络模型训练成功,可以利用模型对石油产量进行预测;反之,模型训练不成熟,需要重新进行训练;F.石油产量预测获取真实的预测基础数据,输入训练好的优化后的RBF神经网络中,RBF神经网络的输出即为油田产量的预测值。 |