130
Основой GPSS являются программы, описывающие функционирование выделенного конечного набора объектов, и специальная диспетчеризирующая программа — симулятор, который выполняет следующие функции: обеспечения заданных программистом маршрутов продвижения динамических объектов, называемых далее транзактами (сообщениями); планирования событий, происходящих в модели, путем регистрации времени наступления каждого события и выполнения их в нарастающей временной последовательности; регистрация статистической информации о функционировании модели; продвижения модельного времени в процессе моделирования системы.
Таблица 1
Категория |
Типы объектов |
|
|
Динамическая |
Транзакты |
|
|
Операционная |
Блоки |
|
|
Аппаратная |
Устройства |
|
Памяти |
|
Ключи |
|
|
Вычислительная |
Переменные: арифметические,,булевские |
|
Функции |
|
|
Статистическая |
Очереди |
|
Таблицы |
|
|
Запоминающая |
Матрицы ячеек |
|
Ячейки |
|
|
Группирующая |
Списки пользователя |
|
Группы |
|
|
Динамическими объектами являются транзакты (сообщения), которые представляют собой единицы исследуемых потоков и производят ряд определенных действий, продвигаясь по фиксированной структуре, представляющей собой совокупность объектов других категорий.
Операционные объекты, т. е. блоки, задают логику функционирования модели системы и определяют пути движения транзактов между объектами аппаратной категории.
131
Объекты аппаратной категории — это абстрактные элементы (уст-
ройства памяти и логические ключи), на которые может быть декомпозировано оборудование реальной системы. Воздействуя на эти объекты, транзакты могут изменять их состояние и влиять на движение других транзактов.
Вычислительная категория служит для описания таких ситуаций в процессе моделирования, когда связи между компонентами моделируемой системы 5 наиболее просто и компактно выражаются в виде математических (аналитических и логических) соотношений. Для этих целей в качестве объектов вычислительной категории введены арифметические и булевские переменные и функции.
К статистическим объектам относятся очереди и таблицы, вводимые для оценки характеристик поведения системы.
В процессе моделирования системы одни объекты взаимодействуют с другими, в результате чего происходят изменения атрибутов и преобразование арифметических или логических значений их. Такие преобразования на-
зываются событиями.
7.3. Основные объекты GPSS
В GPSS имеется два основных типа объектов: транзакты и блоки, относящиеся соответственно к динамической и операционной категории. Практически все изменения состояний модели системы S происходят в результате входа транзактов в блоки и выполнения блоками своих функций. С блоками непосредственно связаны: операционные блоки, изменяющие процесс моделирования; блоки вывода на печать промежуточных результатов моделирования; карты, управляющие процессом моделирования; карты, управляющие редактированием результатов моделирования. Всем блокам GPSS присваиваются порядковые номера, карты не нумеруются.
Транзакты представляют собой описание динамических процессов в реальных системах. Они могут описывать реальные физические объекты.
Кроме того, транзакты могут описывать и нефизические (программные) объекты, например канальные программы, порядок выбора в коммутационных схемах и т. д. Транзакты можно «генерировать» и «уничтожать» в процессе моделирования системы S.
Важным атрибутом любого транзакта является уровень приоритета PR, изменяющийся в пределах от 0 до 127. В случае, когда два транзакта соперничают при занятии данного устройства, сначала обрабатывается тот, у кото-
132
рого приоритет выше. Если приоритеты у обоих транзактов одинаковые, сначала обрабатывается тот, у которого время ожидания обработки больше.
Блоки GPSS используются для описания функций моделируемой системы S и управляют движением транзактов. Практически все изменения состояния модели системы S возникают в результате поступления транзактов в соответствующие блоки и выполнения подпрограмм, связанных с этими блоками. После выполнения соответствующей подпрограммы транзакт либо продолжает движение к следующему блоку, либо задерживается на некоторое время в блоке.
В зависимости от назначения блоки подразделяются на несколько групп:
1. Блоки, осуществляющие модификацию атрибутов транзактов:
а) временная задержка ADVANCE; б) генерирование и уничтожение транзактов GENERATE, TERMINATE, SPLIT, ASSEMBLE; в) синхронизация движения нескольких транзактов МАТСН, GATHER; г) изменение параметров транзактов ASSIGH, INDEX, MARK; д) изменение приоритета
PRIOPITY.
2.Блоки, изменяющие последовательность передвижения транзактов
(блоки передачи управления): TRANSFER, LOOP, TEST, GATE.
3.Блоки, связанные с группирующей категорией: JOIN, REMOVE, EXEMINE, SCAN, ALTER.
4.Блоки, организующие использование объектов аппаратной категории: а) устройства (технические средства) SEIZE, RELEASE, FAVAIL, PREEMPT, RETURN, FUNAVAIL, б) памяти (запоминающие устройства)
ENTER, LEAVE, SAVAIL, SUNAVAIL, в) ключи (логические переключате-
ли) LOGIC.
5.Блоки, сохраняющие необходимые значения для дальнейшего ис-
пользования: SAVEVALUE, MSAVEVALUE.
6.Блоки, обеспечивающие получение статистических результатов;
а) очереди QUEUE, DEPART; б) статистические таблицы TABULATE, TABLE.
7.Специальные блоки BUFFER, PRINT, EXECUTE, COUNT’X’, CHANGE, TRACE, UNTRACE, SELECT’X’, HELP.
8.Блоки для организации цепей: LINK, UNLINK.
9.Вспомогательные блоки: WRITE, SAVE, LOAD, REPORT, UPDATE.
7.4.Описание моделей с помощью языка GPSS
133
В программе на языке GPSS каждый оператор (блок) записывается в следующем формате:
Поле метки |
Поле операции |
Поле операндов |
Символический адрес Наименование типа Аргумент А, аргумент В и т.д.
блока |
блока |
Запись начинается с I позиции, а поля разделяются пробелами. Отсутствие метки также обозначается пробелом.
Методы структурного программирования требуют наличия комментариев к каждому оператору (группе операторов). В GPSS имеется ряд средств для внесения комментариев в тело программы. Во-первых, наличие символов (*) в первой колонке указывает на то, что карта содержит только комментарии и не будет просматриваться транслятором. Во-вторых, появление пробела в списке операндов означает окончание списка и начало комментария. Информация, следующая после пробела в поле операндов, может содержать любые символы русского и латинского алфавитов и не подлежит просмотру транслятором.
Вид блока указывается в «поле операции», где записываются аргументы блока. Это поле состоит из девяти частичных полей, помеченных буквами А, В, ..., I и разделенных друг от друга запятыми. Если некоторое частичное поле остается пустым, т. е. не нужен соответствующий аргумент, это отмечается еще одной запятой, например: PRINT, MOV. Здесь используется только аргумент МОV в частичном поле С (А и В пустые).
Карта SIMULATE. Если нужно провести счет по составленной модели системы, то должна быть карта SIMULATE. Допускается две формы заполнения этой карты: SIMULATE и SIMULATE т, где т — число минут машинного времени, по истечении которого моделирование будет прекращено. Например, оператор SIMULATE5 определяет длительность счета модели, равную 5 мин. По истечении этого времени моделирование прекращается и на печать выдается накопленная к этому моменту статистическая информация. Если карты SIMULATE нет, то работа (JOB) будет закончена после окончания ассемблирования.
Карта START. Эта карта показывает симулятору GPSS, что все входные данные уже получены и можно начинать счет.
Поле А определяет число транзактов, которые должны пройти через систему до выдачи окончательной статистики, называемой счетчиком числа завершений и обозначаемой TG1. Счет заканчивается в тот момент, когда TG1< 0. Значение TG1 уменьшается на величину, заданную в поле А блока TERMINATE, при каждом входе сообщения в этот блок. Если требуется за-
134
кончить моделирование после прохождения через модель 1000 транзактов, выводимых с помощью карты TERMINATE с единицей в поле А, то в поле А карты START записывается число 1000.
Например:
START 1000
Пример 1. Построить программу модели процесса прохождения 500 деталей, поступающих в промежутке времени 11 ± 5 единиц, распределенном по равномерному закону. Детали обрабатываются одним рабочим в течение 10 ± 7 единиц времени, распределенного по равномерному закону. После прохождения 300 деталей требуется выдавать статистику с интервалом в 25 деталей. Программа имеет вид (здесь и в других примерах моделирования справа дается комментарий):
SIMULATE |
|
Начать имитацию |
GENERATE |
11,5 |
Поступление деталей |
SEIZE |
1 |
Запуск |
ADVANCE |
10,7 |
Обработка |
RELEASE |
1 |
Выпуск |
TERMINATE |
1 |
|
START |
275, NP Прогон без статистики |
|
START |
225,,25 |
Интервальные статистики |
END |
|
|
Пользователю может понадобиться провести серию просчетов, т. е. несколько просчетов один за другим. Для облегчения задания такого режима введены три типа управляющих карт, в различной степени возвращающих модель к исходному состоянию: карта RESET, стирающая всю накопленную статистику, карта CLEAR, которая стирает всю статистику и все транзакты, и карта JOB, стирающая всю статистику, все транзакты и все блоки.
Карта RESET. Результатом действия этой карты является то, что стирается вся статистическая информация, накопленная в процессе моделирования.
Карта СLEAR. В результате действия этой карты стирается вся накопленная в процессе моделирования статистика и из системы удаляются все транзакты.
Карта JOB. Эта карта должна помещаться между последовательными рабочими вычислениями, являющимися частями одной работы. Она выпол-