diff --git a/OPF.m b/OPF.m index b1f8dab..bbb134f 100644 --- a/OPF.m +++ b/OPF.m @@ -18,12 +18,12 @@ QD0(Loadi)=RealQD(Loadi).*(1+normrnd(0,sigma,length(Loadi),1)); mVolt=rVolt.*(1+normrnd(0,sigma,length(rVolt),1))'; %加载保存的变量 -% PD0=load('PD0'); -% PD0=PD0.PD0; -% QD0=load('QD0'); -% QD0=QD0.QD0; -% mVolt=load('mVolt'); -% mVolt=mVolt.mVolt; +PD0=load('PD0'); +PD0=PD0.PD0; +QD0=load('QD0'); +QD0=QD0.QD0; +mVolt=load('mVolt'); +mVolt=mVolt.mVolt; % mVolt(19)=rVolt(19)*(1+sigma*4); %% 画Case A的图 @@ -32,7 +32,7 @@ figure('Color',[1 1 1]); subplot(4,1,1,'XTick',[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33]); CaseAREV=(Volt-rVolt)*100;%Relative Error of Voltage in Case A % CaseAREV=CaseAREV(2:end)*100; -plot(1:length(CaseAREV),CaseAREV,'k.:','Marker','diamond'); +plot(1:length(CaseAREV),abs(CaseAREV),'k.:','Marker','diamond'); box off; set(gca,'XTick',[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33]) xlabel('节点号'); @@ -40,7 +40,7 @@ ylabel(' subplot(4,1,2); CaseAREA=(UAngel-rUAngel)*100;%Relative Error of Angle in Case A % CaseAREA=CaseAREA(2:end)*100; -plot(1:length(CaseAREA),CaseAREA,'k:','Marker','diamond'); +plot(1:length(CaseAREA),abs(CaseAREA),'k:','Marker','diamond'); box off; set(gca,'XTick',[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33]) xlabel('节点号'); @@ -48,7 +48,7 @@ ylabel(' subplot(4,1,3); CaseAREP=(PD-RealPD)./(RealPD+0.00001)*100;%Relative Error of PD in Case A % CaseAREP=CaseAREP(2:end)*100; -plot(1:length(CaseAREP),CaseAREP,'k:','Marker','diamond'); +plot(1:length(CaseAREP),abs(CaseAREP),'k:','Marker','diamond'); box off; set(gca,'XTick',[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33]) xlabel('节点号'); @@ -56,7 +56,7 @@ ylabel(' subplot(4,1,4); CaseAREQ=(QD-RealQD)./(RealQD+0.00001)*100;%Relative Error of QD in Case A % CaseAREQ=CaseAREQ(2:end)*100; -plot(1:length(CaseAREQ),CaseAREQ,'k:','Marker','diamond'); +plot(1:length(CaseAREQ),abs(CaseAREQ),'k:','Marker','diamond'); box off; set(gca,'XTick',[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33]) xlabel('节点号'); @@ -70,51 +70,52 @@ objA=full(sum(Vbi)+sum(PDbi)+sum(QDbi)); end %% Case B -[Busnum,Loadi,Volt,PD,QD,rVolt,UAngel,RealPD,RealQD,rUAngel,Vbi,PDbi,QDbi,plotGapB]=subOPF(setdiff(1:Busnum,[18,21,22,29]),PD0,QD0,mVolt,sigma);% +% [Busnum,Loadi,Volt,PD,QD,rVolt,UAngel,RealPD,RealQD,rUAngel,Vbi,PDbi,QDbi,plotGapB]=subOPF(setdiff(1:Busnum,[18,21,22,29]),PD0,QD0,mVolt,sigma);% +[Busnum,Loadi,Volt,PD,QD,rVolt,UAngel,RealPD,RealQD,rUAngel,Vbi,PDbi,QDbi,plotGapB]=subOPF(setdiff(1:Busnum,[2,3,5,20,24,27,28,10,11,12,13]),PD0,QD0,mVolt,sigma);% subplot(4,1,1); hold on; CaseBREV=(Volt-rVolt)*100;%Relative Error of Voltage in Case B % CaseBREV=CaseBREV(2:end)*100; -plot(1:length(CaseBREV),CaseBREV,'b.:','Marker','square'); +plot(1:length(CaseBREV),abs(CaseBREV),'b.:','Marker','square'); subplot(4,1,2); hold on; CaseBREA=(UAngel-rUAngel)*100;%Relative Error of Angle in Case B % CaseBREA=CaseBREA(2:end)*100; -plot(1:length(CaseBREA),CaseBREA,'b:','Marker','square'); +plot(1:length(CaseBREA),abs(CaseBREA),'b:','Marker','square'); subplot(4,1,3); hold on; CaseBREP=(PD-RealPD)./(RealPD+0.00001)*100;%Relative Error of PD in Case B % CaseBREP=CaseBREP(2:end)*100; -plot(1:length(CaseBREP),CaseBREP,'b:','Marker','square'); +plot(1:length(CaseBREP),abs(CaseBREP),'b:','Marker','square'); subplot(4,1,4); hold on; CaseBREQ=(QD-RealQD)./(RealQD+0.00001)*100;%Relative Error of QD in Case B % CaseBREQ=CaseBREQ(2:end)*100; -plot(1:length(CaseBREQ),CaseBREQ,'b:','Marker','square'); +plot(1:length(CaseBREQ),abs(CaseBREQ),'b:','Marker','square'); CaseBE=sqrt((sum(CaseBREV.^2)+sum(CaseBREA.^2)+sum(CaseBREP.^2)+sum(CaseBREQ.^2))/132); objB=full(sum(Vbi)+sum(PDbi)+sum(QDbi)); %% Case C -[Busnum,Loadi,Volt,PD,QD,rVolt,UAngel,RealPD,RealQD,rUAngel,Vbi,PDbi,QDbi,plotGapC]=subOPF([1:17],PD0,QD0,mVolt,sigma);% +[Busnum,Loadi,Volt,PD,QD,rVolt,UAngel,RealPD,RealQD,rUAngel,Vbi,PDbi,QDbi,plotGapC]=subOPF([1:33],PD0,QD0,mVolt,sigma);% subplot(4,1,1); hold on; CaseCREV=(Volt-rVolt)*100;%Relative Error of Voltage in Case C % CaseCREV=CaseCREV(2:end)*100; -plot(1:length(CaseCREV),CaseCREV,'r.:','Marker','o'); +plot(1:length(CaseCREV),abs(CaseCREV),'r.:','Marker','o'); subplot(4,1,2); hold on; CaseCREA=(UAngel-rUAngel)*100;%Relative Error of Angle in Case C % CaseCREA=CaseCREA(2:end)*100; -plot(1:length(CaseCREA),CaseCREA,'r:','Marker','o'); +plot(1:length(CaseCREA),abs(CaseCREA),'r:','Marker','o'); subplot(4,1,3); hold on; CaseCREP=(PD-RealPD)./(RealPD+0.00001)*100;%Relative Error of PD in Case C % CaseCREP=CaseCREP(2:end)*100; -plot(1:length(CaseCREP),CaseCREP,'r:','Marker','o'); +plot(1:length(CaseCREP),abs(CaseCREP),'r:','Marker','o'); subplot(4,1,4); hold on; CaseCREQ=(QD-RealQD)./(RealQD+0.00001)*100;%Relative Error of QD in Case C % CaseCREQ=CaseCREQ(2:end)*100; -plot(1:length(CaseCREQ),CaseCREQ,'r:','Marker','o'); +plot(1:length(CaseCREQ),abs(CaseCREQ),'r:','Marker','o'); % 画legend subplot(4,1,1); % title('Voltage'); diff --git a/PD0.mat b/PD0.mat index 9caa533..db6d1f3 100644 Binary files a/PD0.mat and b/PD0.mat differ diff --git a/QD0.mat b/QD0.mat index bb89563..ed2f708 100644 Binary files a/QD0.mat and b/QD0.mat differ diff --git a/mVolt.mat b/mVolt.mat index 34197ec..6969da9 100644 Binary files a/mVolt.mat and b/mVolt.mat differ diff --git a/subOPF.m b/subOPF.m index f61e831..352cce6 100644 --- a/subOPF.m +++ b/subOPF.m @@ -90,7 +90,7 @@ lVolt(noMeasurei)=0.7*mVolt(noMeasurei);% uVolt(noMeasurei)=0.7*mVolt(noMeasurei); %错误数据 %mVolt(2)=5; -bigM=1; +bigM=10; Vbi=sparse(0.5*ones(Busnum,1)); PDbi=sparse(0.5*ones(length(Loadi),1)); QDbi=sparse(0.5*ones(length(Loadi),1)); @@ -175,15 +175,15 @@ while(abs(Gap)>Precision*1) Mat_G=FormG(Volt,PD,QD,Loadi,bigM,mVolt,rVolt,sigma,Vbi,PDbi,QDbi,mPD,mQD,uPD,lPD,uQD,lQD,uVolt,lVolt); Mat_H=FormH(Busnum,Volt,PG,PD,QG,QD,Y,UAngel,r,c,Angle,Loadi); Ly=Mat_H; - if KK>22 + if KK>0 eps=eps*0.1; if abs(eps)<1e-6 eps=1e-5; end eps; - if any(Vbi>0.002) - Vbi(Vbi>0.002)=1; - end +% if any(Vbi>0.002) +% Vbi(Vbi>0.002)=1; +% end end Lz=FormLz(Mat_G,Init_L,GenL,Busnum,PVQL,PD,RealPD,RealQD,Loadi,KK,PF,eps); Lw=FormLw(Mat_G,Init_U,GenU,Busnum,PVQU,PD,PD0,QD0,Loadi,KK,PF,eps);