Advertisement
Guest User

Untitled

a guest
Mar 29th, 2015
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.61 KB | None | 0 0
  1. % Newton Raphson Load flow solution
  2. clear all; close all; clc;
  3.  
  4. impmat;
  5.  
  6. iteration = 200; % max iterations
  7. tolerance = 1e-6;
  8.  
  9. n_bus = size(powerdata, 1);
  10.  
  11. error = zeros(n_bus, 1);
  12.  
  13. V = powerdata(:, 3);
  14. delta = powerdata(:, 4);
  15.  
  16.  
  17. P = (powerdata(:, 5) - powerdata(:, 7)) / base_power;
  18. Q = (powerdata(:, 6) - powerdata(:, 8)) / base_power;
  19.  
  20. % converting to r<theta
  21. theta = angle(Y);
  22. Y = abs(Y);
  23.  
  24. P_n = P;
  25. Q_n = Q;
  26.  
  27. n_p = sum(powerdata(:, 2) ~= 1);
  28. n_q = sum(powerdata(:, 2) == 3);
  29.  
  30.  
  31.  
  32. % Init jacobians
  33. J1 = zeros(n_p, n_p);
  34. J2 = zeros(n_p, n_q);
  35. J3 = zeros(n_q, n_p);
  36. J4 = zeros(n_q, n_q);
  37.  
  38. for iter = 1:iteration
  39.  
  40. % Calculate delta P and Q
  41.  
  42. for idx = 1:n_bus
  43. if powerdata(idx, 2) ~= 1
  44. % PV or PQ bus; update P
  45. P_n(idx) = V(idx) * sum(Y(idx, :) .* (V .* cos(theta(idx, :)' - repmat(delta(idx), n_bus, 1) + delta))');
  46. end
  47. if powerdata(idx, 2) == 3
  48. % PQ bus; update P and Q
  49. Q_n(idx) = V(idx) * sum(Y(idx, :) .* (V .* sin(theta(idx, :)' - repmat(delta(idx), n_bus, 1) + delta))');
  50. end
  51. end
  52.  
  53. delta_p_q = [P - P_n; Q - Q_n];
  54.  
  55. error = max(abs(delta_p_q));
  56.  
  57. if error < tolerance
  58. break
  59. end
  60.  
  61. % generate jacobian
  62.  
  63. % J1; P vs delta
  64. for idx = 1:n_p
  65. for jdx = 1:n_p
  66. if idx == jdx
  67. J1(idx, idx) = (V(idx + 1) * sum(Y(idx + 1, :) .* (V .* sin(theta(idx + 1, :)' - repmat(delta(idx + 1), n_bus, 1) + delta))')) - ...
  68. (V(idx + 1) * V(idx + 1) * Y(idx + 1, idx + 1) * sin(theta(idx + 1, idx + 1)));
  69. else
  70. J1(idx, jdx) = -V(idx + 1) * V(jdx + 1) * Y(idx + 1, jdx + 1) * sin(theta(idx + 1, jdx + 1) - delta(idx + 1) + delta(jdx + 1));
  71. end
  72. end
  73. end
  74.  
  75. % J4; Q vs V
  76. for idx = 1:n_q
  77. for jdx = 1:n_q
  78. if idx == jdx
  79. J4(idx, idx) = (-2 * V(idx + 3) * Y(idx + 3, idx + 3) * sin(theta(idx + 3, idx + 3))) - ...
  80. (sum(V' .* (Y(idx + 3, :) .* sin(theta(idx + 3, :)' - repmat(delta(idx + 3), n_bus, 1) + delta)')) - (V(idx + 3) * Y(idx + 3, idx + 3) * sin(theta(idx + 3, idx + 3))));
  81. else
  82. J4(idx, jdx) = -V(idx + 3) * Y(idx + 3, jdx + 3) * sin(theta(idx + 3, jdx + 3) - delta(idx + 3) + delta(jdx + 3));
  83. end
  84. end
  85. end
  86.  
  87. % J2; P vs V
  88. for idx = 1:n_p
  89. for jdx = 1:n_q
  90. if idx == jdx
  91. J2(idx, idx) = 2 * V(idx + 1) * Y(idx + 1, idx + 1) * cos(theta(idx + 1, idx + 1)) + ...
  92. sum(Y(idx, :) .* (V .* cos(theta(idx, :)' - repmat(delta(idx), n_bus, 1) + delta))');
  93. else
  94. J2(idx, jdx) = V(idx + 1) * Y(idx + 1, jdx + 1) * cos(theta(idx + 1, jdx + 1) - delta(idx + 1) + delta(jdx + 1));
  95. end
  96. end
  97. end
  98.  
  99. % J3; Q vs delta
  100. for idx = 1:n_q
  101. for jdx = 1:n_p
  102. if idx == jdx
  103. J3(idx, idx) = (V(idx) * sum(Y(idx, :) .* (V .* cos(theta(idx, :)' - repmat(delta(idx), n_bus, 1) + delta))')) - ...
  104. (V(idx) * V(idx) * Y(idx, idx) * cos(theta(idx, idx) - delta(idx) + delta(jdx)));
  105. else
  106. J3(idx, jdx) = - V(idx) * V(jdx) * Y(idx, jdx) * cos(theta(idx, jdx) - delta(idx) + delta(jdx));
  107. end
  108. end
  109. end
  110.  
  111. J = [J1 J2; J3 J4];
  112. indices = [2, 3, 4, 5, 9, 10];
  113. delta_delta_v = J \ delta_p_q(indices);
  114.  
  115. V(n_p:end, 1) = V(n_p:end, 1) + delta_delta_v(n_p+1:end, 1);
  116. delta(2:end, 1) = delta(2:end, 1) + delta_delta_v(1:n_p, 1);
  117. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement