ОПТИМАЛЬНЕ КЕРУВАННЯ ПРОЦЕСАМИ З ЗАСТОСУВАННЯМ МЕТОДУ ЛІНІЙНОГО ПРОГРАМУВАННЯ

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Систем управління
Кафедра:
Не вказано

Інформація про роботу

Рік:
2012
Тип роботи:
Лабораторна робота
Предмет:
Інші
Група:
КН-32

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” АВТОМАТИЗОВАНІ СИСТЕМИ УПРАВЛІННЯ Лабораторна робота №1 ОПТИМАЛЬНЕ КЕРУВАННЯ ПРОЦЕСАМИ З ЗАСТОСУВАННЯМ МЕТОДУ ЛІНІЙНОГО ПРОГРАМУВАННЯ Мета роботи Вивчення і застосування методу лінійного програмування для рішення задач оптимального керування, у яких цільова функція, модель процесу й обмеження є лінійними функціями. Хід роботи ознайомитися з теоретичними зведеннями і прикладами використання методу лінійного програмування для рішення задач оптимального керування; представити цільову функцію і систему обмежень у вигляді функцій змінних керування шляхом заміни змінних стану змінних керування; скласти програму рішення задачі на мові delphi вивести на друк максимальне і мінімальне значення цільової функції, значення змінних керування; Індивідуальне завдання Варіант 1 Цільова функція  Модель процесу  Обмеження  Код програми unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DBCtrls; type TForm1 = class(TForm) Label1: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Label2: TLabel; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Label3: TLabel; Label4: TLabel; Edit7: TEdit; Edit8: TEdit; Edit9: TEdit; Label5: TLabel; Edit10: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; Edit11: TEdit; Edit12: TEdit; Label6: TLabel; Label7: TLabel; Label8: TLabel; Edit13: TEdit; Label9: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; Label15: TLabel; Label16: TLabel; Label17: TLabel; Button4: TButton; DBMemo1: TDBMemo; DBMemo2: TDBMemo; Label18: TLabel; DBMemo3: TDBMemo; procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; mfx:array [1..3] of integer; mcy:array [1..2] of integer; msr:array [1..2] of integer; x:array [1..20] of Extended; y:array [1..20] of Extended; xn:array [1..20] of Extended; yn:array [1..20] of Extended; o1:array [1..40] of integer; o2:array [1..40] of integer; mob:array [1..20,1..5] of integer; mobr:array [1..20,1..4] of integer; n,i,j,z,k,g,g1,g2,f,b,k1,p,nb,q,bn:integer; max,min: Extended; implementation {$R *.dfm} procedure TForm1.Button2Click(Sender: TObject); begin mfx[1]:=strtoint(edit1.Text); mfx[2]:=strtoint(edit2.Text); mfx[3]:=strtoint(edit3.Text); mcy[1]:=strtoint(edit4.Text); mcy[2]:=strtoint(edit5.Text); n:=strtoint(edit6.Text); end; procedure TForm1.Button1Click(Sender: TObject); begin i:=i+1; mob[i][1]:=strtoint(edit7.Text); mob[i][2]:=strtoint(edit8.Text); mob[i][3]:=strtoint(edit9.Text); mob[i][4]:=strtoint(edit10.Text); if edit13.Text='>' then mob[i][5]:=0 else mob[i][5]:=1; edit7.Text:=''; edit8.Text:=''; edit9.Text:=''; edit10.Text:=''; edit13.Text:=''; end; procedure TForm1.FormCreate(Sender: TObject); begin i:=0; p:=0; end; procedure TForm1.Button3Click(Sender: TObject); begin i:=1; j:=0; k:=0; msr[1]:=mfx[3]*mcy[1]+mfx[1]; msr[2]:=mfx[3]*mcy[2]+mfx[2]; for i:=1 to n do begin if mob[i][1]=0 then begin mobr[i][1]:=mob[i][2]; mobr[i][2]:=mob[i][3]; mobr[i][3]:=mob[i][4]; mobr[i][4]:=mob[i][5]; end else begin mobr[i][1]:=mob[i][1]*mcy[1]+mob[i][2]; mobr[i][2]:=mob[i][1]*mcy[2]+mob[i][3]; mobr[i][3]:=mob[i][4]; mobr[i][4]:=mob[i][5]; end; end; z:=1; k:=1; for i:=1 to n-1 do begin z:=z+1; for j:=z to n do begin g:=mobr[i][1]*mobr[j][2]- mobr[i][2]*mobr[j][1]; g1:=mobr[i][3]*mobr[j][2]-mobr[j][3]*mobr[i][2]; g2:= mobr[j][3]* mobr[i][1]- mobr[j][1]*mobr[i][3]; x[k]:=g1/g; y[k]:=g2/g; o1[k]:=i; o2[k]:=j; k:=k+1; end; end; k:=k-1; b:=1; nb:=n; i:=1; while(k<>0) do begin f:=0; while (n+1<>i) do begin if mobr[i][4]=0 then begin if ((mobr[i][1]*x[k])+(mobr[i][2]*y[k]))>=mobr[i][3] then i:=i+1 else begin f:=1; i:=i+1; end; end; if mobr[i][4]=1 then begin if ((mobr[i][1]*x[k])+(mobr[i][2]*y[k]))<=mobr[i][3] then i:=i+1 else begin f:=1; i:=i+1; end; end; end; if f=0 then begin xn[b]:=x[k]; yn[b]:=y[k]; b:=b+1; end; k:=k-1; // n:=nb; i:=1; end; b:=b-1; bn:=b; max:=(msr[1]*xn[b])+(msr[2]*yn[b]); min:=(msr[1]*xn[b])+(msr[2]*yn[b]); b:=b-1; while b<>0 do begin if ((msr[1]*xn[b])+(msr[2]*yn[b]))>max then max:=((msr[1]*xn[b])+(msr[2]*yn[b])); if ((msr[1]*xn[b])+(msr[2]*yn[b]))<min then min:=((msr[1]*xn[b])+(msr[2]*yn[b])); b:=b-1; end; edit11.Text:=FloatToStr(max); edit12.Text:=FloatToStr(min); end; procedure TForm1.Button4Click(Sender: TObject); begin dbmemo1.Lines.Clear; dbmemo2.Lines.Clear; dbmemo3.Lines.Clear; while bn<>0 do begin dbmemo1.Lines.Add(floattostrF (xn[bn],ffGeneral, 2, 2)); dbmemo2.Lines.Add(floattostrF (yn[bn],ffGeneral, 2, 2)); dbmemo3.Lines.Add(floattostrF ((msr[1]*xn[bn]+msr[2]*yn[bn]),ffGeneral, 5, 3)); bn:=bn-1; end; end; end. Результати роботи  Графік  Висновок: На даній лабораторній роботі я навчився запрограмовувати задачі оптимального керування, у яких цільова функція, модель процесу й обмеження є лінійними функціями. Програмно будувати їх графік, та визначати деякі максимальні і мінімальні точки
Антиботан аватар за замовчуванням

19.02.2013 22:02-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!