BP網(wǎng)絡在蓄電池電壓監(jiān)測單元中的應用
4.2 激活函數(shù):
BP網(wǎng)絡中神經(jīng)元的激活函數(shù)是非線性的,且必須是連續(xù)可微和單調(diào)上升的有界函數(shù)。輸入/輸出關(guān)系也是為非線性,其值可連續(xù)變化。隱含層采用雙曲正切S型激活函數(shù),輸出層采用線性激活函數(shù)。
隱含層神經(jīng)元數(shù)設(shè)為i (i=8) , 其中第i個神經(jīng)元的輸出為
BP網(wǎng)絡,輸入為某一溫度值,輸出是測量電壓值的基準值,將其和實際測量的蓄電池浮充電壓比較,若超出允許范圍則報警。
T代表溫度,V代表測量電壓值的基準值。
實際工作溫度是0oC至41oC,訓練時0至41的數(shù)據(jù)造成網(wǎng)絡訓練困難,所以改為-20至20,只要加上20就是實際溫度值。
將蓄電池制造廠提供的數(shù)據(jù)分為兩個集合,
訓練集(如圖3)是:
輸入矩陣T = -20: 2 : 20;
輸出矩陣V
V==[14.4,14.38,14.32,14.24,14.18,14.12,14.04,13.98,13.92,13.86,13.78,13.72,13.66,13.58,13.52,13.46,13.38,13.32,13.26,13.2,13.2];14.4,14.38,14.32,14.24,14.18,14.12,14.04,13.98,13.92,13.86,13.78,13.72,13.66,13.58,13.52,13.46,13.38,13.32,13.26,13.2,13.2];
用Matlab語言編寫訓練程序,網(wǎng)絡訓練過程:
首先設(shè)定參數(shù)如下:
max_epoch = 30000;
err_goal = 0.002;
程序運行結(jié)果:
TRAINBP: 30000/30000 epochs, SSE = 0.00260954.
W1 =[-0.1094 -0.1207 -1.0054 -0.9631 1.5095 0.4468 1.7631 0.9540] T
B1 =[-1.2748 1.2489 0.4120 0.1571 -0.6891 0.9935 -1.5833 0.0657] T
W2 =[0.3228 0.2993 -0.0883 0.2113 1.0839 -0.0217 -0.7304 -0.2670]
B2 =13.8159
Unsuccessfully.網(wǎng)絡訓練不成功。
用得到的W1,B1,W2,B2再次訓練……直到
err_goal =0.0015 successfully
得到:
W1 =[-0.1094 -0.1207 -1.0054 -0.9631 1.5095 0.4468 1.7631 0.9540] T
B1 =[1.2748 1.2489 0.4120 0.1571 -0.6891 0.9935 -1.5833 0.0657] T
W2 =[0.3228 0.2993 -0.0883 0.2113 1.0839 -0.0217 -0.7304 -0.2670]
B2 =13.8159
評論