发明名称 一种基于神经网络的气阀自适应控制方法
摘要 本发明公开了基于神经网络的气阀自适应控制方法,本发明包括纬纱到达时间观测器和纬纱到达时间目标、学算法、BP神经网络NN、被控对象(气阀)。本发明基于神经网络的气阀自适应控制方法让喷气织机的引纬能够自适应能力各种纬纱织造,与传统喷气织机引纬控制方式相比,使得不同特性的纬纱混织的情况下变得非常方便,同时也不用特地浪费大量压缩空气来调大喷嘴开启时间,起到节能环保的功效。
申请公布号 CN103941587A 申请公布日期 2014.07.23
申请号 CN201410160141.X 申请日期 2014.04.21
申请人 杭州坦诺电气自动化有限公司 发明人 李波;金崇程;章永亮;高明煜;王亮;吕程辉;戴岳尧
分类号 G05B13/04(2006.01)I 主分类号 G05B13/04(2006.01)I
代理机构 杭州求是专利事务所有限公司 33200 代理人 杜军
主权项 本发明一种基于神经网络的气阀自适应控制方法,其特征在于,该方法具体包括以下步骤:步骤(1):事先选定BP神经网络NN的结构,即选定输入层节点数M、隐含层节点数Q和输出层节点数N,并给出各层加权系数的初值<img file="FDA0000494002520000011.GIF" wi="371" he="98" />选定学习速率η和惯性系数a;k=1;步骤(2):设定纬纱到达时间目标值r(k),并通过纬纱到达时间观测器获得实际纬纱到达时间y(k),计算时间偏差e(k)=r(k)-y(k);步骤(3):对时间偏差e(k)进行归一化处理,作为BP神经网络NN的输入层节点的输入;其中BP神经网络NN的输入层节点的输入、输出为<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><msubsup><mi>O</mi><mi>j</mi><mn>1</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><msub><mi>X</mi><mi>j</mi></msub><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>,</mo><mrow><mo>(</mo><mi>j</mi><mo>=</mo><mn>0,1</mn><mo>.</mo><mo>.</mo><mo>.</mo><mi>M</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000494002520000012.GIF" wi="756" he="99" /></maths>  式(1)式中:j为输入层节点序号,X<sub>j</sub>(k)为归一化处理后的时间偏差;步骤(4):前向计算BP神经网络NN的隐含层神经元的输入和输出;其中BP神经网络NN的隐含层的输入<img file="FDA0000494002520000013.GIF" wi="184" he="93" />和输出<img file="FDA0000494002520000014.GIF" wi="142" he="93" />分别为<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mfenced open='' close='}'><mtable><mtr><mtd><msubsup><mi>net</mi><mi>i</mi><mn>2</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>M</mi><mo>-</mo><mn>1</mn></mrow></munderover><msubsup><mi>w</mi><mi>ij</mi><mn>2</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><msubsup><mi>O</mi><mi>j</mi><mn>1</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msubsup><mi>O</mi><mi>i</mi><mn>2</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><mi>f</mi><mo>[</mo><msubsup><mi>net</mi><mi>i</mi><mn>2</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>]</mo></mtd></mtr></mtable></mfenced><mrow><mo>(</mo><mi>i</mi><mo>=</mo><mn>0,1</mn><mo>.</mo><mo>.</mo><mo>.</mo><mi>Q</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000494002520000015.GIF" wi="957" he="257" /></maths>  式(2)式中:i为隐含层节点序号,<img file="FDA00004940025200000111.GIF" wi="122" he="75" />为隐含层加权系数;f[·]为活化函数,f[·]=tanh(k);步骤(5):前向计算BP神经网络NN的输出层神经元的输入和输出;其中BP神经网络NN的输出层的输入<img file="FDA0000494002520000016.GIF" wi="192" he="92" />和输出<img file="FDA0000494002520000017.GIF" wi="140" he="92" />分别为<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><mfenced open='' close='}'><mtable><mtr><mtd><msubsup><mi>net</mi><mi>l</mi><mn>3</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>Q</mi><mo>-</mo><mn>1</mn></mrow></munderover><msubsup><mi>w</mi><mi>li</mi><mn>3</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><msubsup><mi>O</mi><mi>i</mi><mn>2</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msubsup><mi>O</mi><mi>l</mi><mn>3</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><mi>g</mi><mo>[</mo><msubsup><mi>net</mi><mi>l</mi><mn>3</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>]</mo></mtd></mtr></mtable></mfenced><mrow><mo>(</mo><mi>l</mi><mo>=</mo><mn>0,1</mn><mo>.</mo><mo>.</mo><mo>.</mo><mi>N</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000494002520000018.GIF" wi="981" he="254" /></maths>  式(3)式中:l为输出层节点序号,<img file="FDA0000494002520000019.GIF" wi="139" he="93" />为输出层加权系数;g[·]为活化函数,<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><mi>g</mi><mo>[</mo><mo>&CenterDot;</mo><mo>]</mo><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>[</mo><mn>1</mn><mo>+</mo><mi>tanh</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>]</mo><mo>;</mo></mrow>]]></math><img file="FDA00004940025200000110.GIF" wi="442" he="132" /></maths>步骤(6):计算控制输出u(k),参与气阀开启时间的控制和计算;<img file="FDA0000494002520000021.GIF" wi="787" he="108" />式(4)式中:u[·]=a+bx;步骤(7):进行神经网络学习,在线调整输出层的加权系数<img file="FDA0000494002520000022.GIF" wi="136" he="90" />和隐含层的加权系数<img file="FDA0000494002520000023.GIF" wi="171" he="96" />进而实现气阀的自适应控制;<img file="FDA0000494002520000024.GIF" wi="601" he="99" />首先取性能指标函数为:<maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><mi>E</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><msup><mrow><mo>[</mo><mi>r</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>-</mo><mi>y</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>]</mo><mo></mo></mrow><mn>2</mn></msup><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><msup><mi>e</mi><mn>2</mn></msup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000494002520000025.GIF" wi="734" he="132" /></maths>  式(5)依最速下降法修正网络的加权系数,即按E(k)对加权系数的负梯度方向搜索调整,并附加一使搜索快速收敛全局极小的惯性项<maths num="0006" id="cmaths0006"><math><![CDATA[<mrow><msubsup><mi>&Delta;w</mi><mi>li</mi><mn>3</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><mo>-</mo><mi>&eta;</mi><mfrac><mrow><mo>&PartialD;</mo><mi>E</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mrow><mrow><msubsup><mrow><mo>&PartialD;</mo><mi>w</mi></mrow><mi>li</mi><mn>3</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mrow></mfrac><mo>+</mo><mi>a</mi><msubsup><mi>&Delta;w</mi><mi>li</mi><mn>3</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000494002520000026.GIF" wi="775" he="172" /></maths>  式(6)式中:η为学习速率,a为惯性系数;<maths num="0007" id="cmaths0007"><math><![CDATA[<mrow><mfrac><mrow><mo>&PartialD;</mo><mi>E</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mrow><mrow><msubsup><mrow><mo>&PartialD;</mo><mi>w</mi></mrow><mi>li</mi><mn>3</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mrow></mfrac><mo>=</mo><mfrac><mrow><mo>&PartialD;</mo><mi>E</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mrow><mrow><mo>&PartialD;</mo><mi>y</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mrow></mfrac><mfrac><mrow><mo>&PartialD;</mo><mi>y</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mrow><mrow><mo>&PartialD;</mo><mi>u</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mrow></mfrac><mfrac><mrow><mo>&PartialD;</mo><mi>u</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mrow><mrow><mo>&PartialD;</mo><msubsup><mi>O</mi><mi>l</mi><mn>3</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mrow></mfrac><mfrac><mrow><msubsup><mrow><mo>&PartialD;</mo><mi>O</mi></mrow><mi>l</mi><mn>3</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mrow><mrow><mo>&PartialD;</mo><msubsup><mi>net</mi><mi>l</mi><mn>3</mn></msubsup></mrow></mfrac><mfrac><mrow><msubsup><mrow><mo>&PartialD;</mo><mi>net</mi></mrow><mi>l</mi><mn>3</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mrow><mrow><mo>&PartialD;</mo><msubsup><mi>w</mi><mi>li</mi><mn>3</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mrow></mfrac></mrow>]]></math><img file="FDA0000494002520000027.GIF" wi="1096" he="169" /></maths>  式(7)由于<img file="FDA0000494002520000028.GIF" wi="130" he="157" />未知,所以近似用符号函数<img file="FDA0000494002520000029.GIF" wi="254" he="161" />取代,由此带来的计算不精确的影响可以通过调整学习速率η来补偿,根据式(3)和式(4),则有<maths num="0008" id="cmaths0008"><math><![CDATA[<mfenced open='' close='}'><mtable><mtr><mtd><mfrac><mrow><mo>&PartialD;</mo><mi>E</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mrow><mrow><mo>&PartialD;</mo><mi>y</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mrow></mfrac><mo>=</mo><mo>-</mo><mi>e</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mfrac><mrow><msubsup><mrow><mo>&PartialD;</mo><mi>net</mi></mrow><mi>l</mi><mn>3</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mrow><mrow><msubsup><mrow><mo>&PartialD;</mo><mi>w</mi></mrow><mi>li</mi><mn>3</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mrow></mfrac><mo>=</mo><msubsup><mi>O</mi><mi>i</mi><mn>2</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mtd></mtr><mtr><mtd><mfrac><mrow><mo>&PartialD;</mo><mi>u</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mrow><mrow><msubsup><mrow><mo>&PartialD;</mo><mi>O</mi></mrow><mi>l</mi><mn>3</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mrow></mfrac><mo>=</mo><mi>b</mi></mtd></mtr></mtable></mfenced>]]></math><img file="FDA00004940025200000210.GIF" wi="438" he="506" /></maths>  式(8)因此可得BP神经网络NN输出层的加权系数的学习算法为:<maths num="0009" id="cmaths0009"><math><![CDATA[<mrow><mfenced open='' close='}'><mtable><mtr><mtd><msubsup><mi>w</mi><mi>li</mi><mn>3</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><msubsup><mi>w</mi><mi>li</mi><mn>3</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>+</mo><msubsup><mi>&Delta;w</mi><mi>li</mi><mn>3</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msubsup><mi>&Delta;w</mi><mi>li</mi><mn>3</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><msubsup><mi>&eta;&delta;</mi><mi>l</mi><mn>3</mn></msubsup><msubsup><mi>O</mi><mi>i</mi><mn>2</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>+</mo><mi>a&Delta;</mi><msubsup><mi>w</mi><mi>li</mi><mn>3</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msubsup><mi>&delta;</mi><mi>l</mi><mn>3</mn></msubsup><mo>=</mo><mi>be</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mi>sgn</mi><mrow><mo>(</mo><mfrac><mrow><mo>&PartialD;</mo><mi>y</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mrow><mrow><mo>&PartialD;</mo><mi>u</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mrow></mfrac><mo>)</mo></mrow><msup><mi>g</mi><mo>&prime;</mo></msup><mo>[</mo><msubsup><mi>net</mi><mi>l</mi><mn>3</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>]</mo></mtd></mtr></mtable></mfenced><mrow><mo>(</mo><mi>l</mi><mo>=</mo><mn>0,1</mn><mo>.</mo><mo>.</mo><mo>.</mo><mi>N</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA00004940025200000211.GIF" wi="1182" he="337" /></maths>  式(9)式中:<img file="FDA0000494002520000031.GIF" wi="76" he="92" />为输出层节点的误差,g'[·]=g(x)[1‑g(x)];依据上述计算修正输出层的加权系数的推算办法,可得隐含层加权系数的学习算法为:<maths num="0010" id="cmaths0010"><math><![CDATA[<mrow><mfenced open='' close='}'><mtable><mtr><mtd><msubsup><mi>w</mi><mi>ij</mi><mn>2</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><msubsup><mi>w</mi><mi>ij</mi><mn>2</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>+</mo><msubsup><mi>&Delta;w</mi><mi>ij</mi><mn>2</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msubsup><mi>&Delta;w</mi><mi>ij</mi><mn>2</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><msubsup><mi>&eta;&delta;</mi><mi>i</mi><mn>2</mn></msubsup><msubsup><mi>O</mi><mi>j</mi><mn>1</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>+</mo><mi>a&Delta;</mi><msubsup><mi>w</mi><mi>ij</mi><mn>2</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msubsup><mi>&delta;</mi><mi>i</mi><mn>2</mn></msubsup><mo>=</mo><msup><mi>f</mi><mo>&prime;</mo></msup><mo>[</mo><msubsup><mi>net</mi><mi>i</mi><mn>2</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>]</mo><munderover><mi>&Sigma;</mi><mrow><mi>l</mi><mo>=</mo><mn>0</mn></mrow><mn>2</mn></munderover><msubsup><mi>&delta;</mi><mi>l</mi><mn>3</mn></msubsup><msubsup><mi>w</mi><mi>li</mi><mn>3</mn></msubsup><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mtd></mtr></mtable></mfenced><mrow><mo>(</mo><mi>i</mi><mo>=</mo><mn>0.1</mn><mo>.</mo><mo>.</mo><mo>.</mo><mi>Q</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000494002520000032.GIF" wi="1174" he="339" /></maths>  式(10)式中:<img file="FDA0000494002520000033.GIF" wi="79" he="92" />为隐含层节点的误差,<maths num="0011" id="cmaths0011"><math><![CDATA[<mrow><msup><mi>f</mi><mo>&prime;</mo></msup><mo>[</mo><mo>&CenterDot;</mo><mo>]</mo><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>[</mo><mn>1</mn><mo>-</mo><msup><mi>f</mi><mn>2</mn></msup><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>]</mo><mo>,</mo><mrow><mo>(</mo><mi>i</mi><mo>=</mo><mn>0,1</mn><mo>.</mo><mo>.</mo><mo>.</mo><mn>6</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000494002520000034.GIF" wi="723" he="128" /></maths>步骤(8):置k=k+1,重复步骤(2)~(8)直至输出层得到期望的输出值为止;上式(1)~(10)中的上角标1、2、3分别代表输入层、隐含层、输出层。
地址 310053 浙江省杭州市滨江区浦沿街道西浦路1503号滨科大厦406室