2014-03-06 171 views
0

我的一個項目目前正在使用MATLAB神經網絡工具來優化加熱器性能,我閱讀手冊,並得到了MATLAB手冊中的指導。 我配置了網絡並進行了測試,我需要的是兩點: 1.我在正確的軌道上嗎?我的網絡是否正確?我需要專家建議 2.我需要(優化)加熱器的性能,我已經定義了我的功能,但我不知道如何將網絡集成到功能的優化中。 我的網絡是如下 3個輸入X1 X2 X3 一個出放MATLAB神經網絡諮詢

我已經使用
load input1 
load input2 
load input3 

x1= importdata('input1.txt'); (similar the other inputs and output) 
[x1n,x1min,x1max]=norm_nn(x1); (I worte my own normalization function) 
IN=[x1n x2n x3n]'; 
OUT=[y1n]'; 
INTRAIN = IN(:,1:1307); 
OUTTRAIN = OUT(:,1:1307); 
INTEST =IN(:,1308 : 1634); 
OUTTEST = OUT(:,1308:1634); 
NETWORKNet1 = newff(IN,OUT,[20 20 20], {'tansig' 'tansig' }, 'trainbr'); 
net = init (NETWORKNet1); 
NETWORKNet1 = trainbr(NETWORKNet1,INTRAIN,OUTTRAIN); 
YtestNwt1 = sim(NETWORKNet1,INTEST); 
y1testd=denorm_nn7(YtestNet1(1,:),y1min,y1max); 
e1=er8(y1testd,y1(1308:1634)); 
save Net1 

(1634個數據點,把它用於訓練(80%)和試驗(20%))

+0

你爲什麼要選擇???? – Shai

回答

1

這裏有一些建議:

(A)使用feedforwardnet作爲newff已被棄用

(B)畫出的訓練,測試數據和網絡的結果,使其更容易想象這是怎麼回事。

(C)通過寫[20 20 20]網絡中有3個隱藏層。絕大多數問題只需要一個隱藏層。只有在所有其他途徑都已耗盡的情況下,才能移動到多個隱藏層。

(d)第一測試對訓練數據的網絡(即,sim命令)。這是一個神經網絡的「簡單」測試,在繼續前應先做好工作。然後您可以使用測試數據(網絡未經過培訓)進行測試。這將顯示網絡是否已經概括了它試圖學習的數據的形狀。
驗證也是幫助網絡推廣的另一個重要因素。如果您查看matlab神經網絡訓練窗口(nntraintool)並單擊「性能」,其中一個圖應標記爲「驗證」。

關於你提到的具體問題:
1。是我的網絡是否正確? - 很難說沒有看到數據集。
2.優化加熱器的性能 - 在一個簡單的水平你將有一個單一的輸出神經元,0和1之間的數,其表示加熱器性能。輸入神經元包含任何其他參數。
但是現在,網絡只能預測性能將會是什麼,給定任何輸入組合。它無法告訴你哪些輸入會給你最大輸出。只有3個輸入,低分辨率/粒度,你可以嘗試一個窮舉/暴力搜索。否則,請查看遺傳算法以快速找到一個好的解決方案。

+0

感謝您的回答,我想我會使用遺傳算法優化部分 – user3355298