我目前正在使用MATLAB神经网络工具优化加热器性能的项目,我阅读了手册并从MATLAB手册获得了指导。 我已经配置了网络并进行了测试,我需要的是两点: 我在正确的轨道上吗?我的网络是否正确?我需要专家的建议 2.我需要(优化)加热器的性能,我已经定义了我的功能,但我不知道如何在功能优化中集成网络。 我的网络如下 3输入x1 x2 x3 一出一个
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 :(得分:1)
以下是一些建议:
(A)使用feedforwardnet,因为不推荐使用newff
(B)绘制训练,测试数据和网络结果,以便更容易地看到正在发生的事情。
(C)通过编写[20 20 20],您的网络有3个隐藏层。绝大多数问题只需要1个隐藏层。只有当所有其他途径都已耗尽时,才能移动到多个隐藏层。
(D)首先在训练数据上测试网络(即sim
命令)。这是对神经网络的“简单”测试,应该在您继续前进行。然后,您可以使用测试数据(网络未经过培训)对其进行测试。这将显示网络是否已经推广了它正在尝试学习的数据的形状
验证也是帮助网络概括的另一个重要因素。如果您查看matlab神经网络训练窗口(nntraintool)并单击“性能”,其中一个图形应标记为“验证”。
关于您的具体问题:
1.我的网络是否正确? - 没有看到数据集很难说
2.优化加热器的性能 - 在简单的水平上,您将拥有一个输出神经元,数字在0和1之间,表示加热器性能。然后,输入神经元包含所涉及的任何其他参数
但现在,只要有任何输入组合,网络就只能预测性能。它将无法告诉您哪些输入将为您提供最大输出。对于只有3个输入,具有低分辨率/粒度,您可以尝试详尽/强力搜索。否则,研究遗传算法以快速找到一个好的解决方案。