Исследование систем массового обслуживания с ожиданием


Исследование систем массового обслуживания с ожиданием

1. Краткие теоретические сведения

Системы массового обслуживания с ожиданием распространены наиболее широко. Их можно разбить на две большие группы: разомкнутые и замкнутые. К замкнутым относятся системы, в которых поступающий поток требований ограничен. В разомкнутых системах поступающий поток требований не ограничен.

СМО с n-каналами обслуживает простейший поток требований. При занятости всех n - узлов обслуживания поступившее требование ставится в очередь и обслуживается после некоторого ожидания. Общее число требований, находящихся в системе на обслуживании и в очереди, обозначим k и назовем состояниям системы. При k= величина k характеризует число занятых каналов в системе, при k= число занятых каналов равно n, а разность k-n определяет длину очереди. Параметр интенсивности обслуживания потока определяется числом занятых узлов ().

Введем понятие загрузки системы p, равное отношению интенсивности входящего потока к интенсивности обслуживания.

Отметим, что при загрузке системы, равной или больше числа узлов обслуживания системы n, с вероятностью, равной 1, постоянно будут заняты все узлы обслуживания, и длина очереди будет бесконечной - явление "взрыва". Поэтому, чтобы система могла функционировать нормально и очередь не росла безгранично, необходимо выполнить условие p<1.

При ограниченной очереди k=, где m - заданная максимально допустимая длина очереди (емкость накопителя).

Динамика состояний системы с ограниченной длиной очереди описывается системой ОДУ Колмогорова для вероятностей состояний.

Массовый обслуживание ожидание дифференциальный

При дисциплинирующем условии

И начальных условиях

Решение бесконечной системы алгебраических уравнений для стационарных вероятностей состояний СМО с ожиданием и бесконечной очередью определяется вторым распределением Эрланга

P0 =

К основным показателям качества обслуживания рассматриваемой СМО относятся:

    -вероятность наличия очереди (вероятность того, что число требований в системе больше числа узлов) -вероятность занятости всех узлов системы -среднее число требований в системе

МТр =P0 (

-средняя длина очереди

MОч =

-среднее число свободных узлов

МСв =

    - среднее число занятых узлов -среднее время ожидания начала обслуживания

T Ож =

-общее время, которое проводят в очереди все требования, поступившие в систему за единицу времени

TОж =

-среднее время, которое требование проводит в системе обслуживания

ТТр = ТОж +

-среднее время, которое в среднем проводят в системе все требования, поступившие за единицу времени

ТСтр = ТОжид +

2. Порядок выполнения работы

Построить размеченный граф состояний СМО с ограниченной длиной очереди.

Записать систему обыкновенных дифференциальных уравнений (ОДУ) Колмогорова для вероятностей состояний системы.

Составить программу на ЭВМ интегрирования ОДУ, вычисления вероятностей состояний в установившемся режиме и показателей качества функционирования СМО.

Провести вычислительный эксперимент, в котором:

    - исследовать динамику вероятностей состояния и показателей качества СМО; - оценить время переходных процессов в системе; - вычислить вероятности состояний и показатели качества функционирования системы в установившемся режиме

Сформулировать выводы по работе.

Текст задания

На железнодорожной станции имеются 5 путей для обслуживания прибывающих железнодорожных составов. Интенсивность прибытия железнодорожных составов равна 15 составов час. Среднее время обслуживая одного состава 20 мин.

Система обыкновенных дифференциальных уравнения Колмогорова.

M=4;

µ=3

Н=5*3=15

С=л/н =5

0

1

2

3

4

5

6

7

8

PЭр

0.2953

0,3691

0,2307

0,0769

0,0769

0,0154

0,0031

0,0031

0,0031

P

0,0100

0,8500

0,1500

0

0

0

0

0

0

Вероятность наличия очереди 0.3076062640

Вероятность занятости всех узлов системы 0.6152125280

Среднее число требований в системе 2.1667016219

Средняя длина очереди 0.8202833706

Среднее число свободных узлов 1.2919463087

Среднее число занятых узлов 0.7080536913

Среднее время ожидания начала обслуживания 0.1367138951

Program Lab1;

{$APPTYPE CONSOLE}

Type

Vector=array[1..11] of real;

Massiv=array[1..11] of vector;

Fft=string[20];

Ffs=TextFile;

Ft=array[1..7] of ffs;

Const m=4;

Var

P, p1:vector;

T, lam, mu, Po, Ps, suma:real;

Qq:real;

Kkk, xx, xx1:integer;

Yy, yy1:array[1..7] of integer;

R, Reg, Grm, j,i, n,k, l,lll:integer;

Kbp1,ush, pot, rr, Kbp, Kbg, Kbg1,Kbgg, Kbpp, s,h, a,b:real;

Y, y1,y2:vector;

Trem, Tpodg, Tpol, Nar, Npvo, LamV, Prem, Pbp:real;

Toj:real;

//AA, lam:massiv;

St:string[2];

Stt:string[6];

Stt1:string[6];

F, f1,f2,f3:textFile;

Fn2,fn1,fn, fn3:string[20];

Ff1,ff2,ff3,ff4,ff5,ff6,ff7:text;

Ffn:array[1..7] of fft;

Procedure lv(x: real; n: integer; a: vector; var b: vector);

Var i: integer;

Begin

For i:=1 to N do b[i]:=0.0; for i:=1 to n do b[i]:=x*a[i];

End;

Procedure sv(n:integer; a, b: vector; var c: vector);

Var i, j: integer;

Begin

For i:=1 to n do c[i]:=0.0; for i:=1 to n do c[i]:=a[i]+b[i];

End;

Procedure tm(n, m: integer; a:massiv; var b:massiv);

Var i, j: integer;

Begin

For i:=1 to n do for j:=1 to m do b[i, j]:=0.0;

For i:=1 to n do for j:=1 to n do b[i, j]:=a[j, i];

End;

Procedure pmv(n, k: integer; a: massiv; b: vector; var c: vector);

Var i, j: integer;

Begin

For i:=1 to n do c[i]:=0.0;

For i:=1 to n do for j:=1 to n do c[i]:=c[i] +a[i, j]*b[j];

End;

Procedure fpr1(n: integer; p: vector; var pp: vector); //n=2; m=4; k=3,6/ begin number with 1;7

Begin

//pmv(n, n,lam, p,pp);

Pp[1]:=-lam * P[1] + mu* P[2];

Pp[2]:= lam * P[1] - (lam + mu)*P[2] + 2* mu* P[3];

Pp[3]:= lam * P[2] - (lam + 2* mu) * P[3] + 2* mu* P[4];

Pp[4]:= lam * P[3] - (lam + 2* mu) * P[4] + 2* mu*P[5];

Pp[5]:= lam * P[4] - (lam + 2* mu) * P[5] + 2* mu*P[6];

Pp[6]:= lam * P[5] - (lam + 2* mu) * P[6] + 2* mu*P[7];

Pp[7]:= lam * P[6] - (lam + 2* mu) * P[7] + 2* mu*P[8];

Pp[8]:= lam * P[7] - 2*mu*P[8];

End;

Procedure euler(n: integer; h: real; p:vector; var p1: vector);

Var k, k1,k2,k3,k4,pp: vector;

I, j: integer; s: real;

Begin

Fpr1(n, p,pp);

For i:=1 to 8 do

Begin

P1[i]:=p[i]+pp[i]*h;

End;

End;

Function step(a:Real;k:Integer):Real;

Var i:Integer;

Begin

If k=0 then step:=1;

If k=1 then step:=a;

If k>1 then for i:=1 to k-1 do step:=a*a;

End;

Function fact(a:Integer):Integer;

Var i, t:Integer;

Begin

T:=1;

If a>0 then for i:=1 to a do t:= i*t;

Fact:=t;

End;

Function sum(a:Real;k:Integer):Real;

Var i:Integer; s:Real;

Begin

For i:=0 to k do

S:=s+step(a, i)/fact(i);

Sum:=s;

End;

{********************************************************************************************************}

Begin {main}

Fn1:='rezult. txt';

AssignFile(ff1,fn1); rewrite(ff1);

N:=4;

Lam:=15;

Mu:=3;

P[1]:=1.0;

For i:=2 to 7 do

P[i]:=0.0;

//eioaa? e?iaaiea

T:=0.0;

H:=0.01;

Writeln(ff1,'__________________________________________');

For i:=1 to 1000 do

Begin

T:=t+h;

Euler(n+m+1,h, p,p1);

P:=p1;

//if (t>0.9) then

Writeln(ff1,t:10:8,' ',p1[1]:10:8,' ',p1[2]:10:8,' ',p1[3]:10:8,' ',p1[4]:10:8,' ',p1[5]:10:8,' ',

P1[6]:10:8,' ',p1[7]:10:8,' ',p1[8]:10:8);

//readln;

End;

Writeln(ff1,'__________________________________________');

Writeln(ff1,'Aa? iyoiinoe ninoiyiee');

//Po:=1/(sum(lam/mu, n-1)+(step(lam/mu, n-1)/fact(n-1))*((lam/mu/(n-1)-step(lam/mu/(n-1),m+1))/(1-lam/mu/(n-1))));

Po:=1/(sum(lam/(n*mu),n-1)+(step(lam/(n*mu),n)/fact(n-1)/(n-lam/(n*mu))));

//Writeln(ff1,Po:20:10);

For i:=0 to n-1 do

Begin

Ps:=(step(lam/(n*mu),i)/fact(i))*Po;

Writeln(ff1,i, Ps:20:10);

End;

For i:=n to n+m do

Begin

Ps:=(step(lam/(n*mu),i)/fact(n-1)/step(5,i-n))*Po;

Writeln(ff1,i, Ps:20:10);

End;

Writeln(ff1,'aa? iyoiinou iaee? ey i? a?aae '); Writeln(ff1,( step(lam/(n*mu),3)/fact(2)/(2-lam/(n*mu))*Po ):20:10);

Writeln(ff1,'aa? iyoiinou caiyoinoe anao oceia nenoaiu '); Writeln(ff1,( step(lam/(n*mu),2)/fact(1)/(2-lam/(n*mu))*Po ):20:10);

Writeln(ff1,'n? aaiaa? enei o? aaiaaiee a nenoaia '); Writeln(ff1,Po*(lam/(n*mu)* sum(lam/(n*mu),5)+step(lam/(n*mu),3)*(2+1-lam/(2*mu))/fact(1)/step(2-lam/(2*mu),2) ):20:10);

Writeln(ff1,'n? aaiyy aeeia i? a?aae '); Writeln(ff1,( Po*step(lam/(n*mu),3)/fact(1)/step(2-lam/(n*mu),2)):20:10);

Suma:=0;

For k:=1 to 2 do suma:=suma+k*(step(lam/(n*mu),k)/fact(2-k));

Writeln(ff1,'n? aaiaa? enei naiaiaiuo oceia'); Writeln(ff1,( suma*Po ):20:10);

Writeln(ff1,'n? aaiaa? enei caiyouo oceia'); Writeln(ff1,( 2-suma*Po ):20:10);

Writeln(ff1,'n? aaiaa a? aiy i? eaaiey ia? aea ianeo? eaaiey'); Writeln(ff1,( step(lam/(n*mu),2)/(k*mu*fact(1)*step(2-lam/(n*mu),2))*Po ):20:10);

CloseFile(FF1);

End.

Похожие статьи




Исследование систем массового обслуживания с ожиданием

Предыдущая | Следующая