что не так с кодом, пожалуйста, помогите мне. я хочу отобразить результат с j = 1 до j = 24 - PullRequest
0 голосов
/ 08 апреля 2011
lambda0 = 9.6;
gamma0  = 0.0016;
Pload = 900;
nj=1;
AvW = 32e6;
t = 12;
%thermal plant%%%
ath = 0.002;
bth = 8;
gamth = 1200;
cth = 0;
Pth0 = (lambda0 - (nj*bth))/((2*nj*ath)-(2*cth*lambda0));
%%%%%hydro plant%%%%%
ah = 6000;
bh = 100000;
ch = 100;
Ph0  = (lambda0 - (nj*ah*gamma0))/(2*lambda0*ch); 
Tl = 0.0000045;



%%%%%%%%%%%lambda%%%%%%%%%%%%%%%%%%%%%%
j=1;
for j=1:24

  x = Pload - Ph0 - Pth0;

  e1   = 0.1;

  while x > e1

      lambda = lambda0 + 0.25;
      Pth    = (lambda - (nj*bth))/((2*nj*ath)-(2*cth*lambda));
      Ph     = (lambda - (nj*ah*gamma0))/(2*lambda*ch);
      Ploss  = 0.0000045 * Ph^2; 
      x = Pload + Ploss - Ph - Pth;

      if x < e1
      lambda = lambda0;
      Pth    = (lambda - (nj*bth))/((2*nj*ath)-(2*cth*lambda));
      Ph     = (lambda - (nj*ah*gamma0))/(2*lambda*ch);
      Ploss  = 0.0000045 * Ph^2;
      end 

  W = bth + ath*Ph;
  fprintf('W=%.3f',W);
  x = Pload + Ploss - Ph - Pth; 
  e2 = 50 ;
  dW = W - AvW; 
  end 
end
 while dW > e2

 lambda = (nj *(gamma0*ah)-(2*ath*bth))/((2*cth*Pth)-(2*Tl*Ph));
 x = Pload-Ph-Pth;
 while x(1)> e1

     lambda = lambda + 0.25;
     gamma  = gamma0 + 0.00001;
     Pth    = (lambda - (nj*bth))/((2*nj*ath)-(2*cth*lambda));
     Ph     = (lambda - (nj*ah*gam))/(2*lambda*ch);
     Ploss  = 0.0000045 * Ph^2; 
     x      = Pload + Ploss - Ph - Pth;

     if x(1)< e1
     lambda = lambda0;
     Pth    = (lambda - (nj*bth))/((2*nj*ath)-(2*cth*lambda));
     Ph     = (lambda - (nj*ah*gamma))/(2*lambda*ch);
     Ploss  = 0.0000045 * Ph^2;  
     x      = Pload + Ploss - Ph - Pth;
     W      = bth + ath*Ph;
     fprintf('w=%.3f',W);
     end
 end
  tot = W * t ;

 if e2 > tot
  fprintf('\t%.3f',lambda);
  fprintf('\t%.3f',Pth);
  fprintf('\t%.3f',Ph);
  fprintf('\t%.3f',gamma);
  fprintf('\n');
 end
 end 

Ответы [ 2 ]

1 голос
/ 08 апреля 2011

Ваш цикл говорит for j=1:1. Разве это не должно быть for j=1:24?

0 голосов
/ 08 апреля 2011

Ваша проблема в том, что ваш цикл while представляет собой бесконечный цикл. Первые 5 строк в первом цикле while являются константами, поэтому x, который равен 437,5, всегда больше e1, поэтому ваш цикл никогда не завершится. Кроме того, я не вижу, чтобы где-либо использовался индекс цикла, поэтому, по сути, не имеет значения, зацикливаете ли вы его или нет.

Я предполагаю, что вы перепутали себя со слишком многими неописательными переменными. Второе предложение Карла, чтобы вы попытались навести порядок в именовании и в потоке вашего кода, а затем вы сами увидите, как это исправить (подсказка: я уже сказал вам, где искать).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...