diff --git a/FormG.m b/FormG.m index 9add28b..bed78fe 100644 --- a/FormG.m +++ b/FormG.m @@ -1,4 +1,4 @@ -function Mat_G=FormG(Volt,PD,QD,Loadi,bigM,mVolt,rVolt,sigma,Vbi,PDbi,QDbi,mPD,mQD) +function Mat_G=FormG(Volt,PD,QD,Loadi,bigM,mVolt,rVolt,sigma,Vbi,PDbi,QDbi,mPD,mQD,uPD,lPD) Mat_G=[ sparse(PD(Loadi))-mPD(Loadi)-bigM*PDbi-0.1; diff --git a/OPF.m b/OPF.m index a7f6b14..9d3a654 100644 --- a/OPF.m +++ b/OPF.m @@ -50,12 +50,20 @@ kmax=100; Precision=Precision/1; %% 加误差 sigma=0.01; -PD0(Loadi)=PD0(Loadi).*(1+normrnd(0,sigma,length(Loadi),1)); -QD0(Loadi)=QD0(Loadi).*(1+normrnd(0,sigma,length(Loadi),1)); +PD0(Loadi)=RealPD(Loadi).*(1+normrnd(0,sigma,length(Loadi),1)); +QD0(Loadi)=RealQD(Loadi).*(1+normrnd(0,sigma,length(Loadi),1)); +mVolt=rVolt.*(1+normrnd(0,sigma,length(rVolt),1))'; mPD=PD0; mQD=QD0; -mVolt=rVolt.*(1+normrnd(0,sigma,length(rVolt),1))'; -mVolt(2)=2; +%加估计上下界 +lPD=RealPD*(1-3*sigma); +uPD=RealPD*(1+3*sigma); +lQD=RealQD*(1-3*sigma); +uQD=RealQD*(1+3*sigma); +lVolt=rVolt*(1-3*sigma); +uVolt=rVolt*(1+3*sigma); +%错误数据 +mVolt(2)=5; bigM=10; Vbi=sparse(0.5*ones(Busnum,1)); PDbi=sparse(0.5*ones(length(Loadi),1)); @@ -89,7 +97,7 @@ while(abs(Gap)>Precision*1) %% 形成方程矩阵 Luu=Init_U'.*Init_W'+Init_u*ones(RestraintCount,1); Lul=Init_L'.*Init_Z'-Init_u*ones(RestraintCount,1); - Mat_G=FormG(Volt,PD,QD,Loadi,bigM,mVolt,rVolt,sigma,Vbi,PDbi,QDbi,mPD,mQD); + Mat_G=FormG(Volt,PD,QD,Loadi,bigM,mVolt,rVolt,sigma,Vbi,PDbi,QDbi,mPD,mQD,uPD,lPD); Mat_H=FormH(Busnum,Volt,PG,PD,QG,QD,Y,UAngel,r,c,Angle,Loadi); Ly=Mat_H; Lz=FormLz(Mat_G,Init_L,GenL,Busnum,PVQL,PD,RealPD,RealQD,Loadi,KK,PF,eps); @@ -139,8 +147,11 @@ while(abs(Gap)>Precision*1) Mat_G=FormG(Volt,PD,QD,Loadi,bigM,mVolt,rVolt,sigma,Vbi,PDbi,QDbi,mPD,mQD); Mat_H=FormH(Busnum,Volt,PG,PD,QG,QD,Y,UAngel,r,c,Angle,Loadi); Ly=Mat_H; - if KK>5 - eps=eps*0.1; + if KK>8 + eps=eps*0.2; + if abs(eps)<1e-6 + eps=1e-6; + 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); @@ -156,4 +167,6 @@ while(abs(Gap)>Precision*1) KK=KK+1; end toc +obj=sum(Vbi)+sum(PDbi)+sum(QDbi); +fprintf('目标函数值 %.2f\n',full(obj));