Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЕКЦИИ ПО GPSS.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
101.74 Mб
Скачать

Транзакты

Транзакты вводятся в модель через блоки GENERATE и могут выводиться из модели через блоки TERMINATE.

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

Число транзактов, первоначально находящихся в пассивном буфере, ограничено и определяется основной памятью используемой ЭВМ.

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

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

Из всех транзактов, находящихся в блок‑схеме, в каждый момент модельного времени лишь один транзакт является активным (движущимся), все остальные пассивны. При входе его в очередной блок интерпретатор вызывает на выполнение фрагмент программы, соответствующий этому блоку.

Начав свое движение по блок‑схеме, активный транзакт продолжает его, до тех пор, пока не произойдет одно из трех событий:

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

транзакт входит в блок TERMINATE и выводится из блок‑схемы;

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

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

Для рассмотрения этой логики используется следующая запись, характеризующая состояние транзакта:

[N, T, NTB, PR, NSB], где

N – номер транзакта (в соответствии с первоначальной нумерацией транзактов в пассивном буфере),

T – время, на которое запланировано дальнейшее движение транзакта (для транзактов, попавших в условие блокировки, на этом месте используется аббревиатура КМР – как можно раньше);

NTB – номер текущего блока нахождения транзакта;

PR – приоритет транзакта (значения приоритета – целые числа от 0 до 127: чем больше значение, тем больше приоритет). Значения приоритета могут определяться при входе транзакта в ИМ из блока GENERATE (по умолчанию – приоритет 0), изменяться при прохождении блока PRIORITY. Параметр транзакта, определяющий его приоритет, используется для моделирования относительного приоритета заявок в моделях СМО;

NSB – номер следующего блока для движения транзакта.

В дополнение к параметру PR каждый транзакт может иметь до 100 параметров. С помощью них, в частности, может моделироваться неоднородность заявок СМО: эта неоднородность может задавать логику движения транзакта в СМО, временные характеристики воздействия блоков на транзакт и др.

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

Основные правила определения параметров транзакта:

  1. Число используемых параметров транзакта определяется операндом F блока GENERATE;

  2. СЧА параметров транзакта определяется Pj, где Р- групповое имя, j – номер параметра (символическое имя не используется);

  3. Значениями параметров транзакта могут быть целые числа со знаком и без знака. Формат параметров определяется операндом G блока GENERATE, из которого он вышел (H- полуслово ( ), F- слово ( ).

  4. При входе в модель все параметры транзакта имеют нулевые значения

  5. Устанавливаться и изменяться могут при прохождении блока ASSIGGN

Использоваться параметры транзакта могут:

  1. в качестве операндов блоков,

  2. в качестве аргументов GPSS-функций,

  3. описания арифметического выражения.

Описание некоторых блоков

Блок GENERATE – ввод транзактов в модель

Операнды: А, В – используются для моделирования интервала модельного времени между транзактами. Если заданы числами, то А- определяет мат. ожидание ЗРПВ, В – определяет половину интервала области определения.

С- смещение момента входа в модель 1-го транзакта;

D- ограничитель числа транзактов (по умолчанию ∞);

Е- уровень приоритета транзактов (по умолчанию 0);

F – число используемых параметров;

G – формат используемых параметров.

Блок TERMINATE- вывод транзактов из модели

Операнды: А- указатель уменьшения счетчика завершений и счетчика снимков (по умолчанию =0).

Счетчик завершений (СЗ) – это ячейка памяти, в которую первоначально с помощью управляющей карты START заносится целое положительное число. Это значение уменьшается на величину А при прохождении транзактом блока TERMINATE с операндом А. Как только значение СЗ станет ≤ 0, то процесс моделирования завершается. Счетчик снимков действует аналогично (см. вывод результатов моделирования).

Блоки SEIZE (занять прибор) и RELEASE (освободить прибор)

Операнд А – символическое или числовое имя прибора (обязательный операнд). Если прибор занят, то для следующего транзакта возникаент условие блокировки.

СЧА прибора:

Fj или F${имя} = 0 – прибор не занят, 1 – занят;

FC – количество занятий прибора

FA – загрузка прибора, FT –средняя задержка транзактов на приборе.

Блок ADVANCE – реализация задержки транзакта.

Операнды А, В – используются аналогично соответствующим операндам блока GENERATE.

Блоки QUEUE и DEPART – регистраторы очередей

Используются для сбора статистики по очереди.

Блок QUEUE регистрирует вход транзакта в очередь с именем, определяемым операндом А, а блок DEPART –выход из соответствующей очереди. Операнд В определяет число мест в очереди, занимаемых одним транзактом (по умолчанию =1).

СЧА регистраторов очередей:

Qj или Q${имя} – текущая длина очереди,

QA – средняя длина очереди, QC – число входов в очередь, QM – максимальная длина очереди, QT – среднее время пребывания в очереди с учетом нулевых входов, QX- без учета нулевых входов, QZ – число нулевых входов.

Блоки ENTER – вход в МКУ, LEAVE- выход из МКУ

Операнды А – имя МКУ, В –число каналов МКУ занимаемых (освобождаемых) транзактом (по умолчанию =1).

Исходное число каналов МКУ задается картой описания

STORADGE (имя МКУ1, емкость МКУ1/… символическое имя начинается с $).

Групповые имена СЧА МКУ: R – текущая емкость незаполненной части, S – емкость заполненной части, SA – среднее число занятых каналов, SC- число входов, SM- максимальное число занятых каналов, SR – загрузка МКУ, ST – среднее время пребывания транзактов в МКУ.

Блок PRIORITY – изменение уровня приоритета транзакта.

Операнд А – новый уровень приоритета транзакта (по умолчанию 0).

Блок ASSING – блок определения и изменения параметров транзакта.

Операнд А – определяет номер модифицируемого параметра транзакта (например, если А=3, определяется параметр №3; если А=Р3, определяется параметр транзакта, номер которого записан в параметре №3 транзакта; если А=4+, увеличивается параметр №4 транзакта; если А=Р2-, то уменьшается параметр транзакта, номер которого записан в параметре №23 транзакта);

Операнд В – величина, используемая для определения или модификации параметра транзакта.

Возможен режим работы блока с использованием GPSS- функций. В этом режиме используются операнды А, В, С. Операнд С определяет № GPSS- функции, участвующей в определении или модификации параметра транзакта; операнд В- величина, на которую умножается вычисленное значение GPSS- функции.

Блоки, управляющие движением транзактов

Блок TRANSFER – передача транзакта в зависимости от режима работы:

а) режим безусловной передачи (TRANSFER,В).

Операнд А – не используется, операнд В – имя (метка) блока безусловной передачи;

б) режим условной передачи (TRANSFER ВOTH,В,C)

Операнд А – слово «BOTH», операнд В – имя (метка) следующего блока, операнд С – имя блока, куда передается транзакт, если следующий блок отказывается его принимать;

в) режим передачи по вероятности (TRANSFER .A,В,C).

Операнд А – мантисса десятичного числа, начинающаяся с точки и определяющая вероятность передачи транзакта в блок, имя которого определяет операнд С, операнд В – имя (метка) следующего блока.

Блок TEST – передача транзакта в зависимости от сравнения двух СЧА.

Операнды А и В – имена сравниваемых СЧА, операнд С – имя блока, куда передается транзакт, если условия сравнения не выполняются.

Вспомогательный операнд Х определяет используемое условие сравнения СЧА: X={G, GE, L, LE, E, NE}.

Блок LOOP – организация циклического прохождения транзакта через блок-схему.

Операнд А- номер уменьшаемого на 1 параметра транзакта при прохождении этого блока, операнд В – имя блока, куда передается транзакт, если значение его уменьшаемого параметра еще не 0.

Блок GAТE – логический переключатель.

Определяет дальнейшее движение пришедшего в него транзакта.

Используется в следующих режимах:

а) режим работы с логическим переключателем,

Операнд А - имя логического переключателя (ЛП). Блок управления изменением состояния логического переключателя реализуется в другом, предназначенном для этого сегменте.

Вспомогательный операнд Х – проверяемое состояние ЛП:

Х={LS(ЛП -установлен), LR(ЛП - сброшен)}.

Операнд В - имя блока, куда передается транзакт, если проверяемое состояние логического переключателя является ложным. Если он не задан, то возникает состояние блокировки (режим отказа).

б) режим работы с прибором или МКУ. В свою очередь режим работы с прибором или МКУ может реализоваться в виде двух подрежимах:

(отказа и условной передачи)

Операнд А - имя прибора или МКУ, с которым работает блок GAТE.

Операнд В - имя блока, куда передается транзакт, если проверяемое состояние прибора (МКУ) является ложным ( в подрежиме отказа операнд В не определяется и для транзакта возникает условие блокировки).

Вспомогательный операнд Х определяет тип элемента (прибор или МКУ) и проверяемое его состояние:

Х={U (прибор занят), NU (прибор не занят), SF- МКУ полностью заполнено, SNF – МКУ заполнено не полностью, SE – МКУ пусто, SNE – МКУ не пусто}.

Блок LOGIC – блок управления состоянием логического переключателя (он, как правило, находится в другом сегменте блок-схемы по отношению к блоку GAТE).

Операнд А – имя логического переключателя, вспомогательный операнд

Х= {R (сбросить), S(установить), I(инвертировать)}.

Начальное состояние всех ЛП по умолчанию – «сброшен».

Начальное состояние ЛП «установлен» определяется картой описания

INITIAL LS2/LS4/LS$MARK (установлены ЛП с номерами 2 и 4 и именем MARK).

Блок SELEKT – выбор элемента блок-схемы GPSS-модели и определение в соответствии с этим выбором направления дальнейшего движения транзакта.

Операнды: А- номер параметра транзакта, в который заносится найденный в результате выбора номер элемента модели;

В, С – минимальный и максимальный номера элементов рассматриваемого типа, из которых производится выбор;

D- значение, с которым при выборе идет сравнение;

Е – групповое имя СЧА, участвующее в сравнении (определяет тип рассматриваемого элемента и его переменную состояния, по которой осуществляется выбор);

Х – вспомогательный операнд, определяющий тип операции сравнения (X={G, GE, L, LE, E, NE, min, max}). В операциях min, max операнд D не используется.

Для блока SELEKT возможен логический режим, в котором осуществляется выбор среди приборов или МКУ.

Операнды D и Е в этом режиме не используются.

Вспомогательный операнд принимает следующие значения:

Х={LS (ЛП- установлен), LR (ЛП – сброшен), U (прибор занят), NU (прибор не занят), SF- МКУ полность заполнено, SNF – МКУ заполнено не полностью, SE – МКУ пусто, SNE – МКУ не пусто}.

Примеры типовых конструкций из блоков в GPSS-моделях.

    1. Одноканальная СМО с двумя входными потоками и соответствующими им неограниченными регистрируемыми очередями

    1. СМО с двумя входными потоками и одной неограниченной регистрируемой очередью

3. Одноканальная СМО с ограниченной по числу мест очередью

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

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

6. СМО с семичасовым рабочим днем и часовым перерывом

7. Сегмент задания времени прогона GPSS-модели

Логика работы интерпретатора GPSS-модели.

Теоретические положения

Таймер GPSS–модели регистрирует только целые значения модельного времени. Единица времени, с которой работает таймер, определяется разработчиком и задается в неявном виде в форме параметров временных данных (значений операндов блоков), вводимых в модель и выраженных в единицах модельного времени. Выбор единицы модельного времени осуществляется с учетом динамики моделируемых процессов и точности их отображения.

Интерпретатор реализует логику метода модельных событий с помощью двух списковых структур:

цепь будущих событий (ЦБС);

цепь текущих событий (ЦТС).

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

ЦБС (является аналогом СБС в ММС) состоит из транзактов, движение которых по модели запланировано на некоторый момент в будущем:

а) планируется выход транзакта из блока GENERATE. В момент успешного выхода транзакта из этого блока соответствующая запись из ЦБС удаляется, но тут же, после выхода интерпретатор заносит в ЦБС следующую запись, соответствующую последователю этого транзакта в блоке GENERATE.

б) транзакт попал в блок ADVANCE (блок задержки).

Транзакты в ЦБС упорядочены по увеличению модельного времени, на которое запланировано их дальнейшее движение. При совпадении времени (узел событий) они располагаются в порядке занесения в ЦБС.

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

В ЦТС транзакты упорядочены по приоритетам (больший приоритет вперед). Если приоритет одинаков, то — в порядке занесения в ЦТС.

ЦБС фактически эквивалентна списку будущих событий в методе модельных событий, а ЦТС используется интерпретатором для реализации процессно‑ориентированной логики обработки критических событий.

Логика работы GPSS‑интерпретатора включает 3 фазы:

Фаза вводавыполняется однократно в начале работы ИМ и состоит в последовательном просмотре блоков модели, выявлении блоков GENERATE и в формировании для каждого блока записи в ЦБС для первого транзакта, который должен выйти через этот блок в модель.

Фазы КТМВ и ПЦТС выполняются итеративного до окончания моделирования.

Фаза коррекции таймера модельного времени заключается в переносе транзакта (транзактов) с наименьшим временем планируемого начала движения из ЦБС в ЦТС и соответствующем скачкообразном увеличении модельного времени.

Фаза просмотра ЦТС соответствует одному моменту модельного времени, определенному в предыдущей фазе, и заключается в последовательном продвижении транзактов, находящихся в ЦТС через возможно большее число блоков. Возврат на начало ЦТС осуществляется в том случае, когда при очередном перемещении транзакт проходит блок, снимающий условие блокировки (например, блоки RELEASE, LIAVE и др.).

Осуществление этой фазы реализует так называемую процессно-ориентированную логику обработки событий в ИМ.

В GPSS предусмотрен специальный механизм задания времени прогона ИМ с помощью так называемого «счетчика завершений». Начальное значение этого счетчика определяется разработчиком ИМ через операнд А управляющей карты START, а затем может быть организовано периодическое уменьшение этого значения в специальном сегменте модели, составленном из блоков GENERATE и TERMINATE. Как только счетчик завершений обнуляется, прогон ИМ завершается.

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

Иллюстрация на примере

Постановка задачи.

Построить GPSS-модель одноканальной СМО с неограниченной очередью.

Цели моделирования: исследовать загрузку КО и длину очереди.

Исходные данные:

ЗР интервалов времени между заявками во входном потоке ЗРПВ [18,6];

ЗР времени обслуживания – ЗРПВ [16,4].

Время прогона ИМ – 480.

Блок-схема такой GPSS-модели имеет вид:

Рассмотрим функционирование GPSS-модели в предположении следующей численной реализации случайных величин:

- интервал между заявками входного потока;

- время обслуживания заявки;

и соответствующей реализации следующих переменных:

- время входа заявки в систему,

- время начала обслуживания заявки,

- время окончания обслуживания заявки.

№ заявки

1

14

14

18

14

32

2

13

27

12

32

44

3

17

44

14

44

58

4

15

59

-

-

-

Графики, отражающие динамику работы СМО в соответствии с этими цифрами, имеют следующий вид:

Таблица, отражающая логику работы GPSS-интерпретатора для рассматриваемого примера ([N, T, NTB, PR, NSB])

Стр.

Модельное

время

Цепь текущих событий

Цепь будущих событий

1

до ф. ввода

пусто

пусто

2

после ф. ввода

пусто

[1,14,Нет,0,1], [2,480,Нет,0,8]

3

после ф.КТМВ t=14

[1,КМР,Нет,0,1]

[2,480,Нет,0,8]

4

после ф. ПЦТС

t=14

пусто

[3,27,Нет,0,1], [1,32,5,0,6], [2,480,Нет,0,8]

5

после ф.КТМВ t=27

[3,КМР,Нет,0,1]

[1,32,5,0,6], [2,480,Нет,0,8]

6

после ф. ПЦТС

t=27

[3,КМР,2,0,3]

[1,32,5,0,6], [4,44,Нет,0,1], [2,480,Нет,0,8]

7

после ф.КТМВ t=32

[3,КМР,2,0,3], [1, КМР,5,0,6]

[4,44,Нет,0,1], [2,480,Нет,0,8]

8

после ф. ПЦТС

t=32

пусто

[4,44,Нет,0,1], [3,44,5,0,6], [2,480,Нет,0,8]

9

после ф.КТМВ t=44

[4,КМР,Нет,0,1], [3, КМР,5,0,6]

[2,480,Нет,0,8]

10

после ф. ПЦТС

t=44

пусто

[4,58,5,0,6], [1,59,Нет,0,1], [2,480,Нет,0,8]

Для напоминания о соответствии номеров и имен блоков:

1-G; 2-Q; 3- S; 4- D; 5-A; 6 – R; 7 – T; 8- G; 9 – T.