清楚明了的凸松弛最优潮流!基于混合整数二阶锥规划的主动配电网最优潮流研究程序代码!

news2024/12/23 18:05:50

前言

最优潮流(optimal power flow,OPF)问题,是电力系统中最常见、最基础的一类优化问题。在满足基尔霍夫定律、线路容量约束以及运行安全约束等电力网络物理约束的前提下,OPF问题旨在寻找一个最优的潮流稳态工作点,使得在该工作点上系统总发电成本、总网损等目标函数达到最优。OPF问题的相关研究在电力系统的经济调度、机组组合、状态估计、稳定性/可靠性评估、电压/无功控制、需求侧响应等关键领域得到了极为广泛的应用。由于模型中二次潮流等式约束的非凸性,OPF问题是一个难以求解的非凸优化问题。其在求解过程中容易陷入局部最优,并被证明是一个NP-hard问题。因此,研究能够同时保证求解效率与质量的OPF求解方法一直是电力系统领域乃至整个优化领域最为关注的热点之一。

OPF求解方法分类

目前,OPF问题的求解方法主要可分为以下3类:

1)寻求局部最优解。

早期的经典解法,如简化梯度法、牛顿法、序列二次规划法、内点法以及近年来发展迅速的启发式算法,都属于该类求解方法。然而,由于OPF问题本身是非凸的,这些方法无法保证解的质量,在得到局部最优解后无法衡量其与全局最优解之间的差距,并且即使得到全局最优解也无法证明其全局最优性。

2)对潮流等式约束作近似处理。

该类方法主要针对OPF模型非凸性的来源,对潮流等式约束进行线性化近似处理。其中具有代表性的方法是将交流潮流约束近似为线性的直流潮流约束,然后求解近似后的直流最优潮流(DC optimal power flow,DC-OPF)问题。其存在二个明显缺陷:一是较难应用于电压、无功相关的研究领域以及馈线R/X较高的配电网中;二是DC-OPF问题的最优解并不一定是原OPF问题的可行解,导致实际优化过程中需要不断调整DC-OPF部分约束的松紧程度并重新求解。

3)对潮流等式约束进行凸松弛。

这类方法有以下几个优势:一是在松弛精确的情况下,可保证在多项式求解时间内获得原问题的全局最优解;二是在松弛不够精确的情况下,可以为原优化问题提供最优值的一个下界;三是可以通过松弛后的凸问题无可行解来判定原非凸问题无解。然而,对于凸松弛技术来说,一个至关重要的问题是如何保证松弛的精确性。在松弛不精确的情况下,所得到的解没有实际的物理意义。

凸松弛技术概述

2006年,Jabr首次运用SOCP松弛技术将辐射状电网的潮流模型转化为一个二阶锥模型,并随后将其推广至环网,标志着现代凸松弛理论在OPF应用中的开端。Bai等将经典OPF问题转化为一个二次约束二次规划问题,并首次将其近似为SDP问题进行求解,让SDP规划进入电力领域优化者的视野之内。随后,Lavaei和Low首次提出了使用SDP技术求解OPF过程中“精确松弛”的概念,并在IEEE测试系统中完成了对所提精确松弛充分条件的检验,表明了凸松弛技术在电力系统优化领域的应用潜力。Low对截至2014年的OPF凸松弛理论首次做了系统性的梳理,给出了OPF模型中SOCP、SDP松弛的完整数学形式,比较了两类松弛各自的特点和适用范围,总结了精确松弛的充分条件,使得这两篇文献成为了引用甚广的OPF凸松弛基础教程。

在之后的研究中,出现了基于凸包络(convex hull/envelope)的凸松弛技术。在凸优化理论中,一个非凸区域的凸包络,被定义为该区域最紧的凸松弛。这种松弛技术与SDP松弛相比,需要的计算量更小,通常通过线性松弛或SOCP松弛来求解原OPF问题。针对极坐标系下OPF模型中含三角函数的约束。

尽管凸松弛技术的理论基础严格,研究热度也逐年上升,但其在实际OPF应用中仍存在较大的困难。首先是来自计算量方面的挑战。对于节点数成百上千的实际电力系统来说,直接运用内点法求解松弛后SDP问题的计算量过大,计算效率较低。

SDP与SOCP等凸松弛技术在数学领域中可被概括为经典的“升维松弛–返回映射”(lift-and-project)过程,即首先引入新变量(如SDP中的矩阵变量)完成对原问题的升维,然后在升维后的问题中松弛掉非凸约束并求解,最后从中通过返回映射来恢复原问题的解。由此过程可以看出,凸松弛在应用过程中的另一障碍是能否由松弛后的解恢复出原OPF解,这与松弛是否精确是等价的。若松弛不够精确,求解OPF仅得原问题(目标函数最小化)最优值的一个下界,松弛所得的高维矩阵解没有明确的物理含义,无法从中恢复原OPF解。因此,在使用凸松弛技术时,如何确保松弛的精确程度是亟需解决的核心问题。对于这类问题,目前有2种研究方向:1)寻求精确凸松弛的充分条件,即不对松弛过程本身作处理,而是寻求外生的、被证明可以保证松弛精确的应用场景;2)对松弛过程本身进行“加强”,构造尽可能紧的凸松弛,使其精确度内生化地提高。

凸松弛技术对比

根据已有的研究成果定性地刻画了3类凸松弛模型解集之间的关系,如下图所示。从图中可以看出,SOCP松弛模型的解集包含SDP松弛和QC松弛模型的解集,而SDP松弛和QC松弛模型的解集互不包含。换言之,一般情况下SDP松弛和QC松弛对潮流方程进行的松弛均比SOCP松弛更紧,但是SDP松弛和QC松弛两者的松紧程度需要视情况而定。

值得说明的是,不同凸松弛技术的精确程度在2种情况下会呈现完全相同的关系:1)当相角差的边界条件被逐渐放开时,三角函数项的凸包络构造效果与该边界条件有关,QC松弛的精确程度会越来越低,直至最终与SOCP松弛相同;2)当电网呈辐射状结构时,SDP松弛与SOCP松弛的精确程度相同。SOCP松弛没有SDP松弛精确的原因是其额外松弛了“相角循环条件”(cycle condition)。该条件直观的物理意义是对于电网中的每一个回路,按一定方向(如顺时针)循环累加的电压相角差之和对2取模后的结果等于0。由于辐射状网络中不含环,无需考虑“相角循环条件”,因此SOCP与SDP松弛的精确程度相同。

对于一个求最小值的OPF问题,内点法所得最优值≥全局最优值≥凸松弛所得最优值,因此可考虑使用凸松弛与内点法所得最优值的差异来衡量松弛解与原全局最优解的差异,即松弛的精确程度。其中优化间隙(optimalitygap)的定义为

凸松弛的精确性

由最优化理论可知,凸松弛的精确性与原OPF问题的目标函数及边界条件有着密切的关系。然而,在实际应用场景中,由于目标函数各不相同,且出于应用需要在模型中设定的边界条件多种多样,期望通过一个比较普适化的方法来保证凸松弛的精确性是极为困难的。针对凸松弛的精确性,目前主要有2种研究方向:一种是在理论上寻求可以保证精确凸松弛的充分条件,即找到目标函数和边界条件满足特定要求的OPF应用场景;还有一种是在SDP、SOCP等松弛技术的基础上构造更紧更精确的松弛。

保证精确松弛的充分条件

目前关于精确松弛充分条件的研究多选择在拓扑简单的辐射状电网中进行,因为从理论上推导复杂电网的精确松弛充分条件并完成相应的数学证明有较大的难度。选择的凸松弛技术对象主要为SOCP松弛,因为SOCP松弛在辐射状电网中与SDP松弛的精确度相同但计算效率远高于SDP。

研究结果表明,辐射状电网中SOCP精确松弛的充分条件对OPF模型的目标函数和边界条件有着较为苛刻甚至不符实际的要求。早期文献的研究成果按照充分条件对OPF模型边界条件的要求总结为3类:

1)对节点净注入功率(发电功率减去负荷功率)约束的要求。

对于电网中任一线路两端节点,共计8条净注入功率约束(2个节点、有功/无功、上界/下界),且每条净注入功率约束与复平面单位圆上的点一一对应。如果每对节点的8条约束对应的点在复平面单位圆周上均具有“线性可分”(linear separability)的性质,即处于复平面内某条经过原点的直线的同一侧,那么整个OPF模型的SOCP松弛就是精确的。这一类条件的几个特例为:允许所有节点的负荷功率达到无穷大 (松弛所有节点的净注入功率下界约束);在OPF模型中仅保留部分节点注入的有功功率下界约束。可以看出此类充分条件往往不符实际,难以应用。

2)对节点电压幅值约束的要求。

若原OPF问题没有电压幅值上界约束,或是松弛模型解的任一节点电压幅值都未达到预设的上界,且电网中不存在反向潮流,则SOCP松弛是精确的。与忽略电压幅值约束相比,检验“电压幅值是否达到上界”这一条件具有更强的可操作性,但仅为“后验式”条件。

3)对线路两端相角差约束的要求 。

通过研究不同边界条件下OPF可行域的几何性质提出,当线路两端的电压相角差足够接近时,原可行域与松弛后凸包络区域的帕累托最优集(最优解集)可能完全相同。涉及相角差约束的充分条件通常也包含部分对节点幅值或者节点净注入功率的要求。

更精确松弛的构造方法

该领域近年来的另一种代表性方法是通过矩(moment)信息来构造更紧的SDP松弛。该方法提出的多项式优化理论,使用了高维的矩信息,以增加计算量的代价提高了SDP松弛的精确程度。然而,该方法在使用中有2点不足:一是通过该方法获得全局最优解所要求的矩信息阶数非常高,会将SDP问题原本就比较大的计算量提升到一个更难以处理的程度;二是得到的SD矩阵解不一定是秩为1的矩阵,难以从中恢复出原OPF问题的最优解。

除此之外,在SDP模型的目标函数中加入了与矩阵解的秩相关的罚项来尽可能获得一个秩为1的半定矩阵解,从而提高松弛的精确度。

程序介绍

程序建立考虑DG、ESS、SVC和CB等连续、离散控制变量,以降低配电网运行成本、提高DG并网能力、消除过电压为目的的主动配电网有功无功协调的三相多时段优化模型;然后采用二阶锥松弛技术(second-order cone relaxation, SOCR)将其中的三相潮流方程作凸化松弛处理,将原问题转化为一个可被有效求解的混合整数二阶锥优化问题;最后,采用扩展的 IEEE 33 节点三相测试系统仿真计算,采用Cplex等算法包求得原问题的最优解;程序中算例丰富,注释清晰,干货满满,创新性和可扩展性很高,足以撑起一篇高水平论文!下面对程序做简要介绍!

程序适用平台:Matlab+Yalmip+Cplex

参考文献:《基于混合整数二阶锥规划的主动配电网有功–无功协调多时段优化运行》-中国电机工程学报

程序结果

部分程序

%% 1.设参
mpc = IEEE33BW;wind = mpc.wind;    pload = mpc.pload;    
pload_prim = mpc.pload_prim/1000;  %化为标幺值
pload = pload/a;%得到各个时段与单时段容量的比例系数
qload = pload/b;%假设有功负荷曲线与无功负荷变化曲线相同
pload = pload_prim*pload;   %得到33*24的负荷值,每一个时间段每个节点的负荷     
branch(:,3) = branch(:,3)*1/(12.66^2);%求阻抗标幺值              
T = 24;%时段数为24小时              
0.94*0.94*ones(1,T)];%加入变压器后,根节点前移,因此不是恒定值1.06
QCB_step = 100/1000;  %单组CB无功,100Kvar 转标幺值     
%% 2.设变量
V = sdpvar(nb,T);%电压的平方I = sdpvar(nl,T);%支路电流的平方
P = sdpvar(nl,T);%线路有功(是不是平方我就不清楚了,应该不是)
Q = sdpvar(nl,T);%线路无功Pg = sdpvar(nb,T);%发电机有功Qg = sdpvar(nb,T);%发电机无功
theta_CB = binvar(ncb,T,5); %CB档位选择,最大档为5
theta1_IN = binvar(noltc,T);%OLTC档位增大标识位theta1_DE = binvar(noltc,T);%OLTC档位减小标识位
%% 3.设约束   %% 储能装置(ESS)约束     %充放电状态约束        
C = [C, u_dch + u_ch <= 1];%表示充电,放电,不充不放三种状态
%功率约束
C = [C, 0 <= p_dch(1,:) <= u_dch(1,:)*0.3];C = [C, 0 <= p_dch(2,:) <= u_dch(2,:)*0.2];​
%容量约束
C = [C, E_ess(:,t+1) == E_ess(:,t) + 0.9*p_ch(:,t) - 1.11*p_dch(:,t)];   %效率   
%投入节点选择(两电池充放电状态)
P_dch = [zeros(14,T);p_dch(1,:);zeros(16,T);p_dch(2,:);zeros(1,T)];   %电池放在第15节点和第32节点
%% 风机(光伏)约束             ​     
P_wt = [zeros(16,24);p_wt(1,:);zeros(14,24);p_wt(2,:);zeros(1,24)];     %风机放在17和32节点
%% 有载调压变压器(OLTC)约束        
rjs = zeros(1,12);%相邻2个抽头的变比  平方之差     
C = [C, r1(1,t) == 0.94^2+ sum(rjs.*theta_OLTC(1,t,:))];  %%各个档位变比dita^2 * 开关档位状态
C = [C, theta_OLTC(:,:,i) >= theta_OLTC(:,:,i+1)];   %0下面不能有1
% theta_OLTC = value(theta_OLTC);
C = [C, V(33,:) == r1];   %%最大值是1.06^2,放在  主网到33节点   
k = sum(theta_OLTC,3);     %有载调压变压器投切状态个数求和 (1*24)   
C = [C, k(:,t+1) - k(:,t) <= theta1_IN(:,t)*12 - theta1_DE(:,t) ];  %升压不能超过12档,减压不能小于1档
C = [C, sum(theta1_IN + theta1_DE,2) <= 5 ];  %限制有载调压变压器日调节次数为5次
%% 连续无功补偿装置(SVC)约束      
Q_SVC = [zeros(4,T);q_SVC(1,:);zeros(9,T);q_SVC(2,:);zeros(15,T);q_SVC(3,:);zeros(2,T)];%SVC投入节点选择5、15、31
%% 离散无功补偿装置(CB)约束     
Q_cb = sum(theta_CB,3).*QCB_step;     

部分内容源自网络,侵权联系删除!

欢迎感兴趣的小伙伴关注并私信获取完整版代码,小编会不定期更新高质量的学习资料、文章和程序代码,为您的科研加油助力!

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

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

相关文章

【LAMMPS学习】八、基础知识(2.5)恒压器

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语&#xff0c;以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

WebSocket一篇讲清楚

文章目录 WebSocket简介WebSocket与HTTP的区别WebSocket的工作原理WebSocket的应用场景WebSocket的使用WebSocket 属性WebSocket 事件WebSocket 方法 WebSocket的心跳机制WebSocket 的安全性和跨域问题如何处理&#xff1f;有哪些好用的客户端WebSocket第三方库总结 WebSocket简…

代码随想录图论

1. 所有可能的路径 class Solution:def allPathsSourceTarget(self, graph: List[List[int]]) -> List[List[int]]:def dfs(graph, result, path, root): #result 返回结果, path记录路径, root记录遍历到了第几个节点if root len(graph) - 1: #如果遍历到最后…

C#Winform使用扩展方法自定义富文本框(RichTextBox)字体颜色

实现效果 调用方法 rtxtLog.AppendTextColorful(richTextBox1,DateTime.Now.ToString(), Color.Red); 完整代码如下 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using Sys…

Java 基于微信小程序的汽车4S店客户管理小程序,附源码

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…

SpringCloud框架 服务拆分和远程调用

数据库隔离避免耦合度过高&#xff0c;不同模块将自己的业务暴露为接口&#xff0c;供其他微服务调用 微服务远程调用技术Rest 在后端实现发送http请求 1.在启动类/配置类里注册RestTemplate启动对象 2.注入Bean对象使用

【力扣】17.04.消失的数字

这道题的题目意思就是从0-n中的数字中找出缺失的那一个&#xff0c;n是数组的长度&#xff0c;因此我的想法就是先将数组进行排序&#xff0c;往sort&#xff08;&#xff09;里面一扔&#xff0c;完了以后看前一个与后一个之差中哪个不是等于1的&#xff0c;就求出来即可。 法…

去除pycharm运行pytest的默认参数--no-header --no-summary -q

进入pycharm设置(Settings)&#xff0c;找到高级设置(Advanced Settings)—>Python–>Pytest&#xff1a;不添加"–no-header --no-summary -q"(Pytest&#xff1a;do not add “–no-header --no-summary -q”)

R语言计算:t分布及t检验

t分布理论基础 t分布也称Student’s t-distribution&#xff0c;主要出现在小样本统计推断中&#xff0c;特别是当样本量较小且总体标准差未知时&#xff0c;用于估计正态分布的均值。其定义基于正态分布和 X 2 X^{2} X2分布&#xff08;卡方分布&#xff09;。如果随机变量X服…

pytorch-多分类实战之手写数字识别

目录 1. 网络设计2. 代码实现2.1 网络代码2.2 train 3. 完整代码 1. 网络设计 输入是手写数字图片28x28&#xff0c;输出是10个分类0~9&#xff0c;有两个隐藏层&#xff0c;如下图所示&#xff1a; 2. 代码实现 2.1 网络代码 第一层将784降维到200&#xff0c;第二次使用…

Linux的学习之路:7、yum与git

摘要 本章主要是说一下yum和git的操作 目录 摘要 一、什么是yum 二、yum三板斧 1、list 2、install 3、remove 三、怎么创建仓库 四、git三板斧 1、add 2、commit 3、push 4、pull 五、思维导图 一、什么是yum YUM是Yellowdog Updater Modified的简称&#xf…

三方库移植之NAPI开发(三)通过IDE开发NAPI工程

在三方库移植之NAPI开发[1]—Hello OpenHarmony NAPI一文中&#xff0c;笔者开发的是一个rom包的napi工程。该工程需要编译烧录固件&#xff0c;C 的动态库会集成到开发板的ROM中。在本篇文章中&#xff0c;笔者使用三方库移植之NAPI开发[1]—Hello OpenHarmony NAPI中一样的he…

zabbix监控配置(添加主机、主机组和添加监控项等)

zabbix监控配置 文章目录 zabbix监控配置1.添加主机组2.添加主机&#xff08;linux&#xff09;3.添加主机&#xff08;windows&#xff09;4.监控项配置&#xff08;通过模板添加&#xff09;5.监控项配置&#xff08;手动添加&#xff09; 1.添加主机组 2.添加主机&#xff0…

【Github】PwGen用户友好的Web应用密码生成器

弱密码问题一直是网络安全领域的一个重大挑战。许多人为了方便记忆&#xff0c;倾向于使用简单、常见的密码&#xff0c;如“123456”、“password”或者他们的生日等&#xff0c;这些密码很容易被猜测或通过暴力破解方法攻破。弱密码的使用大大增加了账户被黑客入侵的风险&…

【深入解析spring cloud gateway】13 Reactive Feign的使用

问题引入 在gateway中如果使用feignClient的话&#xff0c;会报如下错误 java.lang.IllegalStateException: block()/blockFirst()/blockLast() are blocking, which is not supported in thread reactor-http-nio-3at reactor.core.publisher.BlockingSingleSubscriber.bloc…

C++实现一个自定义字符串类(string)

本博客将详细介绍如何在C中实现一个自定义的字符串类 string&#xff0c;这个类模仿了标准库中 std::string 的关键功能。这个过程将涵盖从声明到定义的每一步&#xff0c;重点介绍内存管理、操作符重载以及提供一些关键的实现细节。 首先&#xff1a;我们采用函数的声明与定义…

python--字符串对象和

1、找出10000以内能被5或6整除&#xff0c;但不能被两者同时整除的数&#xff08;函数&#xff09; def Divisible_by_5_6(x:int)->list:arr[]for i in range(1,x1):if (i % 5 0 or i % 6 0 ):if i % 5 0 and i % 6 0:continue #利用continue跳过能被5和6整除的数else:a…

Spring Boot 学习(4)——开发环境升级与项目 jdk 升级

各种版本都比较老&#xff0c;用起来也是常出各样的问题&#xff0c;终于找到一个看来不错的新教程&#xff0c;是原先那个教程的升级。遂决定升级一下开发环境&#xff0c;在升级遇到一些问题&#xff0c;摸索将其解决&#xff0c;得些体会记录备查。 最终确定开发环境约束如下…

ActiveMQ 01 消息中间件jmsMQ

消息中间件之ActiveMQ 01 什么是JMS MQ 全称&#xff1a;Java MessageService 中文&#xff1a;Java 消息服务。 JMS 是 Java 的一套 API 标准&#xff0c;最初的目的是为了使应用程序能够访问现有的 MOM 系 统&#xff08;MOM 是 MessageOriented Middleware 的英文缩写&am…

QLoRa 低秩分解+权重量化的微调

QLoRa的核心思想是首先使用低秩分解技术降低参数的数量&#xff0c;然后对这些低秩表示的参数应用量化技术&#xff0c;进一步减少所需的存储空间和计算量。 https://arxiv.org/abs/2305.14314 低秩分解 低秩分解&#xff08;Low-Rank Factorization&#xff09;&#xff1a;…