diff --git a/OPF_Init.m b/OPF_Init.m index 344a4f6..3c4db83 100644 --- a/OPF_Init.m +++ b/OPF_Init.m @@ -1,4 +1,4 @@ -function [Volt,UAngel,Init_Z,Init_W,Init_L,Init_U,Init_Y,PG,QG,RestraintCount,wPG,wQG,wPD,wQD,PD,PD0,QD,randPDind,Loadi,notLoadi]=OPF_Init(Busnum,Balance,PG,QG,Volt,GenU,GenL,PVi,PGi,PVQU,PVQL,PD0,QD0,QD,PD) +function [Volt,UAngel,Init_Z,Init_W,Init_L,Init_U,Init_Y,PG,QG,RestraintCount,wPG,wQG,wPD,wQD,wVolt,PD,PD0,QD,randPDind,Loadi,notLoadi]=OPF_Init(Busnum,Balance,PG,QG,Volt,GenU,GenL,PVi,PGi,PVQU,PVQL,PD0,QD0,QD,PD) Loadi=find(QD~=0 | PD~=0); PDi=find(PD~=0); QDi=find(QD~=0); @@ -35,6 +35,7 @@ wQG=1*ones(size(PVi,1),1); randPDind=0; wPD=1/0.05^2*ones(sum(PD~=0),1); wQD=1/0.05^2*ones(sum(QD~=0),1); +wVolt=1/0.05^2*ones(Busnum,1); %wD(randPDind)=0;%一些负荷不约束 %wD(7)=0; % wD(11)=0; diff --git a/ObjectiveFun.m b/ObjectiveFun.m index 3dfec63..efe5ce1 100644 --- a/ObjectiveFun.m +++ b/ObjectiveFun.m @@ -1,6 +1,6 @@ -function [out_arg]=ObjectiveFun(PG,PG0,PGi,QG,QG0,PVi,PD,PD0,QD,QD0,wPG,wQG,wPD,wQD,Loadi) +function [out_arg]=ObjectiveFun(PG,PG0,PGi,QG,QG0,PVi,PD,PD0,QD,QD0,Volt,Volt0,wPG,wQG,wPD,wQD,wVolt,Loadi) t4=wPD.*(PD(PD0~=0)-PD0(PD0~=0)).^2; t5=wQD.*(QD(QD0~=0)-QD0(QD0~=0)).^2; - -out_arg=sum(t4)+sum(t5); +t6=wVolt.*(Volt-Volt0').^2; +out_arg=sum(t4)+sum(t5)+sum(t6); end \ No newline at end of file diff --git a/Run_YALMIP.m b/Run_YALMIP.m index e0b96d1..b098f5b 100644 --- a/Run_YALMIP.m +++ b/Run_YALMIP.m @@ -24,14 +24,15 @@ QG0(Balance)=QGBal(Balance); QG0(PVi)=QGBal(PVi); PG(Balance)=PGBal(Balance); QG(PVi)=QGBal(PVi); -PF=1; -AngleIJ=sparse(r,c,UAngel(r)-UAngel(c)-Angle',Busnum,Busnum); -dP=PG-PD-diag(Volt)*Y.*cos(AngleIJ)*Volt'; -dPD=abs(dP./PD); -dQ=QG-QD-diag(Volt)*Y.*sin(AngleIJ)*Volt'; -dQD=abs(dQ./QD); -maxdPQ=max([dPD(dPD<10);dQD(dQD<10)]); -[Volt,UAngel,Init_Z,Init_W,Init_L,Init_U,Init_Y,PG,QG,RestraintCount,wPG,wQG,wPD,wQD,PD,PD0,QD,randPDind,Loadi,notLoadi]=OPF_Init(Busnum,Balance,PG,QG,Volt,GenU,GenL,PVi,PGi,PVQU,PVQL,PD0,QD0,QD,PD); +Volt0=Volt; +% PF=1; +% AngleIJ=sparse(r,c,UAngel(r)-UAngel(c)-Angle',Busnum,Busnum); +% dP=PG-PD-diag(Volt)*Y.*cos(AngleIJ)*Volt'; +% dPD=abs(dP./PD); +% dQ=QG-QD-diag(Volt)*Y.*sin(AngleIJ)*Volt'; +% dQD=abs(dQ./QD); +% maxdPQ=max([dPD(dPD<10);dQD(dQD<10)]); +[Volt,UAngel,Init_Z,Init_W,Init_L,Init_U,Init_Y,PG,QG,RestraintCount,wPG,wQG,wPD,wQD,wVolt,PD,PD0,QD,randPDind,Loadi,notLoadi]=OPF_Init(Busnum,Balance,PG,QG,Volt,GenU,GenL,PVi,PGi,PVQU,PVQL,PD0,QD0,QD,PD); %% 定义变量 BalVolt=Volt(Balance); Volt=sdpvar(Busnum,1); @@ -45,7 +46,7 @@ AngleIJ=sdpvar(Busnum,Busnum,'full'); PD0=(1+normrnd(0,0.05,length(PD0),1)).*PD0; QD0=(1+normrnd(0,0.05,length(QD0),1)).*QD0; %% 目标函数 -Objective=ObjectiveFun(PG,PG0,PGi,QG,QG0,PVi,PD,PD0,QD,QD0,wPG,wQG,wPD,wQD,Loadi); +Objective=ObjectiveFun(PG,PG0,PGi,QG,QG0,PVi,PD,PD0,QD,QD0,Volt,Volt0,wPG,wQG,wPD,wQD,wVolt,Loadi); %AngleIJ=sparse(r,c,UAngel(r)-UAngel(c)-Angle,Busnum,Busnum); %% 赋初值,可以加快求解速度。 assign(Volt(:),1);