该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
function [scores bus ] = runpdwga(pop, baseMVA, bus,Main, M, gen, NN, branch, mpopt)
%% bus data
% bus_i type Pd Qd Gs Bs area Vm Va baseKV zone Vmax Vmin
baseMVA=1
bus = [
1 3 0 0 0 0 1 1 0 10 1 1.1 0.9;
2 1 0.0831 0.0304 0 0 1 1 0 10 1 1.1 0.9;
3 1 0 0 0 0 1 1 0 10 1 1.1 0.9;
4 1 1.7451 0.6392 0 0 1 1 0 10 1 1.1 0.9;
5 1 0 0 0 0 1 1 0 10 1 1.1 0.9;
6 1 2.9294 1.0729 0 0 1 1 0 10 1 1.1 0.9;
];
%% branch data
% fbus tbus r x b rateA rateB rateC ratio angle status
Main=[
1 2 0.00084 0.001155 0 250 250 250 0 0 1;
1 6 0.00392 0.00539 0 250 250 250 0 0 1;
2 3 0.0021 0.002888 0 250 250 250 0 0 1;
]
M = [
3 4 0.0007 0.0009625 0 150 150 150 0 0 1;
4 5 0.00042 0.0005775 0 150 150 150 0 0 1;
6 5 0.00028 0.000385 0 300 300 300 0 0 1;
];
%% generator data
% bus Pg Qg Qmax Qmin Vg mBase status Pmax Pmin
gen = [
1 50 0 30 -30 1 100 1 50 1;
];
NN=logical(mod(pop,10));
branch1 =M(NN,: );
branch=[Main;branch1];
[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] = idx_brch;
[GEN_BUS, PG, QG, QMAX, QMIN, VG, MBASE, ...
GEN_STATUS, PMAX, PMIN, MU_PMAX, MU_PMIN, MU_QMAX, MU_QMIN] = idx_gen;
mpopt = mpoption
fname = ''
solvedcase = ''
[i2e, bus, gen, branch] = ext2int(bus, gen, branch);
%% get bus index lists of each type of bus
[ref, pv, pq] = bustypes(bus, gen);
%% generator info
on = find(gen(:, GEN_STATUS) > 0); %% which generators are on?
gbus = gen(on, GEN_BUS); %% what buses are they at?
%%----- run the power flow -----
t0 = clock;
%% AC formulation
%% initial state
% V0 = ones(size(bus, 1), 1); %% flat start
V0 = bus(:, VM) .* exp(sqrt(-1) * pi/180 * bus(:, VA));
V0(gbus) = gen(on, VG) ./ abs(V0(gbus)).* V0(gbus);
%% build admittance matrices
[Ybus, Yf, Yt] = makeYbus(baseMVA, bus, branch);
%% compute complex bus power injections (generation - load)
Sbus = makeSbus(baseMVA, bus, gen);
%% run the power flow
alg = mpopt(1);
if alg == 1
[V, success, iterations] = newtonpf(Ybus, Sbus, V0, ref, pv, pq, mpopt);
elseif alg == 2 | alg == 3
[Bp, Bpp] = makeB(baseMVA, bus, branch, alg);
[V, success, iterations] = fdpf(Ybus, Sbus, V0, Bp, Bpp, ref, pv, pq, mpopt);
elseif alg == 4
[V, success, iterations] = gausspf(Ybus, Sbus, V0, ref, pv, pq, mpopt);
else
error('Only Newton''s method, fast-decoupled, and Gauss-Seidel power flow algorithms currently implemented.');
end
%% update data matrices with solution
[bus, gen, branch] = pfsoln(baseMVA, bus, gen, branch, Ybus, Yf, Yt, V, ref, pv, pq);
et = etime(clock, t0);
%%----- output results -----
%% convert back to original bus numbering & print results
[bus, gen, branch] = int2ext(i2e, bus, gen, branch);
if fname
[fd, msg] = fopen(fname, 'at');
if fd == -1
error(msg);
else
printpf(baseMVA, bus, gen, branch, [], success, et, fd, mpopt);
fclose(fd);
end
end
printpf(baseMVA, bus, gen, branch, [], success, et, 1, mpopt);
%% save solved case
if solvedcase
savecase(solvedcase, baseMVA, bus, gen, branch);
end
%% this is just to prevent it from printing baseMVA
%% when called with no output arguments
if nargout, MVAbase = baseMVA; end
%loss = baseMVA * abs(V(e2i(branch(:, F_BUS))) ./ tap - V(e2i(branch(:, T_BUS)))) .^ 2 ./ ...
%(branch(:, BR_R) - j * branch(:, BR_X));
P=(branch(:, [PF]))
Q=(branch(:, [QF]))
r=(branch(:, [BR_R]))
R1=(P.^2+Q.^2)
scores=R1'*r*0.01
求大神解读此程序,急急急!!!!!!!!!!!!!!!!