Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Обработка данных / УЧ_пособие.doc
Скачиваний:
145
Добавлен:
31.05.2015
Размер:
2.96 Mб
Скачать

5.3. Прогон модели и стандартный отчет о выполнении программы

После того, как исходная программа модели введена с клавиатуры или считана с диска и оттранслирована, в памяти ПК создалась текущая модель, и теперь можно выполнить ее прогон. Для этого в командную строку необходимо ввести управляющий оператор START (если он отсутствует в тексте программы), указав в поле A соответствующее начальное значение счетчика завершений. После нажатия клавиши Enter оператор START переносится в окно данных, и прогон модели начинается. Об этом сигнализирует сообщение

Simulation in Progress 

Если процесс моделирования длится достаточно долго, за ним можно наблюдать, раскрывая последовательно окна: Window -> Simulation Window и далее какое - либо из интересующих нас окон. Вид окна Block Window, полученный при выполнении программы, представленной выше, приведен на рисунке 4.27

Рис. 4..27. Окно Block Window.

Если процесс моделирования длится слишком долго, его можно прервать, нажав клавишу HALT.

По результатам проведённого моделирования система GPSS выдаёт отчёт (файл статистики), содержащий следующую информацию:

  1. Дату и время проведения эксперимента.

  2. Время начала и окончания моделирования.

  3. Информацию об основных блоках (тип, число входов, текущее содержание)

  4. Информацию об устройствах, очередях, логических ключах.

Файл статистики

Строка, содержащая основную информацию о ре­зультатах работы модели:

START TIME END TIME BLOCKS FACILITIES STORAGES

0.000 150000.000 9 1 0

Элементы статистики, представленные в этой строке имеют сле­дующее содержание:

START TIME - абсолютное системное время в момент начала мо­делирования. Оно эквивалентно абсолютному системному времени, после последнего применения операторов RESET или CLEAR;

END TIME - абсолютное время, когда счетчик завершений при­нимает значение 0;

BLOCKS - количество блоков, использованных в текущей моде­ли, к моменту завершения моделирования;

FACILITIES - количество устройств, использованных в модели, к моменту завершения моделирования;

STORAGES - количество многоканальных устройств, использо­ванных в текущей модели к моменту завершения моделирования;

Затем в файле статистики следует информация об именах, кото­рые просматривает GPSS/World в ходе моделирования. Необходимость в по­лучении такой информации устанавливается в файле SETTINGS.GPS. Ин­формация об именах имеет для нашей программы следующий вид:

NAME VALUE

COMP 10008.000

EXPON1 10006.000

LAB1 2.000

LINE 10007.000

Поле NAME отмечает имена, содержащиеся в программе модели.

Поле VALUE определяет числовое значение, соответствующее име­ни. Система устанавливает начальный номер равным 10000, если только в файле SETTINGS.GPS не указан другой номер.

Далее приводятся сведения о количестве транзактов, прошедших через каждый из блоков, в процессе выполнения программы:

LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY

1 GENERATE 80 0 0

LAB1 2 QUEUE 80 9 0

3 SEIZE 71 0 0

4 DEPART 71 0 0

5 ADVANCE 71 1 0

6 RELEASE 70 0 0

7 TERMINATE 70 0 0

8 GENERATE 1 0 0

9 TERMINATE 1 0 0

Поле LABEL определяет номер строки в рабочей модели, связанный с блоком GPSS/World.

Поле LOC определяет имя или номер этого блока.

Поле BLOCK TYPE определяет тип блока GPSS/World.

Поле ENTRY COUNT определяет количество транзактов, вошедших в данный блок, после последнего выполнения блоков RESET или CLEAR, или с начала работы программы.

Поле CURRENT COUNT определяет количество транзактов, находя­щихся в данном блоке в конце моделирования.

Поле RETRY определяет количество транзактов, ожидающих специ­альных условий, зависящих от состояния данного блока.

Затем в файле статистики указывается информация об устройствах, используемых при моделировании:

FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY

COMP 71 0.581 1227.229 1 72 0 0 0 9

QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY

LINE 9 80 28 0.847 1588.535 2443.900 0

Поле FACILITY определяет имя или номер устройств, используемых при моделировании.

Поле ENTRIES определяет количество транзактов, прошедших через данное устройство за время моделирования.

Поле UTIL. определяет коэффициент использования.

Поле AVE. TIME показывает среднее время на одно занятие транзактом.

Если в модели использовались объекты типа "многоканальное ус­тройство", то далее в файле статистики идет информация об этих объ­ектах:

Поле STORAGE определяет имя или номер объекта типа "многока­нальное устройство".

Поле CAP. определяет емкость многоканального устройства, за­данную оператором STORAGE.

Поле REMAIN определяет число единиц свободной емкости много­канального устройства в конце периода моделирования.

Поле MIN определяет минимальное количество используемой ем­кости многоканального устройства за период моделирования.

Поле MAX определяет максимальное количество используемой ем­кости многоканального устройства за период моделирования.

Поле ENTRIES определяет количество входов в многоканальное устройство за период моделирования.

Поле AVL. определяет состояние готовности многоканального ус­тройства в конце периода моделирования. 1 - означает, что в многока­нальном устройстве хотя бы один канал свободен, 0 – означает, что многоканальное устройство занято.

Поле AVE.C определяет среднее значение занятой емкости за пе­риод моделирования.

Поле UTIL. определяет часть периода моделирования в течение которого многоканальное устройство использовалось.

Поле RETRY определяет количество сообщений, ожидающих специ­альных условий, зависящих от состояния многоканального устройства.

Поле DELAY определяет количество сообщений, ожидающих возмож­ности входа в блок ENTER.

Далее идут сведения о статистических таблицах, если они использовались в программе.

Поле MEAN определяет среднее значение табулируемой величины в этой таблице.

Поле STD. DEV. определяет среднеквадратическое отклонение величины.

Поле RANGE определяет границы частотных интервалов.

Поле FREQUENCY определяет частоты попадания наблюдений в интервалы.

Поле CUM.% определяет накопленные частоты в процентах.

И, наконец, следует информация о цепи будущих событий:

FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE

332 0 2001.000 332 0 54 1 20.000

323 0 2003.784 320 50 51 2 2.000

329 0 2011.682 329 0 20 1 20.000

328 0 2015.089 328 0 1 2 1.000

330 0 2015.874 324 29 30 3 1993.874

Поле FEC XN определяет номер сообщения в списке будущих событий.

Поле PRI определяет приоритет сообщения. Поле BDT определяет момент абсолютного системного времени, когда сообщение покинет список будущих событий.

Поле CURRENT определяет номер блока, в котором сообщение на­ходится в конце моделирования.

Поле NEXT определяет номер следующего блока, в который должно войти сообщение.

Поле PARAMETER определяет имена или номера параметров сообще­ний. 0 - означает, что у сообщения нет параметров.

Поле VALUE определяет значение параметра.

Графическое представление результатов моделирования

При желании можно воспользоваться графическими средствами отображения результатов моделирования. Одним из таких средств являются гистограммы, которые можно строить, если в программе используются оператор TABLE или QTABLE. Для построения гистограммы необходимо выбрать в главном меню команды Window->Simulation Window->Table Window. После этого необходимо выбрать таблицу, по данным которой будет построена гистограмма:

Рис. 4.28. Выбор таблицы для построения гистограммы.

Кроме гистограмм можно использовать графики, которые показывают количество транзактов, пришедших в систему за период моделирования, либо находящихся в очереди или устройстве системы. Для создания графиков необходимо выбрать команды в меню Window->Simulation Window->Plot Window, появится окно определения параметров графика:

Рис. 4.29. Окно определения параметров графика.

После заполнения данного окна выполняется построение соответствующего графика.

  1. Некоторые приемы программирования в системе GPSS, используемые при выполнении курсовых и лабораторных работ.

  1. Отказ заявке в обслуживании при отсутствии свободных мест в очереди

Если число мест в очереди ограничено, то может оказаться, что очередная заявка приходит в момент, когда вся очередь занята. Такой заявке отказывается в обслуживании, и она покидает систему. При аналитическом моделировании вероятность данного события рассчитывается весьма просто. Не составляет особого труда рассчитать эту вероятность и при имитационном моделировании. Для этого используется следующие приемы.

Очередь представляется многоканальным устройством, емкость которого равна числу мест в очереди. Транзакт, поступивший в систему, занимает один канал в этом устройстве, если устройство не занято полностью. В противном случае транзакт покидает систему. Дальнейшее продвижение транзакта по системе осуществляется стандартным образом: поступление в прибор или многоканальное устройство для обслуживания, освобождение очереди – многоканального устройства и т.д.

Можно ставить транзакт в очередь обычным способом и проверять число занятых мест с помощью системного атрибута Q$LINE, где LINE – идентификатор очереди.

Таким образом, в программе, реализующей данную ситуацию, должны содержаться описанные выше элементы. Проверка наличия свободных мест в многоканальном устройстве (очереди) может осуществляться разными способами.

  1. Использование блока TEST.

а) Сравнивается число занятых мест в очереди с некоторым допустимым значением. Фрагмент GPSS – программы может иметь следующий вид:

TEST L Q$LINE,4,LAB LAB – адрес, по которому

QUEUE LINE отправляется транзакт, если число

транзактов в очереди не меньше

. четырех

LAB TERMINATE

Чтобы оценить вероятность отказа заявке в обслуживании, достаточно разделить число транзактов, прошедших через блок LAB, на общее число транзактов, прошедших через систему.

Возможно построение других конструкций GPSS – программы с использованием блока TEST.

б) Использование блока TRANSFER в режиме BOTH.

Транзакт, входящий в блок TRANSFER в режиме BOTH, немедленно пытается войти в блок, имя которого указано в операнде В. Если вход невозможен, транзакт входит в блок, имя которого указано в операнде С. Если в операнде В не указывать никакого имени, то подразумевается следующий по порядку блок. Если следующий по порядку блок – многоканальное устройство – очередь занята (нет свободных мест), то транзакт покидает систему не обслуженным. Таким образом имеет место следующая конструкция программы.

LINE STORAGE 4

.

.

.

TRANSFER BOTH,,LAB

.

.

LAB TERMINATE

Возможны и другие способы решения рассмотренной задачи.

  1. Завершение конца обслуживания.

Время моделирования чаще всего задается с помощью таймера - транзакта. При этом в указанное время таймер-транзакт входит в систему и тут же покидает ее, сбрасывая счетчик завершений в нуль. Процесс моделирования прекращается. Такой подход возможен не всегда. В частности, это не приемлемо при моделировании реальных систем, связанных с обслуживанием клиентов. Клиент, пришедший в парикмахерскую, не покинет ее обслуженным не до конца. Более того, парикмахерская не закроется, пока не будут обслужены все клиенты, вошедшие в нее до момента закрытия. В GPSS – программе процедура завершения обслуживания реализуется следующим образом.

В заданное время таймер - транзакт входит в систему. Он сразу же устанавливает в 1 логический переключатель, который блокирует поступление заявок в систему (с помощью блока GATE). Затем таймер-транзакт задерживается в системе с помощью блока TEST до тех пор, пока количество заявок, поступивших на обслуживание, не сравняется с числом обслуженных заявок, т.е. пока не будет обслужена вся очередь. Описанной процедуре может соответствовать такая конструкция GPSS – программы:

Сегмент 1 Сегмент 2

.

GENERATE 250,50 GENERATE

GATE LR LOCK LOGIC S LOCK

L1 QUEUE LINE TEST E N$L1,N$L2

. TERMINATE 1

L2 TERMINATE

  1. Выбор из группы обслуживающих приборов первого свободного.

Если все обслуживающие приборы равноценные, то их удобно описывать с помощью многоканального устройства. В этом случае вопросы поиска свободного канала, постановки заявок в очередь и т.д. решаются автоматически управляющей системой без вмешательства исследователя. Если же приборы не равноценные, таким приемом пользоваться нельзя. Поэтому возникает необходимость в решении таких задач, как поиск свободного прибора из группы или поиск прибора, очередь к которому минимальна, если все приборы заняты.

Наиболее простое решение поставленной задачи достигается с помощью блока SELECT и использования параметров транзактов.

Блок SELECT может использоваться в двух режимах:

В режиме отношения и в режиме MIN/MAX .

Работа оператора в режиме отношения.

Структура оператора: SELECT X A,B,C,D,E,F

Значения операндов:

Операнд

Значение

Значение по

умолчанию

Е

Групповое имя стандартного числового атрибута

Ошибка

ВиС

Наименьший и наибольший номера (имена) из множества членов просматриваемой группы

Ошибка

D

Значение, с которым должен сравниваться атрибут, указанный в операнде Е

Ошибка

X

Вспомогательный операнд - оператор отношения, определяющий способ сравнения СЧА, указанного операндом Е и значением операнда D. X может принимать следующие значения:

Ошибка

Оператор отношения

Интерпретация в смысле блока SELECT

G

Больше ли Е, чем D?

GE

Больше или равны Е и D?

Е

Равны ли Е и D?

NE

Точно ли не равны Е и D?

LE

Меньше или равны Е и D?

L

Меньше ли Е, чем D?

А

Имя или номер параметра, в который записывается номер члена группы, отвечающего установленному условию атрибута

Ошибка

F

Необязательный операнд; указывает номер блока, в который передается транзакт, если ни один член группы не отвечает установленному условию

Транзакт переходит в следующий по порядку блок

Примеры использования оператора:

1) SELECT Е Pro,1,1, О, F; при поступлении транзакта в этот блок проверяется равен ли нулю стандартный числовой атрибут F (Facility - прибор) устройства с номером 1, т.е. свободно ли устройство; если устройство свободно, то его номер заносится в параметр с именем Pro данного транзакта и транзакт переходит к следующему блоку; в противном случае номер устройства не заносится в параметр транзакта.

Далее в тексте программы следует постановка транзакта в очередь и занятие прибора с номером, занесенным в параметр с именем Pro данного транзакта

. . .

QUEUE P$Pro

SEIZE P$Pro

. . .

2) SELECT L Packet, 2,6,25, SM, EXIT2;

проверяется меньше ли 25-и стандартный числовой атрибут SM (Storage) устройств с номерами от 2-х до 6-и, т.е. меньше ли 25-и максимально занятая емкость многоканального устройства: номер первого многоканального устройства, для которого выполняется заданное условие, заносится в параметр с именем Packet данного транзакта и транзакт переходит к следующему блоку; в противном случае, если ни для одного из проверяемых многоканальных устройств не выполняется заданное условие, транзакт переходит к блоку с именем ЕХ1Т2.

Если в примере 1) не найдено требуемое устройство (прибор), транзакт передается в блок с именем ЕХ1Т2 , в котором происходит поиск наименьшей очереди (режим MIN/MAX)

Работа оператора SELECT в режиме MIN/MAX.

SELECT X А, В, С„ Е

Значения операндов:

Операнд

Значение

Значение по

умолчанию

Е

Групповое имя стандартного числового атрибута

Ошибка

ВиС

Нижняя и верхняя граница номеров членов соответствующей группы

Ошибка

А

Номер параметра, значением которого становится номер соответствующего элемента, имеющего минимальное или максимальное значение атрибута

Ошибка

X

Вспомогательный операнд. Он является оператором MIN или МАХ в зависимости от того, определяется ли элемент, имеющий минимальное или максимальное значение атрибута

Ошибка

Примеры: SELECT MIN 6, 5, 8„ FR

SELECT MAX 5,9, 14„ R

Дальнейшее занятие прибора осуществляется аналогично описанному выше.

  1. Работа администратора по пополнению складских запасов.

При работе магазина, торгующего некоторым оборудованием, администратор ежедневно проверяет запасы оборудования, хранящегося на складе. Если запас меньше некоторой величины, называемой точкой возврата, администратор подает заявку на пополнение. Пополнение всегда содержит одинаковое количество оборудования и поступает с некоторой задержкой. Задержка является случайной величиной, заданной таблично или функцией распределения с известными параметрами. Если запас больше точки восстановления, администратор никаких действий не принимает. Действия администратора можно представить следующей схемой.

Рис. 5.1. Схема действий администратора по пополнению складских запасов.

Если точку восстановления обозначим ROP, число восстановления - ROQ, а наличный запас оборудования – STOCK, то блок – схема GPSS – программы будет выглядеть так, как представлена на рисунке 5.3

Фрагмент GPSS – программы, моделирующей действия администратора, показан на рисунке 5.2

GENERATE ,,,1

L1 TEST LE X$STOCK,X$ROP

ADVANCE FN$LTIME

SAVEVALUE STOCK+,X$ROQ

TRANSFER ,L1

Рис. 5.2 Фрагмент GPSS – программы, моделирующей действия администратора.

Здесь предполагается, что время задержки оборудования случайное, заданное функцией LTIME, которая должна быть описана в программе.

Рис. 5.3. Блок- схема GPSS – программы, моделирующей действия администратора.