From a2b2ba134f19de8f52621c8587f0342cd851b042 Mon Sep 17 00:00:00 2001 From: "dugg@lab-desk" Date: Mon, 2 Feb 2015 21:23:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=8A0-1=E5=8F=98=E9=87=8F=E5=8F=98?= =?UTF-8?q?=E6=88=900-0.1=E5=8F=98=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: dugg@lab-desk --- FormG.m | 6 +++--- FormLw.m | 2 +- FormLz.m | 2 +- Modification.m | 8 ++++++++ OPF.m | 2 +- func_deltG.m | 6 +++--- subOPF.m | 53 ++++++++++++++++++++++---------------------------- 7 files changed, 40 insertions(+), 39 deletions(-) diff --git a/FormG.m b/FormG.m index 8a36468..6280b98 100644 --- a/FormG.m +++ b/FormG.m @@ -10,8 +10,8 @@ Mat_G=[ Vbi; PDbi; QDbi; - (1-Vbi).*Vbi; - (1-PDbi).*PDbi; - (1-QDbi).*QDbi; + (0.1-Vbi).*Vbi; + (0.1-PDbi).*PDbi; + (0.1-QDbi).*QDbi; ]; end \ No newline at end of file diff --git a/FormLw.m b/FormLw.m index 988050f..9b5e970 100644 --- a/FormLw.m +++ b/FormLw.m @@ -17,7 +17,7 @@ realQD=QD0(Loadi); indQD=find(realQD>0); QDU(indQD(3:12:end))=1.55*realQD(indQD(3:12:end)); QDU(indQD(9:12:end))=1.05*realQD(indQD(9:12:end)); -t1=([0*PDU',100*ones(1,length(PDU)),0*QDU',100*ones(1,length(QDU)),0*VoltU,100*ones(1,length(VoltU)),1*ones(1,Busnum+length(Loadi)*2)])'; +t1=([0*PDU',1*ones(1,length(PDU)),0*QDU',1*ones(1,length(QDU)),0*VoltU,1*ones(1,length(VoltU)),0.1*ones(1,Busnum+length(Loadi)*2)])'; t1=[t1; sparse(eps*ones(Busnum,1)); sparse(eps*ones(length(Loadi),1)); diff --git a/FormLz.m b/FormLz.m index 5623b70..265824c 100644 --- a/FormLz.m +++ b/FormLz.m @@ -21,7 +21,7 @@ indQD=find(realQD>0); QDL(indQD(3:12:end))=0.95*realQD(indQD(3:12:end)); QDL(indQD(9:12:end))=0.95*realQD(indQD(9:12:end)); % QDL=0*PD(Loadi).*sqrt((1-PF.^2))./PF; -t1=([-100*ones(1,length(PDL)),0*PDL',-100*ones(1,length(QDL)),0*QDL',-100*ones(1,length(VoltL)),0*VoltL,0*ones(1,Busnum+length(Loadi)*2)])'; +t1=([-1*ones(1,length(PDL)),0*PDL',-1*ones(1,length(QDL)),0*QDL',-1*ones(1,length(VoltL)),0*VoltL,0*ones(1,Busnum+length(Loadi)*2)])'; t1=[t1; sparse(-eps*ones(Busnum,1)); sparse(-eps*ones(length(Loadi),1)); diff --git a/Modification.m b/Modification.m index 1ed5d45..365e084 100644 --- a/Modification.m +++ b/Modification.m @@ -3,6 +3,14 @@ AlphaP=FormAlphaP(Init_L,deltL,Init_U,deltU); %fprintf('AlphaP %f\n',full(AlphaP)); AlphaD=FormAlphaD(Init_Z,deltZ,Init_W,deltW); %fprintf('AlphaD %f\n',full(AlphaD)); +% if AlphaP<1e-4 +% AlphaP=0.1; +% end +% +% if AlphaD<1e-4 +% AlphaD=0.1; +% end + Init_Z=Init_Z+AlphaD*deltZ'; Init_L=Init_L+AlphaP*deltL'; diff --git a/OPF.m b/OPF.m index df310c9..fef5845 100644 --- a/OPF.m +++ b/OPF.m @@ -28,7 +28,7 @@ mVolt=rVolt.*(1+normrnd(0,sigma,length(rVolt),1))'; % mVolt=load('mVolt'); % mVolt=mVolt.mVolt; -mVolt(2)=rVolt(2)*(1+0.2); +mVolt(2)=rVolt(2)*(1+sigma*8); %% 画Case A的图 % figure('Color',[1 1 1]); [Busnum,Loadi,Volt,PD,QD,rVolt,UAngel,RealPD,RealQD,rUAngel,Vbi,PDbi,QDbi,plotGapA]=subOPF([],PD0,QD0,mVolt,sigma);%全部有 diff --git a/func_deltG.m b/func_deltG.m index 1900bf4..5514be9 100644 --- a/func_deltG.m +++ b/func_deltG.m @@ -58,7 +58,7 @@ dg7_dvbi=sparse(eye(Busnum,Busnum)); dgPDbi_dvbi=sparse(Busnum,sizeLoadi); dgQDbi_dvbi=sparse(Busnum,sizeLoadi); %互补约束 -dgCCVbi_dvbi=sparse(diag(1-2*Vbi));%互补约束为(1-Vbi).*Vbi +dgCCVbi_dvbi=sparse(diag(0.1-2*Vbi));%互补约束为(1-Vbi).*Vbi dgCCPDbi_dvbi=sparse(Busnum,length(Loadi)); dgCCQDbi_dvbi=sparse(Busnum,length(Loadi)); %% @@ -73,7 +73,7 @@ dgPDbi_dPDbi=sparse(eye(length(Loadi))); dgQDbi_dPDbi=sparse(zeros(length(Loadi))); %互补约束 dgCCVbi_dPDbi=sparse(length(Loadi),Busnum); -dgCCPDbi_dPDbi=sparse(diag(1-2*PDbi)); +dgCCPDbi_dPDbi=sparse(diag(0.1-2*PDbi)); dgCCQDbi_dPDbi=sparse(length(Loadi),length(Loadi)); %% dg3_dQDbi=sparse(length(Loadi),length(Loadi)); @@ -88,7 +88,7 @@ dgQDbi_dQDbi=sparse(eye(length(Loadi))); %互补约束 dgCCVbi_dQDbi=sparse(length(Loadi),Busnum); dgCCPDbi_dQDbi=sparse(length(Loadi),length(Loadi)); -dgCCQDbi_dQDbi=sparse(diag(1-2*QDbi)); +dgCCQDbi_dQDbi=sparse(diag(0.1-2*QDbi)); %% % deltG=[dg3_dPD,dg32_dPD,dg4_dPD,dg42_dPD,dg5_dPD,dg6_dPD,dg7_dPD,dgPDbi_dPD,dgQDbi_dPD,dgCCVbi_dPD,dgCCPDbi_dPD,dgCCQDbi_dPD; % dg3_dQD,dg32_dQD,dg4_dQD,dg42_dQD,dg5_dQD,dg6_dQD,dg7_dQD,dgPDbi_dQD,dgQDbi_dQD,dgCCVbi_dQD,dgCCPDbi_dQD,dgCCQDbi_dQD; diff --git a/subOPF.m b/subOPF.m index d0007b2..2ed2d85 100644 --- a/subOPF.m +++ b/subOPF.m @@ -45,7 +45,7 @@ Gap=(Init_L*Init_Z'-Init_U*Init_W'); KK=0; plotGap=zeros(1,60); ContrlCount=size(Loadi,1)*2+Busnum*2+Busnum+length(Loadi)*2; -kmax=100000; +kmax=100; Precision=Precision/1; %% 加误差 %找DG @@ -90,11 +90,11 @@ lVolt(noMeasurei)=0.7*mVolt(noMeasurei);% uVolt(noMeasurei)=0.7*mVolt(noMeasurei); %错误数据 %mVolt(2)=5; -bigM=0.3; -Vbi=sparse(0.0*ones(Busnum,1)); +bigM=0.000003; +Vbi=sparse(0.5*ones(Busnum,1)); % Vbi(2)=1; -PDbi=sparse(0.0*ones(length(Loadi),1)); -QDbi=sparse(0.0*ones(length(Loadi),1)); +PDbi=sparse(0.5*ones(length(Loadi),1)); +QDbi=sparse(0.5*ones(length(Loadi),1)); eps=1; % 第一遍,算连续的值 fprintf('第1次迭代,算连续量。\n'); @@ -124,7 +124,7 @@ while(abs(Gap)>Precision*10) %% 形成方程矩阵 Luu=Init_U'.*Init_W'+Init_u*ones(RestraintCount,1); Lul=Init_L'.*Init_Z'-Init_u*ones(RestraintCount,1); - bigM=1; + bigM=0.7; 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; @@ -146,13 +146,19 @@ end % Gap=(Init_L*Init_Z'-Init_U*Init_W'); Gap=1; % KK=0; -eps=1; +eps=0.00001; fprintf('\n'); + fprintf('第2次迭代,算离散量。\n'); -% while eps>0.0001 - while(abs(Gap)>Precision*10 || eps>0.0001) +while eps>0.000001 +% Init_Z=sparse(ones(1,RestraintCount)); +% Init_W=sparse(-1*ones(1,RestraintCount)); +% Init_L=1*sparse(ones(1,RestraintCount)); +% Init_U=1*sparse(ones(1,RestraintCount)); +% Init_Y=sparse(1,2*Busnum);%与学姐一致 + while(abs(Gap)>Precision*100) if KK>kmax - break; +% break; end plotGap(KK+1)=Gap; Init_u=Gap/2/RestraintCount*CenterA; @@ -176,26 +182,10 @@ fprintf(' %% 形成方程矩阵 Luu=Init_U'.*Init_W'+Init_u*ones(RestraintCount,1); Lul=Init_L'.*Init_Z'-Init_u*ones(RestraintCount,1); - bigM=0.2; + bigM=0.7; 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 eps>0.01 - eps=Gap*2 - else - eps=eps*0.2 - end - % if KK>20 - % eps=eps*0.1; - % eps=Gap; - % if abs(eps)<1e-6 - % eps=1e-5; - % end - % eps; -% if any(Vbi>0.5) -% Vbi(Vbi>0.5)=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); Lx=FormLx(deltF,deltH,Init_Y,deltG,Init_Z,Init_W); @@ -207,15 +197,18 @@ fprintf(' % Vbi_=Vbi; % PDbi_=PDbi; % QDbi_=QDbi; +% Vbi=1./(1+exp( (0.06-Vbi) /0.01))*0.1; [deltZ,deltL,deltW,deltU,deltX,deltY]=AssignXX(XX,ContrlCount,RestraintCount,Busnum); [Init_Z,Init_L,Init_W,Init_U,Init_Y,PG,QG,Volt,UAngel,PD,QD,Vbi,PDbi,QDbi]=Modification(Init_Z,Init_L,Init_W,Init_U,Init_Y,deltZ,deltL,deltW,deltU,deltX,deltY,PG,QG,Volt,UAngel,PVi,ContrlCount,Balance,Busnum,PGi,PD,QD,Loadi,Vbi,PDbi,QDbi); Gap=(Init_L*Init_Z'-Init_U*Init_W'); + +% Vbi(Vbi>0.01)=1; KK=KK+1; end -% eps=eps*0.95; + eps=eps*0.4; % eps=Gap -% Gap=100; -% end + Gap=100; +end %% 计算最大不平衡量 AngleIJ=sparse(r,c,UAngel(r)-UAngel(c)-Angle',Busnum,Busnum); dP=PD+diag(Volt)*Y.*cos(AngleIJ)*Volt';