主权项 |
BP神经网络在S7‑300系列PLC中的实现方法,其特征在于按照以下步骤进行:第一步,在S7‑300系列PLC中定义12个数据块:数据块DB1~DB12分别存放BP神经网络迭代算式中的输入变量、隐含节点输入、隐含节点输出、输出层输入、输出变量、权值w<sub>ij</sub>、权值w<sub>jk</sub>、阈值a<sub>j</sub>、阈值b<sub>k</sub>、误差e<sub>k</sub>、学习效率η和期望输出;第二步,初始化数据块:BP神经网络样本中的输入变量传送到DB1,样本中的输出变量传送到DB12,数据块DB6和DB7中的各变量初值设为零,数据块DB8和DB9中的各变量初值设为0.05,DB11中的学习效率初值设为0.5;第三步,计算隐含层输入:分别从数据块DB1和DB6中取出x<sub>i</sub>和w<sub>ij</sub>,按下式计算隐含节点输入H<sub>Ij</sub>:<maths num="0001"><math><![CDATA[<mrow><msub><mi>H</mi><mrow><mi>I</mi><mi>j</mi></mrow></msub><mo>=</mo><munderover><mo>Σ</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><msub><mi>w</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub><msub><mi>x</mi><mi>i</mi></msub><mo>,</mo><mi>j</mi><mo>=</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>...</mo><mo>,</mo><mi>l</mi><mo>;</mo></mrow>]]></math><img file="FDA0000985696130000011.GIF" wi="773" he="161" /></maths>第四步,计算隐含层输出:分别从数据块DB2和DB8取出H<sub>Ij</sub>和a<sub>j</sub>,按下式计算隐含节点输出H<sub>Oj</sub>:<maths num="0002"><math><![CDATA[<mrow><msub><mi>H</mi><mrow><mi>O</mi><mi>j</mi></mrow></msub><mo>=</mo><mfrac><mn>1</mn><mrow><mn>1</mn><mo>+</mo><msup><mi>e</mi><mrow><mo>-</mo><mrow><mo>(</mo><msub><mi>H</mi><mrow><mi>I</mi><mi>j</mi></mrow></msub><mo>-</mo><msub><mi>a</mi><mi>j</mi></msub><mo>)</mo></mrow></mrow></msup></mrow></mfrac><mo>,</mo><mi>j</mi><mo>=</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>...</mo><mo>,</mo><mi>l</mi><mo>;</mo></mrow>]]></math><img file="FDA0000985696130000012.GIF" wi="822" he="143" /></maths>第五步,计算输出层输入:分别从数据块DB3和DB7中取出H<sub>Oj</sub>和w<sub>jk</sub>,按下式计算输出层的输入P<sub>Ik</sub>:<maths num="0003"><math><![CDATA[<mrow><msub><mi>P</mi><mrow><mi>I</mi><mi>k</mi></mrow></msub><mo>=</mo><munderover><mo>Σ</mo><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>l</mi></munderover><msub><mi>H</mi><mrow><mi>O</mi><mi>j</mi></mrow></msub><msub><mi>w</mi><mrow><mi>j</mi><mi>k</mi></mrow></msub><mo>,</mo><mi>k</mi><mo>=</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>...</mo><mo>,</mo><mi>m</mi><mo>;</mo></mrow>]]></math><img file="FDA0000985696130000021.GIF" wi="789" he="162" /></maths>第六步,计算输出层输出:分别从数据块DB4和DB9中取出P<sub>Ik</sub>和b<sub>k</sub>,按下式计算输出变量P<sub>Ok</sub>:P<sub>Ok</sub>=P<sub>Ik</sub>‑b<sub>k</sub> k=1,2,…,m;第七步,计算预测误差:分别从数据块DB5和DB12中取出P<sub>Ok</sub>和y<sub>k</sub>,按下式计算预测误差e<sub>k</sub>:e<sub>k</sub>=y<sub>k</sub>‑P<sub>Ok</sub> k=1,2,…,m;第八步,更新权值w<sub>ij</sub>和w<sub>jk</sub>:分别从数据块DB7、DB11、DB3和DB10中取出w<sub>jk</sub>、η、H<sub>Oj</sub>和e<sub>k</sub>,按下式更新权值w<sub>jk</sub>:w<sub>jk</sub>=w<sub>jk</sub>+ηH<sub>Oj</sub>e<sub>k</sub> j=1,2,…,l;k=1,2,…,m;分别从数据块DB6、DB11、DB3、DB1、DB7和DB10中取出w<sub>ij</sub>、η、H<sub>Oj</sub>、x<sub>i</sub>、w<sub>jk</sub>和e<sub>k</sub>,按下式更新权值w<sub>ij</sub>:<maths num="0004"><math><![CDATA[<mrow><msub><mi>w</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub><mo>=</mo><msub><mi>w</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub><mo>+</mo><mi>η</mi><mrow><mo>(</mo><mn>1</mn><mo>-</mo><msub><mi>H</mi><mrow><mi>O</mi><mi>j</mi></mrow></msub><mo>)</mo></mrow><msub><mi>x</mi><mi>i</mi></msub><munderover><mo>Σ</mo><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>m</mi></munderover><msub><mi>w</mi><mrow><mi>j</mi><mi>k</mi></mrow></msub><msub><mi>e</mi><mi>k</mi></msub><mo>,</mo><mi>i</mi><mo>=</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>...</mo><mo>,</mo><mi>n</mi><mo>;</mo><mi>j</mi><mo>=</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>...</mo><mo>,</mo><mi>l</mi><mo>;</mo></mrow>]]></math><img file="FDA0000985696130000022.GIF" wi="1442" he="150" /></maths>第九步,更新阈值a<sub>j</sub>和b<sub>k</sub>:分别从数据块DB6、DB11、DB3、DB7和DB10中取出w<sub>ij</sub>、η、H<sub>Oj</sub>、w<sub>jk</sub>和e<sub>k</sub>,按下式更新阈值a<sub>j</sub>:<maths num="0005"><math><![CDATA[<mrow><msub><mi>a</mi><mi>j</mi></msub><mo>=</mo><msub><mi>a</mi><mi>j</mi></msub><mo>+</mo><mi>η</mi><mrow><mo>(</mo><mn>1</mn><mo>-</mo><msub><mi>H</mi><mrow><mi>O</mi><mi>j</mi></mrow></msub><mo>)</mo></mrow><munderover><mo>Σ</mo><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mi>m</mi></munderover><msub><mi>w</mi><mrow><mi>j</mi><mi>k</mi></mrow></msub><msub><mi>e</mi><mi>k</mi></msub><mo>,</mo><mi>j</mi><mo>=</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>...</mo><mo>,</mo><mi>l</mi><mo>,</mo></mrow>]]></math><img file="FDA0000985696130000031.GIF" wi="1070" he="150" /></maths>分别从数据块DB9和DB10中取出b<sub>k</sub>和e<sub>k</sub>,按下式更新阈值b<sub>k</sub>:b<sub>k</sub>=b<sub>k</sub>+e<sub>k</sub> k=1,2,…,m;第十步,判断循环与结束:PLC系统实现的BP网络程序根据Mode标志的三种取值进行判断,Mode=0为单次迭代运行模式,Mode=1为限次迭代模式,Mode=2为误差限运行模式。 |