影响风电接入的因素:线路过载问题和支路潮流
选址定容:风机接在哪里,接入多少容量的
33节点KW 14节点兆瓦
其中变量是:
代码块 1:求得最佳接入节点,接入风电场容量为325MW
-
代码块 1:
- 初始化风电场容量和相应的无功功率。
- 遍历每个节点(1到33),将风电场接入到每个节点后运行潮流计算。
- 计算每个节点的网损和平均电压。
- 找出接入风电场容量为325MW时网损最小的节点,以及网损与电压均值比值最小的节点。
%%%01求得最佳接入节点,接入风电场 容量为325MW
%%%02找到14节点中那个节点可以接纳最大的风电场容量,其值为多少?(找到每个节点的最大风电场接入容量)
%%%01求得最佳接入节点,接入风电场 容量为325MW
clear all
close all
clc
warning off
Pwind=325;
Qwind=Pwind*tan(acos(0.90));
% P_bloss=[];
Vot=[];P_bloss=[];VV=[];%初始化
for i=1:33
mpc = case33bw;
mpc.bus(i,3:4)=mpc.bus(i,3:4)-[Pwind,-Qwind];
OPT = mpoption('verbose', 0, 'out.all', 0);
%当 verbose 设置为 0 时,表示程序在运行时不输出任何详细信息。
%当 out.all 设置为 0 时,表示不输出任何计算结果。
results=runpf(mpc,OPT); %%一次算完后覆盖掉,重新计算
%%若没有则会出现,2节点接入325的同时,1节点也接入325
if results.success==1
P_bloss(i,1)=sum(results.branch(:,14)+results.branch(:,16));%网损
%P_bloss(i,1)=results.branch(,14)+results.branch(:,16);支路线损
Vot(i,1)=sum(results.bus(:,8)')/33;
VV=[VV,results.bus(:,8)];
% figure
% mesh(VV)
%对于电压来说 1-14节点电压情况,可以探究谁的电压质量最好,
%%平均电压最高最好;电压越线次数
%对于损耗来说要计算整体的网损
end
end
%%%01找到最小网损值
[m n] = min(P_bloss)
%它是所有节点(从1到33)中,接入风电场容量为325MW时,产生的最小总网损值
%最小网损值的节点编号
%%02找到电压均值
%%03构建综合指标
[ff,Idex]=min(P_bloss./Vot)
%%%%ff: 数组 P_bloss./Vot 中的最小值(即网损与电压均值比值的最小值)。
%%%%Idex: 对应最小值的索引位置(即比值最小的节点编号)。
%%%最好电压搞一个归一化的问题
代码块 2:找到14节点中可以接纳最大风电场容量的节点
-
代码块 2:
- 逐步增加风电场容量(从0到10000 MW,以5 MW为步长)。
- 对每个容量值,检查14个节点是否可以接入,并判断电压是否越线(低于0.95 p.u.)。
- 输出每个节点可以接纳的最大风电场容量。
%%%02找到14节点中那个节点可以接纳最大的风电场容量,其值为多少?
%%考虑电压指标+判断支路潮流(电压越线前,支路潮流是否越线)
% clear all
% close all
% clc
warning off
Pwind=0:5:10000;
Qwind=Pwind*tan(acos(0.90));
for i=1:14
for num=1:length(Pwind)
mpc = case33bw;
mpc.bus(i,3:4)=mpc.bus(i,3:4)-[Pwind(num),-Qwind(num)];
OPT = mpoption('verbose', 0, 'out.all', 0);
results=runpf(mpc,OPT);
P_br = max(abs(results.branch(:, 14)), abs(results.branch(:, 16)));
if min(results.bus(:, 8)) < 0.95 | max(P_br) > 200
disp([num2str(i),'节点最大接入风电功率值为',num2str(Pwind(num))])
% Pwind(num)
% disp(Pwind(num))
break;
end
mpc=case33;
end
end
画电压图像,系统最低电压曲线
%%%01求得最佳接入节点,接入风电场 容量为325MW
%%%02找到14节点中那个节点可以接纳最大的风电场容量,其值为多少?(找到每个节点的最大风电场接入容量)
%%%01求得最佳接入节点,接入风电场 容量为325MW
clear all
close all
clc
warning off
Pwind=1;
Qwind=Pwind*tan(acos(0.90));
% P_bloss=[];
Vot=[];P_bloss=[];VV=[];VVmin=[];%初始化
for i=1:33
mpc = case33bw;
mpc.bus(i,3:4)=mpc.bus(i,3:4)-[Pwind,-Qwind];
OPT = mpoption('verbose', 0, 'out.all', 0);
%当 verbose 设置为 0 时,表示程序在运行时不输出任何详细信息。
%当 out.all 设置为 0 时,表示不输出任何计算结果。
results=runpf(mpc,OPT); %%一次算完后覆盖掉,重新计算
%%若没有则会出现,2节点接入325的同时,1节点也接入325
if results.success==1
P_bloss(i,1)=sum(results.branch(:,14)+results.branch(:,16));%网损
%P_bloss(i,1)=results.branch(,14)+results.branch(:,16);支路线损
Vot(i,1)=sum(results.bus(:,8)')/33;
VV=[VV,results.bus(:,8)];
VVmin=[VVmin,min(results.bus(:,8))];
%对于电压来说 1-14节点电压情况,可以探究谁的电压质量最好,
%%平均电压最高最好;电压越线次数
%对于损耗来说要计算整体的网损
end
end
%%%01找到最小网损值
[m n] = min(P_bloss)
%它是所有节点(从1到33)中,接入风电场容量为325MW时,产生的最小总网损值
%最小网损值的节点编号
%%02找到电压均值
%%03构建综合指标
[ff,Idex]=min(P_bloss./Vot)
figure
plot(Vot,'k-o')
figure
plot(VV,'k-o')
figure
mesh(VV)
figure
plot(VVmin,'k-o')
%%%%ff: 数组 P_bloss./Vot 中的最小值(即网损与电压均值比值的最小值)。
%%%%Idex: 对应最小值的索引位置(即比值最小的节点编号)。
%%%最好电压搞一个归一化的问题
选址定容与智能算法结合:
首先确定目标函数,约束条件,适应度函数和目标函数值的趋势相同
选址定容目的:做规划
《基于免疫粒子群的配电网分布式电源选址定容问题》
相同容量接入不同节点(三个节点同时接入DG)
代码:
%%%01求得最佳接入节点,接入风电场 容量为325MW
%%%02找到14节点中那个节点可以接纳最大的风电场容量,其值为多少?(找到每个节点的最大风电场接入容量)
%%%01求得最佳接入节点,接入风电场 容量为325MW
clear all
close all
clc
warning off
Pwind=325;
Qwind=Pwind*tan(acos(0.90));
% P_bloss=[];
Pdg = zeros(33, 3);
Pdg([2 3 4], 1) = [50; 50; 50];
Pdg([9 10 11], 2) = [50; 50; 50];
Pdg([15 16 17], 3) = [50; 50; 50];
Vot=zeros(3,33);P_bloss=[];VV=[];%初始化
for i=1:3
mpc = case33bw;
%mpc.bus(i,3:4)=mpc.bus(i,3:4)-[Pwind,-Qwind];和节点没有关系了
mpc.bus(:,3:4)=mpc.bus(:,3:4)-[Pdg(:,i),-Pdg(:,i)*tan(acos(0.90 ))];
OPT = mpoption('verbose', 0, 'out.all', 0);
%当 verbose 设置为 0 时,表示程序在运行时不输出任何详细信息。
%当 out.all 设置为 0 时,表示不输出任何计算结果。
results=runpf(mpc,OPT); %%一次算完后覆盖掉,重新计算
%%若没有则会出现,2节点接入325的同时,1节点也接入325
if results.success==1
P_bloss(i,1)=sum(results.branch(:,14)+results.branch(:,16));%网损
%P_bloss(i,1)=results.branch(,14)+results.branch(:,16);支路线损
Vot(i,: )=(results.bus(:,8)');%%对比电压即可不需要加和
VV=[VV,results.bus(:,8)];
% figure
% mesh(VV)
%对于电压来说 1-14节点电压情况,可以探究谁的电压质量最好,
%%平均电压最高最好;电压越线次数
%对于损耗来说要计算整体的网损
end
end
%%%01找到最小网损值
[m n] = min(P_bloss)
%它是所有节点(从1到33)中,接入风电场容量为325MW时,产生的最小总网损值
%最小网损值的节点编号
%%02找到电压均值
%%03构建综合指标
[ff,Idex]=min(P_bloss./Vot)
%%%%ff: 数组 P_bloss./Vot 中的最小值(即网损与电压均值比值的最小值)。
%%%%Idex: 对应最小值的索引位置(即比值最小的节点编号)。
%%%最好电压搞一个归一化的问题
figure
plot(Vot, '-o')
legend('方案1', '方案2', '方案3')
figure
plot(VV')
%%%02找到14节点中那个节点可以接纳最大的风电场容量,其值为多少?
%%考虑电压指标+判断支路潮流(电压越线前,支路潮流是否越线)
% clear all
% close all
% clc
warning off
Pwind=0:5:10000;
Qwind=Pwind*tan(acos(0.90));
for i=1:14
for num=1:length(Pwind)
mpc = case33bw;
mpc.bus(i,3:4)=mpc.bus(i,3:4)-[Pwind(num),-Qwind(num)];
OPT = mpoption('verbose', 0, 'out.all', 0);
results=runpf(mpc,OPT);
if min(results.bus(:,8))<0.95
disp([num2str(i),'节点最大接入风电功率值为',num2str(Pwind(num))])
% Pwind(num)
% disp(Pwind(num))
break;
end
mpc=case33;
end
end
相同节点接入不同容量
33节点默认转化为MW
代码:不同位置接入相同容量
%%%01求得最佳接入节点,接入风电场 容量为325MW
%%%02找到14节点中那个节点可以接纳最大的风电场容量,其值为多少?(找到每个节点的最大风电场接入容量)
%%%01求得最佳接入节点,接入风电场 容量为325MW
clear all
close all
clc
warning off
Pwind=50;
Qwind=Pwind*tan(acos(0.90));
Pdg=zeros(33,3);
Pdg([2 3 4],1)=[50,50,50];%50kW
Pdg([9 10 11],2)=[50,50,50];
Pdg([15 16 17],3)=[50,50,50];
Vot = zeros(33, 3); ;P_bloss=[];VV=[];%初始化
for i=1:3
mpc = case33bw;
mpc.bus(:,3:4)=mpc.bus(:,3:4)-0.001*[Pdg(:,i),-Pdg(:,i)*tan(acos(0.90))];
%将单位转化为MW 节点33默认是MW
OPT = mpoption('verbose', 0, 'out.all', 0);
%当 verbose 设置为 0 时,表示程序在运行时不输出任何详细信息。
%当 out.all 设置为 0 时,表示不输出任何计算结果。
results=runpf(mpc,OPT); %%一次算完后覆盖掉,重新计算
%%若没有则会出现,2节点接入325的同时,1节点也接入325
if results.success==1
P_bloss(i,1)=sum(results.branch(:,14)+results.branch(:,16));%网损
%P_bloss(i,1)=results.branch(,14)+results.branch(:,16);支路线损
Vot(: ,i)=results.bus(:,8);
VV=[VV,results.bus(:,8)];
% figure
% mesh(VV)
%对于电压来说 1-14节点电压情况,可以探究谁的电压质量最好,
%%平均电压最高最好;电压越线次数
%对于损耗来说要计算整体的网损
end
end
%%%01找到最小网损值
[m n] = min(P_bloss)
%它是所有节点(从1到33)中,接入风电场容量为325MW时,产生的最小总网损值
%m最小网损值的 n节点编号
%%02找到电压均值
%%03构建综合指标
%[ff,Idex]=min(P_bloss./Vot)
%%%%ff: 数组 P_bloss./Vot 中的最小值(即网损与电压均值比值的最小值)。
%%%%Idex: 对应最小值的索引位置(即比值最小的节点编号)。
%%%最好电压搞一个归一化的问题
figure
plot(Vot,'-o')
legend('方案一','方案二','方案三');
% figure
% plot(VV,'-o')
、
代码:相同节点接入不同容量
方案一:
clear all
close all
clc
warning off
%%方案一
%Pdg=zeros(33,3);
Pdg(9,1)=[50];%50kW
Pdg(9,2)=[150];
Pdg(9,3)=[250];
Vot = []; %初始化
for i=1:3
mpc = case33bw;
mpc.bus(9,3:4)=mpc.bus(9,3:4)-0.001*[Pdg(9,i),-Pdg(9,i)*tan(acos(0.90))];
%将单位转化为MW 节点33默认是MW
OPT = mpoption('verbose', 0, 'out.all', 0);
results=runpf(mpc,OPT);
if results.success==1
Vot(: ,i)=results.bus(:,8);
end
end
figure
plot(Vot,'-o')
legend('方案一','方案二','方案三');
title('相同节点接入不同容量');
方案二:
clear all
close all
clc
warning off
%%方案二
Pdg = [50; 150; 250];
%Vot2=zeros(3, 33); P_bloss2=zeros(3, 33);
Vot2 = []; VV=[];
for n=1:3
mpc = case33bw;
mpc.bus(9, 3:4) = mpc.bus(9, 3:4) - 0.001 * [Pdg(n), -Pdg(n) * tan(acos(0.90))];
OPT = mpoption('verbose', 0, 'out.all', 0);
results = runpf(mpc, OPT);
if results.success == 1
Vot2(n, :) = results.bus(:, 8);
end
end
figure
plot((Vot2)','-o')
legend('方案一','方案二','方案三');
title('相同节点接入不同容量');
方案二改进版:
clear all
close all
clc
warning off
%%方案二
Pdg = 50:5:500;
Vot2 = []; VV=[];
for n=1:length(Pdg)
mpc = case33bw;
mpc.bus(9, 3:4) = mpc.bus(9, 3:4) - 0.001 * [Pdg(n), -Pdg(n) * tan(acos(0.90))];
OPT = mpoption('verbose', 0, 'out.all', 0);
results = runpf(mpc, OPT);
if results.success == 1
Vot2(n, :) = results.bus(:, 8);
end
end
figure
plot((Vot2)','-o')
legend('方案一','方案二','方案三');
title('相同节点接入不同容量');
单独看一个节点的电压,可以发现:接入分布式电源后,电压质量得到了提升
原论文结论如下:
为什么