- •Имитационное моделирование Содержание
- •5 Некоторые приёмы программирования в gpss World 127
- •6 Задания для самостоятельной работы 138
- •Введение
- •1Установка и работа программы gpss World
- •1.1Установка студенческой версии программы gpss World
- •1.2Вызов готовой программной модели
- •1.3Пояснения к тексту примера программной модели
- •1.4Запуск программы на счёт
- •2Примеры разработки моделей организационных объектов
- •2.1Модель предприятия обслуживания
- •2.2Модель учебного процесса в вузе
- •2.2.1Общая характеристика рассматриваемого примера
- •2.2.2Разработка программной модели на языке gpss World
- •2.3Модель движения автобуса по маршруту
- •3Элементы языка gpss World
- •3.1Блоки и команды gpss World
- •Блоки, изменяющие порядок прохождения блоков транзактами
- •Блоки для обработки сообщений, принадлежащих одному семейству
- •Транзакта, прерванные во время пребывания в блоке assemble
- •Вход прерванных сообщений в блок assemble
- •Транзакта, прерванные во время пребывания в блоке match
- •3.2Системные числовые атрибуты (System Numerical Attributes)
- •Системные Числовые Атрибуты — спецификаторы устройств (sna Entity Specifiers)
- •Доступные системные числовые атрибуты
- •3.3Математические операции в gpss World
- •4Визуализация результатов имитационного моделирования
- •4.1Общие принципы визуализации результатов имитационного моделирования
- •4.2Журнал Journal
- •4.3Стандартный отчёт Standard Report
- •4.4Окна gpss World
- •4.4.1Обзор Окон gpss World
- •4.4.2Окно блоков Blocks Window
- •4.4.3Окно выражений Expression Window
- •4.4.4Окно обслуживающих устройств Facilities Window
- •4.4.5Окно логических ключей Logicswitches Window
- •4.4.6Окно матриц Matrix Window
- •4.4.7Окно графиков Plot Window
- •4.4.8Окно очередей Queues Window
- •4.4.9Окно сохраняемых величин Savevalues Window
- •4.4.10Окно Многоканальных устройств Storages Window
- •4.4.11Окно гистограмм Table Window
- •4.5Совместное использование нескольких окон
- •5Некоторые приёмы программирования в gpss World
- •5.1Общая характеристика программирования
- •5.2Использование имён и номеров блоков
- •6Задания для самостоятельной работы
- •Заключение
- •Библиографический список
3.2Системные числовые атрибуты (System Numerical Attributes)
В процессе работы программы транзакты перемещаются по модели от блока к блоку, в некоторых блоках они задерживаются, в некоторых изменяются их параметры. Одновременно с этим сама программа собирает информацию о процессах в блоках. Например, для всех Очередей собирается следующая информация: число вошедших и вышедших транзактов, а также время нахождения транзакта в очереди. Одновременно производится анализ этой информации и выполняются некоторые простейшие статистические вычисления, определяются: максимальное, минимальное и среднее число транзактов в очереди; минимальное, максимальное и среднее время нахождения транзакта в очереди; всё это — с учётом и без учёта транзактов, которые вошли в очередь, но прошли её без задержки по любым причинам (например, в очереди никого не было или они имели приоритет).
Вся эта информация может быть использована в процессе моделирования для выбора действий в качестве условий формирования тех или иных событий. Для получения доступа к этим статистическим параметрам используются специальные средства — Системные числовые атрибуты (СЧА) (System Numerical Attributes). Они представляют собой особую форму записи подпрограмм-функций, извлекающих необходимую информацию из внутренних массивов данных.
Каждый тип устройств (Очереди, Обслуживающие устройства, Многоканальные устройства, Матрицы и др.) имеют свой набор СЧА. Общий вид записи СЧА: X$Y, где знак доллара является условным обозначением СЧА, слева от которого записывается условное обозначение типа СЧА (в виде одной буквы), а справа — имя конкретного блока, информацию о котором требуется получить. Например, выражение Q$Ochered означает, что требуется узнать текущий размер очереди (Q) с именем Ochered. В этом смысле СЧА можно считать также упорядоченным видом переменных, так как результатом их работы является извлечение и предоставление значения соответствующего параметра. С ними можно работать, как с обычными переменными, т. е. умножать, использовать для определения номера блока (блоки можно задавать именами или номерами или и тем и другим способом одновременно) и т. д. (В современных языках программирования СЧА могли бы записываться, например, в виде функции, тогда это могло бы выглядеть так: Q(Ochered)). При вызове они возвращают числовые или строковые значения указанных переменных и могут быть использованы в GPSS в качестве операндов (в операторах и командах) или в выражениях (например, в Окнах для просмотра результатов).
СЧА делятся на различные классы: СЧА Очередей, СЧА Обслуживающих устройств, СЧА общесистемные и др. Вид СЧА и порядок их использования показан ниже.
Системные Числовые Атрибуты — спецификаторы устройств (sna Entity Specifiers)
Большинство СЧА могут быть представлены в одной из нескольких форм, начинающихся с наименования СЧА-класса. Например, выражение W22 при вызове возвращает номер транзакта, находящегося в блоке № 22 (все блоки имеют наименование, например, очереди с различными именами, или номера). Этот номер присваивается транслятором при трансляции программы по порядку сверху вниз и виден в Стандартном отчёте. СЧА-класс задаётся первой буквой — в данном случае W.
СЧА могут быть записаны в следующих формах (для примера используется класс W):
Wj — где j (положительное целое число) — номер блока в моделировании.
W$Name — где Name — название (обозначение) запрошенного блока, символ доллара $ — знак присоединения к имени блока.
W*j — где j (положительное целое число) — номер параметра активного транзакта, содержащего номер запрашиваемого блока (косвенная адресация); символ * — знак присоединения номера блока при косвенной адресации.
W*Name — где Name — название параметра активного транзакта, содержащего номер запрашиваемого блока (косвенная адресация); символ * — знак присоединения номера блока при косвенной адресации.
W*$Name — где Name — название параметра активного транзакта, содержащего номер запрашиваемого блока. Знак $ не является необходимым, но используется как разделитель. По сути, это выражение эквивалентно выражению W*Name (косвенная адресация).
W*Parameter — означает, что тот или иной вид записи W*j, W*Name или W*$Name может быть использован.
СЧА-класс MX для Матриц является особым случаем. Он содержит 3 косвенных адреса. Например, выражение
MX*Sales(*Partnumber,*January)
определяет Матрицу, чей номер находится в параметре с названием Sales (активного транзакта) и обращается к элементу Матрицы, имеющему номер строки Partnumber и номер столбца January. Обычно для инициализации параметров (в данном случае Sales, *Partnumber и *January) у активного в данный момент транзакта используется блок ASSIGN.
СЧА-классы A1, AC1, C1, M1, MP, PR и TG1 отражают общесистемные переменные, не имеют параметров и используются сами по себе.
При программировании в GPSSW можно использовать подсказку о возможных формах использования СЧА в качестве операндов.
