📄 printpf.m
字号:
%% bus data
if OUT_BUS
fprintf(fd, '\n================================================================================');
fprintf(fd, '\n| Bus Data |');
fprintf(fd, '\n================================================================================');
fprintf(fd, '\nBus Voltage Generation Load ');
if isOPF, fprintf(fd, ' Lambda($/MVA-hr)'); end
fprintf(fd, '\n # Mag(pu) Ang(deg) P (MW) Q (MVAR) P (MW) Q (MVAR)');
if isOPF, fprintf(fd, ' P Q '); end
fprintf(fd, '\n--- ------- -------- -------- -------- -------- --------');
if isOPF, fprintf(fd, ' ------- -------'); end
for i = 1:nb
fprintf(fd, '\n%3d%8.3f%10.3f', bus(i, [BUS_I, VM, VA]));
g = find(gen(:, GEN_BUS) == bus(i, BUS_I));
if gen(g, GEN_STATUS)
fprintf(fd, '%10.2f%10.2f', gen(g, [PG, QG]));
else
fprintf(fd, ' - - ');
end
if bus(i, PD) | bus(i, QD)
fprintf(fd, '%10.2f%10.2f', bus(i, [PD, QD]));
else
fprintf(fd, ' - - ');
end
if isOPF
fprintf(fd, '%10.3f', bus(i, LAM_P));
if abs(bus(i, LAM_Q)) > 1e-6
fprintf(fd, '%8.3f', bus(i, LAM_Q));
else
fprintf(fd, ' - ');
end
end
end
fprintf(fd, '\n -------- -------- -------- --------');
fprintf(fd, '\n Total: %9.2f %9.2f %9.2f %9.2f', ...
sum(gen(:, PG)), sum(gen(:, QG)), sum(bus(nzld, PD)), sum(bus(nzld, QD)));
fprintf(fd, '\n');
end
%% branch data
if OUT_BRANCH
fprintf(fd, '\n================================================================================');
fprintf(fd, '\n| Branch Data |');
fprintf(fd, '\n================================================================================');
fprintf(fd, '\n From To From Bus Injection To Bus Injection Loss (I^2 * Z) ');
fprintf(fd, '\n Bus Bus P (MW) Q (MVAR) P (MW) Q (MVAR) P (MW) Q (MVAR)');
fprintf(fd, '\n----- ----- -------- -------- -------- -------- -------- --------');
fprintf(fd, '\n%4d%7d%10.2f%10.2f%10.2f%10.2f%10.3f%10.2f', ...
[ branch(:, [F_BUS, T_BUS]), ...
branch(:, [PF, QF]), branch(:, [PT, QT]), ...
real(loss), imag(loss) ...
]');
fprintf(fd, '\n -------- --------');
fprintf(fd, '\n Total:%10.3f%10.2f', ...
sum(real(loss)), sum(imag(loss)));
fprintf(fd, '\n');
end
%%----- constraint data -----
if isOPF
%% voltage constraints
if OUT_V_LIM == 2 | (OUT_V_LIM == 1 & ...
(any(bus(:, MU_VMIN) > 1e-6) | any(bus(:, MU_VMAX) > 1e-6)))
fprintf(fd, '\n================================================================================');
fprintf(fd, '\n| Voltage Constraints |');
fprintf(fd, '\n================================================================================');
fprintf(fd, '\nBus');
fprintf(fd, '\n # Vmin mu Vmin |V| Vmax Vmax mu');
fprintf(fd, '\n--- ------- ----- ----- ----- -------');
for i = 1:nb
if OUT_V_LIM == 2 | (OUT_V_LIM == 1 & ...
(bus(i, MU_VMIN) > 1e-6 | bus(i, MU_VMAX) > 1e-6))
fprintf(fd, '\n%3d', bus(i, BUS_I));
if bus(i, MU_VMIN) > 1e-6
fprintf(fd, '%8.3f', bus(i, MU_VMIN));
else
fprintf(fd, ' - ');
end
fprintf(fd, '%8.3f%7.3f%7.3f', bus(i, [VMIN, VM, VMAX]));
if bus(i, MU_VMAX) > 1e-6
fprintf(fd, '%8.3f', bus(i, MU_VMAX));
else
fprintf(fd, ' - ');
end
end
end
fprintf(fd, '\n');
end
%% generator P constraints
if OUT_PG_LIM == 2 | OUT_QG_LIM == 2 | ...
(OUT_PG_LIM == 1 & (any(gen(:, MU_PMIN) > 1e-6) | any(gen(:, MU_PMAX) > 1e-6))) | ...
(OUT_QG_LIM == 1 & (any(gen(:, MU_QMIN) > 1e-6) | any(gen(:, MU_QMAX) > 1e-6)))
fprintf(fd, '\n================================================================================');
fprintf(fd, '\n| Generation Constraints |');
fprintf(fd, '\n================================================================================');
end
if OUT_PG_LIM == 2 | (OUT_PG_LIM == 1 & ...
(any(gen(:, MU_PMIN) > 1e-6) | any(gen(:, MU_PMAX) > 1e-6)))
fprintf(fd, '\nBus Active Power Limits');
fprintf(fd, '\n # Pmin mu Pmin P Pmax Pmax mu');
fprintf(fd, '\n--- ------- -------- -------- -------- -------');
for i = 1:ng
if OUT_PG_LIM == 2 | (OUT_PG_LIM == 1 & (gen(i, MU_PMIN) > 1e-6 | gen(i, MU_PMAX) > 1e-6))
fprintf(fd, '\n%3d', gen(i, GEN_BUS));
if gen(i, MU_PMIN) > 1e-6
fprintf(fd, '%8.3f', gen(i, MU_PMIN));
else
fprintf(fd, ' - ');
end
if gen(i, PG)
fprintf(fd, '%10.2f%10.2f%10.2f', gen(i, [PMIN, PG, PMAX]));
else
fprintf(fd, '%10.2f - %10.2f', gen(i, [PMIN, PMAX]));
end
if gen(i, MU_PMAX) > 1e-6
fprintf(fd, '%9.3f', gen(i, MU_PMAX));
else
fprintf(fd, ' - ');
end
end
end
fprintf(fd, '\n');
end
%% generator Q constraints
if OUT_QG_LIM == 2 | (OUT_QG_LIM == 1 & ...
(any(gen(:, MU_QMIN) > 1e-6) | any(gen(:, MU_QMAX) > 1e-6)))
fprintf(fd, '\nBus Reactive Power Limits');
fprintf(fd, '\n # Qmin mu Qmin Q Qmax Qmax mu');
fprintf(fd, '\n--- ------- -------- -------- -------- -------');
for i = 1:ng
if OUT_QG_LIM == 2 | (OUT_QG_LIM == 1 & (gen(i, MU_QMIN) > 1e-6 | gen(i, MU_QMAX) > 1e-6))
fprintf(fd, '\n%3d', gen(i, GEN_BUS));
if gen(i, MU_QMIN) > 1e-6
fprintf(fd, '%8.3f', gen(i, MU_QMIN));
else
fprintf(fd, ' - ');
end
if gen(i, QG)
fprintf(fd, '%10.2f%10.2f%10.2f', gen(i, [QMIN, QG, QMAX]));
else
fprintf(fd, '%10.2f - %10.2f', gen(i, [QMIN, QMAX]));
end
if gen(i, MU_QMAX) > 1e-6
fprintf(fd, '%9.3f', gen(i, MU_QMAX));
else
fprintf(fd, ' - ');
end
end
end
fprintf(fd, '\n');
end
%% line flow constraints
if OUT_LINE_LIM == 2 | (OUT_LINE_LIM == 1 & ...
(any(branch(:, MU_SF) > 1e-6) | any(branch(:, MU_ST) > 1e-6)))
fprintf(fd, '\n================================================================================');
fprintf(fd, '\n| Line Flow Constraints |');
fprintf(fd, '\n================================================================================');
fprintf(fd, '\n From "From" End Limit "To" End To');
fprintf(fd, '\n Bus |Sf| mu |Sf| |Smax| |St| |St| mu Bus');
fprintf(fd, '\n----- ------- -------- -------- -------- ------- -----');
for i = 1:nl
if OUT_LINE_LIM == 2 | (OUT_LINE_LIM == 1 & ...
(branch(i, MU_SF) > 1e-6 | branch(i, MU_ST) > 1e-6))
fprintf(fd, '\n%4d', branch(i, F_BUS));
if branch(i, MU_SF) > 1e-6
fprintf(fd, '%10.3f', branch(i, MU_SF));
else
fprintf(fd, ' - ');
end
fprintf(fd, '%9.2f%10.2f%10.2f', ...
[abs(branch(i, PF) + j * branch(i, QF)), ...
branch(i, RATE_A), abs(branch(i, PT) + j * branch(i, QT))]);
if branch(i, MU_ST) > 1e-6
fprintf(fd, '%10.3f', branch(i, MU_ST));
else
fprintf(fd, ' - ');
end
fprintf(fd, '%6d', branch(i, T_BUS));
end
end
fprintf(fd, '\n');
end
end
%% print raw data for Perl database interface
if OUT_RAW
fprintf(fd, '---------- raw PB::Soln data below ----------\n');
fprintf(fd, 'bus\n');
if isOPF
fprintf(fd, '%d\t%d\t%g\t%g\t%g\t%g\t%g\t%g\n', ...
bus(:, [BUS_I, BUS_TYPE, VM, VA, LAM_P, LAM_Q, MU_VMAX, MU_VMIN])');
fprintf(fd, 'branch\n');
fprintf(fd, '%d\t%g\t%g\t%g\t%g\t%g\t%g\n', ...
[[1:nl]' branch(:, [PF, QF, PT, QT, MU_SF, MU_ST])]');
fprintf(fd, 'gen\n');
fprintf(fd, '%d\t%g\t%g\t%g\t%d\t%g\t%g\t%g\t%g\n', ...
[[1:ng]' gen(:, [PG, QG, VG, GEN_STATUS, MU_PMAX, MU_PMIN, MU_QMAX, MU_QMIN])]');
else
fprintf(fd, '%d\t%d\t%f\t%f\t%d\t%d\t%d\t%d\n', ...
[bus(:, [BUS_I, BUS_TYPE, VM, VA]) zeros(nb, 4)]');
fprintf(fd, 'branch\n');
fprintf(fd, '%d\t%f\t%f\t%f\t%f\t%d\t%d\n', ...
[[1:nl]' branch(:, [PF, QF, PT, QT]) zeros(nl, 2)]');
fprintf(fd, 'gen\n');
fprintf(fd, '%d\t%f\t%f\t%f\t%d\t%d\t%d\t%d\t%d\n', ...
[[1:ng]' gen(:, [PG, QG, VG, GEN_STATUS]) zeros(ng, 4)]');
end
fprintf(fd, 'end\n');
fprintf(fd, '---------- raw PB::Soln data above ----------\n');
end
else
%% convergence & elapsed time
if OUT_SYS_SUM == 1 | OUT_RAW
fprintf(fd, '\nDid not converge (%.2f seconds)\n', et);
end
end
return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -