Clear Filters
Clear Filters

problem with closeloop narx

1 view (last 30 days)
FRANCISCO
FRANCISCO on 30 Jan 2013
I am spanish and i can't writte well english but i will try explain my problem. I want to create a RED NARX for predict values of future. I imported two records (inputs) and (targets). I prepared data with command preparets and i create the narxnet with one delay and 16 hiddenlayers. After, i train narxnet and simulated the data i got the outputs. But this outputs are delayed and i want values in future for example one day. I must use closeloop for obtain data in future. My problem is how iterate twice with closeloop because i does not got targets in future. how as would be the code of this part (closeloop) for iterate two times.
Many thanks
  2 Comments
Greg Heath
Greg Heath on 31 Jan 2013
I hope you mean one hidden layer with 16 hidden nodes.
Greg
FRANCISCO
FRANCISCO on 31 Jan 2013
Yes, my code is: xlsread p xlsread t
p1=p' t1=t'
inputSeries = tonndata(pn,true,false); targetSeries = tonndata(tn,true,false);
% Create a Nonlinear Autoregressive Network with External Input
net = narxnet(inputDelays,feedbackDelays,hiddenLayerSize);
% Prepare the Data for Training and Simulation [inputs,inputStates,layerStates,targets] = preparets(net,inputSeries,{},targetSeries);
% Train the Network [net,tr] = train(net,inputs,targets,inputStates,layerStates);
% Test the Network outputs = net(inputs,inputStates,layerStates); errors = gsubtract(targets,outputs);
okei ,I get up here
% Closed Loop Network netc = closeloop(net); [xc,xic,aic,tc] = preparets(netc,inputSeries,{},targetSeries); yc = netc(xc,xic,aic);
well, now, for re-iterate i must introduce (yc) in function preparets for simulate again close loop?? As would this comand?? [xc,xic,aic,tc] = preparets(netc,yc,{},{});?? because targets now i have not. This is my problem, i do not know the target in (t+1) and ,how can i predict the next value with closeloop?. Many thanks and sorry for my english

Sign in to comment.

Accepted Answer

Shashank Prasanna
Shashank Prasanna on 30 Jan 2013
This is what an open loop looks like during training:
Since it is NARX you will have one y(t) as the target and x(t) as the eXogenous input.
When you close the loop as follows:
you will ONLY need to provide the eXogenous inputs, y(t) will be predicted by the output.
Scroll down to see the code of how this is done:
If you don't have an eXogenous input x(t) then you need to be using NAR network.
  1 Comment
FRANCISCO
FRANCISCO on 31 Jan 2013
Sorry for taking so long is that I lie a little mathworks page. Many thanks for your reply Benji Bowbow. i have one last question. I train the narxnet and simulated the network. After, i close loop and simulate the network again. For iterated the network two times i introduce this previous outputs in close loop and simulate again. I am going to explain with code.
%import data%
xlsread p xlsread t
p1=p' t1=t'
inputSeries = tonndata(pn,true,false); targetSeries = tonndata(tn,true,false);
% Create a Nonlinear Autoregressive Network with External Input
net = narxnet(inputDelays,feedbackDelays,hiddenLayerSize);
% Prepare the Data for Training and Simulation [inputs,inputStates,layerStates,targets] = preparets(net,inputSeries,{},targetSeries);
% Train the Network [net,tr] = train(net,inputs,targets,inputStates,layerStates);
% Test the Network outputs = net(inputs,inputStates,layerStates); errors = gsubtract(targets,outputs);
okei ,I get up here
% Closed Loop Network netc = closeloop(net); [xc,xic,aic,tc] = preparets(netc,inputSeries,{},targetSeries); yc = netc(xc,xic,aic);
well, now, for re-iterate i must introduce (yc) in function preparets for simulate again close loop?? As would this comand?? [xc,xic,aic,tc] = preparets(netc,yc,{},{});?? because targets now i have not

Sign in to comment.

More Answers (1)

Greg Heath
Greg Heath on 13 Mar 2013
You can iterate as long as you have exogeneous inputs. If your last exogeneous input value is at t = tf, your last predicted output is at t = tf + LDB where
LDB = max([ID,FD])
is the length of your delay buffer.
However, there is a limited amount of good predictions beyond the end of the training series caused by the accumulation of prediction errors. Therefore, it is imperative that you do not overtrain an overfit (Nw > Ntrneq) openloop net.
Hope this helps.
Thank you for formally accepting my answer
Greg
  1 Comment
FRANCISCO
FRANCISCO on 13 Mar 2013
Good, I could give an example using code to view more clearly, for example get the ten values. taking as input the exogenous variables today (one day)?. I'm a little busy and I do not know how to make the prediction.
Thank you very much for your reply

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!