Программа оптимизации теплообменного аппарата
Для разработки предложенной программы была использована среда PascalABC совместно с офисным пакетом Microsoft Excel 2010. Текст программы Programsimone;
Constdx=0.0001;
Q=10000000; //Производительность Tv1=64; //Начальная температура воды Tv2=138; //Конечная температура воды Tn=175.4; //Температура пара R_zagr=0.00015; //Степень загрязнения teta=0.98; //Коэффициент тепловых потерь Lam_st=43; //Коэффициент теплопроводности Delta_st=0.0025; //Толщина стенки
//Ограничения dmax=10; dmin=0.00000001; Wmax=10; Wmin=0.0000001;
//Параметры стенки Pr_c=1.278; Kw=0.0001; Tc=138.2; Lam_c=0.685; mu_c=204.106/1000000; L_tr=3;
//Параметры воды Ro=957.66; Cp=4221; Lam_v=0.6832; v=0.293/1000000; Pr=1.735;
//Параметры пара r1=2030.4; mu_s=157.5/1000000; Lambda_s=0.676; Pr_s=1.023; Ro_s=4.66; w11=0.162;
//Цена Cena_F=2000; Cena_ElEn=5;
v_s=0.173/1000000; dT=37.7; H1=3;
typearray2D = array of array ofreal; Varx,x0,df,g :array ofreal; d2f:array2D; eps,h,grad,s,r,fc,P,c :real; i,j,n,n1,k,l :integer; Alfa_vod,K_tp,F_ta,dP,N_nasosa,Zatr_F, Zatr_ElEn,Delta_t,G_vod,Lambda,Alfa_para,a,an,eps1,Q_ta,HdTkr: real;
Functionbarier(g:array ofreal): real; labelstop; Vari:integer; s:real; Begin s:=0; barier:=1e30; Fori:=1 ton1 do ifg[i]<0 thens:=s+1/g[i] else gotostop; barier:=-r*s; stop: end; Functionf(x: array ofreal):real; Begin eps1:=Power((Power(Lam_c/Lambda_s ,3)*(mu_c/mu_s)),0.125);
an:=0.725*Power( ( Power(Lam_v,3)*9.81*(Ro-Ro_s)*r1*1000)/(v*x[1]*(Tn-Tc)) ,0.25 )*eps1;
a:=25.7*Power((Ro_s*w11*w11)/(9.81*Ro*x[1]),0.08)*Power((an*x[1]/Lam_v),(-0.5))*an;
Alfa_para:=(a*0.84)/Power(10,0.07);
Delta_t:=((Tn-Tv1)-(Tn-Tv2))/ln((Tn-Tv1)/(Tn-Tv2));
Alfa_vod:=(0.021*Power((x[2]*x[1]/v),0.8)*Power(Pr,0.43)*Power((Pr/Pr_c),0.25)*Lam_v)/x[1];
K_tp:=1/(1/Alfa_para+Delta_st/Lam_st+1/Alfa_vod+R_zagr);
Q_ta:=Q*teta;
F_ta:=Q_ta/(K_tp*Delta_t);
Lambda:=0.11*Power((Kw/x[1])+(v*68/x[2]*x[1]),0.25);
dP:=Lambda*(L_tr/x[1])*(x[2]*x[2]/2)*Ro+7.5*(Ro*x[2]*x[2]/2);
G_vod:=Q_ta/(Cp*(Tv2-Tv1));
N_nasosa:=(G_vod*dP)/(Ro*0.85);
Zatr_F:=F_ta*Cena_F;
Zatr_ElEn:=(N_nasosa*8400/1000)*Cena_ElEn;
fc:=Zatr_F+Zatr_ElEn;
//Ограничения
g[1]:=-dmax+x[1]; g[2]:=-x[1]+dmin; g[3]:=-Wmax+x[2]; g[4]:=-x[2]+Wmin;
P:=barier(g); F:=fc+P; End;
//Процедураобращенияматрицы Procedureinvert(n,q: integer; matr1:array2D; varmatr: array2D); labelM1,M2; Var a:array of array ofreal; i,j,k,m : integer; t :real; Begin SetLength(a, n + 1); Fori := low(a) tohigh(a) do SetLength(a[i], 2*(n+1));
m:=2*n; q:=0; Fori:=1 ton do Forj:= 1 tom do Ifj<=n thena[i,j]:=matr1[i,j] else Ifj=n+i thena[i,j]:=1.0 elsea[i,j]:=0; Fori:=1 ton do Begink:=i; M1: ifa[k,i]=0 then Beginq:= 1; ifk<n thenk:=k+1 else gotoM2; gotoM1; End; Ifq=1 then Forj:=1 tom do Begin t:=a[k,j]; a[k,j]:=a[i,j]; a[i,j]:=t End; Forj:=m downtoi doa[i,j]:=a[i,j]/a[i,i]; Fork:= 1 ton do Ifk<>i then Forj:=m downto1 do a[k,j]:=a[k,j]-a[i,j]*a[k,i]; End; { i } q:=0; Fori:= 1 ton do Forj:= 1 ton domatr[i,j]:=a[i,j+n]; M2: End; {invert} // Процедура вычисления координат вектора градиента и формирования матрицы вторых производных ProcedureFor_Mat_d2f(n:integer; vargrad:real); Var i,j :integer; s,f0: real; Begin //Расчет первых производных f0:=f(x); s:=0; Fori:= 1 ton do begin x[i]:=x[i]+dx; df[i]:=(f(x)-f0)/dx; s:=sqr(df[i]); x[i]:=x[i]-dx; End; grad:=sqrt(s); //Расчет вторых производных Fori:=1 ton do Begin s:=-2*f(x); x[i]:=x[i]+dx; s:=s+f(x); x[i]:=x[i]-2*dx; s:=s+f(x); x[i]:=x[i]+dx; d2f[i,i]:=s/sqr(dx); End; //Расчет смешанных производных Fori:= 1 ton-1 do Forj:=i+1 ton do Begin s:=f(x); // 1 x[i]:=x[i]-dx; x[j]:=x[j]-dx; s:=s+f(x); //4 x[j]:=x[j]+dx; s:=s-f(x); //2 x[i]:=x[i]+dx; x[j]:=x[j]-dx; s:=s-f(x); //3 x[j]:=x[j]+dx; d2f[i,j]:=s/sqr(dx); d2f[j,i]:=d2f[i,j]; End; End; // For_Mat_d2f
Proceduretek_koord; Vari,j :integer; s: real; Begin Repeat For_Mat_d2f(n,grad); invert(n,q,d2f,d2f); Ifq = 1 then Begin writeln('Определительравеннулю'); exit{goto stop} End; Fori:= 1 ton do Begin s:=0; Forj:= 1 ton do s:=s+d2f[i,j]*df[j]; x[i]:=x[i]-s; End; Untilgrad<eps; End; // tek_koord
Procedureprint; Vari : integer; Begin Writeln('Итерация ',k, ' Параметрштрафаr=',r: 12:8); Fori:=1 ton do Begin Writeln('x0[',i,'] = ',x0[i], 'x[',i,'] = ',x[i]); x0[i]:=x[i] End; writeln('Функцияштрафа = ',P); writeln End;
Begin Writeln('Исходныеданные'); Writeln; Write('Введите размерность задачи оптимизации n= '); Readln(n); Write('Введите точность вычислений eps= '); Readln(eps); Writeln('Введите начальные значения переменных'); SetLength(x,n + 1); SetLength(x0,n+1); SetLength(df,n+1); SetLength(g,n + 3); SetLength(d2f, n + 1); Fori := low(d2f) tohigh(d2f) do SetLength(d2f[i], n+1);
Fori:= 1 ton do Begin Write('x[',i,']='); Readln(x[i]); End; Write('Введите число ограничений = '); Readln(n1); Write('Введите начальное значение параметра штрафа r='); Readln(r); Write('Введите число уменьшения параметра штрафа с='); Readln(c); Writeln; k:=0; Repeat k:=k+1; tek_koord; print; r:=r/c;
Untilabs(P)<0.01; Writeln; Writeln('Peзyльтaтыоптимизации'); Writeln('c использованием обратной штрафной функции:'); Writeln; Fori:= 1 ton dowriteln('x[',i,'] = ',x[i]); Writeln; Writeln('Значение функции цели = ',f(x)); Writeln; Writeln('Значение функции цели = ',f(x)); Writeln; Writeln('Значение функции цели = ',f(x)); Writeln; Writeln('Оптимальные значения '); Writeln; Writeln('диаметр d = ',x[1]:2:3,' м'); Writeln; Writeln('скоростьw = ',x[2]:2:3,' м3/с'); Writeln; Writeln('ЗатратыЗ= ',f(x):8:3,' руб'); Writeln; Writeln('ПлощадьтеплообменногоаппаратаF= ',F_ta:5:3,' м2'); Readln; End. Результаты оптимизации данной программы быть представлены на рисунке 1.2. Рис.1.2. - Результаты оптимизации теплообменного аппарата З=f(dвн,w)
Рис.1.3. – Изменение затрат В программе Surfer 13 был построен график зависимости скорости в теплообменном аппарате от диаметра его труб. Рис 1.4. – Зависимость диаметра от скорости теплоносителя с ограничениями Из результатов оптимизации функции затрат для рассматриваемого аппарата видно, что минимум (З=140607.015 руб) достигается при dвн=17.915 мм, F=63.477 и скорости теплоносителя в трубах w=1.185 м/с. По каталогу был выбран стандартный теплообменный аппарат, тип ихарактеристики данного аппарата представлены в таблице 1.1:
Таблица 1.1. - Характеристики теплообменного аппарата
Популярное: Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние... Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (554)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |