Построение математической модели реактора полого типа для синтеза хлористого этила

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Менеджмент
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    790,67 Кб
  • Опубликовано:
    2013-05-16
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Построение математической модели реактора полого типа для синтеза хлористого этила

Министерство общего и профессионального образования РФ

Тамбовский государственный технический университет

Кафедра: САПР










Курсовая работа

по дисциплине

«Модели и методы анализа проектных решений»

Вариант №43


Выполнил: студент гр. ССП-42 Яковлев В.А.






Тамбов 2012

ВВЕДЕНИЕ

Найти методом возможных направлений Зойтендейка температуру в реакторе полого типа синтеза хлористого этила и объем реактора, при которых концентрация хлористого этила на выходе будет максимальной:

C2H4 + HCl  C2H5Cl,

a1=2, a2=1, v=0.02 м3/c, А1=1.2, Е1=8480 Дж/моль, A2=90, E2=29000 Дж/моль, Сэтил вх=45%, СHCl вх=40%, с=1.45 кг/м3, 100≤T≤250оС, 1≤V≤10 м3.

При имитационном моделировании выходная координата СC2H5Cl вых, входная координата Cэтилен вх, М0 = 23 моль/м3, К=20ехр(-0.093dt).

Приняты следующие обозначения: б - порядок реакции; А, Е - предэкспоненциальный множитель и энергия активации уравнения Аррениуса для вычисления константы скорости реакции; с - средняя плотность реакционной среды; m -массовый расход реакционной среды через аппарат; Сi - концентрация i-го компонента реакционной среды; V - объем; Т - температура реакционной среды; M0 - математическое ожидание входной координаты; K - корреляционная функция входной координаты; dt - аргумент корреляционной функции, которая показывает вероятностную связь значений случайного процесса, отстоящих на интервал dt.

1. ОБЪЕКТ ПРОЕКТИРОВАНИЯ И ЕГО ОСОБЕННОСТИ


Проектируемый объект представляет собой реактор полого типа, в котором происходит синтез хлористого этила , который описывается математической моделью, включающую «идеальное смешение».

Это предполагает, что любой элемент объема реагирующей смеси мгновенно перемешивается со всей средой, содержащейся в реакторе (скорость циркуляционных движений по сечению и оси аппарата во много раз больше, чем линейная скорость по оси). Реактор полого типа обычно снабжен каким-либо перемешивающим устройством и характеризуется постоянством концентрации реагирующих веществ во всем объеме реакторов в данный момент времени вследствие практически мгновенного смешения реагирующих веществ в реакционном объеме.

Схематическое изображение некоторых типов реакторов полого типа представлено на рисунке 1.1.

Рисунок 1.1 - Схема реактора полого типа: а - с насадкой-теплоносителем; б - с псевдоожиженным слоем теплоносителя; в - с предварительным подогревом смеси

На вход объекта проектирования поступают этилен (С2H4) и хлористый водород (HCl). Компоненты полученной газовой смеси посредством перемешивания и температуры вступают между собой в обратимую реакцию. За счёт более высокой скорости протекания прямой реакции в сторону образования хлористого этила на выходе мы получаем конечный продукт синтеза и остатки исходных реагентов. Хлористый этилен является превосходным растворителем жиров, масел, поливинилхлорида, льняного масла, пиретрума и др.

Для химической промышленности хлористый этилен имеет большое значение, как промежуточный продукт. Химическим или каталитическим дегидрохлорированием из хлористого этилена получают хлористый винил, полимеризуемый затем в важнейшие искусственные вещества.

Реакцией хлористого этилена с тетрасульфидом натрия получают тиокол, продукт конденсации которого содержит 82% серы и может вулканизироваться нагреванием с окисью цинка примерно при 140°.

Сформулируем задачу оптимального проектирования:

Найти значение температуры и объёма реактора, при которых выходная концентрация хлористого этила была максимальной при наложенных на параметры следующих ограничений:

;

В качестве критерия оптимизации выступает концентрация хлористого этила (находится максимум), а в качестве варьируемых переменных - температура и объём реактора, меняющиеся в указанных пределах.

Для связи варьируемых переменных и критерия оптимизации необходимо найти систему уравнений математической модели.

2. МАТЕМАТИЧЕСКАЯ МОДЕЛЬ ОБЪЕКТА

 

.1 Структурная схема объекта и принятие допущений


Структурная схема объекта представлена на рисунке 1.2.

Рисунок 1.2 - Структурная схема объекта.

При составлении математической модели были приняты следующие допущения:

.        В реакторе установлен режим «идеальное вытеснение»

При этом, можно сделать вывод, что в математической модели присутствуют уравнение гидродинамики и уравнения химической кинетики.

 

.2 Составление уравнений математической модели



Введем следующие обозначения:

Составим кинематические уравнения для каждого вещества:

   (1.1)

Составим уравнения гидродинамики для каждого вещества:

   (1.2)

Объединив системы (1.1) и (1.2) получим:


Здесь k - константа скорости реакции. Она находится из уравнения Аррениуса: ,  - заданные константы скоростей реакций.

Начальные условия:


где входные данные переводятся из процентов в моль/м3 по следующим формулам:


где  - входные концентрации реагентов в процентах;

;

;

Среднее время пребывания в ячейке рассчитывается по формуле:


2.3 Параметры уравнений


Константы, применяемые в математической модели:

R = 8.31 Дж/моль ∙ K;

; .

Параметры, характеризующие физико-химические свойства веществ:

А1=1,2;

А2=90;

Е1 = 8480 Дж/моль;

Е2 = 29000 Дж/моль;

r = 1,45 кг/м3;

v = 0,02 м3/с;

.

Конструкционные параметры:

.4 Решение уравнений математической модели

Решение системы дифференциальных уравнений будем проводить методом Эйлера.

Итерационная схема алгоритма Эйлера:

Dt  = 0.5 сек.

Таблица 1.

, сек, моль/м3, моль/м3, моль/м3




0,5

 23,295236352

 16,102776035

0,0083350760

1

 23,286991918

 16,094531601

0,0165795095

1,5

23,278837139

16,086376821

0,0247342892

2

23,270771035

16,078310718

0,0328003929

2,5

23,262792640

16,070332323

0,0407787878

3

23,254900997

16,062440680

0,0486704306

3,5

23,247095161

16,054634843

0,0564762672

4

23,239374195

16,046913877

0,0641972334

4,5

23,231737173

16,039276856

0,0718342545

5

23,224183182

16,031722865

0,0793882460

5,5

23,216711315

16,024250998

0,0868601130

6

23,209320677

16,016860360

0,0942507508

6,5

23,202010383

16,009550066

0,1015610450

7

23,194779557

16,002319239

0,1087918713

7,5

23,187627332

15,995167015

0,1159440961

8

23,180552852

15,988092535

0,1230185758

8,5

23,173555270

15,981094953

9

23,166633747

15,974173430

0,1369376806

9,5

23,159787455

15,967327138

0,1437839726


Анализ таблицы показывает, что функции выходной концентрации веществ в реакторе синтез хлористого этилена монотонно убывают или возрастают, при этом стремятся войти в статический режим. В силу чего, делаем вывод, что математическая модель построена правильно.

3. ИССЛЕДОВАНИЕ МЕТОДА ОПТИМИЗАЦИИ


Метод возможных направлений Зойтендейка - это метод поиска минимума для задач условной оптимизации.

Этот метод можно назвать особым расширением метода наискорейшего спуска на задачи условной оптимизации, так как он призван «взаимодействовать» с ограничениями при поиске минимума.

Кратко охарактеризуем работу алгоритма:

Пока точка лежит внутри допустимой области метод спускается к минимуму методом наискорейшего спуска, т. е. используя градиент . Если точка наталкивается на одно из ограничений (рисунок 1.), то определяется направлений вдоль ограничения или от ограничения  поиском минимума функции . Метод останавливается в двух случаях: когда  или когда  (такая точка называется точкой Куна-Таккера).

Рисунок 3.1. - Метод возможных направлений Зойтендейка

Примечание. В случае простейших ограничений вида   процесс поиска точки Куна-Таккера сводится к одномерной оптимизации функции вдоль границы любым методом.

Рис. 3.2 Структурная схема алгоритма оптимизации объекта

Рис. 3.3. Подпрограмма Одномерная оптимизация

Рис. 3. Подпрограмма математической модели


4. ПРОВЕРКА МЕТОДА ОПТИМИЗАЦИИ


Перед началом работы с проектируемым объектом была произведена проверка метода оптимизации на заранее известной тестовой функции - параболоиде  при наложенных ограничениях . При этом был заранее известен минимум - это точка с координатами .

Результаты работы метода оптимизации представлены на рисунке 4.1.

Рисунок 4.1 - Результаты проверки метода оптимизации

Как видно из рисунка 4.1, рассчитанный и заранее известный минимумы совпадают, что позволяет сделать вывод о правильности работы метода возможных направлений Зойтендейка, и можно переходить к оптимизации объекта.

5. ОПТИМИЗАЦИЯ ОБЪЕКТА


В ходе работы была произведена оптимизация объекта методом возможных направлений Зойтендейка. В результате было найдена максимальная концентрация CС2H5Cl=15,844 моль/м3 (69,93 %) при температуре T=373 K и объёме реактора V=10 м3. Процесс оптимизации отражён на рисунке 5.1.

Рисунок 5.1 - Результаты оптимизации проектируемого объекта.

6. Проверка работоспособности спроектированного объекта методом имитационного моделирования


Проверка работоспособности спроектированного объекта проводится методом имитационного моделирования.

Метод имитационного моделирования заключается в постановке численного эксперимента на математической модели с целью оценить различные стратегии, обеспечивающие функционирование исследуемого объекта. Имитационная система включает генератор случайных процессов, математические модели и блок анализа результата.

Рисунок 6.1 - Схема системы имитационного моделирования.

Для имитационного моделирования был использован генератор случайных процессов, построенный на генераторе случайных чисел, работающий методу иррациональных чисел.

Способ получения псевдослучайных последовательностей из иррациональных чисел основан на свойстве иррациональных чисел образовывать неупорядоченную последовательность цифр дробной части при вычислении иррационального числа с достаточно высокой степенью точности. Алгоритм может быть записан в виде следующих формул:

0 = {л1} − 0.5; xi = {л2xi−1 } − 0.5.

Здесь скобки {} означают, что из числа, стоящего в скобках, берется только дробная часть; л1, л2 - иррациональные числа (в данном случае были взяты значения для л1 и л2 равные е и  соответственно).

Полученный случайный процесс z(t) подается на вход математической модели динамики. Таким образом, имитируется работа объекта в режиме реального времени.

При имитационном моделировании входная координата СС2H4 - входная концентрация этилена, а выходная координата С3 - концентрация хлористого этила, M0 = 23 К, .

Рисунок 6.2 - Случайный процесс и его характеристики.

Рисунок 6.3 - Результаты имитационного моделирования.

Поскольку выходная динамическая характеристика концентрации хлористого этила практически не реагирует на случайные изменения входной концентрации этилена, делаем вывод о работоспособности спроектированного объекта с оптимальными параметрами.

Выводы


В результате проведения работы было подобранно значение температуры реакционной среды T и объём реактора V, при которых концентрация хлористого этила будет максимальной.

Найденные параметры:

концентрация CС2H5Cl = 15,844 моль/м3 (69,93 %);

температура в реакторе T=373 K;

объём реактора V=10 м3.

Для оптимизации был использован метод возможных направлений Зойтендейка.

Полученный объект был проверен с помощью имитационного моделирования и является работоспособным, т.к. колебания выходной величины незначительны.

реактор математический оптимизация зойтендейк

Литература


1.       Построение математических моделей химико-технологических объектов / Е.Г. Дудников, В.С. Балакирев, В.Н. Кривсунов, А.М. Цирлин. - Л.: Химия, 1970. - 312 с.

2.      Шеннон, Р. Имитационное моделирование систем - искусство и наука / Р. Шеннон. - М.: Мир, 1975. -502 с.

.        Закгейм, А.Ю. Введение в моделирование химико-технологических процессов / А.Ю. Закгейм. - М.: Химия, 1982. - 288 с.

.        Общая химическая технология: в 2 ч. / под ред И.П. Мухленова. - М.: Высшая школа, 1984. - Ч. 2. - 264 с.

.        Бояринов, А.И. Методы оптимизации в химической технологии / А.И. Бояринов, В.В. Кафаров. - М.: Химия, 1975. - 500 с.

.        Базара, М. Нелинейное программирование. Теория и алгоритмы / М. Базара, К. Шэтти. - М.: Химия, 1988. - 583 с.

.        Бусленко, В.Н. Автоматизация имитационного моделирования сложных систем/В.Н. Бусленко. - М.: Наука. 1977. - 239 с.

Приложение


Распечатки программ оптимизации объекта по математической модели и имитационного моделирования

unit Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ComCtrls, StdCtrls, ExtCtrls, Menus, TeeProcs, TeEngine, Chart,, Buttons, Math, Grids, Unit2, Unit3, Series;= class(TForm): TPageControl;: TTabSheet;: TTabSheet;: TMainMenu;: TMenuItem;: TTabSheet;: TTabSheet;: TGroupBox;: TLabel;: TImage;: TImage;: TEdit;: TEdit;: TGroupBox;: TGroupBox;: TGroupBox;: TChart;: TImage;: TImage;: TShape;: TImage;: TShape;: TShape;: TShape;: TShape;: TImage;: TImage;: TEdit;: TImage;: TBitBtn;: TLabel;: TButton;: TStringGrid;: TButton;: TLineSeries;: TLineSeries;: TLineSeries;: TLineSeries;: TLineSeries;: TLineSeries;: TLineSeries;: TLineSeries;: TLineSeries;: TLineSeries;: TLabel;: TLabel;: TGroupBox;: TGroupBox;: TStringGrid;: TImage;: TImage;: TEdit;: TEdit;: TEdit;: TImage;: TBitBtn;: TButton;: TGroupBox;: TLabel;: TLabel;: TImage;: TPaintBox;: TButton;: TChart;: TLineSeries;: TChart;: TLineSeries;: TGroupBox;

Label7: TLabel;: TButton;: TButton;

Label8: TLabel;: TImage;: TImage;Button1Click(Sender: TObject);Image2Click(Sender: TObject);Image3Click(Sender: TObject);Image4Click(Sender: TObject);Image7Click(Sender: TObject);BitBtn1Click(Sender: TObject);Button2Click(Sender: TObject);Button3Click(Sender: TObject);FormShow(Sender: TObject);BitBtn2Click(Sender: TObject);Button4Click(Sender: TObject);Button5Click(Sender: TObject);Button6Click(Sender: TObject);

{ Private declarations }

{ Public declarations };= class(TThread)

{ Private declarations }Execute; override;;= class(TThread)

{ Private declarations }Execute; override;;: TForm1;: array[1..4] of double;:Optimum;:array[1..2,1..1000] of double;_X1, Eff_X2:double;:boolean=false;

//======================Задание констант=====================

A1=1.2;=90;=8480;=29000;=8.31;_in=45*1.45/(100*0.028);_in=40*1.45/(100*0.036);

function fun(X1,X2:double;ind:word):double;func(X,A:array of double;mode:integer):double;OneDimensOptimum(Xo:array of double; d1,d2,stage:double; index:word; var X1,X2:double);Grad(X1,X2:double;index:word;var f1,f2:double);MethodOfZoitenbek(Xo1,Xo2,stage:double;ind:word; var X1, X2:double);Outp(X:array of double;d1,d2:double;integ:integer);ClearMemory();CreateGraph();ExpMathModel(Z:array of double);ClearMemory();i:integer;i:=1 to 1000 do[1,i]:=0;[2,i]:=0;.StringGrid1.Cells[0,i-1]:='';.StringGrid1.Cells[1,i-1]:='';.StringGrid1.Cells[2,i-1]:='';.StringGrid1.Cells[3,i-1]:='';.StringGrid2.Cells[0,i-1]:='';.StringGrid2.Cells[1,i-1]:='';.StringGrid2.Cells[2,i-1]:='';.StringGrid2.Cells[3,i-1]:='';;

//================Процедура демонстрации работы метода оптимизации==============

procedure Demonstrate.Execute;

var i:integer;, buffY:integer;:=1;(not((MemoryXY[1,i]=0) and (MemoryXY[2,i]=0)))do.PaintBox1.Visible:=false;.PaintBox1.Visible:=true;.PaintBox1.Canvas.Brush.Color:=clBlue;:=floor(187*(MemoryXY[1,i]-1));:=floor(69*(2-MemoryXY[2,i]));.PaintBox1.Canvas.Ellipse(buffX,buffY,buffX+10,buffY-10);(500);(i);;;Optimum.Execute;Xo1,Xo2, X1,X2,stage:double;:double;(Form1.PageControl1.TabIndex=1) then[1]:=1;[2]:=10;[3]:=373;[4]:=523;.StringGrid1.Cells[0,0]:=' V';.StringGrid1.Cells[1,0]:=' T';.StringGrid1.Cells[2,0]:=' d1';.StringGrid1.Cells[3,0]:=' d2';:=StrtoFloat(Form1.Edit1.Text);:=StrtoFloat(Form1.Edit2.Text);:=StrtoFloat(Form1.Edit3.Text);(Xo1,Xo2,stage,1,X1, X2);:=100*fun(X1,X2,1)*0.064/1.45;.Label3.Caption:='Ìàêñèìàëüíàÿ êîíöåíòðàöèÿ C2H5Cl='+FloattoStr(RoundTo(-fun(X1,X2,1),-3))+' ìîëü/ì3';.Label3.Caption:=Form1.Label3.Caption+' ('+FloattoStr(RoundTo(-buff,-2))+'%)';.Label2.Caption:='V='+InttoStr(Round(X1))+' ì3 T='+InttoStr(Round(X2))+' Ê';:=true;_X1:=X1;_X2:=X2;else[1]:=1;[2]:=2;[3]:=1;[4]:=2;.StringGrid2.Cells[0,0]:=' V';.StringGrid2.Cells[1,0]:=' T';.StringGrid2.Cells[2,0]:=' d1';.StringGrid2.Cells[3,0]:=' d2';:=StrtoFloat(Form1.Edit4.Text);:=StrtoFloat(Form1.Edit5.Text);:=StrtoFloat(Form1.Edit6.Text);(Xo1,Xo2,stage,0,X1, X2);.Label5.Caption:='Èçâåñòíûé ìèíèìóì X=(1;1)';.Label6.Caption:='Íàéäåííûé ìèíèìóì X*=('+FloattoStr(RoundTo(X1,-3))+';'+FloattoStr(RoundTo(X1,-3))+')';;

end;

//==============Нахождение 20 значений корреляционной функции===================

function Min(az:double; Kz: array of double):double;

var mn:double;:integer;

begin:=0;i:=0 to length(Kz)-1 do:=mn+abs(Kz[i]-Kz[0]*exp(-i*az));;:=mn;;SearchRoot(Dz:double;Kz:array of double):double;az,e,mn1,mn2,step:double;,n:integer;:=0;:=0.001;:=Min(az,Kz);:=az+step;:=Min(az,Kz);(mn2<mn1)do:=mn2;:=az+step;:=Min(az,Kz);;

SearchRoot:=az;

end;

//==============Нахождение параметров случайного процесса===================

procedure SearchChance(X,A:array of double;var Aout:array of double);

var dA1,dA2:double;:double;

begin:=0.01;:=0.01;(abs(func(X,A,1)-0.093)>0.001) do[1]:=A[1]+dA2;:=func(X,A,1);;(abs(func(X,A,2)-20)>0.1) do[0]:=A[0]+dA1;;[0]:=A[0];[1]:=A[1];;

//==============Функция построения случайного процесса===================func(X,A:array of double;mode:integer):double;ao,D0,Mo,L1,L2,Sum,M,Dx,Mz,Dz,az:double;,i,s,k:integer;:array[1..200] of double;:array[1..21] of double;,buff:double;_rep:integer;

//Èíèöèàëèçàöèÿ_rep:=231;i:=1 to 21 do[i]:=0;;i:=1 to 200 do[i]:=0;;:=0.093;:=20;:=23;:=0;i:=0 to X_rep-1 do:=Dx+X[i]*X[i];;:=Dx/X_rep;:=30;:=A[0]*sqrt(D0/(Dx*ao*A[1]))/Ns;k:=1 to 200 do:=0;i:=k to k+Ns do:=buff+X[i-1]*exp(-A[1]*ao*(i-k));[k]:=C*buff+Mo;;;:=0;i:=1 to 200 do:=Mz+Z[i];;:=Mz/200;:=0;i:=1 to 200 do:=Dz+(Z[i]-Mz)*(Z[i]-Mz);;:=Dz/200;s:=1 to 20 doi:=1 to 200-s do[s+1]:=Kz[s+1]+(Z[i]-Mz)*(Z[i+s]-Mz);;[s+1]:=Kz[s+1]/(200-s);;[1]:=Dz;:=SearchRoot(Dz,Kz);(mode=1) then:=az;if(mode=2) then:=Dz;if(mode=3) then:=Mo-Mz;;;Dop_fun(X1,X2:double;ind:boolean):double;tau,k1,k2,h:double;_out,C2_out,C3_out,C1,C2,C3:double;:integer;:=50*X1;:=A1*exp(-E1/(R*X2));:=A2*exp(-E2/(R*X2));:=0.01;_out:=C1_in;_out:=C2_in;_out:=0;:=C1_out;:=C2_out;:=C3_out;_out:=C1+h*((C1_in-C1)/tau-k1*C1*C2+k2*C3);_out:=C2+h*((C2_in-C2)/tau-k1*C1*C2+k2*C3);_out:=C3+h*(-C3/tau+k1*C1*C2-k2*C3);;((abs(C1_out-C1)<power(10,-12))and(abs(C2_out-C2)<power(10,-12))and(abs(C3_out-C3)<power(10,-12)));ind then Dop_fun:=C1_outDop_fun:=C2_out;;

//==============Проверка работоспособности объекта===================ExpMathModel(Z:array of double);tau,k1,k2,h:double;_out,C2_out,C3_out,C1,C2,C3:double;:integer;:=50*Eff_X1;:=A1*exp(-E1/(R*Eff_X2));

k2:=A2*exp(-E2/(R*Eff_X2));

h:=0.2;_out:=Z[0];_out:=C2_in;_out:=0;i:=0 to 199 do:=C1_out;:=C2_out;:=C3_out;_out:=C1+h*((Z[i]-C1)/tau-k1*C1*C2+k2*C3);_out:=C2+h*((C2_in-C2)/tau-k1*C1*C2+k2*C3);_out:=C3+h*(-C3/tau+k1*C1*C2-k2*C3);.Chart2.Series[0].AddXY(i-1,C3_out);;

end;

//==============Математическая модель объекта и функция параболоида===================

function fun(X1,X2:double;ind:word):double;tau,k1,k2,h:double;_out,C2_out,C3_out,C1,C2,C3:double;:integer;:file of char;:string;(ind=0) then fun:=X1*X1+X2*X2begin:=50*X1;:=A1*exp(-E1/(R*X2));:=A2*exp(-E2/(R*X2));:=0.01;_out:=C1_in;_out:=C2_in;_out:=0;:=C1_out;:=C2_out;:=C3_out;_out:=C1+h*((C1_in-C1)/tau-k1*C1*C2+k2*C3);_out:=C2+h*((C2_in-C2)/tau-k1*C1*C2+k2*C3);_out:=C3+h*(-C3/tau+k1*C1*C2-k2*C3);;((abs(C1_out-C1)<power(10,-8))and(abs(C2_out-C2)<power(10,-8))and(abs(C3_out-C3)<power(10,-8)));:=-C3;

end;

end;

//==============Построение графиков===================

procedure CreateGraph();t,v:integer;:double;v:=1 to 10 dot:=373 to 523 do:=-fun(v,t,1);.Chart1.Series[v-1].AddXY(t,buff);.Form2.Chart2.Series[v-1].AddXY(t,buff);.Form2.Chart3.Series[v-1].AddXY(t,Dop_fun(v,t,false));.Form2.Chart4.Series[v-1].AddXY(t,Dop_fun(v,t,true));;

end;

end;

//==============Одномерная оптимизация в методе Зойтендейка===================

procedure OneDimensOptimum(Xo:array of double; d1,d2,stage:double; index:word; var X1,X2:double);

var i1,i2,i11,i22:integer;

ind:word;_pl, mn_mn:double;:=0;_pl:=fun(Xo[0],Xo[1],index);((d1<>0)and(d2<>0))then(true)do(i1);((Xo[0]+i1*stage*d1<=Rest[1])and(Xo[0]+i1*stage*d1>=Rest[2]))then((Xo[1]+i1*stage*d2<=Rest[3])and(Xo[1]+i1*stage*d2>=Rest[4]))then(fun(Xo[0]+i1*stage*d1,Xo[1]+i1*stage*d2,index)<mn_pl)then_pl:=fun(Xo[0]+i1*stage*d1,Xo[1]+i1*stage*d2,index);:=i1;;else break;else break;;:=0;_mn:=fun(Xo[0],Xo[1],index);(true)do(i2);((Xo[0]-i2*stage*d1<=Rest[1])and(Xo[0]-i2*stage*d1>=Rest[2]))then((Xo[1]-i2*stage*d2<=Rest[3])and(Xo[1]-i2*stage*d2>=Rest[4]))then(fun(Xo[0]-i2*stage*d1,Xo[1]-i2*stage*d2,index)<mn_mn)then_mn:=fun(Xo[0]-i2*stage*d1,Xo[1]-i2*stage*d2,index);:=i2;;else break;else break;;(mn_mn>mn_pl)then:=Xo[0]+(i11-1)*stage*d1;:=Xo[1]+(i11-1)*stage*d2;else:=Xo[0]-(i22-1)*stage*d1;:=Xo[1]-(i22-1)*stage*d2;;else(d1=0)then ind:=0ind:=1;:=0;_pl:=fun(Xo[0],Xo[1],index);(Xo[1-ind]+i1*stage*(ind*abs(d1)+(1-ind)*abs(d2))<=Rest[4-2*ind])do(i1);(ind=0)then(fun(Xo[0],Xo[1]+i1*stage*abs(d2),index)<mn_pl)then_pl:=fun(Xo[0],Xo[1]+i1*stage*abs(d2),index);:=i1;;else(fun(Xo[0]+i1*stage*abs(d1),Xo[1],index)<mn_pl)then_pl:=fun(Xo[0]+i1*stage*abs(d1),Xo[1],index);:=i1;;;;

i2:=0;_mn:=fun(Xo[0],Xo[1],index);

while(Xo[1-ind]-i2*stage*(ind*abs(d1)+(1-ind)*abs(d2))>=Rest[3-2*ind])do(i2);(ind=0)then(fun(Xo[0],Xo[1]-i2*stage*abs(d2),index)<mn_mn)then_mn:=fun(Xo[0],Xo[1]-i2*stage*abs(d2),index);:=i2;;else(fun(Xo[0]-i2*stage*abs(d1),Xo[1],index)<mn_mn)then_mn:=fun(Xo[0]-i2*stage*abs(d1),Xo[1],index);:=i2;;;;(mn_mn>mn_pl)then:=Xo[0]+(i11-1)*stage*abs(d1);:=Xo[1]+(i11-1)*stage*abs(d2);else:=Xo[0]-(i22-1)*stage*abs(d1);:=Xo[1]-(i22-1)*stage*abs(d2);;

end;

end;

//==============Вычисление антиградиента функции===================

procedure Grad(X1,X2:double;index:word;var f1,f2:double);dx:double;:=0.0001;(index=0) then:=-(fun(X1+dx,X2,index)-fun(X1,X2,index))/dx;:=-(fun(X1,X2+dx,index)-fun(X1,X2,index))/dx;else:=-power(10,3)*(fun(X1+dx,X2,index)-fun(X1,X2,index))/dx;:=-power(10,3)*(fun(X1,X2+dx,index)-fun(X1,X2,index))/dx;;;Outp(X:array of double;d1,d2:double;integ:integer);(Form1.PageControl1.TabIndex=1) then.StringGrid1.Cells[0,integ]:=FloattoStr(RoundTo(X[0],-3));.StringGrid1.Cells[1,integ]:=FloattoStr(RoundTo(X[1],-3));.StringGrid1.Cells[2,integ]:=FloattoStr(RoundTo(d1,-3));.StringGrid1.Cells[3,integ]:=FloattoStr(RoundTo(d2,-3));else.StringGrid2.Cells[0,integ]:=FloattoStr(RoundTo(X[0],-3));.StringGrid2.Cells[1,integ]:=FloattoStr(RoundTo(X[1],-3));.StringGrid2.Cells[2,integ]:=FloattoStr(RoundTo(d1,-3));.StringGrid2.Cells[3,integ]:=FloattoStr(RoundTo(d2,-3));[1,integ]:=X[0];[2,integ]:=X[1];;;

//==============Метод Зойтендейка===================

procedure MethodOfZoitenbek(Xo1,Xo2,stage:double;ind:word; var X1, X2:double);eps,mn,d1,d2,d11,d22,F1, F2, h:double;

iter,iter_d,i,j,all_iter:integer;

Xk:array[1..2] of double;b,X2b:double;, ind2:word;:boolean;:=0.01;:=false;[1]:=Xo1;[2]:=Xo2;:=0;_d:=0;_iter:=0;(Xk[1],Xk[2],ind,F1,F2);(Form1.PageControl1.TabIndex=1) then.Form2.Memo1.Lines.Add('===============Íà÷àëî îïòèìèçàöèè===============');(abs(F1)+abs(F2)>=eps)do:=0;:=0;(iter);(Form1.PageControl1.TabIndex=1) then.Form2.Memo1.Lines.Add('ÐÅÆÈÌ ÃÐÀÄÈÅÍÒÍÎÃÎ ÑÏÓÑÊÀ');(fun(Xk[1]+stage*F1,Xk[2]+stage*F2,ind)<=fun(Xk[1],Xk[2],ind))do(Xk[1]+stage*F1<=Rest[1])then:=1;[1]:=Rest[1];else(Xk[1]+stage*F1>=Rest[2]) then:=2;[1]:=Rest[2];;

(Xk[2]+stage*F2<=Rest[3])then:=1;[2]:=Rest[3];else(Xk[2]+stage*F2>=Rest[4]) then:=2;[2]:=Rest[4];;((ind1<>0)or(ind2<>0))then break;(all_iter);[1]:=Xk[1]+stage*F1;[2]:=Xk[2]+stage*F2;(Form1.PageControl1.TabIndex=1) then.Form2.Memo1.Lines.Add('X1='+FloattoStr(RoundTo(Xk[1],-2))+'; '+'X2='+FloattoStr(RoundTo(Xk[2],-2)));(Xk,d11,d22,all_iter);;:=0;:=0;:=0;((ind1<>0)or(ind2<>0))then(Form1.PageControl1.TabIndex=1) then(iter_d);.Form2.Memo1.Lines.Add('ÄÎÑÒÈÃÍÓÒÎ ÎÃÐÀÍÈ×ÅÍÈÅ');.Form2.Memo1.Lines.Add('X1='+FloattoStr(RoundTo(Xk[1],-2))+'; '+'X2='+FloattoStr(RoundTo(Xk[2],-2)));;i:=0 to 100 do:=-abs(ind1-1)+i*(abs(ind1-1)+1-floor(ind1/2))*0.01;j:=0 to 100 do:=-abs(ind2-1)+j*(abs(ind2-1)+1-floor(ind2/2))*0.01;(-F1*d1-F2*d2<mn) then:=-F1*d1-F2*d2;:=d1;:=d2;;;;(Form1.PageControl1.TabIndex=1) then.Form2.Memo1.Lines.Add('ÍÎÂÎÅ ÍÀÏÐÀÂËÅÍÈÅ ÄÂÈÆÅÍÈß');.Form2.Memo1.Lines.Add('d1='+FloattoStr(RoundTo(d11,-2))+'; '+'d2='+FloattoStr(RoundTo(d22,-2)));;(all_iter);(Xk,d11,d22,all_iter);(abs(mn)<=eps) then(Form1.PageControl1.TabIndex=1) then.Form2.Memo1.Lines.Add('ÒÎ×ÊÀ ÊÓÍÀ-ÒÀÊÊÅÐÀ ÄÎÑÒÈÃÍÓÒÀ!');:=true;;begin(Xk,d11,d22,stage,ind,X1b,X2b);(Form1.PageControl1.TabIndex=1) then.Form2.Memo1.Lines.Add('ÐÅÇÓËÜÒÀÒ ÎÄÍÎÌÅÐÍÎÉ ÎÏÒÈÌÈÇÀÖÈÈ');.Form2.Memo1.Lines.Add('X1='+FloattoStr(RoundTo(X1b,-2))+'; '+'X2='+FloattoStr(RoundTo(X2b,-2)));.Form2.Memo1.Lines.Add('ÒÎ×ÊÀ ÊÓÍÀ-ÒÀÊÊÅÐÀ ÍÅ ÄÎÑÒÈÃÍÓÒÀ!');;;(all_iter);[1]:=X1b;[2]:=X2b;(Xk,d11,d22,all_iter);else(Form1.PageControl1.TabIndex=1) then.Form2.Memo1.Lines.Add('X1='+FloattoStr(RoundTo(Xk[1],-3))+'; '+'X2='+FloattoStr(RoundTo(Xk[2],-3))+' àíòèãðàäèåíò=('+FloattoStr(RoundTo(F1,-3))+';'+FloattoStr(RoundTo(F2,-3))+')');.Form2.Memo1.Lines.Add('ÑÌÅÍÀ ÍÀÏÐÀÂËÅÍÈß ÀÍÒÈÃÐÀÄÈÅÍÒÀ');;;(Xk[1],Xk[2],ind,F1,F2);(iter);;(Form1.PageControl1.TabIndex=1) then.Form2.Memo1.Lines.Add('===============Êîíåö îïòèìèçàöèè===============');.Form2.Label1.Caption:='Êîëè÷åñòâî ñìåí íàïðàâëåíèÿ ñïóñêà='+InttoStr(iter);.Form2.Label2.Caption:='Êîëè÷åñòâî ïåðåñå÷åíèé îãðàíè÷åíèé='+InttoStr(iter_d);bool then Unit2.Form2.Label3.Caption:='Äîñòèæåíèå òî÷êè Êóíà-Òàêêåðà=äà'Unit2.Form2.Label3.Caption:='Äîñòèæåíèå òî÷êè Êóíà-Òàêêåðà=íåò';;:=Xk[1];:=Xk[2];;

{$R *.dfm}TForm1.Button1Click(Sender: TObject);.Text:='2';.Text:='2';.Text:='0,1';.Visible:=false;.Visible:=true;;TForm1.Image2Click(Sender: TObject);.Picture.LoadFromFile('1-.bmp');.Picture.LoadFromFile('2.bmp');.Picture.LoadFromFile('4.bmp');.Picture.LoadFromFile('3.bmp');.TabIndex:=3;;TForm1.Image3Click(Sender: TObject);.Picture.LoadFromFile('1.bmp');.Picture.LoadFromFile('2-.bmp');.Picture.LoadFromFile('4.bmp');.Picture.LoadFromFile('3.bmp');.TabIndex:=1;;TForm1.Image4Click(Sender: TObject);.Picture.LoadFromFile('1.bmp');.Picture.LoadFromFile('2.bmp');.Picture.LoadFromFile('4-.bmp');.Picture.LoadFromFile('3.bmp');.TabIndex:=0;;TForm1.Image7Click(Sender: TObject);.Picture.LoadFromFile('1.bmp');.Picture.LoadFromFile('2.bmp');.Picture.LoadFromFile('4.bmp');.Picture.LoadFromFile('3-.bmp');.TabIndex:=2;;TForm1.BitBtn1Click(Sender: TObject);();:=Optimum.Create(true);.FreeOnTerminate:=true;.Resume;.Chart1.Visible:=true;;TForm1.Button2Click(Sender: TObject);.Text:='5';.Text:='400';.Text:='0,1';;TForm1.Button3Click(Sender: TObject);.Form2.Show;;TForm1.FormShow(Sender: TObject);.Form2.Show;.Form2.Hide;();.TabIndex:=3;;TForm1.BitBtn2Click(Sender: TObject);();:=Optimum.Create(true);.FreeOnTerminate:=true;.Resume;;TForm1.Button4Click(Sender: TObject);Demo:Demonstrate;:=Demonstrate.Create(true);.FreeOnTerminate:=true;.Resume;;TForm1.Button5Click(Sender: TObject);ao,D0,Mo,L1,L2,Sum,M,Dx,az,C,buff:double;,i,s,k:integer;:array[1..331] of double;:array[1..200] of double;:array[1..2] of double;:array[0..1] of double;,Dz,A3:double;:array [1..21] of double;_rep:integer;:string;

//==============Вывод результатов проверки работоспособности объекта===================

if BoolOpt then_rep:=231;

for i:=1 to 200 do[i]:=0;

end;i:=1 to X_rep do[i]:=0;;i:=1 to 21 do[i]:=0;;:=0.093;:=20;:=23;:=sqrt(10);:=sqrt(8);:=30;[1]:=(L1-floor(L1))-0.5;i:=2 to X_rep do[i]:=(L2*X[i-1]-floor(L2*X[i-1]))-0.5;;:=0;i:=1 to X_rep do:=Sum+X[i];;(Sum/X_rep<>0) then:=Sum/X_rep;i:=1 to X_rep do[i]:=X[i]-M;;;:=0;i:=1 to X_rep do:=Dx+X[i]*X[i];;:=Dx/X_rep;

[1]:=0.01;[2]:=0.01;(X,A,Ar);[1]:=Ar[0];[2]:=Ar[1];:=func(X,A,3);:=A[1]*sqrt(D0/(Dx*ao*A[2]))/Ns;k:=1 to 200 do:=0;i:=k to k+Ns do:=buff+X[i]*exp(-A[2]*ao*(i-k));

Z[k]:=C*buff+Mo+A3;

end;;:=0;i:=1 to 200 do

begin:=Mz+Z[i];

end;:=Mz/200;:=0;i:=1 to 200 do

Dz:=Dz+(Z[i]-Mz)*(Z[i]-Mz);

end;:=Dz/200;s:=1 to 20 doi:=1 to 200-s do

begin[s+1]:=Kz[s+1]+(Z[i]-Mz)*(Z[i+s]-Mz);

end;[s+1]:=Kz[s+1]/(200-s);;[1]:=Dz;:=SearchRoot(Dz,Kz);.Form3.Show;.Form3.Hide;

ExpMathModel(Z);i:=1 to 200 do

begin.Series[0].AddXY(i-1,Z[i]);

str:='X['+InttoStr(i-1)+']='+FloattoStr(RoundTo(X[i],-3))+'; ';:=str+'Z['+InttoStr(i-1)+']='+FloattoStr(RoundTo(Z[i],-3))+'; ';

Unit3.Form3.Memo1.Lines.Add(str);.Form3.Chart1.Series[0].AddXY(i-1,Z[i]);.Form3.Chart2.Series[0].AddXY(i-1,X[i]);;i:=1 to 20 do.Form3.Chart3.Series[0].AddXY(i-1,Kz[i]);.Form3.Chart3.Series[1].AddXY(i-1,Kz[1]*exp(-az*(i-1)));;.Form3.Label2.Caption:='Ìàò. îæèäàíèå='+FloattoStr(RoundTo(Mz,-2));.Form3.Label1.Caption:='Äèñïåðñèÿ='+FloattoStr(RoundTo(Dz,-2));.Form3.Label3.Caption:='Êîýôôèöèåíò à='+FloattoStr(RoundTo(az,-4));.Form3.Label4.Caption:='A1='+FloattoStr(RoundTo(A[1],-3));.Form3.Label5.Caption:='A2='+FloattoStr(RoundTo(A[2],-3));else MessageDlg('Ïåðåä ïðîâåðêîé íà ðàáîòîñïîñîáíîñòü îáúåêòà åãî ïåðâîíà÷àëüíî íåîáõîäèìî îïòèìèçèðîâàòü!', mtWarning, [mbOk], 0);;TForm1.Button6Click(Sender: TObject);.Form3.Show;;.

Назначение и общее описание программы.

Приведенная программа предназначена для оптимизации проектируемого объекта (требуется найти температуру и объём реактора) и проверки его работоспособности методом имитационного моделирования. Поиск оптимальных параметров осуществляется методом возможных направлений Зойтендейка. Уравнения математической модели решаются методом Эйлера. Для имитационного моделирования использован генератор случайных процессов, построенный на генераторе случайных чисел, работающий по методу иррациональных чисел.

Данная программа состоит из трех частей: проверка метода оптимизации, оптимизация объекта и проверка работоспособности спроектированного объекта методом имитационного моделирования.

Описание технических средств.

Программа была разработана на IBM совместимой машине (ноутбук Toshiba SATELLITE L130-134) с процессором Intel Celeron 1470 MHz на языке Delphi 7 под управлением ОС Microsoft Windows XP ZverCD v 7.11.5. Системные требования минимальные. Предполагается работа программы на любом IBM совместимом компьютере под управлением Windows 95 / 98 / Me / Xp / Windows 7.

Вызов и загрузка программы.

Форматы команд для запуска различных этапов проектирования:

Запуск программы:

{диск}:\{путь}\ Project1.exe

На вход программы подаются значения параметров уравнений математической модели и интервал, на котором ищется температура и объём реактора. На выходе выдается оптимальное, с точки зрения значения (максимальное значение) концентрации продукта реакции и оптимальные параметры. Кроме того, строятся графики изменения концентраций веществ в реакторе от температуры при различных объёмах реактора.

На вход программы имитационного моделирования подаются значения характеристик случайного процесса: математическое ожидание, дисперсия и показатель степени при экспоненте в корреляционной функции. На выходе формируются график входной случайной величины (концентрации этилена) и соответствующий ему график выходной величины (концентрации хлористого этила).

Похожие работы на - Построение математической модели реактора полого типа для синтеза хлористого этила

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!