matlab vmax,MATLAB程序解读。急急急急急!!!!!!!!!!!

这段代码是一个用于电力系统潮流计算的MATLAB程序。它首先定义了电力系统的节点、支路和发电机数据,然后使用不同的潮流算法(牛顿法、快速分解法、高斯赛德尔法)进行计算。程序还包括了功率注入、电压调整和解决方案的输出。最后,程序会保存计算结果并返回计算时间和成功率。
摘要由CSDN通过智能技术生成

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

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

求大神解读此程序,急急急!!!!!!!!!!!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值