MATLAB代码:配网节点电价 DLMP 关键词:DLMP SOCP lindistflow 参考文档:《Di

MATLAB代码:配网节点电价 DLMP

关键词:DLMP SOCP lindistflow
参考文档:《Distribution Locational Marginal Pricing (DLMP) for Congestion Management and Voltage Support》2018 SCI一区 IEEE Transactions on Power System 非完美复现
仿真平台:MATLAB+Gurobi
主要内容:
1. 考虑网损,电压,阻塞的配电网二阶锥节点电价 (DLMP)需要gurobi求解器;
2.在原本lindistflow上使用了二阶锥,精确了模型;
3。
可以轻松加东西,全网唯一
4.PDF为参考文献,并非完美复现。

这段代码是一个用于优化配电网运行的算法。以下是对代码的解释:

首先,代码进行了一些初始化操作,如清除变量、设置格式和警告等。

然后,定义了一些常量和数据,包括优化时刻(NT)、基准功率(SB)、基准电压(VBase)等。

接下来,定义了配电网的拓扑结构和参数,包括线路号、首节点、末节点、阻抗、电流等。

代码中还定义了一些预测数据,如负荷值、风机出力等。

然后,定义了一些决策变量,如线路功率、节点电压、风机出力等。

接下来,定义了一些约束条件,如潮流约束、电压约束、无功补偿约束等。

最后,定义了目标函数,即最小化购电成本或最小化网损。

使用优化求解器对约束条件和目标函数进行求解。

这段代码是一个用Matlab编写的配电网优化问题的求解程序。它主要通过优化算法来确定配电网的运行策略,以最小化成本和确保系统的安全运行。以下是对代码的分析:

首先,代码定义了一些常量和变量,包括优化时刻(NT)、基准功率(SB)、基准电压(VBase)等。这些常量和变量用于计算和约束配电网的各项参数。

接下来,代码定义了一个包含配电网数据的矩阵PDN_Data。该矩阵包含了每条线路的起始节点、终止节点、电阻、电抗等信息。这些数据用于计算潮流方程和约束条件。

代码接着定义了一些变量,包括负荷功率(P_load、Q_load)、电压幅值(U2)、线路功率(P、Q)、风机出力(P_Wind)等。这些变量用于表示配电网的状态和决策变量。

代码定义了一系列约束条件,包括潮流方程、节点电压上下限、线路电流约束等。这些约束条件用于确保配电网的安全运行和满足系统要求。

代码定义了一个目标函数,即最小化成本。成本包括从上级电网购电的成本和网损的成本。通过优化算法,代码寻找最优的运行策略,以最小化成本。

最后,代码使用优化算法对定义的目标函数和约束条件进行求解。如果求解成功,将输出最优解的成本和其他相关信息。

该代码的优势在于它通过优化算法来求解配电网的运行策略,以最小化成本和确保系统的安全运行。它考虑了各种约束条件,如潮流方程、节点电压上下限、线路电流约束等,以保证系统的稳定性和可靠性。此外,代码还考虑了风机出力和无功补偿等因素,以进一步优化系统的运行效果。通过对目标函数和约束条件的优化求解,代码可以找到最优的运行策略,从而降低配电网的运行成本。


这段代码是一个MATLAB程序,主要用于配电网的优化调度问题。下面是对代码的逐行解释:

tic:开始计时,用于计算程序的运行时间。
clc; clear; close all;:清除命令行窗口的内容,清除所有变量,并关闭所有图形窗口。
format short:设置输出格式为短格式,即小数点后保留4位。
warning off:关闭警告信息的显示。
NT = 24;:定义优化时刻的数量为24。
SB = 10;:定义基准功率为10 MVA。
VBase = 12.66;:定义基准电压为12.66 kV。
ZB = VBase^2 SB;:计算基准电阻抗。
IB = SB (sqrt(3)*VBase);:计算基准电流。
PDN_Data = [...:定义一个包含配电网数据的矩阵,包括线路号、首节点、末节点、阻抗、抗抗、线路最大潮流和线路最小潮流等信息。
NL = size(PDN_Data,1); NB = NL + 1 ;:计算线路数量和节点数量。
L_i = PDN_Data(:,2);:提取PDN_Data矩阵中的首节点信息。
L_j = PDN_Data(:,3);:提取PDN_Data矩阵中的末节点信息。
P_load = PDN_Data(:,4);:提取PDN_Data矩阵中的有功负荷信息。
Q_load = PDN_Data(:,5);:提取PDN_Data矩阵中的无功负荷信息。
R = PDN_Data(:,6) ZB;:计算线路阻抗的标幺值。
X = PDN_Data(:,7) ZB;:计算线路抗抗的标幺值。
Pmax = PDN_Data(:,8) SB;:计算线路最大潮流的标幺值。
Pmin = PDN_Data(:,9) SB;:计算线路最小潮流的标幺值。
U2_min = 0.90^2;:定义电压的最小值的平方。
U2_max = 1.05^2;:定义电压的最大值的平方。
Ind_SubLine = zeros(NL,2);:创建一个大小为NL×2的零矩阵,用于存储各条线路的子线路编号。
for i = 1: NL:循环遍历所有线路。
temp = find(L_i == L_j(i));:找到首节点等于当前末节点的线路索引。
if ~isempty(temp):如果找到了子线路。
Ind_SubLine(i,1:length(temp)) = temp;:将子线路的索引存储到Ind_SubLine矩阵中。
end:结束if语句。
Pd_total = [63 62 60 58 59 65 72 85 95 99 100 99 93 92 90 88 90 92 96 98 96 90 80 70];:定义24小时的负荷值。
Qd_total = [63 62 60 58 59 65 72 85 95 99 100 99 93 92 90 88 90 92 96 98 96 90 80 70];:定义24小时的无功负荷值。
Pd = P_load * Pd_total 1000000;:计算潮流方程右侧的有功负荷值。
Qd = Q_load * Qd_total 1000000;:计算潮流方程右侧的无功负荷值。
Pd=[zeros(1,24);Pd];:在Pd矩阵的第一行添加一个全零行。
Qd=[zeros(1,24);Qd];:在Qd矩阵的第一行添加一个全零行。
Ind_DG = [33];:定义分布式发电机节点的索引。
Ind_SVC = [12 7 ];:定义无功补偿器节点的索引。
Winddata = [2 1];:定义风机节点的信息。
P_WT_ratio = 0.5;:定义风机的额定功率。
P_WT_level = [0.57 0.69 0.74 0.77 0.80 0.56 0.45 0.27 0.10 0.15 0.29 0.36 ...:定义风机的预测出力百分比。
P_WT_pre = P_WT_level SB;:将风机的预测出力转换为标幺值。
P_WT_min = zeros(NB,24);:创建一个大小为NB×24的零矩阵,用于存储风机的最小出力。
P_WT_max = zeros(NB,24);:创建一个大小为NB×24的零矩阵,用于存储风机的最大出力。
P_WT_min(Ind_DG,:) = 0;:将分布式发电机节点的最小出力设置为零。
P_WT_max(Ind_DG,:) = P_WT_pre;:将分布式发电机节点的最大出力设置为预测出力。
SVC = [0.2 -0.2; 0.15 -0.15];:定义连续无功补偿器的最大和最小出力。
SVC(:,2:3) = SVC(:,1:2) SB;:将连续无功补偿器的出力转换为标幺值。
SVC_max = SVC(:,1);:提取连续无功补偿器的最大出力。
SVC_min = SVC(:,2);:提取连续无功补偿器的最小出力。
P = sdpvar(NL,NT);:定义一个大小为NL×NT的决策变量P,表示线路首端的有功功率。
Q = sdpvar(NL,NT);:定义一个大小为NL×NT的决策变量Q,表示线路首端的无功功率。
P_kidLine = sdpvar(NL,NT);:定义一个大小为NL×NT的决策变量P_kidLine,表示各条线路紧邻的下游子线路首端的功率。
Q_kidLine = sdpvar(NL,NT);:定义一个大小为NL×NT的决策变量Q_kidLine,表示各条线路紧邻的下游子线路首端的无功功率。
U2 = sdpvar(NB,NT);:定义一个大小为NB×NT的决策变量U2,表示节点的电压幅值的平方。
I2 = sdpvar(NL,24);:定义一个大小为NL×24的决策变量I2,表示线路的电流幅值的平方。
P_Wind = sdpvar(NB,NT);:定义一个大小为NB×NT的决策变量P_Wind,表示风机的出力。
Qg_SVC = sdpvar(NB,NT);:定义一个大小为NB×NT的决策变量Qg_SVC,表示连续无功补偿器的出力。
P_buy = sdpvar(1,NT);:定义一个大小为1×NT的决策变量P_buy,表示从上级电网购电的功率。
Q_buy = sdpvar(1,NT);:定义一个大小为1×NT的决策变量Q_buy,表示从上级

YID:77800680968629908

电气代码小铺



抱歉无法处理您这个问题哦,您可以换个问题

相关的代码,程序地址如下:http://nodep.cn/680968629908.html

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
请解释分析下面这段程序:%%%无序充电投标 clear clc load data_disorder Pch=[Pch_CS1_disorder;Pch_CS2_disorder;Pch_CS3_disorder;Pch_CS4_disorder];%充电站充电功率 %市场出清问题 Link=zeros(24,96);%时段换算矩阵(日前1h换算为实时15min) for i=1:24 Link(i,4*i-3:4*i)=1; end Loadcurve=[0.955391944564747,0.978345604157644,1,0.995019488956258,0.972932005197055,0.970333477695972,0.930489389346037,0.890428757037679,0.902771762667822,0.941966219142486,0.911000433087917,0.862061498484192,0.840190558683413,0.831095712429623,0.756604590731919,0.671719359029883,0.611520138588133,0.582936336076224,0.572542226071893,0.574707665656128,0.587267215244695,0.644218276310091,0.755521870939801,0.884798614118666]; Loadcurve=Loadcurve*Link;%换成96个时段 PL_base=[5.704;5.705;5.631;6.518;4.890;5.705;5.847]*1000;%负荷分布 PL=PL_base*Loadcurve;%基础负荷(负荷曲线从08:00开始算起,即第9个时段) Pf=sdpvar(7,96);%馈线功率 Pf(1,:)=PL(1,:)+Pch(1,:);Pf(2,:)=PL(2,:);Pf(3,:)=PL(3,:);Pf(4,:)=PL(4,:)+Pch(2,:);Pf(5,:)=PL(5,:)+Pch(3,:);Pf(6,:)=PL(6,:);Pf(7,:)=PL(7,:)+Pch(4,:);%馈线功率组成 Pg=sdpvar(10,96);%发电商分段电量 Pg_step=1000*[20,5,3,2,2,2,2,2,2,inf]';%报价区间 Price_DSO=[3:12]'*0.1;%分段电价 Obj=0.25*sum(sum((Price_DSO*ones(1,96)).*Pg));%目标为用电费用最小 Constraint=[0<=Pg<=Pg_step*ones(1,96),sum(Pg)==sum(Pf)];%约束条件 optimize(Constraint,Obj);%求解线性规划问题 Pg=double(Pg);%发电机功率 Pf=double(Pf);%馈线功率 isPg=(Pg>0);%为了计算出清电价,计算发电机分段选择情况 DLMP=sum(isPg)/10+0.2;%出清电价计算 %绘图 figure(1)%节点边际电价 stairs(DLMP); xlabel 时间 ylabel 电价(元/kWh) ylim([0.3,1.3]) figure(2)%负荷曲线 hold on plot(sum(PL)/1000); plot(sum(Pf)/1000,'r.-'); xlabel 时间 ylabel 负荷(MW) legend('基础负荷','无序充电负荷') Cost=sum(sum(Pch).*DLMP);%总用电费用 result_disorder.Cost=Cost;result_disorder.DLMP=DLMP;result_disorder.Pf=Pf;result_disorder.Pg=Pg;%结果保存 save('result_disorder','result_disorder');
06-14

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值