电力系统网架规划MATLAB程序分享

news2024/11/25 6:48:48

网架数据展示:

完整程序:

close all;

clear all;

clc;

warning off; % 去除警告

tic; % tic用来保存当前时间,而后使用toc来记录程序完成时间

%% 基本参数

T=12; % 典型日 8-19h

% 8-19h 负荷各时段负荷总量

total_P_LOAD=[828,1001,1105,1105,994,1105,1105,1049,1012,810,699,626];

% 8-19h 光伏各时段出力标幺(by)值

by_P_PVG_timeline=[0.29,0.03,0.51,0.55,0.47,0.46,0.55,0.64,0.22,0.20,0.38,0.03];

Node=23; % 节点

Line=34; % 线路

o1 = 1.1198; % 负荷功率因数角 0.9

o2 = 1.2532; % DG功率因素角 0.95

% 网损成本

Line_closs=0.6;

% 最大弃(abandon,a)光率

a_max_PVG=0.05;

% 单位弃光成本

ca_PVG=0.6;

% 主网(zw)购电分时单价

zw_buy1_TR=[0.6 0.57 0.45 0.43 0.43 0.58 0.65 0.67 0.68 0.64 0.69 0.63 0.63 0.63 0.62 0.61 0.615 0.635 0.63 0.63 0.615 0.615 0.59 0.505 ];

zw_buy_TR=zw_buy1_TR(8:19);

SLmax=5300; % KVA

Umin=0.95*0.95*(12.66)^2; % 20KV

Umax=1.05*1.05*(12.66)^2; % 20KV

% P_TRmax=7500;

P_TRmax=4500;

P_TRmin=0;

M=99999; % 大M法处理非线性项

%% 线路节点相关信息

% 从excel中读取

% Line_cs中各项含义 1线路编号 2起、3止节点 4不允许建线路 5允许建线路 6线路长度 km

Line_cs=xlsread('Lines_Nodes_canshu.xlsx','B5:H38');

%% 为节点(jd)关联(gl)矩阵

% 若不为0,则单元格数值表示为线路编号,横、纵坐标分别表示为起、止节点。

JD_gl=zeros(Node);

for i=1:Line

JD_gl(Line_cs(i,2),Line_cs(i,3))=i;

end

%% 如果线路不允许建,线路编号加入到E0当中,允许建则加入到E1当中

E0=[]; % 不允许建线路集合

E1=[]; % 允许建线路集合

for i=1:Line

if Line_cs(i,4)==1

E0=[E0,Line_cs(i,1)];

end

end

for i=1:Line

if Line_cs(i,5)==1

E1=[E1,Line_cs(i,1)];

end

end

Num_Line=length(E1);

x_E1_line=binvar(1,Num_Line); % 待建线路建设集合

%% 每条线路长度

% A_cs中不仅仅包含了线路关联矩阵,而且保留有线路长度 横、纵坐标分别表示为起、止节点

Long_line_cs=zeros(Node,Node)

for i=1:Node

for j=1:Node

if JD_gl(i,j)~=0

Long_line_cs(i,j)=Line_cs(JD_gl(i,j),6) % 线路长度

end

end

end

%% 线路投资成本矩阵 长度 * 单位造价

% 线路建设成本 20万元/km

cline=Long_line_cs*200000;

Cline=[];

for i=1:Node

for j=1:Node

if JD_gl(i,j)~=0

Cline=[Cline,cline(i,j)];

end

end

end

%% 电阻电抗化简

% 电阻

rline=Long_line_cs*0.17;

% 电抗

xline=Long_line_cs*0.402;

Rline=[]; %%%%%%%%线路阻抗化简

Xline=[];

for i=1:Node

for j=1:Node

if JD_gl(i,j)~=0

Rline=[Rline,rline(i,j)];

Xline=[Xline,xline(i,j)];

end

end

end

%% 主网、光电接入(jr)节点

% 光伏接入节点

PVG_jr=[4,8,11,12,16,20];

% 各光伏节点接入容量

int_pvg=[435,465,345,489,564,349];

Num_PVG=length(PVG_jr);

P_PVG_yc=sdpvar(Num_PVG,T,'full'); % 光伏预测(yc)出力

P_PVG=sdpvar(Num_PVG,T,'full');

x_pvg=binvar(1,Num_PVG); % 0-1变量,是否建设光伏

TR_jr=[1]; % 变压器接入节点 也就是与主网相连节点

Num_TR=length(TR_jr);

P_TR=sdpvar(Num_TR,T,'full');

Q_TR=sdpvar(Num_TR,T,'full');

%% 负荷相关定义

% 各个节点基准(jz)负荷

P_load_jz=[0,188,180,136,184,160,172,164,244,252,180,204,248,160,196,144,172,188,223,145,135,268,193]/4136;

% 负荷曲线 0-24 求8:19

Load_timeine1=[0.78,0.75,0.7,0.68,0.65,0.63,0.7,0.75,0.79,0.90,0.90,0.90,0.90,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.85,0.83,0.80,0.78];

Load_timeine=Load_timeine1(8:19);

for t=1:T

for j=1:Node

P_LOAD(j,t)=total_P_LOAD(t)*P_load_jz(j)*Load_timeine(t);

end

end

%% 光伏预测出力

% for t=1:T

% for j=1:Node

% if ismember(j,PVG_jr)==1

% for k=1:Num_PVG

% P_PVG_yc(find(PVG_jr==j),t)=int_pvg(k)*by_P_PVG_timeline(t);

% end

% end

% end

% end

for t=1:T

for j=1:Num_PVG

P_PVG_yc(j,t)=int_pvg(j)*by_P_PVG_timeline(t);

end

end

%% 设决策变量

P_ij=sdpvar(Line,T);

Q_ij=sdpvar(Line,T);

I_ij=sdpvar(Line,T); % 电流的平方

U_j=sdpvar(Node,T); % 电压的平方

%% 约束

C=[]; % 总约束

%% 建线路 、光电 数量约束

C_1=[];

C_1=[C_1,sum(x_E1_line)==34];

% 各光伏接入节点均可正常运行

C_1=[C_1,sum(x_pvg)==Num_PVG];

C=[C,C_1];

%% sd:首节点,md:末节点

SJD=zeros(Node,5);

MJD=zeros(Node,5);

for j=1:Node

sjdmjd=1;

for i=1:Node

if JD_gl(j,i)~=0

SJD(j,sjdmjd)=i;

sjdmjd=sjdmjd+1;

end

end

end

for j=1:Node

sjdmjd=1;

for i=1:Node

if JD_gl(i,j)~=0

MJD(j,sjdmjd)=i;

sjdmjd=sjdmjd+1;

end

end

end

%% 有功无功集合 RIGHT1 有功 RIGHT2 无功

C_2=[];

LINE1=zeros(1,Node); % 以该节点为起始节点线路有几条

LINE2=zeros(1,Node); % 以该节点为终止节点线路有几条

for j=1:Node

% 以该节点为起始节点线路有几条

LINE1(j)=sum(SJD(j,:)~=0,2);

% 以该节点为终止节点线路有几条

LINE2(j)=sum(MJD(j,:)~=0,2);

end

for t=1:T

for j=1:Node

P_ALL=0;

Q_ALL=0;

P_ALL=-P_LOAD(j,t);

Q_ALL=-P_LOAD(j,t)/tan(o1);

if ismember(j,PVG_jr)==1

P_ALL=P_ALL+P_PVG(find(PVG_jr==j),t);

Q_ALL=Q_ALL+P_PVG(PVG_jr==j,t)/tan(o2);

end

if ismember(j,TR_jr)==1

P_ALL=P_ALL+P_TR(find(TR_jr==j),t);

Q_ALL=Q_ALL+Q_TR(find(TR_jr==j),t);

end

if LINE1(j)==0

if LINE2(j) ==0

% 没有建设线路

C_2=[C_2,P_ALL==0];

C_2=[C_2,Q_ALL==0];

else

% 首节点功率分布

C_2=[C_2,-sum(P_ij(JD_gl(MJD(j,1:LINE2(j)),j),t))+sum(I_ij(JD_gl(MJD(j,1:LINE2(j)),j),t).*rline(MJD(j,1:LINE2(j)),j))/1000==P_ALL]; % KVA为单位进行换算

C_2=[C_2,-sum(Q_ij(JD_gl(MJD(j,1:LINE2(j)),j),t))+sum(I_ij(JD_gl(MJD(j,1:LINE2(j)),j),t).*xline(MJD(j,1:LINE2(j)),j))/1000==Q_ALL]; % KVA为单位进行换算

end

else

if LINE2(j) ==0

% 末节点功率分布

C_2=[C_2,sum(P_ij(JD_gl(j,SJD(j,1:LINE1(j))),t))==P_ALL]; % KVA为单位进行换算

C_2=[C_2,sum(Q_ij(JD_gl(j,SJD(j,1:LINE1(j))),t))==Q_ALL]; % KVA为单位进行换算

else

% 正常线路功率分布

C_2=[C_2,-sum(P_ij(JD_gl(MJD(j,1:LINE2(j)),j),t))+sum(I_ij(JD_gl(MJD(j,1:LINE2(j)),j),t).*rline(MJD(j,1:LINE2(j)),j))/1000+sum(P_ij(JD_gl(j,SJD(j,1:LINE1(j))),t))==P_ALL]; % KVA为单位进行换算

C_2=[C_2,-sum(Q_ij(JD_gl(MJD(j,1:LINE2(j)),j),t))+sum(I_ij(JD_gl(MJD(j,1:LINE2(j)),j),t).*xline(MJD(j,1:LINE2(j)),j))/1000+sum(Q_ij(JD_gl(j,SJD(j,1:LINE1(j))),t))==Q_ALL]; % KVA为单位进行换算

end

end

end

end

C=[C,C_2];

%% 线路电压平衡约束

C_3=[];

for t=1:T

for j=1:Node

for i=1:Node

if (JD_gl(i,j)~=0)

if(ismember(JD_gl(i,j),E0)==1)

C_3=[C_3,U_j(j,t)*1000==U_j(i,t)*1000-2*(P_ij(JD_gl(i,j),t)*rline(i,j)+Q_ij(JD_gl(i,j),t)*xline(i,j))+I_ij(JD_gl(i,j),t)*(rline(i,j)^2+xline(i,j)^2)/1000];

else

C_3=[C_3,U_j(i,t)*1000-U_j(j,t)*1000-2*(P_ij(JD_gl(i,j),t)*rline(i,j)+Q_ij(JD_gl(i,j),t)*xline(i,j))+I_ij(JD_gl(i,j),t)*(rline(i,j)^2+xline(i,j)^2)/1000<= M*(1-x_E1_line(find(E1==JD_gl(i,j))))]

C_3=[C_3,U_j(i,t)*1000-U_j(j,t)*1000-2*(P_ij(JD_gl(i,j),t)*rline(i,j)+Q_ij(JD_gl(i,j),t)*xline(i,j))+I_ij(JD_gl(i,j),t)*(rline(i,j)^2+xline(i,j)^2)/1000>=-M*(1-x_E1_line(find(E1==JD_gl(i,j))))]

end

end

end

end

end

C=[C,C_3];

%% 二阶锥约束

C_4=[];

for t=1:T

for j=1:Node

for i=1:Node

if (JD_gl(i,j)~=0)

C_4=[C_4,norm([2*P_ij(JD_gl(i,j),t),2*Q_ij(JD_gl(i,j),t),I_ij(JD_gl(i,j),t)-U_j(j,t)],2)<=I_ij(JD_gl(i,j),t)+U_j(j,t)]

end

end

end

end

C=[C,C_4];

%% 节点电压、线路电流约束

C_5=[];

C_5=[C_5,Umin<=U_j<=Umax]

for i=1:Node

for j=1:Node

if JD_gl(i,j)~=0

if ismember(JD_gl(i,j),E0)==1

C_5=[C_5,0<=I_ij(JD_gl(i,j),:)<=(SLmax/12.66)^2]

else

C_5=[C_5,0<=I_ij(JD_gl(i,j),:)<=(SLmax/12.66)^2*x_E1_line(find(E1==JD_gl(i,j)))]

end

end

end

end

C=[C,C_5];

%% 变压器节点功率约束

C_6=[];

C_6=[C_6,P_TRmin<=P_TR<=P_TRmax];

C_6=[C_6,P_TRmin<=Q_TR<=P_TRmax];

C=[C,C_6];

%% 风光功率约束 考虑是否建设

C_7=[];

% for t=1:T

% for j=1:Node

% if ismember(j,PVG_jr)==1

% C_7=[C_7,(1-a_max_PVG)*x_pvg(find(PVG_jr==j))*P_PVG_yc(find(PVG_jr==j),t)<=P_PVG(find(PVG_jr==j),t)<=x_pvg(find(PVG_jr==j))*P_PVG_yc(find(PVG_jr==j),t)];

% end

% end

% end

for t=1:T

for j=1:Num_PVG

C_7=[C_7,(1-a_max_PVG)*P_PVG_yc(j,t)<=P_PVG(find(PVG_jr==j),t)<=P_PVG_yc(j,t)];

end

end

C=[C,C_7];

%% 线路功率约束

C_8=[];

for i=1:Node

for j=1:Node

if JD_gl(i,j)~=0

if ismember(JD_gl(i,j),E0)==1

C_8=[C_8,-SLmax<=P_ij(JD_gl(i,j),:)<=SLmax];

C_8=[C_8,-SLmax<=Q_ij(JD_gl(i,j),:)<=SLmax];

else

C_8=[C_8,x_E1_line(find(E1==JD_gl(i,j)))*(-SLmax)<=P_ij(JD_gl(i,j),:)<=x_E1_line(find(E1==JD_gl(i,j)))*SLmax];

C_8=[C_8,x_E1_line(find(E1==JD_gl(i,j)))*(-SLmax)<=Q_ij(JD_gl(i,j),:)<=x_E1_line(find(E1==JD_gl(i,j)))*SLmax];

end

end

end

end

C=[C,C_8];

%% 目标函数及求解

obj_OPE1=0;

obj_OPE2=0;

obj_OPE3=0;

obj_OPE4=0;

for i=1:Num_Line

obj_OPE1=obj_OPE1+x_E1_line(i)*Cline(E1(i));

end

for t=1:T

% 线路损耗

obj_OPE2=obj_OPE2+Line_closs*(Rline*I_ij(:,t)/1000);

for i=1:Node

% 从主网成本

if ismember(i,TR_jr)==1

obj_OPE3= obj_OPE3+zw_buy_TR(t)*P_TR(find(TR_jr==i),t);

end

% if ismember(i,PVG_jr)==1

% obj_OPE4= obj_OPE4+ca_PVG*(P_PVG_yc(find(PVG_jr==i),t)-P_PVG(find(PVG_jr==i),t));

% end

end

end

for t=1:T

for j=1:Num_PVG

obj_OPE4= obj_OPE4+ca_PVG*(P_PVG_yc(j,t)-P_PVG(j,t));

end

end

% obj=obj_OPE1+obj_OPE2+obj_OPE3;

obj=obj_OPE2+obj_OPE3+obj_OPE4;

ops =sdpsettings('solver','Gurobi','verbose', 2, 'debug', 1);

% ops =sdpsettings('solver','Cplex');

result = optimize(C,obj,ops);

%% 以 m_ 开头保存计算结果

m_x_E1_line=value(x_E1_line);

m_x_pvg=value(x_pvg);

m_P_TR=value(P_TR);

m_Q_TR=value(Q_TR);

m_P_LOAD=value(P_LOAD);

m_P_PVG_yc=value(P_PVG_yc);

m_P_PVG=value(P_PVG);

%% 运行时间

toc; %tic用来保存当前时间,而后使用toc来记录程序完成时间

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

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

相关文章

STM32CubeMX+SPI+FATFS读写SD卡

一、软件硬件说明软件&#xff1a;STM32CubeMX V6.6.1 /KEIL5 V5.29硬件&#xff1a;正点原子mini开发板&#xff0c;SD卡,通过SPI方式驱动SD卡&#xff0c;用的是SPI1接口以上内容来源于正点原子mini开发板手册&#xff0c;SD卡的详细介绍也可以去查阅这个手册。二、STM32Cube…

Ethercat系列(3)TWCat3下抓包实例分析

简介研究Ethercat协议&#xff0c;必须知道数据包格式&#xff0c;以及其真实含义。以一个真实的数据包来学习是最有效的。Twcat3下用wireshark抓包&#xff0c;需要设置一下混杂模式&#xff0c;否则不能直接抓到Ethercat数据包。Twcat抓包设置在正确加载驱动器配置文件后&…

可深度二次开发的智能插座 工业化物联网多场景的高定系统服务商

物联网时代&#xff0c;各类物联网需求越来越迫切。物联网设备呈现出爆发式增长。同时近年来国家不断出台相关的法规政策&#xff0c;为物联网行业发展创造机遇&#xff0c;三大运营商积极部署NB-IOT网络建设&#xff0c;建成90万NB-IoT基站。据统计2012-2022年期间&#xff0c…

缺省参数+函数重载+构造函数

目录 一、缺省参数 &#xff08;一&#xff09;缺省参数概念 &#xff08;二&#xff09;缺省参数分类 1. 全缺省参数 2. 半缺省参数&#xff08;缺省部分参数&#xff09; 3. 注意 二、函数重载 &#xff08;一&#xff09;基本概念 &#xff08;二&#xff09;举例 …

“算丰AI视界”人工智能技术内容征集活动正式开启!

2023年2月8日&#xff0c;首届“算丰AI视界”人工智能技术内容征集活动正式拉开帷幕&#xff01;本次活动主要征集AI、CV、TPU-MLIR、RISC-V等方向的代表性视频和文章&#xff0c;面向国内外的企业、高校和科研院所的优秀开发者。 活动紧扣人工智能行业相关AI视觉技术&#xff…

申请苹果开发者账号的方法

1、打开苹果id注册地址&#xff0c;输入相关信息注册&#xff0c;如果已经有苹果账号了看第二步&#xff0c; https://appleid.apple.com/account?localangzh_CN 2、注册成功了&#xff0c;或者有苹果账号了&#xff0c;登录苹果开发者中心 https://developer.apple.com/acc…

LearnOpenGL 笔记 - 入门 04 你好,三角形

系列文章目录 LearnOpenGL 笔记 - 入门 01 OpenGLLearnOpenGL 笔记 - 入门 02 创建窗口LearnOpenGL 笔记 - 入门 03 你好&#xff0c;窗口 文章目录系列文章目录前言你好&#xff0c;三角形顶点输入顶点着色器&#xff08;Vertex Shader&#xff09;编译着色器片段着色器&…

SpringBoot集成Flink-CDC 采集PostgreSQL变更数据发布到Kafka

一、业务价值 监听数据变化&#xff0c;进行异步通知&#xff0c;做系统内异步任务。 架构方案&#xff08;懒得写了&#xff0c;看图吧&#xff09;&#xff1a; 二、修改数据库配置 2.1、更改配置文件postgresql.conf # 更改wal日志方式为logical&#xff08;必须&#xf…

PCB设计是不是该去除孤铜

你知道PCB设计是不是该去除孤铜? PCB设计的技巧需要注意很多问题&#xff0c;各个器件的兼容问题&#xff0c;以及成品问题等等都是需要考虑的重要因素。 我们今天的主题是PCB设计的时候是不是该去除孤铜的问题?有人说应该除去&#xff0c;原因大概是&#xff1a; 会造成EMI问…

学习深入理解JVM虚拟机及JavaGuide后的学习笔记

JVM虚拟机 一、JVM组成部分&#xff1a; 1.程序计数器 作用&#xff0c;是记住下一条JVM指令的内存地址&#xff1b;1.多线程情况下&#xff0c;程序计数器用于记录当前线程执行的位置&#xff0c;从而线程切换回来的时候能够知道线程上次运行到哪儿了。2.字节码解释器通过改变…

6 前缀、中缀、后缀表达式

文章目录1 前缀表达式 1. 1 缀表达式的计算机求值 2 中缀表达式3 后缀表达式 3. 1 后缀表达式的计算机求值 3. 2 中缀表达式转换为后缀表达式1 前缀表达式 前缀表达式又称波兰式&#xff0c;前缀表达式的运算符位于操作数之前 举例说明&#xff1a; (34)5-6 对应的前缀表达式就…

Orin + SC16IS752+SP3072 SPI转串口485

文章目录 1.前言2.修改过程2.1 sc16is752 芯片2.1.1引脚说明2.1.2 设备树配置2.2.1 源码分析3 调试1.前言 Orin 有四路串口,对于多数设备来说已经够用。 通过SPI 转串口再转RS485在Orin平台应该属于极个例,所以记录一下。 串口扩展芯片: SC16IS752RS485收发器: SP3072通信…

初次尝试-注册openai并使用chatGPT

1 环境 本次我打算在win11虚拟机下进行(不打算动真机的时区啦)。 2 科学上网 这里就不多介绍了&#xff0c;使用科学上网工具连接外网即可。由于软件可连接限制&#xff0c;我这里选择美国网络。 3 更改时区 这里的时区最好和上述的所连接的地区一致。 3 登录网站 1、…

HOMER docker版本安装详细流程

概述 HOMER是一款100%开源的针对SIP/VOIP/RTC的抓包工具和监控工具。 HOMER是一款强大的、运营商级、可扩展的数据包和事件捕获系统&#xff0c;是基于HEP/EEP协议的VoIP/RTC监控应用程序&#xff0c;并可以使用即时搜索、处理和存储大量的信令、RTC事件、日志和统计信息。 …

Word控件Spire.Doc 【Table】教程(13): 如何在 C# 中向现有的 word 表添加一行

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

LwIP系列--软件定时器(超时处理)详解

一、目的在TCP/IP协议栈中ARP缓存的更新、IP数据包的重组、TCP的连接超时和超时重传等都需要超时处理模块&#xff08;软件定时器&#xff09;的参与。本篇主要介绍LwIP中超时处理的实现细节。上图为超时定时器链表&#xff0c;升序排序&#xff0c;其中next_timeout为链表头&a…

pyLoad远程代码执行漏洞(CVE-2023-0297)复现以及原理流量特征分析

声明&#xff1a; 请勿用于非法入侵&#xff0c;仅供学习。传送门 -》中华人民共和国网络安全法 文章目录声明&#xff1a;pyLoad介绍漏洞介绍影响版本不受影响版本漏洞原理漏洞环境搭建以及复现流量特征分析pyLoad介绍 pyLoad是一个用 Python 编写的免费和开源下载管理器&am…

计算GPS两个点之间的距离

参考&#xff1a;Https://blog.csdn.net/u011339749/article/details/125048180任意两点对应的经纬度A(lat0,long0),B(lat1,long1)则C(lat1,long0),D(lat0,long1)。通过A、B、C、D四个点可以确定一个四边形平面。同一纬度相互平行&#xff0c;可知连接ACBD四点构成了一个等腰梯…

干货|PCB板上的丝印位号与极性符号的组装性设计

PCB板上的字符很多&#xff0c;那么字符在后期起着那些非常重要的作用呢&#xff1f;一般常见的字符:“R”代表着电阻&#xff0c;"C”代表着电容&#xff0c;“RV”表示的是可调电阻&#xff0c;“L”表示的是电感&#xff0c;“Q”表示的是三极管&#xff0c;“D”表示的…

剑指Offer 第27天 JZ75 字符流中第一个不重复的字符

字符流中第一个不重复的字符_牛客题霸_牛客网 描述 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如&#xff0c;当从字符流中只读出前两个字符 "go" 时&#xff0c;第一个只出现一次的字符是 "g" 。当从该字符流中读出前六个字符 “google&…