1 簡介
隨著智能燃?xì)夤芫W(wǎng)建設(shè)工作的飛速發(fā)展,負(fù)荷預(yù)測工作越來越重要。短期負(fù)荷預(yù)測是城市燃?xì)庀到y(tǒng)的一項(xiàng)基礎(chǔ)工作,其數(shù)據(jù)對項(xiàng)目規(guī)劃、運(yùn)行調(diào)度、管網(wǎng)維修以及工程技術(shù)分析都具有根本意義,因此尋求有效的短期負(fù)荷預(yù)測方法以提高預(yù)測精度是非常重要的。本文首先深入分析了經(jīng)驗(yàn)?zāi)B(tài)分解(Empirical Mode Decomposition,EMD)方法在正常采樣率條件下分解結(jié)果中可能存在虛假模態(tài)分量,而通過傅立葉插值法、sinc函數(shù)插值法等增加采樣點(diǎn)可以減少虛假分量的產(chǎn)生,但并不能從根本上解決多余模態(tài)的問題,因此提出一種改進(jìn)的模態(tài)分量消除算法,即利用經(jīng)驗(yàn)?zāi)B(tài)分解的完備性、能量原理和虛假模態(tài)分量性質(zhì),在每得到一個(gè)本征模分量時(shí),對這個(gè)分量進(jìn)行檢驗(yàn)是否滿足以上三個(gè)性質(zhì),從而除去虛假模態(tài)分量及消除本征模態(tài)分量中的誤差。接著闡述了一種添加了自適應(yīng)學(xué)習(xí)率的深度信念神經(jīng)網(wǎng)絡(luò)(Deep belief Neural Network,DBN),用以減少深度信念神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練時(shí)的迭代次數(shù),從而加快模型的訓(xùn)練速度。一方面,燃?xì)庳?fù)荷值受多種外界因素影響,選擇DBN可以通過逐層提取這些因素之間的內(nèi)在隱含聯(lián)系,達(dá)到模型預(yù)測目的。另一方面,傳統(tǒng)的DBN在預(yù)訓(xùn)練和調(diào)優(yōu)過程中注重調(diào)節(jié)w,b的值,忽視學(xué)習(xí)率α對預(yù)測結(jié)果的影響,本文在DBN的基礎(chǔ)上對學(xué)習(xí)率做自適應(yīng)研究,以提高模型訓(xùn)練速度,并且在一定程度上提高預(yù)測精度。最后詳細(xì)介紹了基于EMD分解的集成深度信念神經(jīng)網(wǎng)絡(luò)預(yù)測模型的建立,以及仿真實(shí)驗(yàn)分析的過程。由于燃?xì)庳?fù)荷數(shù)據(jù)在日常監(jiān)測過程中有部分?jǐn)?shù)據(jù)缺失和儀器讀數(shù)誤差,因此在預(yù)測前需要對原始數(shù)據(jù)預(yù)處理,解決負(fù)荷數(shù)據(jù)序列存在異常數(shù)據(jù)的問題,同時(shí)將負(fù)荷數(shù)據(jù)歸一化處理、影響因素?cái)?shù)值化處理,構(gòu)成預(yù)測模型的輸入矩陣。針對燃?xì)庳?fù)荷序列非線性非平穩(wěn)的特性,采用優(yōu)化的EMD將負(fù)荷數(shù)據(jù)序列分解成多個(gè)本征模向量,再分別進(jìn)行DBN建模和預(yù)測,得到各個(gè)分量的預(yù)測結(jié)果,最后使用線性神經(jīng)網(wǎng)絡(luò)將各分量的結(jié)果擬合得出最終預(yù)測結(jié)果。結(jié)果表明,集成方法確實(shí)能夠避免單一模型過擬合的問題,提高預(yù)測精度。
2 部分代碼
%腳本名:introduction.m
%功? 能:軟件介紹界面腳本
function varargout = introduction(varargin)
% INTRODUCTION MATLAB code for introduction.fig
%? ? ? INTRODUCTION, by itself, creates a new INTRODUCTION or raises the existing
%? ? ? singleton*.
%
%? ? ? H = INTRODUCTION returns the handle to a new INTRODUCTION or the handle to
%? ? ? the existing singleton*.
%
%? ? ? INTRODUCTION('CALLBACK',hObject,eventData,handles,...) calls the local
%? ? ? function named CALLBACK in INTRODUCTION.M with the given input arguments.
%
%? ? ? INTRODUCTION('Property','Value',...) creates a new INTRODUCTION or raises the
%? ? ? existing singleton*.? Starting from the left, property value pairs are
%? ? ? applied to the GUI before introduction_OpeningFcn gets called.? An
%? ? ? unrecognized property name or invalid value makes property application
%? ? ? stop.? All inputs are passed to introduction_OpeningFcn via varargin.
%
%? ? ? *See GUI Options on GUIDE's Tools menu.? Choose "GUI allows only one
%? ? ? instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help introduction
% Last Modified by GUIDE v2.5 11-Jan-2020 17:06:03
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',? ? ? ?mfilename, ...
? ? ? ? ? ? ? ? ? ?'gui_Singleton',? gui_Singleton, ...
? ? ? ? ? ? ? ? ? ?'gui_OpeningFcn', @introduction_OpeningFcn, ...
? ? ? ? ? ? ? ? ? ?'gui_OutputFcn',? @introduction_OutputFcn, ...
? ? ? ? ? ? ? ? ? ?'gui_LayoutFcn',? [] , ...
? ? ? ? ? ? ? ? ? ?'gui_Callback',? ?[]);
if nargin && ischar(varargin{1})
? ? gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
? ? [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
? ? gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before introduction is made visible.
function introduction_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject? ? handle to figure
% eventdata? reserved - to be defined in a future version of MATLAB
% handles? ? structure with handles and user data (see GUIDATA)
% varargin? ?command line arguments to introduction (see VARARGIN)
% Choose default command line output for introduction
handles.output = hObject;
movegui(gcf,'center');?
set(gcf,'numbertitle','off','name','歡迎使用“一種基于EMD-DBN的用戶側(cè)負(fù)荷預(yù)測軟件V1.0”');
%窗口位置移到屏幕中央
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes introduction wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = introduction_OutputFcn(hObject, eventdata, handles)?
% varargout? cell array for returning output args (see VARARGOUT);
% hObject? ? handle to figure
% eventdata? reserved - to be defined in a future version of MATLAB
% handles? ? structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject? ? handle to pushbutton1 (see GCBO)
% eventdata? reserved - to be defined in a future version of MATLAB
% handles? ? structure with handles and user data (see GUIDATA)
close(introduction)
run('welcome2.m')
%關(guān)閉本界面,返回至歡迎界面
3 仿真結(jié)果
4 參考文獻(xiàn)
[1]黃維. 基于EMD分解和集成深度信念神經(jīng)網(wǎng)絡(luò)的短期燃?xì)庳?fù)荷預(yù)測[D]. 上海師范大學(xué).
博主簡介:擅長智能優(yōu)化算法、神經(jīng)網(wǎng)絡(luò)預(yù)測、信號(hào)處理、元胞自動(dòng)機(jī)、圖像處理、路徑規(guī)劃、無人機(jī)等多種領(lǐng)域的Matlab仿真,相關(guān)matlab代碼問題可私信交流。
部分理論引用網(wǎng)絡(luò)文獻(xiàn),若有侵權(quán)聯(lián)系博主刪除。
**完整代碼獲取關(guān)注微信公眾號(hào)天天matlab**