/smo_tvims

Моделирование СМО в рамках практики по курсу "Теории вероятности и математической статистике"

Primary LanguagePython

smo_tvims

Моделирование СМО в рамках практики по курсу "Теории вероятности и математической статистике" Моделируем поведение покупателя в магазине, в котором работают 2 кассы, причём к каждой из них выстраивается отдельная очередь, а квалификация сотрудников немного отличается, поэтому время обслуживания распределено с разными параметрами. Каждая касса будет представлена одноканальным устройством, обращение к которым будем осуществлять по номерам. Очереди также будут идентифицироваться номерами, без введения символьных имён. Моделирование будем проводить в течение 1 часа, в качестве единицы времени будем выбирать секунду. Все интервалы времени подчиняются законам распределений, носящим непрерывный характер. Поэтому категорически неверными является выбор целочисленных типов данных для моментов и интервалов времени, и тем более инкремент модельного времени с единичным шагом. Нужно реализовать именно переход от события к событию, как это сделано в GPSS и других проблемно-ориентированных системах. Для упрощения можно ограничиться использованием единственного потока случайных чисел для генерации всех необходимых случайных величин. Результатом работы программы должен быть лог-файл, содержащий записи типа:

«В момент времени 12.345 транзакт с идентификатором 1 вошёл в модель» «В момент времени 123.456 транзакт с идентификатором 123 встал в очередь 1» «В момент времени 234.567 транзакт с идентификатором 234 занял устройство 2» «В момент времени 345.678 транзакт с идентификатором 345 освободил устройство 1» «В момент времени 456.789 транзакт с идентификатором 456 вышел из модели» В программе предусмотрены 2 цепи: цепь текущих событий (CEC) и цепь будущих событий (FEC), которые будут заполняться и изменяться в будущем. Изначально в цепи будущих событий будут находиться транзакты, имеющие только время генерации. Программа последовательно выполняет 3 этапа (или фазы):

1ый этап – фаза ввода: здесь транзакты добавляются в FEC и ожидают своей очереди

2ой этап – фаза распределения: здесь транзакты с минимальным временем перемещаются из FEC в CEC и указывается соответствующая очередь

3ый этап – фаза просмотра: здесь транзакты либо меняют свою позицию в модели (перемещается по очереди, переходит на обслуживающее устройство), либо выходит из модели)