public double mu; // Интенсивность потока обслуживания заявок
public double timeStep; // Шагповремени
public double[] timeOfFinishProcessingReq; // Время окончания обслуживания заявки во всех каналах
public double[] timeInQueue; // Время пребывания СМО в состояниях с очередью
public double processingTime; // Времяработысистемы
public double totalProcessingTime; // Суммарноевремяобслуживаниязаявок
public uint requestEntryCount; // Числопоступившихзаявок
public uint declinedRequestCount; // Числоотказанныхзаявок
public uint acceptedRequestCount; // Числообслуженныхзаявок
uint queueLength; // Длина очереди //
Тип, описывающий состояния СМО
enum SysCondition {S0, S1, S2, S3, S4, S5, S6};
SysCondition currentSystemCondition; // Текущее состояние системы
Задание состояний системы. Выделим у данной 2-х канальной системы 7 различных состояний: S0, S1. S6. СМО находится в состоянии S0, когда система свободна; S1 – хотя бы один канал свободен; в состоянии S2, когда все каналы заняты, и есть место в очереди; в состоянии S6 – все каналы заняты, и очередь достигла максимальной длины (queueLength = 4).
Определяем текущее состояние системы с помощью функции GetCondition()
SysCondition GetCondition()
{
SysCondition p_currentCondit = SysCondition.S0;
int k = 0;
int busyChannelCount = 0;
for (int i = 0; i < channelCount; i++)
{
if (timeOfFinishProcessingReq[i] > 0)
{
k = 1;
busyChannelCount++;
}
else
{k = 0;}
p_currentCondit += k * (i + 1);
}
if (busyChannelCount > 1)
{p_currentCondit ++;}
return p_currentCondit + (int) QueueLength;
}
Изменение времени пребывания СМО в состояниях с длиной очереди 1, 2,3,4. Это реализуется следующим программным кодом:
if (queueLength > 0)
{
timeInQueue[queueLength– 1] += timeStep;
if (queueLength > 1)
{timeInQueue [queueLength – 2] += timeStep;}
}
Присутствует такая операция, как помещение заявки на обслуживание в свободный канал. Просматриваются, начиная с первого, все каналы, когда выполняется условие timeOfFinishProcessingReq [i] <= 0 (канал свободен), в него подается заявка, т.е. генерируется время окончания обслуживания заявки.
for (int i = 0; i < channelCount; i++)
{
if (timeOfFinishProcessingReq [i] <= 0)
{
timeOfFinishProcessingReq [i] = GetServiceTime();
totalProcessingTime+= timeOfFinishProcessingReq [i];
break;
}
}
Обслуживаниезаявоквканалахмоделируетсякодом:
for (int i = 0; i < channelCount; i++)
{
if (timeOfFinishProcessingReq [i] > 0)
{
timeOfFinishProcessingReq [i] -= timeStep;
}
}
Алгоритм метода имитационного моделирования реализован на языке программирования C#.
Наиболее важными являются такие показатели, как:
1) Вероятность отказа в обслуживании заявки, т.е. вероятность того, что заявка покидает систему не обслуженной.В нашем случае заявке отказывается в обслуживании, если все 2 канала заняты, и очередь максимально заполнена (т.е. 4 человек в очереди). Для нахождения вероятности отказа разделим время пребывания СМО в состоянии с очередью 4 на общее время работы системы.
2) Относительная пропускная способность – это средняя доля поступивших заявок, обслуживаемых системой.
3) Абсолютная пропускная способность– это среднее число заявок, обслуживаемых в единицу времени.
4) Длина очереди, т.е. среднее число заявок в очереди. Длина очереди равна сумме произведений числа человек в очереди на вероятность соответствующего состояния. Вероятности состояний найдем как отношение времени нахождения СМО в этом состоянии к общему времени работы системы.
5) Среднее время пребывания заявки в очереди определяется формулой Литтла
6) Среднее число занятых каналовопределяется следующим образом:
7) Процент заявок, которым было отказано в обслуживании, находится по формуле
8) Процент обслуженных заявок находится по формуле
3.4 Статистическая обработка результатов и их сравнение с результатами аналитического моделирования
Т.к. показатели эффективности получаются в результате моделирования СМО в течение конечного времени, они содержат случайную компоненту. Поэтому, для получения более надежных результатов нужно провести их статистическую обработку. С этой целью оценим доверительный интервал для них по результатам 20 прогонов программы.
Величина
попадает в доверительный интервал, если выполняется неравенство , где математическое ожидание (среднее значение), находится по формуле , исправленная дисперсия, ,N=20 – число прогонов,
– надежность. При и N=20 .Результат работы программы представлен на рис. 6.
Рис. 6. Вид программы
Для удобства сравнения результатов, полученных различными методами моделирования, представим их в виде таблицы.
Таблица 2.
Показателиэффективности СМО | Результатыаналитическогомоделирования | Результатыимитационного моделирования (послед. шаг) | Результаты имитационного моделирования | |
Нижняя границадоверительногоинтервала | Верхняя границадоверительногоинтервала | |||
Вероятность отказа | 0,174698253017626 | 0,158495148639101 | 0,246483801571923 | |
Относительная пропускная способность | 0,825301746982374 | 0,753516198428077 | 0,841504851360899 | |
Абсолютная пропускная способность | 3,96144838551539 | 3,61687775245477 | 4,03922328653232 | |
Средняя длина очереди | 1,68655313447018 | 1,62655862750852 | 2,10148609204869 | |
Среднее время пребывания заявки в очереди | 0,4242558575 | 0,351365236347954 | 0,338866380730942 | 0,437809602510145 |
Среднее число занятых каналов | 1,9807241927577 | 1,80843887622738 | 2,01961164326616 |
Из табл. 2 видно, что результаты, полученные при аналитическом моделировании СМО, попадают в доверительный интервал, полученный по результатам имитационного моделирования. Т.е., результаты, полученные разными методами, согласуются.
В данной работе рассмотрены основные методы моделирования СМО и расчета показателей их эффективности.
Проведено моделирование двухканальной СМО с максимальной длиной очереди равной 4 с помощью уравнений Колмогорова, а также, найдены финальные вероятности состояний системы. Рассчитаны показатели ее эффективности.
Проведено имитационное моделирование работы такой СМО. На языке программирования C# составлена программа, имитирующая ее работу. Проведена серия расчетов, по результатам которых найдены значения показателей эффективности системы и выполнена их статистическая обработка.
Полученные при имитационном моделировании результаты согласуются с результатами аналитического моделирования.
1. Вентцель Е.С. Исследование операций. – М.: Дрофа, 2004. – 208 с.
2. Волков И.К., Загоруйко Е.А. Исследование операций. – М.: Изд.-во МГТУ им. Н.Э. Баумана, 2002. – 435 с.
3. Волков И.К., Зуев С.М., Цветкова Г.М. Случайные процессы. – М.: Изд.-во МГТУ им. Н.Э. Баумана, 2000. – 447 с.
4. Гмурман В.Е. Руководство к решению задач по теории вероятностей и математической статистике. – М.: Высшая школа, 1979. – 400 с.
5. Ивницкий В.Л. Теория сетей массового обслуживания. – М.: Физматлит, 2004. – 772 с.
6. Исследование операций в экономике/ под ред. Н.Ш. Кремера. – М.: Юнити, 2004. – 407 с.
7. Таха Х.А. Введение в исследование операций. – М.: ИД «Вильямс», 2005. – 902 с.
8. Харин Ю.С., Малюгин В.И., Кирлица В.П. и др. Основы имитационного и статистического моделирования. – Минск: Дизайн ПРО, 1997. – 288 с.