(文章复现)《高比例清洁能源接入下计及需求响应的配电网重构》(含matlab代码)

news2024/12/23 13:29:38

1.引言

        配电网重构作为配电网优化运行的手段之一,通过改变配电网的拓扑结构,以达到降低网损、改善电压分布、提升系统的可靠性与经济性等目的。近年来,随着全球能源消耗快速增长以及环境的日趋恶化,清洁能源飞速发展,分布式电源(Distributed Generator, DG)大量接入配电网中。DG 因其随机性和波动性,大量接入给配电网带来巨大冲击,也给配电网重构带来严峻的挑战,因此有必要研究适用于高比例清洁能源接入下的配电网重构方法。本文在高比例清洁能源接入的背景下,提出计及需求响应的配电网重构模型,有效利用需求响应进一步降低配电网重构费用并减少弃风弃光率,提高配电网对清洁能源的消纳能力。在求解算法方面,本文基于混合整数二阶锥规划对配电网重构模型进行求解,针对配电网重构的非凸模型,通过引入中间变量并对配电网重构模型进行合理二阶锥松弛,获得混合整数凸规划模型并进行求解。

2.原理介绍

2.1目标函数

        以提高清洁能源的消纳率、减小配电网的运行成本为目标,本文在高比例清洁能源接入背景下提出了考虑需求响应的配电网重构模型。该模型的目标函数为配电网综合运行成本最小,其中考虑了网损成本、弃风弃光成本以及分段开关操作惩罚成本。目标函数的计算方法如式(1)所示。

2.2约束条件

①.潮流约束:

这篇文章采用了极坐标形式描述节点电压功率平衡约束,比较少见。而且功率平衡表达式存在问题,只有节点功率而没有将负荷与电源功率分开。因此我们采用通常的做法,是使用DistFlow模型约束系统潮流:

②.节点电压约束

在进行配电网重构时,配电网中节点电压需要满足上下限约束,即

③.支路电流约束

④.DG功率约束

⑤.网络结构约束

        原文中的公式(9)存在一定的问题,采用虚拟潮流约束还需加上虚拟电源,不然无法平衡。

⑥.储能约束

⑦.电容器约束

⑧.需求响应约束

3.文献中的问题分析

3.1 参数取值不全

        文献中部分参数的取值没有提供,代码里参考其他文献给这些参数设定了值:

        网络损耗成本系数c1为1元/kWh、弃风弃光惩罚系数1.2元/kWh,c2为以及分段开关操作惩罚成本系数c3为15元/次;

        支路最大电流设定为2pu,节点电压上下限分别设定为1.06和0.94;

        储能充放电功率上限值设定为0.2MW,容量上下限分别设定为0.15/0.8MWh,充放电效率分别为0.9/0.85,初始荷电状态设定为0.3MWh;

3.2 潮流约束不正确

        文献中没有给出潮流平衡约束,式(5)中只有节点功率表达式,而且没有和节点负荷、支路功率以及电源输出功率相关联,无法实现功率平衡。为了模型求解,我在代码里使用的是最常用的二阶锥松弛后的DistFlow潮流约束。详细介绍可以参考我的之前的博客:

基于混合整数二阶锥(MISOCP)的配电网重构(附matlab代码)

        另外,虚拟潮流约束中,漏了虚拟电源,同样无法实现功率平衡(只有负荷和支路功率,没有电源咋平衡),在代码中同样需要加上。

3.3 需求响应模型描述不清

        文献对需求响应约束进行描述时,没有解释变量ρi,t的含义,导致模型难以理解,对此我是这样理解的:

        变量ρi,t代表没有实施需求响应之前的电价,是一个固定值。实施需求响应后,电价由固定值改为分时电价,负荷高峰期电价很高,平时段电价一般,谷时段电价较低,所以就可以引导一些负荷从高峰段转移到谷时段用电,达到降低负荷峰谷差的目的。初始固定电价没有提供,我在代码里假设为0.35元/kWh。

        另外,式(15)也存在一定问题。假设调度时段为一天,T=24,这个公式的含义是一天内系统全部节点的在所有时间内的负荷总量保持不变。这么写似乎负荷不仅可以在时间上转移,还能在空间上转移,从一个节点转向另一个节点,显然是不太合理的。需求响应负荷应该只有在时间上转移的特性,所以公式(15)正确表达形式应该是:

3.4 算例信息描述不清

        文献采用改进的IEEE33节点系统,但是光伏和风机的额定容量,电容器组的可接入位置都没说清楚。算例中提供了新能源的渗透率信息,我在代码中假设所有DG的额定容量都相同,那么就可以求出DG的额定容量=系统总负荷量×新能源渗透率/DG数量。算例图中好像在节点33处画了电容器,所以我假设电容器组接在节点33处,单个电容器无功补偿容量为0.15Mvar,节点最大可投切电容器数目为5。

4.部分Matlab代码

        由于该问题的数学模型是一个大规模的混合整数二阶锥规划问题,我测试了cplex和gurobi,收敛精度为0.01的情况下,两个求解器分别需要6小时和3小时左右才能求出最优解。收敛精度同样是0.01,mosek求解器5s左右即可求出最优解。其中部分matlab代码如下:

%% 清除内存空间
clc
clear
close all
warning off
 
%% 系统参数
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;       % 无功负荷
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=2;                                    % 电流上限值
P_ch_max=0.2/mpc.baseMVA;                   % 充电功率上限0.2MW
P_dis_max=0.2/mpc.baseMVA;                  % 放电功率上限0.2MW
E_min=0.15/mpc.baseMVA;                     % 储能容量下限0.15MWh
E_max=0.8/mpc.baseMVA;                      % 储能容量上限0.8MWh
n_ch=0.9;                                   % 充电效率为0.9
n_dis=0.85;                                 % 放电效率为0.85
E0=0.3/mpc.baseMVA;                         % 初始荷电状态为0.3MWh
Q_CB_st=0.15/mpc.baseMVA;                   % 单个电容器无功补偿容量0.15Mvar
N_CB_max=5;                                 % 最大可投切电容器数目
ksai=0.5;                                   % 弹性系数
c1=1;                                       % 网络损耗成本系数1元/kWh
c2=1.2;                                     % 弃风弃光惩罚系数1.2元/kWh
c3=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元/kWh
M=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;
    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 = [];
。。。。。。省略
 
%% 目标函数
g1=c1*I_ij.*r_ij*10000;
g2=c2*(sum(ones(n_pv,1)*P_pv_max-P_pv)+sum(ones(n_wind,1)*P_wind_max-P_wind))*10000;
g3=c3*abs(alpha_ij-[ones(32,1);zeros(5,1)]);
objective=sum(g1(:))+sum(g2)+sum(g3);
 
%% 设求解器
ops=sdpsettings('verbose', 3, 'solver', 'MOSEK','cachesolvers',1);
ops.mosek.MSK_DPAR_OPTIMIZER_MAX_TIME=600;% 运行时间限制为10min
ops.mosek.MSK_DPAR_MIO_TOL_REL_GAP=0.01;% 收敛精度限制为0.01
sol=optimize(Constraints,objective,ops);
 
%% 分析错误标志
if sol.problem == 0
    disp('求解成功');
else
    disp('运行出错');
    yalmiperror(sol.problem)
end
 
%% 各项费用计算
cost_all=value(objective); 
cost_pv=value(sum(c2*(sum(ones(n_pv,1)*P_pv_max-P_pv)))*10000);
cost_wind=value(sum(c2*(sum(ones(n_wind,1)*P_wind_max-P_wind)))*10000);
cost_loss=value(sum(g1(:)));
switch_num=value(sum(abs(alpha_ij-[ones(32,1);zeros(5,1)])));
U_i=sqrt(value(U_i));

%% 结果呈现
show_result;

5.代码运行结果与原文献对比

        原文中数据提供不全,所以代码复现结果会有偏差,但原理完全一样,并修改了原文献中笔误的地方。以下所有结果图,均为复现结果在前,原文结果在后。

5.1 图2

5.2 图3

5.3 表1

5.4 图4

5.5 图5

5.6 图6

5.7 表2

5.8 图7

5.9 图8

6.完整代码获取

        想要完整代码可以戳这个链接:

https://download.csdn.net/download/weixin_44209907/87788838

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

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

相关文章

从【创作者】转变为【博客专家】-- 内含详细申请过程

从【创作者】转变为【博客专家】 0、引言1、创作身份认证1.1 起因1.2 违背祖宗的决定1.3 认证创作身份1.3.0 好处1.3.1 条件1.3.2 认证信息1.3.3 后台审核 2、博客专家认证2.1 好处2.2 条件2.3 认证信息2.4 后台审核2.5 实体证书 3、 反思与总结 ⚠申明: 未经许可&a…

哪个年龄段人群喜欢养宠物?18-25岁占比最高,达31%

上一期,我们通过可视化互动平台分析了萌宠经济下宠物食品的发展现状,这一期我们接着来分析一下,在萌宠经济下,我国宠物医疗产业的市场情况。 由于现在很多家庭都喜欢饲养宠物,宠物数量的快速增长从而拉动了宠物经济的…

晶飞FLA5000光谱仪.FlaSpec文件数据解析

引言 首先说明下晶飞上位机软件存在的问题,实验所采用的FLA5000型号光谱仪,光谱波段从280-970nm,FWHM值为2.4nm。 1、上位机软件中的光谱数据复制功能基本是废的,最多只能到599.9nm,后面的数据全部消失。 2、上位机软…

NOSQL和REDIS配置与优化

关系数据库与非关系型数据库 ●关系型数据库: 关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。 SQL 语句(标准数据查询语言)就是一种基于关系型数据库…

在外远程访问公司局域网用友畅捷通T财务软件 - 远程办公

文章目录 前言1.本地访问简介2. cpolar内网穿透3. 公网远程访问4. 固定公网地址 前言 用友畅捷通T适用于异地多组织、多机构对企业财务汇总的管理需求;全面支持企业对远程仓库、异地办事处的管理需求;全面满足企业财务业务一体化管理需求。企业一般将其…

ML@基础概念@模型评估和选择理论基础

refs 参考经典机器学习资料西瓜书 主要符号 x x x:标量 x \boldsymbol{x} x:向量(注意是 x x x的粗体形式) x \mathbf{x} x:变量集(正粗体) A \mathbf{A} A:矩阵(正粗体) I \mathbf{I} I:单位阵(正粗体) χ \chi χ:样本空间或状态空间 D \mathcal{D} D:概率分布…

【fly-iot飞凡物联】(5):开源项目Apache IoTDB,开源项目学习,原来还有这样的项目,关于IOT的几个开源项目汇总下

目录 前言1,关于:开源项目Apache IoTDB2,还有个admin后台3,thinglinks项目4,thingsboard-ui-vue项目5,apache pulsar项目6,ActorCloud项目 前言 本文的原文连接是: https://blog.csdn.net/freew…

MySQL多表查询操作

文章目录 前言内连接表别名 外连接左外连接右外连接全外连接 总结 前言 JOIN 表示连接&#xff0c;inner表示内连接&#xff0c;outer表示外连接&#xff0c;缺省情况是内连接。 ON后面接<连接条件> 内连接 默认的表数据连接是内连接&#xff0c;只会查询出满足连接条…

【C++进阶】继承详解

文章目录 前言一、继承的概念及定义1.概念2.继承定义定义格式继承关系和访问限定继承基类成员访问方式的变化 二、基类和派生类对象赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成员七、复杂的菱形继承及菱形虚拟继承1.单继承与多继承2.菱…

【Lychee图床】本地电脑搭建私人图床,公网远程访问

文章目录 1.前言2. Lychee网站搭建2.1. Lychee下载和安装2.2 Lychee网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 转发自CSDN风浪越大%鱼越贵的文章&#xff1a;Lychee图床 - 本地配置属于自己的相册管理系统并远…

快速入手光学字符识别控件Aspose.OCR!如何从PDF中提取文本

Aspose.OCR是一款字符识别组件&#xff0c;它使得开发人员可以添加OCR功能到他们的ASP.NET Web应用程序、web服务和windows应用程序中。它提供了一个简单的类集用于控制字符识别。Aspose.OCR目的是为那些需要在他们自己的应用程序中使用图像&#xff08;BMP和TIFF&#xff09;的…

软件设计师计算机系统知识点笔记大总结

数据寄存器是一个中转站 指令寄存器 ir 保存暂存指令&#xff08;操作码加地址吗等于指令&#xff09; 地址寄存器 保存当前cpu所访问的内存单元地址 程序计数器 保存的是下一条指令的地址 状态寄存器 标志运算的结果 类似 0&#xff08;&#xff09;状态寄存器是运算器中的部件…

Ansible Automation Platform - 用 API 访问 Ansible Automation Platform

《OpenShift / RHEL / DevSecOps 汇总目录》 说明&#xff1a;本文已经在支持 Ansible Automation Platform 2.3 的环境中验证 文章目录 AAP 的 API 索引Host 主机列表 API通过 API 操作 Ansible Automation Platform 说明&#xff1a;以下命令中 mycontroller-aap.apps-crc.t…

论文阅读-17-Deep Long-Tailed Learning: A Survey---3.3 Module Improvement

文章目录 1. Representation Learning1.1 Metric learning(1) large margin local embedding LMLE①##### ②##### ③ (2) Range loss(3) CRL(4) KCL(5) Hybrid(6) PaCo(7) DRO-LT 1.2 Sequential training(1) HFL(2) Unequal-training 1.3 Prototype learning(1) OLTR(2) IEM …

PPT背景图片怎么设置?4个详细教程在这!

案例&#xff1a;PPT背景图片怎么设置&#xff1f; 【因为论文答辩&#xff0c;最近需要制作PPT&#xff0c;昨晚之后感觉有点单调&#xff0c;我想设置一个背景图片&#xff0c;让我的PPT看起来更有风格&#xff0c;请问大家是怎么设置PPT背景图片的呢&#xff1f;】 PPT背景…

容器中的operator[]注意事项

首先看一张表格&#xff0c;支持operator[]的容器包括string、array、vector、deque、map、unordered_map&#xff0c;顺序容器和关联容器的operator[]不太一致。 string中的operator[] 在pos < size()时返回到位于指定位置pos的字符的引用&#xff0c;或在pos size()时…

信息安全数学基础笔记

三个数学难题: 群的定义: 满足乘法结合律&#xff0c;有单位元&#xff0c;逆元即为群&#xff0c;如果同时满足交换律则为交换群 满足乘法结合律&#xff0c;有单位元即为半群&#xff0c;如果同时满足交换律则为交换半群 希尔密码: 其中加密矩阵为n阶一般线性群&#xff0c;…

视频与音频一键同步嘴型数字人ai工具分享

在ai发展的今天,各种虚拟主播工具层出不穷,我们在选择ai工具的适合往往陷入一个使用陷阱。 比如, 看演示视频效果非常不错,自己去用却跟智障一样的。出现这种情况,我们首先不去评价这个工具的好用,我们得分析别人使用的前置条件。 大部分前置条件都是大量的训练数据, …

进程通信和信号量

1.进程通信 管道&#xff1a;包括无名管道(pipe)和命名管道(named pipe),无名管道可用于具有父进程和子进程之间的通信。命名管道除具有管道所具有的所有功能外&#xff0c;它还允许无亲缘关系进程间的通信。消息队列&#xff1a;进程可以向队列中添加消息&#xff0c;其他进程…

代码量原地缩减50%,这个Java工具类库太香了

Guava是google公司开发的一款Java类库扩展工具包&#xff0c;内含了丰富的API&#xff0c;涵盖了集合、缓存、并发、I/O等多个方面。使用这些API一方面可以简化我们代码&#xff0c;使代码更为优雅&#xff0c;另一方面它补充了很多jdk中没有的功能&#xff0c;能让我们开发中更…