Общецелевая система моделирования GPSS World — КиберПедия 

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

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Общецелевая система моделирования GPSS World

2022-11-14 34
Общецелевая система моделирования GPSS World 0.00 из 5.00 0 оценок
Заказать работу

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

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

Блоки. Разработчик конструирует модель из блоков, прибегая, как правило, к наглядной форме ее отображения в виде блок-схемы. Для удобства графического представления модели каждый  блок GPSS имеет принятое стандартное обозначение. Построенная схема является одновременно программой на языке GPSS. Для ее ввода в ЭВМ необходимо последовательность блоков представить в виде списка операций, добавив к названиям блоков требуемые операнды.

Каждый блок GPSS имеет входы и выходы, с помощью которых осуществляется их связь в модели. Существуют два особых блока: GENERATE, имеющий только выход, и TERMINATE, имеющий только вход. Через блок GENERATE транзакты вводятся в модель. Блок TERMINATE удаляет транзакты из модели. Любую модель на языке GPSS можно представить в виде совокупности блоков.

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

Все объекты GPSS имеют числовые характеристики, называемые стандартными числовыми атрибутами (СЧА). Приведем некоторые СЧА, связанные с транзактами:

PR – приоритет транзакта;

Pj (Р$Name) – значение параметра с номером j (c именем Name);

M1 - время пребывания транзакта в системе;

MPj – транзитное время транзакта (разность между текущим значением модельного времени и значением времени, записанным в параметре j транзакта;

XN1 - номер активного транзакта.

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

Пересылка транзакта в требуемую точку модели осуществляется блоком TRANSFER. Блок ТЕSТ, проверяя выполнение определенного условия, может также направлять транзакты в заданную точку модели, если условие не выполняется. В этом его действия аналогичны блоку GATE. Для организации в модели циклов используют блок LOOP, с помощью которого можно предусмотреть многократное прохождение транзактом заданной цепочки блоков.

Изменение приоритета транзакта осуществляет блок PRIORITY.

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

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

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

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

В список синхронизации помещаются транзакты, ожидающие объединения с другими транзактами в блоках GATHER и ASSEMBLE или находящиеся в блоках MATCH. После выполнения условий синхронизации транзакты возвращаются в список текущих событий. Кроме рассмотренных списков, обработка которых происходит без участия разработчика существуют списки пользователя, управление которыми осуществляется с помощью блоков LINK и UNLINK. Списки пользователя имеют стандартные числовые атрибуты, к которым можно обращаться внутри модели:     

СНj (СH$Name) - текущее число транзактов в списке j (с именем Name);

CAj (СA$Name) - среднее число транзактов в списке j (с именем Name);

CMj (CM$Name) - максимальное число транзактов в списке j (с именем Name);

CCj (CC$Name) - общее число входов транзактов в список j (с именем Name);

CTj (CT$Name) - среднее время пребывания транзакта в списке j (с именем Name).

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

Транзакты, находящиеся в списке текущих событий, расположены в порядке убывания приоритетов. Когда транзакт вводится в список текущих событий, он становится последним среди транзактов, имеющих тот же приоритет. Процедура просмотра списка текущих событий выполняет три основные действия:

1. Изменение момента условного времени. При этом момент времени устанавливается равным наименьшему времени выхода из блока для транзактов, находящихся в списке будущих событий. Все транзакты, имеющие такое время выхода, переводятся из списка будущих событий в список текущих событий;

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

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

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

Занятие и освобождение устройства моделируются соответственно блоками SEIZE и RELEASE. Для проверки состояния устройств используют блок GATE. Прерывание моделирует блок PREEMPT, снятие прерывания - блок RETURN.

С устройствами связаны следующие СЧА:

Fj (F$Name) - состояние устройства с номером j (с именем Name): 0 - если устройство свободно, и 1 - если устройство занято;

FRj (FR$Name) - коэффициент использования устройства j (с именем Name);

FCj (FC$Name) - число входов в устройство j (с именем Name);

FTj (FT$Name) - среднее время использования устройства j (с именем Name) одним транзактом.

Устройства имеют также стандартные логические атрибуты (СЛА), каждый из которых может принимать одно из двух значений: "ИСТИНА" или "ЛОЖЬ".

U - устройство занято;                  NU - устройство свободно;

I - устройство прервано;               NI - не прервано.

Проверка состояния устройства осуществляется блоком GATE, который в зависимости от значения проверяемого СЛА либо беспрепятственно пропускает транзакты (если СЛА = "истина"), либо задерживает их или направляет по другому маршруту (если СЛА = "ложь").

Памяти. Памяти служат для моделирования объектов, обладающих определенной емкостью. Памяти моделируются блоками ENTER и LEAVE. Входящий в блок ENTER транзакт занимает определенную часть памяти. При входе транзакта в блок LEAVE память освобождается. Емкость памяти задают с помощью команды STORAGE, которая имеет следующий формат:

Name STORAGE A

где Name – имя памяти, А – емкость памяти.

Памяти имеют следующие стандартные числовые атрибуты:

Sj (S$Name) - емкость памяти j (с именем Name);

Rj (R$Name) - свободный объем памяти j (с именем Name);

SRj (SR$Name) - коэффициент использования памяти j (с именем Name);

SMj (SM$Name) - максимальное заполнение памяти j (с именем Name);

SAj (SA$Name) - среднее заполнение памяти j (с именем Name);

SCj (SC$Name) - число входов в память j (с именем Name);

STj (ST$Name) - среднее время пребывания транзакта в памяти j (с именем Name).

Памяти имеют также стандартные логические атрибуты, которые используются для проверки состояния памяти:

SE – память  пуста;             SNE- память  не пуста;

             SF - память  заполнена;      SNF - память  не заполнена.

Проверка состояния памяти осуществляется блоком GATE.

Логические ключи. Для представления в модели коммутируемых объектов с двумя состояниями ("ВКЛЮЧЕНО" - "ВЫКЛЮЧЕНО") используют логические ключи, моделируемые блоками LOGIC и GATE. При входе транзакта в блок LOGIC происходит срабатывание соответствующего ключа. Ключ может быть включен (S), выключен (R) или переключен (I). Ключи  имеют единственный СЧА LSj (LS$Name) – состояние логического ключа j (с именем Name): 1, если ключ установлен; 0 – в противном случае. Для проверки состояния логического ключа используются стандартные логические атрибуты:

LS - ключ  включен;            LR - ключ  выключен.

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

Очереди. Транзакты в процессе движения могут задерживаться перед блоками, вход в которые в данных условиях невозможен. Примерами таких блоков из числа рассмотренных выше являются SEIZE (если ранее вошедший в этот блок транзакт не вошел в блок RELEASE), ENTER (если все элементы памяти заняты), GATE (если в этом блоке не указан альтернативный выход и проверяемое условие не выполняется). При поступлении транзактов на вход задерживающих блоков образуются очереди. Для сбора статистики об очередях в местах задержки ставят блоки QUEUE. Эти блоки сами по себе не создают очередь, а лишь являются средством ее регистрации. При входе транзакта в блок QUEUE текущая длина очереди получает приращение. Уход из очереди моделируется блоком DEPART.

Очереди имеют следующие стандартные числовые атрибуты:

Qj (Q$Name) - текущая длина очереди j (с именем Name);

QMj (QM$Name) - максимальная длина очереди j (с именем Name);

QAj (QA$Name) - средняя длина очереди j (с именем Name);

QCj (QC$Name) - число входов в очередь j (с именем Name);

QZj (QZ$Name) - число входов в очередь j (с именем Name) с нулевым временем пребывания (транзакт прошел через блок QUEUE, не задерживаясь в очереди);

QTj (QT$Name) - среднее время пребывания в очереди j (с именем Name), включая «нулевые» входы;

QXj (QX$Name) - среднее время пребывания в очереди j (с именем Name) без учета «нулевых» входов.

Таблицы. Для сбора статистических данных о случайных величинах, заданных разработчиком, и их представления в стандартной табличной форме используют таблицы. Занесение информации в таблицу осуществляется блоком TABULATE в момент входа очередного транзакта в этот блок. Описание структуры таблицы и типа заносимых данных (СЧА) осуществляется командой TABLE, которая имеет следующий формат:

Name TABLE A,B,C,D

где Name – имя таблицы, А –аргумент таблицы, В – правая граница первого частотного интервала, С – ширина частотного интервала, D – число частотных интервалов.

Кроме таблиц TABLE могут использоваться Q-таблицы, являющиеся средством получения распределения только времени пребывания транзакта в очереди. Формат команды описания Q-таблицы:

Name QTABLE A,B,C,D

Назначение операндов B, C, D такое же, как и в команде TABLE. Операндом А задается имя очереди. При использовании QTABLE данные в таблицу заносятся автоматически при входе транзакта в блоки QUEUE и DEPART и никаких специальных мер, т.е. блока TABULATE, при этом не требуется.

Стандартные числовые атрибуты таблиц:

TBj (TB$Name) - среднее значение фиксируемой в таблице j (с именем Name) величины;

TCj (TC$Name) - число входов в таблицу j (с именем Name);

TDj (TD$Name) - стандартное среднеквадратическое отклонение фиксируемой в таблице j (с именем Name) величины.

Ячейки. Для записи в процессе моделирования текущих значений СЧА используют ячейки. Занесение информации в ячейку осуществляет блок SAVEVALUE. При входе транзакта в этот блок требуемое значение СЧА фиксируется в ячейке, номер которой определяется операндом блока SAVEVALUE. Ячейки имеют  единственный СЧА Xj (Х$Name) - содержимое ячейки с номером j (с именем Name).

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

INITIAL А,В

где А – Xj или Х$Name, В – начальное значение.

Функции.   Функции служат для отображения зависимостей между двумя СЧА. В GPSS World имеется пять типов функций. В данном пособии рассматриваются только два типа функций: непрерывные (С) и дискретные (D). Функцию задают набором пар точек - координат. При задании дискретной функции аппроксимация между двумя точками выполняется горизонтальной линией («ступенкой»). При попадании значения аргумента в интервал значение функции остается постоянным. При задании непрерывной функции применяется кусочно-линейная аппроксимация. В этом случае при попадании значения аргумента в интервал значение функции вычисляется по наклонному отрезку, аппроксимирующему функцию на данном интервале.

Функцию описывают командой

Name FUNCTION A,B

где Name – имя функции, А – аргумент функции, В – Dn либо Cn (n –количество пар координат точек). За командой следуют операторы задания координат точек функции (значений аргументов Хi и соответствующих им значений функции Yi). Их формат:

1) если координаты всех точек расположены в одной строке:

X1,Y1/X2,Y2/…/Xn,Yn

2) если координаты точек расположены в нескольких строках:

X1,Y1/X2,Y2/…/Xi,Yi

Xi+1,Yi+1/Xi+2,Yi+2/…/Xj,Yj

… … …

Xk+1,Yk+1/Xk+2,Yk+2/…/Xn,Yn

С функциями связан СЧА FNj (FN$Name) – результат вычисления функции j (с именем Name).

Переменные. Переменные представляют собой сложные выражения, которые при необходимости могут быть вычислены. Выражения могут включать в себя константы, СЧА, библиотечные арифметические функции, арифметические и логические операторы. Переменные определяются командами VARIABLE и  BVARIABLE, которые создают соответственно арифметическую и булеву переменные GPSS. Результаты вычисления  арифметической и булевой переменных можно получить соответственно с помощью СЧА Vj (V$Name) и BVj (BV$Name), где  j (Name) – номер (имя) переменной.

Команды имеют следующий формат:

Name VARIABLEA

Name BVARIABLEA

гдеName – имя переменной, А – задаваемое пользователем выражение.

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

Name EQU A

где Name – имя переменной или объекта, которому присваивается значение, А – выражение.

Арифметические, условные и логические операторы. В GPSS используются следующие операторы: ^ (возведение в степень), # (умножение), / (деление), \ (целочисленное деление), @ (целый остаток), - (вычитание), + (сложение), >=’GE’ (больше или равно), <=’LE’ (меньше или равно), >’G’ (больше), <’L’ (меньше),!=’NE’ (не равно), =’Е’ (равно), &’AND’ (логическое «И»), |’OR’ (логическое «ИЛИ»).

Библиотечные математические функции. Библиотека GPSS имеет следующие математические функции: ABS(A) – абсолютное значение, ATN(A) – арктангенс, COS(A) – косинус, EXP(A) - экспонента, INT(A) – выделение целой части, LOG(A) – натуральный логарифм, SIN(A) – синус, SQR(A) – квадратный корень, TAN(A) - тангенс. Допустимые значения аргумента – выражение. Вычисляемые числовые значения функций – действительного типа.

Генераторы случайных чисел. В GPSS World может быть любое число генераторов равномерно распределенных псевдослучайных чисел в интервале [0, 1]. Обращаются к генератору без предварительного его объявления посредством СЧА RNj, где j – номер генератора. Начальное число генератора случайных чисел (один из параметров рекурсивной формулы) совпадает с номером j генератора.

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

- различных вариантов модели при одном и том же потоке случайных чисел;

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

Первая проблема решается просто, поскольку генераторы позволяют воспроизводить одни и те же последовательности равномерно распределенных случайных чисел. Во втором случае можно изменять начальные числа первых семи RN1, RN2, …, RN7 генераторов и, следовательно, формировать различные последовательности. Для этого в GPSS имеется команда RMULT следующего формата:

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

где А – начальное число для RN1, В – для RN2, …, G – для RN7. Например, команда

RMULT,,345,17,,,1119

устанавливает начальные числа генераторов 3,4 и 7. Остальные значения остаются без изменений.

СЧА RNj возвращает целые случайные числа в интервале [0,999], а при использовании в качестве аргумента случайной функции RNj возвращает случайное число из интервала от 0 до 0,999999 включительно.

Библиотека вероятностных распределений. В библиотеку включено более 20 вероятностных распределений. Эти распределения применимы во многих практических ситуациях. Остановимся здесь на пяти распределениях.

Распределение, оператор, тип Аргументы
Биномиальное Binomial(A,B,C) Целый А – номер генератора случайных чисел, А ≥ 1; В – количество независимых испытаний; С – вероятность успешных испытаний.
Экспоненциальное Exponential(A,B,C) Вещественный А – номер генератора случайных чисел, А ≥ 1; В – величина сдвига, определяющего местоположение распределения; С – величина, используемая для сжатия или растяжения распределения, С > 0, B+C – среднее значение (при В = 0 С - среднее значение).
Нормальное Normal(A,B,C) Вещественный А – номер генератора случайных чисел, А ≥ 1; В - среднее значение распределения; С – стандартное отклонение распределения.
Пуассона Poisson(A,B) Целый А – номер генератора случайных чисел, А ≥ 1; В - среднее значение распределения.  
Равномерное Uniform(A,B,C) Вещественный А – номер генератора случайных чисел, А ≥ 1; [B,C] – интервал генерируемых значений, В < C.

 

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

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

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

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

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

1. Источник потока транзактов.

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

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

Примеры:

а) GENERATE 10,4,45 - генерируются транзакты с интервалом прихода от 6 до 14 единиц времени, первый из которых поступает в момент времени 45 единиц;

б)  GENERATE 3,FN$Trek„,7 - генерируются транзакты с приоритетом 7, интервалы времени между ними определяются произведением числа 3 на значение функции с именем Trek;

в) GENERATE (Exponential(1,0,15) – генерируются транзакты, интервалы времени между которыми есть случайные величины, распределенные по экспоненциальному закону со средним значением 15 единиц времени.

2. Удаление из модели активного транзакта.

Формат: TERMINATE A

Операнд А – величина уменьшения счетчика завершения.

3. Задержка транзакта на заданный отрезок времени.

Формат: ADVANCE A, B

Операнды: А – среднее время, В – полуинтервал или модификтор-

функция.

Примеры:

а) ADVANCE 60 - транзакт будет оставаться в блоке ADVANCE в течение 60 единиц времени;

б) ADVANCE 14,6 - транзакт задерживается в блоке от 8 до 20 единиц времени (время задержки – случайная величина, равномерно распределенная на интервале [8,20] единиц времени;

в) ADVANCE FN$Abc - время задержки равно значению функции Abc;

г)  ADVANCE V$Prim - время задержки равно значению переменной Prim.

4. Присвоение или изменение значения параметра транзакта.

Формат: ASSIGN A [±], B

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

Примеры:

а) ASSIGN 2,8 - присваивает параметру 2 транзакта значение 8;

б) ASSIGN 4+,7  - к значению параметра 4 транзакта добавляется 7;     

в) ASSIGN 3-,Q$Red – значение параметра 3 транзакта уменьшается на значение, равное текущей длине очереди с именем Red.

5. Установка приоритета активному транзакту.

Формат: PRIORITY А

Операнд А – новое значение приоритета.

Пример:  PRIORITY 17 – вошедшему в этот блок транзакту присваивается  приоритет 17.

6. Занятие устройства.

Формат: SEIZE A

Операнд А – имя или номер устройства.

Пример: SEIZE Stanok – занять устройство с именем Stanok.

7. Освобождение занятого устройства.

Формат: RELEASE A

Операнд А – имя или номер устройства.

Пример: RELEASE Stanok – освободить устройство с именем Stanok.

8. Занятие памяти.

Формат: ENTER A, B

Операнды: А – имя или номер памяти, В – число занимаемых элементов памяти.

Примеры:

а)  ENTER Parking - войти в память с именем Parking, занимая единицу ее объема;

б) ENTER Р2,5 - войти в память, номер которой определяется параметром 2 транзакта, занимая 5 единиц памяти.

9. Освобождение памяти.

Формат: LEAVE A, B

Операнды: А – имя или номер памяти, В – число освобождаемых элементов памяти.

  Примеры:

а)  LEAVE 4 - транзакт удаляется из памяти с номером 4, освобождая одну единицу памяти;

б) LEAVE Ritm,2 - удаляет транзакт из памяти с именем Ritm, и освобождает в ней 2 единицы объема.

9. Увеличение длины очереди.

Формат: QUEUE A, B

Операнды: А – имя или номер очереди, В – число, на которое увеличивается длина очереди.

Примеры:

    a) QUEUE Step - присоединить транзакт к очереди Step, увеличив ее длину на единицу;

    б) QUEUE 1,2 - встать в очередь с номером и увеличить ее длину на 2.

10. Уменьшение длины очереди.

Формат: DEPART A, B

Операнды: А – имя или номер очереди, В – число, на которое уменьшается длина очереди.

Примеры:

a) DEPART Step -  транзакт удаляется из очереди Step, а длина очереди уменьшается на единицу;

б) DEPART 2,3 - транзакт удаляется из очереди с номером 2 и длина очереди уменьшается на 3 элемента.

11. Изменение состояния логического ключа.

Формат: LOGIC X A

Операнды: Х – логический оператор (S, R, I), А – имя или номер логического ключа.

Примеры:

12. Переход активного транзакта в указанный блок.

Формат: TRANSFER A,B,C,D

Количество используемых операндов и их назначение зависит от режима работы блока. Здесь будут рассмотрены три режима из девяти.

  Режим безусловной передачи. Операнды А, С и D не используются, В – метка блока, в который должен перейти транзакт.

Пример: TRANSFER,Next – после входа в этот блок транзакт сразу же пытается войти в блок с меткой Next.

Режим статистической передачи. Операнды: А – вероятность передачи транзакта в блок с меткой С, задаваемая в долях тысячи; В – метка блока, в который должен перейти транзакт с вероятностью (1-А); С - метка блока, в который должен перейти транзакт с вероятностью А; D – не используется.

Примеры:

а) TRANSFER  .300,Met1,Met2 - c вероятностью 0,7 транзакты будут переданы в блок Met1 и с вероятностью 0,3 в блок Met2;

б) TRANSFER  .750,,Again – с вероятностью 0,75 транзакты будут переданы в блок Again, а с вероятностью 0,25 - в следующий по порядку блок.

Режим ВОТН. Операнды: А – ключевое слово ВОТН (оба), В и С – метки блоков. В этом режиме входящий транзакт пытается перейти к блоку В. Если это сделать не удается, транзакт пытается перейти в блок С. Если транзакт не может войти и в этот блок, он задерживается в блоке TRANSFER до тех пор, пока один из блоков назначения станет доступным. Если не используется операнд В, то проверяется возможность войти в следующий блок.

Пример: TRANSFER BOTH,Met1,Met2 – транзакт последовательно пытается войти в блок Met1, затем в блок Met2, до тех пор, пока один из них станет доступным.

13. Управление потоком транзактов в зависимости от результата сравнения операндов.

Формат: TEST X A,B,C

Операнды: Х – условный оператор (G, GE, L, LE, E, NE), А - первая сравниваемая величина, вторая сравниваемая величина, С – метка блока. Если условие А’Х’В выполняется, транзакт вводится в блок TEST. Если условие не выполняется и определено поле С, транзакт переходит в указанный блок, если же С не задано, транзакт задерживается в предыдущем блоке.

Примеры:

а) TEST E P$2,5,Met - если значение второго параметра равно пяти, транзакт войдет в блок TEST и продолжит движение в следующий блок. Если значения не равны, транзакт перейдет в блок с меткой Met.

б) TEST G V$Argum,3 - если значение переменной Argum больше 3, транзакт входит в блок TEST, в противном случае он будет задержан в предыдущем блоке.

14. Управление потоком транзактов в зависимости от состояния устройства, памяти, логического ключа.

Формат: GATE X A,B

Операнды: Х – стандартный логический атрибут (для устройства – U, NU, I, NI; для памяти – SE, SNE, SF, SNF; для логического ключа – LS, LR), А – имя или номер объекта (устройства, памяти, логического ключа), В – метка блока.

Если проверяемое условие для объекта, имя или номер которого определяется полем А, выполняется (СЛА="ИСТИНА"), то транзакт входит в блок GATE. Если условие не выполняется (СЛА="ЛОЖЬ"), то возможны два случая:

1) если поле В задано, то транзакт идет в блок, метка которого указана в поле В;

2) если поле В опущено, то транзакт ждет в предыдущем блоке, пока не выполнится проверяемое условие.

Примеры:

a) GATE NU Can,Label - если устройство с именем Can не занято, то транзакт входит в блок GATE, в противном случае он идет в блок с именем Label.

б) GATE SF Stor - если память с именем Stor полна, то транзакт входит в блок GATE, в противном случае ждет ее заполнения.

в) GATE LR 1,Two - если логический ключ «выключен», то транзакт входит в блок GATE, в противном случае он идет в блок с именем Two.

15. Организация циклического прохождения транзактов в модели.

Формат: LOOP A,B

Операнды: А - номер параметра, определяющего число циклов; В – метка блока, в который переходит транзакт, если параметр А не равен нулю.

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

Пример: LOOP 3,Tors - уменьшает на единицу значение параметра 3 и переходит к блоку с именем Tors, если значение параметра 3 не равно нулю.

16. Создание необходимого количества копий активного транзакта.

Формат: SPLIT A,B,C

Операнды: А - число создаваемых копий; В – метка следующего блока для копий; С – имя или номер параметра для хранения порядкового номера копии.

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

Примеры:

а) SPLIT 3,TTT - cоздает 3 копии вошедшего транзакта и посылает их в блок с именем TTT. Исходный транзакт идет в следующий по порядку блок;

б) SPLIT 4,Р$2,2 - создает 4 копии текущего транзакта; порядковый номер копии указан в параметре 2; параметр 2 будет определять номер следующего блока.

17. Объединение транзактов одного семейства.

Формат: ASSEMBLE А

Операнд А - число собираемых транзактов.

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

Пример: ASSEMBLE 4 - после того, как 4 транзакта одного семейства войдут в блок, один (первый) выйдет из блока и продолжит движение, остальные будут уничтожены.

18. Накопление заданного числа транзактов одного семейства.

Формат: GATHER A

Операнд А - количество транзактов, которые необходимо накопить.

Транзакты одного семейства задерживаются в блоке GATHER до тех пор, пока их число не станет равным значению поля А. Когда последний транзакт войдет в блок GATHER, все они одновременно выходят из него в том порядке, в котором поступили.

Пример: GATHER 5 - транзакты накапливаются в этом блоке до тех пор, пока в нем не соберутся пять транзактов из одного семейства, после чего все они смогут продолжать движение.

19. Синхронизация движения двух транзактов одного семейства.

Формат: MATCH А

Операнд А - метка сопряженного блока MATCH.

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

Пример:

Met1  MATCH  Met2

… … …

… … …           

… … …                       .

Met2  MATCH  Met1

Транзакты, которые поступают в блок с меткой Met1 или с меткой Met2, задерживаются до поступления транзакта в другой блок MATCH. Затем оба транзакта выйдут одновременно из блоков MATCH.

20. Запись в активный транзакт или его параметр значение абсолютного модельного времени.

Формат: MARK А

Операнд А - номер параметра, в который записывается значение таймера абсолютного времени.

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

Примеры:

     а) MARK - заменяет время входа транзакта в модель на текущее значение таймера.

б) MARK 1 - записывает текущее значение таймера в параметр 1.

21. Занесение значения в таблицу.

Формат: TABULATE А

Операнд А – имя или номер таблицы.

Транзакты, входящие в блок TABULATE, осуществляют занесение данных в таблицу, указанную в поле А. Описание структуры таблицы осуществляется командой TABLE.

Пример: TABULATE Vrem - занести значение в таблицу 4 с именем  Vrem.

22. Изменение значения ячейки.

Формат: SAVEVALUE А[±],В

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

Если за полем А стоит знак "+" или знак "-", значение поля В, соответственно, прибавляется или вычитается из текущего содержимого ячейки. Если знаки "+" или "-" не указаны, то значение поля В записывается в ячейку.

   Примеры:

а) SAVEVALUE 2,18 - записать значение 18 в ячейку с номером 2.

б) SAVEVALUE Fox+,X3 - прибавить содержимое ячейки 3 к содержимому ячейки с именем Fox.

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

Заголовок

Первая строка содержит имя файла модели, который создал отчет.

Вторая строка содержит дату и время прогона модели.

Общая информация

START TIME – начальное время моделирования;

END TIME – конечное время моделирования;

BLOCKS – число блоков в модели;

FACILITIES – число устройств в модели;

STORAGES – число памятей в модели.

NAMES (ИМЕНА)

NAME – имя, присвоенное объекту пользователем;

VALUE – числовое значение назначаемое имени.

 

BLOCKS (БЛОКИ)

LABEL – метка или имя данного блока (если оно задано);

LOC – номер позиции данного блока в модели;

BLOCK TYPE – тип блока;

ENTRY COUNT – число транзактов, входивших в данный блок;

CURRENT COUNT – число транзактов в блоке при завершении моделирования.

FACILITIES (УСТРОЙСТВА)

FACILITY – номер или имя устройства;

ENTRIES – число транзактов, входивших в устройство;

UTIL. – коэффициент использования устройства;

AVE.TIME – среднее время занятия устройства одним транзактом;

AVAIL. – состояние устройства в конце моделирования

(0 – устройство не доступно, 1 – устройство доступно);

OWNER – номер транзакта, занимающего устройство

(0 – устройство не занято).

QUEUES (ОЧЕРЕДИ)

QUEUE – имя или номер очереди;

MAX – максимальное количество транзактов, находившихся в очереди;

CONT. – текущее содержимое очереди;

ENTRY – общее количество входов транзактов в очередь;

ENTRY(0) – общее количество входов в очередь с нулевым временем пребывания в очереди;

AVE.CONT. – средняя длинна очереди;

AVE.TIME – среднее время пребывания в очереди одного транзакта;

AVE.(-0) - среднее время пребывания в очереди одного транзакта, без учета «нулевых» входов.

STORAGES (ПАМЯТИ)

STORAGE – имя или номер памяти;

CAP. – ёмкость памяти;

REM. – число свободных единиц памяти на конец моделирова


Поделиться с друзьями:

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

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

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

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.307 с.