2011-04-08 43 views
0
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 
+0

解释你所得到的错误会有所帮助。 – gnovice 2011-04-08 17:04:16

回答

1

您的循环显示为for j=1:1。那不应该是for j=1:24

+0

在我将它改为j = 1:24 – user694666 2011-04-08 16:38:27

+1

@ user694666后,它仍然无法工作,请尝试缩小您的问题范围。你的程序混淆了命名变量而没有评论 - 如果你纠正了这些问题,你可能会自己发现错误。 – 2011-04-08 16:44:48

0

你的问题是你的while循环是一个无限循环。第一个while循环中的前5行是常量,因此x(出现为437.5)始终大于e1,因此您的循环永远不会终止。此外,我没有看到循环索引在任何地方使用,所以基本上,如果你循环或不循环都没有区别。

我猜你已经混淆了太多的非描述性变量。我第二个卡尔的建议是,你试图在命名和你的代码流程中引入一些命令,然后你会看到自己如何解决它(提示:我已经告诉你在哪里看)。

相关问题