Commit f294a418 by dongshufeng

refactor: add case14 data

parent a85aff0b
...@@ -2,23 +2,6 @@ ...@@ -2,23 +2,6 @@
#include ../lib/idx_gen.txt #include ../lib/idx_gen.txt
#include ../lib/idx_bus.txt #include ../lib/idx_bus.txt
#include ../lib/idx_brch.txt #include ../lib/idx_brch.txt
#include ../lib/make_y_bus.txt
return make_y_bus(baseMVA, bus, branch);
// constants \ No newline at end of file
nb = size(bus, 0); // number of buses
nl = size(branch, 0); // number of lines
stat = slice(branch, [0], BR_STATUS); // ones at in-service branches
Ys = stat ./ (slice(branch, [0], BR_R) + c(0,1) * slice(branch, [0], BR_X)); // series admittance
Bc = stat .* slice(branch, [0], BR_B); // line charging susceptance
tap = ones(nl, 1); // default tap ratio = 1
//i = find(branch(:, TAP)); // indices of non-zero tap ratios
//tap(i) = slice(branch, [0], TAP); // assign non-zero tap ratios
tap = tap .* exp(c(0,1)*pi/180 * slice(branch, [0], SHIFT)); // add phase shifters
Ytt = Ys + c(0,1) * Bc/2;
Yff = Ytt ./ (tap .* conj(tap));
Yft = - Ys ./ conj(tap);
Ytf = - Ys ./ tap;
return Ytt;
\ No newline at end of file
...@@ -83,4 +83,4 @@ QT = 17; // reactive power injected at "to" bus end (MVAr) (not in ...@@ -83,4 +83,4 @@ QT = 17; // reactive power injected at "to" bus end (MVAr) (not in
MU_SF = 18; // Kuhn-Tucker multiplier on MVA limit at "from" bus (u/MVA) MU_SF = 18; // Kuhn-Tucker multiplier on MVA limit at "from" bus (u/MVA)
MU_ST = 19; // Kuhn-Tucker multiplier on MVA limit at "to" bus (u/MVA) MU_ST = 19; // Kuhn-Tucker multiplier on MVA limit at "to" bus (u/MVA)
MU_ANGMIN = 20; // Kuhn-Tucker multiplier lower angle difference limit (u/degree) MU_ANGMIN = 20; // Kuhn-Tucker multiplier lower angle difference limit (u/degree)
MU_ANGMAX = 21; // Kuhn-Tucker multiplier upper angle difference limit (u/degree) MU_ANGMAX = 21; // Kuhn-Tucker multiplier upper angle difference limit (u/degree)
\ No newline at end of file
...@@ -78,4 +78,4 @@ VMIN = 13; // minVm, minimum voltage magnitude (p.u.) (not in PTI ...@@ -78,4 +78,4 @@ VMIN = 13; // minVm, minimum voltage magnitude (p.u.) (not in PTI
LAM_P = 14; // Lagrange multiplier on real power mismatch (u/MW) LAM_P = 14; // Lagrange multiplier on real power mismatch (u/MW)
LAM_Q = 15; // Lagrange multiplier on reactive power mismatch (u/MVAr) LAM_Q = 15; // Lagrange multiplier on reactive power mismatch (u/MVAr)
MU_VMAX = 16; // Kuhn-Tucker multiplier on upper voltage limit (u/p.u.) MU_VMAX = 16; // Kuhn-Tucker multiplier on upper voltage limit (u/p.u.)
MU_VMIN = 17; // Kuhn-Tucker multiplier on lower voltage limit (u/p.u.) MU_VMIN = 17; // Kuhn-Tucker multiplier on lower voltage limit (u/p.u.)
\ No newline at end of file
...@@ -63,4 +63,4 @@ COST = 5; // parameters defining total cost function begin in this col ...@@ -63,4 +63,4 @@ COST = 5; // parameters defining total cost function begin in this col
// (MODEL = 2) : cn, ..., c1, c0 // (MODEL = 2) : cn, ..., c1, c0
// N coefficients of an n-th order polynomial cost fcn, // N coefficients of an n-th order polynomial cost fcn,
// starting with highest order, where cost is // starting with highest order, where cost is
// f(p) = cn*p^n + ... + c1*p + c0 // f(p) = cn*p^n + ... + c1*p + c0
\ No newline at end of file
...@@ -105,4 +105,4 @@ CT_LOAD_DIS_P = 6; // only dispatchable loads, real only ...@@ -105,4 +105,4 @@ CT_LOAD_DIS_P = 6; // only dispatchable loads, real only
// codes for CT_COL entry when CT_TABLE entry is CT_TGENCOST or CT_TAREAGENCOST // codes for CT_COL entry when CT_TABLE entry is CT_TGENCOST or CT_TAREAGENCOST
CT_MODCOST_F = -1; // scale or shift cost function vertically CT_MODCOST_F = -1; // scale or shift cost function vertically
CT_MODCOST_X = -2; // scale or shift cost function horizontally CT_MODCOST_X = -2; // scale or shift cost function horizontally
\ No newline at end of file
...@@ -75,4 +75,4 @@ c = struct( ... ...@@ -75,4 +75,4 @@ c = struct( ...
'MU_QMINF', 20, ... // Kuhn-Tucker multiplier on lower VAr lim at "from" bus (u/MVAr) 'MU_QMINF', 20, ... // Kuhn-Tucker multiplier on lower VAr lim at "from" bus (u/MVAr)
'MU_QMAXF', 21, ... // Kuhn-Tucker multiplier on upper VAr lim at "from" bus (u/MVAr) 'MU_QMAXF', 21, ... // Kuhn-Tucker multiplier on upper VAr lim at "from" bus (u/MVAr)
'MU_QMINT', 22, ... // Kuhn-Tucker multiplier on lower VAr lim at "to" bus (u/MVAr) 'MU_QMINT', 22, ... // Kuhn-Tucker multiplier on lower VAr lim at "to" bus (u/MVAr)
'MU_QMAXT', 23 ); // Kuhn-Tucker multiplier on upper VAr lim at "to" bus (u/MVAr) 'MU_QMAXT', 23 ); // Kuhn-Tucker multiplier on upper VAr lim at "to" bus (u/MVAr)
\ No newline at end of file
...@@ -31,3 +31,4 @@ MU_QMIN = 25; // Kuhn-Tucker multiplier on lower Qg limit (u/MVAr) ...@@ -31,3 +31,4 @@ MU_QMIN = 25; // Kuhn-Tucker multiplier on lower Qg limit (u/MVAr)
// upper Qg limit is binding, the multiplier on this constraint is split into // upper Qg limit is binding, the multiplier on this constraint is split into
// it's P and Q components and combined with the appropriate MU_Pxxx and // it's P and Q components and combined with the appropriate MU_Pxxx and
// MU_Qxxx values. Likewise for the lower Q limits. // MU_Qxxx values. Likewise for the lower Q limits.
fn make_y_bus(baseMVA, bus, branch) {
// constants
nb = size(bus, 0); // number of buses
nl = size(branch, 0); // number of lines
stat = slice(branch, [0], BR_STATUS); // ones at in-service branches
Ys = stat ./ (slice(branch, [0], BR_R) + c(0,1) * slice(branch, [0], BR_X)); // series admittance
Bc = stat .* slice(branch, [0], BR_B); // line charging susceptance
tap = ones(nl, 1); // default tap ratio = 1
//i = find(branch(:, TAP)); // indices of non-zero tap ratios
//tap(i) = slice(branch, [0], TAP); // assign non-zero tap ratios
tap = tap .* exp(c(0,1)*pi/180 * slice(branch, [0], SHIFT)); // add phase shifters
Ytt = Ys + c(0,1) * Bc/2;
Yff = Ytt ./ (tap .* conj(tap));
Yft = - Ys ./ conj(tap);
Ytf = - Ys ./ tap;
// compute shunt admittance
// if Psh is the real power consumed by the shunt at V = 1.0 p.u.
// and Qsh is the reactive power injected by the shunt at V = 1.0 p.u.
// then Psh - j Qsh = V * conj(Ysh * V) = conj(Ysh) = Gs - j Bs,
// i.e. Ysh = Psh + j Qsh, so ...
//Ysh = (slice(bus, [0], GS) + c(0,1) * slice(bus, [0], BS)) / baseMVA; // vector of shunt admittances
// bus indices
//f = slice(branch, [0], F_BUS); // list of "from" buses
//t = slice(branch, [0], T_BUS); // list of "to" buses
// for best performance, choose method based on MATLAB vs Octave and size
if nb < 300 { // small case
// build Yf and Yt such that Yf * V is the vector of complex branch currents injected
// at each branch's "from" bus, and Yt is the same for the "to" bus end
//i = [1:nl 1:nl]'; // double set of row indices
//Yf = sparse(i, [f, t], [Yff, Yft], nl, nb);
//Yt = sparse(i, [f, t], [Ytf, Ytt], nl, nb);
// build Ybus
//Ybus = sparse([f,f,t,t], [f,t,f,t], [Yff,Yft,Ytf,Ytt], nb, nb) + // branch admittances
// sparse(1:nb, 1:nb, Ysh, nb, nb); // shunt admittance
} else { // large case running on MATLAB
// build connection matrices
//Cf = sparse(1:nl, f, ones(nl, 1), nl, nb); // connection matrix for line & from buses
//Ct = sparse(1:nl, t, ones(nl, 1), nl, nb); // connection matrix for line & to buses
// build Yf and Yt such that Yf * V is the vector of complex branch currents injected
// at each branch's "from" bus, and Yt is the same for the "to" bus end
//Yf = sparse(1:nl, 1:nl, Yff, nl, nl) * Cf + sparse(1:nl, 1:nl, Yft, nl, nl) * Ct;
//Yt = sparse(1:nl, 1:nl, Ytf, nl, nl) * Cf + sparse(1:nl, 1:nl, Ytt, nl, nl) * Ct;
// build Ybus
//Ybus = Cf' * Yf + Ct' * Yt + ... // branch admittances
// sparse(1:nb, 1:nb, Ysh, nb, nb); // shunt admittance
}
return Ytt;
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论