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

Рассмотрим теперь обслуживание заявки в СМО. Время обслуживания заявки в системе определяется выражением , где – случайное число. В программе время обслуживания определяется с помощью функции GetServiceTime () .

double GetServiceTime()

{

double r = R. NextDouble();

return (-1/mu*Math. Log (1-r, Math.E));

}

Алгоритм метода имитационного моделирования можно сформулировать следующим образом. Время работы СМО (Т ) разбивается на шаги по времени dt , на каждом из них выполняется ряд действий. Вначале определяются состояния системы (занятость каналов, длина очереди), затем, с помощью функции isRequested () , определяется, поступила ли на данном шаге заявка или нет.

Если поступила, и, при этом имеются свободные каналы, то с помощью функции GetServiceTime () генерируем время обработки заявки и ставим ее на обслуживание. Если все каналы заняты, а длина очереди меньше 4, то помещаем заявку в очередь, если же длина очереди равна 4, то заявке будет отказано в обслуживании.

В случае, когда на данном шаге заявка не поступала, а канал обслуживания освободился, проверяем, есть ли очередь. Если есть, то из очереди заявку ставим на обслуживание в свободный канал. После проделанных операций время обслуживания для занятых каналов уменьшаем на величину шага dt .

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

3.2 Блок-схема программы

Блок-схема программы, реализующей описанный алгоритм, приведена на рис. 5.


Рис. 5. Блок-схема программы

Распишем некоторые блоки более подробно.

Блок 1. Задание начальных значений параметров.

Random R; // Генератор случайных чисел

public uint maxQueueLength; // Максимальная длина очереди

public uint channelCount; // Число каналов в системе

public double lambda; // Интенсивность потока поступления заявок

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; // Длина очереди //

Тип, описывающий состояния СМО

К-во Просмотров: 459
Бесплатно скачать Курсовая работа: Имитационное моделирование системы массового обслуживания