MATLAB: Not getting good results while simulation in NNTOOL

Deep Learning Toolboxneural network

hello sir, i am using nntool of matlab for my prediction my application is to forecast water demand based on previous consumption. year month day net supply 2003 1 1 2900 2003 1 1 2915 . .
2010 12 31 3400.
my input matrix has 3 inputs month day and date and output matrix is simply net supply.i have trained my network using
nntool i got good results in training,validation and testing.ie(0.93).but when i try to simulate the network using nntool to forecast the consumption
for 2011 year i am not getting good results.
i mean if the actual consumption on 1st jan 2011 is 3400 i am getting it as 2900.
can you give me any sugession how to improve the results.

Best Answer

continued ...
You should scale and center the data. zero-mean/unit-variance inputs with tansig hidden node activation units are recommended..
help prestd
doc prestd
similarly for trastd and poststd.
>%creating network
Initialize the uniform random number generator RAND so that
you can duplicate the results if necessary.
> net=newff(minmax(x),[3,12,1],{'logsig','logsig','purelin'},'trainlm');
Do not include the number of input nodes. That info is obtained
from minmax(x)
>net.performFcn = 'mse';
Delete. It is a default value.
>net.trainParam.goal = 1e-4;
Use a better informed choice that takes the data scaling into account..
>net.trainParam.min_grad = 1e-20;
>net.trainParam.epochs = 5000;
Where did you get these values?
Use as many defaults of newff as possible.
help newff
doc newff
>net=init(net);
Delete. NEWFF is self-initializing.
>net=train(net,x,y);
>z=sim(net,x);
Use the multiple output option.
>test=sim(net,a);
%%%%%%%%%%%%%%%%%%%%%%
MSEtrn00 = mse(y-mean(y)) % Naive Constant Model
MSEgoal = MSEtrn00/100 % R^2 >= 0.99
state0 = 0 % Any integer < 2^32-1
rand('state',state0) % help RAND
net = newff(minmax(x),[12 3]);
net.trainParam.goal = MSEgoal;
[ net tr Y E] = train(net,x,y); % help TRAIN, help TRAINLM
MSEtrn = tr.perf(end) % = mse(y-Y)
R2trn = 1-MSEtrn/MSEtrn00
MSEtst00 = mse(b-mean(b))
tst = sim(net,a); % test is not a good name
MSEtst = mse(b-tst);
R2tst = 1-MSEtst/MSEtst00
% %evaluating errors
-----SNIP
>i tried with 10-30 neurons but the result is not good
>can you tell where its going wrong
Implement a double loop over choice of H and creation of a
number of nets for each value of H.
Hope this helps.
Greg