function [Exergeconomic Ztotal]=CGAM_model_2(v)
bd=[16 0.9 0.92 1000 1550];
bu=[6 0.6 0.6 700 1200];
Exergeconomic = [];
Ztotal = [];
Num = size(v,1);
for i=1:1:Num
r_cp=v(i,1);
efficiency_ac=v(i,2);
efficiency_gt=v(i,3);
T3=v(i,4);
T4=v(i,5);
%initialization
p0=1.013;p1=1.013;p5=1.099;p6=1.066;p7=1.013;p8=20;p8p=20;p9=20;
T0=298.15;T1=298.15;T8=298.15;T8p=470.52;T9=485.52;
Wnet=30000;
delta_Pap=0.05;delta_Pcb=0.05;efficiency_cb=0.98;
Cpa=1.004;Cpg=1.17;
r_air=1.4;r_gas=1.33;
LHV=50000;e_fuel=51850;
Msteam=14;
h98=2690;
h98p=1956;
e98=910;
p_fuel=0.000004;
% Thermodynamic model
T2=T1*(1+ (r_cp^((r_air-1)/r_air)-1)/efficiency_ac);
p2=r_cp*p1;
p3=(1-delta_Pap)*p2;
p4=(1-delta_Pcb)*p3;
T5=T4*(1-efficiency_gt*(1-(p4/p5)^((1-r_gas)/r_gas)));
T6=T5-(Cpa*(T3-T2)*(Cpg*(T4-T0)-efficiency_cb*LHV))/(Cpg*(Cpa*(T3-T0)-efficiency_cb*LHV));
Mgas=Wnet/((Cpg*(T4-T5))-Cpa*(T2-T1)*((Cpg*(T4-T0)-efficiency_cb*LHV)/(Cpa*(T3-T0)-efficiency_cb*LHV)));
Mair=Mgas*(Cpg*(T4-T0)-efficiency_cb*LHV)/(Cpa*(T3-T0)-efficiency_cb*LHV);
Mfuel=Mgas-Mair;
T7=T6-Msteam*h98/(Mgas*Cpg);
T7p=T6-Msteam*h98p/(Mgas*Cpg);
delta_Tpinch=T7p-T9;
Wac=Cpa*Mair*(T2-T1);
Wgt=Wac+Wnet;
% Ecomomic model
Zcp=(39.5*Mair)/(0.9-efficiency_ac)*r_cp*log(r_cp);
Zap=2290*(Mgas*Cpg*(T5-T6)/(0.018*(T6+T3-T2-T5)/log((T6-T2)/(T5-T3))))^0.6;
Zcb=(25.6*Mair/(0.995-p4/p3)*(1+exp(0.0181*T4-26.4)));
Zgt=(266.3*Mgas/(0.92-efficiency_gt))*log(p4/p5)*(1+exp(0.0361*T4-54.4));
Zrb=11820*Msteam+658*Mgas^1.2+3650*((Msteam*734/(T7-T8-T7p+T8p)*log((T7-T8)/(T7p-T8p)))^0.8+(Msteam*h98p*log((T7p-T9)/(T6-T9))/(T7p-T6))^0.8);
Zi=(Zcp+Zap+Zcb+Zgt+Zrb)*0.182/(3600*8000)*1.06;
Cfuel=p_fuel*Mfuel*LHV;
ztotal=Cfuel+Zi;
exergeconomic=-(Wnet+Msteam*910)/(Mfuel*e_fuel);
%罚因子
finalfactor = 10;
%罚函数
exergeconomic = exergeconomic + finalfactor * [max(-delta_Tpinch,0) + max(-Mgas,0) + max(T3 - T5,0) + max(T2 - T6,0) + max(T9 + delta_Tpinch - T6,0) + max(T8 - delta_Tpinch - T7,0) + max(exergeconomic,0)];
if (imag(exergeconomic) ~= 0 || real(exergeconomic) >= 0 || abs(real(exergeconomic)) >= 1) exergeconomic = rand(); end
if (imag(ztotal) ~= 0 || real(ztotal) < 0) ztotal = 100 + 100*rand(); end
Exergeconomic=[Exergeconomic;exergeconomic];
Ztotal=[Ztotal;ztotal];
end
end
评论5