【答案】应助回帖
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ 感谢参与,应助指数 +1 yue_shen000: 金币+40, ★★★★★ 最佳答案, 很好 2012-05-13 14:52:36 yue_shen000: 回帖置顶 2012-05-13 14:53:38 xiegangmai: 金币+2, 谢谢应助! 2012-05-13 23:09:03
CODE: %输入训练数据
input_train=[10 0.1 0.1 18 60;
10 0.1 0.1 18 70;
10 0.1 0.1 18 80;
10 0.2 0.2 24 60;
10 0.2 0.2 24 70;
10 0.2 0.2 24 80;
10 0.5 0.4 30 60;
10 0.5 0.4 30 70;
10 0.5 0.4 30 80;
13 0.1 0.1 30 60;
13 0.1 0.2 30 70;
13 0.1 0.4 30 80;
13 0.3 0.1 18 60;
13 0.2 0.2 18 70;
13 0.2 0.4 18 80;
13 0.5 0.1 24 60;
13 0.5 0.2 24 70;
13 0.5 0.4 24 80;
16 0.1 0.4 24 60;
16 0.1 0.4 24 70;
16 0.1 0.4 24 80;
16 0.2 0.1 30 60;
16 0.2 0.1 30 70;
16 0.2 0.1 30 80;
16 0.5 0.2 18 60;
16 0.5 0.2 18 70;
16 0.5 0.2 18 80]';
%训练目标向量
output_train=[0.62 0.65 0.65 0.69 0.59 0.52 0.57 0.58 0.42 0.64 0.71 0.75 0.68 0.54 0.57 0.87 0.52 0.52 0.75 0.68 0.71 0.64 0.86 0.95 0.68 0.57 0.52];
%测试样本
input_test=[10 0.5 0.2 18 80;
8 0.7 0.3 18 80;
16 0.1 0.1 30 60;
18 0.05 0.05 36 60]';
%测试目标
output_test=[0.54 0.42 0.71 0.9];
%训练数据归一化
[inputn,inputps]=mapminmax(input_train);
[outputn,outputps]=mapminmax(output_train);
%创建网络参数
net=newff(inputn,outputn,[8,8],{'tansig','purelin'},'trainlm');
net.trainparam.show=300;
net.trainparam.mc=0.9;
net.trainparam.lr=0.05;
net.trainparam.epochs=200;
net.trainparam.goal=0.001;
%BP神经网络训练
[net,tr]=train(net,inputn,outputn);
%预测数据归一化
inputn_test=mapminmax('apply',input_test,inputps);
%BP神经网络预测输出
an=sim(net,inputn_test);
%输出结果反归一化
BPoutput=mapminmax('reverse',an,outputps);
figure(1)
plot(BPoutput,'g')
hold on
plot(output_test,'-*');
legend('预测输出','期望输出')
title('BP网络预测输出','fontsize',12)
ylabel('函数输出','fontsize',12)
xlabel('样本','fontsize',12)
%预测误差
error=BPoutput-output_test;
figure(2)
plot(error,'-*')
title('BP网络预测误差','fontsize',12)
ylabel('误差','fontsize',12)
xlabel('样本','fontsize',12)
figure(3)
plot((output_test-BPoutput)./BPoutput,'-*');
title('神经网络预测误差百分比')