Sorry for the delay in responding, I was off work for a few weeks.

First, I have some topology checking code that I plan to include in the next 
release. And it confirms that bus 10287 (external numbering) is isolated as you 
stated.

I know I did look at Matlab's matrix re-ordering schemes a long time ago and if 
I remember correctly, concluded that the default internal reordering done by 
simply using the backslash operator was typically a very good choice. That is, 
little if anything was gained on average by using a different manual 
re-ordering.

-- 
Ray Zimmerman
Senior Research Associate
419A Warren Hall, Cornell University, Ithaca, NY 14853
phone: (607) 255-9645




On May 16, 2012, at 4:21 PM, Shrirang Abhyankar wrote:

> 
> On May 16, 2012, at 2:22 PM, 李诗�D wrote:
> 
>> Shri,
>> 
>> I’m sorry for giving you the wrong inner index for the isolated buses. 
>> Actually what I presented is the index in the Jacobian matrix of Newton 
>> method, not the bus number (relative to ref, pq, pv list).
>> 
>> You fixed the problem, but actually your code is not valid universally: all 
>> buses connecting to in-service branch is not sufficient for a connected 
>> graph, two isolated subsystem for example.
>> 
> I guess an example of such a case would be an outage of a tie line connecting 
> two areas, resulting in either, or both the, end buses to be isolated. I 
> guess the code should work for this scenario too if the updated branch (with 
> br_status for the tie line set to 0) and bus data is provided. Some other 
> work may be needed if a generator/load/shunt exists on the bus that is going 
> to be isolated and ofcourse rebuilding the Ybus.
> 
>> Topological check may be a more complex task. I guess Dr. Zimmerman will be 
>> very glad to involve this function if you’d like to provide your code for a 
>> really valid topological checkJ
>> 
>     Sure, you can have the code.
> 
> Btw, i am keen to know if you guys have done any experiments with matrix 
> reordering schemes available with Matlab (AMD, SYMAMD, SYMRCM, etc.) to 
> reduce the factored matrix fill-ins and whether it is worth doing Jacobian 
> reordering.
> 
> Thanks,
> Shri
> 
>>  
>> 
>> Shiyang Li
>> 
>>  
>> 发件人: [email protected] 
>> [mailto:[email protected]] 代表 Shrirang Abhyankar
>> 发送时间: 2012年5月17日 2:55
>> 收件人: MATPOWER discussion forum
>> 主题: Re: case3375wp
>>  
>> Shiyang,
>>    Thanks for the information. However, i could not figure out external 
>> numbering for buses with inner indices 591,3574. Does the n2i variable in 
>> ext2int.m hold the external to internal index transformation? If so, then 
>> find(n2i == 591) returned 228 which i assume is the external numbering. This 
>> bus is listed in the some branch to and from bus list. find(n2i == 3574) 
>> returned an empty matrix.
>>  
>> Hence, i wrote a small topological check code to find which buses are 
>> isolated.
>>  
>> %% define named indices into bus, gen, branch matrices
>> [PQ, PV, REF, NONE, BUS_I, BUS_TYPE, PD, QD, GS, BS, BUS_AREA, VM, ...
>>     VA, BASE_KV, ZONE, VMAX, VMIN, LAM_P, LAM_Q, MU_VMAX, MU_VMIN] = idx_bus;
>> [F_BUS, T_BUS, BR_R, BR_X, BR_B, RATE_A, RATE_B, RATE_C, ...
>>     TAP, SHIFT, BR_STATUS, PF, QF, PT, QT, MU_SF, MU_ST, ...
>>     ANGMIN, ANGMAX, MU_ANGMIN, MU_ANGMAX] = idx_brch;
>> [GEN_BUS, PG, QG, QMAX, QMIN, VG, MBASE, GEN_STATUS, PMAX, PMIN, ...
>>     MU_PMAX, MU_PMIN, MU_QMAX, MU_QMIN, PC1, PC2, QC1MIN, QC1MAX, ...
>>     QC2MIN, QC2MAX, RAMP_AGC, RAMP_10, RAMP_30, RAMP_Q, APF] = idx_gen;
>>  
>> data = 'case3375wp';
>>  
>> %% read data
>> mpc = loadcase(data);
>>  
>> isolated_bus = [];
>> nbranch = length(mpc.branch(:,1));
>> nbus = length(mpc.bus(:,1));
>> % Include only ON branches
>> kk = find(mpc.branch(:,BR_STATUS) == 1);
>> branch = mpc.branch(kk,:);
>> for(i=1:nbus)
>>   % Check if bus i is in the from or to bus list,
>>   % If not then add it to the list of isolated buses
>>   ii = find(branch(:,F_BUS) == mpc.bus(i,BUS_I));
>>   jj = find(branch(:,T_BUS) == mpc.bus(i,BUS_I));
>>   if(isempty(ii) & isempty(jj))
>>     isolated_bus = [isolated_bus;mpc.bus(i,BUS_I)];
>>   end
>> end
>>  
>> and found that bus 10287 (external numbering) is isolated. It's internal 
>> number is 285. Setting its bus type to NONE (4) resulted in converged power 
>> flow.
>>  
>> Thanks,
>> Shri
>>  
>> On May 16, 2012, at 12:06 PM, 李诗�D wrote:
>> 
>> 
>> Shri,
>> 
>> I think you are right. There may be some problems with case3375wp.
>> 
>> sprank(J) = 6355 < 6357, the size of J. So the Jacobian matrix is surely 
>> singular.
>> 
>> As far as I know, Matpower doesn’t apply a topological check before PF 
>> calculation. So if some parts of the system are actually isolated but not 
>> assigned the bus type “4” (none) to, Jacobian matrix will have all-zero rows 
>> and columns, then singular.
>> 
>> For case3375wp, bus 591, 3574 (inner index) are actually isolated. You could 
>> find their external index; assigned them bus type 4; then run the case again.
>> 
>> I think Dr. Zimmerman may correct this mistake in the next version.
>> 
>>  
>> 
>> Shiyang Li
>> 
>>  
>> -----邮件原件-----
>> 发件人: [email protected] 
>> [mailto:[email protected]]代表 Shrirang Abhyankar
>> 发送时间: 2012年5月16日 23:57
>> 收件人: MATPOWER discussion forum
>> 主题: case3375wp
>>  
>> There seems to be something amiss with the case3375wp data. Matlab complains 
>> of singular Jacobian matrix.
>>  
>> mpopt= mpoption;
>> mpoption(31) = 2;
>> runpf('case3375wp',mpopt,'pfresults');
>>  
>> (printpf is commented out)
>>  
>> it    max P & Q mismatch (p.u.)
>> ----  ---------------------------
>>   0         2.442e+01Warning: Matrix is singular to working precision.
>> > In newtonpf at 125
>>   In runpf at 224
>>  
>>   1               NaNWarning: Matrix is singular to working precision.
>> > In newtonpf at 125
>>   In runpf at 224
>>  
>>   2               NaNWarning: Matrix is singular to working precision.
>> > In newtonpf at 125
>>   In runpf at 224
>>  
>>   3               NaNWarning: Matrix is singular to working precision.
>> > In newtonpf at 125
>>   In runpf at 224
>>  
>>   4               NaNWarning: Matrix is singular to working precision.
>> > In newtonpf at 125
>>   In runpf at 224
>>  
>>   5               NaNWarning: Matrix is singular to working precision.
>> > In newtonpf at 125
>>   In runpf at 224
>>  
>>   6               NaNWarning: Matrix is singular to working precision.
>> > In newtonpf at 125
>>   In runpf at 224
>>  
>>   7               NaNWarning: Matrix is singular to working precision.
>> > In newtonpf at 125
>>   In runpf at 224
>>  
>>   8               NaNWarning: Matrix is singular to working precision.
>> > In newtonpf at 125
>>   In runpf at 224
>>  
>>   9               NaNWarning: Matrix is singular to working precision.
>> > In newtonpf at 125
>>   In runpf at 224
>>  
>> 10               NaN
>> Newton's method power flow did not converge in 10 iterations.
>>  
>> Thanks,
>> Shri
> 

Reply via email to