基于Nonconvex规划的配电网重构研究(Matlab代码实现)

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

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

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

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

本文基于Nonconvex规划的配电网重构研究。并用Matlab代码实现之。

基于Nonconvex规划的配电网重构研究是针对配电网优化问题的一种方法。传统的配电网通常是基于线性或者凸规划进行设计和运行,但是实际配电网系统的复杂性往往导致非线性和非凸问题的出现。为解决这些问题,基于Nonconvex规划的方法被提出来更好地优化配电网系统。

配电网重构是指通过变换网络拓扑结构和配置设备参数,以改善配电网的性能和可靠性。基于Nonconvex规划的配电网重构研究通常包括以下几个方面:

1. 非线性建模:将配电网系统建模为非线性的数学模型。这包括考虑网络拓扑结构、设备参数、电流限制、电压限制等的非线性方程和约束条件。

2. 问题定义:明确定义配电网重构的目标,例如最小化损耗、提高电压稳定性、降低网络阻塞等。同时,考虑到配电网的约束条件,例如设备的额定容量、电压限制、工作模式等。

3. Nonconvex规划建模:将配电网重构问题转化为Nonconvex规划问题。这可能涉及到非线性约束和非凸目标函数,并且由于配电网的复杂性,问题可能具有多个局部最优解。

4. 优化算法:针对Nonconvex规划问题,需要选择适当的优化算法来求解最优解。常见的算法包括非线性规划算法、启发式算法(如遗传算法、粒子群算法等)以及近似方法等。这些算法可以搜索到全局或者局部最优解。

5. 结果分析和评估:根据求解得到的最优解,分析和评估配电网的性能指标。这可能包括网络损耗、电压稳定性、负荷均衡等方面的评估。

6. 重构方案实施:根据优化结果,制定并实施配电网重构方案。这可能涉及到改变配电网的拓扑结构、设备配置、控制策略等。

基于Nonconvex规划的配电网重构研究能够更好地应对实际配电网系统的复杂性,帮助提高能源利用效率,降低电力系统的运行成本,并提高系统的可靠性和稳定性。然而,由于Nonconvex规划问题的复杂性,求解过程可能较为困难,需要综合考虑求解效率和解的质量。

📚2 运行结果

14147.3秒得到了全局最优,网损为1.7430,AA=[1;1;1;1;1;1;0;1;0;1;1;1;1;0;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;1;1;1;1;0]

部分代码:

%SB=100MVA,UB=12.66kV,IEEE-33 Bus,Distflow SOC-ACOPF
%考虑重构,全天拓扑不变
clear
clc
tic
%网络数据,标幺值
Pload=。。。
Line(:,3)=Line(:,3)*100/(12.66^2);
r=real(Line(:,3));
x=imag(Line(:,3));
father=zeros(33,37);son=zeros(33,37);
for i=1:32
    father(i,i)=1;
end
father(20,33)=1;father(14,34)=1;father(21,35)=1;father(32,36)=1;father(28,37)=1;
for i=[1:16,18:20,22:23,25:31]
    son(i,i+1)=1;
end
son(1,18)=1;son(2,22)=1;son(5,25)=1;son(33,1)=1;son(7,33)=1;son(8,34)=1;son(11,35)=1;son(17,36)=1;son(24,37)=1;
Umax=[1.07*1.07*ones(32,24);1.05*1.05*ones(1,24)];
Umin=[0.93*0.93*ones(32,24);1.05*1.05*ones(1,24)];
Pgmax=[zeros(32,24);ones(1,24)];
Qgmax=[zeros(32,24);ones(1,24)];
%定义变量
P=sdpvar(37,24);%线路有功
Q=sdpvar(37,24);%线路无功
U=sdpvar(33,24);%电压的平方
I=sdpvar(37,24);%电流的平方
Pg=[zeros(32,24);sdpvar(1,24)];%发电机有功
Qg=[zeros(32,24);sdpvar(1,24)];%发电机无功
AA=binvar(37,1);%网架结构
A0=[ones(32,1);zeros(5,1)];%初始拓扑
assign(AA,A0);
Pin=-father*P+father*(I.*(r*ones(1,24)))+son*P;%节点注入有功
Qin=-father*Q+father*(I.*(x*ones(1,24)))+son*Q;%节点注入无功
P_tree=sdpvar(37,1);%虚拟有功
Pin_tree=-father*P_tree+son*P_tree;%虚拟节点注入有功
Ploss_total=sum(sum(I.*(r*ones(1,24))));%目标函数,网损最小
%约束条件
C1=[sum(AA)==32,U>=Umin,U<=Umax,Pg>=-Pgmax,Pg<=Pgmax,Qg>=-Qgmax,Qg<=Qgmax,I>=0,I<=0.11*AA*ones(1,24),-AA<=P_tree<=AA,-0.11*AA*ones(1,24)<=P<=0.11*AA*ones(1,24),-0.11*AA*ones(1,24)<=Q<=0.11*AA*ones(1,24)];%边界约束
C2=[Pin+Pload-Pg==0,Pin_tree(1:32)+0.01==0];%有功KCL约束
C3=[Qin+Qload-Qg==0];%无功KCL约束
C4=[-(1.07*1.07-0.93*0.93)*(1-AA)*ones(1,24)<=-U(Line(:,2),:)+U(Line(:,1),:)-2*(r*ones(1,24)).*P-2*(x*ones(1,24)).*Q+((r.^2+x.^2)*ones(1,24)).*I<=(1.07*1.07-0.93*0.93)*(1-AA)*ones(1,24)];%电压降落约束
C=[C1,C2,C3,C4];
toc%建模时间
ops=sdpsettings('solver','gurobi','usex0',1);
[model,recoverymodel,diagnostic,internalmodel] = export(C,Ploss_total,ops);%得到除去P^2+Q^2=UI的约束
params.Nonconvex=2;%启动gurobi非线性求解器
params.FeasibilityTol=1e-9;%由于gurobi采取的是双层模型,因此可行性步长应尽可能小
params.IntFeasTol=1e-9;%由于gurobi对非线性模型采用的是外嵌分支定界算法,相当于求解MIP问题,因此整数可行性要足够精确
params.Threads=8;%并行计算,8线程
L=length(model.obj);%决策变量数
%下面定义P^2+Q^2=UI的约束,模型为sum(Qval*x(Qrow)*x(Qcol))+q*x=rhs
for t=1:24
    for j=1:37
        model.quadcon(37*t-37+j).Qrow=[37*t-37+j,37*t-37+j+37*24,33*t-33+Line(j,1)+37*24*2];%P,Q,Uj
        model.quadcon(37*t-37+j).Qcol=[37*t-37+j,37*t-37+j+37*24,37*t-37+j+37*24*2+33*24];%P,Q,I
        model.quadcon(37*t-37+j).Qval=[1,1,-1];%P^2+Q^2-UI
        model.quadcon(37*t-37+j).q=sparse(L,1);
        model.quadcon(37*t-37+j).rhs=0;
        model.quadcon(37*t-37+j).sense='=';%严格等号

%定义变量
P=sdpvar(37,1);%线路有功
Q=sdpvar(37,1);%线路无功
U=sdpvar(33,1);%电压的平方
I=sdpvar(37,1);%电流的平方
Pg=[zeros(32,1);sdpvar];%发电机有功
Qg=[zeros(32,1);sdpvar];%发电机无功
AA=binvar(37,1);%网架结构
A0=[ones(32,1);zeros(5,1)];%初始拓扑
assign(AA,A0);
Pin=-father*P+father*(I.*r)+son*P;%节点注入有功
Qin=-father*Q+father*(I.*x)+son*Q;%节点注入无功
P_tree=sdpvar(37,1);%虚拟有功
Pin_tree=-father*P_tree+son*P_tree;%虚拟节点注入有功
Ploss_total=sum(I.*r);%目标函数,网损最小
%约束条件
C1=[sum(AA)==32,U>=Umin,U<=Umax,Pg>=-Pgmax,Pg<=Pgmax,Qg>=-Qgmax,Qg<=Qgmax,I>=0,I<=0.11*AA,-AA<=P_tree<=AA,-0.11*AA<=P<=0.11*AA,-0.11*AA<=Q<=0.11*AA];%边界约束
C2=[Pin+Pload-Pg==0,Pin_tree(1:32)+0.01==0];%有功KCL约束
C3=[Qin+Qload-Qg==0];%无功KCL约束
C4=[-(1.07*1.07-0.93*0.93)*(1-AA)<=-U(Line(:,2),:)+U(Line(:,1),:)-2*r.*P-2*x.*Q+(r.^2+x.^2).*I<=(1.07*1.07-0.93*0.93)*(1-AA)];%电压降落约束
C=[C1,C2,C3,C4];
toc%建模时间
ops=sdpsettings('solver','gurobi','usex0',1);
[model,recoverymodel,diagnostic,internalmodel] = export(C,Ploss_total,ops);%得到除去P^2+Q^2=UI的约束
params.Nonconvex=2;%启动gurobi非线性求解器
params.FeasibilityTol=1e-9;%由于gurobi采取的是双层模型,因此可行性步长应尽可能小
params.IntFeasTol=1e-9;%由于gurobi对非线性模型采用的是外嵌分支定界算法,相当于求解MIP问题,因此整数可行性要足够精确
params.Threads=8;%并行计算,8线程
L=length(model.obj);%决策变量数
%下面定义P^2+Q^2=UI的约束,模型为sum(Qval*x(Qrow)*x(Qcol))+q*x=rhs

🎉3 参考文献

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

[1]刘畅,王治邦,黎静华.考虑配电网重构的电-气联合传输网络规划[J].广西大学学报(自然科学版),2023,48(03):616-630.DOI:10.13624/j.cnki.issn.1001-7445.2023.0616.

[2]吴达雷.电动汽车规模化接入后配电网重构系统[J].机械设计与制造工程,2023,52(05):83-86.

[3]吴艳敏,程相,刘家旗.基于SA-CS算法的含分布式电源配电网优化重构[J].科学技术与工程,2023,23(02):626-632.

🌈4 Matlab代码实现

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

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

相关文章

网络安全与密码学

1、网络安全威胁 破坏网络安全的一些理论方式&#xff1a; 窃听&#xff1a;窃听信息&#xff0c;在网路通信双方直接进行窃听。 插入&#xff1a;主动在网络连接中插入信息&#xff08;可以在message中插入恶意信息&#xff09; 假冒&#xff1a;伪造&#xff08;spoof&#x…

SQLServer2022安装(Windows),已验证

二、安装可视化工具SSMS 接下来安装可视化工具SSMS&#xff0c;现在新版本默认都是没有可视化界面&#xff0c;需要单独安装 &#xff08;1&#xff09;地址&#xff1a;下载 SQL Server Management Studio (SSMS) - SQL Server Management Studio (SSMS) | Microsoft Learn…

I/O多路复用-redis单线程模型快的根本原因

目录 BIO BIO单线程模式 BIO多线程模型 NIO IO multiplexing select函数&#xff1a; poll函数&#xff1a; epoll函数&#xff1a; 首先了解同步和异步&#xff0c;阻塞和非阻塞的概念&#xff1a; 同步&#xff1a;发起请求的一方需要等待操作完成并获得结果后才能继…

LayUI之CRUD(增删改查)

目录 一、前期准备 1.数据表格 2.弹出层 3.用户表数据查询 二、用户管理后台编写 三、前端JS编写 四、效果展示 一、前期准备 1.数据表格 在layui官网找到我们需要的数据表格 根据需求复制修改代码&#xff0c;再找到表单复制一个输入框和按钮&#xff0c;做一个搜索功能…

React Native 解决 TextInput 设置 maxLength 后,拼音输入法无法输入的问题

目前只发现在 iOS 上存在这个问题&#xff0c;这是由于 iOS 系统的问题&#xff0c;需要添加一个 OC 分类来解决&#xff0c;这里有一个封装好的 react-native-textinput-maxlength-fixed &#xff0c;直接安装即可。 npm install react-native-textinput-maxlength-fixed npx…

数字游民 digital nomad 常见问题解答

目录 什么是数字游民&#xff1f;数字游民是怎么产生的&#xff1f;如何向数字游民转型&#xff1f;常见的数字游民网络聚集地数字游民旅居城市推荐国际版柏林(德国)巴塞罗那(西班牙)布达佩斯(匈牙利)里斯本(葡萄牙)首尔/釜山(韩国) 国内版杭州成都三亚大连厦门 什么是数字游民…

数据仓库-拉链算法

数据仓库-拉链算法&#xff0c;如何处理开链、闭链数据 \timing on set client_encodingGBK; /******程序功能说明*********************************//*****以下根据任务不同进行变量设置*****************/SELECT:AUTO_PDMVIEW AS "PDM_VIEW",:20230710 AS &qu…

语言模型的自洽性思维链推理技术

论文标题&#xff1a;Self-Consistency Improves Chain of Thought Reasoning in Language Models 论文链接&#xff1a;https://arxiv.org/abs/2203.11171 论文来源&#xff1a;ICLR 2023 一、概述 尽管语言模型在一系列NLP任务中展现出了显著的成功&#xff0c;但它们在推理能…

QGIS批量将OSM水系进行可视化显示

要批量将OSM水系进行可视化显示&#xff0c;可以使用QGIS软件和Python语言来实现。以下是详细步骤&#xff1a; 1. 打开QGIS软件&#xff0c;导入OSM数据&#xff0c;可以使用插件OSMDownloader下载OSM数据&#xff0c;或者使用OSM数据下载网站下载数据。 2. 在QGIS中创建新图…

进制转换详解(解释原理简单易懂)

前言&#xff1a;在网上看了许多篇关于不同进制之间如何转换的文章&#xff0c;包括很多浏览量上万的博客。大多都只是把转换的规则罗列了出来&#xff0c;例如十进制转二进制&#xff0c;可能大家都知道方法&#xff0c;“除以2反向取余数&#xff0c;直到商为0”。应用该方法…

Kubespray v2.22.1 在线部署 kubernetes v1.26.5 集群

文章目录 1. 介绍2. 预备条件3. 配置 hostname4. yum5. 下载介质5.1 git 下载5.2 下载 kubespray v2.22.1 6. 编写 inventory.ini7. 配置互信8. 安装 ansible9. 关闭防火墙10. 安装 docker11. 配置内核参数12. 启动容器 kubespray13. 部署14. 配置连接集群 1. 介绍 kubespray​…

论文阅读—2023.7.13:遥感图像语义分割空间全局上下文信息网络(主要为unet网络以及改unet)附加个人理解与代码解析

前期看的文章大部分都是深度学习原理含量多一点&#xff0c;一直在纠结怎么改模型&#xff0c;论文看的很吃力&#xff0c;看一篇忘一篇&#xff0c;总感觉摸不到方向。想到自己是遥感专业&#xff0c;所以还是回归遥感影像去谈深度学习&#xff0c;回归问题&#xff0c;再想着…

5月更新,docsify综合漏洞知识库!

项目介绍 一个知识库&#xff0c;集成了Vulhub、Peiqi、EdgeSecurity、0sec、Wooyun等开源漏洞库&#xff0c;涵盖OA、CMS、开发框架、网络设备、开发语言、操作系统、Web应用、Web服务器、应用服务器等多种漏洞。 关注【Hack分享吧】公众号&#xff0c;回复关键字【230428】获…

C#设计模式之---观察者模式

观察者模式&#xff08;Observer Pattern&#xff09; 观察者模式&#xff08;Observer Pattern&#xff09;是一种对象行为模式。它定义对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。在观察者…

spring boot security自定义认证

前言 前置阅读 spring boot security快速使用示例 spring boot security之前后端分离配置 说明 实际场景&#xff0c;我们一般是把用户信息保存在db中&#xff08;也可能是调用三方接口&#xff09;&#xff0c;需要自定义用户信息加载或认证部分的逻辑&#xff0c;下面提供…

bug:file name too long文件名超出系统最大限制

各操作系统支持最长的文件和目录名称长度&#xff08;Linux、Win、Mac&#xff09; 今天开发需求的时候发现无法新建文件&#xff0c;提示file name too lang&#xff0c;于是翻阅和查询了一些资料&#xff0c;发现不同操作系统下文件名和目录名最长的长度不同。 操作系统文件名…

小程序主包超1.5MB分包处理流程优化方案

"subPackages": [// 分包1 {"root": "src, // 根目录"pages": [{"path": "views/business/index", // 页面路径"name": "business_index","aliasPath": "/business/index",&…

make/makefile的使用

make/makefile 文章目录 make/makefile初步认识makefile的工作流程依赖关系和依赖方法make的使用 总结 make是一个命令&#xff0c;是一个解释makefile中指令的命令工具&#xff0c;makefile是一个文件&#xff0c;当前目录下的文件&#xff0c;两者搭配使用&#xff0c;完成项…

快速上手dva

Dva 是一个基于 redux 和 redux-saga 的前端框架&#xff0c;它简化了 redux 和 redux-saga 的使用&#xff0c;并且内置了 react-router 和 fetch&#xff0c;所以也支持路由和异步操作。以下是一些基本的 Dva 使用方法&#xff1a; 快速上手 安装&#xff1a;首先&#xff…

异常参数处理:如何处理前端传递的非法参数,确保系统安全稳定

当前端将参数传递给后端时&#xff0c;考虑到各种异常情况&#xff0c;以下是对应的解决示例&#xff1a; 缺少必要的参数&#xff1a; 异常情况&#xff1a;前端未传递必要的参数&#xff0c;导致后端无法正常处理请求。 解决方案&#xff1a;在后端进行参数校验&#xff0c;如…