Стандартные числовые атрибуты
В процессе моделирования интерпретатор автоматически регистрирует и корректирует некоторую информацию, касающуюся различных элементов, используемых в модели. Такой информацией являются текущие результаты моделирования: счетчики блоков, загрузки приборов и многоканальных устройств, средние времена пребывания в очередях и т.д. Эти результаты могут быть использованы в процессе моделирования. Более того, процесс моделирования может управляться динамически в зависимости от их значений. Например, интенсивность, с которой прибор обслуживает заявки, может зависеть от числа заявок, ожидающих обслуживания. При возрастании длины очереди прибор может работать быстрее.
Для оперирования с текущими результатами в GPSS/H используются стандартные числовые атрибуты (СЧА). Основные СЧА приведены в табл. 6 – 11.
Например, в N(COMP) записывается общее число вошедших в блок с именем COMP транзактов; в FR(SERVER) записывается коэффициент использования прибора под именем SERVER.
Таблица 6
СЧА времени
СЧА | Описание |
АС1 С1 | Время, прошедшее, начиная с начала моделирования (абсолютное время) Время, отсчитанное после того, как GPSS/H встретил оператор RESET (относительное время). Если оператора RESET нет в модели, то АС1 = С1. |
Таблица 7
СЧА блоков
СЧА | Описание |
W(n) N(n) | Число транзактов в текущий момент времени в блоке с именем или номером n Число транзактов, вошедших в блок, с именем или номером n за все время моделирования |
Таблица 8
СЧА транзактов
СЧА | Значение |
PB(n), PН(n), PF(n), PL(n) PR XID1 | Номер или имя соответственно байтового, полусловного, полнословного и действительного параметров транзакта Уровень приоритета транзакта Номер обрабатываемого в данный момент времени транзакта |
Таблица 9
СЧА приборов
СЧА | Значение |
F(n) FT(n) FR(n) | Занятость прибора; F(n) = 0, если прибор свободен, и F(n) = 1, если прибор занят Время обслуживания транзакта прибором с именем n Коэффициент использования прибора с именем n |
Таблица 10
СЧА многоканальных устройств (МУ)
СЧА | Значение |
R(n) S(n) SA(n) SC(n) SE(n) SF(n) SM(n) SR(n) | Свободная емкость МУ под именем n Текущее содержимое МУ под именем n Среднее содержимое МУ под именем n Число входов в МУ 1, если МУ не заполнено в настоящий момент, 0, если заполнено 1, если МУ заполнено в настоящий момент, 0, если не заполнено Максимальное содержимое МУ под именем n Коэффициент использования МУ под именем n |
Например,
R(BUFFER)
в СЧА записывается число модулей МУ BUFFER, которые в настоящее время не используются.
SF(5)
в СЧА SF(5) принимает значение 1, если МУ под номером 5 в настоящее время заполнено; в противном случае МУ(5) принимает значение 0 (используется в TEST и в операторе FUNCTION).
Таблица 11
СЧА очереди
СЧА | Значение |
Q(n) QA(n) QC(n) QM(n) QT(n) QX(n) QZ(n) | Текущее содержимое очереди под именем n Средний размер очереди n Число входов в очередь n Максимальное содержимое очереди n Среднее время пребывания транзакта (из расчета QC) Среднее время пребывания транзакта (из расчета QZ) Число нулевых входов (без задержки в очереди) |
Например,
Q (LINE)
в СЧА записывается текущее число транзактов в очереди под именем LINE.
Все перечисленные СЧА могут использоваться в качестве операндов блоков и аргументов функций.
Атрибуты транзактов
Атрибуты транзактов – характеристики, связанные с транзактами. Они есть у каждого транзакта и изменяются при движении транзактов по модели. Атрибуты транзактов делятся на две категории: встроенные (номер транзакта – XID1; номер блока, в котором находится транзакт; номер блока, куда войдет транзакт; время нахождения транзакта в модели – M1; уровень приоритета транзакта – PR) и определяемые пользователем или параметры (байтовый, полусловный, полнословный, действительный).
В GPSS/H возможно изменять только два встроенных атрибута: метку времени (присваивается транзакту, как только он создается блоком GENERATE) и уровень приоритета транзакта (первоначально задается в блоке GENERATE). В процессе перемещения транзактов по модели их параметры могут устанавливаться и модифицироваться в соответствии с заданной пользователем логикой. Эти значения можно использовать в качестве операндов блоков или аргументов функций.
Имя параметра состоит из двух частей: группового имени и номера конкретного члена этой группы. Групповым именем являются символы PH, PF, PB, PL в зависимости от типа параметра (полусловного, полнословного, байтового и действительного соответственно).
Тип и количество параметров каждого типа для транзакта определяются посредством блока GENERATE в операндах F, G, H (значением по умолчанию является PH с количеством параметров равным 12).
Пример задания параметров транзактов:
GENERATE 7,,,,,4PF,8PL
транзакты будут создаваться каждые 7 единиц времени. Каждый транзакт будет иметь 4 полнословных параметра и 8 действительных.
GENERATE 5
транзакты будут создаваться каждые 5 единиц времени. Каждый транзакт будет иметь 12 полусловных параметров.
Полусловный параметр (PH) может быть целым значением в интервале от –32,768 до 32,767. Полнословный параметр (PF) может быть целочисленным значением в интервале от –2 147 483 648 до 2 147 483 647. Байтовый параметр (PB) может быть целочисленным значением в интервале от –128 до 127. Действительный параметр (PL) может иметь значения с плавающей запятой в интервале от –2 147 483 648 до 2 147 483 647.
При входе транзакта в модель начальным значением всех его параметров является 0. Значения параметров определяет пользователь. Чаще всего это делают путем присвоения им некоторых числовых значений в соответствии со схемой кодирования. После этого значения параметров можно использовать явным образом.
Для примера рассмотрим гибкую производственную систему, в которой разделяются детали в зависимости от их веса и вида прошедшей обработки. Пусть транзакт – это деталь. Характеристики каждой детали могут быть заданы в параметрах в соответствии со схемой кодирования, приведенной в табл. 12.
Таблица 12
Вариант интерпретации значений параметров транзактов
Значение PВ3 | Интерпретация (вид обработки) | Значение PF7 | Интерпретация (вес, кг) |
Токарная Фрезерная Сверлильная |
Например, если транзакт имеет в качестве параметров PВ3 и PF7 значения 3 и 1 соответственно, это означает – просверленная деталь весом 10 кг.
Значения параметров транзактов можно использовать в качестве операндов блоков или аргументов функций.
Примеры использования параметров транзактов:
ADVANCE PF9
транзакт, попавший в блок, будет задержан на значение времени, которое записано в 9-м полнословном параметре этого транзакта.
TRANSFER ,PH5
транзакт будет послан к блоку, номер которого определен в 5-м полусловном параметре транзакта.
Проверка числовых выражений
Сравнить числовые выражения или соотношение между двумя стандартными числовыми атрибутами можно при помощи блока TEST.
Блок TEST (проверить) – предназначен для сравнения числовых выражений, а также СЧА и перенаправления транзактов (рис. 29). Значения операндов блока представлены в табл. 13.
Таблица 13
Значения операндов блока TEST
Операнд | Значение | Результат по умолчанию | |
А В Х | Имя первого СЧА Имя второго СЧА Оператор отношения, используемый при проверке | Ошибка Ошибка Ошибка | |
Оператор отношения | Вопрос, подразумеваемый в блоке TEST | ||
G GE E NE LE L | А > В А ³ В A = B A ¹ B A <= B A < B | ||
С | Необязательный; имя блока, в который переходит проверяющий транзакт, если ответ на вопрос, подразумеваемый оператором отношения, отрицателен | Проверка производится в режиме отказа |
Рис. 29. Блок TEST
Примеры блока TEST:
TEST E Q1,Q2
транзакт будет задержан в предыдущем блоке до тех пор, пока содержимое очереди 1 не станет равно содержимому очереди 2.
TEST LE S(BUFFER),4,EXIT
если текущее содержимое многоканального устройства BUFFER меньше или равно 4, то транзакт переходит в следующий блок, в противном случае транзакт переходит в блок с именем EXIT.