МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ
“ЛЬВІВСЬКА ПОЛІТЕХНІКА”
АВТОМАТИЗОВАНІ СИСТЕМИ УПРАВЛІННЯ
Лабораторна робота №2
“Імітаційне моделювання систем масового обслуговування”
Львів 2012
1. Мета
Ознайомлення з методом імітаційного моделювання та його застосування для дослідження систем масового обслуговування (СМО).
2. Теоретичні положення
2.1. Основні поняття систем масового обслуговування
Застосування цього підходу розгланемо на прикладі використання математичних схем систем масового обслуговування.
Для всіх цих моделей характерним є випадковий процес їх функціонування. Розглянемо одноканальну систему масового обслуговування (рис.2.1).
Рис. 2.1. Одноканальна система масового обслуговування.
де Yi-вихідний потік,
ui-час обслуговування заявки,
wi-час очікування обслуговування заявкою,
(i- кількість заявок, які поступають за одиницю часу,
ni- кількість заявок в системі,
Ki-кількість каналів обслуговування,
П-прилад.
ni=li+(i, де (і- коефіцієнт завантаження, li- кількість заявок в черзі.
Потік подій називається однорідним, якщо він характеризується тільки моментами наступлення цих подій, {tn} 0=t1<t2<...<tn і ніяк не характеризує самі події. Однорідний потік подій може також задаватися проміжками часу між послідовними подіями {(n}, (1=t1-t0, (2=t2-t1, ..., (n=tn-tn-1.
Потік неоднорідних подій - це послідовність, яка характеризується двома параметрами {tn,fn}, tn- моменти часу наступлення події, fn- набір ознак цієї події.
Потік подій називається потоком з обмеженою післядією, якщо сумісна функція густини інтервалів (i може бути представлена наступним чином:
f(z1,z2,...,zn)=f(z1)f(z2)...f(zn).
Потік подій називається ординарним, якщо lim[((t0,t)/t]=0 при t→0, де функція ((t0,t) - ймовірність появи двох і більше подій на проміжку часу t.
Нехай заданий цілочисельний вектор k=(k1,k2,...,kn), і вектор t=(t1,t2,...,tn). Визначимо pk(t0,t) як ймовірність появи k1 подій на проміжку часу від t0 до t1 , k2 подій на проміжку часу від t1 до t2 і т.д. Якщо ця функція не залежить від t0, а визначається тільки векторами t і k, то потік називається стаціонарним. Для стаціонарного потоку справедливим є співвідношення f(z2)=f(z3)=...=f(zn), де n>1.
,
де m-середнє значення проміжку часу між моментами наступлення подій.
f(z) - функція густини закону розподілу проміжків часу.
m=1/(, де ( - інтенсивність вхідного потоку.
Для стаціонарного потоку з обмеженою післядією має місце формула Пальма: - функція густини закону розподілу інтервалу τ1. Вона дозволяє знайти розподіл (1, якщо відомий розподіл для всіх інших інтервалів починаючи з другого. Для рівномірного закону розподілу (рис.2.2):
Рис. 2.2. Функція густини рівномірного закону розподілу.
Математичне сподівання:
,
Розподіл інтервалів часу (і:
M(τ1)=b/3 - математичне сподівання τ1.
Якщо ймовірність pk(t0,t) поступлення k заявок в інтервалі часу (t0,t0+t) не залежить від чередування подій до моменту t0, тобто, якщо умовна ймовірність pk(t0,t) , яка обчислена при будь-якому припущенні послідовності подій до моменту t0 дорівнює безумовній ймовірності тої ж події, то потік називається потоком без післядії.
Єдиним стаціонарним ординарним потоком без післядії є найпростіший потік або потік Пуасона, для якого функція розподілу кількості подій на проміжку часу t дорвнює:
pk(t0,t)=(((t)k / k!)*e-( t,
f(z)=(*e-( t,
f(z1)=(*e-( t.
2.2. Приклад одноканальної СМО
Розглянемо в якості прикладу чергу покупців до контрольного прилавку. Припустимо, що проміжки часу між послідовними появами покупців розподілені рівномірно в інтервалі від 1 до 10 хв. Припустимо також, що час, необхідний для обслуговування кожного покупця, розподіляється рівномірно в інтервалі від 1 до 6. Нас цікавить середній час, який покупець проводить в даній системі і відсоток часу, на протязі якого продавець, що стоїть на контролі не завантажений роботою. Для моделювання системи нам необхідно поставити штучний експеримент, який відображає основні ситуації системи, яка моделюється. Результати моделювання наведені в таблиці 1.
, якщо
3.Вихідні дані варіанту індивідуального завдання.
14
96837
[1,23]
[1,18]
№ варіанту
Значення вхідних даних
Початкове значення генератора
X0
Діапазон проміжків часу між поступленнями заявок
хв.
Діапазон часу обслуговування заявок
хв.
4.Скріншот отриманих даних.
5.Код програми
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Grids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
LabeledEdit1: TLabeledEdit;
Edit1: TEdit;
Label1: TLabel;
LabeledEdit2: TLabeledEdit;
Edit2: TEdit;
Label2: TLabel;
LabeledEdit3: TLabeledEdit;
Button1: TButton;
LabeledEdit4: TLabeledEdit;
Label3: TLabel;
Label5: TLabel;
Label7: TLabel;
Label8: TLabel;
Label12: TLabel;
Label11: TLabel;
Label13: TLabel;
Label14: TLabel;
Label147: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
N, t1, t2, t6, t7, st6, st7, i, t3, t4, t5, tp3, tp5, so,st2: Integer;
begin
N:=StrToInt(LabeledEdit4.Text);
RandSeed:=StrToInt(LabeledEdit3.Text);
tp3:=0;
tp5:=0;
t7:=0;
t1:=0;
t3:=0;
st6:=0;
st7:=0;
so:=0;
st2 := 0;
for i:=1 to N do begin
if i=StringGrid1.RowCount then StringGrid1.RowCount:=StringGrid1.RowCount+1;;
t2:=Random(StrToInt(Edit2.Text))+StrToInt(LabeledEdit2.Text);
if i<>1 then begin
t1:=Random(StrToInt(Edit1.Text))+StrToInt(LabeledEdit1.Text);
t3:=tp3+t1;
if tp5>t3 then t4:=tp5
else t4:=t3;
t5:=t4+t2;
t6:=t5-t3;
if t3<tp5 then t7:=0
else t7:=t3-tp5;
tp3:=t3;
tp5:=t5;
end
else begin
t5:=t2;
t6:=t2;
tp5:=t5;
end;
st6:=st6+t6;
st7:=st7+t7;
so:=so+(t4-t3);
st2 := st2 + t2;
StringGrid1.Cells[0, i]:=IntToStr(i);
StringGrid1.Cells[1, i]:=IntToStr(t1);
StringGrid1.Cells[2, i]:=IntToStr(t2);
StringGrid1.Cells[3, i]:=IntToStr(t3 div 60)+'ãîä '+IntToStr(t3 mod 60)+'õâ';
StringGrid1.Cells[4, i]:=IntToStr(t4 div 60)+'ãîä '+IntToStr(t4 mod 60)+'õâ';
StringGrid1.Cells[5, i]:=IntToStr(t5 div 60)+'ãîä ' +IntToStr(t5 mod 60)+'õâ';
StringGrid1.Cells[6, i]:=IntToStr(t6);
StringGrid1.Cells[7, i]:=IntToStr(t7);
end;
Label7.Caption:=FloatToStr(so/N)+' õâ';
Label8.Caption:=FloatToStr(Round((st6/N)*100)/100)+' õâ';
Label12.Caption:=floattostr(round((N/t5)*1000)/1000);//êîåô³ö³åíò çàâàíòàæåííÿ
Label14.Caption:=floattostr(round((st2/t5)*1000)/1000); //³íòåíñèâí³ñòü âõ³äíîãî ïîòîêó çàÿâîê
Label147.Caption := Label147.Caption + floattostr(Round(((st7 / (st6 + st7)) * 100)));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[0, 0]:='¹';
StringGrid1.Cells[1, 0]:='t1';
StringGrid1.Cells[2, 0]:='t2';
StringGrid1.Cells[3, 0]:='t3';
StringGrid1.Cells[4, 0]:='t4';
StringGrid1.Cells[5, 0]:='t5';
StringGrid1.Cells[6, 0]:='t6';
StringGrid1.Cells[7, 0]:='t7';
end;
end.
Висновок:На цій лабораторній роботі я ознайомився з методом імітаційного моделювання та його застосування для дослідження систем масового обслуговування (СМО).