电力系统电价与温度模型(Matlab代码实现)

news2024/11/29 5:50:14

 目录

1 数学模型

2 运行结果

3 Matlab代码实现

1 数学模型

用于模拟电价的模型是一个简化形式的混合模型,如下图1所示。其根本驱动因素是天然气价格和气温。该模型在内部捕获了驱动因素与电价的关系之间的关系,以及与一天中的时间、一周中的哪一天和节假日的关系。天然气价格模型是一种简化的均值回归随机微分方程模型。温度模型是参数函数和时间序列模型的组合。
模拟的天然气和电价路径被送入调度算法,该算法计算工厂的最优调度,以产生一系列现金流,可用于计算风险现金流。

                       

                                                                      图1

部分代码:

%% 每小时温度建模和模拟
% 这个例子演示了每小时干球温度拟合一个非线性温度模型。
% 温度序列被建模为两个分量的总和,一个确定性的非线性函数,
% 用来解释给定年份某一时刻的季节或预期温度,另一个随机分量,用来解释实际温度与平均值的偏差。
%% 导入数据
%数据集从先前创建的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');

2 运行结果

            

                

                    

                     

     

应用程序中包含三个 Excel 电子表格。 PlantRiskDeployed.xlsm 是与已部署应用程序一起使用的接口。它包括调用使用 MATLAB Builder Ex 创建的 COM DLL 的已部署方法的 VBA 代码。部署项目 PlantRisk.prj 包括构建已部署应用程序所需的相关文件。这可以在 MATLAB 中打开并构建以创建 Excel 应用程序所需的 DLL。 vbamodule.bas 中的 VBA 代码包含已成为 PlantRiskDeployed 一部分的 VBA 代码,用于从 Excel 自动调用 DLL 函数。 PlantRiskSpLink.xlsm 是与 Spreadsheet Link EX 一起使用的接口,用于在 MATLAB 的运行会话中调用 MATLAB 函数。如果您不需要与不是 MATLAB 用户的其他人共享应用程序,或者在创建已部署的应用程序之前对界面进行原型设计,则此版本非常有用。 PlantRiskTemplate.xlsx 是没有集成到 MATLAB 的简单接口。 vbamodule.bas 中的 VBA 代码以及 MATLAB Builder EX 生成的 VBA 代码可以导入此文件,使其成为与 PlantRiskDeployed.xlsm 相同的功能齐全的部署应用程序.

使用界面:单击 Run Backtest 按钮调用 backtestPlantPortfolio 函数(在 MATLAB 中或在 MATLAB 生成的 DLL 中)。此函数加载工作表上指定日期范围内的历史电力和天然气价格,并计算每个发电机的每日最佳调度,从而在尊重最小运行时间限制的同时最大化每日发电利润。回测的结果是每个工厂的一组运营统计数据,例如已实现利润、运营天数、工厂运行时间百分比以及每个运营日的平均小时数。该函数还计算投资组合的总预期利润和日期范围内每个日期的现金流(利润)图。回测结果的屏幕截图如下所示。单击 Run Simulation 按钮会调用 simulationPlantPortfolio 函数(在 MATLAB 中或在 MATLAB 生成的 DLL 中)。该函数加载预训练的天然气价格、温度和电价模型,并联合模拟指定日期范围内天然气和电价的多条路径。可以在工作表上指定模拟次数。然后针对每个模拟价格路径为每个工厂执行最佳调度,以计算每个工厂以及整个投资组合的利润和运营统计数据。然后将这些平均并显示在工作表上。此外,还计算了每个资产和投资组合的风险现金流量度。该函数还创建了现金流(收益)分布的直方图,其中突出显示了风险指标

3 Matlab代码实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/142497.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

日常生产用项目一整套DevOps流水线搭建-笔记一(镜像仓库的设置)

写在前边 很多项目新手在接手开发项目的时候,由于缺乏经验,只能通过比较笨的方法去进行项目的部署和开发.这样就会非常非常的麻烦,重复的工作很多很多.我借着一个项目开发的时机,第一次实现了我原先只在想象中的流水线部署.但是由于跟正规公司的项目规模还有差距,我们的流水线…

十六、状态管理——Vuex(3)

本章概要 action 分发 action在组件中分发 action组合 action 16.7 action 在定义mutation 时,一条重要的原则就是 mutation 必须是同步函数。换句话说,在 mutation() 处理器函数中,不能存在异步调用。例如: mutations:{some…

关于前端的学习

最近在网上想模拟一个ai的围棋,然后在gitee上找了一个算法,想要启动一下。https://gitee.com/changjiuxiong/myGoChess?_fromgitee_search使用说明是这样的:使用说明npm installnpm run dev打开index.html可自定义棋盘大小: new Game(19), n…

Polynomial Round 2022 (Div. 1 + Div. 2, Rated, Prizes!)(A~E)

A. Add Plus Minus Sign给出01字符串,在两两之间加入或者-,使得最后得到的结果绝对值最小。思路:统计1的个数,若是奇数个,那最后绝对值一定是1,否则为0,按照最后结果添加或1即可。AC Code&#…

GD32F103-初次接触

前期资料 外形 原理图 参考手册 1.芯片数据手册 2.用户手册 3.固件库使用指南 固件库解析 外设缩写 一些不常见的外设缩写。 BKP 备份寄存器 DBG 调式模块 ENET 以太网控制模块Ethernet EXMC 外部存储器控制 EXTI 外部中断事件控制器 FMC 闪存控制器 GPIO/AFIO 通用…

量化股票池数据怎么分析出来的?

量化股票池数据是怎么分析出来的呢?说到这个需要先来了解股票量化的基本原理,在正常的基础上,不是所有的股票数据都经过一一筛选,而是使用一些分析工具来执行,就像a股自动交易接口系统需要编写相符合条件的策略来执行&…

【MySQL】MySQL存储引擎,索引,锁以及调优

文章目录存储引擎MySQL中的索引MySQL 索引优缺点MySQL 索引类型MySQL索引的实现MySQL中的锁MySQL8.0 新特性MySQL中调优存储引擎 MySQL 5.7 支持的存储引擎有 InnoDB、MyISAM、Memory、Merge、Archive、CSV等等存储引擎。 通过show engines; 命令查看,如下图 图中…

【目标检测】Mask R-CNN论文解读

目录:Mask R-CNN论文解读一、Mask-RCNN流程二、Mask-RCNN结构2.1 ROI Pooling的问题2.2 ROI Align三、ROI处理架构四、损失函数一、Mask-RCNN流程 Mask R-CNN是一个实例分割(Instance segmentation)算法,通过增加不同的分支&…

PTA_1_基础编程题目集

文章目录PTA--基础编程题目集1、简单输出整数函数接口定义:裁判测试程序样例:输入样例:输出样例:题解:2、多项式求和函数接口定义:裁判测试程序样例:输入样例:输出样例:题…

车载以太网 - 路由激活处理机制 - 04

在前面我们已经介绍过DoIP的路由激活,不过主要是介绍路由激活的相关的概念;今天我们主要来介绍下路由激活的处理逻辑,进一步的了解软件对路由激活的处理机制,让我们更深入的了解DoIP这块的处理逻辑,更加有助于我们的工作中开发和测试工作的进行。 首先我们简单看下…

Python中的三目(元)运算符

Python中的三目(元)运算符 官方说明 https://docs.python.org/zh-cn/3/faq/programming.html#is-there-an-equivalent-of-c-s-ternary-operator 是否提供等价于 C 语言 "?:" 三目运算符的东西?有的。 语法形式如下: [on_true] if [expre…

细说——JWT攻击

目录介绍什么是JWTJWT有什么用为什么引入JWTJWT的组成JWT 特征识别JWT、JWS与JWE生成JWT视频介绍JWT攻击一些靶场JWT 攻击的影响是什么?JWT 攻击的漏洞是如何产生的?如何在 Burp Suite 中使用 JWT防御JWT攻击攻击工具爆破密钥工具:jwtcrack爆…

一个普通程序员,记录自己沪漂的2022年,2023年1月5日

或许对于每个人而言,2022年都是很艰难的,都是充满曲折的,仅仅以文字记录下我的2022年,我的沪漂生活。 今天是2023年1月5日,昨天的我做了一个梦,梦到自己捡到很多手机,于是做到工位的第一件事就…

(5)Qt中的日期和时间

QDate 日期对象格式化 d - 没有前导零的日子 (1 to 31) dd - 前导为0的日子 (01 to 31) ddd - 显示(缩写) 周一、周二、周三、周四、周五、周六、周日 dddd - 显示(完整) 星期一、星期二、…

微服务三个阶段

微服务三个阶段微服务三个阶段:微服务1.0:仅使用注册发现,基于Spring Cloud 或 Dubbo开发。微服务2.0:使用熔断、限流、降级等服务治理策略,并配备完整微服务工具和平台。微服务3.0:Service Mesh将服务治理…

https安全传输揭秘

HTTPS是什么 我们知道HTTP是明文传输的,恶意的中间人和窃听者通过截取用户发送的网络数据包可以拿到用户的敏感信息。尤其是涉及网上交易,银行转账等操作更是危害极大。 HTTPS的核心是SSL/TLS安全协议层,该层位于应用层和传输层之间&#x…

初识异常(Java系列10)

目录 前言: 1.异常的概念 2.异常的分类 2.1编译时异常 2.2运行时异常 3.异常的处理 3.1如何抛出异常 3.2异常的捕获 3.2.1异常的声明 3.2.2try-catch捕获并处理 3.3异常的处理流程 4.自定义异常类 结束语: 前言: 相信在大家学…

Windows常用命令整理

之前写了一篇关于Windows快速打开服务_陌客依天涯的博客-CSDN博客_服务快捷键 的文章,有表示windows还有很多常用的,那就整理一下,分享跟多点,希望对大家有用。 1、mstsc /*快速开启远程连接客户端*/ 2、regedit /*快速打开注册…

AcWing 1227.分巧克力(二分)

一、题目信息 二、思路分析 先从数据范围入手,这道题的数据范围最大是10的5次方,这就说明我们解决问题时的用到的算法的时间复杂度要控制在O(n)O(n)O(n)或者O(nlog(n))O(nlog(n))O(nlog(n))。 而O(nlog(n))O(nlog(n))O(nlog(n))的算法中最常用的是二分或…

基于RateLimiter+Aop+自定义注解实现QPS限流

QPS秒级限流一、Aop二、自定义注解三、测试类实例QPS简介:QPS(Query Per Second),QPS 其实是衡量吞吐量(Throughput)的一个常用指标,就是说服务器在一秒的时间内处理了多少个请求 —— 我们通常…