47065 (608060), страница 3
Текст из файла (страница 3)
S4 – 3 канала заняты, в очереди 1 заявка;
S5 – 3 канала заняты, в очереди 2 заявки;
Вероятности прихода системы в состояния S0, S1, S2, …, S5 соответственно равны Р0, Р1, Р2, …, Р5.
Граф состояний системы массового обслуживания представляет собой схему гибели и размножения. Все состояния системы можно представить в виде цепочки, в которой каждое из состояний связано с предыдущим и последующим.
Рис. 3
Для построенного графа запишем уравнения Колмогорова:
Чтобы решить данную систему зададим начальные условия:
Систему уравнений Колмогорова (систему дифференциальных уравнений) решим численным методом Эйлера с помощью программного пакета Maple 8 (см. Приложение 1).
Метод Эйлера
где - в нашем случае, это правые части уравнений Колмогорова, n=7.
(1)
Выберем шаг по времени . Предположим
, где Т – это время, за которое система выходит на стационарный режим. Отсюда получаем число шагов
.
Последовательно N раз вычисляя по формуле (1) получим зависимости вероятностей состояний системы от времени, приведенной на рис.4. Очевидно, что уже при
система выходит на стационарный режим. Значения вероятностей СМО при
равны:
Зависимости вероятностей состояний системы от времени
P0 - черный
P1 – синий
P2 – красный
P3 – голубой
P4 – малиновый
P5 – зеленый
Рис. 4
2.2 Финальные вероятности системы
При достаточно большом времени протекания процессов в системе ( ) могут устанавливаться вероятности состояний, не зависящие от времени, которые называются финальными вероятностями, т.е. в системе устанавливается стационарный режим. Если число состояний системы конечно, и из каждого из них за конечное число шагов можно перейти в любое другое состояние, то финальные вероятности существуют, т.е.
Т.к. в стационарном состоянии производные по времени равны 0, то уравнения для финальных вероятностей получаются из уравнений Колмогорова путем приравнивания правых частей 0. Запишем уравнения для финальных вероятностей для нашей СМО.
Решим данную систему линейных уравнений с помощью программного пакета Maple 8 (см. Приложение 1).
Получим финальные вероятности системы:
Сравнение вероятностей, полученных из системы уравнений Колмогорова при , с финальными вероятностями показывает, что ошибки
равны:
Т.е. достаточно малы. При увеличении интервала времени до , погрешности должны были стать еще меньше.
Это подтверждает правильность полученных результатов.
2.3 Расчет показатели эффективности системы по финальным вероятностям
Найдем показатели эффективности системы массового обслуживания. Наиболее важными являются следующие показатели:
1) Вероятность отказа в обслуживании заявки, т.е. вероятность того, что заявка покидает систему не обслуженной. В нашем случае заявке отказывается в обслуживании, если все 4 канала заняты, и очередь максимально заполнена (т.е. 3 человека в очереди), это соответствует состоянию системы S7. Т.к. вероятность прихода системы в состояние S7 равна Р7 , то
2) Относительная пропускная способность – это средняя доля поступивших заявок, обслуживаемых системой.
3) Абсолютная пропускная способность – это среднее число заявок, обслуживаемых в единицу времени.
4) Длина очереди, т.е. среднее число заявок в очереди. Длина очереди равна сумме произведений числа человек в очереди на вероятность соответствующего состояния.
5) Среднее время пребывания заявки в очереди определяется формулой Литтла
6) Среднее число занятых каналов определяется следующим образом:
Глава 3. Имитационное моделирование СМО
3.1 Алгоритм метода имитационного моделирования СМО (пошаговый подход)
Рассмотрим четырехканальную систему массового обслуживания (n = 3) с максимальной длиной очереди равной четырем (m = 2). В СМО поступает простейший поток заявок со средней интенсивностью λ = 4 и показательным законом распределения времени между поступлением заявок. Поток обслуживаемых в системе заявок является простейшим со средней интенсивностью μ = 1 и показательным законом распределения временем обслуживания.
Для имитации СМО воспользуемся одним из методов статистического моделирования – имитационным моделированием. Будем использовать пошаговый подход. Суть этого подхода в том, что состояния системы рассматриваются в последующие моменты времени, шаг между которыми является достаточно малым, чтобы за его время произошло не более одного события.
Выберем шаг по времени ( ). Он должен быть много меньше среднего времени поступления заявки (
) и среднего времени ее обслуживания (
), т.е.
, где (3.1.1)
Исходя из условия (3.1.1) определим шаг по времени .
Время поступления заявки в СМО и время ее обслуживания являются случайными величинами. Поэтому, при имитационном моделировании СМО их вычисление производится с помощью случайных чисел.
Рассмотрим поступление заявки в СМО. Вероятность того, что на интервале в СМО поступит заявка, равна:
.
Сгенерируем случайное число , и, если
, то будем считать, что заявка на данном шаге в систему поступила, если
, то не поступила.
В программе это осуществляет функция . Интервал времени
примем постоянным и равным 0,001, тогда отношение
будет равно 1000 . Если заявка поступила, то она принимает значение «истина», в противном случае значение «ложь».
function sob: boolean;
var r:real;
begin
r := Random(1000)/1000;
if r <= (i_deltaT*r_Lamda) then
sob:= true
else
sob:= false;
end;
Рассмотрим теперь обслуживание заявки в СМО. Время обслуживания заявки в системе определяется выражением
,
где – случайное число. В программе время обслуживания определяется с помощью функции
.
function tok: real;
var r:real;
t_ob: real;
begin
r:= Random(1000)/1000;
t_ob:= -1/r_Mu*ln(1-r);
tok:= t_ob;
end;
Алгоритм метода имитационного моделирования можно сформулировать следующим образом. Время работы СМО (Т) разбивается на шаги по времени dt, на каждом из них выполняется ряд действий. Вначале определяются состояния системы (занятость каналов, длина очереди), затем, с помощью функции , определяется, поступила ли на данном шаге заявка или нет.
Если поступила, и, при этом имеются свободные каналы, то с помощью функции генерируем время обработки заявки и ставим ее на обслуживание. Если все каналы заняты, а длина очереди меньше 4, то помещаем заявку в очередь, если же длина очереди равна 4, то заявке будет отказано в обслуживании.
В случае, когда на данном шаге заявка не поступала, а канал обслуживания освободился, проверяем, есть ли очередь. Если есть, то из очереди заявку ставим на обслуживание в свободный канал. После проделанных операций время обслуживания для занятых каналов уменьшаем на величину шага dt. По истечении времени Т, т.е., после моделирования работы СМО, вычисляются показатели эффективности работы системы и результаты выводятся на экран.
3.2 Блок-схема программы
Блок-схема программы, реализующей описанный алгоритм, приведена на рис.5. Распишем некоторые блоки более подробно.
Блок 1. Задание начальных значений параметров. Пользователем задаются значения: Time – время работы системы,
r_la – интенсивность потока поступления заявок ( ),
r_mu – интенсивность потока обслуживания заявок ( ).
Значения, задаваемые программой:
i_deltaT:=0.001 – шаг по времени;
i_post:=0;
i_otk:= 0;
i_obsl:=0;
i_och:=0;
i_tobs:=0;
t:=0 – параметр, следящий, сколько времени проработала система;
i_obsl:=0 – число обслуженных заявок;
i_tobs:=0 – общее время обслуживания заявок в системе;
i_post:=0 – число поступивших в СМО заявок;
i_otk:=0 – число заявок, которым было отказано в обслуживании;
i_obsl:=0 – число обслуженных заявок;
sost:='s1' – состояние системы (изначально устанавливаем СМО в состояние s1, т.е. все каналы свободны);
for i :=1 to 3 do
begin
t_och[i] := 0;- обнуляем время пребывания СМО в состояниях с длиной очереди 1, 2.
t_okonch[i] := 0; – время окончания обслуживания заявки во всех 3 каналах устанавливаем в 0, т.к. каналы пусты;
end;
Рис.5.
Блок 3. Задание состояний системы. Выделим у данной 3-х канальной системы 9 различных состояний: s1, s2,.. s9. СМО находится в состоянии s1, когда система свободна; s2..s7 – хотя бы один канал свободен; в состоянии s8, когда все каналы заняты, и есть место в очереди; в состоянии s9 - все каналы заняты, и очередь достигла максимальной длины (och=2).
Задаем состояния системы:
_sost:=1;
for i:=0 to 3 do
begin
if t_okonch[i+1]>0 then i_temp:= 1
else i_temp:= 0;
_sost:=_sost + i_temp* round(Exp(i*ln(2)));
end;
if _sost<7 then begin Sost:= _sost; exit; end;
if (_sost= 7) and (i_och< 2) then Sost:= _sost
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 видно, что результаты, полученные при аналитическом моделировании СМО, попадают в доверительный интервал, полученный по результатам имитационного моделирования. Т.е., результаты, полученные разными методами, согласуются.
7>