yalmip('clear')
clear all;
%data
W=3;
TL=70;
TH=74;
C=3.410^7;
R=1.310^-3;
Toa=80;
qx=[20 20 20 20 22 24 25 26 26 27 28 28 29 30 30 29 29 28 28 26 24 24 22 21];
Cpa=1.004
Tb=72;%期望温度
TT=[];%室内温度
TSA=[];%送风温度
Ma=[];%空气流速
for i=1:3600:86400;
constrains=[];
objective=0;
ma=sdpvar(W,1);%空气流速
Tsa=sdpvar(W,1);%送风温度
T=sdpvar(W+1,1);%室内温度
constrains=[constrains,T(1)==Tb];
for k=1:W;
objective=objective+abs(T(k)-Tb);
constrains=[constrains, TL<=T(k)<=TH];%温度在最高最低之间
constrains=[constrains, T(k+1)==(1-(1/C)*((1/R)+ma(k)))*T(k)+1/C*(Toa/R+qx+ma(k)*Tsa(k)*Cpa)];%温度离散公式
constrains=[constrains, 1.6<=ma(k)<=2.6];%ma控制在1.6-2.6之间
constrains=[constrains, 50<=Tsa(k)<=60];%Tsa控制在50-60之间
end
ops=sdpsettings
ops.ipopt.verbose=2
result=optimize(constrains,objective);
value(ma(1));
value(Tsa(1));
Ma=[Ma,value(ma(1))];
TSA=[TSA,value(Tsa(1))];
TT=[TT,T];
T(i+1)==(1-1/C*(1/R+value(ma(1))))*T(i)+1/C*(Toa/R+qx+value(ma(1))*Cpa*value(Tsa(1)));
end
figure,
plot(TT);
axis([0 50 0 50]);
hold off;
这个是代码 为什么一运行就显示索引超出数组范围,请老哥给看一下哪里不对谢谢