matlab - 如果条件 Matlab 将不会通过第二个
问题描述
clear;
clc;
%% INPUT DATA
input_data = [200 10.0 0.0095 %C1
240 7.0 0.0070 %C2
200 11.0 0.0090 %C3
220 8.5 0.0090 %C4
220 10.5 0.0080]; %C5
%P1 %P2 %P3 %P4 %P5
loss_data = [0.0015 0 0 0 0
0 0.0014 0 0 0
0 0 -0.0001 0 0
0 0 0 0.0009 0
0 0 0 0 -0.0004];
mwlimits = [ 50 200
100 500
50 150
80 300
50 200];
pd=830; %Power Demand
%%
lambda = input ('Enter initial lambda:')
i=1;
while i <= 6
fprintf('ITERATION %d \n\n', i);
p1=(lambda-input_data(1,2))/(2*(input_data(1,3)+(lambda*loss_data(1,1))));
p2=(lambda-input_data(2,2))/(2*(input_data(2,3)+(lambda*loss_data(2,2))));
p3=(lambda-input_data(3,2))/(2*(input_data(3,3)+(lambda*loss_data(3,3))));
p4=(lambda-input_data(4,2))/(2*(input_data(4,3)+(lambda*loss_data(4,4))));
p5=(lambda-input_data(5,2))/(2*(input_data(5,3)+(lambda*loss_data(5,5))));
fprintf('\tP1: %5.4f\n', p1);
fprintf('\tP2: %5.4f\n', p2);
fprintf('\tP3: %5.4f\n', p3);
fprintf('\tP4: %5.4f\n', p4);
fprintf('\tP5: %5.4f\n\n', p5);
% END OF CHECKING LIMITS %
%VERIFYING IF IT MET THE CONDITIONS%
ploss=(loss_data(1,1)*(p1))+(loss_data(2,2)*(p2))+(loss_data(3,3)*(p3))+(loss_data(4,4)*(p4))+(loss_data(5,5)*(p5));
fprintf('\tPloss: %5.4f\n', ploss);
delta_p=pd+ploss-p1-p2-p3-p4-p5;
fprintf('\tDelta P: %5.4f\n', delta_p);
if (delta_p~=0) %General Case%
summation=((input_data(1,3)+(loss_data(1,1)*input_data(1,2)))/(2*(input_data(1,3)+(lambda*loss_data(1,1)))^2))+((input_data(2,3)+(loss_data(2,2)*input_data(2,2)))/(2*(input_data(2,3)+(lambda*loss_data(2,2)))^2))+((input_data(3,3)+(loss_data(3,3)*input_data(3,2)))/(2*(input_data(3,3)+(lambda*loss_data(3,3)))^2))+((input_data(4,3)+(loss_data(4,4)*input_data(4,2)))/(2*(input_data(4,3)+(lambda*loss_data(4,4)))^2))+((input_data(5,3)+(loss_data(5,5)*input_data(5,2)))/(2*(input_data(5,3)+(lambda*loss_data(5,5)))^2));
fprintf('\tSummation: %5.10f\n', summation);
else if (delta_p==0)&& (p1>mwlimits(1,2)) %Start of P1 random
p1=mwlimits(1,2);
fprintf('\tP1 new: %5.4f', p1);
delta_p=pd+ploss-p1-p2-p3-p4-p5;
summation=((input_data(2,3)+(loss_data(2,2)*input_data(2,2)))/(2*(input_data(2,3)+(lambda*loss_data(2,2)))^2))+((input_data(3,3)+(loss_data(3,3)*input_data(3,2)))/(2*(input_data(3,3)+(lambda*loss_data(3,3)))^2))+((input_data(4,3)+(loss_data(4,4)*input_data(4,2)))/(2*(input_data(4,3)+(lambda*loss_data(4,4)))^2))+((input_data(5,3)+(loss_data(5,5)*input_data(5,2)))/(2*(input_data(5,3)+(lambda*loss_data(5,5)))^2));
fprintf('\tSummation: %5.10f\n', summation);
else if (delta_p==0)&& (p1<mwlimits(1,1))
p1=mwlimits(1,1);
fprintf('\tP1 new: %5.4f', p1);
delta_p=pd+ploss-p1-p2-p3-p4-p5;
summation=((input_data(2,3)+(loss_data(2,2)*input_data(2,2)))/(2*(input_data(2,3)+(lambda*loss_data(2,2)))^2))+((input_data(3,3)+(loss_data(3,3)*input_data(3,2)))/(2*(input_data(3,3)+(lambda*loss_data(3,3)))^2))+((input_data(4,3)+(loss_data(4,4)*input_data(4,2)))/(2*(input_data(4,3)+(lambda*loss_data(4,4)))^2))+((input_data(5,3)+(loss_data(5,5)*input_data(5,2)))/(2*(input_data(5,3)+(lambda*loss_data(5,5)))^2));
fprintf('\tSummation: %5.10f\n', summation);
else if(delta_p==0)&&((p1>mwlimits(1,1))&&(p1<mwlimits(1,2)))
p1=p1;
fprintf('\tP1 new: %5.4f', p1);
delta_p=pd+ploss-p1-p2-p3-p4-p5;
summation=((input_data(1,3)+(loss_data(1,1)*input_data(1,2)))/(2*(input_data(1,3)+(lambda*loss_data(1,1)))^2))+((input_data(2,3)+(loss_data(2,2)*input_data(2,2)))/(2*(input_data(2,3)+(lambda*loss_data(2,2)))^2))+((input_data(3,3)+(loss_data(3,3)*input_data(3,2)))/(2*(input_data(3,3)+(lambda*loss_data(3,3)))^2))+((input_data(4,3)+(loss_data(4,4)*input_data(4,2)))/(2*(input_data(4,3)+(lambda*loss_data(4,4)))^2))+((input_data(5,3)+(loss_data(5,5)*input_data(5,2)))/(2*(input_data(5,3)+(lambda*loss_data(5,5)))^2));
fprintf('\tSummation: %5.10f\n', summation);
end
end
end %End of p1 random
if (delta_p==0)&& (p2>mwlimits(2,2)) %Start of P2 random
p2=mwlimits(2,2);
fprintf('\tP2 new: %5.4f', p2);
delta_p=pd+ploss-p1-p2-p3-p4-p5;
summation=((input_data(1,3)+(loss_data(1,1)*input_data(1,2)))/(2*(input_data(1,3)+(lambda*loss_data(1,1)))^2))+((input_data(3,3)+(loss_data(3,3)*input_data(3,2)))/(2*(input_data(3,3)+(lambda*loss_data(3,3)))^2))+((input_data(4,3)+(loss_data(4,4)*input_data(4,2)))/(2*(input_data(4,3)+(lambda*loss_data(4,4)))^2))+((input_data(5,3)+(loss_data(5,5)*input_data(5,2)))/(2*(input_data(5,3)+(lambda*loss_data(5,5)))^2));
fprintf('\tSummation: %5.10f\n', summation);
else if (delta_p==0)&& (p2<mwlimits(2,1))
p2=mwlimits(2,1);
fprintf('\tP2 new: %5.4f', p2);
delta_p=pd+ploss-p1-p2-p3-p4-p5;
summation=((input_data(1,3)+(loss_data(1,1)*input_data(1,2)))/(2*(input_data(1,3)+(lambda*loss_data(1,1)))^2))+((input_data(3,3)+(loss_data(3,3)*input_data(3,2)))/(2*(input_data(3,3)+(lambda*loss_data(3,3)))^2))+((input_data(4,3)+(loss_data(4,4)*input_data(4,2)))/(2*(input_data(4,3)+(lambda*loss_data(4,4)))^2))+((input_data(5,3)+(loss_data(5,5)*input_data(5,2)))/(2*(input_data(5,3)+(lambda*loss_data(5,5)))^2));
fprintf('\tSummation: %5.10f\n', summation);
else if(delta_p==0)&&((p2>mwlimits(2,1))&&(p2<mwlimits(2,2)))
p2=p2;
fprintf('\tP2 new: %5.4f', p2);
delta_p=pd+ploss-p1-p2-p3-p4-p5;
summation=((input_data(1,3)+(loss_data(1,1)*input_data(1,2)))/(2*(input_data(1,3)+(lambda*loss_data(1,1)))^2))+((input_data(2,3)+(loss_data(2,2)*input_data(2,2)))/(2*(input_data(2,3)+(lambda*loss_data(2,2)))^2))+((input_data(3,3)+(loss_data(3,3)*input_data(3,2)))/(2*(input_data(3,3)+(lambda*loss_data(3,3)))^2))+((input_data(4,3)+(loss_data(4,4)*input_data(4,2)))/(2*(input_data(4,3)+(lambda*loss_data(4,4)))^2))+((input_data(5,3)+(loss_data(5,5)*input_data(5,2)))/(2*(input_data(5,3)+(lambda*loss_data(5,5)))^2));
fprintf('\tSummation: %5.10f\n', summation);
end
end
end %End of p2 random
if (delta_p==0)&& (p5>mwlimits(5,2)) %Start of P5 random
p5=mwlimits(5,2);
fprintf('\tP5 new: %5.4f', p5);
delta_p=pd+ploss-p1-p2-p3-p4-p5;
summation=((input_data(1,3)+(loss_data(1,1)*input_data(1,2)))/(2*(input_data(1,3)+(lambda*loss_data(1,1)))^2))+((input_data(2,3)+(loss_data(2,2)*input_data(2,2)))/(2*(input_data(2,3)+(lambda*loss_data(2,2)))^2))+((input_data(3,3)+(loss_data(3,3)*input_data(3,2)))/(2*(input_data(3,3)+(lambda*loss_data(3,3)))^2))+((input_data(4,3)+(loss_data(4,4)*input_data(4,2)))/(2*(input_data(4,3)+(lambda*loss_data(4,4)))^2));
fprintf('\tSummation: %5.10f\n', summation);
else if (delta_p==0)&& (p5<mwlimits(5,1))
p5=mwlimits(5,1);
fprintf('\tP5 new: %5.4f', p5);
delta_p=pd+ploss-p1-p2-p3-p4-p5;
summation=((input_data(1,3)+(loss_data(1,1)*input_data(1,2)))/(2*(input_data(1,3)+(lambda*loss_data(1,1)))^2))+((input_data(2,3)+(loss_data(2,2)*input_data(2,2)))/(2*(input_data(2,3)+(lambda*loss_data(2,2)))^2))+((input_data(3,3)+(loss_data(3,3)*input_data(3,2)))/(2*(input_data(3,3)+(lambda*loss_data(3,3)))^2))+((input_data(4,3)+(loss_data(4,4)*input_data(4,2)))/(2*(input_data(4,3)+(lambda*loss_data(4,4)))^2));
fprintf('\tSummation: %5.10f\n', summation);
else if(delta_p==0)&&((p5>mwlimits(5,1))&&(p2<mwlimits(5,2)))
p5=p5;
fprintf('\tP5 new: %5.4f', p5);
delta_p=pd+ploss-p1-p2-p3-p4-p5;
summation=((input_data(1,3)+(loss_data(1,1)*input_data(1,2)))/(2*(input_data(1,3)+(lambda*loss_data(1,1)))^2))+((input_data(2,3)+(loss_data(2,2)*input_data(2,2)))/(2*(input_data(2,3)+(lambda*loss_data(2,2)))^2))+((input_data(3,3)+(loss_data(3,3)*input_data(3,2)))/(2*(input_data(3,3)+(lambda*loss_data(3,3)))^2))+((input_data(4,3)+(loss_data(4,4)*input_data(4,2)))/(2*(input_data(4,3)+(lambda*loss_data(4,4)))^2))+((input_data(5,3)+(loss_data(5,5)*input_data(5,2)))/(2*(input_data(5,3)+(lambda*loss_data(5,5)))^2));
fprintf('\tSummation: %5.10f\n', summation);
end
end
end %End of p5 random
end
delta_lambda= delta_p/summation;
fprintf('\tDelta Lambda: %5.4f\n', delta_lambda);
lambda= lambda+delta_lambda;
fprintf('The new lambda =');disp (lambda);
i=i+1;
end
谁能帮我确定为什么它会跳过第二个 else-if 语句>或者为什么它会跳过 P5 的更新值?非常感谢!我真的很困惑为什么它不能通过第二个条件。我真的需要这个工作,但我不明白为什么会这样。这实际上是经济调度问题,我试图在限制范围内更新/挂钩 P5 的值。
解决方案
推荐阅读
- python-3.x - numpy中的任何剪切功能?
- selenium-webdriver - 当数据集包含不特定于此测试用例的数据时,如何将 dataprovider 传递给 testNG 中的任何测试
- html - 滚动条包含刷新后属于网页的内容
- sql - How to to get maximum sequence number in SQL
- r - 在 r 中创建二元运算符
- swift - iOS - 远程通知不起作用
- macos - 作曲家安装包的版本冲突导致问题
- php - 创建关系表或将序列化数据存储在列中?
- java - Android Kotlin(初学者) - 使用 File() 和从 ACTION_GET_CONTENT 返回的 Uri
- php - Python PHP equivalent