Главная Математика, химия, физика
Исследование систем массового обслуживания с ожиданием
|
Исследование систем массового обслуживания с ожиданиемИсследование систем массового обслуживания с ожиданием 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.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. |