Newton-Raphson潮流计算

免费下载适用于Newton-Raphson潮流的Matlab代码% Program for Newton-Raphson Load Flow Analysis..nbus = 14;                  % IEEE-14, IEEE-30, IEEE-57..Y = ybusppg(nbus)

应用介绍

免费下载适用于Newton-Raphson潮流的Matlab代码

% Program for Newton-Raphson Load Flow Analysis..

nbus = 14;                  % IEEE-14, IEEE-30, IEEE-57..

Y = ybusppg(nbus);          % Calling ybusppg.m to get Y-Bus Matrix..

busd = busdatas(nbus);      % Calling busdatas..

BMva = 100;                 % Base MVA..

bus = busd(:,1);            % Bus Number..

type = busd(:,2);           % Type of Bus 1-Slack, 2-PV, 3-PQ..

V = busd(:,3);              % Specified Voltage..

del = busd(:,4);            % Voltage Angle..

Pg = busd(:,5)/BMva;        % PGi..

Qg = busd(:,6)/BMva;        % QGi..

Pl = busd(:,7)/BMva;        % PLi..

Ql = busd(:,8)/BMva;        % QLi..

Qmin = busd(:,9)/BMva;      % Minimum Reactive Power Limit..

Qmax = busd(:,10)/BMva;     % Maximum Reactive Power Limit..

P = Pg - Pl;                % Pi = PGi - PLi..

Q = Qg - Ql;                % Qi = QGi - QLi..

Psp = P;                    % P Specified..

Qsp = Q;                    % Q Specified..

G = real(Y);                % Conductance matrix..

B = imag(Y);                % Susceptance matrix..

pv = find(type == 2 | type == 1);   % PV Buses..

pq = find(type == 3);               % PQ Buses..

npv = length(pv);                   % No. of PV buses..

npq = length(pq);                   % No. of PQ buses..

Tol = 1;  

Iter = 1;

while (Tol > 1e-5)   % Iteration starting..

    

    P = zeros(nbus,1);

    Q = zeros(nbus,1);

    % Calculate P and Q

    for i = 1:nbus

        for k = 1:nbus

            P(i) = P(i) + V(i)* V(k)*(G(i,k)*cos(del(i)-del(k)) + B(i,k)*sin(del(i)-del(k)));

            Q(i) = Q(i) + V(i)* V(k)*(G(i,k)*sin(del(i)-del(k)) - B(i,k)*cos(del(i)-del(k)));

        end

    end

    % Checking Q-limit violations..

    if Iter <= 7 && Iter > 2    % Only checked up to 7th iterations..

        for n = 2:nbus

            if type(n) == 2

                QG = Q(n)+Ql(n);

                if QG < Qmin(n)

                    V(n) = V(n) + 0.01;

                elseif QG > Qmax(n)

                    V(n) = V(n) - 0.01;

                end

            end

         end

    end

    

    % Calculate change from specified value

    dPa = Psp-P;

    dQa = Qsp-Q;

    k = 1;

    dQ = zeros(npq,1);

    for i = 1:nbus

        if type(i) == 3

            dQ(k,1) = dQa(i);

            k = k+1;

        end

    end

    dP = dPa(2:nbus);

    M = [dP; dQ];       % Mismatch Vector

    

    % Jacobian

    % J1 - Derivative of Real Power Injections with Angles..

    J1 = zeros(nbus-1,nbus-1);

    for i = 1:(nbus-1)

        m = i+1;

        for k = 1:(nbus-1)

            n = k+1;

            if n == m

                for n = 1:nbus

                    J1(i,k) = J1(i,k) + V(m)* V(n)*(-G(m,n)*sin(del(m)-del(n)) + B(m,n)*cos(del(m)-del(n)));

                end

                J1(i,k) = J1(i,k) - V(m)^2*B(m,m);

            else

                J1(i,k) = V(m)* V(n)*(G(m,n)*sin(del(m)-del(n)) - B(m,n)*cos(del(m)-del(n)));

            end

        end

    end

    

    % J2 - Derivative of Real Power Injections with V..

    J2 = zeros(nbus-1,npq);

    for i = 1:(nbus-1)

        m = i+1;

        for k = 1:npq

            n = pq(k);

            if n == m

                for n = 1:nbus

                    J2(i,k) = J2(i,k) + V(n)*(G(m,n)*cos(del(m)-del(n)) + B(m,n)*sin(del(m)-del(n)));

                end

                J2(i,k) = J2(i,k) + V(m)*G(m,m);

            else

                J2(i,k) = V(m)*(G(m,n)*cos(del(m)-del(n)) + B(m,n)*sin(del(m)-del(n)));

            end

        end

    end

    

    % J3 - Derivative of Reactive Power Injections with Angles..

    J3 = zeros(npq,nbus-1);

    for i = 1:npq

        m = pq(i);

        for k = 1:(nbus-1)

            n = k+1;

            if n == m

                for n = 1:nbus

                    J3(i,k) = J3(i,k) + V(m)* V(n)*(G(m,n)*cos(del(m)-del(n)) + B(m,n)*sin(del(m)-del(n)));

                end

                J3(i,k) = J3(i,k) - V(m)^2*G(m,m);

            else

                J3(i,k) = V(m)* V(n)*(-G(m,n)*cos(del(m)-del(n)) - B(m,n)*sin(del(m)-del(n)));

            end

        end

    end

    

    % J4 - Derivative of Reactive Power Injections with V..

    J4 = zeros(npq,npq);

    for i = 1:npq

        m = pq(i);

        for k = 1:npq

            n = pq(k);

            if n == m

                for n = 1:nbus

                    J4(i,k) = J4(i,k) + V(n)*(G(m,n)*sin(del(m)-del(n)) - B(m,n)*cos(del(m)-del(n)));

                end

                J4(i,k) = J4(i,k) - V(m)*B(m,m);

            else

                J4(i,k) = V(m)*(G(m,n)*sin(del(m)-del(n)) - B(m,n)*cos(del(m)-del(n)));

            end

        end

    end

    

    J = [J1 J2; J3 J4];     % Jacobian Matrix..

    

    X = inv(J)*M;           % Correction Vector

    dTh = X(1:nbus-1);      % Change in Voltage Angle..

    dV = X(nbus:end);       % Change in Voltage Magnitude..

    

    % Updating State Vectors..

    del(2:nbus) = dTh + del(2:nbus);    % Voltage Angle..

    k = 1;

    for i = 2:nbus

        if type(i) == 3

            V(i) = dV(k) + V(i);        % Voltage Magnitude..

            k = k+1;

        end

    end

    

    Iter = Iter + 1;

    Tol = max(abs(M));                  % Tolerance..

    

end

loadflow(nbus,V,del,BMva);              % Calling Loadflow.m..

文件列表(部分)

名称 大小 修改日期
busdatas.m1.10 KB2014-02-12
linedatas.m1.76 KB2014-02-12
loadflow.m1.07 KB2014-02-12
nrlfppg.m1.38 KB2014-02-12
pol2rect.m0.21 KB2014-02-12
readme.txt0.20 KB2017-11-10
ybusppg.m0.54 KB2014-02-12
nrlfppg_powermatlab0.00 KB2017-11-10

立即下载

相关下载

[改进牛拉法配电网潮流计算] 针对配电网的特点,做出两种假设,基于这两种假设,改进了一般牛顿拉夫逊法,使其能够适应配电网潮流计算的要求,其运算性能与前推回代法的性能一致,效果良好。文件中提供了IEEE33节点的数据,将其放在d盘中,执行源文件即可获得结果。
[电力系统状态估计] 电力系统状态估计(电力网系统辨识)-最小二乘法-matlab txt文件为IEEE30节点电力网数据 导入其它电力网数据时,可按txt文档内格式保存数据,也可修改m文件代码 辨识后的数据将会存储在oStateEstimation.txt文件内
[基于GUI的潮流计算工具] 该工具箱包含具有三种不同的潮流计算方法:Gauss-Seidel,Newton-Raphson和快速解耦。 有如下算例已经进行过计算,IEEE6节点,IEEE9节点,IEEE14节点,IEEE26节点等等,更多详情请看代码。
[Newton-Raphson牛顿法matlab代码] 在数值分析中,牛顿法,也称为牛顿-拉夫森法,是一种求根算法,可以连续逼近实值函数的根(或零)。 最基本的版本以为实变量x定义的单变量函数f,函数的导数f'和为f的根的初始猜测x0开头。
[快速解耦牛顿拉夫森法代码] 这是使用快速解耦牛顿拉夫森法进行潮流分析, ​潮流计算电压和电流过程​
[快速解耦潮流计算代码] 通过使用快速解耦法进行潮流计算,该方法是接近于近似的方法,接近于真实值来求解,其传输线路X与R的比值高,这个程序并且可以适用于任何相关的节点和线路数据。

评论列表 共有 0 条评论

暂无评论

微信捐赠

微信扫一扫体验

立即
上传
发表
评论
返回
顶部