Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лр6-GPSS2.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
122 Кб
Скачать
☆
  1. Структура операторов gpss

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

Пример оператора:

110  L1    GENERATE     30,5                     Первый сегмент модели     <метка><название>   <поле переменных>                <комментарии>

В поле переменных выделяют подполя, разделяемые при записи запятыми и служащие для указания чисел, стандартных числовых атрибутов (СЧА), символов, обозначающих метки, идентификаторов, указателей разновидностей операторов и т.п. Подполя могут быть пустыми. Возможна запись комментария после последнего непустого поля через «;».

Стандартные числовые атрибуты служат для сокращенного указания различных величин, фигурирующих в модели.

Примеры СЧА: К126 - константа, равная 126; V2 - переменная N 2; Q4 - длина очереди N 4; X5 - хранимая величина N 5; FN7 - функция N 7; P4 - значение параметра N 4 транзакта; *6 - содержимое параметра  N 6 транзакта; S*3 (или FN*3) - память (или функция), определенная в параметре  N 3 транзакта.

Основные операторы языка  GPSS  приведены в виде примеров с конкретными значениями подполей в поле переменных.

  1. Главные операторы управления

SIMULATE (моделировать, воспроизвести)

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

START (начать)

При исполнении этого ОУ происходят следующие события:

  • счетчик завершений устанавливается в начальное значение,

  • инициализируется процесс поступления транзактов в модель,

  • начинается последовательное движение транзактов от ОБ к ОБ.

Формат ОУ имеет вид:

<START А>,

А – начальное значение счетчика завершений, от 1 и выше.

Метка у ОУ отсутствует по определению.

START 10 - занесение значения 10 в итоговый счетчик, вывод накопленных статистических данных производится с интервалом изменения содержимого итогового счетчика в 1 единицу.

START 100,,25 - занесение значения 100 в итоговый счетчик, вывод накопленных статистических данных производится с интервалом изменения содержимого итогового счетчика в 25 единиц.

ЕND (окончить)

  1. Операторы блоков (исполнения)

GENERATE (Генерировать, произвести)

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

Формат:< GENERATE A,[B,C,D,E,F,G,H,I]>, где

А - среднее значение интервала времени;

В - разброс или модификатор среднего значения (по умолчанию - ноль);

С - время появления первого транзакта;

D - общее число генерируемых транзактов;

Е - уровень приоритета каждого транзакта (по умолчанию - ноль).

F,G,H,I – параметры транзакты.

GENERATE 2,1,,10 - генерируется транзакт, распределенный по равномерному закону со средним значением 2 и модификатором 1, всего будет произведено 10 таких транзактов».

GENERATE   12,4,50,5,1  -  генерация транзактов, интервалы времени между появлениями транзактов распределены равномерно в диапазоне [12-4, 12+4], первый транзакт появится с задержкой в 50 единиц модельного времени, всего будет создано 5 транзактов, приоритет транзактов равен единице.

GENERATE   12,4,50,,1    -  то же, но количество  генерируемых транзактов неограниченно.

GENERATE   6, FN$FFF,50,5,1  -  то же, но интервал времени между появлениями транзактов есть целая часть произведения числа 6 на значение функции FFF.

TERMINATE (Уничтожить, терминировать)

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

Формат: <TERMINATE [A]>, где:

А - величина, на которую будет уменьшен счетчик завершений. По умолчанию А=0. Операнд А может принимать любые значения в интервале от 0 до плюс бесконечности. Физический смысл числового значения операнда А заключается в задании веса терминирования. Например, на погрузочную площадку выходят двери 4 складов, большемерная фура занимает всю длину погрузочной площадки, и никакая другая машина не сможет производить погрузку. Окончание погрузки фуры (выход транзакта из системы) освобождает сразу 4 места. Эта цифра вычитается из числа стартов (счетчика завершений).

TERMINATE    3 - удаление транзакта из системы, при этом содержимое итогового счетчика уменьшается на 3 единицы, моделирование заканчивается, если содержимое счетчика станет равным или меньше нуля.

SEIZE (завладеть), RELEASE (освободить)

Оператор SEIZE, является парным с оператором RELEASE, использование их по одиночке не допустимо. Имена, записываемые в операнде А пары должны быть идентичны. Оператор служит приглашением ко входу в одно из устройств модели. Транзакт, подойдя к блоку SEIZE, пытается занять устройство, названное в операторе. Если устройство занято, транзакт ожидает освобождения устройства перед этим оператором. Перед оператором SEIZE может находиться любое количество транзактов. При попадании первого транзакта на обслуживание в устройство, происходит переключение, осуществляемое программой, запрещающее вход в устройство до окончания обслуживания.

Формат:< SEIZE А>,

где А - имя (или номер) устройства.

Функция оператора RELEASE - моделировать освобождение устройства. Пройдя обслуживание в операторе ADVANCE, и исполнив, оператор RELEASE, транзакт переключает поименованное в операторе устройство из положения «занято» в положение «свободно» и разрешает вход в ADVANCE, первому из транзактов, ожидающих перед оператором SEIZE .

Формат: <RELEASE А>,

где А - имя (или номер) устройства.

SEIZE    PLOT   - занятие устройства PLOT приходящим на его вход транзактом; если устройство занято, то транзакт задерживается в очереди к этому устройству.

RELEASE  PLOT   - освобождение устройства PLOT обслуженным транзактом.

ADVANCE ( продвижение вперед, успех)

Этот оператор моделирует задержку транзакта в устройстве (в терминах теории СМО - обработку заявки).

Формат:< ADVANCE A,[B]>, где

А - среднее время задержки,

В - разброс относительно среднего значения (модификатор).

На месте операнда А, как и в операторе GENERATE, может быть задана любая встроенная функция, тогда операнд В отсутствует.

ADVANCE    12,4  - задержка транзакта на время, величина которого распределена равномерно в диапазоне [12-4, 12+4].

Пример 1. В систему поступают сообщения с интервалом 2. Найти время прибытия пятого сообщения.

Н апечатайте файл, приведенный, ниже и выполните его.

Получите и представьте ваши отчеты после моделирования.

Вопросы

  1. Каков номер блока GENERATE?

  2. Каков номер блока TERMINATE?

  3. Каково общее количество вошедших сообщений? Подсказка: Смотрите на ОБЩЕЕ КОЛИЧЕСТВО счетчика в блоке GENERATE.

  4. Каково ТЕКУЩЕЕ число сообщений в каждом блоке?

Полученные данные внесите в таблицу 1

Номер вопроса

1

2

3

4

Ответ

  1. В какое модельное время было создано последнее сообщение? Полученные данные внесите в таблицу 2.

  2. Измените и выполните модель, чтобы определить время прибытия 13 сообщений. Полученные данные внесите в таблицу 2

  3. Измените и выполните модель, чтобы определить время прибытия 10 сообщений, поступающих с интервалом от 5 до 15 мин. Полученные данные внесите в таблицу 2

5 сообщений

13 сообщений

10 сообщений

Модельное время

Пример 2. Заявки поступают в систему массового обслуживания через фиксированное время (7 единиц времени). Обработка (обслуживание) каждой заявки занимает также некоторое фиксированное время (5 единиц времени). После обработки заявки покидают СМО. Смоделировать обслуживание 50 заявок.

Напечатайте файл, приведенный, ниже и выполните его.

Вопросы

  1. В какое модельное время было создано последнее сообщение?

  2. Выполните модель еще 5 раз. Внесите полученные значения модельного времени в таблицу 3. Сравните и обоснуйте полученные результаты

Прогон № 1

Прогон № 2

Прогон № 3

Прогон № 4

Прогон № 5

Модельное время

  1. Измените и выполните модель, чтобы определить время обработки заявок, поступающих с интервалом 7 мин. и обрабатываемых от 2 до 6 мин. Отследите время поступления, обработки и удаления для 5 заявок. (Пошаговое выполнение). Полученные данные внесите в таблицу 4.

Время получения заявки

Время начала обработки

Время окончания обработки

Время удаление заявки

Заявка № 1

Пример 3. Через терминал проходят пакеты двух типов. Пакеты первого типа поступают в систему через фиксированное время (15 мин). Пакеты второго типа поступают в систему через 17-21 мин. Смоделировать прохождение 25 заявок.

Напечатайте файл, приведенный, ниже и выполните его.

Вопросы

  1. Сколько потребуется времени для прохождения 25 сообщений?

  2. Сколько пакетов первого и второго типа прошло через терминал.

  3. Определите время первого прибытия пакетов первого и второго типа.

  4. Пакет какого типа прибыл первым?

Полученные данные внесите в таблицу.

Время прохождения 25 пакетов

Количество пакетов первого типа

Количество пакетов второго типа

Время прибытия первого пакета первого типа

Время прибытия первого пакета второго типа

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]