Qsched.m
上传用户:eighthdate
上传日期:2014-05-24
资源大小:270k
文件大小:3k
源码类别:

其他行业

开发平台:

Matlab

  1. % This program solves the coordination equation for economic scheduling
  2. % of generation.  The program requires the total load demand (Qdt), the
  3. % cost function matrix (cost) and the gen. mwlimits.  If mwlimits is not
  4. % defined the scheduling is obtained with no generation limits. If the
  5. % basemva and any of the loss coefficients B, B0 and B00 are specified
  6. % optimum dispatch is obtained including the system losses.
  7. %
  8. % copyright (c) 1998 by H. Saadat
  9. clear Qgg
  10. if exist('Qdt')~=1
  11. Qdt = input('Enter total reactive power demand Qdt = ');
  12. else, end
  13. if exist('cost')~=1
  14. cost = input('Enter the cost matrix, cost = ');
  15. else, end
  16. ngg = length(cost(:,1));
  17. if exist('vrlimits')~=1
  18. vrlimits= [-inf*ones(ngg, 1), inf*ones(ngg,1)];
  19. else, end
  20. if exist('basemva')~=1
  21. basemva=100;
  22. else, end
  23. clear Qgg
  24. Du=D/basemva; D00u=basemva*D00;
  25. Gu=G/basemva; G00u=basemva*D00;
  26. Qmin=vrlimits(:,1); Qmax=vrlimits(:,2);
  27. wgt=ones(1, ngg);
  28. if Qdt > sum(Qmax)
  29. Error1 = ['Total demand is greater than the total sum of maximum reactive generation.'
  30.           'No feasible solution.  Reduce demand or correct generator limits.         '];
  31. disp(Error1), return
  32. elseif Qdt < sum(Qmin)
  33. Error2 = ['Total demand is less than the total sum of minimum reactive generation.   '
  34.           'No feasible solution. Increase demand or correct generator limits.        '];
  35. disp(Error2), return
  36. else, end
  37. iter = 0;                                  % Iteration counter
  38. DelQ = 10;              % Error in DelQ is set to a high value
  39. clc
  40. E=Du;
  41. if exist('kapa')~=1
  42. kapa=max(beta);
  43. end
  44. while abs(DelQ)  >= 0.0001              % Test for convergence
  45. iter = iter + 1;                           % No. of iterations
  46. for k=1:ngg
  47.     if wgt(k) == 1
  48.        E(k,k) = Gu(k)+ kapa*Du(k,k);
  49.        d(k) = 1/2*(kapa*(1 - D0(k)- G0(k));
  50.        else, E(k,k)=1;  d(k) = 0;
  51.             for m=1:ngg
  52.                if m~=k
  53.                E(k,m)=0;
  54.                else,end
  55.              end
  56.        end
  57. end
  58. QQ=Ed';
  59. for k=1:ngg
  60. if wgt(k)==1
  61.    Qgg(k) = QQ(k);
  62.    else,end
  63. end
  64. Qgt = sum(Qgg);
  65. QL=Qgg*Du*Qgg'+D0*Qgg'+D00u;
  66. DelQ =Qdt+QL -Qgt;                                   %Residual
  67. for k = 1:ngg
  68.    if Qgg(k) > Qmax(k) & abs(DelQ) <=0.001,
  69.    Qgg(k) = Qmax(k); wgt(k) = 0;
  70.    elseif Qgg(k) < Qmin(k) & abs(DelQ) <= 0.001
  71.    Qgg(k) = Qmin(k); wgt(k) = 0;
  72.    else, end
  73. end
  74. QL=Qgg*Du*Qgg'+D0*Qgg'+D00u;
  75. DelQ =Qdt +QL - sum(Qgg);                              %Residual
  76.   for k=1:ngg
  77.   BQ = 0;
  78.      for m=1:ngg
  79.          if m~=k
  80.             BQ = BQ + Du(k,m)*Qgg(m);
  81.             else, end
  82.      end
  83.   grad(k)=(gama(k)*(1-D0(k))+Du(k,k)*beta(k)-2*gama(k)*BQ)/(2*(gama(k)+kapa*Du(k,k))^2);
  84.   end
  85. sumgrad=wgt*grad';
  86. Dekapa = DelQ/sumgrad;                 % Change in variable
  87. kapa = kapa + Dekapa;              % Successive solution
  88. end
  89. fprintf('Incremental cost of delivered power (system kapa) = %9.6f n', kapa)
  90. fprintf('Optimal scheduking of reactive Generation:nn')
  91. disp(Qgg')
  92. %fprintf('Total system reactive power loss = %g MW nn', QL)
  93. n=0;
  94. if exist('nbus')==1 | exist('busdata')==1
  95.   for k=1:nbus
  96.      if kb(k)~=0
  97.         n=n+1;
  98.         busdata(k,8)=Qgg(n);
  99.      else , end
  100.   end
  101.   for k=1:nbus
  102.       if kb(k)==1
  103.       dqslack = abs(Qg(k)-busdata(k,8))/basemva;
  104.       fprintf('Absolute value of the slack bus reactive power mismatch, dpslack = %8.4f p.u. n', dqslack)
  105.       else, end
  106.   end
  107. else, end
  108. clear BQ d DelQ Dekapa E QQ grad sumgrad wgt Du D00u D D0 D00