Рефераты. Имитационное моделирование системы массового обслуживания

else

Sost := _sost+ 1;

Блок 4. Изменение времени пребывания СМО в состояниях с длиной очереди 1, 2. Это реализуется следующим программным кодом:

if i_och > 0 then t_och[i_och]:= t_och[i_och]+i_deltaT;

В блоках 9 и 16 присутствует такая операция, как помещение заявки на обслуживание в свободный канал. Просматриваются, начиная с первого, все каналы, когда выполняется условие (канал свободен), в него подается заявка, т.е. генерируется время окончания обслуживания заявки.

for i:=1 to 2 do

begin

if t_okonch[i]>0 then t_okonch[i]:= t_okonch[i] - i_deltaT

else

if i_och >0 then

begin

Dec(i_och);

t_okonch[i]:=tok;

i_tobs:=i_tobs + t_okonch[i];

end;

end;

Блок 17 реализуется следующим программным кодом:

for i:=1 to 2 do

if t_okonch[i]>0 then

t_okonch[i]:= t_okonch[i] - i_deltaT;

Алгоритм метода имитационного моделирования реализован на языке программирования C#.

3.3 Расчет показателей эффективности СМО на основе результатов ее имитационного моделирования

Наиболее важными являются такие показатели, как:

1) Вероятность отказа в обслуживании заявки, т.е. вероятность того, что заявка покидает систему не обслуженной. В нашем случае заявке отказывается в обслуживании, если все 3 канала заняты, и очередь максимально заполнена (т.е. 2 человека в очереди). Для нахождения вероятности отказа разделим время пребывания СМО в состоянии с очередью 4 на общее время работы системы.

2) Относительная пропускная способность - это средняя доля поступивших заявок, обслуживаемых системой.

3) Абсолютная пропускная способность - это среднее число заявок, обслуживаемых в единицу времени.

4) Длина очереди, т.е. среднее число заявок в очереди. Длина очереди равна сумме произведений числа человек в очереди на вероятность соответствующего состояния. Вероятности состояний найдем как отношение времени нахождения СМО в этом состоянии к общему времени работы системы.

5) Среднее время пребывания заявки в очереди определяется формулой Литтла

6) Среднее число занятых каналов определяется следующим образом:

7) Процент заявок, которым было отказано в обслуживании, находится по формуле

8) Процент обслуженных заявок находится по формуле

3.4 Статистическая обработка результатов и их сравнение с результатами аналитического моделирования

Т.к. показатели эффективности получаются в результате моделирования СМО в течение конечного времени, они содержат случайную компоненту. Поэтому, для получения более надежных результатов нужно провести их статистическую обработку. С этой целью оценим доверительный интервал для них по результатам 20 прогонов программы.

Величина попадает в доверительный интервал, если выполняется неравенство

, где

математическое ожидание (среднее значение), находится по формуле

,

исправленная дисперсия,

,

N=20 - число прогонов,

- надежность. При и N=20 .

Результат работы программы представлен на рис.6.

Рис.6.

Для удобства сравнения результатов, полученных различными методами моделирования, представим их в виде таблицы.

Таблица 2.

Показатели эффективности СМО

Результаты аналитического моделирования

Результаты имитационного моделирования

Нижняя граница доверительного интервала

Верхняя граница доверительного интервала

Вероятность отказа

0,33355

0,238

0,35979

Относительная пропускная способность

0,66645

0,64

0,761

Абсолютная пропускная способность

2.66579

2,56

3,048

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

0,917264

0,696

0,9566

Среднее время пребывания заявки в очереди

0,229316

0,1739

0,2394

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

каналов

2,665798

2,561

3,048

Из табл. 2 видно, что результаты, полученные при аналитическом моделировании СМО, попадают в доверительный интервал, полученный по результатам имитационного моделирования. Т.е., результаты, полученные разными методами, согласуются.

Заключение

В данной работе рассмотрены основные методы моделирования СМО и расчета показателей их эффективности.

Проведено моделирование четырехканальной СМО с максимальной длиной очереди равной 4 с помощью уравнений Колмогорова, а также, найдены финальные вероятности состояний системы. Рассчитаны показатели ее эффективности.

Проведено имитационное моделирование работы такой СМО. На языке программирования Delphi составлена программа, имитирующая ее работу. Проведена серия расчетов, по результатам которых найдены значения показателей эффективности системы и выполнена их статистическая обработка.

Полученные при имитационном моделировании результаты согласуются с результатами аналитического моделирования.

Литература

1. Вентцель Е.С. Исследование операций. - М.: Дрофа, 2004. - 208 с.

2. Волков И.К., Загоруйко Е.А. Исследование операций. - М.: Изд.-во МГТУ им. Н.Э. Баумана, 2002. - 435 с.

3. Волков И.К., Зуев С.М., Цветкова Г.М. Случайные процессы. - М.: Изд.-во МГТУ им. Н.Э. Баумана, 2000. - 447 с.

4. Гмурман В.Е. Руководство к решению задач по теории вероятностей и математической статистике. - М.: Высшая школа, 1979. - 400 с.

5. Ивницкий В.Л. Теория сетей массового обслуживания. - М.: Физматлит, 2004. - 772 с.

6. Исследование операций в экономике/ под ред. Н.Ш. Кремера. - М.: Юнити, 2004. - 407 с.

7. Таха Х.А. Введение в исследование операций. - М.: ИД «Вильямс», 2005. - 902 с.

8. Харин Ю.С., Малюгин В.И., Кирлица В.П. и др. Основы имитационного и статистического моделирования. - Минск: Дизайн ПРО, 1997. - 288 с.

Приложение 1

Листинг программы аналитического моделирования

Программа написана в математическом пакете Maple 8.

> # Дано

la:=4:

m:=1:

Находим финальные вероятности

> usl := {m*Pf[1]-la*Pf[0] = 0,

2*m*Pf[2]-la*Pf[1] = 0,

3*m*Pf[3]-la*Pf[2] = 0,

3*m*Pf[4]-la*Pf[3] = 0,

3*m*Pf[5]-la*Pf[4] = 0,

Pf[0]+Pf[1]+Pf[2]+Pf[3]+Pf[4]+Pf[5]= 1 }:

> s:=evalf(solve(usl) ):

> for i from 0 by 1 to 5 do

Pf[i]:=subs( s, Pf[i] );

end;

>

> # Уравнения Колмогорова

> del_t:=0.01: #шаг по времени

T:=10: # Время, за которое система выходит на стационарный режим

N:=trunc(T/del_t); # Число шагов

>

> # Присваиваем начальные значения

p[i,c]:=array(0..5,0..N):

p[0,0]:=1:

for i from 1 by 1 to 5 do p[i,0]:=0 end:

> # Метод Эйлера

jj:=0:

for k from 1 to N do

v:=jj:

j:=trunc(100*v):

jj:=jj+del_t:

p[0,k] := p[0,j]+( m*p[1,j]-la*p[0,j])*del_t:

p[1,k] := p[1,j]+( la*p[0,j]+2*m*p[2,j]-p[1,j]*(m+la) )*del_t:

p[2,k] := p[2,j]+( la*p[1,j]+3*m*p[3,j]-p[2,j]*(2*m+la) )*del_t:

p[3,k] := p[3,j]+( la*p[2,j]+3*m*p[4,j]-p[3,j]*(3*m+la) )*del_t:

p[4,k] := p[4,j]+( la*p[3,j]+3*m*p[5,j]-p[4,j]*(3*m+la) )*del_t:

p[5,k] := p[5,j]+( la*p[4,j]-3*m*p[5,j] )*del_t:

end:

> for i from 0 by 1 to 5 do

P[i]=p[i,N];

end;

> # Cравним финальные вероятности с вероятностями при Т=10, водно, что они близки. R-ошибка

for i from 0 by 1 to 5 do

# Pf[i]=p[i,N]:

R[i]:=abs(Pf[i]-p[i,500]);

end;

>

> # Показатели эффективности системы

# вероятность отказа

p_otk:=Pf[5];

> # относительная пропускная способность

Q := 1-p_otk;

> # абсолютная пропускная способность

A := la*Q;

> # длина очереди

lo := Pf[4]+2*Pf[5];

> # среднее время в очереди

t0 := lo/la;

> # среднее число каналов

K := (la/m)*Q;

>

> # Вывод графиков вероятностей

cur[i]:=array(0..5):

for i from 0 by 1 to 5 do

cur[i]:=CURVES([[0,p[i,0]],[0.05,p[i,5]],[0.07,p[i,7]],[0.1,p[i,10]],[0.15,p[i,15]],

Страницы: 1, 2, 3, 4, 5, 6



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.