1. Краткое описание gpss
GPSS World - это общецелевая система моделирования, значительно облегчающая процесс создания и выполнения программ имитационного моделирования.
Главное окно системы GPSS (рис 1)
Рис.1
В строке заголовка главного окна указано название окна - GPSS World. Во второй строке располагаются пункты главного меню. В третьей - стандартная панель инструментов. Нижняя строка главного окна - строка состояния системы, в которой дается краткое описание выделенной команды.
Система GPSS имеет иерархическую систему меню, состоящую из главного меню, систем выпадающих и всплывающих подменю.
Главное меню служит для вызова выпадающих меню.
Выпадающее меню предназначено для вызова всплывающего меню, диалогового окна или соответствующей команды.
Всплывающее меню позволяет вызывать другое всплывающее меню, диалоговое окно или соответствующую команду. Для выбора пункта всплывающего меню достаточно щелкнуть по нему левой кнопкой мыши.
Для создания новой модели необходимо выбрать пункт File главного окна. Далее выбираем пункт New. Появится окно (рис 2).
Рис. 2
Выбрав пункт Model, получим раскрывшееся окно Untitled Model, в котором набираем текст GPSS – программы.
Если необходимо выполнить ранее созданную программу, нужно открыть соответствующий файл File -> open.
2. Основные блоки
Блок GENERATE служит для создания транзактов, входящих в модель.
Имеет несколько параметров: имя GENERATE A,B,C,D,E.
В поле A задается среднее время между поступлениями в модель транзактов. Если этот интервал постоянен, то поле B не используется. Если же интервал поступления является случайной величиной, то в поле B указывается модификатор среднего значения.
В поле C задается момент поступления в модель первого транзакта. Если это поле пусто или равно 0, то момент появления первого транзакта определяется операндами A и B.
Поле D задает общее число транзактов, которое должно быть создано блоком GENERATE. Если это поле пусто, то блок генерирует неограниченное число транзактов до завершения моделирования.
В поле E задается приоритет, присваиваемый генерируемым транзактам. Число уровней приоритетов неограниченно, причем самый низкий приоритет - нулевой. Если поле E пусто, то генерируемые транзакты имеют нулевой приоритет.
Блок TERMINATE служит для удаления транзактов из модели.
Имеет следующий формат: имя TERMINATE A.
В поле А указывается на сколько единиц уменьшается содержимое счетчика завершений при входе транзакта в данный блок TERMINATE. Если поле A не определено, то оно считается равным 0, и транзакты, проходящие через такой блок, не уменьшают содержимого счетчика завершений.
Блок SELECT может использоваться в двух режимах:
В режиме отношения и в режиме MIN/MAX .
Работа оператора в режиме отношения.
Структура оператора: SELECT X A,B,C,D,E,F
Значения операндов:
Операнд |
Значение |
Значение по умолчанию |
|
Е |
Групповое имя стандартного числового атрибута |
Ошибка |
|
ВиС |
Наименьший и наибольший номера (имена) из множества членов просматриваемой группы |
Ошибка |
|
D |
Значение, с которым должен сравниваться атрибут, указанный в операнде Е |
Ошибка |
|
|
Вспомогательный операнд - оператор отношения, определяющий способ сравнения СЧА, указанного операндом Е и значением операнда D. X может принимать следующие значения: |
Ошибка |
|
Оператор отношения |
Интерпретация в смысле блока SELECT |
||
G |
Больше ли Е, чем D? |
||
GE |
Больше или равны Е и D? |
||
Е |
Равны ли Е и D? |
||
NE |
Точно ли не равны Е и D? |
||
LE |
Меньше или равны Е и D? |
||
L |
Меньше ли Е, чем D? |
||
А |
Имя или номер параметра, в который записывается номер члена группы, отвечающего установленному условию атрибута |
Ошибка |
|
F |
Необязательный операнд; указывает номер блока, в который передается транзакт, если ни один член группы не отвечает установленному условию |
Транзакт переходит в следующий по порядку блок |
|
Работа оператора SELECT в режиме MIN/MAX.
SELECT X А, В, С„ Е
Значения операндов:
Операнд |
Значение |
Значение по умолчанию |
Е |
Групповое имя стандартного числового атрибута |
Ошибка |
ВиС |
Нижняя и верхняя граница номеров членов соответствующей группы |
Ошибка |
А |
Номер параметра, значением которого становится номер соответствующего элемента, имеющего минимальное или максимальное значение атрибута |
Ошибка |
X |
Вспомогательный операнд. Он является оператором MIN или МАХ в зависимости от того, определяется ли элемент, имеющий минимальное или максимальное значение атрибута |
Ошибка |
Блок ADVANCE служит для задержки транзактов на определенный отрезок
модельного времени.
Имеет следующий формат: имя ADVANCE A,B.
Поля A и B имеют тот же смысл, что и в соответствующих полях блока GENERATE.
Блок TRANSFER.
Этот
блок обычно используется для того, чтобы
передать входящие в него транзакты в
блоки, не следующие по номеру за ним.
Передача может быть выполнена логически,
статистически, условно и безусловно.
Вид передачи определяется мнемоническим обозначением, указанным в поле А блока TRANSFER. При безусловной передаче указывается один следующий блок (путь), а при условной передаче - два или больше путей.
Если поле А блока пусто, то все транзакты, поступающие на этот блок, будут передаваться в блок, номер которого указан в поле В.
Если в поле А блока TRANSFER стоит BOTH, то каждый транзакт проверяет 2 пути. Сначала проверяет блок, указанный в поле В, и если транзакт не может войти в этот блок, он пытается войти в блок указанный в поле С. Если и этот блок занят, он задерживается в блоке TRANSFER и повторяет опрос блоков.
Если в поле А стоит ALL, то транзакты, входящие в блок могут опрашивать много путей. Поле В определяет первый выбираемый блок, поле С последний. Поле D определяет индексную константу L Эта константа дает возможность пользователю опрашивать определенные блоки, находящиеся между теми, что заданы в полях В и С. Транзакт, вошедший в блок TRANSFER, далее пытается выйти через блок, указанный в поле В. Если этот блок занят, то транзакт пытается войти в блоки с номерами Y+i, Y+2i,.., Z, где Y - номер блока, указанного в поле В, a Z - номер блок, указанного в поле С.
Блок PRIORITY.
Служит для изменения приоритета транзакта.
Имеет следующий формат:
имя PRIORITY A,B
В поле A записывается новый приоритет транзакта. В поле B может содержаться ключевое слово BU, при наличии которого транзакт, вошедший в блок, помещается в списке текущих событий после всех остальных транзактов новой приоритетной группы, и список текущих событий просматривается сначала.
3. Описание моделируемой системы
3.1 Структурная схема моделируемой системы
3.2
Блок-схема
3.3
Описание работы блок-схемы
Сегмент 1
Поступление заявки в справочную информационную систему. Генерация транзактов (поступление заявок) подчиняется закону пуассоновского распределения (со средней интенсивностью 2000 единиц в час), описывается с помощью экспоненциальной функции prihod, заданной 24-я точками. Транзакты имеют приоритет по умолчанию 0.
Проверяется условие: если хотя бы один компьютер свободен, то заявка немедленно попадает к нему, иначе проверяются, размеры очередей у всех компьютеров и идет постановка в ту очередь, длина которой наименьшая.
Заявка регистрируется в очереди.
Изменяется приоритет транзакта
Заявка занимает прибор.
Заявка покидает очередь.
Заявка задерживается в приборе на время обслуживания, которое подчиняется закону экспоненциального распределения и подразделяется на 5 различных видов, заданных в таблице.
Заявка покидает прибор.
Заявка покидает систему. Но, проходя через блок TERMINATE транзакты не уменьшают содержимое счетчика завершений.
Сегмент 2
Блок Generate создает транзакт в момент модельного времени 28800, который окажется последним, т.е. по истечении 8 часов работа ИС завершается.
После чего содержимое счетчика завершений обращается в 0 и моделирование прекращается.

X