- •Пояснювальна записка
- •Анотація
- •Annotation
- •Технічне завдання
- •Зміст вступ
- •Розділ 1 основна частина
- •1.1.Вступні положення
- •1.2.Суть специфічного волокноутворення
- •1.3.Нанодобавки
- •1.3.1.Вуглецеві нанотрубки
- •1.3.2.Нанокомпозити і нанонаповнені волокна
- •1.4.Особливості планування експерименту для чотирикомпонентних сумішей
- •1.5.Оптимізація, її методи та застосування
- •1.5.1.Багатокритеріальна оптимізація системи
- •1.5.2.Застосування багатокритеріальної оптимізації
- •1.5.2.1.Скаляризація багатокритеріальної задачі
- •1.5.2.2.Зведення багатокритеріальної задачі до однокритеріальної
- •1.5.3.Однокритеріальна оптимізація системи
- •1.5.3.1.Задача умовної оптимізації.
- •1.5.3.2.Задача безумовної оптимізації.
- •1.5.4.Застосування однокритеріальної оптимізації
- •1.5.4.1.Застосування методу штрафних функцій
- •1.5.4.2.Застосування градієнтного методу із дробленням кроку
- •1.5.4.2.1.Реалізація методу із дробленням кроку
- •1.6.Опис програмного середовища
- •1.7.Опис програми
- •1.8.Демонстрація роботи програми
- •Висновок до розділу 1
- •Розділ 2 охорона праці та безпека в надзвичайних ситуаціях вступ
- •2.1.Аналіз шкідливих та небезпечних факторів
- •2.1.1.Параметри мікроклімату
- •2.1.2.Небезпека ураження електричним струмом
- •2.1.3.Електромагнітне випромінювання
- •2.1.4.Освітленість робочого місця
- •2.2.Розрахунок штучного освітлення
- •2.3.Пожежна безпека
- •Висновок до розділу 2
- •Загальні висновки
- •Список використаних джерел
- •Додаток Основні процедури та функції пз
Додаток Основні процедури та функції пз
function f(x1,x2,x3,x4:real):real;\\ обчислює значення функції
begin
f:=k_1*x1+k_2*x2+k_3*x3+k_4*x4+k_12*x1*x2+k_13*x1*x3+k_14*x1*x4+k_23*x2*x3+
k_24*x2*x4+k_34*x3*x4+k_123*x1*x2*x3+k_124*x1*x2*x4+k_134*x1*x3*x4+
k_234*x2*x3*x4+r*(1/(x1-o11)+1/(o12-x1)+1/(x2-o21)+1/(o22-x2)+1/(x3-o31)+
1/(o32-x3)+1/(x4-o41)+1/(o42-x4)+(1-x1-x2-x3-x4)*(1-x1-x2-x3-x4));
end;
function df_dx1(x1,x2,x3,x4:real):real; \\обчислює значення частинної похідної по х1
begin
df_dx1:=k_1+k_12*x2+k_13*x3+k_14*x4+k_123*x2*x3+k_124*x2*x4+k_134*x3*x4+
r*(-1/((x1-o11)*(x1-o11))+1/((o12-x1)*(o12-x1)))+r*(-2)*(1-x1-x2-x3-x4);
end;
function df_dx2(x1,x2,x3,x4:real):real;\\ обчислює значення частинної похідної по х2
begin
df_dx2:=k_2+k_12*x1+k_23*x3+k_24*x4+k_123*x1*x3+k_124*x1*x4+k_234*x3*x4+
r*(-1/((x2-o21)*(x2-o21))+1/((o22-x2)*(o22-x2)))+
r*(-2)*(1-x1-x2-x3-x4);
end;
function df_dx3(x1,x2,x3,x4:real):real;\\ обчислює значення частинної похідної по х3
begin
df_dx3:=k_3+k_13*x1+k_23*x2+k_34*x4+k_123*x1*x2+k_134*x1*x4+k_234*x2*x4+
r*(-1/((x3-o31)*(x3-o31))+1/((o32-x3)*(o32-x3)))+
r*(-2)*(1-x1-x2-x3-x4);
end;
function df_dx4(x1,x2,x3,x4:real):real;\\ обчислює значення частинної похідної по х4
begin
df_dx4:=k_4+k_14*x1+k_24*x2+k_34*x3+k_124*x1*x2+k_134*x1*x3+k_234*x2*x3+
r*(-1/((x4-o41)*(x4-o41))+1/((o42-x4)*(o42-x4)))+
r*(-2)*(1-x1-x2-x3-x4);
end;
procedure zvedennia_zadachi; \\ зводить задачу багатокритеріальної оптимізації до однокритеріальної за допомогою методу лінійної згортки
var y:TextFile;
begin
AssignFile(y,'y.txt');
Reset(y);
readln(y,k1_1,k1_2,k1_3,k1_4,k1_12,k1_13,k1_14,k1_23,k1_24,k1_34,k1_123,k1_124,k1_134,k1_234);
readln(y,k2_1,k2_2,k2_3,k2_4,k2_12,k2_13,k2_14,k2_23,k2_24,k2_34,k2_123,k2_124,k2_134,k2_234); readln(y,k3_1,k3_2,k3_3,k3_4,k3_12,k3_13,k3_14,k3_23,k3_24,k3_34,k3_123,k3_124,k3_134,k3_234);
CloseFile(y);
k_1:=vk1*k1_1-vk2*k2_1-vk3*k3_1;
k_2:=vk1*k1_2-vk2*k2_2-vk3*k3_2;
k_3:=vk1*k1_3-vk2*k2_3-vk3*k3_3;
k_4:=vk1*k1_4-vk2*k2_4-vk3*k3_4;
k_12:=vk1*k1_12-vk2*k2_12-vk3*k3_12;
k_13:=vk1*k1_13-vk2*k2_13-vk3*k3_13;
k_14:=vk1*k1_14-vk2*k2_14-vk3*k3_14;
k_23:=vk1*k1_23-vk2*k2_23-vk3*k3_23;
k_24:=vk1*k1_24-vk2*k2_24-vk3*k3_24;
k_34:=vk1*k1_34-vk2*k2_34-vk3*k3_34;
k_123:=vk1*k1_123-vk2*k2_123-vk3*k3_123;
k_124:=vk1*k1_124-vk2*k2_124-vk3*k3_124;
k_134:=vk1*k1_134-vk2*k2_134-vk3*k3_134;
k_234:=vk1*k1_234-vk2*k2_234-vk3*k3_234;
end;
procedure TForm1.Button1Click(Sender: TObject); \\ процедура знаходить оптимальні значення змінних задачі градієнтним методом із дробленням кроку
var x1n1,x2n1,x3n1,x4n1,fn,fn1,df,eps,S2,df1,df2,df3,df4,h:real; x:TextFile;
begin
AssignFile(x,'x.txt');
Reset(x);
readln(x,o11,o12);
readln(x,o21,o22);
readln(x,o31,o32);
readln(x,o41,o42);
CloseFile(x);
r:=1.2;
vk1:=StrToFloat(Form4.edt1.text);
vk2:=StrToFloat(Form4.edt2.text);
vk3:=StrToFloat(Form4.edt3.text);
k_1:=StrToFloat(Form4.lbl7.Caption);
k_2:=StrToFloat(Form4.lbl8.Caption);
k_3:=StrToFloat(Form4.lbl9.Caption);
k_4:=StrToFloat(Form4.lbl10.Caption);
k_12:=StrToFloat(Form4.lbl11.Caption);
k_13:=StrToFloat(Form4.lbl12.Caption);
k_14:=StrToFloat(Form4.lbl13.Caption);
k_23:=StrToFloat(Form4.lbl14.Caption);
k_24:=StrToFloat(Form4.lbl15.Caption);
k_34:=StrToFloat(Form4.lbl16.Caption);
k_123:=StrToFloat(Form4.lbl17.Caption);
k_124:=StrToFloat(Form4.lbl18.Caption);
k_134:=StrToFloat(Form4.lbl19.Caption);
k_234:=StrToFloat(Form4.lbl20.Caption);
x1n:=StrToFloat(edt1.text);
x2n:=StrToFloat(edt2.text);
x3n:=StrToFloat(edt3.text);
x4n:=StrToFloat(edt4.text);
fn:=f(x1n,x2n,x3n,x4n);
eps:=0.01;
h:=StrToFloat(edt5.text);
df1:=df_dx1(x1n,x2n,x3n,x4n);
df2:=df_dx2(x1n,x2n,x3n,x4n);
df3:=df_dx3(x1n,x2n,x3n,x4n);
df4:=df_dx4(x1n,x2n,x3n,x4n);
df:=sqrt(df1*df1+df2*df2+df3*df3+df4*df4);
while df>eps do
begin
x1n1:=x1n-h*df1;
x2n1:=x2n-h*df2;
x3n1:=x3n-h*df3;
x4n1:=x4n-h*df4;
fn1:=f(x1n1,x2n1,x3n1,x4n1);
if fn1<fn then
begin
x1n:=x1n1;
x2n:=x2n1;
x3n:=x3n1;
x4n:=x4n1;
fn:=fn1;
df1:=df_dx1(x1n,x2n,x3n,x4n);
df2:=df_dx2(x1n,x2n,x3n,x4n);
df3:=df_dx3(x1n,x2n,x3n,x4n);
df4:=df_dx4(x1n,x2n,x3n,x4n);
df:=sqrt(df1*df1+df2*df2+df3*df3+df4*df4);
end
else h:=h/2;
S2:=x1n+x2n+x3n+x4n;
end;
Edt6.text:=FloatToStr(x1n);
Edt7.text:=FloatToStr(x2n);
Edt8.text:=FloatToStr(x3n);
Edt9.text:=FloatToStr(x4n);
end;