diff --git a/IPMLoop.m b/IPMLoop.m index c11e597..bd7b1d9 100644 --- a/IPMLoop.m +++ b/IPMLoop.m @@ -1,4 +1,4 @@ -function [ V1r,V1i,I1r,I1i,isConverged,calcuTime ] = IPMLoop(V1measurement,wV1r,wV1i,I1measurement,wI1r,wI1i,BalI1r,BalI1i,busNum,Loadi,fsY1,Balance,Vref,dI_F,flag,guessIf1,rIf1,noLoadi ) +function [ V1r,V1i,I1r,I1i,isConverged,calcuTime,KK ] = IPMLoop(V1measurement,wV1r,wV1i,I1measurement,wI1r,wI1i,BalI1r,BalI1i,busNum,Loadi,fsY1,Balance,Vref,dI_F,flag,guessIf1,rIf1,noLoadi ) %把每个序的循环写在这个函数中。其实也就是内点法循环。 V1r=Vref*ones(busNum,1); @@ -118,7 +118,7 @@ deltG=func_deltGstate1(busNum,Loadi,boundedLoadi,I1r,I1i); [Init_Z,Init_L,Init_W,Init_U,Init_Y,V1r,V1i,I1r,I1i]=Modification(Init_Z,Init_L,Init_W,Init_U,Init_Y,deltZ,deltL,deltW,deltU,deltX,deltY,V1r,V1i,I1r,I1i,ContrlCount,Balance,busNum,Loadi,Vref); Gap=(Init_L'*Init_Z-Init_U'*Init_W);+max(abs(deltX)); % Gap=max([max(abs(Mat_H)),max(Lz),max(Lw) ]); - fprintf('Gap %f :%d\n',full(Gap),KK+1); +% fprintf('Gap %f :%d\n',full(Gap),KK+1); KK=KK+1; end calcuTime=0; diff --git a/modified-feeder69/lineParameter.txt b/modified-feeder69/lineParameter.txt index 9817bdd..c1bd53f 100644 --- a/modified-feeder69/lineParameter.txt +++ b/modified-feeder69/lineParameter.txt @@ -1,4 +1,4 @@ -2222 +222 1.0179 0.5017 0.5017 0.5017 1.0179 0.5017 0.5017 0.5017 1.0179 @@ -11,7 +11,7 @@ -1.9958 5.9597 -0.7417 -1.2595 -0.7417 5.6386 0 -222 +2222 0.3465 0.1560 0.1560 0.1560 0.3465 0.1560 0.1560 0.1560 0.3465 diff --git a/run.m b/run.m index 34238ac..3be1928 100644 --- a/run.m +++ b/run.m @@ -1,13 +1,13 @@ -function [JMeasurement,AME_Volt,AME_VAngle,AME_PD,AME_QD,AME_mVolt,AME_mPD,AME_mQD,isConverged,totalTime1,totalTime2,totalTime0,eV2,eV0,eI2,eI0]=run() +function [JMeasurement,AME_Volt,AME_VAngle,AME_PD,AME_QD,AME_mVolt,AME_mPD,AME_mQD,isConverged,totalTime1,totalTime2,totalTime0,eV2,eV0,eI2,eI0,interation1,interation2,interation0]=run() %% 利用先把负荷转换为电流的方法。这个方法要求知道电压量。 % close all clc clear -lineZ=readLineZ('modified-feeder69\lineParameter.txt'); +lineZ=readLineZ('feeder104\lineParameter.txt'); [ fsY0, fsY1, fsY2,phaseASpotLoadP,phaseBSpotLoadP,phaseCSpotLoadP ... phaseASpotLoadQ,phaseBSpotLoadQ,phaseCSpotLoadQ,setIJ,nodeNum,Balance,phaseABCY ... - cap]=dataRead(lineZ,'modified-feeder69\data.txt'); + cap]=dataRead(lineZ,'feeder104\data1.txt'); %负荷不平衡 % for I=1:length(phaseASpotLoadP) % roll=mod(round(rand()*10),3); @@ -431,8 +431,9 @@ for II=1:3 dI_F=100000000000000; if II==1 % fprintf('正序\n'); - [ V1r,V1i,I1r,I1i,isConverged1,calcuTime ]=IPMLoop(V1measurement,wV1r,wV1i,I1measurement,wI1r,wI1i,BalI1r,BalI1i,busNum,Loadi,fsY11,Balance,1,dI_F,2,guessIf1,rIf1,noLoadi ); + [ V1r,V1i,I1r,I1i,isConverged1,calcuTime,KK ]=IPMLoop(V1measurement,wV1r,wV1i,I1measurement,wI1r,wI1i,BalI1r,BalI1i,busNum,Loadi,fsY11,Balance,1,dI_F,2,guessIf1,rIf1,noLoadi ); totalTime1=calcuTime; + interation1=KK; fprintf('正序时间%f\n',totalTime1); V1r1=V1r; end @@ -440,14 +441,16 @@ for II=1:3 % while 0 if II==2 fprintf('负序\n'); - [ V2r,V2i,I2r,I2i,isConverged2,calcuTime ]=IPMLoop(V2measurement,wV2r,wV2i,I2measurement,wI2r,wI2i,BalI2r,BalI2i,busNum,Loadi,fsY22,Balance,0,dI_F,3,guessIf2,rIf2,noLoadi ); + [ V2r,V2i,I2r,I2i,isConverged2,calcuTime,KK ]=IPMLoop(V2measurement,wV2r,wV2i,I2measurement,wI2r,wI2i,BalI2r,BalI2i,busNum,Loadi,fsY22,Balance,0,dI_F,3,guessIf2,rIf2,noLoadi ); totalTime2=calcuTime; + interation2=KK; fprintf('负序时间%f\n',totalTime2); end if II==3 fprintf('零序\n'); - [ V0r,V0i,I0r,I0i,isConverged0,calcuTime ]=IPMLoop(V0measurement,wV0r,wV0i,I0measurement,wI0r,wI0i,BalI0r,BalI0i,busNum,Loadi,fsY00,Balance,0,dI_F,1,guessIf0,rIf0,noLoadi ); + [ V0r,V0i,I0r,I0i,isConverged0,calcuTime,KK ]=IPMLoop(V0measurement,wV0r,wV0i,I0measurement,wI0r,wI0i,BalI0r,BalI0i,busNum,Loadi,fsY00,Balance,0,dI_F,1,guessIf0,rIf0,noLoadi ); totalTime0=calcuTime; + interation0=KK; fprintf('零序时间%f\n',totalTime0); end diff --git a/test.m b/test.m index e54e787..18e87a0 100644 --- a/test.m +++ b/test.m @@ -18,10 +18,13 @@ eV2Sum=0; eV0Sum=0; eI2Sum=0; eI0Sum=0; +interation1Sum=0; +interation2Sum=0; +interation0Sum=0; N=200; loopN=1; while 1 - [JMeasurement,AME_Volt,AME_VAngle,AME_PD,AME_QD,AME_mVolt,AME_mPD,AME_mQD,isConverged,totalTime1,totalTime2,totalTime0,eV2,eV0,eI2,eI0]=run(); + [JMeasurement,AME_Volt,AME_VAngle,AME_PD,AME_QD,AME_mVolt,AME_mPD,AME_mQD,isConverged,totalTime1,totalTime2,totalTime0,eV2,eV0,eI2,eI0,interation1,interation2,interation0]=run(); if isConverged==0 continue end @@ -29,7 +32,7 @@ while 1 if loopN>N break; end -% [JMeasurement]=run(); + % [JMeasurement]=run(); AME_VoltSum=AME_VoltSum+AME_Volt; AME_VAngleSum=AME_VAngleSum+AME_VAngle; AME_PDSum=AME_PDSum+AME_PD; @@ -41,14 +44,16 @@ while 1 eV0Sum=eV0Sum+eV0; eI2Sum=eI2Sum+eI2; eI0Sum=eI0Sum+eI0; - - %时间 + interation1Sum=interation1Sum+interation1; + interation2Sum=interation2Sum+interation2; + interation0Sum=interation0Sum+interation0; + %时间 totalTime1Sum=totalTime1Sum+totalTime1; -totalTime2Sum=totalTime2Sum+totalTime2; -totalTime0Sum=totalTime0Sum+totalTime0; -% totalTime1Sum=min([totalTime1Sum,totalTime1]); -% totalTime2Sum=min([totalTime2Sum,totalTime2]); -% totalTime0Sum=min([totalTime0Sum,totalTime0]); + totalTime2Sum=totalTime2Sum+totalTime2; + totalTime0Sum=totalTime0Sum+totalTime0; + % totalTime1Sum=min([totalTime1Sum,totalTime1]); + % totalTime2Sum=min([totalTime2Sum,totalTime2]); + % totalTime0Sum=min([totalTime0Sum,totalTime0]); end JMeasurementSum=JMeasurementSum/N; AME_VoltSum=AME_VoltSum/N; @@ -68,4 +73,8 @@ eI0Sum=eI0Sum/N; % totalTime0Sum=totalTime0Sum+timeOfPrepare; totalTime1Sum=totalTime1Sum/N; totalTime2Sum=totalTime2Sum/N; -totalTime0Sum=totalTime0Sum/N; \ No newline at end of file +totalTime0Sum=totalTime0Sum/N; + +interation1Sum=interation1Sum/N; +interation2Sum=interation2Sum/N; +interation0Sum=interation0Sum/N; \ No newline at end of file