基于分布鲁棒联合机会约束的能源和储备调度(Matlab代码实现)

💥 💥 💞 💞 欢迎来到本博客 ❤️ ❤️ 💥 💥


🏆 博主优势: 🌞 🌞 🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。


座右铭:行百里者,半于九十。

📋 📋 📋 本文目录如下: 🎁 🎁 🎁
目录
💥1 概述
📚2 运行结果
🎉3 文献来源
🌈4 Matlab代码实现

💥1 概述

本文为可再生能源渗透率高的联合电力和天然气系统的能源和储备调度制定了两阶段随机程序。数据驱动的分布式鲁棒机会约束确保了不存在高概率的甩负荷和可再生溢出。我们使用条件风险值近似和线性决策规则有效地解决了这个问题。样本外实验表明,该模型在没有机会约束的情况下主导了相应的随机程序,该程序明确地模拟了甩负荷和可再生能源溢出的影响。

风能、太阳能和潮汐能等可再生能源的增加部署极大地改变了发电结构。可再生能源虽然有利于可持续发展,但由于其间歇性和有限的可预测性,会损害输电系统的稳定性[27]。因此,广泛建造柔性燃气发电厂(GFPP),以取代退役的热电厂或核电站,以平衡不稳定的可再生能源发电,因此,电力和天然气系统的紧密耦合是可以预见的[28]。这种观点促使我们同时研究这两个系统在存在不确定的可再生能源的情况下,如果实际的可再生能源产量与其预测值不符,则日前调度可能无法实施。在这种情况下,传统发电厂需要实时调整其生产水平。如果在某些极端情况下,这些发电厂不够灵活,无法恢复输电系统的完整性,那么可再生能源泄漏或甩负荷可能变得必要。然而,这种激烈的措施带来了高昂的经济成本。

能源和储备调度问题可以通过鲁棒优化[3]、随机规划[26]和机会约束规划[24]的方法来解决。稳健的优化模型最大限度地降低了日前调度的成本,以及在规定的不确定性集合内最坏情况下实现可再生预测误差的纠正补救措施[4,35]。然而,对最坏情况的关注以及在线性决策规则中解决更大问题实例的必要性可能会导致过于保守的解决方案

另一方面,随机规划模型在规定的离散分布下使预期成本最小化[21,23],但除非离散点的数量随问题维度呈指数增长,否则其解决方案可能表现出较差的样本外性能。最后,机会约束规划模型不考虑可再生能源泄漏和甩负荷,但确保在没有这些严重的补救措施的情况下,系统保持高概率稳定[5,18,25]。当难以或甚至不可能以有意义的方式将追索权和不可行性货币化时,机会受限的编程公式尤其具有吸引力。不利的是,这些公式通常不能保证产生可行的可实施的第一阶段解决方案。

本文的结果表明,为了最小化样本外成本,解决分布式鲁棒机会约束程序可能比(看起来更现实的)两阶段分布式鲁棒优化问题更好。这可能令人惊讶,因为机会约束计划忽略了所有低概率情况,在这些情况下,电力系统的稳定性只能通过成本高昂的追索行动(如甩负荷和可再生能源泄漏)来维持,而两阶段问题说明了所有可能的情况,并真实地模拟了必要的追索行动及其成本。

📚2 运行结果

文章运行结果:

部分代码:

function[sol] = DRO_CVaR_ICC(si,DRO_param,jcc)

% This script implements the Bonferroni approximation

yalmip('clear')

% Getting the number of thermals power plants, wind farms, scenarions,

% transmission lines and nodes

Nunits = size(si.Pmax,1);

Nwind = size(si.Wmax,1);

Nscen = size(si.Wscen,2);

% Definition of variables

p = sdpvar(Nunits, 1); % Day-ahead power production from thermal power plants

ru = sdpvar(Nunits, 1); % Upward reserve dispatch from thermal power plants

rd = sdpvar(Nunits, 1); % Downward reserve dispatch from thermal power plants

Y = sdpvar(Nunits, Nwind, 'full'); % Linear decision rule for real-time power production

s_obj = sdpvar(1, Nscen); % sigma variable for obj

lambda_obj = sdpvar(1, 1); % lambda variable for obj

% create x by stacking up p, ru and rd

x = [p; ru; rd];

% Constraints set

CS = [];

% Day-ahead constraints

CS = [CS, si.Pmin <= p - rd, p + ru <= si.Pmax, 0 <= ru <= si.ResCap, 0 <= rd <= si.ResCap];

CS = [CS, sum(p) + sum(si.Wmax.*si.mu) - sum(si.D) == 0];

CS = [CS, sum(Y, 1) == -si.Wmax'];

% Run a for-loop to add the constraints related to the individual cvar

% The set of code below is generic, it can be copied and paste for any

% structure joint chance constraint of interest

% find the number of Individual chance constraints we have

nICC = 0;

for j=1:size(jcc, 1)

nICC = nICC + size(jcc{j, 1}, 1);

end

for j=1:size(jcc, 1)

A_C{j,1} = jcc{j,1};

B_C{j,1} = jcc{j,2};

C_C{j,1} = jcc{j,3};

b_C{j,1} = jcc{j,4};

end

A = cell2mat(A_C);

B = cell2mat(B_C);

C = cell2mat(C_C);

b = cell2mat(b_C);

for j=1:size(jcc, 1)

eps_C(j) = jcc{j,5}/size(jcc{j, 1}, 1);

end

eps = [repmat(eps_C(1),size(jcc{1, 1}, 1),1);repmat(eps_C(2),size(jcc{2, 1}, 1),1);repmat(eps_C(3),size(jcc{3, 1}, 1),1)];

% create variables

s = sdpvar(nICC, Nscen, 'full');

lambda = sdpvar(nICC, 1);

tau = sdpvar(nICC, 1);

for j = 1:nICC

CS = [CS, DRO_param.rho*lambda(j) + sum(s(j, :))/Nscen <= 0];

CS = [CS, tau(j) <= s(j,:)];

CS = [CS, (1 - 1/eps(j))*repmat(tau(j), 1, Nscen) + 1/eps(j)*( repmat(A(j,:)*x - b(j), 1, Nscen) + (B(j,:)*Y+C(j,:))*si.xi ) <= s(j,:) ];

CS = [CS, norm(1/eps(j)*(B(j,:)*Y + C(j,:)), DRO_param.dual_norm) <= lambda(j)];

end

% Build the objective function

Obj = si.Cr1'*ru + si.Cr2'*rd + si.C'*p + DRO_param.rho*lambda_obj + 1/Nscen * sum(s_obj);

CS = [CS, si.C'*Y*si.xi <= s_obj];

CS = [CS, norm( Y' * si.C, DRO_param.dual_norm) <= lambda_obj];

% Settings

optim_options = sdpsettings('solver', 'gurobi','gurobi.TimeLimit',1000,'gurobi.NumericFocus',3,'verbose',0);

% Solve

sol = optimize(CS, Obj, optim_options);

sol.p = value(p);

sol.Y = value(Y);

sol.ru = value(ru);

sol.rd = value(rd);

sol.Y = value(Y);

sol.fy = si.Qg*value(p) + si.Qw*si.DiagWmax * si.mu - si.Qd*si.D;

sol.fY = si.Qg*value(Y) + si.Qw*si.DiagWmax;

sol.q = si.PG * value(p);

sol.qY = si.PG * value(Y);

sol.Obj = value(Obj);

sol.Flag = sol.problem;

end

🎉3 文献来源

部分理论来源于网络,如有侵权请联系删除。

🌈4 Matlab代码实现

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CloudCompare二次开发之如何通过PCL进行点云滤波?

文章目录 0.引言1.CloudCompare界面设计滤波(filter)按钮2.PassThrough直通滤波器3.VoxelGrid体素滤波器4.UniformSampling均匀采样5.StatisticalOutlierRemoval统计滤波器6.RadiusOutlierRemoval半径滤波器7.ConditionRemoval条件滤波器8.ProjectInliers投影滤波器9.ModelOutl…

写给程序员Android Framework 开发,

前言 在 Android 开发者技能中&#xff0c;如果想进大厂&#xff0c;一般拥有较好的学历可能有优势一些。但是如果你靠硬实力也是有机会的&#xff0c;例如死磕Framework。Framework 知识广泛应用在Android各个领域中&#xff0c;重要性显而易见。 成为一名Android Framework…

maven学习总结

生命周期 每个生命周期的各个环节都是由各种插件完成&#xff01;&#xff01;&#xff01;Maven有三个相互独立的生命周期&#xff08;Maven的这三个生命周期不能看成一个整体&#xff09;&#xff01;&#xff01;&#xff01; 我们在开发中描述的项目的生命周期&#xff0…

互联网营销之何谓真需求-想知道如何挖掘真需求看这篇就对了

互联网营销思维是以爆品为核心的迭代思维&#xff0c;本文结合“生日蛋糕”、“方便面”、“蜜雪冰城”几个小例子&#xff0c;以及我们具体的工作&#xff0c;展开聊聊什么是“真需求”。 1. 互联网营销和传统营销的区别 1.1 传统的营销思维&#xff1a; “定位4P&#xff0…

如何修复d3dcompiler_47.dll缺失?多种解决方法分享

在使用Windows操作系统的过程中&#xff0c;有时候会遇到d3dcompiler_47.dll缺失的情况。这个问题可能会导致某些应用程序无法正常运行&#xff0c;因此需要及时解决。本文将介绍如何修复d3dcompiler_47.dll缺失的问题。 一.什么是d3dcompiler_47.dll D3dcompiler_47.dll是Di…

基于html+css图展示57

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

前后端图片交互的简易方式

前后端图片交互的简易方式 一、交互方式说明二、前后端具体代码实现前端具体代码实现后端具体代码实现效果 测试结果 一、交互方式说明 在项目的实际开发中&#xff0c;难免会遇到前端需要渲染数据库中保存的图片&#xff0c;那咱知道图片也属于一种文件&#xff0c;不好保存到…

【零基础QQ机器人开发三】程序上云篇

前言&#xff1a;本文为大家带来QQ机器人程序上云的教程&#xff0c;环境搭建请参考下面链接 【0基础QQ机器人开发】基于go-cqhttp的QQ机器人开发教程,仅供自学 【零基础QQ机器人开发二】服务器篇 文章目录 程序Logger类StatuStore类MultiFunc类QQBot类main.py 前言&#xff1a…

高级Web题库

高级Web题库 For ZPT 声明 一切开发旨在学习&#xff0c;请勿用于非法用途 by rick rick 关注 永雏塔菲喵 永雏塔菲喵 选择题 第1题 知识点&#xff1a;CSS 题目&#xff1a;设置text-decoration属性的删除线的值为&#xff08; &#xff09;。 选项&#xff1a; A underlin…

Pytest自动化测试框架一些常见的插件

Pytest拥有丰富的插件架构&#xff0c;超过800个以上的外部插件和活跃的社区&#xff0c;在PyPI项目中以“ pytest- *”为标识。 本篇将列举github标星超过两百的一些插件进行实战演示。 插件库地址&#xff1a;http://plugincompat.herokuapp.com/ 1、pytest-html&#xff…

冗余-安全设计的基石

冗余构成原理就是在系统中采用2套中央处理器&#xff08;CPU&#xff09;单元&#xff0c;其中1套为工作主机&#xff0c;1套为热备&#xff0c;一旦工作主机发生故障&#xff0c;热备的CPU将自动投入工作&#xff0c;此时热备的CPU变为工作主机&#xff0c;原工作主机故障处理…

a标签属性href的多种写法

众所周知&#xff0c;a标签的最重要功能是实现超链接和锚点。而且&#xff0c;大多数人认为a标签最重要的作用是实现超链接&#xff0c;其实不单单是实现超链接的方法&#xff0c;今天新起点博客就来整理下a标签中href的几种用法。 1、a href“[removed]js_method();” 这是常用…

Android aidl及binder基础知识巩固

作者&#xff1a;义华 1、什么是binder binder是android framework提供的&#xff0c;用于跨进程方法调用的机制&#xff0c;具有安全高效等特点。 我们知道&#xff0c;在 Android 系统中&#xff0c;每个应用程序都运行在一个独立的进程中&#xff0c;各个进程之间需要进行…

chatGPT提问,BGP内容

ChatGPT提问&#xff1a;提问框架 背景角色任务要求 动态路由&#xff1a;内部网关协议&#xff1a;如RIP ISIS OSPF 在同一个公司内部运行的路由协议 外部网关协议&#xff1a;如 BGP 在不同公司之间运行的路由协议 AS&#xff1a;自治系统 每个自治系统都有唯一的…

玩机搞机-----安卓全机型 ADB FAST 各种指令解析说明与操作【二】基础联机

安卓全机型 玩机 搞机 ADB FAST 各种指令解析说明与操作_adb线刷命令_安卓机器的博客-CSDN博客 今天对上个帖子不足的地方进行补正。方便友友进行基础的联机操作&#xff0c;很多时候我们用adb指令的时候会有各种奇奇怪怪的问题。例如同一个机型&#xff0c;同一个指令。有时候…

OpenCL编程指南-4.4矢量操作符

矢量操作符 如下描述了可用于矢量数据类型或矢量和标量数据类型组合的各类操作符。 算术操作符 算术操作符&#xff08;加&#xff08;)、减&#xff08;–)、乘&#xff08;*&#xff09;和除&#xff08;/)&#xff09;&#xff0c;可以作用于内置整数、浮点标量和矢量数…

AWS 中的另外一种远程工具 AWS Session Manager

作者&#xff1a;SRE运维博客 博客地址&#xff1a;https://www.cnsre.cn/ 文章地址&#xff1a;https://www.cnsre.cn/posts/230129126154/ 相关话题&#xff1a;https://www.cnsre.cn/tags/aws/ 背景需求 因为项目的安全性。为了避免项目的服务器暴露在公网中。很多时候我们…

Python时间模块:time和datetime的区别与用法

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 目录标题 前言一. Python中表示时间的两种方式&#xff1a;二. time三. datetime1. datetime.datetime2.datetime.timedelta 尾语 &#x1f49d; 一. Python中表示时间的两种方式&#xff1a; 时间戳&#xff1a;相对于197…

OpenCL编程指南-3.2OpenCL上下文

OpenCL上下文 上下文是所有OpenCL应用的核心。上下文为关联的设备、内存对象&#xff08;例如&#xff0c;缓冲区和图像&#xff09;以及命令队列&#xff08;在上下文和各设备之间提供一个接口&#xff09;提供了一个容器。正是上下文驱动着应用程序与特定设备以及特定设备之…

Echarts 热力图的详细配置过程

文章目录 一&#xff0c;配置过程二&#xff0c;具体实例 一&#xff0c;配置过程 引入Echarts库和热力图插件 <script src"https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script> <script src"https://cdn.jsdelivr.net/npm/…