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. 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 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
