发明名称 基于灰色神经网络的爆管预测方法
摘要 本发明公开了一种基于灰色神经网络的爆管预测方法。本发明首先,对于给定的爆管因素和爆管率数据序列,通过静态灰色建模,对爆管率序列进行预测。预测结果和原爆管率序列进行比较,得到残差。然后,利用神经网络在这些残差和爆管因素间建立神经网络逼近模型。经过反复训练的神经网络就是残差和所选的灰色模型数据间的映射关系。最后预测时,再将灰色模型的预测值用神经网络的补偿值进行补偿。本发明结合灰色建模方法和神经网络模型建立灰色神经网络模型,克服传统爆管模型需要大量的数据的缺点,能较好的解决小样本预测问题,提高预测精度。
申请公布号 CN103258243B 申请公布日期 2016.11.30
申请号 CN201310151844.1 申请日期 2013.04.27
申请人 杭州电子科技大学 发明人 徐哲;杨洁;车栩龙;孔亚广;薛安克
分类号 G06Q10/04(2012.01)I 主分类号 G06Q10/04(2012.01)I
代理机构 杭州君度专利代理事务所(特殊普通合伙) 33240 代理人 杜军
主权项 基于灰色神经网络的爆管预测方法,其特征在于该方法包括以下步骤:步骤(1)收集爆管因素、整理统计爆管数据并计算爆管率,所述的爆管数据为可量化的爆管因素,包括管径、埋深、管网运行压力和管长;步骤(2)建立GM(0,N)模型;基于步骤(1)收集统计的N‑1个爆管因素和1个爆管率λ,建立以N‑1个爆管因素为因子变量,以爆管率为行为变量的GM(0,N)模型,具体步骤如下:1)设<img file="FDA0001023216890000011.GIF" wi="672" he="63" />为系统特征数据序列,此序列表示行为变量的n个观测值;<maths num="0001"><math><![CDATA[<mrow><msubsup><mi>X</mi><mn>2</mn><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></msubsup><mo>=</mo><mo>{</mo><msubsup><mi>x</mi><mn>2</mn><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>,</mo><msubsup><mi>x</mi><mn>2</mn><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow><mo>,</mo><mo>...</mo><mo>,</mo><msubsup><mi>x</mi><mn>2</mn><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>}</mo></mrow>]]></math><img file="FDA0001023216890000012.GIF" wi="670" he="63" /></maths><maths num="0002"><math><![CDATA[<mrow><msubsup><mi>X</mi><mn>3</mn><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></msubsup><mo>=</mo><mo>{</mo><msubsup><mi>x</mi><mn>3</mn><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>,</mo><msubsup><mi>x</mi><mn>3</mn><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow><mo>,</mo><mo>...</mo><mo>,</mo><msubsup><mi>x</mi><mn>3</mn><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>}</mo></mrow>]]></math><img file="FDA0001023216890000013.GIF" wi="670" he="64" /></maths>...... ...... ...... ...... ......<maths num="0003"><math><![CDATA[<mrow><msubsup><mi>X</mi><mi>N</mi><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></msubsup><mo>=</mo><mo>{</mo><msubsup><mi>x</mi><mi>N</mi><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>,</mo><msubsup><mi>x</mi><mi>N</mi><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow><mo>,</mo><mo>...</mo><mo>,</mo><msubsup><mi>x</mi><mi>N</mi><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>}</mo></mrow>]]></math><img file="FDA0001023216890000014.GIF" wi="670" he="63" /></maths>这N‑1个序列称为相关因素序列,表示N‑1个因子变量各自的n个观测值;上述各数据序列的一次累加生成1‑AGO序列记为<img file="FDA0001023216890000015.GIF" wi="109" he="59" />i=1,2,…,N,所谓一次累加生成即:设<img file="FDA0001023216890000016.GIF" wi="675" he="62" />为原始序列,D为序列算子<img file="FDA0001023216890000017.GIF" wi="829" he="65" />其中<img file="FDA0001023216890000018.GIF" wi="699" he="129" />称D为<img file="FDA0001023216890000019.GIF" wi="84" he="58" />的一次累加生成算子,而生成的新的序列<img file="FDA00010232168900000110.GIF" wi="80" he="61" />为一次累加生成序列;2)基于序列<img file="FDA00010232168900000111.GIF" wi="80" he="59" />建立模型<maths num="0004"><math><![CDATA[<mrow><msubsup><mi>x</mi><mn>1</mn><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mn>2</mn></mrow><mi>N</mi></munderover><msub><mi>b</mi><mi>i</mi></msub><msubsup><mi>x</mi><mi>i</mi><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>+</mo><mi>a</mi></mrow>]]></math><img file="FDA00010232168900000112.GIF" wi="486" he="127" /></maths>其中参数列<img file="FDA00010232168900000113.GIF" wi="422" he="58" />可用最小二乘估计而得到为<img file="FDA00010232168900000114.GIF" wi="371" he="58" />其中:<maths num="0005"><math><![CDATA[<mfenced open = "" close = ""><mtable><mtr><mtd><mrow><mi>B</mi><mo>=</mo><mfenced open = "[" close = "]"><mtable><mtr><mtd><mrow><msubsup><mi>x</mi><mn>2</mn><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow></mtd><mtd><mrow><msubsup><mi>x</mi><mn>3</mn><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow></mtd><mtd><mo>...</mo></mtd><mtd><mrow><msubsup><mi>x</mi><mi>N</mi><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><mrow><msubsup><mi>x</mi><mn>2</mn><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow></mtd><mtd><mrow><msubsup><mi>x</mi><mn>3</mn><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow></mtd><mtd><mo>...</mo></mtd><mtd><mrow><msubsup><mi>x</mi><mi>N</mi><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><mo>...</mo></mtd><mtd><mo>...</mo></mtd><mtd><mo>...</mo></mtd><mtd><mo>...</mo></mtd></mtr><mtr><mtd><mrow><msubsup><mi>X</mi><mn>2</mn><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow></mtd><mtd><mrow><msubsup><mi>x</mi><mn>3</mn><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow></mtd><mtd><mo>...</mo></mtd><mtd><mrow><msubsup><mi>x</mi><mi>N</mi><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mfenced></mrow></mtd><mtd><mrow><mi>Y</mi><mo>=</mo><mfenced open = "[" close = "]"><mtable><mtr><mtd><mrow><msubsup><mi>x</mi><mn>1</mn><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><mrow><msubsup><mi>x</mi><mn>1</mn><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mo>&CenterDot;</mo></mtd></mtr><mtr><mtd><mrow><msubsup><mi>x</mi><mn>1</mn><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mfenced></mrow></mtd></mtr></mtable></mfenced>]]></math><img file="FDA0001023216890000021.GIF" wi="941" he="327" /></maths>3)应用步骤2)中第2)步模型进行检测,得到预测的行为变量序列为:<maths num="0006"><math><![CDATA[<mrow><msubsup><mover><mi>X</mi><mo>^</mo></mover><mn>1</mn><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></msubsup><mo>=</mo><mo>{</mo><msubsup><mover><mi>x</mi><mo>^</mo></mover><mn>1</mn><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>,</mo><msubsup><mover><mi>x</mi><mo>^</mo></mover><mn>1</mn><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow><mo>,</mo><mo>...</mo><mo>,</mo><msubsup><mover><mi>x</mi><mo>^</mo></mover><mn>1</mn><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>}</mo></mrow>]]></math><img file="FDA0001023216890000022.GIF" wi="654" he="68" /></maths>通过以上步骤,就建立了以N‑1个爆管因素为因子变量,以爆管率为行为变量的GM(0,N)模型;步骤(3)建立神经网络模型;将一次累加的相关因素序列<img file="FDA0001023216890000023.GIF" wi="79" he="58" />作为BP神经网络的输入,由GM(0,N)模型预测得到的特征序列<img file="FDA0001023216890000024.GIF" wi="79" he="64" />与一次累加的特征数据序列<img file="FDA0001023216890000025.GIF" wi="81" he="59" />的残差序列E={e(1),e(2),…e(n)}作为网络的输出,其中<img file="FDA0001023216890000026.GIF" wi="478" he="68" />建立BP神经网络模型;首先,为了避免隐含层某神经元处于饱和状态以及数据间数量级的差异,保证网络对样本具有足够的输入敏感性和良好的拟合性,在对BP神经网络进行训练之前,要对学习祥本数据进行预处理;即对所有数据进行归一化处理,将样本数据转化为[‑1,1]区间上的值;在使用经过学习后的网络时,对网络的输出数据还应进行反归一化,恢复最终预测值;归一化的具体算法是:<maths num="0007"><math><![CDATA[<mrow><mi>p</mi><mi>n</mi><mo>=</mo><mfrac><mrow><mn>2</mn><mrow><mo>(</mo><mi>p</mi><mo>-</mo><msub><mi>min</mi><mi>p</mi></msub><mo>)</mo></mrow></mrow><mrow><mo>(</mo><msub><mi>max</mi><mi>p</mi></msub><mo>-</mo><msub><mi>min</mi><mi>p</mi></msub><mo>)</mo></mrow></mfrac><mo>-</mo><mn>1</mn></mrow>]]></math><img file="FDA0001023216890000027.GIF" wi="491" he="143" /></maths>式中p表示所收集的一组数据;min<sub>p</sub>表示这组数据中的最小值;max<sub>p</sub>表示这组数据中的最大值;pn表示映射后的数据;反归一化具体算法是:<maths num="0008"><math><![CDATA[<mrow><mi>p</mi><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>&lsqb;</mo><mrow><mo>(</mo><msub><mi>max</mi><mi>p</mi></msub><mo>-</mo><msub><mi>min</mi><mi>p</mi></msub><mo>)</mo></mrow><mo>+</mo><mn>1</mn><mo>&rsqb;</mo><mo>+</mo><msub><mi>min</mi><mi>p</mi></msub></mrow>]]></math><img file="FDA0001023216890000028.GIF" wi="664" he="111" /></maths>然后,应用Matlab中的工具箱用基本的反向传播算法来训练网络,以得到隐含层和输出层相应的权值;这样,经过反复训练的神经网络就是残差序列和一次累加爆管相关因素序列的映射关系;步骤(4)预测爆管率;预测时,先将GM(0,N)模型的预测值<img file="FDA0001023216890000029.GIF" wi="77" he="67" />用神经网络的补偿值<img file="FDA00010232168900000210.GIF" wi="35" he="50" />进行误差补偿,以得到预测值<img file="FDA0001023216890000031.GIF" wi="336" he="78" />然后进行一次累减生成得到<maths num="0009"><math><![CDATA[<mrow><msubsup><mover><mover><mi>X</mi><mo>&OverBar;</mo></mover><mo>^</mo></mover><mn>1</mn><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></msubsup><mo>=</mo><mo>{</mo><msubsup><mover><mover><mi>X</mi><mo>&OverBar;</mo></mover><mo>^</mo></mover><mn>1</mn><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>,</mo><msubsup><mover><mover><mi>X</mi><mo>&OverBar;</mo></mover><mo>^</mo></mover><mn>1</mn><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow><mo>,</mo><mo>...</mo><mo>,</mo><msubsup><mover><mover><mi>X</mi><mo>&OverBar;</mo></mover><mo>^</mo></mover><mn>1</mn><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>}</mo></mrow>]]></math><img file="FDA0001023216890000032.GIF" wi="684" he="80" /></maths>所谓一次累减生成即:设<img file="FDA0001023216890000033.GIF" wi="692" he="71" />为原始序列D为序列算子<img file="FDA0001023216890000034.GIF" wi="816" he="71" />其中<maths num="0010"><math><![CDATA[<mrow><msubsup><mi>x</mi><mi>i</mi><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mi>d</mi><mo>=</mo><msubsup><mi>x</mi><mi>i</mi><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>-</mo><msubsup><mi>x</mi><mi>i</mi><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></msubsup><mrow><mo>(</mo><mi>k</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>;</mo><mi>k</mi><mo>=</mo><mn>2</mn><mo>,</mo><mn>3</mn><mo>,</mo><mo>...</mo><mi>n</mi></mrow>]]></math><img file="FDA0001023216890000035.GIF" wi="854" he="71" /></maths>称D为<img file="FDA0001023216890000036.GIF" wi="84" he="59" />的一次累加生成算子,记为1‑IAGO;至此,经过步骤(1),(2),(3),(4),就建立了灰色神经网络的供水管网爆管预测模型。
地址 310018 浙江省杭州市下沙高教园区2号大街