💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
📚2 运行结果
🎉3 参考文献
🌈4 Matlab代码、数据、文章
💥1 概述
用于模拟电价的模型是一个简化形式的混合模型,如下图1所示。其根本驱动因素是天然气价格和气温。该模型在内部捕获了驱动因素与电价的关系之间的关系,以及与一天中的时间、一周中的哪一天和节假日的关系。天然气价格模型是一种简化的均值回归随机微分方程模型。温度模型是参数函数和时间序列模型的组合。
模拟的天然气和电价路径被送入调度算法,该算法计算工厂的最优调度,以产生一系列现金流,可用于计算风险现金流。
图1
详细讲解见第4部分。
📚2 运行结果
部分代码:
%% 每小时温度建模和模拟 % 这个例子演示了每小时干球温度拟合一个非线性温度模型。 % 温度序列被建模为两个分量的总和,一个确定性的非线性函数, % 用来解释给定年份某一时刻的季节或预期温度,另一个随机分量,用来解释实际温度与平均值的偏差。 %% 导入数据 %数据集从先前创建的MAT-file中加载。它由一系列日期的向量和相应的历史记录温度组成。 clear load Data\TempSeries whos %% 季节性成分(确定性) % 确定性或期望的温度分量用正弦和模型建模,激励的是数据中观察到的温度和周期性的物理本质。 % 利用曲线拟合工具箱对模型参数进行估计。统计工具箱函数NLINFIT也可以用来估计模型参数。 % 计算平均值(年平均值)并将其从系列中剔除 m = mean(drybulb) drybulb0 = drybulb - m; % Fit double-sine model model = fit(dates, drybulb0, 'sin2') %% 可视化模型精度 % 用自定义图对拟合结果进行可视化分析。图中的两个轴是相连的,这极大地使数据的视觉探索。 % 还要注意,X轴上的日期tick相对于缩放和平移是动态的。 pred = model(dates) + m; res = drybulb - pred; fitPlot(dates, [drybulb pred], res); disp(['平均绝对误差: ' num2str(mean(abs(res))) ' 华氏度']); %% 分析残差中的序列相关性 % 上述图中明显的特征之一是残差不具有序列相关性。预计这是因为高于平均气温很可能跟随高于平均气温。 % 这种序列相关性可以被明确地度量。这里用AUTOCORR和PARCORR函数来显示序列的自相关和部分自相关。 figure; subplot(2,1,1); autocorr(res,50); title('随机序列的序列相关性'); subplot(2,1,2); parcorr(res(1:1000),50); %% 利用季节AR模型对随机成分进行建模 % 可以选择对随机分量建模一个均值回复漂移SDE。 % 但是,由于季节性,我们将使用带有季节性滞后的自回归模型。 % 这里可以使用MATLAB反斜杠算子代替REGRESS函数,但这不会返回置信区间。 lags = [1 2 3 4 23 24 25 47 48 49]; Xres = lagmatrix(res, lags); [beta, betaci, res2] = regress(res, Xres); disp('滞后系数和置信区间'); disp([lags' beta betaci]) %% 对回归残差进行序列相关分析 %来自回归的残差现在应该大多是序列不相关的。 figure; subplot(2,1,1); plot(dates, res2); datetick title('回归残差及其序列相关性'); subplot(2,1,2); autocorr(res2(lags(end)+1:end),50); %% 对残差拟合一个分布 % 由于残差大多是不相关的,因此可以将它们建模为独立的从适当的分布中提取的。 % 一个t位置尺度分布可以显示出很好的拟合性。 PD = fitdist(res2, 'tlocationscale'); %% 模型总结 % 温度模型现在可以定义为, % % *平均气温' m ' % *正弦模型'模型' % *回归参数'β ' % *自相关滞后'滞后' % *剩馀概率分布PD % *可选样本前数据( 回归温度的最后一次观测值 ) tempModel = struct('m', m, 'sinmodel', model, 'reglags', lags, 'regbeta', beta, 'dist', PD, 'presample', res(end-lags(end)+1:end)); save SavedModels\TemperatureModel.mat -struct tempModel clearvars -except tempModel dates drybulb %% 仿真模型 % 我们现在可以对这个模型进行2009年的模拟,并将模拟值与2009年的观测数据进行比较。 % 注意我们已经捕获了我们模型中的相关特征。 newDates = dates(end-365*24+1:end); simTemp = simulateTemperature(tempModel, newDates, 1); %% 可视化仿真结果 ax1 = subplot(2,1,1); plot(newDates, drybulb(end-365*24+1:end)) title('实际温度'); ax2 = subplot(2,1,2); plot(newDates, simTemp); title('模拟温度'); linkaxes([ax1 ax2], 'x'); dynamicDateTicks([ax1 ax2], 'linked');
🎉3 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1]周佃民,赖菲,刘亚安,王庆,刘云国.电力系统负荷预测与电价预测[J].继电器,2000(10):31-33.