Commit b7f82f9e by wzc-a

与matpower结果对比

parent 1a34fc70
...@@ -113,10 +113,10 @@ pub fn get_pf_nlp_variables(tns: &[u64]) -> String { ...@@ -113,10 +113,10 @@ pub fn get_pf_nlp_variables(tns: &[u64]) -> String {
let mut variable = String::new(); let mut variable = String::new();
// 生成变量名 // 生成变量名
for tn in tns { for tn in tns {
variable.push_str(&format!("V_{tn}_A:[0/20000],D_{tn}_A:[-3.2/3.2],\ variable.push_str(&format!("V_{tn}_A:[0/99999999],D_{tn}_A:[-3.2/3.2],\
V_{tn}_B:[0/20000],D_{tn}_B:[-3.2/3.2],V_{tn}_C:[0/20000],D_{tn}_C:[-3.2/3.2],\ V_{tn}_B:[0/99999999],D_{tn}_B:[-3.2/3.2],V_{tn}_C:[0/99999999],D_{tn}_C:[-3.2/3.2],\
P_{tn}_A:[-200000/200000],P_{tn}_B:[-200000/200000],P_{tn}_C:[-200000/200000],\ P_{tn}_A:[-99999999/99999999],P_{tn}_B:[-99999999/99999999],P_{tn}_C:[-99999999/99999999],\
Q_{tn}_A:[-200000/200000],Q_{tn}_B:[-200000/200000],Q_{tn}_C:[-200000/200000],")); Q_{tn}_A:[-99999999/99999999],Q_{tn}_B:[-99999999/99999999],Q_{tn}_C:[-99999999/99999999],"));
} }
variable variable
} }
...@@ -477,8 +477,8 @@ mod test { ...@@ -477,8 +477,8 @@ mod test {
let dyn_topo = vec![vec![1, 1], vec![2, 2]]; let dyn_topo = vec![vec![1, 1], vec![2, 2]];
let dev_topo = vec![vec![1, 1, 1, 1], vec![2, 1, 1, 2], vec![3, 2, 2, 2], vec![4, 2, 2, 4]]; let dev_topo = vec![vec![1, 1, 1, 1], vec![2, 1, 1, 2], vec![3, 2, 2, 2], vec![4, 2, 2, 4]];
let mut dev_matrix = HashMap::new(); let mut dev_matrix = HashMap::new();
dev_matrix.insert(2, vec![array![[0.3465, 0.1560, 0.1580], [0.1560, 0.3375, 0.1535], [0.1580, 0.1535, 0.3414]], dev_matrix.insert(2, vec![array![[0.3465, 0.1560, 0.1580], [0.1560, 0.3375, 0.1535], [0.1580, 0.1535, 0.3414]]*2000.0/5280.0,
array![[1.0179, 0.5017, 0.4236], [0.5017, 1.0478, 0.3849], [0.4236, 0.3849, 1.0348]]]); array![[1.0179, 0.5017, 0.4236], [0.5017, 1.0478, 0.3849], [0.4236, 0.3849, 1.0348]]*2000.0/5280.0 ]);
// dev_matrix.insert(2, vec![array![[1.3425, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.3414]], // dev_matrix.insert(2, vec![array![[1.3425, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.3414]],
// array![[0.5124, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 1.0348]]]); // array![[0.5124, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 1.0348]]]);
// dev_matrix.insert(2, vec![array![[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.3414]], // dev_matrix.insert(2, vec![array![[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.3414]],
...@@ -486,7 +486,7 @@ mod test { ...@@ -486,7 +486,7 @@ mod test {
let input_tns = vec![1, 2, 2, 2, 2, 2, 2]; let input_tns = vec![1, 2, 2, 2, 2, 2, 2];
let input_phases = vec![MeasPhase::Total, MeasPhase::A, MeasPhase::A, MeasPhase::B, MeasPhase::B, MeasPhase::C, MeasPhase::C]; let input_phases = vec![MeasPhase::Total, MeasPhase::A, MeasPhase::A, MeasPhase::B, MeasPhase::B, MeasPhase::C, MeasPhase::C];
let input_types = vec![DataUnit::V, DataUnit::W, DataUnit::Var, DataUnit::W, DataUnit::Var, DataUnit::W, DataUnit::Var]; let input_types = vec![DataUnit::V, DataUnit::W, DataUnit::Var, DataUnit::W, DataUnit::Var, DataUnit::W, DataUnit::Var];
let input_values = vec![200.0, 1000.0, 100.0, 1100.0, 200.0, 900.0, 400.0]; let input_values = vec![12470.0, 1275000.0, 790174.0, 1800000.0, 871779.8, 2375000.0, 780624.7];
let constraints = get_pf_nlp_constraints( let constraints = get_pf_nlp_constraints(
&tns, dyn_topo, dev_topo, dev_matrix, input_tns, input_phases, input_types, input_values &tns, dyn_topo, dev_topo, dev_matrix, input_tns, input_phases, input_types, input_values
); );
......
% 测试ieee13配电网算例的单段导线
clc;
mpopt = mpoption('verbose',2);
mpc = loadcase('t_case3p_a_1');
run_pf(mpc,mpopt,'mpx',mp.xt_3p);
% 以下为手工计算结果
r = [ 0.3465 0.1560 0.1580 ; 0.1560 0.3375 0.1535 ; 0.1580 0.1535 0.3414 ];
x= [1.0179 0.5017 0.4236; 0.5017 1.0478 0.3849; 0.4236 0.3849 1.0348];
len = 2000/5280;
y = inv(r+1j*x)/len;
v1 = [complexd(7.1996,0.00) ; complexd(7.1996,-120.00) ; complexd(7.1996,120.00)].*1000;
v2 = [complexd(7.1769,-0.08) ; complexd(7.1396,-120.37) ; complexd(7.1500,119.25)].*1000;
i = y*(v2-v1);
abs(i)
rad2deg(angle(i))
pd = mpc.load3p(1,4:6);
pf = mpc.load3p(1,7:9);
qd = pd .* tan(acos(pf));
function mpc = t_case3p_a_1
% t_case3p_a - Four bus, unbalanced 3-phase test case.
%
% This data comes from ``4Bus-YY-UnB.DSS``, a modified version (with unbalanced
% load) of ``4Bus-YY-Bal.DSS`` [1], the OpenDSS 4 bus IEEE test case with
% grounded-wye to grounded-wye transformer.
%
% [1] https://sourceforge.net/p/electricdss/code/HEAD/tree/trunk/Distrib/IEEETestCases/4Bus-YY-Bal/4Bus-YY-Bal.DSS
%% MATPOWER Case Format : Version 2
mpc.version = '2';
%%----- Power Flow Data -----%%
%% system MVA base
mpc.baseMVA = 100;
mpc.bus = [];
mpc.gen = [];
mpc.branch = [];
mpc.gencost = [];
%%----- 3 Phase Model Data -----%%
%% system data
mpc.freq = 60; %% frequency, Hz
mpc.basekVA = 1000; %% system kVA base
%% bus data
% busid type basekV Vm1 Vm2 Vm3 Va1 Va2 Va3
mpc.bus3p = [
1 3 12.47 1 1 1 0 -120 120;
2 1 12.47 1 1 1 0 -120 120;
% 3 1 4.16 1 1 1 0 -120 120;
% 4 1 4.16 1 1 1 0 -120 120;
];
%% branch data
% brid fbus tbus status lcid len
mpc.line3p = [
1 1 2 1 1 2000/5280;
% 2 3 4 1 1 2500/5280;
];
%% transformer
% xfid fbus tbus status R X basekVA basekV
mpc.xfmr3p = [
% 1 2 3 1 0.01 0.06 6000 12.47;
];
%% load
% ldid ldbus status Pd1 Pd2 Pd3 ldpf1 ldpf2 ldpf3
mpc.load3p = [
1 2 1 1275 1800 2375 0.85 0.9 0.95;
% 1 4 1 1275 1800 2375 0.85 0.9 0.95;
];
%% gen
% genid gbus status Vg1 Vg2 Vg3 Pg1 Pg2 Pg3 Qg1 Qg2 Qg3
mpc.gen3p = [
1 1 1 1 1 1 2000 2000 2000 0 0 0;
];
%% line construction
% lcid R11 R21 R31 R22 R32 R33 X11 X21 X31 X22 X32 X33 C11 C21 C31 C22 C32 C33
mpc.lc = [
1 0.3465 0.1560 0.1580 0.3375 0.1535 0.3414 1.0179 0.5017 0.4236 1.0478 0.3849 1.0348 0 0 0 0 0 0
%1 0.457541 0.15594 0.153474 0.466617 0.157996 0.461462 1.078 0.501648 0.384909 1.04813 0.423624 1.06502 15.0671 -4.86241 -1.85323 15.875 -3.09098 14.3254
];
在nlp.rs中写了函数test_get_pf_nlp_constraints()进行了测试,模型为一条线路,选择ieee13节点配电网模型,config601线路。
电压等级为12.47kv,具体参数见t_case2p_a_1.m文件。
用matpower进行了测试,结果如下:
```matlab
MATPOWER Version 8.0, 17-May-2024
Power Flow -- AC-polar-power formulation
it max residual max x
---- -------------- --------------
0 2.375e+00 -
1 1.985e-02 1.293e-02
2 3.719e-06 1.653e-04
3 1.430e-13 3.221e-08
Newton's method converged in 3 iterations.
PF successful
PF succeeded in 0.04 seconds (0.03 setup + 0.00 solve)
================================================================================
| System Summary |
================================================================================
elements on off total
--------------------- ------- ------- -------
3-ph Buses 2 - 2
3-ph Generators 1 - 1
3-ph Loads 1 - 1
3-ph Lines 1 - 1
Total 3-ph generation 5468.4 kW 2502.3 kVAr
Total 3-ph load 5450.0 kW 2442.6 kVAr
Total 3-ph line loss 18.4 kW 59.7 kVAr
================================================================================
| 3-ph Bus Data |
================================================================================
3-ph Phase A Voltage Phase B Voltage Phase C Voltage
Bus ID Status (kV) (deg) (kV) (deg) (kV) (deg)
-------- ------ ------- ------- ------- ------- ------- -------
1 1 7.1996 0.00 7.1996 -120.00 7.1996 120.00
2 1 7.1769 -0.08 7.1396 -120.37 7.1500 119.25
================================================================================
| 3-ph Generator Data |
================================================================================
3-ph 3-ph Phase A Power Phase B Power Phase C Power
Gen ID Bus ID Status (kW) (KVAr) (kW) (kVAr) (kW) (kVAr)
-------- -------- ------ ------- ------ ------- ------ ------- ------
1 1 1 1277.88 794.49 1809.44 890.72 2381.04 817.09
================================================================================
| 3-ph Load Data |
================================================================================
3-ph 3-ph Phase A Power Phase B Power Phase C Power
Load ID Bus ID Status (kW) (PF) (kW) (PF) (kW) (PF)
-------- -------- ------ ------- ------ ------- ------ ------- ------
1 2 1 1275.00 0.8500 1800.00 0.9000 2375.00 0.9500
================================================================================
| 3-ph Line Data |
================================================================================
--> Current Injections at "From" Bus
3-ph 3-ph Bus 3-ph Bus Phase A Current Phase B Current Phase C Current
Line ID From ID To ID Status (A) (deg) (A) (deg) (A) (deg)
-------- -------- -------- ------ ------ ------ ------ ------ ------ ------
1 1 2 1 209.00 -31.9 280.13 -146.2 349.65 101.1
<-- Current Injections at "To" Bus
3-ph 3-ph Bus 3-ph Bus Phase A Current Phase B Current Phase C Current
Line ID From ID To ID Status (A) (deg) (A) (deg) (A) (deg)
-------- -------- -------- ------ ------ ------ ------ ------ ------ ------
1 1 2 1 209.00 148.1 280.13 33.8 349.65 -78.9
--> Power Injections at "From" Bus
3-ph 3-ph Bus 3-ph Bus Phase A Power Phase B Power Phase C Power
Line ID From ID To ID Status (kW) (kVAr) (kW) (kVAr) (kW) (kVAr)
-------- -------- -------- ------ ------ ------ ------ ------ ------ ------
1 1 2 1 1277.9 794.5 1809.4 890.7 2381.0 817.1
<-- Power Injections at "To" Bus
3-ph 3-ph Bus 3-ph Bus Phase A Power Phase B Power Phase C Power
Line ID From ID To ID Status (kW) (kVAr) (kW) (kVAr) (kW) (kVAr)
-------- -------- -------- ------ ------ ------ ------ ------ ------ ------
1 1 2 1 -1275.0 -790.2 -1800.0 -871.8 -2375.0 -780.6
```
函数test_get_pf_nlp_constraints()输出结果为:
```text
P_1_A+V_1_A*V_1_A*1.1451-V_1_A*V_2_A*(1.1451*cos(D_1_A-D_2_A)+-3.3006*sin(D_1_A-D_2_A))+V_1_A*V_1_B*(-0.4859*cos(D_1_A-D_1_B)+1.2203*sin(D_1_A-D_1_B))-V_1_A*V_2_B*(-0.4859*cos(D_1_A-D_2_B)+1.2203*sin(D_1_A-D_2_B))+V_1_A*V_1_C*(-0.2661*cos(D_1_A-D_1_C)+0.9122*sin(D_1_A-D_1_C))-V_1_A*V_2_C*(-0.2661*cos(D_1_A-D_2_C)+0.9122*sin(D_1_A-D_2_C)):[0/0]
Q_1_A+-V_1_A*V_1_A*-3.3006+V_1_A*V_2_A*(-3.3006*cos(D_1_A-D_2_A)-1.1451*sin(D_1_A-D_2_A))+V_1_A*V_1_B*(-0.4859*sin(D_1_A-D_1_B)-1.2203*cos(D_1_A-D_1_B))+V_1_A*V_2_B*(1.2203*cos(D_1_A-D_2_B)--0.4859*sin(D_1_A-D_2_B))+V_1_A*V_1_C*(-0.2661*sin(D_1_A-D_1_C)-0.9122*cos(D_1_A-D_1_C))+V_1_A*V_2_C*(0.9122*cos(D_1_A-D_2_C)--0.2661*sin(D_1_A-D_2_C)):[0/0]
P_1_B+V_1_B*V_1_B*1.0027-V_1_B*V_2_B*(1.0027*cos(D_1_B-D_2_B)+-3.1276*sin(D_1_B-D_2_B))+V_1_B*V_1_A*(-0.4859*cos(D_1_B-D_1_A)+1.2203*sin(D_1_B-D_1_A))-V_1_B*V_2_A*(-0.4859*cos(D_1_B-D_2_A)+1.2203*sin(D_1_B-D_2_A))+V_1_B*V_1_C*(-0.1263*cos(D_1_B-D_1_C)+0.6967*sin(D_1_B-D_1_C))-V_1_B*V_2_C*(-0.1263*cos(D_1_B-D_2_C)+0.6967*sin(D_1_B-D_2_C)):[0/0]
Q_1_B+-V_1_B*V_1_B*-3.1276+V_1_B*V_2_B*(-3.1276*cos(D_1_B-D_2_B)-1.0027*sin(D_1_B-D_2_B))+V_1_B*V_1_A*(-0.4859*sin(D_1_B-D_1_A)-1.2203*cos(D_1_B-D_1_A))+V_1_B*V_2_A*(1.2203*cos(D_1_B-D_2_A)--0.4859*sin(D_1_B-D_2_A))+V_1_B*V_1_C*(-0.1263*sin(D_1_B-D_1_C)-0.6967*cos(D_1_B-D_1_C))+V_1_B*V_2_C*(0.6967*cos(D_1_B-D_2_C)--0.1263*sin(D_1_B-D_2_C)):[0/0]
P_1_C+V_1_C*V_1_C*0.8867-V_1_C*V_2_C*(0.8867*cos(D_1_C-D_2_C)+-2.9506*sin(D_1_C-D_2_C))+V_1_C*V_1_A*(-0.2661*cos(D_1_C-D_1_A)+0.9122*sin(D_1_C-D_1_A))-V_1_C*V_2_A*(-0.2661*cos(D_1_C-D_2_A)+0.9122*sin(D_1_C-D_2_A))+V_1_C*V_1_B*(-0.1263*cos(D_1_C-D_1_B)+0.6967*sin(D_1_C-D_1_B))-V_1_C*V_2_B*(-0.1263*cos(D_1_C-D_2_B)+0.6967*sin(D_1_C-D_2_B)):[0/0]
Q_1_C+-V_1_C*V_1_C*-2.9506+V_1_C*V_2_C*(-2.9506*cos(D_1_C-D_2_C)-0.8867*sin(D_1_C-D_2_C))+V_1_C*V_1_A*(-0.2661*sin(D_1_C-D_1_A)-0.9122*cos(D_1_C-D_1_A))+V_1_C*V_2_A*(0.9122*cos(D_1_C-D_2_A)--0.2661*sin(D_1_C-D_2_A))+V_1_C*V_1_B*(-0.1263*sin(D_1_C-D_1_B)-0.6967*cos(D_1_C-D_1_B))+V_1_C*V_2_B*(0.6967*cos(D_1_C-D_2_B)--0.1263*sin(D_1_C-D_2_B)):[0/0]
P_2_A+V_2_A*V_2_A*1.1451-V_2_A*V_1_A*(1.1451*cos(D_2_A-D_1_A)+-3.3006*sin(D_2_A-D_1_A))+V_2_A*V_2_B*(-0.4859*cos(D_2_A-D_2_B)+1.2203*sin(D_2_A-D_2_B))-V_2_A*V_1_B*(-0.4859*cos(D_2_A-D_1_B)+1.2203*sin(D_2_A-D_1_B))+V_2_A*V_2_C*(-0.2661*cos(D_2_A-D_2_C)+0.9122*sin(D_2_A-D_2_C))-V_2_A*V_1_C*(-0.2661*cos(D_2_A-D_1_C)+0.9122*sin(D_2_A-D_1_C)):[0/0]
Q_2_A+-V_2_A*V_2_A*-3.3006+V_2_A*V_1_A*(-3.3006*cos(D_2_A-D_1_A)-1.1451*sin(D_2_A-D_1_A))+V_2_A*V_2_B*(-0.4859*sin(D_2_A-D_2_B)-1.2203*cos(D_2_A-D_2_B))+V_2_A*V_1_B*(1.2203*cos(D_2_A-D_1_B)--0.4859*sin(D_2_A-D_1_B))+V_2_A*V_2_C*(-0.2661*sin(D_2_A-D_2_C)-0.9122*cos(D_2_A-D_2_C))+V_2_A*V_1_C*(0.9122*cos(D_2_A-D_1_C)--0.2661*sin(D_2_A-D_1_C)):[0/0]
P_2_B+V_2_B*V_2_B*1.0027-V_2_B*V_1_B*(1.0027*cos(D_2_B-D_1_B)+-3.1276*sin(D_2_B-D_1_B))+V_2_B*V_2_A*(-0.4859*cos(D_2_B-D_2_A)+1.2203*sin(D_2_B-D_2_A))-V_2_B*V_1_A*(-0.4859*cos(D_2_B-D_1_A)+1.2203*sin(D_2_B-D_1_A))+V_2_B*V_2_C*(-0.1263*cos(D_2_B-D_2_C)+0.6967*sin(D_2_B-D_2_C))-V_2_B*V_1_C*(-0.1263*cos(D_2_B-D_1_C)+0.6967*sin(D_2_B-D_1_C)):[0/0]
Q_2_B+-V_2_B*V_2_B*-3.1276+V_2_B*V_1_B*(-3.1276*cos(D_2_B-D_1_B)-1.0027*sin(D_2_B-D_1_B))+V_2_B*V_2_A*(-0.4859*sin(D_2_B-D_2_A)-1.2203*cos(D_2_B-D_2_A))+V_2_B*V_1_A*(1.2203*cos(D_2_B-D_1_A)--0.4859*sin(D_2_B-D_1_A))+V_2_B*V_2_C*(-0.1263*sin(D_2_B-D_2_C)-0.6967*cos(D_2_B-D_2_C))+V_2_B*V_1_C*(0.6967*cos(D_2_B-D_1_C)--0.1263*sin(D_2_B-D_1_C)):[0/0]
P_2_C+V_2_C*V_2_C*0.8867-V_2_C*V_1_C*(0.8867*cos(D_2_C-D_1_C)+-2.9506*sin(D_2_C-D_1_C))+V_2_C*V_2_A*(-0.2661*cos(D_2_C-D_2_A)+0.9122*sin(D_2_C-D_2_A))-V_2_C*V_1_A*(-0.2661*cos(D_2_C-D_1_A)+0.9122*sin(D_2_C-D_1_A))+V_2_C*V_2_B*(-0.1263*cos(D_2_C-D_2_B)+0.6967*sin(D_2_C-D_2_B))-V_2_C*V_1_B*(-0.1263*cos(D_2_C-D_1_B)+0.6967*sin(D_2_C-D_1_B)):[0/0]
Q_2_C+-V_2_C*V_2_C*-2.9506+V_2_C*V_1_C*(-2.9506*cos(D_2_C-D_1_C)-0.8867*sin(D_2_C-D_1_C))+V_2_C*V_2_A*(-0.2661*sin(D_2_C-D_2_A)-0.9122*cos(D_2_C-D_2_A))+V_2_C*V_1_A*(0.9122*cos(D_2_C-D_1_A)--0.2661*sin(D_2_C-D_1_A))+V_2_C*V_2_B*(-0.1263*sin(D_2_C-D_2_B)-0.6967*cos(D_2_C-D_2_B))+V_2_C*V_1_B*(0.6967*cos(D_2_C-D_1_B)--0.1263*sin(D_2_C-D_1_B)):[0/0]
V_1_A-7199.5579:[0/0]
D_1_A-0:[0/0]
V_1_B-7199.5579:[0/0]
D_1_B--2/3*pi:[0/0]
V_1_C-7199.5579:[0/0]
D_1_C-2/3*pi:[0/0]
P_2_A-1275000.0000:[0/0]
Q_2_A-790174.0000:[0/0]
P_2_B-1800000.0000:[0/0]
Q_2_B-871779.8000:[0/0]
P_2_C-2375000.0000:[0/0]
Q_2_C-780624.7000:[0/0]
V_1_A:[0/99999999],D_1_A:[-3.2/3.2],V_1_B:[0/99999999],D_1_B:[-3.2/3.2],V_1_C:[0/99999999],D_1_C:[-3.2/3.2],P_1_A:[-99999999/99999999],P_1_B:[-99999999/99999999],P_1_C:[-99999999/99999999],Q_1_A:[-99999999/99999999],Q_1_B:[-99999999/99999999],Q_1_C:[-99999999/99999999],V_2_A:[0/99999999],D_2_A:[-3.2/3.2],V_2_B:[0/99999999],D_2_B:[-3.2/3.2],V_2_C:[0/99999999],D_2_C:[-3.2/3.2],P_2_A:[-99999999/99999999],P_2_B:[-99999999/99999999],P_2_C:[-99999999/99999999],Q_2_A:[-99999999/99999999],Q_2_B:[-99999999/99999999],Q_2_C:[-99999999/99999999]
```
输入至easyslove,求解得到:
```text
V_1_A : 7199.5579
D_1_A : 0
V_1_B : 7199.5579
D_1_B : -2.0943951023931953
V_1_C : 7199.5579
D_1_C : 2.0943951023931953
P_1_A : -1277881.0174413954
P_1_B : -1809439.2939235603
P_1_C : -2381044.287784358
Q_1_A : -794494.3206242201
Q_1_B : -890721.1548199678
Q_1_C : -817091.6107552513
V_2_A : 7176.944412608694
D_2_A : -0.001431890501404535
V_2_B : 7139.609540861016
D_2_B : -2.1008076662494224
V_2_C : 7149.960093956684
D_2_C : 2.0813825033502016
P_2_A : 1275000
P_2_B : 1800000
P_2_C : 2375000
Q_2_A : 790174
Q_2_B : 871779.8
Q_2_C : 780624.7
```
二者结果相同。
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论