27.EI文章复现《高比例清洁能源接入下计及需求响应的配电网重构》

下载地址:高比例清洁能源接入下计及需求响应的配电网重构

1主要内容

该程序复现《高比例清洁能源接入下计及需求响应的配电网重构》,以考虑网损成本、弃风弃光成本和开关操作惩罚成本的综合成本最小为目标,针对配电网重构模型的非凸性,引入中间变量并对其进行二阶锥松弛,构建混合整数凸规划模型,采用改进的 IEEE33 节点配电网进行算例仿真,分析了需求响应措施和清洁能源渗透率对配电网重构结果的影响。该程序复现效果和出图较好(详见程序结果部分),注释清楚,方便学习!

注意:该程序运行环境为matlab+mosek,需要各位同学下载并安装mosek求解器,通过官网可以申请学术许可,可免费使用365天。

图片

  • 目标函数

目标函数为配电网综合运行成本最小,其中考虑了网损成本、弃风弃光成本以及分段开关操作惩罚成本。

图片

  • 重要约束条件

常规的功率平衡、节点电压电流等约束不再赘述,重点分析一下网络结构约束和需求响应约束。

网络结构约束:

配电网在重构过程中需满足连通性约束与辐射状约束,具体模型为:

图片

该网络结构约束是采用虚拟潮流方式,之前有几个重构代码也是采用虚拟潮流形式,参考的是《A New Model for Resilient Distribution Systems by Microgrids Formation》,具体模型如下:

图片

仔细观察不难发现,上面的模型是下面的简洁版,在不考虑分布式电源节点对网络切割情况下,两者是等价的。

经验证(见结果图最后一张),该种约束方式下能够保证网络的连通性和辐射性。

需求响应约束:

在配电网中采用需求响应策略,可以在降低负荷峰谷差的同时,减少配电网运行的综合成本,提高配电网运行的经济性和可靠性。

图片

在该模型中,电价弹性系数为已知量,需求响应前后总负荷保持一致。

2部分代码

%% 系统参数mpc = IEEE33;% 风光负荷曲线P_wind0=[0.21 0.07 0.11 0.21 0.38 0.42 0.12 0.19 0.22 0.47 0.55 0.71 0.80 0.99 0.89 0.99 0.99 0.98 0.99 0.99 0.98 0.77 0.61 0.19];P_pv0=[0 0 0 0 0.17 0.24 0.40 0.54 0.60 0.51 0.35 0.29 0.27 0.25 0.18 0.10 0.06 0 0 0 0 0 0 0];P_L0=[0.37 0.33 0.31 0.28 0.27 0.28 0.28 0.27 0.26 0.24 0.30 0.76 0.82 0.86 0.76 0.54 0.43 0.65 0.81 0.95 0.99 0.91 0.65 0.19];nb=33;                                      % 节点数ns=1;                                       % 电源节点数nl=37;                                      % 支路数n_pv=2;                                     % 光伏数n_wind=3;                                   % 风机数n_ess=2;                                    % 储能数T=24;                                       % 调度时段总数F=0.6;                                      % 渗透率P_DG=sum(mpc.bus(:,3))*F/mpc.baseMVA/5;     % DG额定容量P_wind_max=P_DG*P_wind0;                    % 风机最大有功P_pv_max=P_DG*P_pv0;                        % 光伏最大有功P_load=mpc.bus(:,3)/mpc.baseMVA*P_L0;     % 有功负荷Q_load=mpc.bus(:,4)/mpc.baseMVA*P_L0;       % 无功负荷Sij_max=15/mpc.baseMVA;                     % 支路功率最大值r_ij=mpc.branch(:,3)*ones(1,T);             % 线路电阻x_ij=mpc.branch(:,4)*ones(1,T);             % 线路电抗wind=[9 25 32];                             % 风机接入位置pv=[17 22];                                 % 光伏接入位置ess=[7 25];                                 % 储能接入位置Umax=[1;1.06*1.06*ones(32,1)];              % 电压上限的平方Umin=[1;0.94*0.94*ones(32,1)];              % 电压下限的平方I_max=10;                                   % 电流上限值P_ch_max=0.2/mpc.baseMVA;                   % 充电功率上限0.2MWP_dis_max=0.2/mpc.baseMVA;                  % 放电功率上限0.2MWE_min=0.15/mpc.baseMVA;                     % 储能容量下限0.15MWhE_max=0.8/mpc.baseMVA;                      % 储能容量上限0.8MWhn_ch=0.9;                                   % 充电效率为0.9n_dis=0.85;                                 % 放电效率为0.85E0=0.3/mpc.baseMVA;                         % 初始荷电状态为0.3MWhQ_CB_st=0.15/mpc.baseMVA;                   % 单个电容器无功补偿容量0.15MvarN_CB_max=5;                                 % 最大可投切电容器数目ksai=0.5;                                   % 弹性系数c1=3;                                       % 网络损耗成本系数3元/kWhc2=1.2;                                     % 弃风弃光惩罚系数1.2元/kWhc3=15;                                      % 分段开关操作惩罚成本系数15元/次rho=zeros(1,24);                            % 分时电价rho([12:15,19:23])=1.026;                   % 峰时电价rho([7:11,16:18])=0.691;                    % 平时电价rho([1:6,24])=0.2561;                       % 谷时电价rho0=0.35;                                  % 初始节点电价为0.35元/kWhM=1.1*1.1 - 0.9*0.9;                        % 中间变量                   P_g_max=10/mpc.baseMVA;                     % 电源有功功率最大值Q_g_max=10/mpc.baseMVA;                     % 电源无功功率最大值branch_to_node=zeros(nb,nl);                % 流入节点的支路branch_from_node=zeros(nb,nl);              % 流出节点的支路for k=1:nl    branch_to_node(mpc.branch(k,2),k)=1;     %举例说明,k=1,流入节点2是支路1;同时流出节点1的是支路1;同理,k=2,流入节点3且流出节点2的是支路2;这一步建立支路和节点的连接关系    branch_from_node(mpc.branch(k,1),k)=1;end
%% 优化变量alpha_ij=binvar(nl,1);                      % 支路开断情况U_i=sdpvar(nb,T);                           % 电压的平方I_ij=sdpvar(nl,T);                          % 电流的平方P_ij=sdpvar(nl,T);                          % 线路有功功率Q_ij=sdpvar(nl,T);                          % 线路无功功率P_wind=sdpvar(n_wind,T);                    % 风机输出功率P_pv=sdpvar(n_pv,T);                        % 光伏输出功率Q_wind=sdpvar(n_wind,T);                    % 风机输出功率Q_pv=sdpvar(n_pv,T);                        % 光伏输出功率P_ch=sdpvar(n_ess,T);                       % 储能充电功率P_dis=sdpvar(n_ess,T);                      % 储能充电功率y_ch=binvar(n_ess,T);                       % 储能充电状态y_dis=binvar(n_ess,T);                      % 储能放电状态E_ESS=sdpvar(n_ess,T);                      % 储能荷电状态N_CB=intvar(1);                             % 投切的电容器数量P_cur=sdpvar(nb,T);                         % 需求响应后的负荷量P_g=sdpvar(nb,T);                           % 节点注入有功Q_g=sdpvar(nb,T);                           % 节点注入无功P_g_dot=sdpvar(nb,1);                       % 虚拟电源P_L_dot=ones(nb,1);                         % 虚拟负荷P_ij_dot=sdpvar(nl,1);                      % 虚拟功率
%% 约束条件Constraints = [];%% 1.潮流约束m_ij=(1-alpha_ij)*M*ones(1,T); Constraints = [Constraints, P_g-P_cur+branch_to_node*P_ij-branch_to_node*(I_ij.*r_ij)-branch_from_node*P_ij == 0];Constraints = [Constraints, Q_g-Q_load+branch_to_node*Q_ij-branch_to_node*(I_ij.*x_ij)-branch_from_node*Q_ij == 0];Constraints = [Constraints,U_i(mpc.branch(:,1),:)-U_i(mpc.branch(:,2),:)<= m_ij + 2*r_ij.*P_ij + 2*x_ij.*Q_ij - ((r_ij.^2 + x_ij.^2)).*I_ij];Constraints = [Constraints,U_i(mpc.branch(:,1),:)-U_i(mpc.branch(:,2),:)>= -m_ij + 2*r_ij.*P_ij + 2*x_ij.*Q_ij - ((r_ij.^2 + x_ij.^2)).*I_ij];for k=1:nl    for t=1:T        Constraints = [Constraints, cone([2*P_ij(k,t) 2*Q_ij(k,t) I_ij(k,t)-U_i(mpc.branch(k,1),t)],I_ij(k,t)+U_i(mpc.branch(k,1),t))];    endendConstraints = [Constraints, Sij_max^2*alpha_ij*ones(1,T) >= P_ij.^2+Q_ij.^2];Constraints = [Constraints, I_max.^2.*alpha_ij*ones(1,T) >= I_ij , I_ij >= 0];Constraints = [Constraints, Umin*ones(1,T) <= U_i,U_i <= Umax*ones(1,T)];
%% 2.拓扑约束Constraints = [Constraints , sum(alpha_ij) == nb-ns];Constraints = [Constraints , P_g_dot(2:33) == 0 , P_g_dot(1) <= nb];Constraints = [Constraints , P_g_dot-P_L_dot+branch_to_node*P_ij_dot-branch_from_node*P_ij_dot == 0];
%% 3.DG功率约束Constraints = [Constraints , P_pv >= 0 , P_wind >= 0];Constraints = [Constraints , P_pv <= ones(n_pv,1)*P_pv_max , P_wind <= ones(n_wind,1)*P_wind_max];
%% 4.储能约束Constraints = [Constraints , P_ch >= 0 , P_dis >= 0 , y_ch+y_dis <= 1];Constraints = [Constraints , P_ch <= y_ch*P_ch_max , P_dis <= y_dis*P_dis_max];Constraints = [Constraints , E_ESS(:,1) ==n_ch*P_ch(:,1)-1/n_dis*P_dis(:,1)+E0];Constraints = [Constraints , E_ESS >= E_min , E_ESS <= E_max];for t=2:T    Constraints = [Constraints , E_ESS(:,t) ==n_ch*P_ch(:,t)-1/n_dis*P_dis(:,t)+E_ESS(:,t-1)];

3程序结果

图片

图片

图片

图片

图片

图片

图片

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyTorch实战-实现神经网络图像分类基础Tensor最全操作详解(一)

目录 前言 一、PyTorch数据结构-Tensor 1.什么是Tensor 2.数据Tensor使用场景 3.张量形态 标量&#xff08;0D 张量&#xff09; 向量&#xff08;1D 张量&#xff09; 矩阵(2D张量) 3D 张量与高维张量 二、Tensor的创建 1. 从列表或NumPy数组创建 2. 使用特定的初始…

5.10.WebRTC接口宏

那今天呢&#xff1f;我给大家介绍一下web rtc的接口宏&#xff0c;那之所以在现成的章节中要介绍接口宏。是由于接口在调用的过程中啊&#xff0c;会发生线程的切换&#xff0c;所以把接口宏这部分知识我们放在线程这一章还算比较合适的。 那另外呢&#xff0c;我们对于接口…

分库分表---理论

目录 一、垂直切分 1、垂直分库 2、垂直分表 3、垂直切分优缺点 二、水平切分 1、水平分库 2、水平分表 3、水平切分优缺点 三、数据分片规则 1、Hash取模分表 2、数值Range分表 3、一致性Hash算法 四、分库分表带来的问题 1、分布式事务问题 2、跨节点关联查询…

IT运维:利用数据分析平台采集Windows event log数据

概述 本文将介绍如何借助Winlogbeat和Vector在鸿鹄里采集Windows event log数据&#xff0c;使技术人员能够在鸿鹄里更便捷和高效地分析Windows event log数据。 操作步骤 Winlogbeat是一个开源的日志数据采集器&#xff0c;专门用于采集Windows操作系统中的event log数据。它可…

C语言之指针进阶篇(3)

目录 思维导图 回调函数 案例1—计算器 案例2—qsort函数 关于qsort函数 演示qsort函数的使用 案例3—冒泡排序 整型数据冒泡排序 回调函数搞定各类型冒泡排序 cmp_int比较大小 cmp传参数 NO1. NO2. 解决方案 交换swap 总代码 今天我们学习指针难点之回调函数…

支付宝小程序排名优化,一个小白的成长手记

那是一个风和日丽的周末早上,阳光透过窗帘洒进屋内,温暖了我的双脚。这是我加入新公司的第一个周末,我坐在桌前,满怀激情地准备开发我的第一个支付宝小程序。【名即薇】 经过两天两夜的奋战,我终于完成了一个初版的支付宝小程序。是一个集美食资讯、餐厅点评、外卖订餐于一体的…

连nil切片和空切片一不一样都不清楚?那BAT面试官只好让你回去等通知了。

连nil切片和空切片一不一样都不清楚&#xff1f;那BAT面试官只好让你回去等通知了。 问题 package mainimport ("fmt""reflect""unsafe" )func main() {var s1 []ints2 : make([]int,0)s4 : make([]int,0)fmt.Printf("s1 pointer:%v, s2 p…

两种方法教你在postman设置请求里带动态token

问题描述 在使用postman调试接口时&#xff0c;遇到一些需要在请求里加上token的接口&#xff0c;若token出现变化&#xff0c;需要手动修改接口的token值&#xff0c;带来重复的工作量&#xff0c;翻看postman使用手册后&#xff0c;我发现了两种方法可以解决这个问题。 01 …

MySQL之数据类型

目录 一、MySQL数据类型分类 二、数值类型 1、整数类型 2、bit类型 3、小数类型 三、字符串类型 1、char 2、varchar 3、char和varchar比较 四、日期和时间类型 五、enum和set 一、MySQL数据类型分类 MySQL 数据类型可以大致分为以下三类&#xff1a; 数值类型&#xff1a;用于…

git快速查看某个文件修改的所有commit

1. git blame file git blame 可以显示历史修改的每一行记录,有时候我们只想了解某个文件一共提交几次commit,只显示commit列表,这种方式显然不满足要求。 2.git log常规使用 (1)显示整个project的所有commit (2)显示某个文件的所有commit 这是git log不添加参数的常规…

.Net MVC 使用Areas后存在相同Controller时报错的解决办法; 从上下文获取请求的Area名及Controller名

先来说个额外的问题&#xff1a;如何在请求上下文&#xff08;比如过滤器的中&#xff09;获取请求对应的Area和Controller 名字&#xff1f;&#xff08;假设请求上下文对象为 filterContext &#xff09;&#xff1a; 1. 获取Area名: (string)filterContext.RouteData.DataTo…

Windows下防火墙端口配置

在电脑或者服务器上部署某个应用后&#xff0c;如果需要对外提供服务可能就需要在主机防火墙上设置开启需要的端口&#xff0c;那么具体怎样操作呢 1.打开windows防火墙 2.设置防火墙入站规则 如下图“高级安全Windows Defender 防火墙”页面&#xff0c;点击左侧“入站规则”…

并联电容器交流耐压试验方法

对被试并联电容器两极进行充分放电。 检查电容器外观、 污秽等情况, 判断电容器是否满足试验要求状态。 用端接线将并联电容器两极短接连接湖北众拓高试工频耐压装置高压端, 外壳接地。 接线完成后经检查确认无误, 人员退出试验范围。 接入符合测试设备的工作电源&#xff0c;…

[Linux]进程间通信--管道

[Linux]进程间通信–管道 文章目录 [Linux]进程间通信--管道进程间通信的目的实现进程间通信的原理匿名管道匿名管道的通信原理系统接口管道特性管道的协同场景管道的大小 命名管道使用指令创建命名管道使用系统调用创建命名管道 进程间通信的目的 数据传输&#xff1a;一个进…

【多线程】常见的锁策略

常见的锁策略 1. 乐观锁 vs 悲观锁2. 读写锁 vs 普通互斥锁3. 重量级锁 vs 轻量级锁4. 自旋锁&#xff08;Spin Lock&#xff09;vs 挂起等待锁5. 公平锁 vs 非公平锁6. 可重入锁 vs 不可重入锁7. Synchronized8. 相关面试题 1. 乐观锁 vs 悲观锁 悲观锁&#xff1a; 总是假设…

GStreamer MIME类型

MIME type的全称是 Multipurpose Internet Mail Extensions (MIME) &#xff0c;可以标志一个文件的类型。 Table of Audio Types Media Type Description All audio types. audio/* All audio types channels integer channel-mask bitmask format string layou…

NLP机器翻译全景:从基本原理到技术实战全解析

目录 一、机器翻译简介1. 什么是机器翻译 (MT)?2. 源语言和目标语言3. 翻译模型4. 上下文的重要性 二、基于规则的机器翻译 (RBMT)1. 规则的制定2. 词典和词汇选择3. 限制与挑战4. PyTorch实现 三、基于统计的机器翻译 (SMT)1. 数据驱动2. 短语对齐3. 评分和选择4. PyTorch实现…

MybatisPlus分页插件使用

一. 效果展示 二. 代码编写 2.1 pom <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version> </dependency>2.2 添加配置类 Configuration MapperScan(…

软考知识汇总--结构化开发方法

文章目录 1 结构化开发2 耦合3 内聚4 设计原则5 系统文档6 数据流图6.1 数据流图的基本图形元素 7 数据字典 1 结构化开发 结构化方法总的指导思想是自顶向下、逐层分解&#xff0c;它的基本原则是功能的分解与抽象。它是软件工程中最早出现的开发方法&#xff0c;特别适合于数…

U3D外包开发框架及特点

U3D&#xff08;Unity3D&#xff09;是一款流行的跨平台游戏开发引擎&#xff0c;用于创建2D和3D游戏以及交互性应用程序。U3D有许多常用的开发框架和库&#xff0c;这些框架和库可以扩展其功能&#xff0c;使开发人员更轻松地构建游戏和应用程序。以下是一些常用的U3D开发框架…