МОДЕЛИРОВАНИЕ ОДНОКАНАЛЬНЫХ СИСТЕМ МАССОВОГО ОБСЛУЖИВАНИЯ.
Структура модели. Понятие транзакта.
Дальнейшее изложение материала будет ориентировано на одну из наиболее популярных систем имитационного моделирования GPSS(General Purpors Simulation System -системы имитационного моделирования общего назначения). Эта система является интерпретатором, т.е. сочетает перевод текста модели с его выполнением.
В любой модели обслуживания происходит перемещение неких элементов отображающих перемещения в моделируемом объекте. Например, финансовый поток, поток материальных ценностей, поток клиентов и тому подобное. Такие элементы в имитационном моделировании называются транзактами. В процессе моделирования транзакты входят в модель в определенные моменты времени в соответствии с теми логическими потребностями, которые возникают в модели. Подобным же образом транзакты покидают модель в определенные моменты времени в зависимости от специфики моделирования.
Модель может быть представлены в виде, блоков, выполняющих свои, специфические функции. Транзакт перемещается от блока к блоку, каждый из которых можно рассматривать как некую подпрограмму. В тот момент, когда, транзакт входит в блок, на исполнение вызывается соответствующая подпрограмма, и далее транзакт (в общем случае) пытается войти в следующий блок. Такое продвижение транзакта продолжается до тех пор, пока не произойдет одно из следующих событий:
транзакт входит в блок, функцией которого является задержка транзакта на некоторое определенно время;
транзакт входит в блок, функцией которого является удаление транзакта из модели;
транзакт "пытается" войти в следующий блок в соответствии с предписанной моделью логикой, однако блок "отказывается" принять этот транзакт. Транзакт остается в текущем блоке и продолжает движение лишь после разрешения войти в следующий блок.
Если возникло одно из перечисленных условий и транзакт остается на месте, то начинается перемещение в модели другого транзакта и, таким образом, выполнение моделирования в системе продолжается.
Любая модель содержит два или более сегментов, определяющих последовательность процедур обработки транзактов. Сегменты независимы друг от друга и этим структура блок-схемы модели существенно отличается от структуры схемы алгоритма программы.
Различные события в моделируемых системах происходят в течение некоторого периода времени. Транзакты поступают в систему, а когда подходит очередь, поступают на обслуживание. После завершения обслуживания транзакт покидает систему. При моделировании все события должны происходить на фоне модельного времени. Следовательно, интерпретатор GPSS должен автоматически обслуживать таймер модельного времени.
Когда начинается моделирование, в интерпретаторе планируется приход первого транзакта. После этого таймер модельного времени устанавливается в значение времени, соответствующее приходу первого транзакта. Этот транзакт (а также другие, если они приходят в тот же моменте времени) входит в модель. Далее он (или они, друг за другом) продвигается через все возможные блоки модели, которые ему встречаются. Интерпретатор GPSS продвигает далее значение таймера до значения времени, когда происходит следующее (или следующие) событие, которое им запланировано. Эти события, возникающие как следствие продвижения транзактов через блоки, возникают в последующие моменты времени. Когда в этот второй отмеченный таймером момент времени не остается транзакта, который надо перемещать, таймер опять продвигается, и т.д.
Отметим следующие важные особенности GPSS и его таймера:
Таймер GPSS регистрирует целые значения. Это означает, что события могут возникать только в "целые" моменты времени.
Единицу времени, которая может быть отмечена таймером, определяет пользователь.
GPSS является интерпретатором для "следующего события". Иначе говоря, после того как модель полностью скорректирована в данный момент модельного времени, таймер продвигается к ближайшему значению времени, на которое запланировано следующее событие. Интервал модельного времени пропускается, если на этом интервале нет событий. Это означает , что время прогона модели не зависит от от единицы времени, выбранной пользователем.
В блок-схеме модели каждый блок занимает вполне определенное место. Глаголы, описывающие основные функциональные назначения блоков. Каждый из блоков характеризуется своим собственным предписанным ему глаголом, например, GENERATE (ГЕНЕРИРОВАТЬ), LEAVE (ВЫЙТИ) и т.п. Блоки могут содержать различные связанные с ним операнды. Операнды блоков задают информацию, специфичную для действия данного. Под значениями операндов могут подразумеваться значения аргументов, используемых при обращениях к подпрограммам. Число операндов зависит от типа блока. Одни операнды некоторых блоков должны быть специфицированы всегда, а другие могут задаваться или не задаваться. В некоторых случаях, когда операнды, задаваемые по выбору, в явном виде не заданы, интерпретатор предполагает значения этих операндов заданными по умолчанию.