不等式约束是这样的:
sparse(PD(Loadi));
sparse(PD(Loadi))-0.001;
sparse(QD(Loadi));
sparse(QD(Loadi))-0.001;
Volt'-mVolt'-bigM*Vbi-0.03;
Volt'-mVolt'+bigM*Vbi+0.03;
Vbi;
Signed-off-by: dugg@lab-desk <dugg@lab-desk>
This commit is contained in:
parent
1ee3b9312c
commit
9ef19c4542
9
FormG.m
9
FormG.m
|
|
@ -1,10 +1,13 @@
|
|||
function Mat_G=FormG(Volt,PVi,PGi,PG,QG,PD,QD,Loadi,Vbi)
|
||||
function Mat_G=FormG(Volt,PD,QD,Loadi,bigM,mVolt,rVolt,sigma,Vbi,PDbi)
|
||||
|
||||
Mat_G=[
|
||||
sparse(PD(Loadi));
|
||||
sparse(PD(Loadi))-0.001;
|
||||
sparse(QD(Loadi));
|
||||
Volt';
|
||||
Volt';
|
||||
sparse(QD(Loadi))-0.001;
|
||||
Volt'-mVolt'-bigM*Vbi-0.03;
|
||||
Volt'-mVolt'+bigM*Vbi+0.03;
|
||||
Vbi;
|
||||
% PDbi;
|
||||
];
|
||||
end
|
||||
2
FormLw.m
2
FormLw.m
|
|
@ -24,7 +24,7 @@ QDU(indQD(3:12:end))=1.55*realQD(indQD(3:12:end));
|
|||
QDU(indQD(9:12:end))=1.05*realQD(indQD(9:12:end));
|
||||
% PF=0.85;
|
||||
% QDU=1.0*PD(Loadi).*sqrt(1 -PF.^2)./PF;
|
||||
t1=([PDU',QDU',VoltU,VoltU,0*ones(1,Busnum)])';
|
||||
t1=([PDU',PDU',QDU',QDU',0*VoltU,100*ones(1,length(VoltU)),1*ones(1,Busnum)])';
|
||||
t2=Mat_G+Init_U'-t1;
|
||||
Lw=t2;
|
||||
|
||||
|
|
|
|||
2
FormLz.m
2
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=([PDL',QDL',VoltL,VoltL,0*ones(1,Busnum)])';
|
||||
t1=([PDL',PDL',QDL',QDL',-100*ones(1,length(VoltL)),0*VoltL,0*ones(1,Busnum)])';
|
||||
t2=Mat_G-Init_L'-t1;
|
||||
Lz=t2;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
function [Init_Z,Init_L,Init_W,Init_U,Init_Y,PG,QG,Volt,UAngel,PD,QD,Vbi]=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)
|
||||
function [Init_Z,Init_L,Init_W,Init_U,Init_Y,PG,QG,Volt,UAngel,PD,QD,Vbi,PDbi]=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)
|
||||
AlphaP=FormAlphaP(Init_L,deltL,Init_U,deltU);
|
||||
%fprintf('AlphaP %f\n',full(AlphaP));
|
||||
AlphaD=FormAlphaD(Init_Z,deltZ,Init_W,deltW);
|
||||
|
|
@ -24,5 +24,6 @@ balVolt=Volt(Balance);
|
|||
Volt=Volt+AlphaP*t(1:Busnum);
|
||||
Volt(Balance)=balVolt;
|
||||
UAngel=UAngel+AlphaP*t(Busnum+1:2*Busnum);
|
||||
Vbi=Vbi+AlphaP*t(2*Busnum+1:end)';
|
||||
Vbi=Vbi+AlphaP*t(2*Busnum+1:2*Busnum+Busnum)';
|
||||
% PDbi=PDbi+AlphaP*t(3*Busnum+1:end)';
|
||||
end
|
||||
15
OPF.m
15
OPF.m
|
|
@ -6,7 +6,7 @@ clear
|
|||
%%
|
||||
thesis=ForThesis(1,62);
|
||||
[kmax,Precision,UAngel,Volt,Busnum,PVi,PVu,Balance,Y,Angle,P0,Q0,r,c,GB,Linei,Linej,Transfori,Transforj,GenU,GenL,GenC,PG,QG,PD,QD,CenterA,PGi,PVQU,PVQL,Liner,Linex,Lineb,Transforr,Transforx,Branchi,Branchg,Branchb,Transfork0]= ...
|
||||
pf('C:\lz\賦枙綴笭陔數呾\笭凳賦彆\78\躂第釦腓i盄_2229880_2013-10-29\躂第釦腓i盄_2229880_2013-10-29_iPso_newFile.txt');
|
||||
pf('E:\ËãÀý\¶«¼Ê911_2751267_2012-09-05\newFIle9-2.txt');
|
||||
% pf('E:\算例\柳金Ⅰ926_21671693_2012-09-06\newFIle16.txt');
|
||||
%pf('D:\Project\青秀降损项目\最小化潮流\最小潮流算例\原始\津头站津视922(3-1)_0.5_120%.txt');
|
||||
%pf('D:\Project\最小化潮流\最小潮流算例\仙海919.txt');
|
||||
|
|
@ -28,6 +28,7 @@ PD0=PD;
|
|||
QD0=QD;
|
||||
Volt0=Volt;
|
||||
UAngel0=UAngel;
|
||||
rVolt=Volt0;
|
||||
%%
|
||||
PG0(Balance)=PGBal(Balance);
|
||||
PG(Balance)=PGBal(Balance);
|
||||
|
|
@ -48,9 +49,13 @@ ContrlCount=size(Loadi,1)*2+Busnum*2+Busnum;
|
|||
kmax=60;
|
||||
Precision=Precision/1;
|
||||
%% 加误差
|
||||
PD0(Loadi)=PD0(Loadi).*(1+normrnd(0,0.05,length(Loadi),1));
|
||||
QD0(Loadi)=QD0(Loadi).*(1+normrnd(0,0.05,length(Loadi),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));
|
||||
mVolt=rVolt.*(1+normrnd(0,sigma,length(rVolt),1))';
|
||||
bigM=10;
|
||||
Vbi=sparse(ones(Busnum,1));
|
||||
PDbi=sparse(ones(length(Loadi),1));
|
||||
while(abs(Gap)>Precision)
|
||||
if KK>kmax
|
||||
break;
|
||||
|
|
@ -77,7 +82,7 @@ while(abs(Gap)>Precision)
|
|||
%% 形成方程矩阵
|
||||
Luu=Init_U'.*Init_W'+Init_u*ones(RestraintCount,1);
|
||||
Lul=Init_L'.*Init_Z'-Init_u*ones(RestraintCount,1);
|
||||
Mat_G=FormG(Volt,PVi,PGi,PG,QG,PD,QD,Loadi,Vbi);
|
||||
Mat_G=FormG(Volt,PD,QD,Loadi,bigM,mVolt,rVolt,sigma,Vbi,PDbi);
|
||||
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);
|
||||
|
|
@ -89,7 +94,7 @@ while(abs(Gap)>Precision)
|
|||
XX=SolveIt(deltF,deltG,Init_L,Init_Z,Init_U,Init_W,deltdeltF,ddh,ddg,deltH,Init_Y,Ly,Lz,ContrlCount,Lw,Lul,Luu,RestraintCount,Lx,Balance,PVi,PGi,Busnum,Loadi);
|
||||
%%取各分量
|
||||
[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]=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);
|
||||
[Init_Z,Init_L,Init_W,Init_U,Init_Y,PG,QG,Volt,UAngel,PD,QD,Vbi,PDbi]=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);
|
||||
Gap=(Init_L*Init_Z'-Init_U*Init_W');
|
||||
KK=KK+1;
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
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]=OPF_Init(Busnum,Balance,PG,QG,Volt,GenU,GenL,PVi,PGi,PVQU,PVQL,PD0,QD0,QD,PD)
|
||||
Loadi=find(QD~=0 | PD~=0);
|
||||
%Loadi=[1:Busnum]';
|
||||
RestraintCount=size(Loadi,1)*2+Busnum*2+Busnum; %约束条件数,放开所有QD
|
||||
RestraintCount=size(Loadi,1)*4+Busnum*2+Busnum+length(Loadi)*0; %约束条件数,放开所有QD
|
||||
t_Bal_volt=Volt(Balance);
|
||||
Volt=sparse(1*ones(1,Busnum));
|
||||
Volt(Balance)=t_Bal_volt;
|
||||
|
|
|
|||
|
|
@ -1,10 +1,9 @@
|
|||
function deltF=func_deltF(PG,QG,PVi,PGi,wPG,wQG,wPD,wQD,PG0,QG0,PD0,PD,QD,QD0,Busnum,Loadi)
|
||||
t3=2*wPD.*(PD(Loadi)-PD0(Loadi));
|
||||
t4=2*wQD.*(QD(Loadi)-QD0(Loadi));
|
||||
deltF=[sparse(t3);
|
||||
sparse(t4);
|
||||
deltF=[sparse(length(Loadi),1);
|
||||
sparse(length(Loadi),1);
|
||||
sparse(2*Busnum,1);
|
||||
sparse(Busnum,1);
|
||||
sparse(ones(Busnum,1));
|
||||
%sparse(ones(length(Loadi),1));
|
||||
];
|
||||
|
||||
end
|
||||
|
|
@ -1,19 +1,28 @@
|
|||
function deltG=func_deltG(Busnum,PVi,PGi,Loadi,PD,QD)
|
||||
sizeLoadi=size(Loadi,1);
|
||||
%dg3 PD-M*b-t-PD0
|
||||
dg3_dPD=sparse(1:size(Loadi,1),1:size(Loadi,1),ones(size(Loadi,1),1),size(Loadi,1),size(Loadi,1));
|
||||
%dg32 PD+M*B+t+PD0
|
||||
dg32_dPD=dg3_dPD;
|
||||
dg4_dPD=sparse(size(Loadi,1),length(Loadi));
|
||||
dg42_dPD=dg4_dPD;
|
||||
dg5_dPD=sparse(size(Loadi,1),Busnum);
|
||||
dg6_dPD=dg5_dPD;
|
||||
dg7_dPD=sparse(sizeLoadi,Busnum);
|
||||
dgPD_dPD
|
||||
%%
|
||||
dg3_dQD=sparse(length(Loadi),length(Loadi));
|
||||
dg32_dQD=dg3_dQD;
|
||||
dg4_dQD=sparse(1:size(Loadi,1),1:size(Loadi,1),ones(size(Loadi,1),1),size(Loadi,1),size(Loadi,1));
|
||||
dg42_dQD=dg4_dQD;
|
||||
dg5_dQD=sparse(size(Loadi,1),Busnum);
|
||||
dg6_dQD=dg5_dQD;
|
||||
dg7_dQD=sparse(sizeLoadi,Busnum);
|
||||
%%
|
||||
dg3_dx=sparse(2*Busnum,sizeLoadi);
|
||||
dg32_dx=dg3_dx;
|
||||
dg4_dx=sparse(2*Busnum,length(Loadi));
|
||||
dg42_dx=dg4_dx;
|
||||
dg5_dx=[sparse(1:Busnum,1:Busnum,ones(Busnum,1),Busnum,Busnum);
|
||||
sparse(Busnum,Busnum);
|
||||
];
|
||||
|
|
@ -21,14 +30,25 @@ dg6_dx=dg5_dx;
|
|||
dg7_dx=sparse(2*Busnum,Busnum);
|
||||
%%
|
||||
dg3_dvbi=sparse(Busnum,sizeLoadi);
|
||||
dg32_dvbi=dg3_dvbi;
|
||||
dg4_dvbi=sparse(Busnum,length(Loadi));
|
||||
dg42_dvbi=dg4_dvbi;
|
||||
dg5_dvbi=sparse(Busnum,Busnum);
|
||||
dg6_dvbi=sparse(Busnum,Busnum);
|
||||
dg6_dvbi=sparse(Busnum,Busnum);
|
||||
dg7_dvbi=sparse(eye(Busnum,Busnum));
|
||||
%%
|
||||
deltG=[dg3_dPD,dg4_dPD,dg5_dPD,dg6_dPD;
|
||||
dg3_dQD,dg4_dQD,dg5_dQD,dg6_dQD;
|
||||
dg3_dx,dg4_dx,dg5_dx,dg6_dx;
|
||||
dg3_dvbi,dg4_dvbi,dg5_dvbi,dg6_dvbi;
|
||||
dg3_dPDbi=sparse(-eye(sizeLoadi));
|
||||
dg32_dPDbi=sparse(eye(sizeLoadi));
|
||||
dg4_dPDbi=sparse(length(Loadi),length(Loadi));
|
||||
dg42_dPDbi=dg4_dPDbi;
|
||||
dg5_dPDbi=sparse(length(Loadi),Busnum);
|
||||
dg6_dPDbi=sparse(length(Loadi),Busnum);
|
||||
dg7_dPDbi=sparse(length(Loadi),Busnum);
|
||||
%%
|
||||
deltG=[dg3_dPD,dg32_dPD,dg4_dPD,dg42_dPD,dg5_dPD,dg6_dPD,dg7_dPD;
|
||||
dg3_dQD,dg32_dQD,dg4_dQD,dg42_dQD,dg5_dQD,dg6_dQD,dg7_dQD;
|
||||
dg3_dx,dg32_dx,dg4_dx,dg42_dx,dg5_dx,dg6_dx,dg7_dx;
|
||||
dg3_dvbi,dg32_dvbi,dg4_dvbi,dg42_dvbi,dg5_dvbi,dg6_dvbi,dg7_dvbi;
|
||||
dg3_dPDbi,dg32_dPDbi,dg4_dPDbi,dg42_dPDbi,dg5_dPDbi,dg6_dPDbi,dg7_dPDbi;
|
||||
];
|
||||
end
|
||||
37
func_deltG.m
37
func_deltG.m
|
|
@ -1,34 +1,63 @@
|
|||
function deltG=func_deltG(Busnum,PVi,PGi,Loadi,PD,QD)
|
||||
sizeLoadi=size(Loadi,1);
|
||||
%dg3 PD-M*b-t-PD0
|
||||
dg3_dPD=sparse(1:size(Loadi,1),1:size(Loadi,1),ones(size(Loadi,1),1),size(Loadi,1),size(Loadi,1));
|
||||
%dg32 PD+M*B+t+PD0
|
||||
dg32_dPD=dg3_dPD;
|
||||
dg4_dPD=sparse(size(Loadi,1),length(Loadi));
|
||||
dg42_dPD=dg4_dPD;
|
||||
dg5_dPD=sparse(size(Loadi,1),Busnum);
|
||||
dg6_dPD=dg5_dPD;
|
||||
dg7_dPD=sparse(sizeLoadi,Busnum);
|
||||
dgPDbi_dPD=sparse(sizeLoadi,sizeLoadi);
|
||||
%%
|
||||
dg3_dQD=sparse(length(Loadi),length(Loadi));
|
||||
dg32_dQD=dg3_dQD;
|
||||
dg4_dQD=sparse(1:size(Loadi,1),1:size(Loadi,1),ones(size(Loadi,1),1),size(Loadi,1),size(Loadi,1));
|
||||
dg42_dQD=dg4_dQD;
|
||||
dg5_dQD=sparse(size(Loadi,1),Busnum);
|
||||
dg6_dQD=dg5_dQD;
|
||||
dg7_dQD=sparse(sizeLoadi,Busnum);
|
||||
dgPDbi_dQD=sparse(sizeLoadi,sizeLoadi);
|
||||
%%
|
||||
dg3_dx=sparse(2*Busnum,sizeLoadi);
|
||||
dg32_dx=dg3_dx;
|
||||
dg4_dx=sparse(2*Busnum,length(Loadi));
|
||||
dg42_dx=dg4_dx;
|
||||
dg5_dx=[sparse(1:Busnum,1:Busnum,ones(Busnum,1),Busnum,Busnum);
|
||||
sparse(Busnum,Busnum);
|
||||
];
|
||||
dg6_dx=dg5_dx;
|
||||
dg7_dx=sparse(2*Busnum,Busnum);
|
||||
dgPDbi_dx=sparse(2*Busnum,sizeLoadi);
|
||||
%%
|
||||
dg3_dvbi=sparse(Busnum,sizeLoadi);
|
||||
dg32_dvbi=dg3_dvbi;
|
||||
dg4_dvbi=sparse(Busnum,length(Loadi));
|
||||
dg42_dvbi=dg4_dvbi;
|
||||
dg5_dvbi=sparse(Busnum,Busnum);
|
||||
dg6_dvbi=sparse(Busnum,Busnum);
|
||||
dg7_dvbi=sparse(eye(Busnum,Busnum));
|
||||
dgPDbi_dvbi=sparse(Busnum,sizeLoadi);
|
||||
%%
|
||||
deltG=[dg3_dPD,dg4_dPD,dg5_dPD,dg6_dPD,dg7_dPD;
|
||||
dg3_dQD,dg4_dQD,dg5_dQD,dg6_dQD,dg7_dQD;
|
||||
dg3_dx,dg4_dx,dg5_dx,dg6_dx,dg7_dx;
|
||||
dg3_dvbi,dg4_dvbi,dg5_dvbi,dg6_dvbi,dg7_dvbi;
|
||||
dg3_dPDbi=sparse(-eye(sizeLoadi));
|
||||
dg32_dPDbi=sparse(eye(sizeLoadi));
|
||||
dg4_dPDbi=sparse(length(Loadi),length(Loadi));
|
||||
dg42_dPDbi=dg4_dPDbi;
|
||||
dg5_dPDbi=sparse(length(Loadi),Busnum);
|
||||
dg6_dPDbi=sparse(length(Loadi),Busnum);
|
||||
dg7_dPDbi=sparse(length(Loadi),Busnum);
|
||||
dgPDbi_dPDbi=sparse(eye(length(Loadi)));
|
||||
%%
|
||||
% deltG=[dg3_dPD,dg32_dPD,dg4_dPD,dg42_dPD,dg5_dPD,dg6_dPD,dg7_dPD,dgPDbi_dPD;
|
||||
% dg3_dQD,dg32_dQD,dg4_dQD,dg42_dQD,dg5_dQD,dg6_dQD,dg7_dQD,dgPDbi_dQD;
|
||||
% dg3_dx,dg32_dx,dg4_dx,dg42_dx,dg5_dx,dg6_dx,dg7_dx,dgPDbi_dx;
|
||||
% dg3_dvbi,dg32_dvbi,dg4_dvbi,dg42_dvbi,dg5_dvbi,dg6_dvbi,dg7_dvbi,dgPDbi_dvbi;
|
||||
% dg3_dPDbi,dg32_dPDbi,dg4_dPDbi,dg42_dPDbi,dg5_dPDbi,dg6_dPDbi,dg7_dPDbi,dgPDbi_dPDbi;
|
||||
% ];
|
||||
deltG=[dg3_dPD,dg32_dPD,dg4_dPD,dg42_dPD,dg5_dPD,dg6_dPD,dg7_dPD;
|
||||
dg3_dQD,dg32_dQD,dg4_dQD,dg42_dQD,dg5_dQD,dg6_dQD,dg7_dQD;
|
||||
dg3_dx,dg32_dx,dg4_dx,dg42_dx,dg5_dx,dg6_dx,dg7_dx;
|
||||
dg3_dvbi,dg32_dvbi,dg4_dvbi,dg42_dvbi,dg5_dvbi,dg6_dvbi,dg7_dvbi;
|
||||
];
|
||||
end
|
||||
|
|
@ -3,6 +3,7 @@ dH_dPD=[sparse(1:size(Loadi,1),Loadi,-ones(size(Loadi,1),1),size(Loadi,1),Busnum
|
|||
dH_dQD=[sparse(size(Loadi,1),Busnum) sparse(1:size(Loadi,1),Loadi,-ones(size(Loadi,1),1),size(Loadi,1),Busnum)];
|
||||
dH_dx = jacobian_M(Busnum,Volt,Y,Angle,UAngel,r,c); %形成雅克比矩阵
|
||||
dH_dvbi=sparse(Busnum,2*Busnum);
|
||||
deltH=[dH_dPD;dH_dQD;dH_dx';dH_dvbi];
|
||||
dH_dPDbi=sparse(length(Loadi),2*Busnum);
|
||||
deltH=[dH_dPD;dH_dQD;dH_dx';dH_dvbi;];
|
||||
|
||||
end
|
||||
|
|
@ -1,11 +1,3 @@
|
|||
function deltdeltF=func_deltdeltF(PVi,wPG,wQG,wPD,wQD,ContrlCount)
|
||||
|
||||
%ContrlCount=size(PVi,1)+size(PGi,1)+size(wD,1)+Busnum*2; %P,Q,Volt theta这些控制变量数
|
||||
C=[wPD' wQD'];
|
||||
sizeC=size(C,2);
|
||||
diagC=sparse(1:sizeC,1:sizeC,C,sizeC,sizeC);
|
||||
deltdeltF=[
|
||||
diagC*2,sparse(sizeC,ContrlCount-sizeC);
|
||||
sparse(ContrlCount-sizeC,ContrlCount);
|
||||
];
|
||||
deltdeltF=0;
|
||||
end
|
||||
Loading…
Reference in New Issue