parent
c79429065e
commit
19975b1f88
|
|
@ -5,7 +5,7 @@ tic
|
||||||
[kmax,Precision,UAngel,Volt,Busnum,PVi,PVu,Balance,Y,Angle,P0,Q0,r,c,GB, ...
|
[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, ...
|
Linei,Linej,Transfori,Transforj,GenU,GenL,GenC,PG,QG,PD,QD,CenterA,PGi,PVQU,PVQL, ...
|
||||||
Liner,Linex,Lineb,Transforr,Transforx,Transfork0]= ...
|
Liner,Linex,Lineb,Transforr,Transforx,Transfork0]= ...
|
||||||
pf('ieee30.dat');
|
pf('E:/ËãÀý/Áø½ð¢ñ926_21671693_2012-09-06/newFIle20.txt');
|
||||||
|
|
||||||
%% 潮流等式
|
%% 潮流等式
|
||||||
AngleIJ=sparse(r,c,UAngel(r)-UAngel(c)-Angle',Busnum,Busnum);
|
AngleIJ=sparse(r,c,UAngel(r)-UAngel(c)-Angle',Busnum,Busnum);
|
||||||
|
|
@ -24,48 +24,51 @@ QG0(Balance)=QGBal(Balance);
|
||||||
QG0(PVi)=QGBal(PVi);
|
QG0(PVi)=QGBal(PVi);
|
||||||
PG(Balance)=PGBal(Balance);
|
PG(Balance)=PGBal(Balance);
|
||||||
QG(PVi)=QGBal(PVi);
|
QG(PVi)=QGBal(PVi);
|
||||||
PF=1;
|
Volt0=Volt;
|
||||||
AngleIJ=sparse(r,c,UAngel(r)-UAngel(c)-Angle',Busnum,Busnum);
|
% PF=1;
|
||||||
dP=PG-PD-diag(Volt)*Y.*cos(AngleIJ)*Volt';
|
% AngleIJ=sparse(r,c,UAngel(r)-UAngel(c)-Angle',Busnum,Busnum);
|
||||||
dPD=abs(dP./PD);
|
% dP=PG-PD-diag(Volt)*Y.*cos(AngleIJ)*Volt';
|
||||||
dQ=QG-QD-diag(Volt)*Y.*sin(AngleIJ)*Volt';
|
% dPD=abs(dP./PD);
|
||||||
dQD=abs(dQ./QD);
|
% dQ=QG-QD-diag(Volt)*Y.*sin(AngleIJ)*Volt';
|
||||||
maxdPQ=max([dPD(dPD<10);dQD(dQD<10)]);
|
% 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);
|
[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);
|
||||||
|
|
||||||
%% 定义变量
|
%% 定义变量
|
||||||
Volt=sdpvar(Busnum,1);
|
BalVolt=Volt(Balance);
|
||||||
UAngel=sdpvar(Busnum,1);
|
% Volt=sdpvar(Busnum,1);
|
||||||
|
% UAngel=sdpvar(Busnum,1);
|
||||||
% PG=sdpvar(Busnum,1);
|
% PG=sdpvar(Busnum,1);
|
||||||
% QG=sdpvar(Busnum,1);
|
% QG=sdpvar(Busnum,1);
|
||||||
PD=sdpvar(Busnum,1);
|
PD=sdpvar(Busnum,1);
|
||||||
QD=sdpvar(Busnum,1);
|
QD=sdpvar(Busnum,1);
|
||||||
AngleIJ=sdpvar(Busnum,Busnum,'full');
|
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);
|
%AngleIJ=sparse(r,c,UAngel(r)-UAngel(c)-Angle,Busnum,Busnum);
|
||||||
%% 赋初值,可以加快求解速度。
|
%% 赋初值,可以加快求解速度。
|
||||||
assign(Volt(:),1);
|
assign(Volt(:),1);
|
||||||
assign(UAngel(:),0);
|
assign(UAngel(:),0);
|
||||||
assign(PD(:),PD0(:));
|
assign(PD(:),PD0(:));
|
||||||
assign(QD(:),QD0(:));
|
assign(QD(:),QD0(:));
|
||||||
% assign(PG(:),PG0(:));
|
|
||||||
% assign(QG(:),QG0(:));
|
|
||||||
%% YALMIP部分
|
%% YALMIP部分
|
||||||
dP=PG0-PD-diag(Volt)*Y.*cos( sparse(r,c,UAngel(r)-UAngel(c)-Angle,Busnum,Busnum) )*Volt;
|
dP=PG0-PD-diag(Volt)*Y.*cos( sparse(r,c,UAngel(r)-UAngel(c)-Angle,Busnum,Busnum) )*Volt;
|
||||||
dQ=QG0-QD-diag(Volt)*Y.*sin( sparse(r,c,UAngel(r)-UAngel(c)-Angle,Busnum,Busnum) )*Volt;
|
dQ=QG0-QD-diag(Volt)*Y.*sin( sparse(r,c,UAngel(r)-UAngel(c)-Angle,Busnum,Busnum) )*Volt;
|
||||||
Loadi=PD0~=0 | QD0~=0;
|
Loadi=PD0~=0 | QD0~=0 |PG0~=0|QG0~=0;
|
||||||
Constraints = [%AngleIJ-sparse(r,c,UAngel(r)-UAngel(c)-Angle,Busnum,Busnum)==0, ...
|
Constraints = [%AngleIJ-sparse(r,c,UAngel(r)-UAngel(c)-Angle,Busnum,Busnum)==0, ...
|
||||||
dP==0, ...
|
dP(setdiff(1:Busnum,Loadi))==0, ...
|
||||||
dQ==0, ...
|
dQ(setdiff(1:Busnum,Loadi))==0, ...
|
||||||
PG(setxor(1:Busnum, PGi) )==0, ...
|
% dP==0, ...
|
||||||
QG(setxor(1:Busnum, PVi) )==0, ...
|
% dQ==0, ...
|
||||||
PD(PD0==0)==0, ...
|
PD(PD0==0)==0, ...
|
||||||
QD(QD0==0)==0, ...
|
QD(QD0==0)==0, ...
|
||||||
0.9*ones(Busnum,1)<=Volt<=1.1*ones(Busnum,1), ...
|
0.9*ones(Busnum,1)<=Volt<=1.1*ones(Busnum,1), ...
|
||||||
-60*ones(Busnum,1)<=PG<=60*ones(Busnum,1), ...
|
Volt(Balance)==BalVolt, ...
|
||||||
-60*ones(Busnum,1)<=QG<=60*ones(Busnum,1)
|
UAngel(Balance)==0, ...
|
||||||
|
0.8*PD0<=PD<=1.2*PD0;
|
||||||
|
0.8*QD0<=QD<=1.2*QD0;
|
||||||
];
|
];
|
||||||
options = sdpsettings('verbose',2,'showprogress',1,'debug',0,'solver','ipopt','usex0','1');
|
options = sdpsettings('verbose',2,'showprogress',1,'debug',0,'solver','ipopt','usex0','1');
|
||||||
sol = solvesdp(Constraints,Objective,options);
|
sol = solvesdp(Constraints,Objective,options);
|
||||||
|
|
@ -76,7 +79,6 @@ if sol.problem == 0
|
||||||
dVangle=double(UAngel)
|
dVangle=double(UAngel)
|
||||||
fprintf('ojb\n');
|
fprintf('ojb\n');
|
||||||
optimalObj=double(Objective)
|
optimalObj=double(Objective)
|
||||||
double(PG)-PG0;
|
|
||||||
sol
|
sol
|
||||||
else
|
else
|
||||||
display('Hmm, something went wrong!');
|
display('Hmm, something went wrong!');
|
||||||
|
|
|
||||||
80
Run_YALMIP.m
80
Run_YALMIP.m
|
|
@ -35,8 +35,8 @@ Volt0=Volt;
|
||||||
[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);
|
[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);
|
BalVolt=Volt(Balance);
|
||||||
Volt=sdpvar(Busnum,1);
|
% Volt=sdpvar(Busnum,1);
|
||||||
UAngel=sdpvar(Busnum,1);
|
% UAngel=sdpvar(Busnum,1);
|
||||||
% PG=sdpvar(Busnum,1);
|
% PG=sdpvar(Busnum,1);
|
||||||
% QG=sdpvar(Busnum,1);
|
% QG=sdpvar(Busnum,1);
|
||||||
PD=sdpvar(Busnum,1);
|
PD=sdpvar(Busnum,1);
|
||||||
|
|
@ -46,45 +46,45 @@ AngleIJ=sdpvar(Busnum,Busnum,'full');
|
||||||
PD0=(1+normrnd(0,0.05,length(PD0),1)).*PD0;
|
PD0=(1+normrnd(0,0.05,length(PD0),1)).*PD0;
|
||||||
QD0=(1+normrnd(0,0.05,length(QD0),1)).*QD0;
|
QD0=(1+normrnd(0,0.05,length(QD0),1)).*QD0;
|
||||||
%% 目标函数
|
%% 目标函数
|
||||||
Objective=ObjectiveFun(PG,PG0,PGi,QG,QG0,PVi,PD,PD0,QD,QD0,Volt,Volt0,wPG,wQG,wPD,wQD,wVolt,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);
|
%AngleIJ=sparse(r,c,UAngel(r)-UAngel(c)-Angle,Busnum,Busnum);
|
||||||
%% 赋初值,可以加快求解速度。
|
%% 赋初值,可以加快求解速度。
|
||||||
assign(Volt(:),1);
|
% assign(Volt(:),1);
|
||||||
assign(UAngel(:),0);
|
% assign(UAngel(:),0);
|
||||||
assign(PD(:),PD0(:));
|
% assign(PD(:),PD0(:));
|
||||||
assign(QD(:),QD0(:));
|
% assign(QD(:),QD0(:));
|
||||||
%% YALMIP²¿·Ö
|
% %% YALMIP²¿·Ö
|
||||||
dP=PG0-PD-diag(Volt)*Y.*cos( sparse(r,c,UAngel(r)-UAngel(c)-Angle,Busnum,Busnum) )*Volt;
|
% dP=PG0-PD-diag(Volt)*Y.*cos( sparse(r,c,UAngel(r)-UAngel(c)-Angle,Busnum,Busnum) )*Volt;
|
||||||
dQ=QG0-QD-diag(Volt)*Y.*sin( sparse(r,c,UAngel(r)-UAngel(c)-Angle,Busnum,Busnum) )*Volt;
|
% dQ=QG0-QD-diag(Volt)*Y.*sin( sparse(r,c,UAngel(r)-UAngel(c)-Angle,Busnum,Busnum) )*Volt;
|
||||||
Loadi=PD0~=0 | QD0~=0 |PG0~=0|QG0~=0;
|
% Loadi=PD0~=0 | QD0~=0 |PG0~=0|QG0~=0;
|
||||||
Constraints = [%AngleIJ-sparse(r,c,UAngel(r)-UAngel(c)-Angle,Busnum,Busnum)==0, ...
|
% Constraints = [%AngleIJ-sparse(r,c,UAngel(r)-UAngel(c)-Angle,Busnum,Busnum)==0, ...
|
||||||
dP(setdiff(1:Busnum,Loadi))==0, ...
|
% dP(setdiff(1:Busnum,Loadi))==0, ...
|
||||||
dQ(setdiff(1:Busnum,Loadi))==0, ...
|
% dQ(setdiff(1:Busnum,Loadi))==0, ...
|
||||||
% dP==0, ...
|
% % dP==0, ...
|
||||||
% dQ==0, ...
|
% % dQ==0, ...
|
||||||
PD(PD0==0)==0, ...
|
% PD(PD0==0)==0, ...
|
||||||
QD(QD0==0)==0, ...
|
% QD(QD0==0)==0, ...
|
||||||
0.9*ones(Busnum,1)<=Volt<=1.1*ones(Busnum,1), ...
|
% 0.9*ones(Busnum,1)<=Volt<=1.1*ones(Busnum,1), ...
|
||||||
Volt(Balance)==BalVolt, ...
|
% Volt(Balance)==BalVolt, ...
|
||||||
UAngel(Balance)==0, ...
|
% UAngel(Balance)==0, ...
|
||||||
0.8*PD0<=PD<=1.2*PD0;
|
% 0.8*PD0<=PD<=1.2*PD0;
|
||||||
0.8*QD0<=QD<=1.2*QD0;
|
% 0.8*QD0<=QD<=1.2*QD0;
|
||||||
];
|
% ];
|
||||||
options = sdpsettings('verbose',2,'showprogress',1,'debug',0,'solver','ipopt','usex0','1');
|
% options = sdpsettings('verbose',2,'showprogress',1,'debug',0,'solver','ipopt','usex0','1');
|
||||||
sol = solvesdp(Constraints,Objective,options);
|
% sol = solvesdp(Constraints,Objective,options);
|
||||||
if sol.problem == 0
|
% if sol.problem == 0
|
||||||
fprintf('Volt\n');
|
% fprintf('Volt\n');
|
||||||
dvolt=double(Volt)
|
% dvolt=double(Volt)
|
||||||
fprintf('VoltAngle\n');
|
% fprintf('VoltAngle\n');
|
||||||
dVangle=double(UAngel)
|
% dVangle=double(UAngel)
|
||||||
fprintf('ojb\n');
|
% fprintf('ojb\n');
|
||||||
optimalObj=double(Objective)
|
% optimalObj=double(Objective)
|
||||||
sol
|
% sol
|
||||||
else
|
% else
|
||||||
display('Hmm, something went wrong!');
|
% display('Hmm, something went wrong!');
|
||||||
sol.info
|
% sol.info
|
||||||
sol.solveroutput
|
% sol.solveroutput
|
||||||
yalmiperror(sol.problem)
|
% yalmiperror(sol.problem)
|
||||||
end
|
% end
|
||||||
|
|
||||||
toc
|
toc
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue