From 1e06fb712772cb14781f240756238a7d810976f6 Mon Sep 17 00:00:00 2001 From: facat Date: Sun, 21 Apr 2013 10:46:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E4=BA=86=E8=B4=9F=E8=8D=B7?= =?UTF-8?q?=E7=94=B5=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: facat --- 20PD0.mat | Bin 0 -> 828 bytes 20QD0.mat | Bin 0 -> 827 bytes @Opti/Opti.asv | 34 +++++++++++++++++++++++++ @Opti/Opti.m | 2 ++ @Opti/equ.m | 12 ++++++++- @Opti/init.m | 5 +++- @Opti/obj.asv | 25 +++++++++++------- @Opti/obj.m | 14 +++++++++- LoadCurrent.asv | 6 +++++ LoadCurrent.m | 8 ++++++ MaxDeviation.m | 6 +++-- OPF_Init.m | 5 +++- PD0.mat | Bin 272 -> 271 bytes QD0.mat | Bin 271 -> 272 bytes Run_YALMIP.asv | 66 +++++++++++++++++++++++++++++------------------- Run_YALMIP.m | 56 ++++++++++++++++++++++------------------ StatDeviation.m | 7 ++--- 17 files changed, 177 insertions(+), 69 deletions(-) create mode 100644 20PD0.mat create mode 100644 20QD0.mat create mode 100644 @Opti/Opti.asv create mode 100644 LoadCurrent.asv create mode 100644 LoadCurrent.m diff --git a/20PD0.mat b/20PD0.mat new file mode 100644 index 0000000000000000000000000000000000000000..fd7c1dfc356f1ddc692048d2c768c5b08686e357 GIT binary patch literal 828 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2cQV4Jk_w>_Ia4t$sEJ;mK$j`G< z2q{ffa4aZNFtAiGG_x`_vobVMFfuSSRv;NLFnap(GcYi0VPasYnB#k)Ugrv<2*U^c zB+*E{pF6LdT2uP&4~P20pQRf6KV|d%-PL#Um6~Up&-C4ge>6|a-o4__9^sj%?@qK3 z7cYI19#MB@+SbCb#hSB1`u|*%pTBqS_U+&A%~Ny~_-4hju)Way(p`UndC`UH>z$)+ zmvj`@eY^ej>s+aALepLdC@Dv~IEJKbHx;*BH2DOlrLwq-^ST!zMb677T7Odb_m=HR zZ;hZV>jGm9j@AVRB7I7MCS8sjHRNI)rV9vf3{diNI{88>X|c$Zu1f({ryOQ#NIzW= zbHuT-qr0M`pX=Xm?v2H-<+k*kkEqtw>4?Z}>b>3bjxo) zv$_2H)m}}7t8;_zoUY(^eRQ=_*I08#|LhhH`2fX;8IuAgTQL~zbS%AcgW=2cP3|uL zxE8d%l8gusb||-f!=b!`{S{NJm&v=_ge8^2v#oD1holx7-;U<|(sf}^^ZunDX887J z&8%bXf2Dp{XN$FCu1eDCM=1tco3ax!stzu{VtHXf4CnDH=a&af+vS*GRI|uBg45=d z$Js|MBD2bRRkT;CAKmiLr-&Xd);1@C`NxPN92M@{bzCnJB( zV|t6v@Sjaup%N~cUN^-dtjc9})IG*KHD2utK61XOPMvVsY`4O>oTHEZqLq)F(_5J- z#d(9vCi3O>)CpfEY&1HX!FZ`?Qr5F*^%?h97zb9~bZq@{{`;ZWuNNXp>sHl&k>v2q zzGk8^i)+>aJtJlveBpK#<+QTEJ!t~D0^SGkslapdoa6uNkxDeu6Jr%7ej zC4cvv*Dn%1{Crd1c}`i&HQP4NTw){nW4GRmkI%CbyR;tOm73)6FzvJVY+lKlg`9P! tw?dfA&F2SXe0S){+<5qC>-GYNSr2}kTg*RA=9%x0>gosjZ{2uy0{}uYa4-M> literal 0 HcmV?d00001 diff --git a/20QD0.mat b/20QD0.mat new file mode 100644 index 0000000000000000000000000000000000000000..d8b2e1a86d9059025e6ad882bfb37ead8eb239c5 GIT binary patch literal 827 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2cQV4Jk_w>_Ia4t$sEJ;mK$j`G< z2q{ffa4aZNFtAiGG_x`_vobVMFfuSSRv;NLFnap(GcYi0W@2EdnB#k)Ugrv<2*U^c z?M|k5f}&%~U9--v|I<@DZ#DKwQoid*L{ zw%dbc_S2ow_iwCD)OK_XdD3-fg7qhd=jG3o@}D&8Da1c%e{n+I@PeyI15=>D$9(ez z0Y_XOY6!V5^wwZIs%X~b&e_pi(a}F?BE!-JCR6%aG=x(Z%1r706kxZjnJZ9G%PlFS z>(qtXkUqHuTq-}`>mRwd)+~c_{>N&Q-yw$`WK%Bihv)p-;ox61>(ZA<#`Q7&{~q;b zEHK`Zu;Rf)IWrk?oz+ac9!MX3$Z~l}Q+C+)Q+dX38m;Um@2FeAz2w>!R<@U>Pg2(} zwJLVT@PC=Ddic#QDT$?7tZci* zUUXYex+VQvLZ>@*>h~>09+D5_ZL}^s`CaG;4Jx(l(Je08$|SpnyZ7Kp`&SAn7Y!Ch zPHs-Ae!IGEHRCE3PT905+b^E$mISST<@je~?6gBsTyeqvxkr8M8YdmwojxKL} z^SQzgS!_O9{yeo!WJR6ql+%($6{lty&i0OaxFh7~cVUf#W;Rc@T==T<#V+TP)$Y}f zUOUcS+_w6m#MAR4&MR7err%9T-p94iAhb5}PgF>t{f%t@?EgVWi%!NB bDIT7}w*2|G)N1A#<+*h!{0!z#6gB|>wq7&^ delta 120 zcmeBYn!q%{NFqEnMZvM4NWsut!O+mk*vQJ*Ou@*&(0F2?_QVACi8UOI9TQs}y<`Mu zhkvbjWL7QrbNy@G?e{nQ|MBYOzwT=NoALSSy|-VLUafo2#M}E->ie7O^l&cQpLG}a c-Amxw&-9x6x5Lrd_CL<{9 diff --git a/QD0.mat b/QD0.mat index f3e9de3733c8ae96feb1b6ce08ac8bb64f304f07..ae05a93791527db6e6181dda1663d86a3900a377 100644 GIT binary patch delta 120 zcmeBYn!q%{NFpSoRKc;JNWsuT!N}0c#Kg+TSi#7^(0F2?_QVACi8UOI9TQs}z25w6 zNsr!qE9ST5^?!S#Z|yz!&o3d=|Hz}Q-*ms{=fxHl&;R=+IVsxb+pYQgvVQ*fe)I4*t80;;q%F4J cz8#^m)bOlL`usCH?M(h$<*a6Cf1s!e0L7^}O8@`> diff --git a/Run_YALMIP.asv b/Run_YALMIP.asv index 583fbe1..653d04b 100644 --- a/Run_YALMIP.asv +++ b/Run_YALMIP.asv @@ -1,11 +1,12 @@ clc clear -yalmip('clear') +clear +% yalmip('clear') tic [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,Transfork0]= ... - pf('E:/算例/东际911_2751267_2012-09-05/newFIle20.txt'); + pf('E:/算例/新民Ⅰ906_2729823_2012-09-06/newFIle20.txt'); %% 潮流等式 AngleIJ=sparse(r,c,UAngel(r)-UAngel(c)-Angle',Busnum,Busnum); @@ -18,7 +19,6 @@ PD0=PD; QD0=QD; PDReal=PD;%真值 QDReal=QD;%真值 -%PD0(12)=PD0(12)+0.001; PG0(Balance)=PGBal(Balance); QG0(Balance)=QGBal(Balance); QG0(PVi)=QGBal(PVi); @@ -36,19 +36,19 @@ xVolt=Volt; xUAngel=UAngel; % VMatrix=sparse(r,c,UAngel(r)-UAngel(c)-Angle',Busnum,Busnum); % dP=PG-PD-diag(xVolt)*(Y.*cos(VMatrix))*xVolt'; -[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); -%% 定义变量 +rPD=PD; +rQD=QD; +rVolt=Volt'; +rVAngel=UAngel'; BalVolt=Volt(Balance); -% Volt=sdpvar(Busnum,1); -% UAngel=sdpvar(Busnum,1); -% PG=sdpvar(Busnum,1); -% QG=sdpvar(Busnum,1); -% PD=sdpvar(Busnum,1); -% QD=sdpvar(Busnum,1); -AngleIJ=sdpvar(Busnum,Busnum,'full'); +[Volt,UAngel,Init_Z,Init_W,Init_L,Init_U,Init_Y,PG,QG,RestraintCount,wPG,wQG,wPD,wQD,wVolt,wLoadCurrent,PD,PD0,QD,randPDind,Loadi,notLoadi]=OPF_Init(Busnum,Balance,PG,QG,Volt,GenU,GenL,PVi,PGi,PVQU,PVQL,PD0,QD0,QD,PD); + %% 加噪音 -load('PD0'); -load('QD0'); +load('20PD0'); +load('20QD0'); +mPD=PD0; +mQD=QD0; +mVolt=(1+normrnd(0,0.05,length(rVolt),1)).*rVolt; % PD0=(1+normrnd(0,0.05,length(PD0),1)).*PD0; % save('PD0','PD0'); % QD0=(1+normrnd(0,0.05,length(QD0),1)).*QD0; @@ -61,32 +61,46 @@ PDi=find(PD~=0); QDi=find(QD~=0); % PD0=PD0(PDi); % QD0=QD0(QDi); +%% 电流真实值 +rLoadCurrent=LoadCurrent( rVolt,rVAngel,rPD(PDi),rQD(QDi),PDi,QDi ); +%% 电流测量值 +mLoadCurrent=(1+normrnd(0,0.05,length(rLoadCurrent),1)).*rLoadCurrent; seOpti=Opti(); -seOpti=seOpti.init(Volt0,PDi,QDi,wPD,wQD,PD0,QD0,Y,Angle,r,c,PG,QG,Balance); -opts = optiset('solver','NLOPT'); +seOpti=seOpti.init(mVolt,PDi,QDi,wPD,wQD,wVolt,wLoadCurrent,mPD,mQD,rPD(PDi),rQD(QDi),Y,Angle,r,c,PG,QG,Balance,mLoadCurrent); +opts = optiset('solver','ipopt'); opts.maxiter=85500; -opts.maxtime=3000; +opts.maxtime=30000; opts.maxfeval=85000; opts.maxnodes=85000; opts.tolrfun=1e-4; opts.tolafun=1e-4; opts.warnings='all'; opts.display='iter'; -x0=[zeros(length(PDi)+length(QDi),1); ... +x0=[0.8*rPD(PDi);0.8*rQD(QDi); ... ones(length(Volt),1); ... zeros(length(Volt),1)]; % x0=[PD(PDi);QD(QDi);xVolt';xUAngel']; [~,seOpti]=seOpti.equ(x0); -nlrhs=seOpti.Geteb(); -nle=seOpti.Getgle(); -Opt = opti('fun',@seOpti.obj,'ndec',length(Volt)*2+length(PDi)+length(QDi),'nlmix',@seOpti.equ,nlrhs,nle,'options',opts) -% Opt = opti('fun',@seOpti.obj,'ndec',length(PDi)+length(QDi),'options',opts) +cl=seOpti.Getcl(); +cu=seOpti.Getcu(); +Opt = opti('fun',@seOpti.obj,'ndec',length(Volt)*2+length(PDi)+length(QDi),'nl',@seOpti.equ,cl,cu,'options',opts) +% Opt = opti('fun',@seOpti.obj,'ndec',length(Volt)*2+length(PDi)+length(QDi),'options',opts) [x,fval,exitflag,info] = solve(Opt,x0); info fval=seOpti.obj(x); -fprintf('目标函数: %f\n',fval); +fprintf('目标函数: %.20f\n',fval); toc -rVolt=xVolt0'; +rVolt=Volt0'; rVAngel=xUAngel'; -SEVolt=x(length(PDi)+length(QDi)+1:) -MaxDeviation(rVolt,SEVolt,rVAngel,SEVAngel) +SEVolt=x(length(PDi)+length(QDi)+1:length(Volt)+length(PDi)+length(QDi)); +SEVAngel=x(length(Volt)+length(PDi)+length(QDi)+1:end); +fprintf('最大偏差\n') +PD=x(1:length(PDi)); +QD=x(length(PDi)+1:length(PDi)+length(QDi)); +MaxDeviation(rVolt,SEVolt,rVAngel,SEVAngel,rPD(PDi),rQD(QDi),PD,QD) +fprintf('统计偏差\n') +StatDeviation(rVolt,SEVolt,rVAngel,SEVAngel,rPD(PDi),rQD(QDi),PD,QD) +%% 约束检查 +% seOpti.equ(x); +% sum([SEVolt;PD;QD]>cu(length(SEVolt)*2+2:end)); +% sum([SEVolt;PD;QD]cu(length(SEVolt)*2+2:end)); +% sum([SEVolt;PD;QD]