⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timeseries.m

📁 小波神经网络的matlab代码
💻 M
📖 第 1 页 / 共 2 页
字号:
      disp(' '); 

      %Set no. of input nodes and hidden neurons for the 
      %respective demand and price coefficient signal 
      numOfInputs = 2; 
      inputValue = ['Number of neural network INPUT units is set at ', num2str(numOfInputs)]; 
      disp(inputValue); 
      disp(' '); 
      numOfOutput = 1; 
      outValue = ['Output is set to ', num2str(numOfOutput)]; 
      disp(outValue); 
      disp(' '); 
      numOfHiddens = input('Enter the no. of HIDDEN units for the NN hidden : '); 
      hiddenValue = ['Number of neural network HIDDEN units is set at ', 
     num2str(numOfHiddens)]; 
      disp(hiddenValue); 
      disp(' '); 

     %Setting no. of training examples 
     trainingLength = dataPoints; 

      %Set target outputs of the training examples 
     if(x == 1) 
           targetDemand = normDemand(targetStartAt: 1 + trainingLength); 
     else 
           targetDemand = normDemandDetail(x - 1, targetStartAt: 1 + trainingLength); 
     end 

     %Preparing training examples 
      %Setting training i/ps to be 2 with user defined no. of iterations (dataPoints) 
     y = 0; 
     while y < trainingLength 
           if(x == 1) 
                inputs(1, y + 1) = normDemand(y + 1); 
                inputs(2, y + 1) = normPrice(y + 1); 

           else 
                inputs(1, y + 1) = normDemandDetail(x - 1, y + 1); 
                inputs(2, y + 1) = normPriceDetail(x - 1, y + 1); 

           end 

           output(y + 1, :) = targetDemand(y + 1); 

           y = y + 1; 
     end 

     inputs = (inputs'); 

     %Setting no. of training cycles 
      [ni, np] = size(targetDemand); % <== [ni, np] tells the NN how long is 1 cycle; 
     size(targetDemand) 

     clear nn; 

      %Create new neural network for respective coefficient signal 
     %NET = MLP(NIN, NHIDDEN, NOUT, FUNC) 
     nn = mlp(numOfInputs, numOfHiddens, numOfOutput, 'linear'); 

     %NN options 
      options = zeros(1, 18); 
      options(1) = 1; %Provides display of error values 
      options(14) = cycle * ni * np; 

     %Training the neural network 

      %netopt(net, options, x, t, alg); 
      nn = netopt(nn, options, inputs, output, 'scg'); 

      %Save the neural network 
      filename = ['nn', num2str(x)]; 
      save(filename, 'nn'); 

      disp(' '); 
      msg = ['Neural network successfully CREATED and saved as => ', filename]; 
      disp(msg); 

      if(x < 3) 
            disp(' '); 
            disp('Press ENTER key to continue training the next NN...'); 
      else 
            disp(' '); 
            disp('Model is now ready to forecast!!'); 
            disp(' '); 
            disp('Press ENTER key to continue...'); 
      end 

      pause; 
end 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 

%File name :       nforecast.m 
%Description : This file loads the trained NNs for load forcasting and %recombines the predicted 
%                   outputs from the NNs to form the final predicted load series. 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%Clear command screen and variables 
clc; 
clear forecastResult; 
clear actualDemand; 
clear predicted; 
clear actualWithPredicted; 

disp('Neural networks loaded, performing electricity demand forecast...'); 
disp(' '); 
pointsAhead = input('Enter no. of points to predict (should be < 336): '); 

numOfTimes = resolution + 1; 
%Predict coefficient signals using respective NNs 
for x = 1 : numOfTimes 
      %Loading NN 
      filename = ['nn', num2str(x)]; 
      clear nn 
      load(filename); 
      clear in; 
      numOfInputs = nn.nin; 
      y = 0; 
      %Preparing details to forecast 
      while y < pointsAhead 
           if(x == 1) 
                 propData(1, y + 1) = normDemand(y + 1); 
                 propData(2, y + 1) = normPrice(y + 1); 

           else 
                 propData(1, y + 1) = normDemandDetail(x - 1, y + 1); 
                 propData(2, y + 1) = normPriceDetail(x - 1, y + 1); 

           end 

           y = y + 1; 
      end 

      if(x == 1) 
           forecast = mlpfwd(nn, propData') * maxDemand; 
      else 
            forecast = mlpfwd(nn, propData') * maxDemandDetail(x - 1) - 4000; 
      end 
      forecastResult(x, :) = forecast'; 
end 

%For debugging 
% forecastResult 

actualDemand = tDemandArray(2: 1 + pointsAhead); 
predicted = sum(forecastResult, 1)'; 

%Calculating Mean Absolute Error 
AbsError = abs(actualDemand - predicted(1: pointsAhead)) ./ actualDemand; 
msg = ['Mean Absolute Error = ', num2str(mean(AbsError(1: pointsAhead))), ' !!']; 
disp(' '); 
disp(msg); 

%Plot actual time series against predicted result 
figure(3) 
actualWithPredicted(:, 1) = actualDemand; 
actualWithPredicted(:, 2) = predicted(1: pointsAhead); 
plot(actualWithPredicted); 
graph = ['Mean Absolute Error = ', num2str(mean(AbsError))]; 
title(graph); 
legend('Actual', 'Forecasted'); 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 

%File name :      nretrain.m 
%Description : This file loads the existing NNs and trains them again. 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 

clc; 
%Prompt for the starting point for training 
disp('Program will now RETRAIN the Neural Networks ') 
disp('with the SAME intial data series again...'); 
disp(' '); 
disp('To capture the pattern of the signal, the model is ') 
disp('set to accept dataPoints x 2 sets of training examples; '); 
disp('1 set of demand + 1 sets of price. '); 
disp(' '); 
disp('The normalised demand data <point 2>, is to be taken as the ') 
disp('output value for the first iteration of training examples. '); 
disp(' '); 
msg = ['Data points to be used for reTraining the NNs is from 1 to ',... 
            num2str(dataPoints)]; 
disp(msg); 
disp(' '); 
disp('Press ENTER key to continue...'); 
pause; 

%Clear command screen 
clc; 

%Prompt for no. of training cycles 
%For current program, 1 cycle = user set no. of iterations (ie: dataPoints) 
cycle = input('Input number of cycles to retrain the NNs: '); 

numOfTimes = resolution + 1; 
%Loading existing NNs for training 
for x = 1: numOfTimes 

      %Re-initialising variables 
      clear targetDemand; 
      clear inputs; 
      clear output; 
      clc; 

      %Loading NN for the respective demand and temperature coefficient signals 
      filename = ['nn', num2str(x)]; 
      clear nn 
      load(filename); 

      %Getting the size of NN 
      numOfInputs = nn.nin; 
      numOfHiddens = nn.nhidden; 
      numOfOutput = 1; 

      %Setting length of reTraining examples and target outputs 
      reTrainLength = dataPoints; 
      targetLength = reTrainLength; 

      targetStartAt = 2; 

      %Set target outputs of the training examples 
      if(x == 1) 
            targetDemand = normDemand(targetStartAt: 1 + targetLength); 
      else 
            targetDemand = normDemandDetail(x - 1, targetStartAt: 1 + targetLength); 
      end 

      %Preparing training examples 
      %Setting training i/ps to be 2 with user set no. of iterations (dataPoints) 
      y = 0; 
      while y < reTrainLength 
            if(x == 1) 
                  inputs(1, y + 1) = normDemand(y + 1); 
                  inputs(2, y + 1) = normPrice(y + 1); 

            else 
                  inputs(1, y + 1) = normDemandDetail(x - 1, y + 1); 
                  inputs(2, y + 1) = normPriceDetail(x - 1, y + 1); 

            end 

            output(y + 1, :) = targetDemand(y + 1); 

            y = y + 1; 
      end 

      inputs = (inputs'); 

      %Setting no. of training cycles 
      [ni, np] = size(targetDemand); % <== [ni, np] tells the NN how long is 1 cycle; 
      size(targetDemand)                                %With reference to line 106 

      %NN options 
      options = zeros(1, 18); 
      options(1) = 1; %Provides display of error values 
      options(14) = cycle * ni * np; 

      %Training the neural network 
      %netopt(net, options, x, t, alg); 
      nn = netopt(nn, options, inputs, output, 'scg'); 

      %Save the neural network 
      filename = ['nn', num2str(x)]; 
      save(filename, 'nn'); 

      disp(' '); 
      msg = ['Neural network => ', filename, ' <= successfully RETRAINED and saved!! ']; 

      disp(msg); 

      if(x < 3) 
            disp(' '); 
            disp('Press ENTER key to continue training the next NN...'); 
      else 
            disp(' '); 
            disp('Model is now ready to forecast again!!'); 
            disp(' '); 
            disp('Press ENTER key to continue...'); 
      end 

      pause; 
end 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -