Добавил:
sora.alai.102@gmail.com Делаю работы на заказ. Какие именно? Пишите. Или регайтесь на бирже, где я работаю: https://vsesdal.com/promo?ref=748568 Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод. указания к ЛР (часть 1).docx
Скачиваний:
30
Добавлен:
25.11.2018
Размер:
127.75 Кб
Скачать

Лабораторная работа №1 запуск системы gpss world и разработка простейших gpss-моделей

Цель работы: знакомство с системой имитационного моделирования GPSS World, запуск системы, изучение блоков GENERATE и TERMINATE, освоение способов управления продолжительностью моделирования, разработка простейших GPSS-моделей.

Краткие теоретические сведения

Имитационные модели на языке GPSS представляются в виде множества операторов (блоков), описывающих процессы генерации, перемещения, обработки и уничтожения динамических объектов, называемых транзактами. Транзакты являются аналогами единиц потоков в реальной системе. Они могут представлять собой различные подвижные элементы реальных систем: людей, автомобили, самолеты, сообщения и т.д. Последовательность записи операторов и специальные операторы управления задают маршруты перемещения транзактов между устройствами, накопителями, узлами. Задержка транзакта в очереди или для обработки в устройстве вызывает переход к моделированию новой цепи событий в соответствии с событийным методом.

Оператор языка GPSS состоит из частей, называемых полями. Поле – это набор печатных символов, отделенных пробелами или ограничителями. В общем случае оператор состоит из следующих полей: метка (необязательно) | глагол (обязательно) | операнды (зависит от глагола) ; комментарий (необязательно).

Метка (имя блока) – последовательность символов, начинающаяся с буквы. Она не должна совпадать с ключевыми словами GPSS. В некоторых операторах это поле является обязательным.

В поле глагола содержится ключевое слово GPSS, обозначающее либо один блок, либо одну из команд GPSS.

Исходные данные, необходимые для выполнения операций, соответствующих блоку или команде, задаются в поле операндов. Операнды разделяются запятыми и в общем случае обозначаются символами: A, B, C, D, E, F, G. Число операндов и их значения определяются типом блока или команды GPSS. Если операнд опущен, то вместо него ставится запятая.

Комментарии отделяются от поля операндов символом «;». Допускается запись комментария с начала строки. В этом случае в первой позиции строки ставится символ «;» или «*».

Рассмотрим вначале два важнейших блока GPSS.

Блок GЕNЕRАТЕ (генерировать)

Назначение: генерирование транзактов в модели в соответствии с заданным законом распределения интервалов поступления заявок в моделируемую систему.

Формат: GENERATE A, B, C, D, E.

Значение операндов

Операнд

Значение

Значение по умолчанию

A

Средний интервал времени (число, СЧА)

0

B

Половина поля допуска равномерно распределенного интервала (число, СЧА)

0

C

Смещение интервалов (момент прихода первого транзакта)

Отсутствует

D

Ограничитель (число транзактов, которые могут войти через данный блок)

E

Уровень приоритета (от 0 до 127, причем, чем больше номер, тем выше приоритет)

0

GENERATE – это блок, через который транзакты входят в модель. Не существует ограничений на число различных блоков GЕNЕRАТЕ в одной модели. Интервал времени между последовательными появлениями транзактов блока GENERAТЕ называют интервалом поступления.

Способ реализации прихода транзактов в модель GPSS является идентичным тому способу, который изложен в модели при описании процесса прихода заявок. Это означает, что, когда транзакт входит в модель через блок GENERАТЕ, интерпретатор планирует время поступления последователя транзакта путем розыгрыша случайного числа в соответствии с распределением интервалов времени поступления с последующим добавлением разыгранного значения к текущему значению таймера. При достижении этого значения времени следующий транзакт вводится в модель через блок GENERАТЕ и т. д.

Пользователь должен задать спецификацию распределения интервалов времени поступления в блоке GENERАТЕ. Информация,

необходимая для данного блока, задается операндами. Все возможные виды распределения интервалов времени прибытия в GPSS делят на равномерно распределенные и все другие виды распределения.

Таким образом, специально рассматривают только простейшее из всех нетривиальных распределений, а именно равномерное распределение. Более сложные интервалы времени поступления транзактов могут быть заданы с использованием так называемого модификатора-функции. Под действием модификатора-функции значение операнда А умножается на значение функции, заданной операндом В.

Блок ТЕRМINАТЕ (завершить)

Назначение: удаление транзактов из модели.

Формат: TERMINATE A.

Значение операндов

Операнд

Значение

Значение по умолчанию

A

Указатель уменьшения счетчика завершений

0

Транзакты удаляются из модели, попадая в блок ТЕRМINАТЕ. Блоки ТЕRМINАТЕ всегда позволяют выйти всем транзактам, которые пытаются это сделать. В модели может быть любое число блоков ТЕRМINАТЕ.

Операнд А является указателем уменьшения счетчика завершений. Иначе говоря, он задает величину, которая должна вычитаться из специального счетчика, называемого счетчиком завершений, каждый раз, когда транзакт входит в блок ТЕRМINАТЕ. Если разработчик не желает задавать операнд А блока ТЕRМINАТЕ, то по умолчанию подразумевается значение 0. Вход транзакта в такой блок ТЕRМINАТЕ не вызывает уменьшения содержания счетчика завершений.

Что же такое счетчик завершений? Эта такая ячейка памяти ЭВМ, которая хранит положительное целое значение, записанное в начале моделирования. В процессе моделирования транзакты попадают в блоки ТЕRМINАТЕ, и таким образом происходит уменьшение содержания счетчика. При достижении содержанием счетчика нуля моделирование завершается.

В модели может быть несколько блоков ТЕRМINАТЕ, но счетчик завершений только один, с начальным значением, указанным в операнде А команды SТАRТ (начать). Не следует путать ограничитель транзактов в блоке GENERАТЕ и счетчик завершения. Ограничитель задает число транзактов, которые войдут в модель, а счетчик – число транзактов, которые выйдут из модели. По окончании моделирования транзакты могут оставаться в модели.

Рассмотрим пример, в котором блок ТЕRМINАТЕ и команда SТАRТ используются для управления процессом моделирования.

Предположим, что в качестве единицы времени выбрана 1 минута. Требуется промоделировать поведение системы в течение 8 часов, а затем моделирование должно быть закончено. Это можно сделать следующим образом.

  1. В модель включают так называемый сегмент-таймер из трех операторов:

GENERАТЕ 480;

ТЕRМINАТЕ 1;

SТАRТ 1.

  1. Во всех прочих блоках ТЕRМINАТЕ в модели подразумевается использование операнда А по умолчанию. Это означает, что завершение моделирования, определяемое счетчиком завершений, не будет зависеть от других блоков ТЕRМINАТЕ.

Единичное значение операнда А команды SТАRТ вызывает запись в счетчик завершений единицы в качестве начального значения. В процессе моделирования завершения движений транзактов, которые происходят время от времени в других блоках ТЕRMINАТЕ, не оказывают воздействия на счетчик завершений. Следовательно, в момент модельного времени, равный 480, транзакт попадет в блок GЕNЕRАТЕ и сразу же перейдет в следующий блок ТЕRМINАТЕ, вызывая тем самым подпрограмму ТЕRМINАТЕ. Поскольку операнд этого блока содержит единицу, то из счетчика завершений вычитается единица. Это уменьшает значение счетчика от единицы до нуля. В результате интерпретатор прекращает моделирование.

Описанный способ управления продолжительностью моделирования позволяет завершать моделирование по истечении заданного промежутка времени.

Часто встречается ситуация, когда завершать моделирование надо после того, как модель покинет заданное число транзактов определенного типа. В этом случае поступают следующим образом.

  1. В команде SТАRТ операнду А присваивается значение заданного числа транзактов.

  2. Во всех блоках ТЕRМINАТЕ, через которые транзакты заданного типа покидают модель, операнду А присваивается 1 или другое, отличное от 0 число, соответствующее содержательному значению транзактов.

  3. Во всех других блоках ТЕRМINАТЕ используется значение операнда А по умолчанию (А=0).

Ниже приведен пример, в котором моделирование заканчивается, когда через модель пройдет 200 транзактов:

GENERАТЕ 15,5;

ТЕRМINАТЕ 1;

SТАRТ 200.