DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Оптимальне керування процесами з застосуванням методу лінійного програмування

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

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

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

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

Про що ця робота

У роботі розглядається застосування методу лінійного програмування для розв'язання задач оптимального керування. Наведено програмну реалізацію на мові Delphi для знаходження максимальних та мінімальних значень цільової функції.

У роботі розглядаються

  • Лінійне програмування
  • Оптимальне керування
  • Цільова функція
  • Система обмежень
  • Мова програмування Delphi
  • Математичне моделювання

Зміст і розділи

  1. Мета роботи
  2. Хід роботи
  3. Індивідуальне завдання
  4. Код програми
  5. Результати роботи
  6. Висновок
Для кого:Студенти технічних спеціальностей вищих навчальних закладів.
Викладачі:Кузьмін О.В.

Ключові поняття

лінійне програмуванняоптимальне керуванняцільова функціяобмеженнязмінні керуванняDelphiпрограмний кодграфікекстремумматематична модель

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

МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” АВТОМАТИЗОВАНІ СИСТЕМИ УПРАВЛІННЯ Лабораторна робота №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. Результати роботи  Графік  Висновок: На даній лабораторній роботі я навчився запрограмовувати задачі оптимального керування, у яких цільова функція, модель процесу й обмеження є лінійними функціями. Програмно будувати їх графік, та визначати деякі максимальні і мінімальні точки
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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