Распечатка программы. (Общее время работы процессора при моделировании на ЭВМ IВМ 360/67 составило 3,6 с.) На рис. 7В. З, а, б показаны цепи текущих и будущих событий в конце пятого дня моделирования. Транзакт 12 в цепи текущих событий является машиной планового осмотра, ждущей возможности занять прибор BAY в блоке SEIZE с номером 3. (Для него следующим блоком является блок 3. На рис. 7В.2 указано, что этим блоком является блок SEIZE в 1-м сегменте модели.) Заметим, что транзакт 12 заблокирован однозначно (в его столбце индикатора просмотра помещена единица). Транзакт 4 в цепи текущих событий — это транзакт-наблюдатель, который заблокирован блоком TEST, работающим в режиме отказа в 4-м сегменте модели (блок 22, рис. 7В.2). Место, где помещается его индикатор просмотра, пусто, это означает, что данное блокирующее условие неоднозначно.
Транзакты 2, 8, 11 и 3 в цепи будущих событий должны появиться в модели из блоков GENERATE с номерами соответственно 1, 14, 7 и 25. Это можно определить из информации относительно номеров их следующих блоков. Транзакт 9 в цепи будущих событий — это хозяин, который является текущим пользователем устройства BAY. Его следующим блоком для входа является блок 17. Блок 17 — это блок RETURN, при входе в который хозяин делает прибор BAY доступным для следующего рабочего дня.
Цепь прерывания в конце пятого модельного дня показана на рис. 7В. З, в. В этой цепи находятся два транзакта. Заметим, что наименования столбцов в цепи прерывания идентичны наименованиям столбцов в цепях текущих и будущих событий.
Транзакт 10 в цепи прерывания — это транзакт, которому не разрешен захват прибора потому, что его следующим блоком вхождения является блок RELEASE в 1-м сегменте модели. Другой транзакт в цепи прерывания, транзакт 6, является пользователем, которому разрешен захват, но который сам захвачен. Он может быть захватчиком потому, что его следующим блоком вхождения является блок 11, т. е. блок RETURN во 2-м сегменте модели.
Позиции в цепи прерывания под столбцом BLOCK пусты. (Вспомним, что столбец BLOCK указывает, в каком блоке находится транзакт в настоящий момент.) Когда транзакт находится в пассивном состоянии в цепи прерывания, его нет ни в одном блоке, это и объясняет наличие пустых мест в столбце BLOCK. Находясь в цепи прерывания, транзакт, таким образом, не вносит вклада ни в один счетчик текущего содержимого.
В столбце BDT (время ухода из блока) цепи прерывания на рис. 7В. З, в для транзактов 6 и 10 стоят соответственно величины 52 и 81. Для каждого транзакта в цепи прерывания величину BDT следует понимать как оставшееся время пребывания на приборе, с которого его сняли. Таким образом, пользователю, которому разрешен захват, осталось 52 единицы времени до окончания обслуживания на приборе. Аналогично, пользователю, которому не разрешен захват, осталась 81 единица времени до окончания обслуживания на приборе.
Цепь прерывания не содержит информации, которая прямо указывала бы, с какого прибора снят транзакт, находящийся в цепи. В нашем примере, конечно, имеется только один прибор, так что вопрос «с какого прибора» здесь не представляет интереса. В общем случае, на вопрос «с какого прибора» разработчик может ответить, используя помещенную в цепь прерывания информацию о следующем блоке вхождения вместе с программой модели.
По случайному совпадению порядок транзактов в распечатке цепи прерывания на рис. 7В. З, в совпадает с внутренним порядком цепи. А именно, и в распечатке, и внутри цепи транзакт 6 находится в начале цепи прерывания, а транзакт 10 — в конце. Однако, вообще говоря, порядок транзактов в распечатке цепи прерывания не будет совпадать с внутренним порядком в цепи. Это обясняется тем, что распечатка цепи прерывания всегда располагает информацию по возрастанию номеров транзактов. Вероятность того, что этот порядок совпадает с порядком внутренней организации цепи, весьма мала.
В распечатке цепи меткой СI обозначен четвертый справа столбец. (СI означает «индикатор цепи»). Пробел или 1 в столбце СI соответственно означают, что транзакт находится либо в цепи пользователя, либо в цепи прерывания. Значения 2 или 4 соответственно означают нахождение транзакта в цепи либо текущих, либо будущих событий. За исключением цепей пользователя, можно проверить эти утверждения по рис. 7В. З, а—в.
Величины СI важны только для внутренних цепей. Пользователь не может обращаться к ним непосредственно. Наличие величин СI, по сути дела, излишне, так как различные цепи и так имеют свои названия.
Два самых правых столбца в распечатке цепи обозначены РС (число захватов) и РF (флаг захвата). РС является счетчиком числа различных приборов, с которых в данный момент снят соответствующий транзакт. На рис. 7В. З, в в столбце РС стоят единицы, а на рис. 7В. З, а и б для цепей текущих и будущих событий в столбце РС стоят пробелы (что означает нуль).
Единица в колонке РF означает, что соответствующий транзакт подлежит захвату. Если флаг захвата транзакта находится в положении “включен” ( т. е. имеет величину 1), готовящийся захват произойдет в ближайший момент времени, когда транзакт войдет в блок ADVANCE с ненулевым временем задержки (см. также параграф 7.14). Если транзакт во время захвата уже находится в блоке ADVANCE (подразумевается, что он помещен в цепь будущих событий), то концепция «неизбежного» захвата не применяется; в этом случае транзакт немедленно выводится из цепи будущих событий, и его дальнейшая судьба зависит от пользователя.
На рис. 7В. З, г выведена статистика для прибора BAY в конце пятого дня моделирования. Заметим, что в распечатке статистики в столбцах «SEIZEING TRANS. NO» (ЗАНИМАЕТ ТРАНЗ. №) и «РRЕЕМРТING ТRANS. NO» (ЗАХВАТЫВАЕТ ТРАНЗ. №) стоят соответственно величины 9 и 10. Это совпадает с информацией о транзактах, приводимой в распечатках цепи прерывания и цепи будущих событий. Цепь прерывания показывает, что транзакт 10 является замещенным пользователем без права захвата прибора, как отмечалось выше; цепь будущих событий указывает на то, что транзакт 5 является в настоящий момент пользователем прибора на основании захвата. (Напомним, что в информации о цепях «следующий блок вхождения» NBA следует понимать как номер блока для того, чтобы определить, разрешен соответствующему транзакту захват прибора или нет.)
На рис. 7В. З, д и е показана статистика очереди и таблица в конце 25-го моделируемого дня. Статистика очереди показывает, что среднее время ожидания обслуживания для полицейской машины, требующей внепланового ремонта, составляет 595 временных единиц, или около 10 ч. Рассмотрение статистики очереди также показывает, что в среднем 0,221 полицейских машин ожидают обслуживания, и одновременно самое большее четыре машины находятся в ожидании. За время, равное 25 дням, на внеплановый ремонт поступило 13 полицейских машин.
В таблице LENTH на рис. 7В. З, е приведена более подробная информация об ожидающих обслуживания полицейских машинах, чем в статистике очереди. Средневзвешенное значение в таблице составляет 0,221. Эту величину следует понимать как среднее число ждущих в очереди полицейских машин, что совпадает с соответствующей величиной в статистике очереди. Табличная информация указывает также, что 83% времени не было полицейских машин, ожидающих внепланового ремонта, 12% времени в ожидании находилась одна машина, 4% — две машины и только 0,52% и 0,05% времени одновременно в ожидании были соответственно три и четыре машины.
Определение числа запасных деталей для станка на участке производства
1. Постановка задачи. В станке используют деталь, которая время от времени выходит из строя. Как только используемая деталь отказывает, станок необходимо выключить. Отказавшую деталь вынимают и на ее место ставят исправную запасную деталь сразу же или как только это станет возможным, и станок вновь включают. Неисправные детали ремонтируют и после ремонта снова используют.
Время работы детали распределено по нормальному закону со средним 350 ч и стандартным отклонением 70 ч. Съем отказавшей детали со станка занимает 4 ч. Время, необходимое для того, чтобы установить заменяющую ее деталь, равно б ч. Время ремонта неисправной детали распределено по нормальному закону со средним и стандартным отклонением, соответственно равным 8 и 0,5 ч.
Оператор, следующий за этим станком, отвечает непосредственно за съем неисправной детали и установку на ее место замещающей детали. Ремонтом отказавших деталей занимается механик. В обязанности механика входит также ремонт некоторых деталей, поступающих к нему из другого источника. Эти другие детали поступают по закону Пуассона со средним интервалом между поступлениями, равным 9 ч. Время, требуемое на их ремонт, составляет 8 ± 4 ч. Они имеют более высокий приоритет при ремонте, чем неисправные детали, используемые в рассматриваемом станке.
На рис. 6С.1 рассматриваемая система показана схематически. Каждый пустой кружок обозначает либо исправную деталь в состоянии резерва, либо деталь, находящуюся в данный момент в станке. Перечеркнутые кружки означают детали в состоянии отказа. Другие детали, конкурирующие с рассматриваемыми деталями в пункте ремонта, изображены перечеркнутыми квадратами. Как указано выше и как схематически показано стрелкой, приоритет этих деталей при ремонте выше, чем у неисправных деталей; они поступают в очередь на ремонт раньше всех неисправных деталей, которые могут ожидать ремонта.
Построить GPSS-модель системы «станок-детали» и применить ее для нахождения коэффициента использования станка как функции числа запасных деталей, имеющихся в системе.

Исследовать систему при следующих предположениях о числе запасных деталей: ноль, одна и две. Для каждой модели выполнить прогон, соответствующий пяти годам, предполагая 40-часовую рабочую неделю. Для каждой конфигурации проследить за условиями эксперимента, для того чтобы продублировать во всех случаях поток поступления других деталей и условия их взаимодействия с неисправными деталями.
2. Метод построения модели. 1-й сегмент модели: детали и станок. В гл. 2 было указано, что в начале построения модели следует определить системные ограничения, а затем решить, какие элементы GPSS следует использовать для моделирования этих ограничений. В рассматриваемой задаче единственным ограничением (помимо одного механика) является число запасных деталей в системе. Поскольку они перемещаются в системе, как показано на рис. 6С.1, было бы естественно моделировать деталь транзактом. Предположим, что, используя блок GENERATE с ограничением на число порождаемых им транзактов, в начале прогона в модель вводили бы необходимое число транзактов и т. д. Эта задача о запасных деталях была сформулирована ранее в упражнении 9 параграфа 5.24 и там было предложено строить модель, представляя деталь транзактом.
В противоположность предложению, высказанному в упражнении 9 параграфа 5.24, в данном примере использован метод, при котором транзакт интерпретируется как оператор станка. Для того чтобы следить за числом запасных деталей в системе, используется сохраняемая величина. Более точно сохраняемая величина будет использована в качестве счетчика, в котором записано число имеющихся в наличии запасных деталей. Таким образом, когда оператору требуется запасная деталь, он может проверить ее наличие с помощью счетчика.
Поскольку проверка происходит в режиме отказа, оператор будет вынужден ждать до тех пор, пока не появится запасная деталь. Взятие детали оператором соответствует уменьшению счетчика сохраняемой величины. Аналогично, при починке неисправной детали число исправных запасных деталей учитывается простым увеличением сохраняемой величины. Сам станок моделируется прибором. Транзакт-оператор включает станок, занимая прибор, и отключает посредством его освобождения. Таким образом, нагрузка прибора совпадает с нагрузкой станка. Использование прибора для моделирования станка обеспечивает удобный метод нахождения требуемой статистики о нагрузке.
На первый взгляд может показаться, что в сегменте модели, моделирующем детали и станок, должен быть только один транзакт-оператор. Это было бы справедливо в случае, если бы в системе не было неисправных деталей. Однако после того, как используемая деталь отказала и была извлечена из станка, в системе возникают две независимые последовательности событий. Прежде всего неисправную деталь следует отправить в пункт ремонта. В то же самое время необходимо проверить наличие запасных деталей, чтобы определить, есть ли в наличии хотя бы одна; если есть, то ее следует установить, станок следует вновь включить и т. д. Поскольку эти независимые последовательности событий должны происходить одновременно, они не могут выполняться одним транзактом-оператором. Как следствие, тут же после снятия со станка отказавшей детали, оператор входит в блок SPLIT, вызывая помощника (т. е. вводя в модель потомка). Помощник проверяет наличие исправной детали, ставит ее в станок и включает его, принимая на себя таким образом функции оператора станка. Тем временем первый оператор (т. е. родитель) относит неисправную деталь на пункт ремонта и т. д. После завершения ремонта первоначальный оператор отмечает этот факт, увеличивая счетчик—сохраняемую величину. Затем он уходит, передав своему помощнику функции оператора.
2-й сегмент модели: пункт ремонта. Механик моделируется прибором FIXER. В 1-м сегменте модели оператор отправляет неисправную деталь в ремонт посредством занятия этого прибора. Но он должен вступить в состязание за пользование прибором с другими деталями. Ситуация использования прибора другим источником имитируется отдельным сегментом модели (2-й сегмент). В этом сегменте транзакты, имитирующие другие детали, поступают в модель с высоким приоритетом, ждут ремонта и после ремонта уходят из модели. Таким образом, работа этого отдельного сегмента очень проста.

4. Блок-схема



6. Выходные данные программы. Распечатка результатов не приведена. Результаты даны ниже.
7. Обсуждение. Логика моделирования. С самого начала предполагали, что как только деталь установлена на станке, он готов к включению. Следовательно, как только транзакт-оператор входит в модель (через первый блок на рис. 6С.3), он тут же включает станок (занимая прибор МАС посредством входа в блок SEIZE, являющийся блоком 2 на рис. 6С.3). Заметим, далее, что общее число деталей в системе равно начальному значению первой сохраняемой величины плюс единица (деталь, находящаяся в станке с самого начала). При первой конфигурации модели общее число деталей в системе равно 1 (по умолчанию в этом случае первая сохраняемая величина имеет нулевое значение).
Заметим, что в 1-м сегменте модели прибор МАС не создает ограничений. Это означает, что как только транзакт-оператор захочет занять этот прибор (путем входа в блок 2 на рис. 6С.3), такое занятие всегда возможно. Ограничения на запасные детали имитируются в модели в блоке TEST (блок 12 на рис. 6С.3), работающем в режиме отказа.
Во 2-м сегменте модели блоком, следующим за блоком GENERATE, является блок ADVANCE, в котором нет операндов (блок 17 на рис. 6С.3). Поскольку предполагают, что время задержки равно нулю, этот пустой блок ADVANCE не задерживает другие детали, поступающие в модель из предшествующего блока GENERATE; с другой стороны, его наличие гарантирует, что как только другая деталь поступит, она сможет тут же выйти из блока GENERATE, позволяя интерпретатору планировать поступление следующей такой детали. Если бы пустой блок ADVANCE не был включен в модель, то время между соседними поступлениями других деталей могло бы нарушиться (см. гл. 2). Вспомним, что пустой блок ADVANCE использовали также в примере 6В почти при тех же обстоятельствах.
В постановке задачи было отмечено, что условия эксперимента должны быть проконтролированы в смысле создания одинаковых условий взаимодействия между другими деталями и деталями в пункте ремонта. Это обеспечивается путем использования третьего и первого датчиков случайных чисел соответственно для времени между прибытием других деталей и временем ремонта. Карта RMULT для каждой различной конфигурации устанавливает оба этих датчика в данную начальную точку (см. карты 5, 60 и 64 на рис. 6С.3).
Распечатка результатов. (Общее время занятости процессора при выполнении моделирования на ЭВМ 1ВМ 360/67 составило 19,1 с.) В табл. 6С.2 приведены результаты моделирования. Если в системе находится только одна деталь (т. е. нет запасных), коэффициент использования станка составляет 70%. Он возрастает до 91% при наличии одной запасной детали и почти до 96% при двух запасные деталях (см. упражнение 3, а параграфа 6.10).

Модель гаража
1. Постановка задачи. В городе имеется гараж, в котором производят работы по уходу и ремонту за транспортными средствами, принадлежащими городу. В транспортные средства включают легковые автомобили, тяжелые грузовики и т. п. Город небольшой, поэтому гараж оборудован только одной смотровой ямой и в нем работает только один механик. Это означает, что одновременно можно выполнять обслуживание только одной машины.
Все городские транспортные средства обязаны регулярно прибывать в гараж для профилактического осмотра. Число автомобилей, прибывающих каждый день по графику осмотра, распределено равномерно от 2 до 4. Время, необходимое для обслуживания каждой машины, равномерно распределено в интервале от 1,5 до 2,5 ч. Машины, предназначенные для осмотра в данный день, оставляют в гараже до начала каждого рабочего дня. Рабочий день длится 8 ч.
При некоторых условиях регулярная работа по осмотру может быть прервана, и яму используют для более важных целей. В частности, город пытается поддерживать полный парк полицейских машин, работающих в любое время. Требуется, чтобы полицейские машины можно было использовать 24 ч в сутки. Как только с какой-либо машиной что-то случается, ее немедленно доставляют в гараж для ремонта вне графика. Даже если на профилактическом осмотре в это время стоит другая машина, вновь прибывшей полицейской машине разрешается занять смотровую яму, и ее ремонт начинается без задержки. Тем не менее, полицейская машина, нуждающаяся во внеплановом ремонте, не может вытеснить другую полицейскую машину, стоящую на внеплановом ремонте.
Распределение времени между поступлением полицейских машин на внеплановый ремонт является пуассоновским со средним интервалом, равным 48 ч. Если гараж закрыт в момент их поступления, машины должны ждать до 8 ч утра, пока не начнется работа. Время их обслуживания распределено по экспоненте со средним 2,5 ч.
Построить GPSS-модель для имитации деятельности гаража. По полученной модели оценить распределение случайной переменной «число полицейских машин, находящихся на внеплановом ремонте». Выполнить прогон модели, имитирующей работу в течение 25 дней, выводя промежуточную распечатку всей информации, включая цепи текущих и будущих событий и цепи прерывания по окончании каждых пяти дней. Для простоты предположить, что механик работает 8 ч в день без перерыва, и не учитывать выходные. Это аналогично пред положению, что гараж открыт 7 дней в неделю (см. упражнение 3 параграфа 7.18).
2. Метод построения модели.
Сегмент планового осмотра. Машины-транзакты, прибывающие в гараж для планового осмотра, являются пользователями прибора-ямы, которым не разрешен захват. Эти машины-транзакты проходят через первый сегмент модели. Каждый день в 8 ч утра главный транзакт - машина входит в этот сегмент. Затем он входит в блок SPLIT, порождая необходимое число транзактов, представляющих собой машины, запланированные на этот день для осмотра. Эти машины-транзакты проходят затем через простую последовательность блоков SEIZE— ADVANCE—RELEASE и покидают модель.
Участок внепланового ремонта. Полицейские машины, нуждающиеся во внеплановом ремонте, двигаются в модели в своем собственном сегменте. Использование ими ямы-прибора имитируется простой последовательностью блоков PREEMPT—ADVANCE—RETURN. В операнде В блока PREEMPT не требуется РR; просто при попытке занять смотровую яму посредством входа в блок РRЕЕМРТ этим транзактам разрешается вытеснить любой транзакт, которому захват не разрешен. Поскольку вариант с использованием РR в блоке РRЕЕМРТ не применяется, им не позволяется замещать на обслуживании того пользователя, которому разрешен захват смотровой ямы.
В параграфе 5.11 было объяснено использование взвешенной таблицы для оценки распределения длины очереди. В данной модели можно использовать приведенный там для этой цели сегмент для оценки требуемого распределения числа неработающих полицейских машин. Для этого требуется только, чтобы полицейские машины-транзакты входили в блок QUEUE в момент их прибытия в гараж и чтобы они проходили через блок DEPART непосредственно перед их выходом из гаража. Таким образом, состояние «вне работы» равносильно пребыванию в очереди. Затем, как было объяснено в гл. 5, для наблюдения за числом транзактов в очереди и для занесения соответствующих результатов во взвешенную таблицу может быть использован отдельный сегмент.
Открытие и закрытие гаража. Для того чтобы организовать закрытие гаража по истечении каждого восьмичасового рабочего дня и открытие его снова в 8 ч утра, используют специальный сегмент. Транзакт-хозяин входит в этот сегмент каждые 24 ч (начиная с конца первого рабочего дня). Этот транзакт, имеющий в модели высший приоритет, затем немедленно поступает в блок РRЕЕМРТ, имеющий в операнде B символ PR. Хозяину, таким образом, разрешено захватить яму-прибор вне зависимости от того, кем является текущий пользователь (если он есть). Затем, спустя 16 ч, хозяин освобождает смотровую яму-прибор, позволяя закончить ранее прерванную работу (при наличии таковой).
Сбор данных для неработающих полицейских машин. Для сбора данных, позволяющих оценить распределение числа неработающих полицейских машин, используется свой сегмент модели. Алгоритм работы этого участка был разобран в параграфе 5.11.
Промежуточная выдача. Для требуемой промежуточной выдачи и окончания моделирования в конце 25-го дня используют последовательность блоков GENERATE—TERMINATE.
Вопросы приоритетов. В модели есть вопросы, касающиеся уровней приоритетов, которые заслуживают внимания. Они будут обсуждены при разборе логики модели в конце примера. Перед тем, как перейти к этому, следует рассмотреть приводимую ниже блок-схему, составленную согласно изложенным соображениям.
3. Таблица определений. Единица времени: 1 мин.




6. Выходные данные


7. Обсуждение. Логика моделирования. В модели предполагается, что показание времени, равное единице, соответствует 8 ч утра первого дня моделирования. Заметим, что главная машина входит в модель для планового осмотра в момент времени 1, выйдя из блока «GENERATE 1440,,1,,2» (блок 1, рис. 7В.2). Затем каждая следующая главная машина поступает через 24 ч (операнд А блока GENERATE равен 1440, т. е. числу минут в 24 ч).
Первое появление транзакта-хозяина происходит в момент времени, равный 481, через блок «GENERATE 1440,,481„3» (блок 14). Это соответствует окончанию восьмого часа первого дня. После этого другой транзакт-хозяин поступает через 24 ч.
Транзакт, обеспечивающий промежуточную выдачу, впервые появляется во время, равное 6241, выходя из блока «GENERATE 7200,,6241» (блок 25 на рис. 7В.2). Момент времени 6241 соответствует концу восьмого часа пятого дня моделирования. После появления первого транзакта, обеспечивающего промежуточную выдачу, следующий транзакт появляется через каждые пять дней.
Таблица 7В.2. Величины приоритетов, используемые в примере 7В
Сегмент модели | Интерпретация транзактов | Уровень приоритета |
3 | Хозяин | 3 |
1 | Машины, прибывающие на плановый осмотр | 2 |
2 | Полицейские машины, поступающие на внеплановый ремонт | 2 |
4 | Транзакт, наблюдающий за очередью | 1 |
5 | Транзакты, обеспечивающие выдачу на печать | 0 |
Заметим, что для транзакта-наблюдателя в 4-м сегменте модели параметры определены полными словами (см. блок 19 на рис. 7В.2). Если по умолчанию там были бы использованы для параметров полуслова, вполне вероятно, что могла бы возникнуть ошибка переполнения. Дело в том, что процесс моделирования не закончится до времени 35041 (что соответствует 25 дням плюс 8 ч, выраженным в минутах). Это означает, что временные величины, помещаемые в первый параметр транзакта-наблюдателя, могут превысить значение 32767, что является наибольшей величиной, которую можно поместить в полуслово.
Теперь рассмотрим приоритетную схему модели. Различные используемые приоритетные уровни помещены в табл. 7В.2. Чтение таблицы сверху вниз эквивалентно просмотру цепи текущих событий с начала до конца. Если в цепи текущих событий имеется транзакт-хозяин, то он стоит в начале цепи; за ним следуют транзакты планового осмотра (при их наличии) и транзакты внепланового ремонта (если таковые имеются). Эти транзакты с приоритетом, равным 2, будут в общем случае перемешаны в смысле их расположения в цепи по отношению друг к другу. Наконец, идет наблюдатель за числом транзактов в очереди (который всегда находится в цепи текущих событий) и транзакт, обеспечивающий промежуточную выдачу (который появляется в цепи только в конце каждого пятого дня).
Хозяин имеет высший приоритет, потому что ему всегда должно удаваться закончить рабочий день путем захвата смотровой ямы. Что касается транзактов, связанных с текущим осмотром и внеплановым ремонтом, то при рассмотрении их приоритета требуется: 1) чтобы он был ниже приоритета хозяина и 2) чтобы он был выше, чем приоритет транзактов промежуточной выдачи. Это последнее условие гарантирует, что все движение машин в модели перед каждой промежуточной выдачей будет полностью учтено.
На транзакты внепланового ремонта существует дополнительное ограничение. Их приоритет должен быть выше, чем приоритет наблюдателя за длиной очереди. Такой порядок гарантирует, что длина очереди перед тем, как производится наблюдение, полностью учтена. Это объясняет, почему приоритет наблюдателя за очередью меньше 2. Следующее соображение относительно наблюдателя заключается в том, что он должен стоять впереди транзакта, обеспечивающего промежуточную выдачу, с тем, чтобы результат последнего наблюдения перед выдачей был включен в таблицу. Тем самым последовательно объяснена позиция наблюдателя позади полицейских машин и впереди транзакта-выдачи.
В действительности, как только транзакт-выдача появляется в цепи текущих событий, наблюдатель уже находится там (поскольку он всегда там). Это означает, что наблюдатель мог бы иметь такой же приоритет, как и транзакт-выдача, и их относительное расположение было бы всегда таким, какое требуется. Такое различие приоритетов в модели было сделано специально для того, чтобы подчеркнуть необходимое относительное расположение этих транзактов.
Как показано выше, транзакт, обеспечивающий выдачу, имеет самый низкий приоритет для того, чтобы гарантировать, что выдача не произойдет до тех пор, пока состояние системы в данный момент модельного времени не будет полностью учтено.
Распечатка программы. (Общее время работы процессора при моделировании на ЭВМ IВМ 360/67 составило 3,6 с.) На рис. 7В. З, а, б показаны цепи текущих и будущих событий в конце пятого дня моделирования. Транзакт 12 в цепи текущих событий является машиной планового осмотра, ждущей возможности занять прибор BAY в блоке SEIZE с номером 3. (Для него следующим блоком является блок 3. На рис. 7В.2 указано, что этим блоком является блок SEIZE в 1-м сегменте модели.) Заметим, что транзакт 12 заблокирован однозначно (в его столбце индикатора просмотра помещена единица). Транзакт 4 в цепи текущих событий — это транзакт-наблюдатель, который заблокирован блоком TEST, работающим в режиме отказа в 4-м сегменте модели (блок 22, рис. 7В.2). Место, где помещается его индикатор просмотра, пусто, это означает, что данное блокирующее условие неоднозначно.
Транзакты 2, 8, 11 и 3 в цепи будущих событий должны появиться в модели из блоков GENERATE с номерами соответственно 1, 14, 7 и 25. Это можно определить из информации относительно номеров их следующих блоков. Транзакт 9 в цепи будущих событий — это хозяин, который является текущим пользователем устройства BAY. Его следующим блоком для входа является блок 17. Блок 17 — это блок RETURN, при входе в который хозяин делает прибор BAY доступным для следующего рабочего дня.
Цепь прерывания в конце пятого модельного дня показана на рис. 7В. З, в. В этой цепи находятся два транзакта. Заметим, что наименования столбцов в цепи прерывания идентичны наименованиям столбцов в цепях текущих и будущих событий.
Транзакт 10 в цепи прерывания — это транзакт, которому не разрешен захват прибора потому, что его следующим блоком вхождения является блок RELEASE в 1-м сегменте модели. Другой транзакт в цепи прерывания, транзакт 6, является пользователем, которому разрешен захват, но который сам захвачен. Он может быть захватчиком потому, что его следующим блоком вхождения является блок 11, т. е. блок RETURN во 2-м сегменте модели.
Позиции в цепи прерывания под столбцом BLOCK пусты. (Вспомним, что столбец BLOCK указывает, в каком блоке находится транзакт в настоящий момент.) Когда транзакт находится в пассивном состоянии в цепи прерывания, его нет ни в одном блоке, это и объясняет наличие пустых мест в столбце BLOCK. Находясь в цепи прерывания, транзакт, таким образом, не вносит вклада ни в один счетчик текущего содержимого.
В столбце BDT (время ухода из блока) цепи прерывания на рис. 7В. З, в для транзактов 6 и 10 стоят соответственно величины 52 и 81. Для каждого транзакта в цепи прерывания величину BDT следует понимать как оставшееся время пребывания на приборе, с которого его сняли. Таким образом, пользователю, которому разрешен захват, осталось 52 единицы времени до окончания обслуживания на приборе. Аналогично, пользователю, которому не разрешен захват, осталась 81 единица времени до окончания обслуживания на приборе.
Цепь прерывания не содержит информации, которая прямо указывала бы, с какого прибора снят транзакт, находящийся в цепи. В нашем примере, конечно, имеется только один прибор, так что вопрос «с какого прибора» здесь не представляет интереса. В общем случае, на вопрос «с какого прибора» разработчик может ответить, используя помещенную в цепь прерывания информацию о следующем блоке вхождения вместе с программой модели.
По случайному совпадению порядок транзактов в распечатке цепи прерывания на рис. 7В. З, в совпадает с внутренним порядком цепи. А именно, и в распечатке, и внутри цепи транзакт 6 находится в начале цепи прерывания, а транзакт 10 — в конце. Однако, вообще говоря, порядок транзактов в распечатке цепи прерывания не будет совпадать с внутренним порядком в цепи. Это обясняется тем, что распечатка цепи прерывания всегда располагает информацию по возрастанию номеров транзактов. Вероятность того, что этот порядок совпадает с порядком внутренней организации цепи, весьма мала.
В распечатке цепи меткой СI обозначен четвертый справа столбец. (СI означает «индикатор цепи»). Пробел или 1 в столбце СI соответственно означают, что транзакт находится либо в цепи пользователя, либо в цепи прерывания. Значения 2 или 4 соответственно означают нахождение транзакта в цепи либо текущих, либо будущих событий. За исключением цепей пользователя, можно проверить эти утверждения по рис. 7В. З, а—в.
Величины СI важны только для внутренних цепей. Пользователь не может обращаться к ним непосредственно. Наличие величин СI, по сути дела, излишне, так как различные цепи и так имеют свои названия.
Два самых правых столбца в распечатке цепи обозначены РС (число захватов) и РF (флаг захвата). РС является счетчиком числа различных приборов, с которых в данный момент снят соответствующий транзакт. На рис. 7В. З, в в столбце РС стоят единицы, а на рис. 7В. З, а и б для цепей текущих и будущих событий в столбце РС стоят пробелы (что означает нуль).
Единица в колонке РF означает, что соответствующий транзакт подлежит захвату. Если флаг захвата транзакта находится в положении “включен” ( т. е. имеет величину 1), готовящийся захват произойдет в ближайший момент времени, когда транзакт войдет в блок ADVANCE с ненулевым временем задержки (см. также параграф 7.14). Если транзакт во время захвата уже находится в блоке ADVANCE (подразумевается, что он помещен в цепь будущих событий), то концепция «неизбежного» захвата не применяется; в этом случае транзакт немедленно выводится из цепи будущих событий, и его дальнейшая судьба зависит от пользователя.
На рис. 7В. З, г выведена статистика для прибора BAY в конце пятого дня моделирования. Заметим, что в распечатке статистики в столбцах «SEIZEING TRANS. NO» (ЗАНИМАЕТ ТРАНЗ. №) и «РRЕЕМРТING ТRANS. NO» (ЗАХВАТЫВАЕТ ТРАНЗ. №) стоят соответственно величины 9 и 10. Это совпадает с информацией о транзактах, приводимой в распечатках цепи прерывания и цепи будущих событий. Цепь прерывания показывает, что транзакт 10 является замещенным пользователем без права захвата прибора, как отмечалось выше; цепь будущих событий указывает на то, что транзакт 5 является в настоящий момент пользователем прибора на основании захвата. (Напомним, что в информации о цепях «следующий блок вхождения» NBA следует понимать как номер блока для того, чтобы определить, разрешен соответствующему транзакту захват прибора или нет.)
На рис. 7В. З, д и е показана статистика очереди и таблица в конце 25-го моделируемого дня. Статистика очереди показывает, что среднее время ожидания обслуживания для полицейской машины, требующей внепланового ремонта, составляет 595 временных единиц, или около 10 ч. Рассмотрение статистики очереди также показывает, что в среднем 0,221 полицейских машин ожидают обслуживания, и одновременно самое большее четыре машины находятся в ожидании. За время, равное 25 дням, на внеплановый ремонт поступило 13 полицейских машин.
В таблице LENTH на рис. 7В. З, е приведена более подробная информация об ожидающих обслуживания полицейских машинах, чем в статистике очереди. Средневзвешенное значение в таблице составляет 0,221. Эту величину следует понимать как среднее число ждущих в очереди полицейских машин, что совпадает с соответствующей величиной в статистике очереди. Табличная информация указывает также, что 83% времени не было полицейских машин, ожидающих внепланового ремонта, 12% времени в ожидании находилась одна машина, 4% — две машины и только 0,52% и 0,05% времени одновременно в ожидании были соответственно три и четыре машины.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 |


