日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【负荷预测】基于神经网络的负荷预测和价格预测(Matlab代码实现)

發(fā)布時(shí)間:2023/12/14 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【负荷预测】基于神经网络的负荷预测和价格预测(Matlab代码实现) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

1 概述

2 基于神經(jīng)網(wǎng)絡(luò)的負(fù)荷預(yù)測(cè)(Matlab實(shí)現(xiàn))

2.1 代碼

2.2 結(jié)果?

2.3?回歸樹模型的進(jìn)一步改進(jìn)?

3 基于神經(jīng)網(wǎng)絡(luò)的價(jià)格預(yù)測(cè)(Matlab代碼實(shí)現(xiàn))?

4 閱讀全文(Matlab代碼)


1 概述

這個(gè)例子演示了用MATLAB建立一個(gè)短期電力負(fù)荷(或價(jià)格)預(yù)測(cè)系統(tǒng)。兩個(gè)非線性回歸模型(神經(jīng)網(wǎng)絡(luò)和袋式回歸樹)被校準(zhǔn),以預(yù)測(cè)給定溫度預(yù)測(cè)、假日信息和歷史負(fù)荷的每小時(shí)前日負(fù)荷。這些模型在數(shù)據(jù)上進(jìn)行訓(xùn)練,并在2008年的樣本外數(shù)據(jù)上進(jìn)行測(cè)試。這些模型被證明能夠產(chǎn)生高度準(zhǔn)確的日前預(yù)測(cè),平均誤差在1-2%左右。能夠通過MATLAB部署的DLL調(diào)用訓(xùn)練好的負(fù)荷預(yù)測(cè)模型。

準(zhǔn)確的負(fù)荷預(yù)測(cè)對(duì)于公用事業(yè)的短期運(yùn)營(yíng)和長(zhǎng)期規(guī)劃至關(guān)重要。負(fù)荷預(yù)測(cè)會(huì)影響許多決策,包括在給定時(shí)期內(nèi)承諾哪些發(fā)電機(jī),并廣泛影響批發(fā)電力市場(chǎng)價(jià)格。負(fù)荷和價(jià)格預(yù)測(cè)算法通常在簡(jiǎn)化形式的電價(jià)混合模型中也很突出,這是用于模擬市場(chǎng)和模擬能源衍生品的一些最準(zhǔn)確的模型。市場(chǎng)參與者在許多交易和風(fēng)險(xiǎn)管理應(yīng)用程序中也廣泛使用電價(jià)預(yù)測(cè)。負(fù)荷預(yù)測(cè)會(huì)影響許多決策,包括在給定時(shí)期內(nèi)承諾哪些發(fā)電機(jī),并廣泛影響批發(fā)電力市場(chǎng)價(jià)格。負(fù)荷預(yù)測(cè)算法通常在電價(jià)混合模型中也很突出,這是電力市場(chǎng)建模最準(zhǔn)確的一類方法。市場(chǎng)參與者在許多交易和風(fēng)險(xiǎn)管理應(yīng)用程序中廣泛使用電價(jià)預(yù)測(cè)。傳統(tǒng)上,公用事業(yè)和營(yíng)銷人員使用商業(yè)軟件包來執(zhí)行負(fù)荷預(yù)測(cè)。這些方法的主要缺點(diǎn)是它們是一個(gè)黑匣子,不提供如何計(jì)算負(fù)載預(yù)測(cè)的透明度。它們通常也只提供實(shí)用程序所需功能的 80-90%。在許多情況下,不可能通過現(xiàn)成的產(chǎn)品滿足所有要求,例如考慮到區(qū)域負(fù)載、不同的天氣模式等。


2 基于神經(jīng)網(wǎng)絡(luò)的負(fù)荷預(yù)測(cè)(Matlab實(shí)現(xiàn))

2.1 部分代碼

%% 利用神經(jīng)網(wǎng)絡(luò)進(jìn)行電力負(fù)荷預(yù)測(cè) % 這個(gè)例子展示了用MATLAB建立和驗(yàn)證一個(gè)短期的 % 本例演示了用MATLAB建立和驗(yàn)證短期電力負(fù)荷預(yù)測(cè)模型。這些模型考慮到了 % 考慮到多種信息來源,包括溫度和 % 假期等多種信息,以構(gòu)建一個(gè)日前負(fù)荷預(yù)測(cè)器。這個(gè)腳本使用 % 神經(jīng)網(wǎng)絡(luò)。%% 導(dǎo)入天氣和負(fù)荷數(shù)據(jù) % 所使用的數(shù)據(jù)集是一個(gè)地區(qū)2004 - 2008年的歷史小時(shí)負(fù)荷和溫度觀測(cè)表。 % 天氣信息包括干球溫度和露點(diǎn)。 load Data\DBLoadData.mat addpath ..\Util%% 從Excel電子表格中導(dǎo)入假期列表[num, text] = xlsread('..\Data\Holidays.xls'); holidays = text(2:end,1);%% 生成預(yù)測(cè)矩陣 % 函數(shù)*genPredictors*生成了作為模型輸入的預(yù)測(cè)變量。 % 的輸入。對(duì)于短期預(yù)測(cè),這些變量包括 % * 干球溫度 % * 露點(diǎn) % *一天中的小時(shí) % * 一周中的一天 % *表明是否為假日/周末的標(biāo)志 % * 前一天的平均負(fù)荷 % * 前一天同一小時(shí)的負(fù)荷 % * 前一周同一小時(shí)和同一天的負(fù)荷 % 如果目標(biāo)是中期或長(zhǎng)期的負(fù)荷預(yù)測(cè),只需輸入 % 如果目標(biāo)是中期或長(zhǎng)期的負(fù)荷預(yù)測(cè),只有一天中的小時(shí),一周中的一天,一年中的時(shí)間和節(jié)假日可以被使用 % 確定性地使用。天氣/負(fù)荷信息將需要被指定為 % 指定為一個(gè)平均數(shù)或一個(gè)分布 %% 選擇預(yù)測(cè)范圍 term = 'short';[X, dates, labels] = genPredictors(data, term, holidays);%% 講數(shù)據(jù)集分為訓(xùn)練和測(cè)試集 % 該數(shù)據(jù)集被分為兩組,一個(gè)是包括2004年至2007年數(shù)據(jù)的_訓(xùn)練_組, % 另一個(gè)是包括2008年數(shù)據(jù)的_測(cè)試_組。 % 訓(xùn)練集包括2004至2007年的數(shù)據(jù),測(cè)試集包括2008年的數(shù)據(jù)。 % 訓(xùn)練集用于建立模型(估計(jì)其參數(shù))。測(cè)試集僅用于預(yù)測(cè),以測(cè)試模型在樣本外數(shù)據(jù)上的表現(xiàn)。 %++++++ 建立訓(xùn)練集++++++++++ trainInd = data.NumDate < datenum('2008-01-01'); trainX = X(trainInd,:); trainY = data.SYSLoad(trainInd);%++++++創(chuàng)建測(cè)試集并保存以備不時(shí)之需++++++ testInd = data.NumDate >= datenum('2008-01-01'); testX = X(testInd,:); testY = data.SYSLoad(testInd); testDates = dates(testInd);save Data\testSet testDates testX testY clear X data trainInd testInd term holidays dates ans num text%% 構(gòu)建負(fù)荷預(yù)測(cè)模型 % 接下來的幾個(gè)單元建立了一個(gè)神經(jīng)網(wǎng)絡(luò)回歸模型, % 用于給定訓(xùn)練數(shù)據(jù)的日前負(fù)荷預(yù)測(cè)。 % 然后,該模型被用于測(cè)試數(shù)據(jù)以驗(yàn)證其準(zhǔn)確性。 %% 初始化和訓(xùn)練網(wǎng)絡(luò) % 初始化一個(gè)包含 20 個(gè)神經(jīng)元的兩層默認(rèn)網(wǎng)絡(luò)。使用“平均 % 絕對(duì)誤差”(MAE)性能指標(biāo)。然后,用 % 默認(rèn)的 Levenburg-Marquardt 算法。為了提高效率,預(yù)先訓(xùn)練 % 除非特別強(qiáng)制執(zhí)行重新訓(xùn)練,否則網(wǎng)絡(luò)會(huì)被加載。 reTrain = false; if reTrain || ~exist('Models\NNModel.mat', 'file')net = newfit(trainX', trainY', 20);net.performFcn = 'mae';net = train(net, trainX', trainY');save Models\NNModel.mat net elseload Models\NNModel.mat end%% 采用神經(jīng)網(wǎng)絡(luò)模型進(jìn)行預(yù)測(cè) % 一旦建立了模型,對(duì)獨(dú)立的測(cè)試集進(jìn)行預(yù)測(cè). load Data\testSet forecastLoad = sim(net, testX')';%% 比較預(yù)測(cè)負(fù)荷和實(shí)際負(fù)荷 % 創(chuàng)建一個(gè)圖表來比較實(shí)際負(fù)荷和預(yù)測(cè)負(fù)荷以及 % 并計(jì)算出預(yù)測(cè)誤差。除了可視化之外,還可以使用平均絕對(duì)值等指標(biāo)來量化 % 預(yù)測(cè)器的性能,如平均絕對(duì)誤差(MAE)、平均絕對(duì)百分比誤差(MAPE)和每日峰值誤差(MAPE)等指標(biāo)。 % 誤差(MAE),平均絕對(duì)誤差(MAPE)和每日峰值預(yù)測(cè) % 誤差。 err = testY-forecastLoad; fitPlot(testDates, [testY forecastLoad], err);errpct = abs(err)./testY*100;fL = reshape(forecastLoad, 24, length(forecastLoad)/24)'; tY = reshape(testY, 24, length(testY)/24)'; peakerrpct = abs(max(tY,[],2) - max(fL,[],2))./max(tY,[],2) * 100;MAE = mean(abs(err)); MAPE = mean(errpct(~isinf(errpct)));fprintf('平均絕對(duì)百分比誤差 (MAPE): %0.2f%% \n平均絕對(duì)誤差 (MAE): %0.2f MWh\n每日峰值 MAPE: %0.2f%%\n',...MAPE, MAE, mean(peakerrpct))%% 檢查誤差的分布情況 % 除了報(bào)告標(biāo)量誤差指標(biāo)(如MAE和MAPE)外,誤差分布圖和絕對(duì)誤差也有助于建立 % 誤差和絕對(duì)誤差的分布圖可以幫助建立 % 圍繞預(yù)測(cè)者的表現(xiàn)建立直覺 %% 可視化圖像 figure; subplot(3,1,1); hist(err,100); title('誤差分布'); subplot(3,1,2); hist(abs(err),100); title('絕對(duì)誤差分布'); line([MAE MAE], ylim); legend('誤差', 'MAE'); subplot(3,1,3); hist(errpct,100); title('絕對(duì)百分比誤差分布'); line([MAPE MAPE], ylim); legend('誤差', 'MAPE');%% 誤差的集體分析 % 為了進(jìn)一步了解預(yù)報(bào)器的性能,我們可以 % 為了進(jìn)一步了解預(yù)報(bào)員的表現(xiàn),我們可以按一天中的每一小時(shí)、 % 一周中的每一天和一年中的每一個(gè)月來直觀地顯示預(yù)報(bào)誤差百分比。 % 年的月份 [yr, mo, da, hr] = datevec(testDates);%% 按小時(shí)計(jì)算 clf; boxplot(errpct, hr+1); xlabel('小時(shí)'); ylabel('誤差百分比的統(tǒng)計(jì)'); title('按小時(shí)劃分的預(yù)測(cè)誤差統(tǒng)計(jì)數(shù)據(jù)');% 按工作日 figure boxplot(errpct, weekday(floor(testDates)), 'labels', {'Sun','Mon','Tue','Wed','Thu','Fri','Sat'}); ylabel('誤差百分比統(tǒng)計(jì)'); title('按工作日劃分的預(yù)測(cè)誤差統(tǒng)計(jì)明細(xì)表');% 按月份 figure boxplot(errpct, datestr(testDates,'mmm')); ylabel('誤差百分比統(tǒng)計(jì)'); title('按月份劃分的預(yù)測(cè)誤差統(tǒng)計(jì)細(xì)目表');%% 制作每周圖表 %在測(cè)試集上每周建立預(yù)測(cè)負(fù)荷與實(shí)際負(fù)荷的對(duì)比。 generateCharts = true; if generateChartsstep = 168*2;for i = 0:step:length(testDates)-stepclf;fitPlot(testDates(i+1:i+step), [testY(i+1:i+step) forecastLoad(i+1:i+step)], err(i+1:i+step));title(sprintf('MAPE: %0.2f%%', mean(errpct(i+1:i+step))));snapnowend end

2.2 結(jié)果?

??

?

?

2.3?回歸樹模型的進(jìn)一步改進(jìn)?

?

3 基于神經(jīng)網(wǎng)絡(luò)的價(jià)格預(yù)測(cè)(Matlab代碼實(shí)現(xiàn))?

?

?

?

4 完整Matlab代碼實(shí)現(xiàn)

總結(jié)

以上是生活随笔為你收集整理的【负荷预测】基于神经网络的负荷预测和价格预测(Matlab代码实现)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。