Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
34
Добавлен:
20.02.2016
Размер:
103.42 Кб
Скачать

Формат программы gpss

В GPSSприменяется бланковая форма записи.

Метка

Операция

Операнды (A,B,C,D,E,F,G)

1 … 7

8 …. 18

19 ……

Мет1

ADVANCE

10,5

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

Поле операции служит для задания типа блока.

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

Комментарий записывается через пробел за операндами или целой строкой со звездочкой в первой позиции.

Управляющие операторы GPSS

Начало модуля

SIMULATE

Конец модуля

END

Запуск модели

START колСчетчикаТранзактов

Исходный текст модели системы моделирования размещен до оператора START.

Блоки устройств

1.Занять устройство

SEIZE имяУстройства

2. Освободить устройство

RELEASE имяУстройства

3. Прервать обслуживание менее приоритетной заявки

PREEMPT имяУстройства

Блок имеет две формы.

Первая (используется совместно с блоком SEIZE, который задает обслуживание менее приоритетного транзакта), когдаPREEMPTпрерывает обслуживание менее приоритетной заявки и обслуживает более приоритетную.

Вторая форма используется при задании различных приоритетов у транзактов, если в момент поступления транзата на блок PREEMPTуказанное в нем устройство уже занято обслуживанием прерывания, то транзакт задерживается на входе блока. Когда указанное устройство закончит обслуживание первого прерывания, транзакт, задержанный на входе войдет в блок и устройство займется его обслуживанием второго прерывающего транзакта, а не прерванного. Один транзакт может прервать одновременно несколько устройств.

4. Освободить устройство от прерывающей заявки

RETURN имяУстройства

Блоки накопителя

Описать накопитель

имяНакопителя STORAGE колЕдиниц

Занять накопитель

ENTERимяНакопителя,колЕдиниц

В начале работы все накопители считаются не занятыми. Если в накопителе нет достаточного количества свободных единиц, то транзакт задерживается на входе блока до тех пор, пока в этом накопителе не будет освобождено необходимое количество единиц. Пока транзакт ждет, другой транзакт может войти, если для него достаточно свободных единиц в накопителе.

Освободить накопитель

LEAVE имяНакопителя,колЕдиниц

В GPSSдля накопителей интерпретатор подсчитывает:

  • среднюю и максимальную занятость;

  • общее число транзактов, занимавших накопитель;

  • общее время занятости накопителя;

  • среднее время занятости накопителя одним транзактом.

Блоки работы с транзактами.

Создание транзактов.

А,В – время между соседними моментами создания транзактов

С – момент выхода первого транзакта

D– число создаваемых транзактов

E,F,G – атрибуты транзактов (приоритет, количество параметров, формат)

GENERATE A,B,C,D,E,F,G

После задания транзакта все параметры имеют нулевое значение. Обозначение параметров Р1,Р2,Р3,… Каждый транзакт имеет стандартный числовой атрибут «отметка времени», в который заносится время входа транзакта в систему.

Уничтожение транзактов

TERMINATEколУдаленныхТранзактов

Задержка транзактов на постоянное время

ADVANCE колВремени

Задержка транзактов на случайное время

ADVANCE среднееЗначВремени,максимОтклонение

Если время задержки имеет равномерное распределение в интервале, то в поле А записывается среднее значение интервала, а в поле В – максимальное отклонение от среднего.

Или

ADVANCE задержкаЕдиниц,функцияЗаконаРаспределения

Если время задержки имеет более сложное распределение, то время задержки определяется произведением значением поля А на функцию в поле В.

Размножение транзактоа через блок SPLITпроизводится генерация определенного количества копий этого транзакта в соответствии с числом, заданным в поле А. После прохода блокаSPLITтранзакт поступает на вход следующего за ним блока, а его копии на вход блока, метка которого указана в поле В. Если не заданы поляC иD, то созданные транзаткы будут иметь параметры родительского транзакт.

Размножение транзактов (копии)

SPLITколЕдиниц,меткаБлокаКопииТранзакта,колПараметровКопии

Синхронизация транзактов определяется сбором определенного количества транзактов одного семейства. Число собираемых транзактов называется счетчиком сборки и определяется полем А блока ASSAMBLE.

Синхронизация транзактов с уничтожением

ASSAMBLE сборкаКолТранзактов

Синхронизация транзактов без уничтожения

GATHER сборкаКолТранзактов

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

Сопряжение блоков

имяБлока MATCH имяСопряженногоБлока

В ходе моделирования часто возникает необходимость в изменении значений параметров транзактов. В поле А блока ASSIGNзадается номер параметра, значение которого нужно изменить, и обозначение того действия, которое необходимо с ним выполнить. Возможно только сложение и вычитание. Второй операнд этого действия задается в полях В и С: в поле В может быть указано некоторое конкретное число или обозначение стандартного числового атрибута, которое участвует в выполнении операции с параметром. Если в поле С стоит целое число, то оно интерпретируется как номер функции, на значение которой следует умножить число из поля В, чтобы получить второй операнд для операции с параметром.

Изменение значений параметров транзактов

ASSIGN номерПараметра_и_Действие,значение_или_имя

Каждый транзакт, двигающийся в модели, имеет специальный параметр, называемый отметкой времени, с помощью которого можно определить время пребывания транзакта в модели. Начальное значение равно времени входа транзакта в систему. Разность текущего времени и начального записывается в атрибут М1. Текущее время системы определяется атрибутом С1.

Отметка текущего времени в i-тый параметр

MARK номерПараметра

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

Изменение приоритетов транзактов

PRIORITY ЗнПриоритета

При описании сложных моделей часто появляется необходимость передать транзакты в блоки, которые непосредственно не следуют за данным блоком. Одним из режимов условной передачи транзакта является режим BOTH. При работе в этом режиме транзакт переходит к блоку указанному в поле В, если передача не возможна, переход по метке поля С. Если в поле А задана десятичная дробь, то она трактуется интерпретатором как вероятность перехода транзакта на блок метка которого указана в поле С.

Изменение маршрутов движения транзактов

безусловный переход

TRANSFER ,меткаПерехода

условный переход

TRANSFERBOTH,меткаВозможногоПерехода,меткаНевозможногоПерехода

случайный переход

TRANSFER вероятнПерехода1,меткаПерехода1,меткаПерехода2

Соседние файлы в папке КР