Предупреждение: В процессе работы с программой никогда не вносите никаких изменений в имеющиеся файлы задач основного пакета. Если возникла необходимость изменения данных в задачах пакета - создайте свой файл, скопируйте в него желаемую задачу и только после этого проводите эксперименты с вновь созданным файлом, носящим присвоенное Вами имя.
Модельный файл создаётся в редакторе оболочки по клавише F4, он представляет собой обычный текстовый файл, который можно создавать в любом текстовом редакторе. Необходимо только, чтобы текст был записан в ASCII-кодах. Файлу обязательно присваивать собственное имя с расширением *.gps , форматы записи МФ рассмотрены ниже.
В GPSS/H допускается два формата записи операторов: - фиксированный и свободный, далее в тексте будет использоваться только фиксированный формат.
А. Фиксированный формат.
Представление о фиксированном формате представлено на рис. 3.3 (для 80 колонкового редактора).
Ярлык П Действие П Операнды П Комментарий
1 2-7 9 OPERCOL OPERCOL
Рис. 3.3 Схема фиксированного формата
Рассмотрим подробнее рис. 3.3.
1. В первой колонке может быть поставлен знак *, тогда эта строка не читается симулятором и воспринимается как строка комментарий. В этой строке можно писать любые сообщения, в том числе и на русском языке, например, « Модуль задания для модели банка » или продолжать длинный текст комментарий предыдущей строки.
2. Ярлык может состоять из 6 буквенно-цифровых литер, начинаясь всегда с буквы, правда, некоторые ОУ могут иметь только цифровой ярлык, ОБ никогда не имеют цифровой ярлык. Появление одинаковых ярлыков для разных объектов не допустимо. Также нельзя допускать, чтобы ярлык совпадал с именем оператора или кодом операции. После написания ярлыка следует пробел до 9-ой колонки. У ОУ ярлык может быть, например, ОУ TABLE, а может и отсутствовать, так он может быть лишним в ОУ STORAGE .
3. Код действия. Он является ключевым словом (названием) ОБ ,ОУ и ОО, оно начинается с 9-ой колонки, как уже говорилось выше код действия может быть сокращён до 4-х первых букв, однако для лучшей читаемости МФ сокращениями надо пользоваться осторожно и редко. Для новых ОБ, начинающихся на букву В такие сокращения просто не допустимы
( например , BGETLIST , BGETSTRING). Вспомогательные коды в силу их краткости не могут быть сокращены. После кода действия обязательны пробелы до значения OPERCOL.
Здесь повторим определение оператору OPERCOL (operand start column), который назначает колонку, с какой начинается написание операндов в обоих возможных форматах записи. Значение этого оператора по умолчанию 25-я колонка, однако, это можно переназначить написав
< OPERCOL n > где n может принимать значения от 10 до 60. Значение этого оператора больше 25 оправданно, когда используется петля DO, сдвигаемая вправо. Этот оператор равно применим в обеих типах форматов.
4. Операнды. Их запись начинается с колонки, определённой OPERCOL. GPSS/H позволяет кодировать операнды в виде аналитических выражений, что придаёт ЯИМ большую гибкость. В случае, когда выражения имеют большую длину, запись операндов возможно производить на следующей строке, предваряя запись символом “ _ “, что воспринимается симулятором, как продолжение предыдущей строки. Когда рассматривается последовательность объектов, то в этом операнде последовательность объектов пишется через “ – “, например, FUNAVAIL 1-5 . В написании операндов можно использовать скобки. Сами операнды А,В,С,.. пишутся через запятую без пробелов. Отсутствие, какого либо операнда отмечается двумя запятыми без пробела. Рассмотрим примеры записи операндов:
SAVEVALUE (PH3 - 5 )- (PH3 + 5 ),25,XH
GENERATE RVEXPO(1,2),,10,,5
После написания последнего операнда обязателен как минимум один пробел, а при наличии макроса (оператор MACRO) как минимум два пробела.
5. Комментарий. При отсутствии у кода действия операндов, запись комментарий возможна в любой колонке, начиная с OPERCOL + 1, до 72 колонки 80-ти колонкового редактора или до конца строки при 132 колонках. При необходимости написать более длинные комментарии, переход на новую строку предваряется *. Комментарий имеет смысл писать всегда для лучшей читаемости как МФ, так и выходного отчёта.
Б2 Свободный формат
1. Ярлык может начинаться в 1-ой или 2-ой колонке и иметь от 1 до 8 литер.
2. Код операции отделяется от ярлыка одним или большим числом пробелов. При отсутствии ярлыка код операции может начинаться с 3-ей колонки, но не попадать в поле OPERCOL.
3. Операнды начинаются через один или большее число пробелов и пишутся до или непосредственно в поле OPERCOL .
4. Комментарий пишется через один или два пробела (при наличии макросов), если код операции не имеет операндов, комментарии начинаются с колонки OPERCOL + 1 и продолжаются до конца строки.
Далее в тексте будет использоваться только фиксированный формат, так как его отображение в МФ имеет стандартный вид.
Файл отчета содержит большое количество информации, и для упрощения ее восприятия мы приводим пояснения некоторых обозначений, которые используются при отображении результатов моделирования.
В начале файла отчета содержится информация о модели: номера строк (в том числе – присвоенные компилятором), все блоки и их операнды, указанные комментарии. Далее следует так называемый «словарь объектов» – ENTITY DICTIONARY. Эта часть отчета представляет собой список всех объектов, применяемых в данной модели, с указанием номеров, присвоенных им компилятором. Следующая часть отчета – указатель перекрестных ссылок (CROSS REFERENCE), где указывается, к каким типам принадлежат упомянутые объекты. В секции «счетчик блоков» – BLOCK COUNT – приводится основная статистика работы блоков. Ниже приводится расшифровка терминов, используемых GPSS/H в выходном файле. Фраза «Simulation begins» означает, что модель была исполнена, и после этой фразы приводятся результаты исполнения.
--AVG-UTIL-DURING-- - заголовок части выходного файла, посвященной основной статистике модели; эта часть представляет из себя таблицу (к сожалению, границы столбцов в таблице не прорисовываются, из-за чего чтение результатов иногда требует внимательности) со следующими заголовками:
FACILITY: указывает название устройства;
TOTAL TIME: полное время работы устройства;
AVAIL TIME: время, в течение которого устройство было свободно;
UNAVL TIME: время, в течение которого устройство было занято;
ENTRIES: количество транзактов, вошедших в устройство;
AVERAGE TIME/XACT: среднее время пребывания транзакта в устройстве;
CURRENT STATUS: текущее состояние (занято - свободно);
PERCENT AVAIL: доля времени, в течение которого устройство было занято.
В случае, если в модели используются операторы QUEUE и DEPART, в выходном файле будет также содержаться информация об очереди.
3.5 Правила окончания процесса ИМ
Как уже отмечалось выше, одним из главных моментов ИМ является выработка команды на прекращение процесса ИМ при выполнении заданного условия. Этот вопрос достаточно очевиден, но, тем не менее, вызывает определённые трудности у студентов, поэтому он выделен в отдельный параграф.
Процесс ИМ в GPSS/H прекращается при выполнении одного из двух условий:
1. Окончание ИМ по числу стартов, когда показания счётчика завершений - CЗ (TG1) обнуляются или приобретают отрицательное значение.
2. Окончание ИМ по времени испытаний, когда накопленное время движения транзактов превышает заданное время испытаний.
Рассмотрим оба условия.
В данном случае основанием для окончания ИМ является число, задаваемое операндом А ОУ START, сразу после успешной компиляции и начала моделирования это число вносится в счётчик завершений. Проход первого транзакта через ОБ TERMINATE (уничтожение транзакта) приводит к вычитанию значения операнда А ОБ TERMINATE из показаний СЗ, каждый следующий проход транзакта через свой ОБ TERMINATE уменьшает показания СЗ на число, определяемое операндом А (напомним, что ОБ может быть много, но СЗ в МФ один !). Значение операнда А по умолчанию равно 0, т.е. проход Хакт через такой ОБ TERMINATE не изменяет показаний СЗ. В других случаях значение операнда А может быть любым целым положительным числом. На основании сказанного можно предложить выражение , позволяющее понять логику работы СЗ:
A(START) -
0 , 3.1которое читается следующим образом – для выполнения условия прекращения ИМ по числу стартов, необходимо из числа, первоначально заданного в СЗ операндом А ОБ START, вычитать накапливаемую сумму терминирований, задаваемых операндами разных ОБ TERMINATE (если их несколько в МФ) до выполнения условия, что разность станет равной нулю или примет отрицательное значение.
Рассмотрим несколько простых примеров, решаемых устно, но при желании их можно промоделировать в режиме контроля с помощью отладчика (описание см.3.6).
Примеры.
А)SIMULATE Б) SIMULATE В) SIMULATE
GENERATE 50 GENERATE 50 GENERATE 50
TERMINATE 1 TERMINATE 2 TERMINATE 5
START 3 START 3 START 3
END END END
Г) SIMULATE Д) SIMULATE
GENERATE 50 GENERATE 50
TERMINATE 1 TERMINATE 1
GENERATE 100 GENERATE 75
TERMINATE 0 TERMINATE 1
START 3 START 3
END END
В каждом из этих примеров необходимо ответить на вопрос, - В какой момент времени окончится процесс ИМ? Рассмотрим эти примеры последовательно. Для начала представим себе временную ось, начинающуюся всегда в момент времени 0.0. Временная дискрета выбирается исследователем, предположим, что цифра 50 в ОБ GENERATE соответствует 50 минутам (секундам, часам и т.д.). На рис. 3.4 представлена эта временная ось. Используем рисунок для решения примера А. Поскольку задано детерминированное значение операнда А ОБ GENERATE, то транзакты будут поступать каждые 50 временных дискрет, а именно 50,100,150 и т. д. Первый транзакт придёт в момент 50, сразу пройдёт через ОБ TERMINATE, операнд А которого равен единице. В СЗ записано