Matlab|【免费】基于数据驱动的模型预测控制电力系统机组组合优化

news2024/9/27 17:25:58

目录

1 主要内容

2 部分代码

3 程序结果

4 下载链接


主要内容

该程序复现文章《Feature-Driven Economic Improvement for Network-Constrained Unit Commitment: A Closed-Loop Predict-and-Optimize Framework》,程序主要做的是一个基于数据驱动的电力系统机组组合调度模型,采用IEEE24节点系统作为研究对象,该模型的创新点在于:提出了一个闭环预测与优化(C-PO)框架,即利用NCUC模型的结构以及相关特征数据来训练一个以成本为导向的RES预测模型,该模型通过诱导的NCUC成本而不是统计预测误差来评估预测质量,并且在优化过程中采用拉格朗日松弛来加速训练过程,该模型理论深度较大,代码学习难度也较大,本次免费分享供相关方向同学参考。

原文模型及部分结果​:

部分代码

Number_day          = Validate_day_end - Validate_day_1st + 1;
First_day_intuition = Validate_day_1st;
Final_day_intuition = Validate_day_end;
Scaler_load         = 0.22;
Scaler_SPG          = 0.39;
Scaler_WPG          = 0.39;
R_for_load          = 0.10;
R_for_RES           = 0.05;
Method_flag         = 'CPO';
Number_hour         = 24;
Number_RES          = 5;
%% -----------------------------SPO tunning----------------------------- %%
lamda                 = 100000;
Number_training_day   = 2;
Number_day_H_validity = 7; % The frequency of updating Predictor H.
Number_historic_day   = 7;
Solver_flag           = 'g';
Solver_gap            = 3;
Solver_time           = 10;
%% -----------------------Prepare box for recorder---------------------- %%
% Rec for UC
Rec_Decision_UC_I    = cell(Number_day, 1);
Rec_Decision_UC_P    = cell(Number_day, 1);
Rec_Decision_UC_R_h  = cell(Number_day, 1);
Rec_Decision_UC_R_c  = cell(Number_day, 1);
Rec_cost_UC_expected = cell(Number_day, 1);
Rec_cost_UC_SUSD     = cell(Number_day, 1);
Rec_RES_prediction   = cell(Number_day, 1);
Rec_infea_UC_flag    = cell(Number_day, 1);
Rec_UC_time          = cell(Number_day, 1);
% Rec for ED
Rec_cost_ACT      = cell(Number_day, 1);
Rec_cost_UC       = cell(Number_day, 1);
Rec_cost_SUSD_all = cell(Number_day, 1);
Rec_cost_SUSD_UC  = cell(Number_day, 1);
Rec_cost_SUSD_ED  = cell(Number_day, 1);
Rec_cost_P        = cell(Number_day, 1);
Rec_cost_LS       = cell(Number_day, 1);
Rec_cost_loss_ACT = cell(Number_day, 1);
Rec_cost_loss_UC  = cell(Number_day, 1);
Rec_infea_ED_flag = cell(Number_day, 1);
%% --------------------------Prepare box for CPO------------------------ %%
% Cost
CPO_cost_ACT      = zeros(Number_day, 1);
CPO_cost_UC       = zeros(Number_day, 1);
CPO_cost_SUSD_all = zeros(Number_day, 1);
CPO_cost_SUSD_UC  = zeros(Number_day, 1);
CPO_cost_SUSD_ED  = zeros(Number_day, 1);
CPO_cost_P        = zeros(Number_day, 1);
CPO_cost_LS       = zeros(Number_day, 1);
CPO_cost_loss_ACT = zeros(Number_day, 1);
CPO_cost_loss_UC  = zeros(Number_day, 1);
% Flag
CPO_infeasible_UC = zeros(Number_day, 1);
CPO_infeasible_ED = zeros(Number_day, 1);
%% -------------------------Set updating frequency---------------------- %%
Number_period = ceil(Number_day/Number_day_H_validity);
if Number_period == floor(Number_day/Number_day_H_validity)
    Number_day_in_period_full           = Number_day_H_validity;
    Number_day_in_period_last           = Number_day_H_validity;
    Period_size_list                    = ones(Number_period,1);
    Period_1st_list                     = zeros(Number_period,1);
    Period_end_list                     = zeros(Number_period,1);
    Period_size_list(1:Number_period-1) = Number_day_in_period_full;
    Period_size_list(Number_period)     = Number_day_in_period_last;
end
if Number_period > floor(Number_day/Number_day_H_validity)
    Number_day_in_period_full           = Number_day_H_validity;
    Number_day_in_period_last           = Number_day - (Number_period - 1)*Number_day_H_validity;
    Period_size_list                    = ones(Number_period,1);
    Period_1st_list                     = zeros(Number_period,1);
    Period_end_list                     = zeros(Number_period,1);
    Period_size_list(1:Number_period-1) = Number_day_in_period_full;
    Period_size_list(Number_period)     = Number_day_in_period_last;
end
for i_period = 1:Number_period
    Period_1st_list(i_period) = (Validate_day_end+1) - sum(Period_size_list(i_period:end));
    Period_end_list(i_period) = (Validate_day_1st-1) + sum(Period_size_list(1:i_period));
end
%% ------------------Prepare box for training details------------------- %%
% Training detail
CPO_TRA_Predictor_H     = cell(Number_period, 1);
CPO_TRA_Predictor_H_ele = cell(Number_period, 1);
CPO_TRA_obj             = zeros(Number_period, 1);
CPO_TRA_cost_ERM        = zeros(Number_period, 1);
CPO_TRA_regulation      = zeros(Number_period, 1);
CPO_TRA_time            = zeros(Number_period, 1);
%% --------------------------Prepare box for pick----------------------- %%
Picked_TRA_intuition        = zeros(Number_training_day,Number_period);
Picked_TRA_feature          = cell(Number_period,1);
Picked_TRA_load_city        = cell(Number_period,1);
Picked_TRA_reserve_load_req = cell(Number_period,1);
Picked_TRA_reserve_RES_req  = cell(Number_period,1);
Picked_TRA_cost_perfect     = cell(Number_period,1);
%% ------------------------------Let's go------------------------------- %%
for Current_period = 1:Number_period
    Number_dispatch_day = Period_size_list(Current_period);
    Dispatch_day_1st    = Period_1st_list(Current_period);
    Dispatch_day_end    = Period_end_list(Current_period);
    %% -----------------------Select training day----------------------- %%
    [Picked_TRA_intuition(:,Current_period),...
     Picked_TRA_feature{Current_period},...
     Picked_TRA_load_city{Current_period},...
     Picked_TRA_reserve_load_req{Current_period},...
     Picked_TRA_reserve_RES_req{Current_period},...
     Picked_TRA_cost_perfect{Current_period}]...
         = Step_00_Select_train_day(Dispatch_day_1st,...
                                    Dispatch_day_end,...
                                    Number_training_day,...
                                    Number_dispatch_day,...
                                    Scaler_load,...
                                    Scaler_SPG,...
                                    Scaler_WPG,...
                                    R_for_load,...
                                    R_for_RES,...
                                    Number_historic_day);
    %% -----------------------------Setp 01----------------------------- %%
    [CPO_TRA_Predictor_H{Current_period},...
     CPO_TRA_Predictor_H_ele{Current_period},...
     CPO_TRA_obj(Current_period),...
     CPO_TRA_cost_ERM(Current_period),...
     CPO_TRA_regulation(Current_period),...
     CPO_TRA_time(Current_period)]...
     = Step_01_CPO_train(lamda,...
                         Scaler_load,...
                         Scaler_SPG,...
                         Scaler_WPG,...
                         Solver_flag, Solver_gap, Solver_time,...
                         Picked_TRA_feature{Current_period},...
                         Picked_TRA_load_city{Current_period},...
                         Picked_TRA_reserve_load_req{Current_period},...
                         Picked_TRA_reserve_RES_req{Current_period},...
                         Picked_TRA_cost_perfect{Current_period},...
                         Number_training_day,...
                         Method_flag);

程序结果

4 下载链接

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

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

相关文章

client-go中ListAndWatch机制,informer源码详解

文章首发地址: 学一下 (suxueit.com)https://suxueit.com/article_detail/s9UMb44BWZdDRfKqFv22 先上一张,不知道是那个大佬画的图 简单描述一下流程 client-go封装部分 以pod为例 、先List所有的Pod资源,然后通过已经获取的pod资源的最大版…

python—接口编写部分

最近准备整理一下之前学过的前端小程序知识笔记,形成合集。顺便准备学一学接口部分,希望自己能成为一个全栈嘿嘿。建议关注收藏,持续更新技术文档。 目录 前端知识技能树http请求浏览器缓存 后端知识技能树python_api:flaskflask…

保研复习概率论2

1.什么是随机变量的数学期望(expected value)? 如果X是离散型随机变量,其分布列为piP{Xxi}(i1,2...),若级数绝对收敛,则称随机变量X的数学期望存在,并将的和称为随机变量X的数学期望&#xff0…

大型网站集群管理负载均衡

课程介绍 结合企业大规模应用,解决应用高并发问题,解决单节点故障问题,缓存数据库的应用。学完掌握知识点:企业应用实现四七层负载均衡,以及Nginx等应用的高可用性,Redis缓存数据库的部署应用以及高可用方…

微软开源Garnet高性能缓存服务安装

Garnet介绍 Garnet是一款微软研究院基于C#开发而开源的高性能缓存服务,支持Windows、Linux多平台部署,Garnet兼容Redis服务API,在性能和使用架构上较Redis有很大提升(官方说法),并提供与Redis一样的命令操…

pycharm搭建新的解释器及删除处理

目录 1.创建虚拟环境 个人实际操作: 对于“继承全局站点包”: 2.创建一个新项目 3.删除操作 (1)删除解释器 (2)删除新建项目 1.创建虚拟环境 Pycharm官方文档说明网址: Configure a virt…

华为数通 HCIP-Datacom H12-831 题库补充

2024年 HCIP-Datacom(H12-831)最新题库,完整题库请扫描上方二维码,持续更新。 缺省情况下,PIM报文的IP协议号是以下哪一项? A:18 B:59 C:103 D:9 答案&a…

c#矩阵求逆

目录 一、矩阵求逆的数学方法 1、伴随矩阵法 2、初等变换法 3、分块矩阵法 4、定义法 二、矩阵求逆C#代码 1、伴随矩阵法求指定3*3阶数矩阵的逆矩阵 (1)伴随矩阵数学方法 (2)代码 (3)计算 2、对…

【科研基础】VAE: Auto-encoding Variational Bayes

[1]Kingma, Diederik P., and Max Welling. “Auto-encoding variational bayes.” arXiv preprint arXiv:1312.6114 (2013). [2] [论文简析]VAE: Auto-encoding Variational Bayes[1312.6114] [3] The Reparameterization Trick 文章目录 1-什么是VAE1.1-目标1.2-Intractab…

阿里云-零基础入门NLP【基于深度学习的文本分类3-BERT】

文章目录 学习过程赛题理解学习目标赛题数据数据标签评测指标解题思路BERT代码 学习过程 20年当时自身功底是比较零基础(会写些基础的Python[三个科学计算包]数据分析),一开始看这块其实挺懵的,不会就去问百度或其他人,当时遇见困难挺害怕的…

nodejs+vue高校社团管理小程序的设计与实现python-flask-django-php

相比于以前的传统手工管理方式,智能化的管理方式可以大幅降低学校的运营人员成本,实现了高校社团管理的标准化、制度化、程序化的管理,有效地防止了高校社团管理的随意管理,提高了信息的处理速度和精确度,能够及时、准…

信号处理--使用EEGNet进行BCI脑电信号的分类

目录 理论 工具 方法实现 代码获取 理论 EEGNet作为一个比较成熟的框架,在BCI众多任务中,表现出不俗的性能。EEGNet 的主要特点包括:1)框架相对比较简单紧凑 2)适合许多的BCI脑电分析任务 3)使用两种卷…

CHAT~(持续更新)

CHAT(持续更新) 实现一个ChatGPT创建API设计页面布局业务操作技术架构 编码其他 实现一个ChatGPT 创建API 最简单也最需要信息的一步 继续往下做的前提 此处省略,想要获取接口创建方式联系 设计 页面布局 按照官网布局 业务操作 注册登…

Vue 3 + TypeScript + Vite的现代前端项目框架

随着前端开发技术的飞速发展,Vue 3、TypeScript 和 Vite 构成了现代前端开发的强大组合。这篇博客将指导你如何从零开始搭建一个使用Vue 3、TypeScript以及Vite的前端项目,帮助你快速启动一个性能卓越且类型安全的现代化Web应用。 Vue 3 是一款渐进式Jav…

快速入门go语言

环境搭建 编译器安装 1、编译器下载地址 2、打开命令行模式,输入go version ide安装 ide下载地址 依赖管理 goproxy 1、goproxy代理地址 // 阿里云 https://mirrors.aliyun.com/goproxy // 微软 https://goproxy.io // 七牛 https://goproxy.cn 2、ide配置g…

初识 Redis 浅谈分布式

目 录 一.认识 Redis二.浅谈分布式单机架构分布式是什么数据库分离和负载均衡理解负载均衡数据库读写分离引入缓存数据库分库分表引入微服务 三.概念补充四.分布式小结 一.认识 Redis 在 Redis 官网我们可以看到介绍 翻译过来就是:数以百万计的开发人员用作缓存、…

阿里云倚天云服务器怎么样?如何收费?

阿里云倚天云服务器CPU采用倚天710处理器,租用倚天服务器c8y、g8y和r8y可以享受优惠价格,阿里云服务器网aliyunfuwuqi.com整理倚天云服务器详细介绍、倚天710处理器性能测评、CIPU架构优势、倚天服务器使用场景及生态支持: 阿里云倚天云服务…

人工智能之Tensorflow批标准化

批标准化(Batch Normalization,BN)是为了克服神经网络层数加深导致难以训练而诞生的。 随着神经网络的深度加深,训练会越来越困难,收敛速度会很慢,常常会导致梯度消失问题。梯度消失问题是在神经网络中,当前…

ffmpeg实现媒体流解码

本期主要讲解怎么将MP4媒体流的视频解码为yuv,音频解码为pcm数据;在此之前我们要先了解解复用和复用的概念; 解复用:像mp4是由音频和视频组成的(其他内容流除外);将MP4的流拆分成视频流(h264或h265等)和音频流(AAC或mp3等); 复用:就是将音频和视频打包成MP4或者fl…

数据可视化-ECharts Html项目实战(6)

在之前的文章中,我们学习了如何设置散点图、雷达图。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢数据可视化-ECharts Html项目实战(5&a…