資源簡(jiǎn)介
自己寫的PSO優(yōu)化的LSSVM代碼,用于對(duì)電力負(fù)荷的時(shí)間序列進(jìn)行預(yù)測(cè),含有原始數(shù)據(jù)序列。

代碼片段和文件信息
%%?文件說(shuō)明
%?main.m???:?主文件,進(jìn)行預(yù)測(cè),將生成的網(wǎng)絡(luò)保存到?‘nets.mat‘中
%?main_back.m?:?使用‘nets.mat‘重現(xiàn)結(jié)果
%?nets.mat?:?保存?3?*?48?個(gè)grnn網(wǎng)絡(luò),用于結(jié)果重現(xiàn)
%?QLD1.csv?:?原始數(shù)據(jù)(用的什么時(shí)候的數(shù)據(jù)你點(diǎn)開看一下就明白了)
%?QLD1.mat?:?導(dǎo)成matlab格式的數(shù)據(jù)
%?optimizeGrnn.m?:?使用模擬退火優(yōu)化grnn的spread參數(shù)
%?adaboost?:?組合算法?輸出結(jié)果的第一個(gè)數(shù)是組合后的mape
%%?原理
%?一周共使用48個(gè)神經(jīng)網(wǎng)絡(luò)
%?輸入前一個(gè)周7個(gè)相同時(shí)間點(diǎn)的數(shù)據(jù)?得到?本周7個(gè)相同時(shí)間點(diǎn)的數(shù)據(jù)
%%?注意
%?老婆大人你只需要注意我加?‘%%‘?標(biāo)注的代碼
%?不用執(zhí)行本文件,運(yùn)行‘main_back.m‘即可看到結(jié)果
%?net1MeanMape?=
%????0.0165????????<-?grnn1
%?net2MeanMape?=
%????0.0168????????<-?grnn2
%?net3MeanMape?=
%????0.0168????????<-?grnn3
%?combineMeanMapes?=
%????0.0157????????<-?adaboost
clc;
close;
clear;
testWeekNum??=?1;
%%?訓(xùn)練數(shù)據(jù)周數(shù)
trainWeekNum?=?228;
load?QLD1;
QLD1?=?reshape(QLD1?48?length(QLD1)/48);
testWeekInd??=?1;
trainWeekInd?=?1?+?(1:trainWeekNum);
testWeekX?=?[];
testWeekY?=?[];
for?yWeekInd?=?testWeekInd
????yWeekDayInd?=?(yWeekInd*7-6):(yWeekInd*7);
????xWeekDayStart?=?yWeekInd?*?7?+?1;
????xWeekDayEnd?=?(yWeekInd?+?1)?*?7;
????xWeekDayInd?=?xWeekDayStart:xWeekDayEnd;
????yDayData?=?QLD1(:?yWeekDayInd);
????xDayData?=?QLD1(:?xWeekDayInd);????
????testWeekY?=?[testWeekY?yDayData‘];
????testWeekX?=?[testWeekX?xDayData‘];
end
trainWeekX?=?[];
trainWeekY?=?[];
for?yWeekInd?=?trainWeekInd
????yWeekDayInd?=?(yWeekInd*7-6):(yWeekInd*7);
????xWeekDayStart?=?yWeekInd?*?7?+?1;
????xWeekDayEnd?=?(yWeekInd?+?1)?*?7;
????xWeekDayInd?=?xWeekDayStart:xWeekDayEnd;
????yDayData?=?QLD1(:?yWeekDayInd);
????xDayData?=?QLD1(:?xWeekDayInd);????
????trainWeekY?=?[trainWeekY?yDayData‘];
????trainWeekX?=?[trainWeekX?xDayData‘];
end
nets?=?{};
netMapes?=?[];
for?time?=?1:48
????disp([‘?time:‘?num2str(time)]);
????testInd??=?(0:(testWeekNum-1))??*?48?+?time;
????trainInd?=?(0:(trainWeekNum-1))?*?48?+?time;
????global?trainX?trainY?xmap?ymap?testX?testY;
????testX??=?testWeekX(:?testInd);
????testY??=?testWeekY(:?testInd);
????trainX?=?trainWeekX(:trainInd);
????trainY?=?trainWeekY(:trainInd);
????[trainX?xmap]?=?mapminmax(trainX?0.0000001?1);
????[trainY?ymap]?=?mapminmax(trainY?0.0000001?1);
????testX?=?mapminmax(‘a(chǎn)pply‘?testX?xmap);
????[bestGam?bestSig2]?=?optimizeLSSVM();
????rand(‘seed‘?2);
????net?=?initlssvm(trainX‘?trainY‘?‘function?estimation‘?bestGam?bestSig2?‘RBF_kernel‘);
????net?=?trainlssvm(net);
????ySim?=?simlssvm(net?testX‘)‘;
????ySim?=?mapminmax(‘reverse‘?ySim?ymap);
????mape_?=?mape(testY?ySim);
????nets{time?1}?=?net;
????netMapes?=?[netMapes?mape_];
end
meanMape?=?mean(netMapes)
save?nets?nets;
????
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2016-08-15?21:25??lssvm+pso\
?????文件????????2792??2016-08-15?21:20??lssvm+pso\main.m
?????文件????????1835??2016-08-15?21:24??lssvm+pso\main_back.m
?????文件?????????108??2016-08-15?21:07??lssvm+pso\mape.m
?????文件?????1818832??2016-08-15?21:23??lssvm+pso\nets.mat
?????文件?????????671??2016-08-15?21:21??lssvm+pso\optimizeLSSVM.asv
?????文件?????????671??2016-08-15?21:21??lssvm+pso\optimizeLSSVM.m
?????文件????????4557??2016-08-15?21:12??lssvm+pso\PSO.m
?????文件??????292213??2016-08-15?21:07??lssvm+pso\QLD1.mat
評(píng)論
共有 條評(píng)論