Содержание

Введение
1. Включение GPSS WORLD, общее представление о работе в среде GPSS WORLD
1.1 Операторы - блоки,
1.2 Операторы определения объектов
1.3 Управляющие операторы
1.4 Динамические и статистические объекты
1.5 Таймер модельного времени
2. Построение и анализ модели работы библиотеки
Заключение

Введение

Моделирующие программы системы GPSS WORLD состоят из совокупности блоков, которые реализуют заложенные в них действия или задержки при входе в них "транзактов", которые входят в один блок, затем в следующий. Имитация в целом - это просто последовательность прохождения сначала одного транзакта через один или несколько блоков, затем другого транзакта, и т.д.
Задача при моделировании реальных систем - составить набор блоков, которые заставят транзакты вести себя как реальные (или проектируемые) системы (т.е. имитировать их поведение). Например, блоки GENERATE вводят транзакты в модель в имитируемые интервалы времени по вашему выбору. Такие транзакты могут представлять собой покупателей, детали, телефонные звонки, электронные сигналы и т.д.
Имитация заключается во входе транзактов в блоки, один за один раз. Когда один транзакт останавливается или удаляется из модели, выбирается другой, чтобы начать вход в те блоки, в которые он может войти.
Блоки и транзакты - это только два из многих типов объектов системы GPSS WORLD. В общем случае, когда транзакт входит в блок, то производится некоторая операция над третьим объектом. Например, вход транзакта в блок SEIZE заставляет транзакт занять объект системы GPSS WORLD, называемый устройством. Этот тип объектов обычно используется для представления отдельных ресурсов моделируемых компонент.
Для моделирования используется событийный метод. Соблюдение правильной временной последовательности имитации событий в модели обеспечивается интерпретатором GPSS WORLD - программной системой, реализующий алгоритмы имитационного моделирования.
В данной курсовой работе мы создадим проект моделирования работы в библиотеке, проанализируем его с помощью среды GPSS WORLD, опишем процесс и метод моделирование системы. Произведем расчеты: какое количество человек появляется в библиотеке за день; оценим работу системы и сделаем выводы по поводу эффективности системы, какие коррективы можно ввести для улучшения работы в библиотеке.
моделирование блок транзакт система

1. Включение GPSS WORLD, общее представление о работе в среде GPSS WORLD

GPSS (General Purpose Simulation System - общецелевая система моделирования) - представляет собой язык и машинную программу. Как любой язык, он содержит словарь и грамматику, с помощью которых легко могут быть разработаны точные модели систем определенного типа. Машинная программа интерпретирует модель, написанную на языке GPSS, представляя тем самым пользователю возможность проведения экспериментов с этой моделью на ЭВМ. Машинная программа, выполняющая такую интерпретацию, называется интерпретатором.
Загрузочный модуль системы GPSS WORLD находится, как правило, по адресу C: \Program Files\Minuteman Software\GPSS World Student Version. Ярлык загрузочного модуля GPSS WORLD для удобства выносят на стол пользователя.
Пользовательский интерфейс среды GPSS WORLD выполнен в стандарте WINDOWS.
Исходная программа на языке GPSS/PC, как и программа на любом языке программирования, представляет собой последовательность операторов. Операторы GPSS/PC записываются и вводятся в ПК в следующем формате:
номер _строки имя операция операнды; комментарии Все операторы исходной программы должны начинаться с номера 0_строки - целого положительного числа от 1 до 9999999. После ввода операторов они располагаются в исходной программе в соответствии с нумерацией строк. Обычно нумерация производится с некоторым шагом, отличным от 1, чтобы иметь возможность добавления операторов в нужное место исходной программы.
Некоторые операторы удобно вводить, не включая их в исходную программу. Такие операторы вводятся без номера строки.
Отдельные операторы могут иметь имя для ссылки на эти операторы в других операторах. Если такие ссылки отсутствуют, то этот элемент оператора не является обязательным.
В поле операции записывается ключевое слово (название оператора), указывающее конкретную функцию, выполняемую данным оператором. Это поле оператора является обязательным. У некоторых операторов поле операции включает в себя также вспомогательный операнд. В полях операндов записывается информация, уточняющая и конкретизирующая выполнение функции, определенной в поле операции. Эти поля в зависимости от типа операции содержат до семи операндов, расположенных в определенной последовательности и обозначаемых обычно первыми буквами латинского алфавита от A до G. Некоторые операторы вообще не имеют операндов, а в некоторых операнды могут быть опущены, при этом устанавливаются их стандартные значения (по умолчанию). При записи операндов используется позиционный принцип: пропуск операнда отмечается запятой. Необязательные комментарии в случае их присутствия отделяются от поля операндов точкой с запятой. Комментарии не могут содержать букв русского алфавита.
Операторы GPSS/PC записываются, начиная с первой позиции, в свободном формате, т.е. отдельные поля разделяются произвольным количеством пробелов. При вводе исходной программы в интегрированной среде GPSS/PC размещение отдельных полей операторов с определенным количеством интервалов между ними производится автоматически. Каждый оператор GPSS/PC относится к одному из четырех типов: операторы-блоки, операторы определения объектов, управляющие операторы и операторы-команды.

1.1 Операторы - блоки

Операторы - блоки формируют логику модели. В GPSS/PC имеется около 50 различных видов блоков, каждый из которых выполняет свою конкретную функцию. За каждым из таких блоков стоит соответствующая подпрограмма транслятора, а операнды каждого блока служат параметрами этой подпрограммы.
Блоки выполняют соответствующие операции в модели. В блоках могут происходить события четырех основных типов:
) создание или уничтожение сообщений;
) изменение числового атрибута объекта;
) задержка сообщения на определенный период времени;
) изменение маршрута сообщения в модели.
В спецификацию блока GPSS WORLD, кроме имени блока, описывающего основное функциональное назначение блока, входит необязательная метка и операнды.
Операнды блоков задают информацию, специфичную для действия данного блока. Число операндов каждого блока зависит от типа блока и не превышает семи. Операнды обозначаются символами А, В, С,D, E, F, G. Одни операнды в некоторых блоках должны быть всегда заданы, другие могут задаваться и не задаваться. В некоторых случаях операнды считаются заданными по умолчанию.
Метка (символическое имя) задается не более 5 символами, причем первые три должны быть обязательно алфавитными. Метки ставятся перед блоками, на которые есть ссылки из других частей модели.
Перечень основных блоков GPSS WORLD
ADVANCE - реализация задержки во времени
А - задержка на время обслуживания, В - половина поля допуска равномерно распределенного интервала времени задержки
ASSING - изменение и установка значений параметров транзактов
А - номер, имя модифицируемого параметра, В - величина, используемая для модификации
АSSEMBLE - объединяет заданное число сообщений, принадлежащих к одному семейству, в одно сообщение (осуществляет сборку заданного числа сообщений). После сборки из блока ASSEMBLE выходит только одно сообщение, которое переходит в следующий по номеру блок. В одном и том же блоке ASSEMBLE возможна одновременная сборка сообщений нескольких семейств. Когда сообщение входит в блок ASSEMBLE, интерпретатор просматривает семейство, к которому принадлежит это сообщение, проверяет, есть ли другое сообщение из того же семейства в данном блоке ASSEMBLE.
А - задает число сообщений, участвующих в сборке. Первоначальное значение аргумента поля А должно быть больше или равно единице. Если при входе исходного сообщения в блок ASSEMBLE значение счетчика стало равным нулю (т.е. нужно было "объединить" только одно сообщение), сообщение немедленно покидает блок ASSEMBLE и переходит в следующий по номеру блок. Если результат отрицательный (вычисленное значение аргумента поля А нулевое или отрицательное), происходит ошибка выполнения. Обычно значение счетчика сборки больше единицы, поэтому при входе в блок АSSEMBLE исходного сообщения результат вычитания единицы из счетчика положительный.
COUNT Х - определение числа объектов, удовлетворяющих заданному условию, где Х - логический или условный оператор, А - задается номер параметра вошедшего в блок сообщения, в котором будет организован счетчик числа объектов. В - определяется нижняя граница диапазона изменения номеров или имен объектов, для которых проверяется заданное условие. С - определяется верхняя граница диапазона изменения номеров или имен объектов, для которых проверяется заданное условие. D - задается сравниваемое значение (величина сравнения) для аргумента поля Е. Е - используется совместно с аргументом поля D и условным оператором Х. В поле Е задается какой-либо из стандартных числовых атрибутов просматриваемых объектов. Необходимо только записывать мнемоническое обозначение атрибута, поскольку диапазон изменения номеров объектов задан полями В и С.
Логический оператор может принимать следующие значения:
NU - (U) - устройство свободно (устройство занято);
NI - (I) - устройство не прервано (устройство прервано);
FV - (FNV) - устройство доступно (устройство недоступно);
SE - (SNE) - многоканальное устройство пусто (многоканальное устройство не пусто);
SF - (SNF) - многоканальное устройство заполнено (не заполнено);
SV - (SNV) - многоканальное устройство доступно (недоступно);
LS - (LR) - проверка логического ключа на состояние "вкл." ("выкл");
При использовании логических операторов поля D и E могут быть пустыми.
Условный оператор может принимать следующие значения:
L - (G) - условие выполняется, если СЧА объекта, заданного в Е, меньше СЧА объекта, заданного в D (если СЧА объекта, заданного в Е, больше СЧА объекта, заданного в D).
LE - (GE) - условие выполняется, если СЧА объекта, заданного в Е, меньше - равно СЧА объекта. заданного в D (если СЧА объекта, заданного в Е, больше - равно СЧА объекта, заданного в D).
E - (NE) - условие выполняется, если СЧА объекта, заданного в Е, равно СЧА объекта, заданного в D (если СЧА объекта, заданного в Е, не равно СЧА объекта, заданного в D).
MAX - (MIN) - наибольшее значение из всех значений СЧА объектов, удовлетворяющих заданному условию, (наименьшее значение из всех значений СЧА объектов, удовлетворяющих заданному условию).
При использовании условных операторов поля D и Е должны быть заданы.
DEPART - сбор статистики при ожидании (покинуть очередь), где А - имя очереди, длина очереди уменьшается на единицу.
ENTER - занять свободные параллельно работающие каналы, где А - имя многоканального устройства, B - число занимаемых приборов.
FAVAIL - делает доступным заданное устройство после периода недоступности, где А - номер или имя устройства, которое должно стать доступным. Этот блок игнорируется, если заданное устройство уже доступно.
FUNAVAIL - делает недоступным заданное устройство до тех пор, пока не вступит в действие блок FAVAIL, где А - номер или имя устройства, которое должно стать недоступным. Этот блок игнорируется, если устройство уже недоступно. Режимы полей B - H относятся только к тем сообщениям, которые использовали устройство или генерировали на нем прерывание в момент, когда устройство стало недоступным. Другие сообщения, пытающиеся позднее занять устройство или прервать его в период недоступности, помещаются в список задержки; эти сообщения не подлежат воздействию режимов, заданных в полях В-Н.
Помещение блоков PRIORITY 0, BUFFER перед блоком FUNAVAIL позволяет обрабатывать сообщения списка текущих событий таким образом, что последним обрабатывается сообщение, вызывающее недоступность устройства, т.е. все сообщения, которым разрешено попытаться занять или прервать устройство, могут сделать это до того, как оно станет недоступным.
GATE Х - проверяет состояние устройства и управляет потоком сообщений, где Х - логический оператор, А - имя или номер объекта, для которого проводится проверка,
В - номер следующего блока для входящего сообщения, когда логический оператор имеет значение "ложь".
Логический оператор может принимать следующие значения:
NU - (U) - устройство свободно, (устройство занято);
NI - (I) - устройство не прервано, (устройство обслуживает прерывание);
FV - (FNV) - устройство доступно (устройство не доступно);
SE - (SNE) - многоканальное устройство пусто (многоканальное устройство не пусто);
SF - (SNF) - многоканальное устройство заполнено (многоканальное устройство не заполнено);
SV - (SNV) - многоканальное устройство доступно (многоканальное устройство не доступно);
GATHER - накапливает заданное число сообщений, принадлежащих к одному семейству, где А - число сообщений. Ни одно из накапливаемых сообщений не уничтожается. Когда в блоке GATHER накопится заданное число сообщений, все эти сообщения одновременно попытаются войти в следующий по номеру блок. Сообщения никогда не задерживаются на входе блока GATHER. Одновременно в одном блоке GATHER может происходить накопление сообщений нескольких семейств.
GENERATE - внесение транзактов в модель, где А - средний интервал времени, В - поло-вина поля допуска равномерно распределенного интервала времени задержки, С - начальная задержка смещения интервалов, D - ограничитель, Е - уровень приоритета
LEAVE - освобождение определенного количества параллельно работающих каналов, где А - имя (символическое или числовое) многоканального устройства, В - число занимаемых каналов.
LOOP - организация цикла, где А - счетчик цикла (число или имя), В - начало цикла (число или имя).
MATCH - блок синхронизации движения двух сообщений, принадлежащих к одному семейству, без удаления этих сообщений из модели, где А - имя или номер другого блока MATCH, называемого "сопряженным блоком MATCH". Если такого блока нет, происходит останов по ошибке. Блоки MATCH не объединяют синхронизируемые сообщения. Синхронизация осуществляется путем подбора пар сообщений из одного семейства и задержки этих сообщений до тех пор, пока оба сообщения из одной пары не поступят в заданные точки модели. Сообщения никогда не задерживаются в блоке MATCH. Сообщения, для которых выполнилось условие синхронизации, переходят к следующему по номеру блоку. В одной паре блоков MATCH могут одновременно находиться в состоянии синхронизации пары сообщений из различных семейств. Возможна также одновременная синхронизации пар сообщений из одного семейства в нескольких блоках MATCH.
PRIORITY - изменение уровня приоритета транзакта, где А - значение, присваиваемое в качестве уровня приоритета активного транзакта.
PREEMPT - занять устройство. Блок PREEMPT может задержать сообщение на входе, где А - определяет номер или имя устройства, на котором генерируется прерывание, В - задает приоритетный режим (PR) или режим прерывания, если операнд опущен.
QUEUE - сбор статистики при ожидании (стать в очередь), где А - имя очереди, длина очереди увеличивается на единицу.
RELEASE - освобождение занятого устройства, где А - имя освобождаемого устройства.
RETURN - освобождение ранее захваченного устройства, где А номер устройства, с которого снимается прерывание. Прерывание может быть снято в блоке RETURN только тем сообщением, которым оно было генерировано.
SELECT Х - выбирает первый элемент в заданном диапазоне, который удовлетворяет определенному условию. Номер этого объекта записывается в заданный параметр вошедшего в блок транзакта, действия блока SELECT аналогичны действию блока COUNT.
SAVEVALUE - замена, увеличение или уменьшение текущего содержимого ячейки, где А - сохранение значения, может заканчиваться знаками + или - , В - задается значение для запоминания, сложения или вычитания.
SAVAIL - переводит заданное многоканальное устройство из состояния недоступности в состояние доступности. Если заданное многоканальное устройство уже находится в состоянии доступности, блок SAVAIL выступает как пустой блок. А - номер многоканального устройства, которое следует перевести в состояние доступности.
SUNAVAIL - переводит заданное многоканальное устройство из состояния доступности в состояние недоступности. Если заданное многоканальное устройство уже находится в состоянии недоступности, блок SUNAVAIL выступает как пустой блок. А - номер многоканального устройства, которое следует перевести в состояние недоступности.
SEIZE - занять свободное устройство, где А - имя (символическое или числовое) занимаемого устройства
TABULATE - определение и использование таблиц, где А - имя таблицы.
TEST Х - определяет номер следующего блока, где Х - условие (L,LE,E,NE,G,GE),
А и В - сравниваемые величины, С - номер блока, если "ложь".
TERMINATE - удаление транзактов из модели, где в А задается число единиц. на которое этот блок изменяет содержимое счетчика завершений, определяющего момент окончания моделирования. Если А не задано, транзакт выводится из модели, а содержимое счетчика не изменяется.
TRANSFER - перенаправление движения транзактов. Если А - не используется, Б - позиция блока, в который должен перейти транзакт. Значение аргумента после точки в операнде А показывает, какой процент входящих в блок сообщений направится по адресу в С, остальные транзакты направляются к блоку, указанному в операнде В, или к следующему блоку, если операнд В пропущен.
SPLIT - копирует входящее в него сообщения, которое называется исходным где А - число создаваемых копий, В - адрес следующего блока, к которому переходят копии исходного сообщения, причем значение вычисляется для каждой копии отдельно.

1.2 Операторы определения объектов

Операторы определения объектов служат для описания параметров некоторых объектов GPSS/PC (о самих объектах речь пойдет дальше). Примерами параметров объектов могут быть количество каналов в многоканальной системе массового обслуживания, количество строк и столбцов матрицы и т.п.
FUNCTION - функции GPSS WORLD связывают значение аргумента функции, который представляет собой независимую переменную, со значениями зависимой переменной функции (FNj). Другим важным применением функций является генерация значений случайных чисел. Для таких функций распределения вероятности аргументом является случайное число 0<=RN<1, а значения зависимых переменных (FNj) являются случайными элементами переменных в моделях системы. Имя функции должно записываться в поле метки оператора описания FUNCTION.
А - содержит аргумент (независимую переменную) функции. Аргументом может быть любой из стандартных числовых атрибутов, за исключением матрицы ячеек; в качестве аргумента функции может быть использовано и значение любой другой функции. Если в качестве аргумента функции используется случайное число RNj, то значениями аргумента будут числа, равномерно распределенные в интервале 0 <= RNj < 1. Следует отметить, во всех других случаях использование случайных чисел RNj дает значение в диапазоне RNj<999.
В - определяет тип и число точек функции (число пар значений X [i] и Y [i]). Ниже перечислены типы функции и мнемоника каждого типа:
С - непрерывная числовая
D - Дискретная числовая
L - Табличная числовая
E - Дискретная атрибутивная
M - Табличная атрибутивная
За каждым оператором описания FUNCTION должны следовать операторы для задания координат (X [i] и Y [i]) функции, правила их написания следующие:
запись должна начинаться в позиции 1;
значения координат X [i] и Y [i] одной точки функции разделяются запятой;
наборы координат разделяются знаком (/);
координаты X [i] и Y [i], относящиеся к одной точке, должны задаваться одним оператором;
каждое последующее значение X [i] должно быть больше предыдущего;
значения Y [i] не могут быть матрицами ячеек;
каждая функция должна иметь, по крайней мере, две описанные точки.
ТABLE - Оператор описания таблицы определяет аргумент, а также число и ширину частотных интервалов. В поле метки задается имя таблицы.
А - задается аргумент таблицы - элемент данных, чье частотное распределение будет табулироваться.
В - задается верхний предел первого интервала.
С - задается ширина частотного интервала - разница между верхней и нижней границей каждого частотного класса. Операнд может быть положительным целым.
D - задается число частотных интервалов. Это число не может превышать 8191. Операнд может быть положительным целым.
Для сбора элементов данных сообщение должно войти в блок TABULATE с тем же именем таблицы, что определено в блоке TABLE. Когда сообщение входит в блок TABULATE, оценивается аргумент таблицы (операнд А в операторе TABLE). Если он меньше или равен операнду В операторе TABLE, то выбирается первый частотный класс таблицы. Если аргумент таблицы не подходит для этого класса, то класс выбирается путем деления значения аргумента на операнд С оператора TABLE. Нижняя граница частотного класса включается в предыдущий класс. Если таблицы не достаточно для размещения этого значения, то выбирается последний частотный интервал. Затем выбирается целое из частотного класса, и счетчик увеличивается на величину, определяемую операндом В оператора ABULATE. По умолчанию увеличение происходит на 1. В конце работы оператора TABULATE изменяются значения среднего и стандартного отклонения аргумента таблицы.
QTABLE - оператор описания Q-таблицы является средством получения распределения пребывания сообщения в очереди. В поле метки задается имя таблицы.
А - задается имя очереди.
В - верхняя граница первого частотного класса.
С - размер частотного интервала - разница между верхней и нижней границей каждого частотного класса.
D - задается число частотных интервалов. Оно не может превышать 8191. Операнд может
быть положительным целым числом.
STORAGE - определяет емкость многоканального устройства в текущей модели. Поле метки определяет имя многоканального устройства.
А - определяет объем многоканального устройства. Операнд А должен быть положительным целым.

1.3 Управляющие операторы

Управляющие операторы служат для управления процессом моделирования (прогоном модели). Операторы-команды позволяют управлять работой интегрированной среды GPSS/PC. Управляющие операторы и операторы-команды обычно не включаются в исходную программу, а вводятся непосредственно с клавиатуры ПК в процессе интерактивного взаимодействия с интегрированной средой.
Оператор START (начать) имеет следующий формат: START A,B,C,D
Поле A содержит константу, задающую начальное значение счетчика завершений. В поле B может быть записано ключевое слово NP - признак подавления формирования стандартного отчета по завершении моделирования. Если поле B пусто, то по окончании прогона модели формируется отчет со стандартной статистической информацией о всех объектах модели (см. разд.5). Поле C не используется и сохранено для совместимости со старыми версиями GPSS. Поле D может содержать 1 для включения в отчет списков текущих и будущих событий. Если поле D пусто, то выдача в отчет содержимого этих списков не производится.
Оператор SIMULATE (моделировать) устанавливает предел реального времени, отводимого на прогон модели. Если прогон не завершится до истечения этого времени, то он будет прерван принудительно с выдачей накопленной статистики в отчет.
Оператор SIMULATE имеет единственный операнд A, содержащий предельное время моделирования в минутах, задаваемое константой. Оператор размещается перед оператором START, начинающим лимитированный прогон.
Оператор RMULT (установить значения генераторов) позволяет перед началом прогона установить начальные значения генераторов случайных чисел RN, определяющие генерируемые ими последовательности. Поля A-G оператора могут содержать начальные значения генераторов соответственно RN1-RN7, задаваемые константами. Начальные значения генераторов, не установленные операторами RMULT, совпадают с номерами генераторов.
Оператор RESET (сбросить) сбрасывает всю статистическую информацию, накопленную в процессе прогона модели. При этом состояние аппаратных, динамических и запоминающих объектов, а также генераторов случайных чисел сохраняется, и моделирование может быть возобновлено с повторным сбором статистики. Оператор не имеет операндов.
С оператором RESET связано различие между относительным (СЧА C1) и абсолютным (СЧА AC1) модельным временем. Таймер относительного времени C1 измеряет модельное время, прошедшее после последнего сброса статистики оператором RE SET, а таймер абсолютного времени
AC1 - модельное время, прошедшее после начала первого прогона модели. Если не использовалось ни одного оператора RESET, то значения этих таймеров совпадают. Оператор RESET устанавливает таймер C1 в ноль и не влияет на таймер&n bsp; AC1.
Оператор RESET используется обычно при моделировании нестационарных процессов, когда требуется собрать статистику по отдельным интервалам стационарности или исключить влияние переходного периода на собираемую статистическую информацию.
После трансляции исходной программы в памяти ПК создается так называемая текущая модель, являющаяся совокупностью разного типа объектов, каждый из которых представляет собой некоторый набор чисел в памяти ПК, описывающих свойства и текущее состояние объекта.
Объекты GPSS/PC можно разделить на семь классов: динамические, операционные, аппаратные, статистические, вычислительные, запоминающие и группирующие.

1.4 Динамические и статистические объекты

Динамические объекты, соответствующие заявкам в системах массового обслуживания, называются в GPSS/PC транзактами. Они "создаются" и "уничтожаются" так, как это необходимо по логике модели в процессе моделирования. С каждым транзактом может быть связано произвольное число параметров, несущих в себе необходимую информацию об этом транзакте. Кроме того, транзакты могут иметь различные приоритеты.
Операционные объекты GPSS/PC, называемые блоками, соответствуют операторам-блокам исходной программы. Они, как уже говорилось, формируют логику модели, давая транзактам указания: куда идти и что делать дальше. Модель системы на GPSS/PC можно представить совокупностью блоков, объединенных в соответствии с логикой работы реальной системы в так называемую блок-схему. Блок-схема модели может быть изображена графически, наглядно показывая взаимодействие блоков в процессе моделирования.
Аппаратные объекты GPSS/PC - это абстрактные элементы, на которые может быть расчленено (декомпозировано) оборудование реальной системы. К ним относятся одноканальные и многоканальные устройства и логические переключатели. Многоканальное устройство иногда называют памятью.
Одноканальные и многоканальные устройства соответствуют обслуживающим приборам в СМО. Одноканальное устройство, которое для краткости далее будем называть просто устройством, может обслуживать одновременно только один транзакт. Многоканальное устройство (МКУ) может обслуживать одновременно несколько транзактов. Логические переключатели (ЛП) используются для моделирования двоичных состояний логического или физического характера. ЛП может находиться в двух состояниях: включено и выключено. Его состояние может изменяться в процессе моделирования, а также опрашиваться для принятия определенных решений.
Статистические объекты GPSS/PC служат для сбора и обработки статистических данных о функционировании модели. К ним относятся очереди и таблицы. Каждая очередь обеспечивает сбор и обработку данных о транзактах, задержанных в какой-либо точке модели, например перед одноканальным устройством. Таблицы используются для получения выборочных распределений некоторых случайных величин, например, времени пребывания транзакта в модели.
К вычислительным объектам GPSS/PC относятся переменные (арифметические и булевские) и функции. Они используются для вычисления некоторых величин, заданных арифметическими или логическими выражениями либо табличными зависимостями.
Запоминающие объекты GPSS/PC обеспечивают хранение в памяти ПК отдельных величин, используемых в модели, а также массивов таких величин. К ним относятся так называемые сохраняемые величины и матрицы сохраняемых величин.
К объектам группирующего класса относятся списки пользователя и группы. Списки пользователя используются для организации очередей с дисциплинами, отличными от дисциплины "раньше пришел - раньше обслужен".
Каждому объекту того или иного класса соответствуют числовые атрибуты, описывающие его состояние в данный момент модельного времени. Кроме того, имеется ряд так называемых системных атрибутов, относящихся не к отдельным объектам, а к модели в целом. Значения атрибутов всех объектов модели по окончании моделирования Выводятся в стандартный отчет GPSS/PC. Большая часть атрибутов доступна программисту и составляет так называемые стандартные числовые атрибуты (СЧА), 0которые могут использоваться в качестве операндов операторов исходной программы. Все СЧА в GPSS/PC являются целыми числами.
Каждый объект GPSS/PC имеет имя и номер. Имена объектам даются в различных операторах исходной программы, а соответствующие им номера транслятор присваивает автоматически. Имя объекта представляет собой начинающуюся с буквы последовательность букв латинского алфавита, цифр и символа "подчеркивание". При необходимости имени любого объекта, кроме имени блока, можно поставить в соответствие любой номер с помощью оператора описания EQU, имеющего следующий формат:
имя EQU номер
Блокам присваиваются их порядковые номера в исходной программе (не путать с номерами строк!).
Для ссылки 0на какой-либо стандартный числовой атрибут некоторого объекта соответствующий операнд оператора исходной программы записывается одним из следующих способов:
СЧА $имя; СЧА j, где СЧА - системное обозначение (название) конкретного стандартного числового атрибута данного объекта; имя - имя объекта; j - номер объекта; $ - символ-разделитель.
Прогон текущей модели, т.е. собственно моделирование, выполняется с помощью специальной управляющей программы, которую называют симулятором (от английского SIMULATE - моделировать, имитировать). Работа GPSS-модели под управлением симулятора заключается в перемещении транзактов от одних блоков к другим, аналогично тому, как в моделируемой СМО перемещаются заявки, соответствующие транзактам. В начальный момент времени в GPSS-модели нет ни одного транзакта. В процессе моделирования симулятор генерирует транзакты в определенные моменты времени в соответствии с теми логическими потребностями, которые возникают в моделируемой системе. Подобным же образом транзакты покидают модель в определенные моменты времени в зависимости от специфики моделируемой системы. В общем случае в модели одновременно существует большое число транзактов, однако в каждый момент времени симулятор осуществляет продвижение только какого-либо одного транзакта. Если транзакт начал свое движение, он перемещается от блока к блоку по пути, предписанному блок-схемой. В тот момент, когда транзакт входит в некоторый блок, на исполнение вызывается подпрограмма симулятора, соответствующая типу этого блока, а после ее выполнения, при котором реализуется функция данного блока, транзакт "пытается" войти в следующий блок. Такое продвижение транзакта продолжается до тех пор, пока не произойдет одно из следующих возможных событий:
) транзакт входит в блок, функцией которого является удаление транзакта из модели;
) транзакт входит в блок, функцией которого является задержка транзакта на некоторое определенное в модели время;
) транзакт "пытается" войти в следующий блок, однако блок "отказывается" принять его. В этом случае транзакт остается в том блоке, где находился, и позднее будет повторять свою попытку войти в следующий блок. Когда условия в модели изменятся, такая попытка может оказаться успешной, и транзакт сможет продолжить свое перемещение по блок-схеме.
Если возникло одно из описанных выше условий, обработка данного транзакта прекращается, и начинается перемещение другого транзакта.
Таким образом, выполнение моделирования симулятором продолжается постоянно.
Проходя через блоки модели, каждый транзакт вносит вклад в содержимое счетчиков блоков. Значения этих счетчиков доступны программисту через СЧА блоков: W - текущее содержимое блока и N - общее количество входов в блок.
Каждое продвижение транзакта в модели является событием, которое должно произойти в определенный момент модельного времени. Для того чтобы поддерживать правильную временную последовательность событий, симулятор имеет таймер модельного времени, который автоматически корректируется в соответствии с логикой, предписанной моделью.

1.5 Таймер модельного времени

Различные события реальных систем происходят в течение некоторого периода времени, клиенты приходят в парикмахерскую; когда подходит их очередь, они попадают на обслуживание к парикмахеру. Стрижка заканчивается, и клиент покидает парикмахерскую: если все эти события представить в модели, то их возникновение должно происходить на фоне модельного времени. Следовательно, интерпретатор GPSS должен автоматически обслуживать таймер модельного времени.
Когда начинается моделирование, в интерпретаторе планируется приход первого транзакта. После этого таймер модельного времени останавливается в значении времени, соответствующем моменту появления первого транзакта в модели. Этот транзакт (а также другие, если они приходят в тот же момент времени) входит в модель. Далее он (или они, друг за другом) продвигается через все возможные блоки модели, которые ему встречаются. Естественно, что в этот первый отмеченный таймером момент времени ничего более в системе не происходит. Интерпретатор GPSS продвигает далее значение таймера до значения времени, когда происходит следующее (или следующие) событие, которое запланировано. Эти события, возникающие как следствие продвижения транзактов через блоки, происходят в последующие моменты времени. Когда в этот второй отмеченный таймером момент времени не остается транзакта, который надо перемещать, таймер опять меняет значение, и т.д. Именно таким образом и происходит изменение модельного времени.
Одним из преимуществ системы GPSS является то, что таймер модельного времени корректируется автоматически в соответствии с логикой, предписанной моделью. Таким образом, разработчику нет необходимости самому следить за точным изменением времени.
Рассмотрим некоторые важные особенности GPSS и его таймера.
) Таймер GPSS регистрирует целые значения. Это означает, что события могут возникать только в "целые" моменты времени.
) Единицу времени, которая может быть отмечена таймером, определяет разработчик. Однако единицу времени никогда не сообщают интерпретатору. Это значение выражают в неявном виде в форме временных данных, вводимых в модель. Если все такие данные выражены в минутах, то подразумеваемой единицей времени будет минута. Если все данные выражены в миллисекундах, то такой единицей времени будет миллисекунда. Разработчик может задавать такую единицу времени, которая ему удобна для того, чтобы правильно отразить события реальной системы в модели. Он должен при этом следить за тем, чтобы все данные, связанные со временем, были выражены через определенную минимальную единицу времени.
) GPSS является интерпретатором для "следующего события”. Иначе говоря, после того как модель полностью скорректирована в данный момент модельного времени, таймер продвигается к ближайшему значению времени, в которое происходит следующее событие (точнее, к следующему моменту времени, на которое запланировано возникновение события). Интервал модельного времени пропускается, если на этом интервале нет событий. Практически это означает, что время прогона модели не зависит от единицы времени, выбранной разработчиком.
Определим, наконец, в чем же заключается различие между модельным и реальным временем. Когда значение таймера модельного времени продвигается в следующую точку, происходит некоторая задержка, для того чтобы скорректировать модель. В реальной же системе такого времени на корректировку не существует, Не исключено, что для моделирования только одной минуты модельного времени потребуется несколько часов реального времени (например, при моделировании вычислительных систем). С другой стороны, эксперименты, которые проводят в течение недель месяцев или даже лет реального времени, могут занимать всего несколько секунд модельного времени при моделировании на ЭВМ. Такое свойство моделей, позволяющее как бы сжимать время, является одним из потенциальных преимуществ экспериментирования с системами с помощью моделирования их на ЭВМ.

2. Построение и анализ модели работы библиотеки

Построим модель обслуживания читателей в библиотеке университета, а также проведем моделирование процесса функционирования справочного отдела и работы библиотекаря в течение рабочего дня. По параметрам сформулируем подробное описание конкретного объекта моделирования на основании обобщённой постановки задачи и описания работы объекта моделирования. Проведем модельный эксперимент, проанализируем статистические данные, ответим на поставленные вопросы. Результаты, полученные при моделировании, необходимо трактовать в терминах работы библиотеки.
Библиотека оснащена компьютерной справочной системой. Для того чтобы получить какие-либо книги у библиотекаря, читатель должен сначала обратиться к оператору компьютерной системы за справкой о наличии данных книг в хранилище, затем получить листок-требование, по которому библиотекарь выдаст необходимые книги.
В библиотеку в течение R = 9 - часового рабочего дня заходят читатели-студенты с интервалом Tn = 1 - 3,2 минуты, подходят к столу справок и за Тo = 3 - 7 секунд, объясняют оператору персонального компьютера (ПК) свои требования. Оператор за Тz = 21 - 29 секунд печатает запрос. Поиск информации занимает Тk = 2 - 4 секунды. Читатель из предложенного списка выбирает необходимые книги в течение Ts = 1 - 21 секунд. Печать листка требования осуществляется за Тp = 2 - 8 секунд. За Тu= 3 - 23 секунды осуществляется уточнение запроса. Затем читатель переходит к библиотекарю, который за время Тv=1,3 - 3 минуты находит и выдает требуемые книги.
Определить:
)	Количество студентов, обслуженных оператором ПК без очереди;
2)	Время, в течение которого ПК использовался;
Решение:
Пусть библиотека будет работать с 9: 00 до 18: 00 (9 часов).
Переведем все данные в одну единицу измерения - секунды и возьмем усредненные значения.

Tn = 126±66 секунд
To = 5±2 секунд
Tz =25±4 секунд
Tk = 3±1 секунды
Ts = 11± 10 секунд
Тp=5±3 секунд
Tu=13±10 секунд
Тv =129±51 секунд

Результаты работы программы представлены на рис.1

Рис.1

В модели, построенной на предыдущем этапе, нужно учесть то, что, получив справку у оператора ПК, а затем книги у библиотекаря, все читатели работают в читальном зале 1,75 - 3,5 часа. Такова основная линия перемещения читателей по библиотеке. Но согласно указанной в варианте схеме движения половина вошедших научных сотрудников, которые заходят в библиотеку с интервалом в 7-20 минут, направляются сразу к библиотекарю, получают книги за 8-20 секунд, а затем на 0,6 - 2,6 часа идут работать в преподавательский зал, остальные на 20-40 минут идут работать в зал периодики; десятая часть всех вошедших читателей, не обращаясь за справкой к оператору ПК, направляется на 0,6 - 2,6 часа в отдел спец. фонда.
Необходимо дополнить модель работы объекта из предыдущего пункта подробным и четким описанием перемещения всех групп читателей по отделам и залам библиотеки. Провести моделирование в течение 9 - часового рабочего дня.
Определить:
) достаточно ли 6 мест в зале спец. фонда;
) среднее время нахождения студентов в библиотеке;
Решение:
Пусть библиотека будет работать с 9: 00 до 18: 00 (9 часов).
Единицей модельного времени выберем минуты.

Tr = 11±40 мин
Rr = 157,5±52,5 мин
Rj = 96±60 мин

Результаты работы программы представлены на Рис.2

Рис.2

Исследуя окно отчета мы видим что макс значение очереди в спецфонд составляет 9 человек, но это значение образуется из за того что спецфонд закрыт до 12 часов и читатели вынуждены ждать открытия. среднее значение очереди составляет 3 человека, это тоже много поэтому считаю целесообразным увеличить спецфонд до 8 мест.
	Заключение
GPSS World является объектно-ориентированным языком. Его возможности визуального представления информации позволяют наблюдать и фиксировать внутренние механизмы функционирования моделей. Его интерактивность позволяет одновременно исследовать и управлять процессами моделирования. Использование механизма виртуальной памяти позволяет моделям реально достигать размера миллиарда байт. Вытесняющая многозадачность и многопоточность обеспечивают высокую скорость реакции на управляющие воздействия и дают возможность GPSS World одновременно выполнять множество задач.
Система GPSS World была разработана для оперативного получения достоверных результатов с наименьшими усилиями. В соответствии с этими целями в GPSS World хорошо проработана визуализация процесса моделирования, а также встроены элементы статистической обработки данных. Сильная сторона GPSS World - это его прозрачность для пользователя.
В данной курсовой работе пыла изучена модель работы библиотеки по ранее оговоренной схеме. Проанализировав результат моделирования становиться очевидно, что изменение модели не требуется. Модель показала довольно стабильную работу, что следует из полного отсутствия очереди, либо присутствии ее в очень маленьком размере. Это свидетельствует о хорошей организации библиотечной системы и отсутствии необходимости проведения изменений в ее структуре.