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 >
