ТЕМА (1086517), страница 5
Текст из файла (страница 5)
Рассмотрим теперь выполнение подпрограммы DЕРАRТ.
-
Значение счетчика содержимого очереди уменьшается на число, определяемое операндом В.
-
Используя значение времени, приписанное транзакту при вхождении в блок QUEUE, определяют, является ли данный транзакт транзактом с нулевым вхождением. Если транзакт вызвал нулевое вхождение в очередь, то счетчик нулевых вхождений увеличивается на число, определяемое операндом В блока DЕРАRТ.
-
Связь транзакта, показывающая принадлежность к данной очереди, разрывается.
Для иллюстрации п. 2 предположим, что транзакт входит в блок "QUEUE QUEUE,5" и что в то же значение модельного времени он проходит в блок "DЕРАRТ QUEUE,5". По определению транзакт вызывает нулевое вхождение в очередь. Следует помнить, что интерпретатор обрабатывает элементы информации очереди в единицах содержимого, а не в транзактах. Следовательно, в этом примере число нулевых вхождений в очередь увеличится на 5, а не на 1.
В операндах В блоков QUEUE и DЕРАRТ значения, отличные от 1, употребляются в специальном случае. Очевидно, что собираемые статистические данные должны соответствующим образом быть интерпретирозаны. При печатании таких данных, как число входов, максимальное и среднее содержимое, текущее содержимое, а также число нулевых вхождений делается ссылка не на число транзактов, а на число элементов содержимого.
В заключение скажем, что существует однозначное точное соответствие между счетчиком содержимого очереди и числом транзактов, рассматриваемых как элементы очереди только в том случае, если операнд В блоков QUEUE и DЕРАRТ равен 1 (заданный в явном виде или по умолчанию). Необходимость использования операнда В возникает крайне редко, поэтому почти всегда существует точное однозначное соответствие. В этой книге нет случаев возникновения необходимости использования операнда В в блоках QUEUE и DЕРАRТ.
Некоторые замечания о неверном использовании регистратора очереди
Начинающие изучение GPSS могут составить неверное представление об использовании регистратора очереди. Два наиболее часто встречающихся ошибочных представления мы прокомментируем ниже.
Первой ошибкой является то, что многие считают, будто регистраторы очереди необходимо использовать в модели всюду, где могут возникать очереди. Часто думают, что если регистратор очереди не записан, то не обеспечивается возможность ожидания обслуживания. Это неверно. Использование регистратора очереди совершенно необязательно. При использовании регистратора интерпретатор собирает статистику об ожидании; если регистратор не используется, статистика не собирается, но всюду, где должно возникать ожидание, оно возникает. Например, на рис. 8.2 независимо от того, находится ли блок SEIZЕ между парой QUEUE - DEPART или нет, транзакт не войдет в блок SEIZЕ, если прибор JОЕ занят. Ожидание является следствием состояния прибора, а не следствием использования регистратора очереди.
Во многих случаях, даже если известно, что в определенных местах системы возникают очереди, разработчик предпочитает не использовать регистратор очереди. Если в планы не входит обработка статистических данных об очередях, то лучше не собирать статистику. Это сэкономит время, расходуемое на моделирование.
Для иллюстрации на рис. 8.4 изображена система, в которой в шести различных местах могут возникать очереди. Разработчик модели может принять решение собрать статистику во всех шести местах или не собирать ее вовсе; может принять решение собирать статистику в некоторых из этих мест модели или, например, собирать статистику в точках 2, 4, 5 и 6 и не собирать ее в точках 1 и 3.В данной книге дано много примеров, где в местах возникновения очереди статистика об очереди не собирается. В четвертом и пятом примерах этой главы приведены такие случаи.
Второй общей ошибкой, касающейся использования регистраторов очереди, является мнение, будто транзакт не является элементом очереди, если он не находится в блоке QUEUE. Это неверно. Транзакт просто отмечает факт своего присутствия в очереди входом в блок, где осуществляется привязка к очереди по имени и времени входа в очередь. Независимо от того, остается транзакт в блоке QUEUE или нет, он остается элементом очереди до тех пор, пока не войдет в блок DEРАRТ соответствующей очереди. В зависимости от того, каким образом построена модель, транзакт в общем случае может некоторое время находиться в различных частях модели после того, как он покинет блок QUEUЕ, и прежде, чем он войдет в соответствующий ему блок DEРАRТ.
Выше мы сделали предположение, что транзакт может являться элементом более чем одной очереди. Это вовсе не так уж странно, как может показаться на первый взгляд. Можно без труда придумать ситуацию, когда люди одновременно стоят в двух или даже более очередях. Здесь следует отметить, что находиться в очереди вовсе не значит физически в ней присутствовать.
Представим себе, например, случай прихода в мясной магазин покупательницы, которой приписан номер в момент входа в магазин. Если покупательница видит, что ее номер еще не дошел, она может пройти в другой магазин, например в бакалейный, стать там в очередь, обслужиться, снова вернуться в мясной магазин и ждать своей очереди. С точки зрения нахождения в очереди, она была в мясном магазине все время, хотя на самом деле она побывала и в бакалейном.
В GPSS транзакт не может присутствовать одновременно более чем в пяти очередях. Если транзакт уже находится в пяти очередях и делает попытку присоединиться к шестой, то печатается предупреждающее сообщение с номером 853 . Причиной ограничения именно пятью очередями является наличие только пяти полей записи для имени очереди при привязке транзакта к очереди и пяти полей для записи времени присоединения к очереди.
При рассмотрении второго примера моделирования в этой главе приведена модель на GPSS , в которой транзакты одновременно присутствуют в двух различных очередях.
УПРАЖНЕНИЯ §8
"Сбор статистики при ожидании. Блоки QUEUE (СТАТЬ В ОЧЕРЕДЬ) и DEPERT (ПОКИНУТЬ ОЧЕРЕДЬ) "
-
Пусть блок QUEUE LINE выполняется в моменты времени 32, 56 и 88 в течение модели рования, а блок DEPART LINE - в моменты времени 70 и 77. Пусть также завершение моделирования произошло в момент времени 100. Определите, какие значения будут распечатаны для следующих статистических данных об очереди LINE:
AVERAGE CONTENTS (СРЕДНЕЕ СОДЕРЖИМОЕ),
TOTAL ENTRIES (ОБЩЕЕ ЧИСЛО ВХОДОВ),
ZERO ENTRIES (ЧИСЛО НУЛЕВЫХ ВХОДОВ),
PERCENT ZEROS (ПРОЦЕНТ НУЛЕВЫХ),
AVERAGE TIME/TRANS (СРЕДНЕЕ ВРЕМЯ/ТРАНЗ.),
$ AVERAGE TIME/TRANS (Д CРЕДНЕЕ ВРЕМЯ/ТРАНЗ.),
CURRENT CONTENTS (ТЕКУЩЕЕ СОДЕРЖИМОЕ).
Почему нет необходимости знать, является ли транзакт, покинувший очередь в момент вре- мени 70, транзактом, ' вошедшим в очередь в момент времени 32, или транзактом, вошед- шим в очередь в момент времени 56?
-
Посмотрите на модель, состоящую из четырех сегментов на рис. У7.
а). В какие моменты времени первые три транзакта войдут в блок QUEUE в сегменте 1?
б). Б какие моменты времени первые три транзакта в сегменте 2 войдут в блок QUEUE?
в). Каковы наименьшее и наибольшее возможные времена, в которые первые три транзакта в сегменте 3 могут войти в блок QUEUE?
Рис. У7
г). Каковы наибольшее и наименьшее возможные времена, в которые первые три транзакта в сегменте 4 могут войти в блок QUEUE?
-
В некоторой конкретной модели транзакты символизируют собой самолеты, прибывающие в аэропорт. Перед приземлением они присоединяются к очереди STACK, моделирующей группу самолетов, летающих над аэропортом и ожидающих разрешения на посадку. Самолеты прилетают в аэропорт каждые 900 единиц времени, но они могут опаздывать на 50 - 50 единиц времени. Самолеты прилетают независимо друг от друга. Поэтому если один самолет опаздывает, это никак не сказывается на других самолетах. Напишите модель этой системы.
§9 "Описание стандартов для записи примеров моделирования"
В данном руководстве для иллюстрации различных возможностей GPSS будут рассмотрены примеры моделирования. Ниже указаны элементы описания примеров.
-
Постановка задачи. Она включает детальное описание задачи. Такое описание достаточно для того, чтобы по нему можно было строить модель и выполнять ее прогоны (т. е. моделировать систему).
-
Метод построения модели. Здесь описывают и поясняют, каким образом задачу можно интерпретировать в терминах GPSS. Сделана попытка объяснить, почему избран именно такой подход.
-
Таблица определений. Таблица определений является списком различных элементов GPSS , использованных в модели, с краткой характеристикой тех частей системы, которые описываются этими элементами. В начале этой таблицы записывается принятая в модели единица времени. Затем записывается представление транзактов. Далее в алфавитном порядке описываются все прочие элементы модели и части моделируемой системы.
-
Блок-схема.В определенном смысле блок-схема и есть модель. Подробная блок-схема может оказаться трудночитаемой. По этой причине рядом с блоком в блок-схеме пишут пояснения (или комментарии). Комментариями являются краткие сведения, указывающие, что моделирует или чем помогает моделированию данный блок.
-
Распечатка программы. В процессе чтения строк, представляющих собой вариант модели, интерпретатором GPSS выполняются следующие три этапа:
-
присваивается номер каждому блоку модели (т. е. номер его месторасположения);
-
присваивается номер каждой считываемой строке;
-
по каждой строке на печатающем устройстве распечатываются:
-
номер блока (если строка представляет собой блок);
-
информация, находящаяся в полях имени, операции и операндов строки, а также комментарии, если они есть;
-
номер строки ??( номер расположения этой карты в колоде).
-
-
Интерпретатор выдает распечатку исходной программы. Поскольку номер блока и номер строки не входят в исходный текст, а добавляются интерпретатором в распечатку, ее можно называть расширенной распечаткой программы.
-
Выходные данные программы. Распечатка результатов, выдаваемая в процессе моделирования, показывает, чего фактически достиг разработчик своими силами.Она служит основой для обсуждения. Часто представляют лишь части выходных данных. Это сделано для экономии места и для сосредоточения внимания читателя на той части выходных данных, которая для него наиболее интересна. В некоторых случаях вместо непосредственной распечатки просто представляют выводы.
-
Обсуждение. Сюда входит обсуждение логики моделирования, использования модели и распечатки результатов.
Логика моделирования. Здесь рассматривают особенности блок-схемы и ее соотношение с самой задачей или дают конкретный метод интерпретации задачи в терминах GPSS .
Использование модели. Перфокарточная версия модели содержит карты блоков,а также карты, имеющие прочую информацию. Например, карта SТАRТ, рассмотренная в параграфе 3, должна обязательно быть включена как элемент модели.В блок-схеме не существует блока, который соответствовал бы карте SТАRТ. Есть и другие возможности включения информации, в явном виде не присутствующей в блок-схеме. При необходимости такая информация будет появляться в распечатке программы и будет обсуждена нами.
Распечатка результатов. Результаты можно рассматривать как некий ответ на поставленную задачу. Основным назначением примеров моделирования, тем не менее, является иллюстрация методов построения оделей на GPSS, а не числовых результатов задачи. Поэтому результатам работы программ уделяется не очень много внимания.
§10 "Пример моделирования 2А.Система с одним прибором и очередью"
Для установления периода моделирования используется сегмент таймера из двух блоков. На рис.2.10 уже был представлен сегмент, требуемый в нашем случае, в предположении, что единицей времени выбрана 1 мин. Его мы и используем в модели.
Рис.2.10
Логика моделирования. В представленной модели не выполняется никаких дополнительных действий для вывода клиентов из парикмахерской, когда моделирование завершается при значении таймера 480. Если бы в модели был настоящий парикмахер, то он после восьмичасового рабочего дня ушел бы с работы. Если, наоборот, была бы настоящая модель, то моделировалось бы закрытие дверей через 8 ч работы, а моделирование не прерывалось пока все клиенты, находящиеся в парикмахерской в этот момент времени, не были бы обслужены. Как это записывается на GPSS, будет показано дальше.















