用小波神经网络来对时间序列进行预测_小波神经网络预测

其他范文 时间:2020-02-28 03:34:36 收藏本文下载本文
【www.daodoc.com - 其他范文】

用小波神经网络来对时间序列进行预测由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“小波神经网络预测”。

/* Note:Your choice is C IDE */ #include “stdio.h” void main(){

}/*用小波神经网络来对时间序列进行预测 */ /*%File name : nprogram.m %Description : This file reads the data from %its source into their respective matrices prior to % performing wavelet decomposition.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Clear command screen and variables */ clc;clear;

/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % user desired resolution level(Tested: resolution = 2 is best)*/ level = menu('Enter desired resolution level: ', '1',...'2(Select this for testing)', '3', '4');switch level case 1, resolution = 1;case 2, resolution = 2;case 3, resolution = 3;case 4, resolution = 4;end

msg = ['Resolution level to be used is ', num2str(resolution)];disp(msg);

/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % user desired amount of data to use */ data = menu('Choose amount of data to use: ', '1 day', '2 days', '3 days', '4 days',...'5 days', '6 days', '1 week(Select this for testing)');switch data case 1, dataPoints = 48;/*%1 day = 48 points */ case 2, dataPoints = 96;/* %2 days = 96 points */ case 3, dataPoints = 144;/*%3 days = 144 points */

case 4, dataPoints = 192;/*%4 days = 192 points */ case 5, dataPoints = 240;/* %5 days = 240 points */ case 6, dataPoints = 288;/* %6 days = 288 points */ case 7, dataPoints = 336;/*%1 weeks = 336 points */

end

msg = ['No.of data points to be used is ', num2str(dataPoints)];disp(msg);

/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Menu for data set selection */ select = menu('Use QLD data of: ', 'Jan02',...'Feb02', 'Mar02(Select this for testing)', 'Apr02', 'May02');switch select case 1, demandFile = 'DATA200601_QLD1';

case 2, demandFile = 'DATA200602_QLD1';

case 3, demandFile = 'DATA200603_QLD1';

case 4, demandFile = 'DATA200604_QLD1';

case 5, demandFile = 'DATA200605_QLD1';end

/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Reading the historical DEMAND data into tDemandArray */ selectedDemandFile=[demandFile,'.csv'];[regionArray, sDateArray, tDemandArray, rrpArray, pTypeArray]...= textread(selectedDemandFile, '%s %q %f %f %s', 'headerlines', 1, 'delimiter', ',');

/*%Display no.of points in the selected time series demand data */ [demandDataPoints, y] = size(tDemandArray);msg = ['The no.of points in the selected Demand data is ', num2str(demandDataPoints)];disp(msg);

/*%Decompose historical demand data signal */ [dD, l] = swtmat(tDemandArray, resolution, 'db2');approx = dD(resolution, :);

/*%Plot the original demand data signal */ figure(1);subplot(resolution + 2, 1, 1);plot(tDemandArray(1: dataPoints))legend('Demand original');title('QLD Demand Data Signal');

/*%Plot the approximation demand data signal */ for i = 1 : resolution subplot(resolution + 2, 1, i + 1);plot(approx(1: dataPoints))legend('Demand Approximation');end

/*%After displaying approximation signal, display detail x */ for i = 1: resolution if(i > 1)detail(i, :)= dD(i-1, :)-dD(i, :);else

detail(i, :)= tDemandArray'i + 3);plot(detail(i, 1: dataPoints))legendName = ['Demand Detail ', num2str(i)];legend(legendName);

else

subplot(resolution + 2, 1, resolutiondP(1, :);end

if i == 1 [B,A]=butter(1,0.65,'low');result =filter(B,A, detailP(i, 1: dataPoints));

subplot(resolution + 3, 1, resolutioni + 3);plot(detailP(i, 2: dataPoints))legendName = ['Price Detail ', num2str(i)];legend(legendName);

else

subplot(resolution + 3, 1, resolution1)];end disp(neuralNetwork);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(x1, y + 1);inputs(2, y + 1)= normPriceDetail(x1, y + 1);propData(2, y + 1)= normPriceDetail(x1)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 , 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('Pre 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(x1, 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);/*%

/*%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, '

disp(msg);

if(x

disp(' ');disp('Model is now ready to forecast again!');disp(' ');disp('Pre ENTER key to continue...');end

pause;end

下载用小波神经网络来对时间序列进行预测word格式文档
下载用小波神经网络来对时间序列进行预测.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

    热门文章
      整站推荐
        点击下载本文