Skip to content

FackOff25/Queury_theory_model

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Задание:
	Требуется разработать программу, реализующую дискретно-событийное моделирование системы, рассмотренной в задании 2 домашнего задания №4. Обратите внимание, что все интервалы времени подчиняются законам распределений, носящим непрерывный характер. Поэтому категорически неверными является выбор целочисленных типов данных для моментов и интервалов времени, и тем более инкремент модельного времени с единичным шагом. Нужно реализовать именно переход от события к событию, как это сделано в GPSS и других проблемно-ориентированных системах. Для упрощения можно ограничиться использованием единственного потока случайных чисел для генерации всех необходимых случайных величин. Результатом работы программы должен быть лог-файл, содержащий записи типа: «В момент времени 12.345 транзакт с идентификатором 1 вошёл в модель», «В момент времени 123.456 транзакт с идентификатором 123 встал в очередь 1», «В момент времени 234.567 транзакт с идентификатором 234 занял устройство 2», «В момент времени 345.678 транзакт с идентификатором 345 освободил устройство 1», «В момент времени 456.789 транзакт с идентификатором 456 вышел из модели».
Система из 2 задания:
Моделирование будем проводить в течение 1 часа, в качестве единицы времени будем выбирать секунду. Время между приходом покупателей распределено на отрезке [0; R1+G1+B1]. Время обслуживания на первой кассе распределено на отрезке [R1; R1+G1+B1]. Время обслуживания на второй кассе распределено на отрезке [G1; R1+G1+B1].
При принятии решения покупатель сперва проверяет, есть ли свободная касса, и, если есть, направляется к ней. Если же обе кассы заняты, то выбирает кассу, очередь к которой в данный момент короче (очередь понимается с бытовой точки зрения, хотя модель можно было бы упростить, если иначе выбрать расположение блоков DEPART). Если же свободны обе кассы, или очередь к ним одинакова, то выбирается первая касса.
Описание входных данных:
	Отсутсвуют
Описание алгоритма:
	Класс события Event: 
Информационные поля: Содержит момент времени, когда произойдёт событие, время конца смены (когда события прекращают происходить), номер транзакта, с которым связано событие, строка с самим событием (Например «вошёл в устройство 1»), тип события (В данной программе: 1-вошёл в модель, 2-вышел из модели, 3-занял устройство, 4-освободил устройство, 5-занял очередь, 6-освободил очередь) и необязательное поля устройства с которым связано событие.
Методы: «произвести» событие (Заносит событие в переданный логфайл. Если событие происходит после конца смены, то ставится приставка “FEC: “, означающая предсказание события), возвращение значений информационных полей.
Класс устройства Device:
Информационные поля: идентификатор устройства, время окончания смены (окончание работы устройства), очередь, привязанная к устройству, логическое поле, содержащее занято ли устройство.
Методы: получение событий занятия и освобождение через момент занятия/освобождения и номера транзакта, захват и освобождение устройства (переключает лог. поле), проверка, занято ли устройство.
Класс очереди Queue:
Информационные поля: идентификатор очереди, время окончания смены (все покупатели вынужденно уходят),  список транзактов в очереди.
Методы: вход и выход из очереди (возвращают событие входа/выхода транзакта из очереди), возвращение длины и проверка пустая ли очередь
Основной класс:
Создаётся список событий (всегда упорядоченных по времени) и устройства/очереди. Список событий заполняется событиями прихода транзактов в модель до конца смены. Начинается очистка списка с начала следующим образом: из списка берётся первый транзакт, после чего он удаляется из списка. Согласно тому, какого типа событие он воспроизводится вместе с последующими: приход в модель сопровождается выбором куда идти транзакту, выбор осуществляется согласно заданию, используя методы классов, а после занятия в список заносится событие освобождения устройства, выход с устройства сопровождается выходом из модели и, при наличии транзактов в очереди устройства, выходом транзакта из неё с последующим занятием устройства. Остальные события или происходят сразу за другими, т.е. не заносятся в список, а исполняются сразу, либо не влекут за собой событий и просто исполняются. Исполнение происходит пока список не опустеет.
Описание выходных данных:
Лог-файл, содержащий записи типа: «В момент времени 12.345 транзакт с идентификатором 1 вошёл в модель», «В момент времени 123.456 транзакт с идентификатором 123 встал в очередь 1», «В момент времени 234.567 транзакт с идентификатором 234 занял устройство 2», «В момент времени 345.678 транзакт с идентификатором 345 освободил устройство 1», «В момент времени 456.789 транзакт с идентификатором 456 вышел из модели».

About

Модель СМО из двух касс и очередей к ним

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages