Text
                    GPSS (General Purpose Simulating System —
общецелевая система моделирования) является
языком моделирования, используемым для
построения дискретных моделей и проведения
моделирования на ЭВМ. Цель книги — помочь
читателю в овладении процессом
моделирования на GPSS. Для достижения этой цели в книге
описаны основные концепции моделирования
процессов с дискретными событиями, приведены
методы их реализации на GPSS. Создание
моделей проиллюстрировано на 27 примерах,
предложено более 300 задач для того, чтобы
читатель мог проверить уровень своего
понимания материала
Поскольку GPSS является языком
моделирования, в него входят специальные средства
для описания динамического поведения систем,
меняющихся во времени, причем изменение
состояний происходит в дискретные моменты
времени. При моделировании таких систем
применение GPSS не только гарантирует
предоставление необходимых для этого программных
средств, но и позволяет сделать модели ясными
и лаконичными. Это последнее замечание
делает GPSS более пригодным для
моделирования, чем любой другой процедурный язык
программирования.
Моделирование дискретных процессов
опирается на фундаментальные знания в области
теории вероятностей и математической
статистики. Предполагается, что читатель имеет
некоторое представление о вероятностных
процессах, включая некоторые элементы
статистики. Никаких других ограничений для
изучения GPSS и тех средств моделирования,
которые предоставляет язык, не существует.
Некоторый опыт программирования хотя н
желателен, но не обязателен. Тот, кто знаком
с процедурными языками (с такими, например,
как Fortran, Basic, PL/1) обнаружит, что
некоторые ключевые понятия процедурных
языков при изучении GPSS ие используются. Tdt,
кто изучает эту книгу, обнаружит, как быстро
и' легко можно создавать модели на GPSS.
Начав с элементарного изучения, он вскоре
овладеет всеми средствами GPSS,
Предисловие
GPSS очень удобен при программировании,
поскольку интерпретатор * GPSS многие
функции выполняет автоматически. Например,
GPSS без специального на то указания
пользователя собирает статистические данные,
описывающие поведение модели, автоматически
печатает итоговую статистику по завершении
моделирования. Пользователю нет
необходимости включать в модель вычислительные
операторы для сбора и накопления этих данных
или задавать формат, указывающий, в каком
виде должны быть распечатаны итоговые
данные. В язык в неявном виде включены и многие
другие полезные элементы. Например, GPSS
обслуживает таймер модельного времени,
планирует события, которые должны произойти
позднее в течение времени моделирования,
вызывает их своевременное появление и
управляет очередностью поступления, предоставляет
средства описания относительных приоритетов
для использования их при одновременном
возникновении событий.
Теперь читателю, по-видимому, стало ясно,
что логика моделирования дискретных
процессов в основном встроена в интерпретатор GPSS.
К сожалению, это преимущество языка
становится его недостатком для тех пользователей,
которые не понимают внутренней логики
интерпретатора, а это приводит к тому, что GPSS
используют вслепую. Бездумное
использование этого языка высокого уровня может дать
только малозначащие результаты на
неадекватной модели. Неадекватность может быть
связана с неумением описать тонкости
функционирования объекта и, следовательно, остаться
необнаруженной. Все эти обстоятельства
учтены в книге, и автор следует такому подходу,
при котором пользователь должен тщательно
разобраться в создаваемой им модели.
Построение изложения материала довольно
просто. В гл. 1 даны основные понятия о
методах моделирования иа уровне процедур, без
использования системы GPSS. В частности,
1 Моделирующую часть системы GPSS здесь и в
дальнейшем будем называть интерпретатором. — Прим. пер.


здесь читатель знакомится с моделированием систем, в которых события происходят в случайные моменты времени. Функционирование модели показано на примере системы массового обслуживания с очередью и одним обслуживающим прибором. Здесь на основе разработанных и представленных стандартных блок-схем рассмотрены такие элементы модели, как генератор случайных чисел, описаны концепции планирования событий, логика очередности появления событий, решаются задачи синхронизации. Все это дано как подготовка к гл. 2, которая вводит читателя в язык GPSS; в ней описано основное подмножество блоков, используемых при построении моделей на GPSS. Первым примером построения модели иа GPSS является та же модель системы массового обслуживания с очередью и одним прибором. Это дает возможность читателю шаг за шагом сравнить процедурный метод, описанный в гл. 1, с использованием макрокоманд высокого уровня, применяемых при моделировании тех же систем на GPSS. Сразу же за разбором первого примера в гл. 2 введены понятия цепей текущих и будущих событий GPSS, изложены принципы построения интерпретатора и его внутренней логической схемы. Далее логика интерпретации проиллюстрирована на числовом примере, шаг за шагом демонстрирующим способ выполнения интерпретатором своей работы. Логика интерпретации дополнительно показана на числовых примерах, следующих за вторым и третьим примерами моделирования в гл. 2. Опыт преподавания языка показал, что рассмотрение внутренней логической схемы интерпретатора может быть с большим успехом осуществлено на этой ранней стадии изучения. Хотя числовые примеры очень тщательно проработаны, все же у читателя остается впечатление о GPSS как о чем-то «мистическом». Поэтому всюду, где вводят новые концепции GPSS, их интерпретируют, если это возможно, в терминах цепей текущих и будущих событий GPSS и внутренней логической схемы работы интерпретатора. Это позволяет быстро свыкнуться с основными понятиями GPSS и дает пользователю возможность употреблять такие понятия самостоятельно. В гл. 2 всюду, где требуется использование операндов различных блоков GPSS, их вводят непосредственно как константы. Более того, всюду в главе использовано равномерное распределение, причем распределение задается в неявном виде самим интерпретатором. Это позволяет уменьшить степень детализации и помогает ему сосредоточить свое внимание на основах создания моделей с помощью GPSS и на внутренней логической схеме работы интерпретатора. Гл. 3 содержит описание генераторов случайных чисел GPSS, способ записи и использования функций для реализации равномерного и неравномерного распределений на языке. Особое внимание уделено реализации повторения модифицированной последовательности событий так, чтобы можно было изучить систему с другой конфигурацией при другом множестве условий эксперимента. В гл. 4 описана большая часть так называемых стандартных числовых атрибутов GPSS и показано их применение. В гл. 3 и 4 приведены методы определения операнда в неявном виде, т. е. с помощью функций, задаваемых пользователем; стандартных числовых атрибутов, определяемых в интерпретаторе, и методы моделирования при наличии неравномерных распределений. В гл. 4 также дано представление о таблицах, которые необходимы для определения вида распределения случайных переменных. Элементы языка, введенные в гл. 2—4, в целом позволяют использовать GPSS для построения моделей, проведения тестовых расчетов и автоматической выдачи собранных результатов. Гл. 5 посвящена описанию и иллюстрации таких средств языка, которые позволяют провести моделирование со сбором интересующих пользователя параметров и выдачей результатов, собранных самим пользователем. Эти средства значительно расширяют возможности языка моделирования. Таким образом, в гл. 1—5 описаны почти все основные возможности GPSS. Гл. 6 и 7 охватывают большую часть оставшихся основных средств языка, включая определение и использование булевских переменных, использование в GPSS косвенной адресации, возможность параллельного моделирования систем с альтернативными конфигурациями, оставшиеся три типа цепей GPSS, которые можно использовать прямым или косвенным образом для построения более сложных моделей. В гл. 8 изложены некоторые свойства языка, которые в явном виде при изучении блоков не были рассмотрены. Язык GPSS существует в нескольких диалектах. Наиболее широко используемым и доступным диалектом является GPSS/360, который описан в данной книге; GPSS V, являющийся расширением GPSS/360, описан в приложении А, дополнительное описание находится в приложении В. Тот, кто изучает GPSS/360, знакомится с большим подмножеством GPSS V. Для тех, кто планирует использовать для моделирования GPSS V, в этой книге дан весь необходимый материал. Остается потратить лишь немного времени на изучение инструкции пользователя по GPSS V, для того чтобы глубоко осознать свойства GPSS V, не включенные в GPSS/360.
Диалекты GPSS/360 и GPSS V являются версиями языка GPSS, разработанного фирмой IBM (International Business Machines). Эти версии, в свою очередь, являются прямыми потомками, нескольких более ранних версий GPSS, также разработанных фирмой IBM. Первую разработанную IBM версию GPSS можно рассматривать как язык-предок. Вместе со своими прямыми потомками ряд близких языков- предков был применен конкретными исследовательскими группами и разработчиками ЭВМ вне фирмы IBM. Важнейшими из них являются NGPSS/6000 (GPSS, разработанная для группы развития военно-воздушных сил США Северным отделением фирмы Unaited Aircraft Corporation и использованная на ЭВМ Control Data Corporation's серии 6000, CDC-6000); GPSS/NORDEN (версия системы GPSS с разделением времени, разработанная там же), GPSS/UCC (версия GPSS, разработанная фирмой University Computing и используемая в режиме удаленной пакетной обработки); GPSSTS (версия языка с разделением времени, разработанная отделением информационных сетей фирмы Computer Sciences Corporation), GPSS V/6000 (разработка GPSS V, сделанная в Северо-западном университете для ЭВМ серии CDC-6000 и переданная фирмой Control Data для использования в системе CYBERNET и для продажи пользователям фирмы Control Data); GPSS-10 (версия GPSS, разработанная недавно в университете Западного Онтарио для ЭВМ PDP-Ю). Диалекты различных реализаций н версии GPSS в этой книге не рассмотрены. В большинстве случаев, однако, непосредственное изучение GPSS/360 эквивалентно непосредственному изучению большого подмножества всех этих версий. Тот, кто овладел основными сведениями, изложенными в этой книге, будет в состоянии легко применить свои знания GPSS/360 к нужной версии. Примеры, приведенные в книге, и сопровождающий их материал были разработаны для преподавания в Мичиганском университете, для заочного обучения по этой программе сотрудников фирмы Ford Motor Company и в Стан- фордском исследовательском институте, а также для обучения на одно- и двухнедельных курсах, проводимых регулярно на летних инженерных конференциях в Мичиганском университете и продолженных в Калифорнийском университете в Санта-Крусе (штат Калифорния). Большая часть книги была проверена на аудиторных занятиях. Книга содержит двенадцать приложений, разработанных специально как краткие справочные пособия по языку для пользователей, активно работающих с GPSS. При написании книги всегда возникает вопрос, какой уровень детализации необходимо обеспечить, на каком уровне следует закрепить знания после повторений? Автор может не. достичь своей цели, если будет чересчур или недостаточно лаконичен. Я поставил своей задачей дать в книге полное изложение, поэтому, возможно, я не так краток, как любят некоторые. Некоторым читателям может показаться, что проработка идей здесь более детальна, чем это необходимо лично для них, но после прочтения книги большинство читателей будет овладевать GPSS более эффективно, чем это могло бы быть в ином случае. Эта книга написана для тех, кому необходимо изучить если и не весь язык, то большую его часть, причем изучить самостоятельно. Она окажется полезной для тех, кто не имеет возможности, или у кого они ограничены, прослушать курс лекций по GPSS. Использование большого количества деталей позволит тем, кто учится по книге, сэкономить лекционное время, посвященное описанию языка. Аудиторное же время имеет смысл использовать для обсуждения решений выбранных задач, для разработки концепций, логики и тонкостей моделирования, а также для просмотра результатов моделирования, обсуждения развития модели и использования результатов [моделирования. Мне приятно выразить благодарность Мэри Джэйи Сортет из фирмы IBM за ее вклад в работу по сравнению GPSS/360 и GPSS V (см. приложение А) и предоставление литературы по GPSS фирмы IBM (см. приложение В); Джулиан Рейтман из Северного отделения фирмы Юнайтэд Эйркрафт Корпорэйшн за предоставление информации о системах NGPSS/6000 и GPSS/NORDEN; Кеннету Д. Вейверу из фирмы University Computing Corporation за предоставление литературы по GPSS/UCC; Стэфану Дж. Фирбергу и Джеймсу К. Ло из отделения информационных сетей фирмы Computer Sciences Corporation за предоставление информации о GPSSTS; Чарльзу Б. Крабеку нз фирмы Control Data Corporation за замечания по поводу GPSS-V/6000 и М. Дэвиду Мартину из университета Западного Онтарио за описание системы GPSS-10. Особую благодарность хотелось бы выразить Джеймсу О. Хенриксону, эксперту по математическому обеспечению вычислительного центра Мичиганского университета за бесчисленные обсуждения работы интерпретатора GPSS. Эти обсуждения значительно обогатили мои знания no GPSS и в том или ином виде отражены в книге. Наконец, приношу благодарность своим студентам из Мичиганского и других университетов, которые заставили меня попытаться выразить концепции GPSS ясно и дали много полезных советов, улучшивших книгу. Все оставшиеся недосмотры и ошибки целиком лежат на моей ответственности. Эн Арбор, Мичиган Томас Дж. Шрайбер 10
1.1. Введение Цель книги — научить читателя создавать имитационные модели систем массового обслуживания на ЭВМ с помощью специального языка моделирования GPSS (General Purpose Simulation System); Свойства языка GPSS изложены в гл. 2. В гл. 1 рассмотрены возможности использования процедурных языков (таких, как FortTan, Basic или PL/1) для создания ив ЭВМ моделей систем массового обслуживания. Возникает вопрос: почему все-таки не начать сразу с GPSS? На это есть две важные причины. Первая из них заключается в том, что большинство из тех, кто взял эту книгу для изучения GPSS, знаком по крайней мере с одним из процедурных языков. Одним из вопросов, который возникнет у такого читателя, будет, не проще ли писать модели обслуживания на одном из таких языков? Ответ на этот вопрос дан при рассмотрении логических средств, требуемых для создания на ЭВМ модели простой системы обслуживания на процедурном уровне. При всестороннем изучении этой модели видны преимущества использования специализированного языка GPSS. Модели на GPSS компактны, часто состоят из меньшего числа операторов, чем такие же модели, написанные на процедурных языках. Компактность является одним из основных преимуществ языка GPSS. Она является следствием того, что в GPSS встроено максимально возможное число логических программ, необходимых для моделирующих систем. В то же время компактность может оказаться и недостатком для тех, кто не понимает логики интерпретации модели. Без понимания этой логики человек склонен рассматривать GPSS как некий «черный ящик», он будет считать, что модель, созданная на GPSS, плоха, если получатся неудовлетворительные результаты моделирования. Поэтому одна из задач этой главы — познакомить читателя с основными элементами Вопросы моделирования систем массового обслуживания логики создания моделей систем массового обслуживания. Это облегчит дальнейшее изучение внутренней логики GPSS, которая подробно рассмотрена в данной книге. Ввиду всех перечисленных причин, в этой главе представлена на процедурном уровне модель системы обслуживания с одним прибором и очередью. Сначала описан способ функционирования системы с одним прибором и очередью и поставлена цель разработать модель на ЭВМ, которая промоделировала выданную систему. Далее рассмотрены основные вопросы, связанные с созданием такой модели. Там, где это возможно, рассмотрение уточняется с помощью блок-схем или их фрагментов. В заключение приведена детальная блок-схема алгоритма работы нашей модели. При моделировании системы с одним обслуживающим прибором и очередью предполагается, что существует какой-то генератор случайных чисел. Считают, что обращение к генератору происходит как к функции, которая при ее вызове выдает значения, которые можно считать случайными числами, равномерно распределенными в интервале от 0,000000 до 0,999999 включительно. Практически во всех без исключения библиотеках функций, имеющихся в любой вычислительной 11
системе, есть один или несколько генераторов случайных чисел. Одна из возможных схем, используемых для построения такого генератора, кратко описана в гл. 1. Это дает возможность подробно рассмотреть вопрос генерации последовательности случайных чисел. Кроме того, приведенная схема весьма близка к той, которая использована для генерации случайных чисел в GPSS. Таким образом, это оказывается для читателя полезным, поскольку он знакомится с внутренней логикой функционирования генератора случайных чисел. Фактическая интерпретация машинной модели системы с одним прибором и очередью здесь отсутствует. Вместо этого читателю предложено несколько упражнений по реализации алгоритма на любом выбранном им процедурном языке. Очень важно, чтобы такая реализация была выполнена. Это заострит внимание читателя на деталях алгоритма и может стать его первым опытом моделирования систем массового обслуживания на ЭВМ. Такая реализация тем более может понадобиться, если простую модель с одним прибором и очередью модифицировать для сбора дополнительной статистики или для увеличения сложности обслуживания, а может быть для того и другого одновременно. Именно задачи такого рода включены в упражнения. Как уже было сказано ранее, основная цель алгоритма обслуживания системы с одним прибором и очередью и основанных на ием упражнений заключается в том, чтобы показать преимущества использования GPSS. Глава заканчивается перечнелг основных средств GPSS, необходимость которых выявлена при моделировании системы обслуживания с одним прибором и очередью. Это создает предпосылку для перехода во второй главе собственно к GPSS. ч1.2. Система обслуживания с одним прибором и очередью Рассмотрим систему, состоящую из одного человека, выполняющего обслуживание определенного вида. Этот человек может быть кассиром, продающим билеты на станции, контролером в универсальном магазине, билетером в театральной кассе, парикмахером в парикмахерской с единственным креслом или же кладовщиком. «Клиенты» приходят к такому «обслуживающему прибору» в случайные моменты времени, ждут своей очереди на обслуживание (если в этом возникает необходимость), и-х обслуживают по принципу «первый пришел — первым обслужен». После этого они уходят. Схематично эта ситуация показана на рис. 1.1, где цепочка кружков изображает При л од ЛЛЛЛ ГХ7 Уход — »► ОООО —»■ (О] *■ Очереди Прибор Рис. 1.1. Иллюстрация системы обслуживания одним прибором и очередью заявки, ожидающие обслуживания, квадрат — обслуживающий прибор, а кружок внутри квадрата — заявку, находящуюся на обслуживании. Группа, образуемая из заявок, ожидающих обслуживания, называется очередью. Система, состоящая из обслуживающего прибора, заявки, находящейся на обслуживании, и ожидающих обслуживания заявок, называется системой массового обслуживания. Простая система массового обслуживания, изображенная на рис. 1.1, характеризуется двумя независимыми случайными переменными. Интервал времени между последовательными моментами прибытия заявок в систему, который часто называют интервалом прибытия, является случайной переменной. Время, требуемое прибору для выполнения обслуживания, также является случайной переменной. Распределения системных величии, зависящих от значений этих двух независимых случайных переменных, являются предметом исследования. Ниже перечислены некоторые из этих величин, являющихся случайными переменными. 1. Число заявок, прибывших на обслуживание за заданный промежуток времени. 2. Число заявок, которые попали на обслуживание сразу же по прибытии. (3",Среднее время пребывания заявок в очереди. >£,.Средняя длина очереди. 5. Максимальная длина очереди. 6. Нагрузка прибора, являющаяся функцией 1 времени, которое потрачено прибором на обслуживание в течение заданного промежутка времени. Особый интерес системные величины подобного рода представляют при изучении систем в условиях присутствия некоторой стоимостной функции. Если, например, обслуживающим прибором является парикмахер и при появлении потенциального клиента оказывается слишком много ожидающих стрижки, клиент может уйти стричься в другую парикмахерскую. В этом случае парикмахер терпит убыток. Или, если заявками являются рабочие, ожидающие выдачи инструмента в кладовой, то необходимо сопоставить стоимость ожидания со стоимостью обслуживания в кладовой. С одной стороны, из-за ожидания рабочий проста- лг-ет, хотя он получает зарплату, с другой — снижение времени ожидания рабочего путем 2
увеличения числа кладовщиков приведет к снижению нагрузки кладовщика. При таких обстоятельствах, очевидно, существует необходимость оптимального решения вопроса. Даже такая простая модель, как модель системы массового обслуживания (рнс. 1.1), представляет определенный интерес. Теперь мы, используя процедурный подход, разработаем логическую схему модели на ЭВМ, которая будет имитировать систему обслуживания с одним прибором и очередью. Разработку будем вести при следующих условиях. / 1. Случайная переменная, представляющая собой интервал прибытия, является равномерно распределенной и принимает только иелые значения. Это, например, означает, что если интервал прибытия равномерно распределен между значениями 12 и 24 мин включительно, то он может принимать только 13 значений, а именно, 12, 13 , 23 и 24 с одинаковой вероятностью. л 2. Подобно интервалу прибытия время обслуживания также предполагают равномерно распределенной случайной величиной, представленной целыми значениями. Например, если время обслуживания распределено равномерно от 12 до 20 мин включительно, то оно может принимать только девять значений: 12, 13, ..., 19 и 20 с одинаковой вероятностью. 3. Есть возможность обращения к генератору равномерно распределенных случайных чисел. Считается, что генератор записан в виде функции и что при обращении он выдает шестизначное число, являющееся случайным из выборки равномерно распределенных чисел в интервале от 0,000000 до 0,999999 включительно. \> 4. Все прибывающие заявки должны быть обслужены независимо от того, какова длина очереди. - б. Вначале моделирования система «пуста» или «свободна». Иначе говоря, в начальном состоянии нет очереди и обслуживающий прибор свободен. J6. Моделирование продолжается до тех пор, дока не будет достигнуто значение модельного времени, заданное для этой модели в качестве одного из входных данных. Как только этот заданный интервал времени истечет, моделирование будет завершено. В общем случае, когда моделирование завершается, обслуживающий лрибор может быть в состоянии обслуживания заявки и в очереди может находиться одна или более заявок. 7. В процессе моделирования такая информация, как максимальная длина очереди, должна быть зафиксирована. Затем, когда моделирование завершается, это максимальное значение длины очереди должно быть распечатано вместе со значениями распределения времени обслуживания и времени прибытия заявок. Должно быть также распечатано значение интервала модельного времени, прошедшего от начала моделирования. 1.3. Элементы процедуры решения Задача состоит в создании машинной модели на ЭВМ, которая позволит изучить поведение системы в течение времени моделирования. Необходимо научиться создавать модели не только таких простых систем, как система с одним прибором и очередью, ио и значительно более сложных систем массового обслуживания. Нашей целью является разработка общего подхода к созданию моделей систем массового обслуживания на основе использования процедурных языков программирования. 1.3.1. Основные и вспомогательные события При моделировании систем массового обслуживания совершаются некоторые события. В системе с одним обслуживающим прибором и очередью такие изменения в системе, как прибытие заявки, начало обслуживания и завершение обслуживания являются событиями. Все события в системе должны быть каким-либо образом зафиксированы и должно быть учтено их воздействие на текущее состояние системы. Кроме того, необходимо определить, каким образом можно реализовать возникновение событий и как корректировать состояние системы в связи с воздействием на нее этих событий. Более того, при возникновении событий в процессе моделирования необходимо учитывать два обстоятельства: 1) момент времени, в который событие возникает, должен учитываться в модели с помощью независимой случайной переменной, определяющей поведение системы; 2) события должны возникать в системе в некоторой хронологической последовательности. Хотя все сказанное выше почти очевидно, существуют дополнительные требующие пояснения обстоятельства. Работа модели связана с последовательным возникновением событий. Таким образом, вполне естественно использовать понятие «таймер модельного времени» в качестве одного из элементов модели системы. Для 1 этого вводят специальную переменную. Ее используют для фиксации текущего времени работы модели. Представим теперь, что мы приступили к моделированию, и будем рассматривать такие события, которые еще не возникли, но должны возникнуть. Эти события могут возникнуть либо «тотчас же» (в течение текущего значения модельного времени), либо «позже» (т. е. при таком значении модельного времени, которое еще не достигнуто). Возможность продвижения во времени назад, хотя бы ненадолго, 13
Модельное бремя 21 t Разыгранное значение интервала времени (18 единиц) Текущее значение таймера модельноге времени (момент времени, когда преизошло прибытие заявки) 39 t Момент времени, когда придет следующая заявка Рис. 1.2. Временная диаграмма, иллюстрирующая планирование прихода очередной заявки исключается. Говоря проще, события могут возникать только в некоторой хронологической последовательности. Если система сложна, то реализация возникновения событий может оказаться трудной задачей. По этой причине используют специальный подход к процессу интерпретации моделей. Для начала все события, возникающие в системе, можно разделить на две кетегории, называемые основными и вспомогательными событиями. Основным является такое событие, время возникновения которого можно запланировать заранее, т. е. рассчитать его до фактического возникновения. Любое событие, не являющееся основным, называют вспомогательным. Таким образом, вспомогательными событиями являются такие, время возникновения которых невозможно запланировать заранее. Они возникают тогда же, когда и основные события, но являются зависимыми, возникающими как следствие основных. Нетрудно перечислить различного рода основные события, возникающие в заданной системе обслуживания. Среди данных, необходимых для описания системы, необходимо, во-первых, выделить значения времени. Каждое множество независимых значений времени представляет собой один тип связанного с ним события. Например, в системе с одним прибором и очередью для описания системы существует два множества значений времени. Первое из них необходимо для задания распределения интервалов времени между моментами поступления заявок. «Поступления заявок» суть события) основного типа, они соответствуют первому! множеству. Второе нз двух множеств задает распределение временя обслуживания. «Завершения обслуживании» также относятся к событиям основного типа и соответствуют второму множеству. Посмотрим теперь, что должно обозначать утверждение о том, что основные события .можно планировать заранее. Представим себе, что мы моделируем систему с одним прибором и очередью и что только что пришла заявка на обслуживание (в текущий момент модель- ■\ ного времени). Тогда, коль скоро эта заявка J прибыла, необходимо запланировать время приятия, следующей заявки. Это делают в два этапа. 1. Разыгрывают случайное число в соответствии с распределением интервалов времени прибытия. Полученное значение можно интерпретировать как величину интервала модельного времени, которое должно пройти прежде, чем появится следующая заявка. 2. Это значение временного интервала прибавляют к текущему значению таймера модельного времени. Сумма этих значений указывает на момент времени в будущем, когда фактически придет следующая заявка. Время прибытия следующей заявки, таким образом, как бы предсказано, ио предсказание выполнено точно. Следует отметить, что в машинную модель вносится некоторое допущение. В процессе моделирования нашей системы модель как бы знает (в соответствии с концепцией о планировании времени), когда появится следующая заявка. В реальной системе момент появления следующей заявки неизвестен. Тем не менее можно считать, что при длительном моделировании модель становится адекватной реальной системе в статистическом смысле. Для иллюстрации планирования возникновения событий представим себе, что в модели заявка прибывает в момент модельного времени, равный 21. Факт прибытия указывает иа необходимость запланировать следующее прибытие. Разыграем, во-первых, случайное число в соответствии с распределением интервалов времени прибытия. Предположим, что выпало число 18. Прибавляя 18 к 21, мы тем самым предсказываем, что следующая заявка прибудет в момент времени, равный 39. (Очевидно, что в модели необходимо предусмотреть соответствующие действия, необходимые для того, чтобы в момент модельного времени 39 следующая заявка действительно прибыла. Как это делается, станет ясно позднее). Временная диаграмма, составленная для приведенного примера (рис. 1.2), показывает взаимосвязь текущего времени, разыгранного значения интервала времени и момента времени, в который произойдет следующее прибытие заявки. При достижении времени, равного 39, т. е. в момент прибытия следующей заявки, 14
Модельное Эрснч 1= Р/иыгранное значение интервала времени (18единиц) 1в Начальное значение таймер/с модельного времени Момент времени, когда придет первая за я в на Рис 1.3. Временная диаграмма, иллюстрирующая планирование прихода первой заявки необходимо запланировать прибытие еще одной заявки. Совершенно ясно, что ни в какой момент времени не возникает необходимости в планировании более чем одного прибытия. Если говорить кратко, то именно такую технику «привязки» используют, для установки моментов поступления заявок. Поступление заявки вызывает необходимость в обращении к процедуре определения момента времени следующего поступления. Л Теперь возникает вопрос, каком, образом Остановить момент поступления_первой заявки и привести в действие процесс привязки? Время поступления первой заявки должно быть запланировано как один из этапов выполнения моделирования. Предположим, что _в__самом начале моделирования таймер модельного времени установлен в нуль. Тогда, для того чтобы запланировать поступление первой заявки, разыгрывается случайное число в соответствии ' с распределением интервалов поступления при стартовом значении таймера. Разыгранное время совпадает со значением момента времени поступления первой заявки (поскольку значение таймера модельного времени равно нулю, разыгранное значение численно равно моменту поступления первой заявки). Временная диаграмма (рис. 1.3), составленная для данного примера, показывает, как определяется момент времени поступления первой заявки. Предположим, что при планировании начального поступления в соответствии с распределением интервалов поступления выпало число 16. Это означает, что поступление первой заявки состоится при значении модельного времени, равном 16. > Рассмотрим теперь события «завершения обслуживании», относящиеся ко второму типу Чодельное основных событий. Завершение обслуживания планируется в тот момент, когда заявка поступает на обслуживание. Иначе говоря, когда начинается обслуживание,—точно предсказывается момент его завершения. Это делается аналогично процедуре планирования прихода следующей заявки. Прежде всего разыгры-^ вается значение интервала времени в соответ--* ствии с распределением времени обслуживания. За!йм„этот интервал, добавляется- к значению таймера модельного времени. Сумма этих двух значений равна моменту времени, в который прекратится обслуживание обрабатываемой заявки. Д<£- л ' 'л Предположим, например, что в процессе моделирования заявка поступает на обслуживание, когда значение модельного времени равно 56. Возникает необходимость планирования момента окончания обслуживания. Сначала разыгрывается случайное значение интервала времени в соответствии с распределением времени обслуживания. Предположим, что разыгранное значение равно 15. Прибавляя 15 к 56, можно точно предсказать, что момент времени в будущем, когда обслуживание заявки закончится, будет равен 71. (Как и в случае поступления заявки на обслуживание, в модели необходимо предусмотреть специальные средства для обеспечения фактического окончания обслуживания заявки в момент модельного времени, равный 71. Метод достижения этой цели будет рассмотрен ниже.) Временная диаграмма приведенного примера, изображенная на рис. 1.4, показывает взаимосвязь текущего времени, разыгранного времени обслуживания и момента завершения обслуживания. Между рис. 1.4 и 1.2 очевидна прямая аналогия время Разыгранное значение времени обслуживания (15 единиц.) 71 Текущее значение таймера модельного времени (цемент времени,когда началось обслуживание заявки) Момент времени, когда закончится обслуживание заявки. Рис. 1.4. Временная диаграмма, иллюстрирующая планирование завершения обслуживания заявки 15
В момент поступления очередной заявки возникает необходимость планирования прихода следующей заявки. Но это вовсе не означает, что в момент окончания обслуживания необходимо планировать окончание следующего обслуживания. Необходимость планирования завершения обслуживания возникает в случаях, либо если только что завершилось обслуживание и в очереди стоит следующая заявка, либо если поступившая заявка застает прибор свободным и ее обслуживание может начаться немедленно. Заметим, что во втором случае возникновение основного события делает необходимым планирование как прибытия, так и завершения обслуживания. В общем случае при возникновении основного события может возникнуть необходимость планирования одного или нескольких новых основных событий. Необходимость планирования диктуется как фактом возникновения основного события, так и состоянием системы в этот момент времени. Очень мало внимания до сих пор было уделено вспомогательным событиям, кроме упоминания того факта, что они находятся в прямой зависимости от возникновения основных. В системе с одним обслуживающим прибором и очередью поступление заявки на обслуживание является примером вспомогательного события. Такое событие может иметь место, когда ему непосредственно предшествует основное событие. Например, если возникает основное событие «заявка поступила» и прибор свободен, то может возникнуть вспомогательное событие «поступление заявки на обслуживание». Возникновение вспомогательного события вызывает переход обслуживающего прибора из свободного состояния в занятое; планирование события окончания обслуживания. Другой причиной возникновения вспомогательного события «поступление заявки на обслуживание» может быть только основное событие «окончание обслуживания», когда следующая заявка ожидает обслуживания. В этом случае поступление заявки на обслуживание вызывает продвижение заявок в очереди и планирование события окончания обслуживания. Таким образом, предварительное планирование момента поступления на обслуживание отсутствует. В системе с одним обслуживающим прибором и очередью не существует независимой переменной, которая задавала бы распределение во времени моментов поступления заявок на обслуживание. Вот почему «поступление заявки на обслуживание» является не основным, а вспомогательным событием. В табл. 1.1 подведены некоторые итоги изучения системы с одним обслуживающим прибором и очередью с точки зрения реализации основных событий и отработки вызываемых ими 11 Таблица 1.1. Список основных событий и действий, • | которые они вызывают Основное событие Приход заявки Окончание обслуживания Действии, которые оно вызывает (вспомогательные события н планирование) 1. Планирование следующего прихода 2. Проверка состояния обслуживающего прибора. Прибор свободен? НЕТ: поступление заявки в очередь ДА: поступление заявки ив обслуживание; это вызывает: а) переход обслуживающего прибора нз свободного состояния в занятое; б) планирование события окончания обслуживания Проверка состояния очереди. Есть ли в очереди заявка, ожидающая обслуживания? НЕТ: переход обслуживающего прибора из занятого состояния в свободное ДА: поступление заянки на обслужи- ванне; это вызывает: а) продвижение заявки и очереди; б) планирование события окончания обслуживания действий. В первой колонке таблицы указаны два вида основных событий. Вторая колонка описывает вызываемые ими действия, которыми являются как вспомогательные события, так и планирование условий моделирования. Можно считать, что все вызываемые действия, за исключением планирования, являются вспомогательными событиями. Например, кроме события «поступление заявки на обслуживание», такие события как «поступление заявки в очередь» и «продвижение заявки в очереди» также можно считать вспомогательными. Время от времени в этой главе встречаются слова «вызывает некоторое событие». Для того чтобы вызвать событие, необходимо выполнить соответствующие логические операции обработки событий. В этом смысле вторая колонка табл. 1.1 как раз и содержит список логических операций обработки двух видов основных событий рассматриваемой системы с одним обслуживающим прибором и очередью. Среди логических операций, содержащихся в табл. 1.1, нет таких, которые обеспечивали бы сбор статистических данных о поведении системы. На практике соответствующие логиче-* ские операции должны включать средства для накапливания требуемых статистических данных. Например, если нас интересует максимальная длина очереди, то соответственно должна быть расширена логическая схема обработки такого события, как поступление заявки. В частности, после того, как произойдет вспомогательное событие «поступление заявки в очередь», следует проверить, ие является ли новое 16
значение очереди максимальным. Если да, то предыдущее значение максимальной длины очереди должно быть скорректировано. 1.3.2. Новые сведения о таймере модельного времени При обсуждении основных событий мы кратко ознакомились с идеей реализации таймера модельного времени. Теперь опишем некоторые .специфические свойства таймера модельного времени, а также изучим методы изменения значений таймера в течение периода моделирования. Когда начинается моделирование, таймер модельного времени обычно устанавливают на нулевое значение. Разработчик сам решает вопрос о том, какое значение реального времени принять за точку отсчета. Например, началу отсчета может соответствовать 8 ч утра первого моделируемого дня, 1 ч дня или любое другое значение времени. При процедурном подходе разработчик обычно выбирает одно из двух решений: использовать целочисленные значения времени или значения с плавающей точкой. В этой главе для наших нужд будут использованы целочисленные значения времени (GPSS использует только целочисленные'значения времени; таким образом, во всех примерах, используемых в книге, таймер модельного времени будет принимать целочисленные значения). Это касается и нашей задачи обслуживания с одним прибором и очередью, потому что интервалы между временем поступления заявок и временем обслуживания принимают целочисленные значения. Это означает, что события могут происходить только при целочисленных значениях таймера модельного времени. В таком случае иет необходимости давать таймеру какие-либо другие значения, кроме целочисленных. Разработчик также должен решить вопрос 0 выборе величины единицы времени. Единицей времени может быть 1 с, 5 с, 1 мии, 15 мин, 1 ч и любое другое значение. Когда единица времени выбрана, все значения времени, получаемые при моделировании или входящие в модель, должны быть выражены через эту единицу. Например, предположим, что интервалы времени между поступлениями заявок равномерно распределены между значениями времени 12 и 24 мин включительно, и выбранная единица времени для этой модели равна 1 с. В этом случае интервалы поступления будут распределены в соответствии с равномерным законом распределения на интервале между значениями 720 и 1440 временных единиц включительно. На практике значения модельного времени должны быть достаточно малыми по сравнению 2 Т. Дж. Шрайбер с реальными промежутками времени, протекающими в моделируемой системе. При моделировании вычислительной системы значения времени возможно будут не более 1 мкс, а может быть и еще меньше. В интересующей нас системе с одним обслуживающим прибором и очередью обычно выбирают единицу времени, равную 1 мии. Здесь нет необходимости давать меньшее значение единице времени для регистрации данных в модели. Теперь предположим, что моделируется некоторая система и состояние системы изменилось при текущем значении модельного вре- {мени. Следующим логическим шагом является |«увеличение значения таймера». Но на какую '.величину должно быть увеличено значение таймера? Существуют два метода решения этого вопроса. 1. Увеличить значение таймера точно на одну единицу времени. Затем проверить состояния системы и определить те нз запланированных событий, которые должны произойти при новом значении таймера. Если таковые имеются, то необходимо выполнить логические операции, реализующие соответствующие события, снова изменить значение таймера на одну единицу времени и так далее. Если проверка покажет, что для нового значения таймера ие запланировано ни одного события, то просто произойдет продвижение таймера непосредственно к следующему значению. В первом случае используют концепцию фиксированного приращения значений таймера (рис. 1.5). (2) Во втором случае обслуживания таймера используют концепцию переменного приращения значений таймера. При таком подходе условием, вызывающим приращение таймера, является наступление времени «близкого события». Близкое событие — это то событие, воз- I , 1,1 Увеличить значение таймера, на единицу времени ^^запланировано ли ^s*v. ^выполнение одного или нее- ^^ колькил себытий взтот момент' ^•>s^^ времени ? ^s* 1^г Выполнить эти седытий I У Рис. 1.5. Фрагмент блок-схемы, поясняющий логику работы метода фиксированного приращения значений таймера
i Определить Время поступления ближайшего события Г 1 Увеличить значение таймера, до значения времени ближайшего события Выполнить эте сее~ытае ZZD Рис. 1.6. Фрагмент блок-схемы, поясняющий логику работы метода переменного приращения значений таймера g никновение которого запланировано на момент времени, равный следующему ближайшему значению таймера модельного времени. Колебания приращения таймера от случая к случаю o6v ясняют выражение «переменное приращение времени». Блок-схема реализации этого метода изображена на рис. 1.6. Сравнение рис. ].5 и 1.6 наглядно показывает, что выгоднее использовать стратегию переменного приращения значений таймера, а не фиксированного. Бесспорное преимущество переменного приращения объясняется тем, что при нем можно избежать обработки в промежуточные моменты времени, когда не планируется выполнение никаких событий; таким образом можно сэкономить машинное время. В действительности эти преимущества выявляются не всегда. Наличие их зависит от числа основных событий в системе, промежутков времени между их возникновением, относительной эффективности выбранных методов, которые используют для обеспечения хронологической обработки событий и тому подобных факторов. Этот вопрос в данной книге не рассмотрен 1. В рассматриваемой задаче с одним обслуживающим прибором и очередью будет использована стратегия переменного приращения значений таймера. Возникает вопрос: как определить время ближайшего события?" Один из способов заключается в составлении списка моА!ентов времени, в которые запланированы выполнения различных основных событий. 1 В книге «Some Problems of Digital Systems Simulation» P. В. Конвея, Б. М. Джонсона и в статье В. Л. Максвелла в журнале «Management Science» том 6, № I (октябрь, 1969, с. 92—ПО) рассмотрена проблема синхронизации и показаны «области преимуществ двух методов твймнрования>. Всем, кто интересуется этим вопросом, следует прочитать указанные работы. 1 Когда приходит время наращивания значения (Таймера, в списке моментов времени обработки 'событий должно быть найдено ближайшее событие. (Если список моментов возникновения событий отсортирован в порядке возрастания, то никакого поиска не требуется. Таймер в этом случае просто устанавливается в нужное значение в соответствии с первой позицией списка). Затем таймеру должно быть придано его значение и управление должно быть передано в ту часть модели, где обслуживается событие, о котором идет речь. 1.3.3. Завершение моделирования В показанных на рис. 1.5 и 1.6 фрагментах блок-схем не предусмотрены какие-либо меры для остановки моделирования. В самом деле, оба фрагмента содержат «бесконечный цикл» (т. е. замкнутый контур, из которого не обеспечивается выход ни по какому условию). В действительности, после какого-то момента времени наступает необходимость прекратить моделирование. (Иногда вместо мгновенной остановки по достижении определенного момента осуществляется переход на выполнение процедуры «начать завершение моделирования». Например, может оказаться желательным, предотвращение прихода новых заявок в систему, но обслуживание надо продолжать до освобождения системы. В парикмахерской, например, дверь закрывается в 17 ч, после чего доступ новым клиентам запрещен, но парикмахер продолжает работу до тех пор, пока все клиенты, вошедшие до 17 ч, не будут обслужены; см. упражнение 12 параграфа 1.6). Возникает вопрос: как это реализовать в логической схеме рис. 1.6? Одним из несложных способов является введение в модель основного псевдособытия, называемого «завершением моделирования». Тогда одной из функций модели будет планирование поступления этого события. Момент времени, наступление которого должно вызвать остановку моделирования, задается обычно в виде числа. Тогда запланировать такое событие не трудно. В процессе моделирования надо проверять, является ли событие «завершение моделирования» следующим событием. Если да, в таймере устанавливается значение времени конца моделирования, а управление передается в ту часть интерпретатора моделирования, которая отрабатывает процедуру конца. На рис. 1.7 представлен фрагмент блок- схемы, реализующей идею обработки события «завершение моделирования» в системе обслуживания с одним прибором « очередью. Подразумевается, что наступающими событиями могут быть любые из трех: приход заявки, завершение обслуживания и «завершение моделирования». Проверяют, какое из трех событии 18
Определить Время ближайшего события Увеличить значение таймера до значения времени Ближайшего событий Завершить обслуживание Отработать логическую слему конца обслуживания Отработать логическую схему прихеоа заяВки. Завершить моделирование Уточнить детали завершения моделирования Продолжить в соответствии с принятым решением Рис. 1.7. Уточнение фрагмента блок-схемы на рнс 1.6 для случая системы с одним прибором и очередью является следующим, и управление передается в соответствующую часть интерпретатора, обрабатывающую это событие. 1.3.4. Непланируемое завершение обслуживания Иа рассмотрения работы таймера модельного времени следует, что продвижение таймера до момента наступающего события связано с поиском наименьшего интервала времени в списке времен событий. Таким образом, список времен событий должен состоять максимум из трех типов элементов: один для прибывающих заявок, второй для завершения обслуживания и, наконец, третий — «завершение моделирования». В списке всегда находится только одно событие прихода заявки ввиду использования именно такого метода моделирования прихода заявок. Далее, событие «завершение моделирования» также всегда находится в списке, поскольку оно помещено туда во время инициализации модели. Что касается элемента «завершение обслуживания», то оно в списке присутствует не всегда. Если обслуживающий прибор свободен, обслуживания не происходит и, еле-, довательно, не надо планировать завершение обслуживания. Существует два метода поиска ближайшего события. 1. Необходимо проверить, свободен ли прибор. Если да, то следует проверить, какой из двух элементов списка времен событий является ближайшим. В противном случае необходимо искать ближайшее из трех элементов списка. (2J Необходимо продумать логику работы модели так, что если обслуживающий прибор свободен, то значение времени завершения обслуживания должно быть таким большим, чтобы «завершение обслуживания» в принципе не могло быть ближайшим событием. Это значение должно сделать событие завершения обслуживания условно «недопустимым». Если это так, то время ближайшего события всегда можно искать в списке времен событий, состоящем из трех элементов, независимо от того, свободен или занят прибор. Второй из этих двух методов является более подходящим для наших целей и будет использован далее. Необходимо выбрать какое-либо значение в качестве «недопустимого» для времени завершения обслуживания, если никакого обслуживания на самом деле нет. Для этого прекрасно подойдет любое время, большее времени завершения моделирования (можно например, время завершения обслуживания, делающее «недопустимым» это событие, выбрать на единицу больше, чем время завершения моделирования). 2* 19
1.3.5. Одновременные события Пока ничего не было сказано о том, что происходит во временных узлах. Временные узлы наступают тогда, когда два или более событий происходят в одно и то же значение модельного времени. Такие события называют одновременными. Исследуем временные узлы на примере системы с одним обслуживающим прибором и очередью. Предположим, что существует узел для следующего ближайшего события, причем одновременно приходит заявка и завершается обслуживание. Если посмотреть на рис. 1.7, то видно, что таймер продвигается к значению исследуемого нами времени и проверяется, какое из событий является ближайшим. В принятых нами условиях отает не однозначен. Тем не менее должен быть выбран только один выход для продолжения моделирования. Этот выход целиком определяется методом осуществления проверки. Пусть, например, выбран путь, соответствующий завершению обслуживания. Тогда управление передается на соответствующую часть модели, и работает логическая схема обработки конца обслуживания. Здесь необходимо установить значение «времени следующего завершения обслуживания» (это происходит потому, что либо другая заявка начинает обслуживаться, что отмечено в логической схеме обработки конца обслуживания, либо ожидающих заявок не существует, а это и означает, что «время следующего завершения обслуживания» будет установлено в значение, равное «времени завершения моделирования» плюс 1). Логическая схема обработки конца обслуживания не производит ннкакнх действий, изменяющих время прихода следующей заявки. Приход теперь будет следующим ближайшим событием. Более того, когда таймер продвигается к этому значению прихода, фактического изменения значения таймера не происходит. В соответствии с концепцией о временных узлах «новое» значение таймера (время прихода) будет равно «старому» (времени завершения обслуживания). На следующем шаге, когда будет проверяться, какое событие является ближайшим, ответ будет однозначным — приход заявки. Управление будет передано в ту часть модели, где обрабатывается событие прихода, и т. д. Только что рассмотренные этапы обработки временных узлов являются последовательными, т. е. происходящими один за другим. Это приводит к некоторым нюансам моделирования. Суть их заключается в том, что когда есть временные узлы, возникает вопрос, в какой же последовательности должны быть обработаны одновременные события. Это может иметь важные последствия в смысле адекватности модели. В нашем простом случае с одним прибором и очередью временные узлы не вызывают каких- либо осложнений в этом смысле. Существует только два типа основных событий, а именно, приход заявки и завершение обслуживания. (Псевдособытие «завершение моделирования» в этом разделе мы обсуждать не будем; см. упражнение 8,6 параграфа 1.6.) Порядок обработки этих событий в узлах в данном случае безразличен. Давайте убедимся в этом. Пусть прибор будет занят, очередь пуста, а завершение обслуживания и приход заявки осуществляются одновременно. Посмотрим, как способ обработки блока, отыскивающего следующее событие, в обоих случаях влияет на логику работы. (У) Предположим, что сначала мы будем обрабатывать событие завершения обслуживания. Поскольку очередь пуста, то вследствие завершения обслуживания состояние прибора изменится на «свободно». Далее, когда осуще* ствляется приход заявки, оиа застает прибор свободным и, следовательно, сразу же начинает обслуживаться. Так и должно это происходить на самом деле. 2. Предположим теперь, что сначала обрабатывается событие прихода. Заявка застает при* бор занятым и не может быть обслужена, поэтому она попадает в очередь. Далее происходит завершение обслуживания. Из табл. 1.1 следует, что проверяется состояние очереди с целью выяснить, есть ли чем занять освободившийся прибор. Поскольку заявка туда только что пришла, она перемещается из очереди на обслуживание. Таким образом, порядок обработки событий безразличен. Анализ показывает, что в системе с одним прибором и очередью последовательность обработки во временных узлах безразлична. Тем не менее, первый вариант обработки событий является более предпочтительным. В нем прибывающая заявка попадает на обслуживание, минуя очередь. Во втором варианте оиа «временно» помещается в очередь. Это время пре-- бывания, однако, равно нулю, поэтому практически иет смысла помещать заявку в очередь (см. упражнение 8, а параграфа 1.6). Условия работы нашей системы легко поменять таким образом, что порядок обработки событий в узлах будет иметь значение. Пока мы считали, что заявка всегда должна ждать обслуживания, если в этом возникает необходимость. Пусть теперь заявка идет на обслуживание только в том случае, если прибор свободен, в противном случае заявка уходит необслу- жеиной. Пусть, как и раньше, завершение обслуживания совпадет с приходом заявки, а очередь пуста. Если последовательность обработки такова, как в п. 1, то заявка попадет 20
на обслуживание, а если, как в п. 2, то не попадет. Проблема временных узлов здесь упомянута лишь вкратце; подробно она будет рассмотрена в последующих главах книги. Некоторые из упражнений главы также посвящены этой проблеме. 1.3.6. Разыгрывание случайного целого числа при равномерном распределении При обсуждении основных и вспомогательных событий часто встречалась необходимость разыграть случайное число в соответствии с распределением интервалов времени прихода заявок и распределением интервалов времени обслуживания. Необходимость разыгрывать числа в соответствии с некоторыми распределениями при моделировании связана со случайным характером изучаемых процессов. Для разыгрывания таких чисел источником являются некие «равномерно распределенные случайные числа». Более конкретно в терминах моделирования иа ЭВМ таким источником является функция (или подпрограмма), при обращении к которой выдается случайное число из выборки равномерно распределенных чисел в интервале от 0,0 до 1,0. Такую функцию (или подпрограмму) часто называют генератором случайных чисел. Диапазон чисел, выдаваемый .генератором, зависит от самого генератора. Число знаков в этих числах зависит и от генератора и от ЭВМ, иа которой генератор реализован. Информация об этих параметрах дается обычно в документации к генератору. В параграфе 1.2 предполагалась возможность использования для описания системы с одним прибором и очередью именно такого генератора. Считалось, что генератор задан в виде функции и выдает шестизначное случайное число из выборки равномерно распределенных чисел в интервале от 0,000000 до 0,999999 включительно. Будем считать для удобства дальнейшего изложения, что эта функция имеет имя URAND. Необходимо иметь целые значения из выборок равномерно распределенных случайных чисел для задания интервалов прихода заявок и интервалов обслуживания. Прежде чем рассмотреть использование URAND для этих целей, необходимо описать специфику выборок. Одним из условий является необходимость устанавливать наименьшее и наибольшее из целых чисел, содержащихся в выборке. Например, необходимо установить, что время обслуживания распределено равномерно и заключено в интервале 12—20 включительно. Отметим, что средним этой выборки является 16, а «размах» составляет 4. Такой «размах» между средним и крайними значениями называют «половиной поля допуска» или просто «размахом» распределения. Следовательно, можно для описания выборки указать среднее 16 и половину поля допуска 4, а более компактно — время обслуживания равно 16 =£ 4 мин. Такую запись, общий вид которой A =*= В, часто используют для описания равномерного распределения, включающего целые значения от А — В до А + В, где А и В также целые. Такая запись далее в книге использована именно для этой цели. Недостатком этой записи является невозможность задания четного числа значений. Запись 16 =t 4 описывает выборку из девяти значений, 17 =£ 5 — из одиннадцати и т. д. Тем не менее такая запись, используемая в GPSS, очень удобна. Здесь рассмотрен модифицированный вариант записи. Покажем на примере разыгрывание случайного числа из выборки А =£ В. Это делают путем добавления к наименьшему возможному значению выборки «случайной доли» ширины выборки. Наименьшим значением является значение А — В, а ширина выборки равна 1В. Далее, значение, полученное от генератора случайных чисел, рассматривают как «случайную долю». Значение, полученное от URAND, переводят в эквивалентное ему значение в соответствии с выборкой А =£ В: Новое значение = (А — В) + (URAND) (2fi). (1.1) После вычисления правой части равенства (1.1) дробную часть результата отбрасывают (ие округляя), а целую часть результата используют как новое значение. Однако может возникнуть следующая проблема. Новое значение может совпасть с максимальным допустимым значением только в том случае, если URAND выдаст значение 1,0. Но, в соответствии с нашими предположениями, максимальным значением может быть 0,999999. Следовательно, максимальным разыгрываемым значением по формуле (1.1) может быть не А + В, а А + В — 1, а это не то, что нужно. Для исправления создавшейся ситуации уравнение (1.1) модифицируют таким образом: Новое значение = (А - В) 4- (URAND) (2B + 1) (1.2) В GPSS наибольшее значение генератора равно 0,999999. К тому же для получения разыгрываемого значения автоматически используется уравнение, аналогичное (1.2). Следовательно, описанная здесь процедура в точности совпадает с процедурой, используемой в GPSS. Если посмотреть внимательно на выражение (1.2), то можно увидеть, что оио преобразует значение, полученное от URAND, в значение 21
выборки A =t В. Минимальное значение А — В получается, если значением URAND являются 0,000000 и большие значения — до 1/(2Я -|- 1), ио не включительно. Вероятность появления этого значения равна Ц(2В + 1). Следующее за наименьшим значением А + В — I получается, если значение URAND лежит в интервале от 1/\2В + 1) до 2/(25 + 1), но не включительно, и т. д. Последнее значение А -f- В получается при выдаче от URAND значений от 2ВЦ2В + 1) до (2В 4- 1)/(2В + 1). т. е. единицы. Конечно, это наибольшее значение также выпадает с вероятностью II(2В + 1), т. е. в соответствии с требованием о равномерности распределения. 1.4. Логические особенности генератора случайных чисел Особенности генерации случайных чисел и нх проверка в данной книге не описаны. Существует много работ, посвященных разработке алгоритмов генерации случайных чисел и проведению статистических исследований существующих и разрабатываемых генераторов. В данной книге не сделано каких-либо попыток детально разобраться в логике работы генератора случайных чисел и его проверке. При разработке процедурной модели системы с одним прибором и очередью предусмотрено использование генератора случайных чисел. Далее в книге генератор, используемый в GPSS, считается без каких-либо оговорок достаточно хорошим источником случайных чисел. Тем не менее, поскольку читатель может не знать, как конструируется генератор, рассмотрим алгоритм его работы. Цель такого рассмотрения — дать возможность увидеть основные особенности разработки генератора и обратить внимание на способ задания последовательности случайных чисел. Более того, поскольку описываемый здесь алгоритм чрезвычайно близок к тому, который используют в GPSS, в конце параграфа будут рассмотрены некоторые особенности генераторов случайных чисел GPSS. Сам алгоритм очень прост. Представим, что целью является генерирование четырехзначных равномерно распределенных случайных чисел, находящихся в интервале 0,0000— 0,9999 включительно. Для этого в алгоритме используют два положительных, нечетных целых числа, каждое из которых может содержать до четырех цифр. Первое из этих двух чисел, здесь называемое «ядром», никогда не меняет своего значения. Второе, называемое здесь «множителем», меняется. Каждый раз, когда •надо получить новое случайное число,значение множителя изменяют в соответствии с некоторой последовательностью. (Термины «ядро» и «мно- 22 житель», используемые здесь, отличаются от используемых в литературе. Число, которое не изменяется, обычно называют «множителем», а термин «ядро» используют для идентификации начального значения. В литературе по GPSS, однако, эта терминология обратна. В целях совместимости с фирменными описаниями в книге использована терминология IBM.) Когда требуется сгенерировать новое случайное число, первым шагом алгоритма является умножение ядра на множитель. Результатом (в общем случае) является восьмиразрядное целое произведение. Его используют для получения нового значения множителя, применения иа следующем шаге алгоритма и для выработки случайного числа. При этом правые четыре цифры произведения выступают в роли нового множителя, средние четыре цифры (после преобразования в десятичный вид) используются в качестве случайного числа. Рассмотрим численный пример этого алгоритма. Положим, что число 5167 выбрано в качестве ядра, а начальным значением будет число 3729. Для выработки первых случайных чисел используют следующие шаги алгоритма. 1. Получить произведение ядра и множителя 5167 х 3729 = 19 267 743. 2. Взять число 7743 (правые четыре цифры произведения) в качестве нового значения множителя. 3. Число 0,2677 (средние четыре цифры) использовать в качестве случайного числа. При генерации второго случайного числа его значением будет 0.0080 (ядро 5167, умноженное на множитель 7743, дает 40008081 и определяет новый множитель 8081 и случайное число 0,0080) и т. д. Приведенный пример более подробно представлен в табл. 1.2; он показывает получение первых десяти случайных чисел по приведенному алгоритму. В первых строках с помощью стрелок показано, как из восьмиразрядного произведения формируются последующие значения множителей и случайных чисел. Из табл. 1.2 ясно, почему случайные числа лежат в интервале 0,0000—0,9999. Значение 0,0000 получается в случае, если четыре средние цифры произведения оказываются равными нулю; аналогично получают число 0,9999. Получить числа, меньшие, чем 0,0000, и большие, чем 0,9999, просто невозможно. Заметим, что после шестого использования алгоритма множитель становится равным единице. Это наводит на мысль о том, что если бы новым значением множителя был ноль, то алгоритм привел бы нас к ошибке (при этом каждое новое произведение давало бы ноль, и случайное число также все время было бы равно нулю). Для того чтобы этого не произошло, необходимо, чтобы и ядро и множитель были нечет-
Таблица 1.2. Генерация первых десяти случайных чисел Начальное значение множителя Последовательность множителей, получающихся в соответствии с алгоритмом Значение жителя 3729 1 _ ф 7743 8081 4527 1009 3503 1 5167 7889 2463 ~ Восьмиразрядное произведение ' 1 19267743 '—' 1-4 40008081 1 .! | 41754527 23391009 5213503 18100001 5167 26697889 40762463 12726321 Результирующее слупаАноое число 1 - 0,2677 1 4- 0,0080 0,7545 0,3910 0,2135 0,1000 0,0051 0,6978 0,7624 0,7263 § $ з 1 ь слу ноет •з t- со я 1 г; 8 с 1 Получается при умножении но неизменное значение ядра GI67. иыми числами. Произведение нечетных чисел всегда нечетно. Таким образом, правые четыре цифры произведения никогда не могут быть всеми нулями, т. е. никогда множитель не станет равным нулю. Идея «воспроизведения случайных чисел» ясна из табл. 1.2. Поскольку ядро и начальный множитель выбраны, последовательность генерируемых случайных чисел является вполне детерминированной. Например, если ядро равно 5167, а множитель 3729, то третьим случайным числом обязательно будет 0,7545, и т. д. Следовательно, случайные числа в действительности не являются случайными. Говорят, что они псевдослучайны. Воспроизведение одной и той же последовательности случайных чисел несколько раз вовсе не так уж плохо. Это дает возможность воспроизведения точной последовательности независимых событий при моделировании процессов. Следовательно, системы с альтернативными конфигурациями могут быть изучены в одних и тех же экспериментальных условиях. В результате можно более четко исследовать поведение альтернативных конфигураций системы и можно делать относительно строгие выводы о принадлежности различных систем к одному типу. Методы использования преимуществ псевдослучайности для воспроизведения условий экспериментов будут рассмотрены ниже (в конце гл. 3). При рассмотрении табл. 1.2 возникает вопрос: сколько раз можно воспользоваться алгоритмом, прежде чем повторится исходное значение множителя? После возврата к исходному значению множителя генератор начнет повторять последовательность случайных чисел, выработанных ранее. Количество случайных чисел, выработанных прежде, чем они могут повторяться, называется периодом (или длиной) генератора случайных чисел. В приведенном примере наибольшим возможным периодом является 5000. (Существует только 5000 различных нечетных чисел в интервале от 1 до 9999. Следовательно, максимум 5000 различных множителей могут иметь место прежде чем появится повторяющийся множитель.) На самом деле ситуация еще более сложная. Единственным способом сделать так, чтобы множитель кончался на 5 (кроме, быть может, начального), является завершение либо множителя, либо ядра (либо обоих) цифрой 5, но тогда множитель всегда будет кончаться на 5. Следовательно, максимальным возможным периодом будет не 5000, а либо 4000, либо 1000 в зависимости от выбора значения ядра и начального множителя. У генератора с максимальным периодом в 5000 есть много причин быть неудовлетворительным для реальных целей. Однако при такой схеме легко увеличить максимально возможный период генератора: просто надо увеличить число знаков ядра и множителя. В GPSS существует восемь встроенных генераторов случайных чисел. Иметь несколько генераторов очень удобно. Это дает возможность, например, каждому из источников случайных процессов модели иметь свой генератор. Как будет ясно далее, такая стратегия важна для возможности сравнения систем с различной конфигурацией при одних и тех же условиях эксперимента. При использовании какого- либо из этих генераторов выдается число нз выборки равномерно распределенных случайных чисел в интервале от 0,000000 до 0,999999. Значение, производимое генератором GPSS, является контекстно зависимым. Оно является либо шестизначным числом, как было описано выше, либо берется нз выборки целых чисел, равномерно распределенных в интервале 000—999. Как возникает контекстная зависимость, мы увидим дальше. Алгоритм генерации случайных чисел в GPSS очень напоминает алгоритм, представленный в табл. 1.2. Отличием является следующее. (То, что здесь говорится о генераторах GPSS, касается использования GPSS на ЭВМ фирмы IBM серий 360 и 370. Что касается использования GPSS на других ЭВМ. необходимо сверять с соответствующей документацией.) 1. В табл. 1.2 четырехразрядные значения ядра и множителя заключены в интервале нечетных целых чисел 1—9999. В GPSS ядро и множитель заключены в интервале нечетных целых чисел от 1 до 2147483647 включительно. 23
2. Любой генератор GPSS имеет восемь встроенных ядер. Их значениями являются 37584381, 1909996635, 1964463183, 1235671459, 1480745561, 442596621, 340029185 и 2030226625. Из табл. 1.2 следует, что необходимо только одно ядро. В GPSS при генерации очередного числа значение соответствующего ядра выбирается случайно среди восьми возможных значений. Может быть выбрано любое из ядер с равным успехом. 3. Предположим, что все восемь генераторов GPSS вызываются для генерации случайных чисел. Во-первых, текущее значение генератора умножается на выбранное случайным образом ядро. Результирующее произведение используют следующим образом: а) правая половина произведения становится следующим значением множителя для данного генератора; б) внутреннюю часть произведения используют в качестве случайного числа (соответственно после записи его в виде десятичного числа); в) другую внутреннюю часть произведения используют для определения на основе случайного выбора, какое из восьми ядер данного генератора следует выбрать в следующий раз при генерации случайного числа. Применение пп. а и б аналогично использованию произведения, описанному в рассмотренной выше схеме; применение п. в специфично для GPSS, поскольку в ием используют восемь ядер. 4. В GPSS используют двоичную систему счисления, а не десятичную, применяемую здесь для удобства написания табл. 1.2. В схеме, изображенной табл. 1.2, пользователь может влиять на последовательность случайных чисел заданием значения ядра и (или) начального значения множителя. Естественно необходимо предупредить пользователя о том, какие он имеет возможности для влияния на последовательность генерируемых случайных чисел в GPSS. Как уже указывалось, существует восемь встроенных ядер. Задать эти значения нельзя. Более того, выбор ядра осуществляется при использовании генератора случайным образом во время обработки обращения к этому генератору. Единственной логической возможностью выбора здесь могла бы быть возможность определения для используемого генератора первого значения ядра при генерации случайного числа. В GPSS, однако, эта возможность не реализована. Все восемь генераторов используют сначала первое ядро (т. е. ядро, значение которого равно 37584381) для генерации первого случайного числа. Существует только одна возможность воздействия на последовательность случайных чисел в GPSS. Она реализуется с помощью задания различных значений множителя. Эта возлюж- иость в GPSS предоставляется пользователю как i средство, выбираемое по желанию. Если оно не высказано (т. е. по умолчанию), каждый из восьми множителей имеет в качестве началь- ' ного значения либо 1, либо 37 (значение, принимаемое по умолчанию, в первой версии GPSS равно 1, во второй версии и в GPSS V все значения по умолчанию равны 37; в конце гл. 2 кратко рассмотрены эти различные версии i GPSS). Заметим также, что если начальное значение множителя задается по умолчанию, , то последовательности, полученные от различных генераторов, одинаковы. Это следует из i того, что каждый генератор использует одни ( и те же значения ядер при первом к ним обра* щенил. В свою очередь, это обеспечивает «случайный выбор» одинакового значения второго | ядра при следующем обращении, и т. д. Если возможность задания множителя пользователем реализуется, то каждому генератору может быть ■ задано свое значение. При этом задаваемые значения должны быть положительными, нечетными, целыми и не быть больше чем в пять цифр длиной. (В п. 1 указано, что множитель должен быть иечетиым числом в интервале 1— 2147483647. Тем не менее задаваемое пользователем начальное значение ограничено пятизначным числом.) Например, пользователь может задать начальное значение 431, 99837 и 5 для второго, пятого и шестого генераторов соответственно. Если это так, то по умолчанию принимаются значения первого, третьего, четвертого, седьмого и восьмого генераторов. Использование генераторов случайных чисел (более подробно см. гл. 3) требует минимальных знаний построения алгоритма, поэтому далее алгоритм генерации случайных чисел в GPSS описан не будет. 1. б. Алгоритмизация модели Мы подробно рассмотрели различные элементы, из которых формируется модель системы обслуживания с одним прибором и очередью. Последним шагом является сбор этих элементов в единую общую модель. Сначала мы это проделаем в общем виде без пошаговой детализаци* алгоритма. Затем рассмотрим модель более подробно, как если бы было необходимо запрограммировать ее на ЭВМ. Общая логическая схема модели представлена на рис. 1.8 в виде блок-схемы, которая повторяет фрагмент блок-схемы на рис. 1.7, но расширена за счет включения особенностей инициализации и завершения моделирования. Все особенности обработки, представленной на рис. 1.8, уже подробно проработаны. В блоке «ПРОЧИТАТЬ ДАННЫЕ», например, долж* ны быть прочитаны: 1) среднее и половина пол* , 24
(начать j /прочитать данные/ Инициализировать переменные Определить время ближайшего события I Продвинуть таймер де времени ближайшего события Завершить обслуживание Отработать логическую схему конца обслуживания Приход заявки Отработать логическую схему прихода заявки А * Завершить моделирование Запасать / результаты/ У [Закончить) Рис. 1.8. Блок-схема алгоритма логической обработки в системе обслуживания с од- ввм прибором и очередью допуска распределения интервалов прихода заявок; 2) среднее и половина поля допуска распределения времени обслуживания; 3) время завершения, т. е. значение модельного времени, при котором следует прекратить моделирование. В блоке «ИНИЦИАЛИЗИРОВАТЬ ПЕРЕМЕННЫЕ» должны быть установлены значение стартового времени моделирования, состояние прибора «свободно», значение «недопустимого» времени следующего завершения обслуживания, а также должно быть запланировано событие первого прихода заявки. В блоке «ОТРАБОТАТЬ ЛОГИЧЕСКУЮ СХЕМУ ПРИХОДА ЗАЯВКИ» должна быть задана логика обработки прихода заявки, подробно описанная в табл. 1.1. На рис. 1.9 блок-схема рис. 1.8 представлена более подробно. Здесь представлены имена, введенные для обозначения соответствующих переменных модели, конкретные виды проверок, являющиеся частью логической схемы обработки события прихода и завершения обслуживания. Табл. 1.3 содержит словарь переменных, использованных на рис. 1.9. Так, IATA — среднее значение интервалов прихода заявок, IATB — половина поля допуска распределения времени прихода заявок, CLOCK — название таймера, IDLE — переменная состояния прибора, TOSC — время следующего завершения обслуживания и т. д. Все переменные, использованные иа рис. 1.9, имеют целые значения. Для того чтобы не перегружать рисунок, иа нем указаны определяемые отдельно процедуры, илн функции, необходимые в логической схеме моделирования. Эти функции записаны в нескольких прямоугольниках, концы которых отмечены двумя вертикальными линиями. Логику работы этих простых функций должен задать пользователь. Определения, необходимые для этого, включены в табл. 1.3. Естественно, что все значения, получаемые в функциях, должны быть заданы как целые числа. Функция, названная SAMPLE (МАКЕТ), получает в качестве исходных данных среднее 25
Q НАЧАТЬ ^ ^.прочитать: IATA. IATB,STA. i stb,stopt у CLOCK — О IDLE — 1 LWL — О LWLMAX—О TOSC ♦STOPT+I TOA -«-SAMPLE (IATA.IATB) CLOCK-*- MIN (TOA.TOSC.STOPT) TOA LWL — LWL-I I IDLE —-I TOSC-«-STOPT+l TOSC -«-CLOCK+SAMPLEISTA.STB) EZ 7 '£>>■' TOA -*- CLOCK+SAMPLE(iATA.IATE5| STOPT. M IDLEsI ? .НЕТ IDLE ■*- О / ■. TOSC-*-CLOCK+SAMPLE(STA.STB) LWL-*-LWL+l /.ЗАПИСАТЬ: / lATA.IATB.STA.STB, / STQPT,LWLM.AX / 1 I LWLMAX<«t-MAX(LWLLWLMAX)| Г (закончить) Phc. 1.9. Летальная блок-схема алгоритма, представленного на рнс. 1.8
Таблица 1.3. Словарь переменных н функций (см. рис. 1.9) Переменнаи CLOCK • IATA IATB IDLE mi •,« LWLMAX i< MAX MIN SAMPLE STA STB STOPT TOA TDSC Определение Переменная для моделирования часов (таймер) Значение А интервалов времени прихода заявок, т. е. среднее значение распределения времени прихода заявок Значение В интервалов времепп прихода заявок, т. е. половина поля допуска распределения времени прихода заявок Переменная состояния прибора; предполагается, что 1 соответствует свободному, а 0 — занятому прибору Длина очереди, т. е. число заявок, находящихся в очереди в текущий момент вре- • мени Максимальное за прошедшее время моделирования значение длины очереди Название функции, которая получает два целых значения в виде аргументов и возвращает также в целом виде большее из них Название функции, которая в качестве аргументов получает три целых числа, а возвращает также в целом виде наименьшее из этих трех Название функции, которая получает два аргумента в виде целых чисел, интерпретируемых соответственно как среднее н половина поля допуска выборки равномерно распределенных целых чисел; она возвращает значение (в внде целого числа), являющееся случайным из этой выборки Значение А времени обслуживания, т. е. среднее значение распределения времени обслуживания Значение В времени обслуживания, т. е. половина поля допуска распределения времени обслуживания Время завершения; когда таймер модельного времени достигает этого значения, моделирование завершается Время прихода, т. е. значение модельного времени, в которое должно произойти событие следующего прихода заявки Время завершения обслуживания, т. с. значение модельного времени, в которое должно произойти событие следующего завершения обслуживания. Если прибор не обслуживает заявку, TOSC устанавливается в значение, равное STOPT -j- I и половину поля допуска выборки равномерно распределенных целых случайных чисел, а значение, которое эта функция возвращает, — разыгранное новое случайное число из этой выборки. Естественно, что для написания этой функции необходимо обратиться к другой функции — генератору случайных чисел. Функция, названная MIN, получает список из трех значений в качестве входных данных, а в качестве выходного значения дает копию наименьшего из элементов списка. Ясно, что гарантировать единственность такого значения невозможно. При наличии временного узла, M1N просто возвращает копию значения таймера, на которое пришелся узел. На рис. 1.9 вход в MIN отмечен как список из трех элементов, состоящий из элемента следующего прихода заявки (ТОА), времени завершения следующего обслуживания (TOSC) и времени завершения моделирования (STOPT). Из контекста понятие, что задачей функции MIN является определение времени возникновения ближайшего события. Значение, полученное от MIN, сразу же устанавливается иа таймере (CLOCK). Следовательно, определение времени возникновения ближайшего события и продвижение таймера к этому времени изображено на рис. 1.9 в виде одного шага. Однако этот шаг не отвечает на вопрос, к какому типу относится ближайшее событие. На следующем шаге рис. 1.9 значение CLOCK проверяется на предмет определения, какому из значений времени оно равно, и управление передается на ту часть модели, где обрабатывается соответствующая логическая схема для этого события. Третьей функцией, используемой на рис. 1.9, является функция МАХ. Она получает список входных данных из двух значений, а возвращает большее из этих двух. Контекст использования МАХ заключается в получении записи максимальной длины очереди до текущего момента. Действительно, в модели на рис. 1.9 это максимальное значение длины очереди является единственной статистической переменной, для которой делается проверка. В примере, который следует ниже, подразумевается, что модель, представленная на рис. 1.9, расширена за счет включения новых переменных для сбора статистических данных, описывающих поведение системы обслуживания с одним прибором и очередью. 1. 6. Упражнения l.a). При составлении уравнения (1.1) мы преследовали цель записать его так, чтобы новое значение никогда не было равно А + В, поскольку наибольшим значением URAND является 0,999999. Представим, что URAND может давать значения, равномерно распределенные в интервале 0,000000—1,000000 вместо известного нам интервала 0,000000—0,999999. Пригодно ли в этом случае уравнение (1.1) для получения новых равномерно распределенных чисел из выборки целых А — В? б). Из уравнения (1.1) следует, что после вычисления правой его части дробная часть должна быть отброшена (без округления), а целая часть результата использована как новое значение. Представим, что округление осуществляется путем добавления к правой части 0,5. Представим также, что URAND дает равномерно распределенные чнсла в интервале 27
0,000000—0,999999. Может ли уравнение (1.1) в таком виде быть использовано для получения равномерно распределенных чисел выборки Л±В? 2. Уравнение (1.2) показывает, каким образом можно преобразовать значение, полученное от URAND, в эквивалентное ему значение из выборки равномерно распределенных целых чисел А =£ В. Предположим, что выборка целых не является равномерно распределенной. В частности, предположим, что необходимо получать случайные числа из выборки чисел, распределенных в соответствии с табл. У2. При этом вместо вычисления более удобно вести преобразование чисел, полученных от URAND, с помощью процедуры просмотра некоторой таблицы. Составьте алгоритм для получения чисел, распределенных в соответствии с табл. У2. Покажите особенности алгоритма в виде блок- схемы. Таблица У2 Значение' выборки 2 5 8 9 12 Отя осительиая частость ДЛЯ значении 0,15 0,20 0,25 0,22 0.18 З.а). Пусть в качестве ядра выбрано число I и генерация чисел осуществляется в соответствии со схемой табл. 1.2. Напишите правильную последовательность случайных чисел, генерируемую по этой схеме. б). Придумайте ситуацию, при которой все числа получаемой последовательности случайных чисел, генерируемых ло схеме табл. 1.2, будут равны некоторой ненулевой константе. 4. Используя некоторые из работ, указанных в списке литературы к данной главе, проделайте следующее. а). Составьте и опишите по крайней мере два алгоритма генерации случайных чисел, отличающихся от представленных в параграфе 1.3. б). Составьте и опишите по крайней мере три различных проверочных теста, которые можно было бы использовать для проверки качества последовательностей случайных чисел. в). Составьте метод преобразования случайных чисел, распределенных равномерно на интервале 0,000000—0,999999, в случайные числа, распределенные по нормальному закону, со средним, равным нулю, и стандартным отклонением, равным I. г). Придумайте способ преобразования случайных чисел, распределенных равномерно на интервале 0,000000—0,999999, в значения случайных чисел, распределенных по показатель ному закону, со средним, равным 1. 5. Этот вопрос касается генераторов случайных чисел, используемых на ЭВМ вашего вычислительного центра (ВЦ). а). Сколько различных генераторов случайных чисел включено в библиотеку программ вашего ВЦ? Каковы выборки чисел, генерируемых ими? б). Есть ли среди чисел, генерируемых в соответствии с равномерным распределением на интервале 0,0—1,0, числа 0,0 и (или) 1,0? Сколько знаков помещается в случайных числах, получаемых от генератора? Каков алгоритм генерации случайных чисел? в). Какие у вас есть возможности, предоставляемые генераторами по выбору, для воздействия на последовательность случайных чисел, выдаваемых генератором, описанным в п.б? Как ими можно воспользоваться? г). Предположим, что вы хотите воспользоваться генератором, описанным в п.б, в программе, которую будете выполнять у себя в ВЦ. Опишите подробно, как это надо делать. д). Напишите простую программу, которая получает первые 100 значений от генератора, описанного в п. б, а затем печатает их вместе со средним значением и стандартным отклонением. Сравните полученные значения со средним и стандартным отклонением выборки, из которой получаются случайные числа. е). Напишите программу, которая использовала Сы один из тестов, разработанных вами в упражнении 4.6, для проверки генератора, описанного в п. б. Выполните программу. После этого ответьте на вопрос о качестве генератора, описанного в п. б. б.а). Надо ли в модели, представленной на рис. 1.9, устанавливать CLOCK (ТАЙМЕР) в нулевое значение? б). Как вы считаете, надо ли в моделях систем массового обслуживания полагать значение модельного времени в точности равным нулю при инициализации моделей? 7. Вполне возможно, что прн моделировании, в зависимости от различных условий, интервалом между приходами двух заявок будет число 0. Может даже случиться, что время обслуживания также будет равно нулю (хотя этому факту и нелегко найти разумную интерпретацию). а). Покажите, каким образом будет вести себя модель, представленная на рис. 1.9, если разыгранное значение интервала прихода заявки окажется равным нулю. б). Опишите поведение модели, если время обслуживания окажется равным нулю. 8. Перечисленные ниже вопросы связаны с возникновением временных узлов в модели, представленной на рис. 1.9.
а). Предположим, что если временной узел возник ввиду совпадения времени прихода заявки и завершения обслуживания, то событие прихода будет обрабатываться первым. Покажите влияние этого факта на получающееся в результате значение максимальной длины очереди. б). Пусть узел имеет в себе событие «завершение моделирования». Покажите, имеет ли значение последовательность обработки событий в этом узле, а если да, то какова эта последовательность. в). Предположим, что модель преобразована таким образом, что прибывающая заявка решает не оставаться, если в очереди уже есть хотя бы одна заявка. Допустим также, что в очереди есть заявка и что возник узел между временем прихода заявки и завершением обслуживания. Покажите влияние выбора последовательности обработки этих событий на решение, принимаемое пришедшей заявкой. . 9.а). Есть ли в процедурном языке, которым вы владеете, средство осуществить проверку CLOCK (см. рис. 1.9) с помощью единственного оператора. Если нет, то покажите, как будет выглядеть эта проверка при программировании на известном вам процедурном языке. б). Предположим, что мы моделируем систему обслуживания с одним прибором и очередью (см. рис. 1.9) и что возник узел с событиями: приход заявки и завершение обслуживания. Влияет ли последовательность проверки запрограммированной вами в п. а логики на работу системы? Каким образом можно изменить последовательность проверок событий при наличии узлов? в). После того, как вычислено время ближайшего события, осуществляется продвижение к нему таймера. Это выполняется одним блоком на рис. 1.9. Однако этот шаг кончается тем, что необходимо определить, к какому типу событий относится ближайшее. В результате, значение модельного времени необходимо последовательно сравнить со значением времени каждого из трех событий, с тем чтобы затем передать управление на ту часть модели, где запрограммирована логика обработки соответствующего события. Эта последовательная проверка могла бы быть более эффективной, если бы тип ближайшего события определялся одновременно с определением времени ближайшего события. Тогда, после продвижения значения таймера можно было бы сразу же передать управление в соответствующую часть модели. Как вы считаете, можно ли такую улучшенную модель запрограммировать на процедурном языке, с которым вы хорошо знакомы? Если да, то поясните, пожалуйста, поподробнее, как такое улучшение можно осуществить. 10.а) Нарисуйте блок-схемы алгоритмов, реализующих функции MAX, MIN и SAMPLE, представленных в модели рис. 1.9. б). Напишите эти функции в виде операторов процедурного языка по вашему собственному выбору. Примените эту программу в вашем ВЦ, используя данные, полученные в параграфе 1.2. Ответьте, какова максимальная длина очереди, полученная при моделировании? Можете ли вы с уверенностью сказать, была ли эта длина в течение одного или нескольких единиц модельного времени? (Если трудно ответить сразу, то можно обратиться к упражнению 8, а.) 11. Измените модель (см. рис. 1.9) таким образом, чтобы она могла выдавать сведения о поведении системы по следующим параметрам. а). Число заявок, пришедших на обслуживание в течение периода моделирования. б). Число заявок, которые попали на обслуживание сразу же по прибытии. в). Степень использования прибора. г). Среднее время, потребовавшееся прибору для обслуживания заявок. (Что необходимо сделать для подсчета этого параметра, если в момент завершения моделирования заявка находится на обслуживании?) д). Среднее время пребывания в очереди, если считать все пришедшие на обслуживание заявки (включая и те, которым ждать не пришлось). (Что необходимо сделать для вычисления этого параметра, если одна или более заявок находятся в очереди в момент завершения моделирования?) е). Среднее время пребывания в очереди, если считать только те заявки, которые ждали обслуживания в очереди (вопрос, поставленный в п. д., здесь остается в силе). ж). Среднее число заявок в очереди. Для точного вычисления этого параметра нарисуйте график длины очереди в зависимости от времени моделирования для некоторого гипотетического случая. График состоит из последовательности смежных прямоугольников. Средняя высота этих прямоугольников равна среднему числу заявок в очереди. Тщательно проверьте логику модифицированной вами модели. Используйте эту модель для расчета на своей ЭВМ, осуществив один или более «детерминированных прогонов» для проверки правильности модели. «Детерминированным прогоном» является такое выполнение программы, представляющей модель, при котором случайность процесса не влияет на результирующие параметры, дающие точные характеристики модели. Частично о правильности модели говорит сравнение результатов с результатами, полученными на заведомо точной модели. Например, предположим, что интервал прихода заявок равен в точности 20 еди- 29
ницам, а время обслуживания — ровно 15 единицам времени. Тогда, если «остановка моделирования» равна 480, то ровно 24 заявки придут иа обслуживание в течение периода моделирования, включая приход последней, появившейся в момент времени, равной 480. Сто процентов из них попадут на обслуживание немедленно. Использование прибора будет равно 0,718. Среднее время обслуживания будет равно 15. Среднее время пребывания в очереди (оба параметра) будет равно нулю, и среднее число заявок в очереди также равно нулю. Заметим, что это детерминированное множество условий задается путем задания нулевого параметра для IATB и STB в модели на рис. 1.9. Не требуется большого воображения, чтобы задать другие наборы детерминированных условий. Например, надо проверить, правильно ли работает модель в случае, если и интервалы прихода и время обслуживания равны 20 единицам времени. Правильны ли результаты, если интервалы прихода равны 20, а интервалы обслуживания — 30 единицам времени? 12.а). Покажите, что изменится в модели (см. рнс. 1.9), если требуется, чтобы моделирование началось только для того, чтобы завер- шитья в «заданный момент». Иначе говоря, надо предотвратить приход новых заявок в систему, но сделать так, чтобы моделирование имело место, пока система не придет в состояние «пуста и свободна». Выходные данные должны показать, в какой момент модельного времени моделирование завершится полностью. (Заметим, что для этой модифицированной модели время фактического завершения моделирования является случайной величиной.) При возникновении узла с событиями «начать, чтобы завершить моделирование» и приходе следующей заявки позволит ваша модель приход этой новой заявки в систему или нет? б). Проверьте тщательно логику работы вашей модели. Выполните детерминированный прогои модели на ЭВМ в вашем ВЦ, задав в качестве интервала прихода заявок 30, времени обслуживания 35, а времени завершения 480 единиц. Завершится ли моделирование в этот заданный вами момент времени? в). Осуществите теперь на нескольких различных наборах данных недетерминированные прогоны (т. е. при различных начальных значениях для генератора случайных чисел). Определите, в какие моменты времени фактически будет завершаться моделирование? 13 *. В парикмахерскую с одним парикмахе- • В гл. 2, в примере 2В, разработана GPSS — модель описанной в упражнении 13 системы. В кеб автоматически собирается статистика, задаваемая в виде упражнения 14. В описании модели приводится метод агрегированного и сегрегированного сбора статистических данных об очереди, хак это требуется сделать в упражнении 15. ром заходят клиенты двух типов. Клиенты первого типа хотят только постричься. Распределение интервалов их прихода равно 35 — :£ 10 мин. Клиенты второго типа хотят постричься и побриться. Распределение интервалов их прихода равно 60 — 20 мин. Парикмахер обслуживает клиентов по принципу «первым пришел — первым обслужен». Описанная ситуация схематично может быть изображена так, как это сделано иа рис. У13, где кружками обозначены клиенты, желающие только постричься, а квадратами — клиенты, желающие постричься и побриться. В момент времени, изображенный иа рис. У13, клиент, только стригущийся, находится в парикмахерском кресле, а клиенты, желающие только постричься, постричься и побриться, и только постричься, сидят в очереди на обслуживание. На стрижку у парикмахера уходит 18 =£ =t 6 мин, а на бритье — 10 ^ 2 мин. Составьте процедурную модель такой па* рикмахерской, собирая статистику о максимальной длине очереди. (Отметим, что хотя существуют клиенты двух типов, очередь все равно одна.) После тщательной проверки логики работы модели проверьте правильность модели путем детерминированных прогонов модели. 14. Модель, разработанную в п. 13, необходимо расширить таким образом, чтоба она собирала статистические данные об очереди, описанные' в упражнении 11 в пп. д, е, ж. Для этого не следует делать различия между клиентами разных типов, находящимися в очереди. (Это означает, что из выходных данных вы получите, что средняя длина очереди равна, например, 0,85, но неизвестно, какую долю от этих 0,85 составляют клиенты только стригущиеся, а какую стригущиеся и бреющиеся. Проверьте правильность расширенной модели, проделав несколько детерминированных прогонов. 15. Расширьте модель, разработанную в упражнении 14, так, чтобы она умела различать * типы клиентов в смысле сбора статистики об очереди системы. Иначе говоря, статистические данные об очереди должны быть сегрегированы (собраны отдельно) по каждому типу (хотя сами клиенты в очереди находятся вместе, т. е. не сегрегированы). Но, так же, как к в упражнении 14, модель должна продолжать собирать статистику в агрегированном (собранном вместе) виде, т. е. в этой статистике типы ПриХОд • О D О—®- Очередь Прибор Рис. У 13
клиентов, находящихся в очереди, не должны учитываться. Информация, показанная в табл. У15, должна быть отпечатана. Проверьте правильность вашей модели, проделав, как и ранее, несколько детерминированных прогонов. Таблица VI5 Число прибывших клиентов Число клиентов, попавших на обслуживание без ожидания Среднее время пребывания в очереди (учитываются клиенты, обслуженные без ожидания) Среднее время пребывания в очереди (ие учитываются клиенты, обслуженные без ожидания) Среднее число клиентов в очереди Клиенты. которые только стригутся 13 1 15,7 17,0 0,424 Клиенты, которые и стригутся и бреютсй 8 3 6,0 9.6 0,100 |Об& тип» .клиентов. 21 4 12,0 14,8 0,524 1б *. На фабрике в кладовой работает один кладовщик. Он выдает запасные части, используемые механиками, ремонтирующими неисправные станки. Запасные части очень дороги и их слишком мало, чтобы каждый механик мог иметь их на своем рабочем месте. Время, затрачиваемое на то, чтобы взять запасные части, зависит от типа запроса. Типы бывают двух видов. Данные об этом представлены в табл. У16. Таблица У16 Тип запроса janaciiofl части 1 2 Интервалы приходов механиков, с 420^360 3602:240 Период обработки запроса, с 3002:90 100=Ь30 Кладовщик обслуживает механиков по принципу «первым пришел — первым обслужен» независимо от того, с каким видом запроса тот пришел. Такая дисциплина обслуживания представлена на рис. У16, а, где кружки н треугольники символизируют механиков, делающих запросы типов 1 и 2 соответственно. • В примере 2С гл. 2 представлена GPSS — модель системы, описанной в упражнении 16. Позднее, в примере ЗС гл. 3 систему рассматриваем вновь, и иа этот раз сравниваем альтернативные дисциплины обслужиоаиня при одинаковых условиях эксперимента. При/Од а) Уход —1^— у.— Очередь Прибор Высокий. приоритет Приход J Низкий Ь1 \ д^дп _j££t приеритет 6) Рис. У 16 Очередь Прибор • На рис. У16, а запрос типа 2 обрабатывается, а запрос типа 1 и два запроса типа 2 ждут своей очереди. Поскольку неисправный станок простаивает, то предприятию может быть нанесен убыток в 0,25 цента в секунду, если механик ждет, пока его обслужит кладовщик. Этот убыток не зависит от выдаваемых запасных частей. Опыт работы подсказывает, что среднее число ожидающих механиков может быть уменьшено, если запросы типа 2 будут обслужены раньше запросов типа 1. Средний период обработки запроса типа 2 меньше, чем типа 1. Если кладовщик обрабатывает запрос, имеющий минимальное время обработки, то такая дисциплина называется дисциплиной «обработки наименьшего запроса». Иначе говоря, кладовщик обрабатывает запросы типа 1 только тогда, когда нет запросов типа 2, ожидающих обработки. Схематически такая дисциплина изображена на рис. У16, б, на котором очередь, образовавшаяся перед прибором, состоит из двух частей. Часть, стоящая в начале очереди, является высокоприоритетной, а та, что помещается в хвосте очереди, является низкоприоритетной. Дисциплина выбора из очереди, представленная на рис. У16, б, называется «первым пришел — первым обслужен внутри приоритетного класса». Ситуация, представленная на рис.У 16,6, идентична ситуации ожидания механиками, приведенной иа рис. У16, а. Прибор обслуживает запрос второго типа (треугольник). Два других запроса типа 2 и один запрос типа 1 (кружок) ждут в очереди. Только тогда, когда высокоприоритетная часть очереди пуста, начнут обслуживать низкоприоритетные запросы. Постройте процедурную модель такой системы, обеспечив сбор статистики только для средней длины очереди. Проверьте логику работы модели и ее правильность с помощью нескольких детерминированных прогонов. После этого выполните моделирование в недетерминированном режиме и определите, действительно ли новая дисциплина обслуживания 31
обеспечивает уменьшение среднего числа механиков, находящихся в очереди. Каково должно быть ежедневное обслуживание при реализации приоритетного обслуживания в терминах стоимости потерь? Не включайте в потерн время, потраченное механиками на обслуживание, т. е. собственно обработку запросов. 1.7. Список литературы Работы, представленные ниже, рекомендуются для тех, кто пока не знаком с Литературой по моделированию дискретных систем- Многие нз этих работ содержат взаимные ссылки одна на другую. Приведенная ниже литература является хорошей базой для освоения предмета. А. Работы, затрагивающие различные аспекты моделирования. 1. Enuhoff, James R. and Roger L. Sisson. Design and Use of Computer Simulation Models (Macmillan, 1970). 2. Fishman, George S. Concepts and Methods In Discrete Event Digital Simulation (Wiley-lnter-sclence, 1973). 3. Gordon, Geoffrey. Systems Simulation (Prentice- Hall, 1969). 4. Malsel, Herbert, and Guliano Gnugoll. Simulation of Discrete Stochastic Systems (Science Research Associates, 1972). 5. Martin, Francis F. Computer Modeling and Simulation (John Wiley & Sons. 1968). 6. McMillan, Claude and Rlhard F. Gonzalez. Systems Analysis: A Computer Approach to Decision Models (Richard Dirwin, 1973). reved. 7. Meier, Robert С William Т. Newell and Harold L. Pazer. Simulation in Business and Economics (Prentice- Hail. 1968). 8. Mize, Joe H., and J. Grady Co. Essentials of Simulation (Prentice—Hall, 1968). 9. Naylor, Thomas H., Joseph L. Balintry, Donald S. Btirdick, and Kong Chu. Computer Simulation Techniques (John Wiley A Sons. 1966). 10. Naylor, Thomas H., ed., Computer Simulation Experiments with Models of Economic Systems (John Wiley & Sons. 1971). 11. Reltman, Julian. Computer Simulation Applications (John Wiley & Sons, 1971). 12. Schmidt, J. W., and R. E. Taylor. Simulation and Analysis of Industrial Systems (Richard D. Irwin, 1970). Б. Работы, посвященные проверке генераторов случайных чисел. 1. Chambera R. P. Random Number Generation. 1EE Spectrum, Volume 4, No. 2 (February, 1967, pp. 48—56). В этой статье вкратце рассмотрены вопросы генерации случайных чнсел и проверки генераторов. В ней есть интересное приложение «Линейность графиков случайных чисел». 2. Gorensteln, Samuel. Testing a Random Number Generator. Communications of the Association for Computing Mechinery. Volume 10, No. 2, (February, 1967. pp. Ill— 118). В статье проведен метод проверки для первых 10е чисел, выдаваемых генератором, используемым в GPSS III. 3. Knuth, Donald E., Random Numbers, in The Art of Computer Programming. Volume 2. Chapter 3 (Addison Wesley, 1969). Кнут Д. Искусство программирования на . ЭВМ. Пер. с аигл. М., Мир, Т. 2, 1977. В гл. 3 этой книги рассмотрены вопросы генерации случайных чисел. 4. Lewis, P. A. W.. Goodman A. S. and Miller J. M. A Pseudo-Random Number Generator for the System/360. «fBM Systems Journal. Volume 8. No. 2 (1969), pp. 136— 146. Статья представляет интерес для пользователей систем 360 и 370, в которых применены датчики случайных чисел. б. Reltman, Julian. Computer Simulation Applications (John Wiley & Sons, 1971). Книга РеЙтмана (см. также [А. 11 ]) посвящена вопросам проверки качества генераторов случайных чнсел и системе GPSS/360 (см. параграфы 2.33—2.37). В. Работы, затрагивающие прочие особенности моделирования 1. Bibliography on Simulation. IBM Corporation Form Number 320—0924 (1966). В данной библиографии содержатся рефераты и аннотации материалов, включенных в 75 журналов и книг, большинство из которых опубликовано в 1960—1964 гг., 948 статей, заметок и книг этой библиографии классифицированы по предметному признаку. 2. Management Science at Work. IBM Corporation. Form Number GC20—1741 (1971). Это специальный указатель почти 5000 журнальных статей и докладов конференций, посвищеииых аналитическим методам решения задач бизнеса, науки и техники. Моделирование — это один нз используемых методов, представленных в указателе- 3. Naylor, Thomas H. Simulation and Gaming. Bibliography 19. Computing Review's. Volume 10. No. 1, January, 1969, pp. 61—69. Это одна из последних больших библиографий, посвященных моделированию; ее постоянно корректирует (1974) проф. Т. Нейлор. Труды конференций 4. Proceedings of the Annual Simulation Symposiums (Annual Simulation Symposium, P. O. Box 22573, Tampa, Florida 33622). «Труды шестого симпозиума по моделированию» (март, 1973), «Труды пятого симпозиума по моделированию! (март, 1972) и т. д. до 1968 г. В каждой из этих сборников входят статья: по проблемам моделирования и его применения. 5. Proceedings of the Winter Simulation Conferences (AF1PS Press, Montevale, New, Jerse). «Труды зимней (1973) конференции по моделированию! (январь, 1973), «Зимняя конференция по проблемам моделирования» (январь, 1973), «Труды (1971) зимней конференции по проблемам моделировании» (декабрь, 1971), н т. д. &о отдельных статей, опубликованных после первой внмией конференции по проблемам моделирования (декабрь, 1967). Труды этих конференций содержат большое число статей по текущим проблемам теории и практики техники моделирования и ее применения. Принципиальные вопросы моделировании 6. Conway, Richard W. Some Tactical Problems la Digital Simulation. Management Science. Volume 10, N. 8 (October, 1963, pp. 47—61). 7. Klviat, Philip J. Digital Computer Simulation. Modeling Concepts. RAND Corporation Memorandum RM—5378—PR. 1967 [The RAND Corporation. Santt Monica, California). Это одна из серии руководств фирмы RAND Corporation, посвищеяных проблемам моделирования дискретных систем. Более детальная информация может быть изят* из «Библиографии избранных трудов фирмы RAND. Mo* i делнроаание вычислительных систем (SB-1042. февраль, 1973)». Языки моделирование 8. Klviat, Philip. J. Digital Computer' Simulation , Computer Programming Languages, RAND Corporation Memorandum RM-5883-PR, 1969 (The RAND Corpori- iton, Santa Monica, California). Это руководство является основой работы [А. 10].
9. Telchroew, Daniel, and John F. Lubln. Computer Simulation: Discussion of the Technique and Comparison of Languages. Communications of the Association for Computing Machinery. Volume 9, No. 10 (October, 1966; pp. 723—741). Вопросы статистики 10. Flshman, George S. and Philip J. Klvlat., Digital Computer Simulation: Statistical Considerations. RAND Corporation. Это руководство явилось основой для статьи Fish- man, George S. and KJviat Philip J. The Statistics of Discrete — Event Simulation, Simulation, Volume 10, N. 4, (April, 1968; pp. 185—196). 11. Flshman, George S. Digital Computer Simulation: Estimating Sampte Size. RAND Corporation Memorandum .RM-5866—PR, 1969 (The RAND Corporation, Santa Monica, California). 12. Flshman, George S. Output Analvsis for Queuing Simulations. Technical Report 56 (Health Services Research Program, Institution for Social and Policy Studies. Yale University. New Haven, Connectiout. April, 1972). 13. Neylor T. H., K. Wertz, and Т. Н. Wonnacott Methods of Analyzing Data from Computer Simulation Experiments. Communication of the Association for Computing Machinery. Volume 10, N. li (November. 1967; pp. 703— 710). - 14. Mlhram, G. Apthur, Simulation: Statistical Foundations and Methodology (Academic Press, 1972). Проверка правильности моделирования 15. Naylor, Т. H., and J. JVI. Finger. Verification of Computer Simulation. Models. Management Science, Volume 14, No. 2 (October, 1967; pp. B—92— B. 106). 16. Van Horn, Richard L. Validation of Simulation Results. Management Science. Volume 17, No. 5 (January, 1971. pp. 247—258). 1.8. Заключение В этой главе рассмотрены основные концепции создания моделей систем массового обслуживания на процедурном уровне. Параграфы главы касались лишь концептуальной стороны проблемы, а не реализации моделей на ЭВМ, хотя здесь и были предложены упражнения, подразумевающие использование ЭВМ. В частности, такими являются упражнения 10 (реализация на ЭВМ модели, представленной на рис. 1.9) и 11 (расширение модели рис. 1.9 для организации сбора основной статистики). Кроме того, должны быть разработаны программы для выполнения упражнений 14 и 16. Если все это было проделано, то: 1) пользователь смог сосредоточить свое внимание на деталях построения процедурной модели; 2) оценил трудоемкость, возникающую при необходимости собрать статистику (упражнение 11) или при необходимости ввести некоторую модификацию (упражнения 14 и 16); 3) оценил ту легкость и простоту, с которой все эти ситуации (и даже гораздо более сложные) могут быть описаны на GPSS; 4) подробности разработки будут способствовать хорошему пониманию поведения моделей, написанных на GPSS. Ясность модели на рис. 1.9 и упражнения дают возможность понять, какие средства не- 3 Т. Дж. ШраВбер обходимо включать в специализированный язык моделирования систем массового обслуживания. Этими средствами являются следующие. 1. Встроенные генераторы случайных чисел. 2. Средства, помогающие разыгрывать случайные числа, распределенные по хорошо известным законам распределения, таким как равномерное распределение целых чисел А ± В, экспоненциальное распределение, нормальный закон распределения (см. упражнения 4,в и 4,г) и др. 3. Средства, облегчающие задание эмпирических распределений и разыгрывания случайных чисел, распределенных в соответствии с ними (см. упражнение 2). 4. Встроенный таймер модельного времени. 5. Автоматическое выполнение некоторых логических операций, таких как проверка состояния очереди при завершении обслуживания на приборе, для определения наличия заявки, которую надо взять на обслуживание. 6. Автоматическое управление таймером, т. е. автоматическое продвижение таймера до времени возникновения ближайшего события. 7. Автоматическая передача управления в ту часть модели, которая содержит логическую схему обработки ближайшего события. ф.1 Возможность присвоения приоритетов определенным группам событий, с тем чтобы можно было регулировать последовательность обработки событий при возникновении временных узлов. (9.) Средства автоматического сбора статистических данных в тех местах модели, которые интересуют разработчика. Это необходимо, чтобы относительно легко можно было получать информацию о: а) статистических параметрах очереди, таких как максимальное число заявок, среднее число заявок, среднее время пребывания заявок и т. д.; б) использовании различных приборов в модели: время работы приборов в течение моделирования, степень использования каждого прибора, среднее время, потребовавшееся прибору для обслуживания заявки, и т..д. '10.") Возможность определения приоритетов различных групп заявок таким образом, чтобы можно было реализовать дисциплину обслуживания «первым пришел — первым обслужен внутри приоритетного уровня» (см. упражне- ние-Лб). {l_\.j Обеспечение возможности реализации дисциплины обслуживания, отличной or «первым пришел — первым обслужен внутри приоритетного уровня». 12. Автоматическая распечатка собранной статистики о поведении модели таким образом, чтобы по своему желанию разработчик мог избежать необходимости написания таких one-
раторов, как «печать», «формат» в качестве элементов модели. Мы тщательно рассмотрели приведенный выше список с тем, чтобы обеспечить хороший предварительный обзор тех средств, которые являются частью языка специального назначения GPSS. В самом деле, за исключением средств удобного определения экспоненциального и нормального распределений (так же как и других теоретических распределений), каждое из рассмотренных выше средств включено в GPSS. Это в значительной степени облегчает процедуру разработки моделей систем массового обслуживания. Например, для реализации алгоритма, представленного на рис. 1.8, требуется всего 12 операторов языка GPSS. Ни один из них в явном виде не содержит «логических проверок»; проверки, изображенные на рис. 1.9, выполняются в модели, построенной на GPSS, автоматически, поскольку являются общей частью всех моделей систем обслуживания. Более того, в эти же 12 операторов автоматически включается сбор и распечатка всех статистических данных об очереди и приборе, представленных на рис. 1.9, включая также статистические параметры, задаваемые упражнением 11. Процедурная модель, эквивалентная этой 12-операторной модели, будет содержать не меньше 60 операторов. Очевидно, что запись на GPSS очень компактна в смысле числа необходимых для записи операторов. Естественно, что вследствие этой компактности многие детали моделирования исчезают из поля зрения. Совершенно очевидно, что ввиду этих обстоятельств при разработке моделей требуется более тщательная проработка, чем это может показаться на первый взгляд. Теперь мы вплотную подошли к гл. 2 и к непосредственному изучению GPSS. Целью гл. 2 является проработка тех необходимых средств GPSS, которые требуются для моделирования такой простой системы, какой является система с одним прибором и очередью. Первый пример 2А в гл. 2 представляет собой GPSS — модель такой простой системы. Сразу за этой моделью рассмотрены элементы внутренней логики работы GPSS, и далее операции модели примера 2А интерпретированы в терминах рассмотренной внутренней логики. В книге приведено много примеров, для того, чтобы проследить основные концепции моделирования, их использование в GPSS, полностью описать примеры, демонстрирующие концепции и их использование в GPSS в наиболее значительном контексте. Разработчик получит достаточные сведения для моделирования с использованием GPSS, даже если он не дочитает книгу до конца.
2.1. Некоторые предварительные рассуждения GPSS (General Purpose Simulation System — общецелевая система моделирования) представляет собой язык и машинную программу. Как любой язык, он содержит словарь и грамматику, с помощью которых легко могут быть разработаны точные модели систем определенного типа. Машинная программа интерпретирует модель, налисанную на языке GPSS, предоставляя тем самым пользователю возможность проведения экспериментов с этой моделью на ЭВМ. Машинная программа, выполняющая такую интерпретацию, называется интерпретатором GPSS, или просто интерпретатором. Существует много версий GPSS. Это является следствием исторического развития моделирующих систем с конца 50-х — начала 60-х годов. Одними из ранних версий являются системы GPSS. GPSSII и GPSS11I. В настоящее время наиболее употребительной является система GPSS/360, названная так потому, что она может работать на семействе ЭВМ фирмы International Business Machine Системы/360 (и еистемы/370). Даже внутри GPSS/360 существует различие между версиями 1 и 2. Версия 1 jGPSS/360 предоставлена пользователям с 1967 г. без какой-либо дополнительной платы. Версия 2 реализована в конце 1969 г. и арендуется за 20 долларов в месяц. Позднее, в конце 1970 г. фирмой IBM был разработай расширенный вариант GPSS/360, названный GPSSV, сдаваемый в аренду по 55 долларов в месяц. В 1971 г. фирма IBM прекратила поставку системы GPSS/360 обеих версий. Это означает, что IBM прекратила поддержку и улучшение этих интерпретаторов GPSS. Наконец, в начале 1973 г. IBM исключила версии I и 2 из своей библиотеки. В результате больше не существует возможности получить от IBM версию 1 GPSS/360 или взять в аренду версию 2 GPSS/360. (Это означает также, что IBM не 3* Основные концепции моделирования на GPSS высылает более документацию по системе GPSS/360 обеих версий.) Конечно, те, кто уже имеет версию 1, могут ее использовать; могут даже копировать ее и передавать другим пользователям. Более того, те, кто арендует вторую версию 2, могут продолжать ею пользоваться. Можно ожидать, что, несмотря на новые разработки, версию 1 GPSS/360 будут продолжать эксплуатировать по крайней мере до конца 70-х годов. Такой прогноз сделан исходя из следующих причин. Во-первых, версия 1 очень широко распространена на многих вычислительных установках. Во-вторых, многим колледжам и университетам выгодно возможно более долгое время продолжать бесплатно пользоваться системой версии 1, если у них установлена ЭВМ Системы/360 или Системы/370, чем начинать платить за GPSSV. Наконец, язык GPSS/360 сам по себе является чрезвычайно полезным языком, поскольку его применяют не только ыа ЭВМ фирмы IBM (смотри предисловие). Ввиду этих обстоятельств, в данной книге будет рассмотрен только GPSS/360. К счастью, между версиями 1 и 2 и GPSSV существует совместимость «снизу вверх». Это означает, что тот, кто желает использовать любую из имеющихся сейчас систем GPSS, должен изучить материал, представленный в книге. В самом деле, после изучения основного подмножества 35
GPSS, представленного здесь, пользователь будет в состоянии работать с языком. Иначе говоря, пользователь будет в состоянии с пониманием читать и эффективно изучать документацию по другим вариантам системы GPSS. Он быстро достигнет желаемого уровня знания языка, какова бы ми была конкретная реализация системы. Сравнения систем GPSS/360 и GPSSV даны в приложении А, которое написано представительницей фирмы IBM Мэри Джейн Сортет. Оно представляет особый интерес для тех, кто хочет быстро получить ответ на вопрос, какие преимущества имеет GPSSV перед GPSS/360. Читатели могут также получить дополнительную литературу по этому предмету от фирмы IBM. Список литературы, имеющейся в фирме по GPSS, представлен в приложении Б. GPSS доступен также большому числу пользователей, работающих на аппаратуре, выпускаемой другими фирмами. Например, в течение 1971—1972 гг. в Северном отделении фирмы United Aircraft Corporation был разработан вариант системы GPSS, названный NGPSS/6000, предназначенный для нужд военно-морских сил Соединенных Штатов Америки. Как следует из названия этой разработки, она реализована для ЭВМ фирмы Control Data Corporation серии% 6000. Эксперименты с модифицированным вариантом GPSS начались в Северном отделении фирмы United Aircraft фактически в начале 1966 г. под руководством представителя фирмы Джулиана Рейтмана. Эта работа привела к реализации системы GPSS/360/NORDEN в конце 60-х — начале 70-х гг., а в 1973 г. ими была разработана система GPSS/NORDEN. Эта система работает в режиме разделения времени (режим работы, когда за счет скорости работы ЭВМ и совмещения работы ее устройств система делит время своей работы между несколькими одновременно работающими с ней пользователями, каждый из которых имеет свой выносной пульт) с использованием системы «National/CSS» (бывшее национальное программное обеспечение ЭВМ и систем). Система GPSS/NORDEN имеет такие свойства, как работа в диалоговом режиме, вывод результатов на текстовые дисплеи, хорошее использование основной памяти за счет построения программ с оверлейной структурой (структура программ, при которой планируется выполнение отдельных независимых моделей программ с их расположением на одних и тех же участках памяти), наличие улучшенного редактора выводимых сообщений и средств, помогающих использовать матрично- управляемые модели. В течение 1969 и 1970 гг. сотрудник фирмы University Computing Corporation (UCC) Кен Вейвер в Далласе адаптировал систему GPSS/360 для использования ее на ЭВМ UNIVAC-1108. Эту версию, называемую GPSS/UCC, используют в режиме удаленной пакетной обработки под управлением операционной системы фирмы UCC «Fastback». GPSS/UCC по своим языковым свойствам аналогичен GPSS/360 версии 2. Существуют и другие варианты систем GPSS, отличные от GPSS/360. GPSSV. NGPSS/6000, GPSS/NORDEN и GPSS/UCC. Автор не стремился каким-либо образом комментировать свойства этих систем или хотя бы всех их перечислить. Те, кому это интересно, могут найти необходимый материал по истории GPSS и ее современному состоянию п книге Stanley Greenberg, GPSS Primer (Wiley-Interscience, New York, 1972). 2.2. Методы создания моделей с использованием GPSS Модели систем на GPSS могут быть записаны в виде блок-схем или представлены в виде перфокарт, эквивалентных блок-схеме. Разработчик модели обычно начинает свою работу с построения блок-схемы системы, которую он собирается промоделировать. Затем он заказывает соответствующие перфокарты, которые далее использует для ввода в ЭВМ. Именно в процессе построения блок-схемы разработчик продумывает основные методы моделирования своей системы. После того, как блок-схема разработана, необходимо создать эквивалентную блок-схеме колоду перфокарт. Эта процедура является, как правило, чисто механической. Блок-схема представляет собой набор фигур с характерным очертанием блоков, соединенных между собой линиями. Разработчику моделей предоставляется набор более чем из 40 блоков. Вид каждого из этих блоков стандартен. Различие между видами блоков необходимо для того, чтобы легко было изучать блок-схемы моделей. Модель строится таким образом, что из допустимого множества блоков выбирают необходимые и далее их выстраивают в диаграмму, для того чтобы в процессе использования моделей они (т. е. машинные эквиваленты блоков моделей) как бы взаимодействовали друг с другом. Использование блоков при построение моделей зависит от логической схемы работы реальных систем, моделируемых на ЭВМ. После того, как модель создана, взаимодействие между блоками моделей аналогично взаимодействию элементов моделируемых реальных систем. Типичный для моделей на GPSS вид блок»1 схемы представлен на рис. 2.1. На этом рисунке- показано 13 различных блоков. Некоторые]
из них присутствуют на рисунке более чем один раз. Мы пока ие будет детально рассматривать способ записи тех или иных блоков. Наша цель — дать общий вид блок-схем, чтобы ими можно было пользоваться далее. В этой главе мы рассмотрим свойства основного подмножества блоков GPSS. Это подмножество выбрано таким образом, чтобы можно было создавать законченные, относительно простые модели систем на GPSS. В последующих главах книги будут даны остальные. блоки, их использование будет проиллюстрировано примерами. Чем больше видов блоков знает разработчик, тем более сложные системы он может строить. После того, как пользователь будет знать блоки всех видов, он может разрабатывать сложные модели, с использованием GPSS относительно легко и просто. 2.3. Динамические элементы моделей GPSS. Транзакты В гл. 1, для того чтобы показать пошаговое выполнение процедур, использовано символическое изображение передач управления в виде специальных фигур и линий. Управление передавалось от одного блока к другому (или от одного действия к другому). Выстроенные в диаграмму блоки (рис. 2.1) также означают некоторые продвижения по ней. Однако в GPSS концепция «передачи управления от блока к блоку» имеет специфические особенности и требует более подробного рассмотрения. Конфигурация блок-схемы GPSS-модели отражает направления, по которым происходит движение перемещающихся элементов. Каждый такой элемент называется транзактом. Транзакты являются динамическими (т. е. движущимися) элементами GPSS-модели. Работа GPSS-модели заключается в перемещении транзактов от блоков к блокам. В самом начале моделирования в GPSS-модели нет ни одного транзакта. В процессе моделирования транзакты входят в модель в определенные моменты времени в соответствии с теми логическими потребностями, которые возникают в моделируемой системе. Подобным же образом транзакты покидают модель в определенные моменты времени в зависимости от специфики моделирования. В общем случае в модели существует большое число транзактов, однако в один момент времени двигается только один транзакт. Если транзакт начал свое движение, он перемещается от блока к блоку по пути, предписанному блок-схемой. Каждый блок можно рассматривать как некоторую точку, в которой происходит обращение к подпрограмме. В тот момент, когда транзакт входит в блок, на ис-
полненне вызывается соответствующая подпрограмма, и далее транзакт (в общем случае) пытается войти в следующий блок. Такое продвижение транзакта продолжается до тех пор, пока не произойдет одно из следующих возможных событий: 1) транзакт входит в блок, функцией которого является задержка транзакта на некоторое определенное моделью время; 2) транзакт входит в некоторый блок, функцией которого является удаление транзакта из модели; 3) транзакт «пытается» войти в следующий блок в соответствии с предписанной блок-схемой логикой, однако блок «отказывается» принять этот транзакт. В этом случае транзакт остается в том блоке, в котором он в настоящее время находится. Позднее он будет повторять свою попытку войти в следующий блок. Когда условия в модели изменятся, одна из таких попыток может оказаться успешной.' После этого транзакт сможет продолжать свое перемещение в модели. Если возникло одно из описанных условий, транзакт остается на месте, и начинается перемещение в модели другого транзакта. (Порядок, в соответствии с которым транзакты должны выбираться для перемещения в моделях, будет пояснен далее.) Для нас сейчас важным является лишь то, что одни транзакты останавливаются, а другие начинают перемещаться. Таким образом, выполнение моделирования в системе продолжается. Напомним, что каждое успешное вхождение транзакта в блок вызывает обращение к соответствующей подпрограмме. Следовательно, выполнение модели заключается в последовательном обращении к подпрограммам, являющемся следствием входа в определенные блоки перемещающихся транзактов. Теперь у нас достаточно информации для того, чтобы вернуться к рассмотрению рис. 2. ]. Два блока на рис. 2.1 являются «конечными», т. е. блок-схема на этих блоках завершается, и из них нет выхода. Эти блоки являются точками вывода транзактов из модачей. На рисунке показаны два блока, которые являются источниками (ни одна из стрелок не ведет в эти блоки). Такие блоки являются точками, в которых транзакты появляются в модели. Отметим, наконец, что рис. 2.1 состоит из двух независимых сегментов (в общем случае, модель на GPSS может состоять из нескольких независимых сегментов). В процессе моделирования активным является тот из сегментов, в котором находится перемещающийся в настоящий момент транзакт. Когда он блокируется, начинает двигаться следующий транзакт, и может так случиться, что этот следующий транзакт принадлежит другому сегменту модели. Таким образом, происходит переключение активности между сегментами. Концепция независимых сегментов блок-схем является вполне пригодной для GPSS. До сих пор мы рассматривали транзакт абстрактно. Была сделана попытка ответить на вопрос «что такое транзакты?» Ничего не было сказано относительно следующего вопроса, возникающего параллельно с первым: «каково содержательное значение транзактов?» «Содержательное значение» транзактов определяет разработчик модели. Это сделано для того, чтобы последний мог установить некоторую аналогию между транзактами и реальными элементами моделируемой им системы. Такая аналогия никогда не указывается интерпретатором GPSS. Она присутствует только в памяти разработчика модели. В конце концов, любую модель строят в соответствии с аналогами, которые разработчик держит в памяти. Некоторые примеры возможных аналогий между транзактами и элементами реальных систем представлены в табл. 2.1. В модели парикмахерской, например, транзакты могут символизировать клиентов. В реальной системе клиент приходит в парикмахерскую, присоединяется к ожидающим в очереди клиентам, ждет пока очередь дойдет до него, его обслуживает парикмахер, и, наконец, он уходит из парикмахерской. Таблица 2.1. Примеры возможного соответствия между транзактами и элементами систем Системы Большой универсальный магазин Автомобильное шоссе Радиомастерская Склад Парикмахерская Элементы систем, символизируемые траиэакммя Покупатель Автомобиль Радиоприемники Заявка Клиент В понятие «клиент» мы вкладываем смысл движущейся единицы, попадающей на обслуживание в парикмахерскую. В модели парикмахерской на GPSS можно использовать различные блоки для обозначения таких элементов обслуживания, как приход клиента (вход транзакта), обслуживание клиента парикмахером, уход клиента из парикмахерской (уход транзакта) и т. д. Перемещение транзакта от блока к блоку в модели, таким образом, аналогично передвижению клиента в парикмахер-, ской от одной стадии к другой. Такую аналогию между транзактами и эле-' ментами реальных систем не закладывают; в язык GPSS, она остается в фокусе внимания разработчика моделей. 38
2.4. Таймер модельного времени Различные события реальных систем происходят в течение некоторого периода времени. Клиенты приходят в парикмахерскую; когда подходит их очередь, они попадают на обслуживание к парикмахеру. Стрижка заканчивается, и клиент покидает парикмахерскую. Если все эти события представить в модели, то их возникновение должно происходить на фоне модельного времени. Следовательно, интерпретатор GPSS должен автоматически обслуживать таймер модельного времени. •#Когда начинается моделирование, в интерпретаторе планируется приход первого тран- ,закта. После этого таймер модельного времени устанавливается в значение времени, соответствующее моменту появления первого транзита в модели. Этот транзакт (а также другие, если они приходят в тот же момент времени) входит в модель. Далее он (или они, друг за другом) продвигается через все возможные блоки модели, которые ему встречаются. Естественно, что в этот первый отмеченный таймером момент времени ничего более в системе не ■роисходит. Интерпретатор GPSS продвигает далее значение таймера до значения времени, когда происходит следующее (или следующие) событие, которое им запланировано. Эти события, возникающие как, следствие продвижения транзактов через блоки, возникают в последующие моменты времени. Когда в этот второй отмеченный таймером момент времени не остается транзакта, который надо перемещать, таймер опять продвигается, и т. д. Именно таким образом и происходит изменение модельного времени. Поясним это на примере, который численно даст некоторое представление об изменении времени в модели. Предположим, что в парикмахерской, где работает один парикмахер, первые несколько событий дня произошли так, как это представлено в табл. 2.2. При моделировании на GPSS интерпретатор будет работать с таймером следующим образом. В начале моделирования парикмахерская открывается. Ничего не происходит до наступления момента времени, равного 22. Таймер в нашем примере устанавливается в значение 22, приходит первый клиент (транзакт входит в модель). Он видит, что ему не надо ждать, и сразу идет к парикмахерскому креслу (транзакт продвигается вперед блок за блоком, пока не попадает в блок, который его задерживает, что соответствует времени стрижки). Далее никакие события не происходят до значения времени, равного 29. Таймер устанавливается в значение 29, проходит второй клиент (следующий транзакт входит в модель). Этот клиент должен подождать, пока Таблица 2.2. Пример последовательности события и парикмахерской с одним креслом Последовательность возникновения еобытяй 1 2 3 4 5 6 7 Событие Парикмахер открывает парикмахерскую Первый клиент приходит и сразу же идет на обслуживание Приходит второй клиент Приходит третий клиент Первый клиент обслужен Второй клиент идет на обслуживание Приходит четвертый клиент Фактическое время возникновении события 8 ч 00 мни (Утра) 8 ч 22 мин 8 ч 29 мин 8 ч 33 мин 8 ч 47 мнн 8 ч 47 мни 9 ч 07 мин Модельное время никновения события, иии 0 22 29 33 47 47 67 не освободится парикмахер (транзакт не получает разрешения на вход в блок, который символизирует при моделировании факт занятости парикмахера). В данный момент модельного времени больше ничего не происходит. Интерпретатор устанавливает значение таймера в 33, когда приходит третий клиент (еще один транзакт входит в модель), и т. д. Теперь ясно, каким образом с помощью таймера модельного времени отслеживается последовательность событий, которая происходит в модели. Одним из преимуществ системы GPSS является то, что таймер модельного времени корректируется автоматически в соответствии с логикой, предписанной моделью. Таким образом, разработчику нет необходимости самому следить за точным изменением времени, как это было в примере, представленном в гл. 1, где была описана система с одним обслуживающим прибором и очередью. [А I Рассмотрим некоторые важные особенности "GPSS ~й его таймера. 1. Таймер GPSS регистрирует целые значения. Это означает, что события могут возникать только в «целые» моменты времени. 2. Единицу времени, которая может быть отмечена таймером, определяет разработчик. Однако единицу времени никогда не сообщают интерпретатору. Это значение выражают в неявном виде в форме временных данных, вводимых в модель. Если все такие данные выражены в минутах, то подразумеваемой единицей времени будет минута. Если все данные выражены в миллисекундах, то такой единицей времени будет миллисекунда. Разработчик может задавать такую единицу времени, которая ему удобна для того, чтобы правильно отразить события реальной системы в модели. Он должен при этом следить за тем, чтобы все данные, 39
связанные со временем, были выражены через определенную минимальную единицу времени. В примере с парикмахерской, представленном в табл. 2.2, единицей времени является 1 мин. Это означает, что не может быть, например, чтобы клиент прибыл через 40 с после 8 ч 51 мин утра. Если необходимо задавать возникновение событий в модели с точностью до J с, то единицей времени должен быть интервал, не превышающий 1 с. 3. GPSS является интерпретатором для «следующего события». Иначе говоря, после того как модель полностью скорректирована в данный момент модельного времени, таймер продвигается к ближайшему значению времени, в которое происходит следующее событие (точнее, к следующему моменту времени, на которое запланировано возникновение события). Интервал модельного времени пропускается, если на этом интервале нет событий. Практически это означает, что время прогона модели не зависит от единицы времени, выбранной разработчиком. Определим, наконец, в чем же заключается различие между модельным и реальным временем. Когда значение таймера модельного времени продвигается в следующую точку, происходит некоторая задержка, для того чтобы скорректировать модель. В реальной же системе такого времени на корректировку не существует, Не исключено, что для моделирования только одной минуты модельного времени потребуется несколько часов реального времени (например, при моделировании вычислительных систем). С другой стороны, эксперименты, которые проводят в течение недель месяцев или даже лет модельного времени, могут занимать всего несколько секунд реального времени при моделировании иа ЭВМ. Такое свойство моделей, позволяющее как бы сжимать время, является одним из потенциальных преимуществ экспериментирования с системами с помощью моделирования их на ЭВМ. 2.5. Основные сведения о блоках, используемых в блок-схемах OPSS-моделей Блок-схема, представленная на рис. 2.1, изображена еще раз на рис. 2.2, где сами блоки заполнены некоторой детализирующей информацией. Эта информация может относиться к трем различным категориям. ■1. Местоположение. Каждый блок занимает вполне определенное место в блок-схеме. Это место может быть определено нумерацией. Первый блок модели занимает место 1, второй блок — место 2 и т. д. Вообще говоря, нет необходимости разработчику обеспечивать ну- GENERATE I I— Va.b.c.o.e.f.c А.В.С А/ X \В (BYBYE), ENTER k^ DEPART э PRIORITY В ADVANCE ДВ LEAVE FZ7 IBYBYE) < TERMINATE , G3 Рис. 2.2. Повторение рис. о блоках 2.1 [с указанием информации 40
мерацию блоков. Когда интерпретатор GPSS читает перфокарточный вариант модели, он сам присваивает номера, соответствующие месту карт, а значит и блоков, в модели. Часто нужно знать, какое место занимает тот или иной блок в модели. Это может оказаться необходимым для реализации ссылки из одного или более блоков на указанный блок. Для этого, казалось бы, необходимо перенумеровать заранее все блоки в модели. Однако вИесто того, чтобы нумеровать блоки, разработчику предоставляется возможность присвоить любому блоку символические имена. При использовании символических имен интерпретатор записывает абсолютные значения номеров вместо этих имен. Символические имена составляют из алфавитно-цифровых символов, причем их число не должно превышать пяти, к тому же первые три символа должны быть алфавитными. Примерами правильных и неправильных символических имен могут служить приведенные в табл. 2.3 имена. Таблица 2.3. Примеры правильных и иепрааильпых символических имей блоков Правильно BYPAS BLOK1 OUT JOE23 FL02M Неправильно BY25 2AND4 N0 А2В Р Обычно разработчик присваивает символ и-; ческое имя таким блокам, на которые есть ссылки не других частей модели. На рис. 2.2,. например, один из двух блоков, называемых. TERMINATE (ЗАВЕРШИТЬ), обозначен сим-' волнческим именем BYBYE. Символическое- имя записано непосредственно перед блоком, немного левее блока TERMINATE, и заключено в круглые скобки (скобки не являются частью имени). Посмотрим, каким образом имя BYBYE испольвуют для ссылки в другом блоке модели 1т. е. в блоке TEST (ПРОВЕРИТЬ)!. Имя BYBYE записывают над горизонтальной стрелкой, являющейся выходом из блока TEST, для индикации одного из направлений транзактов, входящих в блок и имеющих возможность альтернативного выхода в последующий блок. Другой выход из блока TEST показан вертикальной чертой, ведущей в блок QUEUE (СТАТЬ В ОЧЕРЕДЬ). Блок QUEUE является последователем блока TEST. Очень часто нет необходимости задавать символические имена блокам, если транзакты могут дви- . гаться только последовательно. Этим, например, объясняется, почему не существует имени ',у блока QUEUE. 2. Операции. Операциями блоков являются глаголы, описывающие основное функциональное назначение блоков. Каждый из блоков характеризуется своим собственным предписанным ему глаголом. На рис. 2.2 представ* лены операторы GENERATE (ГЕНЕРИРО-1 ВАТЬ), GATE (ВПУСТИТЬ), ASSIGN (HA-; ЗНАЧИТЬ), TEST (ПРОВЕРИТЬ), QUEUE1 (СТАТЬ В ОЧЕРЕДЬ), ENTER (ВОЙТИ), DEPART (ПОКИНУТЬ ОЧЕРЕДЬ), PRIORITY (НАЗНАЧИТЬ ПРИОРИТЕТ), ADVANCE (ЗАДЕРЖАТЬ), LEAVE (ВЫЙТИ), TERMINATE (ЗАВЕРШИТЬ), LOGIC (УСТАНОВИТЬ ЛОГИЧЕСКИЙ ПЕРЕКЛЮЧАТЕЛЬ), и SAVEVALUE (СОХРАНИТЬ ЗНАЧЕНИЕ). Прн подготовке перфокарточного варианта блок-схемы должны быть специфицированы каждый блок и его операция. [В большинстве случаев разрешается задавать сокращенное название операции путем записи первых четырех символов слова, обозначающего операцию. Например, вместо слова GENERATE (ГЕНЕРИРОВАТЬ) может быть записано слово GENE, вместо TERMINATE может быть записано TERM и т. д. Словами, которые не могут быть сокращены подобным образом, являются SAVEVALUE, START (НАЧАТЬ) и UNLINK (ВЫВЕСТИ ИЗ ЦЕПИ). В любом случае такая аббревиатура не является официально утвержденной, поэтому нет гарантии, что она будет допустимой в последующих реализациях интерпретатора GPSS. 1 Некоторые из блоков GPSS используют вспомогательные операторы, которые в общем случае обозначают буквой X". На рис. 2.2 символом X помечены блоки GATE, TEST, LOGIC. 3. Операнды. Блоки могут содержать различные связанные с ними операнды. Операнды блоков задают информацию, специфичную для действия данного блока. Под значениями операндов могут подразумеваться значения аргументов, используемых при обращениях к подпрограммам. Число операндов каждого блока зависит от типа блоков. Нн один из блоков не использует более семи операндов. Большинство из них использует один или два операнда. Операнды, в общем случае, обозначены символами А, В, С, D, E, F и G. Именно в таком общем виде операнды представлены на рис. 2.2. Одни операнды некоторых блоков должны быть специфицированы всегда, а другие могут задаваться или не задаваться. В некоторых случаях, когда операнды, задаваемые по выбору, в явном виде не заданы, интерпретатор предполагает значения этих операндов заданными по умолчанию. 41
2.6. Внесение транзактов в модель. Блок GENERATE (ГЕНЕРИРОВАТЬ) GENERATE —это блок, через который тран- зактытзходят в модель. Не существует ограничений: на число различных блоков GENERATE в одной модели. Интервал времени между последовательными появлениями транзактов блока GENERATE называют интервалом поступления. Концепция формирования интер- / валов поступления рассмотрена в гл. I, при создании соответствующей модели системы массового обслуживания. Способ реализации прихода транзактов в модель GPSS является идентичным тому способу, который изложен в модели при описании процесса прихода заявок (см. гл. I). Это означает, что когда транзакт входит в модель через блок GENERATE, интерпретатор планирует время поступления последователя транзакта путем розыгрыша случайного числа в соответствии с распределением интервалов времени поступления с последующим добавлением разыгранного значения к текущему значению таймера. При достижении этого значения времени следующий транзакт вводится в модель через блок GENERATE я т. д. В системе обслуживания, описанной в гл. 1, разработчик должен был построить логическую схему, необходимую для реализации процедуры плакирования. При использовании GPSS интерпретатор автоматически выполняет требуемые шаги для реализации блока GENERATE. Это дает возможность разработчику уделить больше внимания тем деталям моделирования, которые вызывают у него наибольшие трудности. Все разработчики должны задавать спецификацию распределения интервалов времени поступления в блоке GENERATE. Информация^ необходимая для данного блока, задается one-, рандами А и В. Все возможные видьТ распре-! деления интервалов времени прибытия в GPSSj делят на равномерно распределенные н acej другие виды распределения. Таким образом, специально рассматривают только простейшее из всех нетривиальных распределений, а именно равномерное распределение. Для того чтобы задать более сложный вид распределения интервалов времени прихода в GPSS, разработчик должен записать так называемое определение функции. Способ описания функций и их использование в блоках GENERATE будет подробно разобран в гл. 3. В данной главе будет рассмотрено только равномерное распределение интервалов прихода. Блок GENERATE вместе с операндами А и В изображен на рис. 2.3. Операнд А опре- GENERATE Рнс. 2.3. Блок GENERATE (ГЕНЕРИРОВАТЬ) с операндами At В: Операнд Л В Значение Средний интервал времени Половина поля допуска равномерно распределенного интервала Значение по умолчанию Ноль Ноль деляет среднее время между последовательными приходами транзактов в блоке GENERATE. Операнд В задает половину поля допуска (или половину размаха) интервалов времени прибытия. Когда операнды задают в виде констант, они должны быть неотрицательными целыми числами (способ использования операндов в виде, отличном от констаит, будет рассмотрен в начале гл. 3). В GPSS/360 существует только одни единственный блок (рассмотрен ниже), для которого разрешено использование десятичной точки в операнде. Во всех остальных случаях включение десятичной точки при использовании операндов ошибочно. На рис. 2.4 показан пример использования лока GENERATE. Операндами А и В являются соответственно 5 и 3. Интервалом времени прибытия, таким образом, является случайное число со средним значением, равным 5, и полем допуска, равным 6, т. е. интервал прихода может быть выражен целыми числами 2, 3, 4, 5, 6, 7 и 8. Напомним, что таймер GPSS регистрирует только целые значения, поэтому транзакты могут быть внесены в модель только в целые значения моментов времени. Это объясняет, почему запись 5 з= 3 описывает замкнутый интервал целых значений от 2 до 8, а не ' непрерывный интервал между 2 и 8. В данном примере интервалы прихода заявок могут принимать только одно из семи различных значений. Поскольку значения распределены равномерно, каждое из чисел может появляться 4 е относительной частотой 1/7. Для иллюстра<, ции планирования событий предположим, что транзакт входит в блок GENERATE, пред», GENEHATE Рис 2.4. Блок GENERATE (ГЕНЕРИРОВАТЬ) с конкретными значениями операндов А и В
GENERATE Рнс 2.5. Блок GENERATE с заданием по умолчанию операнда В ставленный иа рис. 2.4, в момент модельного времени 15. После того, как этот транзакт попадет в следующий блок модели, интерпретатор GPSS разыграет случайное значение времени из распределения интервалов времени, равного 5i3. Пусть разыгранным значением является число 7. Тогда интерпретатор планирует приход следующего транзакта в блок GENERATE в момент времени 15 + 7, или 22. В момент, когда этот траизакт появляется в блоке GENERATE и идет к следующему блоку, планируется время прихода его последователя. Эта техника аналогична той, которую использовали для планирования прихода заявок в системе обслуживания с одним прибором и очередью в гл. I. Операнды А и В в блоке GENERATE не обязательно должны быть заданы. Когда одно (или оба) из этих значений не указано, по умолчанию предполагается нулевое значение. На рис. 2.5 показано, как может быть задано значение операнда В для блока GENERATE по умолчанию. Операнд А -равен 10. Поскольку для В предполагается нулевое значение, то интервалы времени распределены равномерно в соответствии с записью 10 at 0. Иначе говоря, интервал времени прихода равен в точности 10. Это пример того, как может быть задано детерминированное (т. е. неслучайное) значение интервалов времени. Теперь мы рассмотрим еще три дополнительных "операнда. Они показаны в табл. 2.4. Операнд С используют для задания смещения интервалов. Смещение интервалов — это момент времени, в который в блоке GENERATE должен появиться первый транзакт. После этого первого прихода все остальные приходы заявок возникают в соответствии с распределением интервала времени, заданным операндами А и В. Операнд С разработчик может использовать как для ускорения, так и для за- Таблша 2.4. Значения операндов С, D и Е вюка GENERATE Опе- С D Е Значение 1 Значение по уиолчлиню Смещение интервалов Ограничитель Уровень приоритета Смещение отсутствует Бесконечность Ноль медления прихода первого транзакта или для указания прихода в желаемый момент времени. Когда операнд С не используется, все приходы в блок GENERATE определяются операндами А и В. Операнд D задает граничное значение общего числа транзактов, которые могут войти в модель через данный блок GENERATE в течение времени моделирования. Когда это число достигнуто, данный блок GENERATE перестанет быть активным. Если не определено граничное значение, блок GENERATE остается активным в течение всего времени моделирования. Операнд^Е устанавливает уровень или класс приоритета каждого из транзактов, входящих в модель через данный блок GENERATE. Всего при моделировании на GPSS существует 128 различных уровней приоритетов. Эти уровни задают с помощью чисел от 0 до 127. Чем больше число, тем выше приоритет. Следовательно, наименьшим приоритетом является ноль. Как показано в табл. 2.4, транзакту присваивается именно этот наименьший приоритет, если в блоке GENERATE не используется в явном виде операнд Е. На рис. 2.6 показаны примеры блоков GENERATE, в которых значения операндов С, D н Е указаны в явном виде. На рис. 2.6, а моментом первого прихода является значение 10. После этого интервалы времени прибытия находят из равномерного распределения 3 ± 3, иначе говоря, от 0 до 6 включительно. Однако только первые пять транзактов должны войти в модель через этот блок GENERATE. На рис. 2.6, б время первого прибытия задано числом 2. После этого приход новых транзактов будет осуществляться через каждые пять единиц времени. Иначе говоря, приходы будут происходить в моменты времени 2, 7, (SPAWN) GENERATE Г »> «> GENERATE .8.1...4 Рис. 2.6. Дополнительные примеры блока GENERATE: а — с операндами А — р: б — с заданными операндами А a d ё — с ааданнымн значениями операндов А, В и Е 43
12, 17, 22, 27 и т. д. Заметим, что две последовательно используемые запятые после операнда имеют следующий смысл. Поскольку никакое значение не использовано между двумя запятыми, значение операнда В не задано. По умолчанию этим значением является ноль, и, следовательно, мы имеем пример детерминированного задания интервалов. На рнс. 2.6, в все интервалы описаны записью 8 ^ 1. Нет никакого смещения интервала. Приходы транзактов будут продолжаться в течение всего времени моделирования, поскольку нет ограничителя. Каждый транзакт, внесенный в-модель через блок GENERATE, представленный на рис. 2.6, будет иметь уровень приоритета, равный 4, поскольку это специфицировано операндом Е. Обратите внимание на наличие трех запятых, последовательно записанных между операндами В и Е. Это означает, что по умолчанию заданы операнды С и D. Становится очевидным, что начинающий разработчик должен внимательно изучить все значения блока GENERATE перед тем, как приступить к разработке модели. Для облегчения этой процедуры в приложении L дана алфавитная распечатка всех описанных в данной книге блоков и показано, какую информацию определяет каждый из операндов этих блоков. Загляните в приложение L, прочтите указания об использовании фигурных и квадратных скобок и определите, являются операнды обязательными или нет. Теперь отыщите в приложении L блок GENERATE и прочтите описание операндов А, В, С, D и Е этого блока. 2.7. Упражнения 1. Запишите блок GENERATE, в который транзакты приходят через каждые 7±2 единицы времени в течение всего времени моделирования. Если время прихода третьего тран- эакта правно 21, то в какие моменты времени может придти четвертый транзакт? Какова вероятность того, что четвертый приход произойдет в момент времени 30? Какой уровень приоритета будет присваиваться транзактам, проходящим через блок GENERATE? 2. Запишите блок GENERATE, в который транзакты будут приходить: а) через каждые шесть единиц времени; б) через каждые шесть единиц времени, но первый транзакт должен придти в момент времени, равный 15; в) через каждые шесть единиц времени, но всего должно придти 10 транзактов. 3. Запишите блок GENERATE, использование которого вызовет приход транзактов через. 15 А 5 единиц времени: а) с уровнем приоритета, равным 0, GENERATE ^ 6.5 GENERATE I L \S,2 „-3 т Ряс. У5 Рнс. УС б) с уровнем приоритета, равным 9. 4. Интервалы времени блока GENERATE распределены равномерно и заданы целыми числами: а) 4, 5, 6, 7 н 8; запишите блок GENERATE, который работает именно таким образом; б) 4, 5, 6, 7, 8 и 9; можете ли вы записать блок GENERATE для таких чисел? (При изучении функций в гл. 3 будет показано, как решить эту задачу.) 5. При использовании блока GENERATE, представленного на рис. У5, во время прохождения этой модели через ЭВМ возникнет ошибка. Можите ли вы объяснить причину ее возникновения? 6. Почему блок GENERATE, представленный на рис. У6, неверен? 7. Почему блок GENERATE, приведенный на рнс. У7, неверен? Ряс. У7 8. На рис. У8, а все представлено верно, а на рис. У8, б неверно. Объясните почему. 9. Предположим, что модель на GPSS содержит только те блоки GENERATE, которые представлены на рис. У9. Представим также, что к моменту времени 20 из модели еще не вышел ни один транзакт. Какое число транзактов с уровнем приоритета, равным нулю, находится в модели в момент времени 20? Сколько таких транзактов с уровнем приоритета, равным 7? То же с уровнем приоритета, равным 13? 10. а). Предположим, что разработчик решает выбрать единицу времени в модели, соответствующую 1 мин реального времени. В какую-то GENERATE I L \UU2 GENERATE \U),12 L Рис. У8 44
Рис. У9 точку модели должны поступать транзакты, представленные с помощью равномерного распределения интервалов времени между значениями 3 и 6 мин. Чтобы реализовать задуманное, разработчик использует блок GENERATE, изображенный на рис. У10, а. В чем его ошибка? б). Обнаружив ошибку, разработчик решает сделать единицу времени, соответствующую 0,1 мин. Он модифицирует операнды блока GENERATE, результат модификации представлен на рис. У10, б. Сколько различных значений может принимать интервал времени прихода в этом случае? GENERATE I L М.5.1 5 Рис. У10 GENERATE U IS в) в). Позже разработчик решает, что ему нужна еще меньшая единица времени. Он выбирает в качестве такой единицы 1 с. Покажите, как надо записать теперь блок GENERATE. Сколько различных значений интервалов времени прихода будет реализовано в этом случае? 11. Транзакты должны входить в блок GENERATE каждые 0,6 =fc 0,2 дня. Укажите, какие значения должны принимать операнды А и В в блоке GENERATE, если выбранная единица времени равна: а) 0,1 дня, б) 1/5 дня; в) 0,3 ч, д) 0,1 ч. 2.8. Перфокарты, соответствующие блокам GPSS В параграфе 2.5 были описаны три типа информации, задаваемые в блоках. В соответствии с этой информацией существуют три поля, которые должны быть перенесены на перфокарту, представляющую данный блок. Колонки перфокарт, используемые для записи этих полей, представлены в табл. 2.5. Таблица 2.5. Поля перфокарты, в которые записывают информацию блоков Колонки карт 2—6 8-18 19—71 Информация блока Имя блока Операция Операнды Символическое имя (если оно задано) блока нужно перфорировать в последовательных колонках, но обязательно между колонками 2 и 6. Операцию блоков записывают, начиная с колонки 8. Операнды перфорируют в поле, начинающемся с колонки 19. Операнды следуют одни за другим, нх отделяют друг от друга запятыми. Между операндами не должно быть пробелов. Кодировка перфокарт на бланке имеет вид, представленный на рис. 2.7. Здесь представлены примеры блоков GENERATE, изображенных на рис. 2.6, а, б, в. Для кодирования используют специально разработанные фирмой IBM бланки. Отметим, что «поясняющие комментарии», представленные на рис. 2.7, начинаются (в данном случае)'от колонки 34. Такие if^M* J_l_ |J« 10, Il|«|l)[l4|lj|lf|l7|ll RENE В ATE OPERATION «.e.CO.E.F 3vA^b0lMi. ПЕРФОКАРТА ДЛЯ РИС. 2.6,a fc_j. j I -i_i-1 i i i i i i i ' i i i ■ ■ i I . -«-•-J SifAMffi _ bfJAfcK'A.TJL-Li- ini,A._iJ_i Lj_t j. ПЕРФОКАРТА ДЛЯ РИС I I L 2.6.6 i I i i i i-i. ' ' ' ■ ' ' ' ■ ■ ■ ' ■ ■ ' ■ 1 ^J-4- ^_l CEKEHATE, 'i,ili,i,i, ,4i i_j j_ ПЕРФОКАРТА I 1 ' I , !—1— для РИС 2.6 » l i l Рис. 2.7. Вид перфокарт, соответствующих блокам, представленным иа рис. 2.6 45
же комментарии могут быть перенесены и на перфокарты. Это допускается потому, что первая колонка, содержащая пробел в поле операндов, указывает на то, что операнды закончены и интерпретатор должен прекратить чтение перфокарты. Поясняющие комментарии могут быть записаны где-нибудь в конце каждой перфокарты для документирования моделей. Отметим, что колонка I не является частью поля имени. Если в этой колонке используется символ *, то интерпретатор игнорирует всю карту. Это дает еще большие возможности для документирования модели с помощью более длинных комментариев; это также позволяет оставлять пропуск между отдельными сегментами модели. Именно для этой цели используют «пустые карты» между примерами на рис. 2.7. В первом и третьем примерах на рис. 2.7 свободно поле имени. Это указывает на то, что на рис. 2.6, а, в в блоках GENERATE не используется символическое имя. Блок, изображенный на рис. 2.6, б, помечен символическим именем SPAWN, поэтому это имя записано, начиная с колонки 2 до колонки 6 (рис 2.7). 2.9. Удаление транзантов из модели. Блок TERMINATE (ЗАВЕРШИТЬ) Транзакты удаляются из модели, попадая в блок TERMINATE (ЗАВЕРШИТЬ). Блоки TERMINATE всегда позволяют выйти всем транзактам, которые пытаются это сделать. В модели может быть любое число блоков TERMINATE. X TERMINATE Q3 Рис. 2.8. Блок TERMINATE (ЗАВЕРШИТЬ) с операндом А На рис. 2.8 изображен блок TERMINATE с операндом А в обычной записи. Операнд А является указателем уменьшения счетчика завершений. Иначе говоря, он задает величину» которая должна вычитаться из специального счетчика, называемого счетчиком завершений, каждый раз, когда транзакт входит в блок TERMINATE. Если разработчик не желает' задавать операнд А блока TERMINATE, та по умолчанию подразумевается значение 0., Вход транзакта в такой блок TERMINATE не вызывает уменьшения содержания счетчика завершений. Что же такое счетчик завершений? Эта такая ячейка памяти ЭВМ, которая хранит положительное целое значение, записанное в начале моделирования. В процессе моделирования траизакты попадают в блоки TERMINATE, и таким образом происходит уменьшение содержания счетчика. При достижении содержанием счетчика нуля моделирование завершается. Обратите внимание на тот факт, что хотя в. модели может быть много блоков TERMINATE, счетчик завершений только один. Это и есть тот самый счетчик завершений, из которого происходит вычитание при вхождении транзакта в любой блок TERMINATE. Как уже указывалось, счетчик завершений содержит заданное значение в начале моделирования. Интерпретатор GPSS начинает моделирование, когда встречается управляющая карта START (НАЧАТЬ) в перфокарточном варианте модели. Для определения начального значения счетчика завершения используется операнд А карты START (рис. 2.9). Слово START записывается в поле операции перфокарты. Обычно операнд А записывается в колонке 19. В нижней части рис. 2.9 показан конкретный пример карты START, в которой операнд А принимает единичное значение. Рассмотрим теперь пример, в котором блок TERMINATE и карта START используются для управления процессом моделирования. Предположим, что разработчик выбрал в качестве единицы времени 1 мин. Он хочет промоделировать поведение системы в течение 8 ч, затем моделирование должно быть закончено. Он сможет сделать это следующим образом. 1. В модель включают сегмент из двух блоков, изображенных на рис. 2.10. LOCATION OPtHA-iON »,e,C.0,t.F йтШда »1гэ|г| 11г!1*1г« |г^4л«|>1|гв^*|1о|з<1>^[^; J5<!»|iet jTf^ATL^'arU^UUa^U^'^i r J4>U4t,oj^i )мЬл(>*(»ъ,'а»|^г|1*кч1ьо1 I i i , I SXAJLTi^ . SJAJLT x_u^_ -1 1 I I I 1—L- I* ,• КАРТА , I START -1 I I—L-i—f~l—t_L *—i- 1 L , КАРТА I I I I I I I I I С ОПЕРАНДОМ A. -ui_ I I I i I _L_J_4- I 1 J 1 J _| I 1 I 1-J _f_4_l—1—J I | ■ ' - f | START , , | С ОПЕРАНДОМ А. РАВНЫМ I i I I -i—i- i i | i u i- Pjic. 2.9. Формат карты START (НАЧАТЬ) 46
2. Во всех прочих блоках TERMINATE в модели подразумевается использование операнда А по умолчанию. Это означает, что завершение моделирования, определяемое счетчиком завершений, не будет зависеть от других блоков TERMINATE. 3. В карте START в качестве операнда А должна быть использована единица. Единичное значение операнда А карты START вызывает запись в счетчик завершений интерпретатора единицы в качестве начального значения. В процессе моделирования завершения движений транзактов, которые происходят время от времени в других блоках TERMINATE, не оказывают воздействия на счетчик завершений. Следовательно, в момент модельного времени, равный 480, транзакт попадет в блок GENERATE, изображенный на рис. 2.10. Он сразу же перейдет в следующий блок TERMINATE, вызывая тем самым подпрограмму TERMINATE. Поскольку операнд этого блока содержит единицу, то из счетчика завершений вычитается единица. Это уменьшает значение счетчика от единицы до нуля. В результате интерпретатор прекращает моделирование. Такой способ использования счетчика завершений может показаться несколько странным для управления моделированием. Тем не менее только этот способ управления продолжительностью моделирования на GPSS доступен разработчику. Теперь предположим, что для выполнения действий, описанных в предшествующем примере, разрабочик использует следующее: 1) он вставляет в модель двухблочный сегмент, изображенный на рис. 2.11; 2) во всех прочих блоках TERMINATE модели подразумевается использование операнда А по умолчанию; 3) в качестве операнда А карты START используется число 480. GENERATE \480_ L X Z) TERMINATE LP Рис. 2.10. Сегмент из двух блоков, обеспечивающий завершение моделирования в момент недельного времени, равный 480 (выполнение двух других условий подразумевается) Рис 2.11. Другой вид сегмента из двух блоков, вызывающий завершение моделирования в момент времени, равный 480 (выполнение двух других условий подразумевается) Заметим, что в блоке GENERATE (рис. 2.11) в качестве интервала времени задана единица. Иначе говоря, транзакты появляются здесь в моменты времени 1, 2, 3, 4, .. 478, 479 и 480. Каждый из этих транзактов попадает в последующий блок TERMINATE, где из- счетчика завершений вычитается единица при удалении транзакта. Когда в блок TERMINATE войдет 480-й транзакт, значение счетчика завершений уже будет равно единице. 480-й транзакт вызывает уменьшение его от единицы до нуля, и моделирование завершается. Метод завершения моделирования, представленный в первом примере, является более предпочтительным, хотя в логическом смысле они равнозначны, так как последний пример требует 480 выполнений обработки блоков GENERATE и TERMINATE. Так как обработка каждого блока требует времени ЭВМ, то последний пример по крайней мере в 480 раз дороже предыдущего. При втором способе завершения моделирования интерпретатор GPSS пройдет все фиксированные моменты времени, поскольку таймер должен принимать значения 1, 2, 3, 4, ..., 478, 479 и 480 нз-за того, что транзакты входят в модель через блок GENERATE, изображенный на рис. 2.11. Это в значительной степени увеличивает число приращений значений времени к таймеру в процессе моделирования, что способствует еще большему увеличению времени моделирования. 2.10. Упражнения Во всех этих упражнениях подразумевается, что все блоки TERMINATE, кроме изображенных, в качестве параметров А имеют нулевое значение. 1. Сегмент, состоящий нз двух блоков, изображенный на рис. У1, используется в качестве «часов» в модели GPSS. В поле операнда карту START записано число 8. В какой момент времени завершится моделирование? 2. Предположим, что операнд А на рис. У1 блока GENERATE изменяется на 70, а все прочие условия моделирования остаются теми же. В какой момент времени в этом случае завершится моделирование? GENERATE 60 TERMlNATI Рис. У1 47
GENERATE GENERATE J X TERMINATE TERMINATE Рис. У4 3. Предположим, что операнд А карты START в упражнении J заменяется на 3, а все прочие условия остаются прежними. В какой момент времени интерпретатор завершит моделирование? Какое будет окончательное значение считчика завершений в этом случае? 4. Для управления процессом моделирования разработчик использует два двухблочных сегмента модели, которые изображены на рис. У4. Если используется карта START со значением операнда А, равным 25, когда завершится моделирование? Является ли окончательное значение счетчика завершений 0 или — 1? Поясните ответ. 2.11. Элементы, еммволирующме обслуживающие приборы Рассмотрим теперь, какие элементы можно использовать для представления собственно обслуживания. Такими элементами могут быть либо человек, либо какой-то предмет. Напри» мер, людьми, производящими обслуживание, являются: парикмахер, заправщик на бензоколонке, водопроводчик, страховой агент, плотник. Подобным образом, предметами, которые могут обслуживать, являются: перфоратор, авторучка, стоянка автомобилей, театральный бинокль, подъемный кран. Независимо от того, люди это или предметы, подобные элементы мы будем называть приборами. Приборы характеризуются двумя основными свойствами. I. Каждый прибор в любой момент времени может обслуживать только одно требование. Если в процессе обслуживания появляется новое требование, то оно должно либо подождать своей очереди обслуживания, либо пойти куда- нибудь в другое место. (Существует также третья возможность. Если новое требование является достаточно важным, оно может прервать протекающее обслуживание до его завершения. Такое средство прерывания также можно моделировать на GPSS. Возможности для этого будут рассмотрены в гл. 7). 2. Когда на прибор поступает требование в модели, надо пропустить время, необходимое , для его обслуживания. Такое время называется временем обслуживания. Поскольку в различных точках системы может быть много приборов, для различия между ними приборам могут быть даны имена. Имена задает разработчик модели. Имена могут быть либо числовыми, либо символическими. Если приборам присваивают числовые имена, числа должны быть положительными целыми. Наибольшим разрешенным номером является максимальное число приборов, допустимое в модели. Это число зависит от объема памяти, доступной этой модели. Например, в GPSS/360 таким числом приборов при использовании памяти на 64К байт (т. е. 64 000 байт) является 35; при использовании 128К байт— 150; при использовании 256К байт — 300. Следовательно, при моделировании с памятью G4K, наибольший допустимый номер прибора не должен превышать 35. В приложении F показано допустимое число различных элементов GPSS. Если приборам присваивают символические имена, то для образования этих имен используют те же правила, что и для составлений символических имен блоков. Как было указано! ранее, символические имена состоят из трех— пяти алфавитно-цифровых символов, первыми тремя символами должны быть буквы. Примеры составления правильных и неправильных символ лических я числовых имен приведены в табл. 2.6J Таблица 2.6. Примеры правильных и неправильных имен приборов Правильно GRANE 26 CPU SURVR 1 Неправильно IT 26KEY OS —5 91528 В параграфе 2.3 было указано, что для ToroJ чтобы символизировать некоторые элемента реальных систем, используется абстрактная концепция транзактов. Такую же концепция используют и для приборов. Разработчик может установить, например, что прибор 9 символе! зирует рабочего из мастерской, а прибор! названный CPU, можно использовать для ощ значения центрального процессора вычисли* тельной системы, и т. д. Процесс создания анм логий между абстракциями GPSS 11 их эквш валентами в реальных системах является эл« ментом моделирования на языке GPSS. 48
2.12. Занятие свободных приборов. Блоки SEIZE (ЗАНЯТЬ) и RELEASE (ОСВОБОДИТЬ) Предположим, что мы хотим использовать прибор. При этом мы должны выполнить следующие шаги. 1."Ожидаем своей очереди, если это необходимо. Естественно, что ожидание требует некоторого интервала времени. 2. Когда подходит наша очередь, занимаем , прибор. Событие «занятие прибора» происходит в некоторой точке времени. 3. Прибор остается в состоянии занятости, пока не закончится обслуживание. Для обслуживания требуется также некоторый интервал времени. 4. Когда обслуживание заканчивается, мы освобождаем прибор. Событие «освобождение шрибора» также происходит в некоторой точке времени. Подобная последовательность шагов выполняется и при моделировании использования прибора в GPSS. Реализация шагов 2 и 4 в GPSS будет рассмотрена нами сейчас; реализация шага 3 и возможности сбора статистики при выполнении шага 1 будут рассмотрены в следующих параграфах. В GPSS элементами, которые требуют обслуживания, являются транзакты. Мы знаем, что для траизактов характерно перемещение по модели блок за блоком. Предположим, что а какой-то момент активности транзакт занимает прибор. Для этого транзакт входит (или пытается войти) в соответствующий блок, описывающий этот прибор Блок должен обладать следующими .свойствами. i 1. Если прибор уже используют, транзакт . не может войти в блок, т. е. ему не разрешается . занять прибор в данный момент времени, н он 'должен ждать в очереди. Такой запрет на вход | в блок приводит к тому, что транзакт на время исключается из рассмотрения. 2. Если прибор не используют, транзакт «ожег войти в блок. Вход транзакта в блок i вызывает выполнение подпрограммы обработки этого блока. Результатом выполнения подпрограммы является изменение статуса прибора i нз «незанято» в «занято». Блок, который обладает этими свойствами, является блоком SEIZE (ЗАНЯТЬ). Этот блок вместе с операндом А показан на рас. 2.12. Вход транзакта в блок SEIZE моделирует занятне прибора, вход того же транзакта в другой блок моделирует освобождение прибора. Назначением этого другого блока является изменение состояния ранее занятого прибора с «занято» в «незанято». Этим блоком Рис 2.12. Операнд Л Блок SEIZE (ЗАНЯТЬ) и его операнд Зоачеяне Ичя (символическое или числовое) занимаемого прибора А: Результат по умолчанию Ошибка является блок RELEASE (ОСВОБОДИТЬ), который с операндом А показан на рис. 2.13. B^jok_REJUEASE никогда не запрещает вход транзакта. В то же время было бы не логично' пытаться освободить свободный прибор. Если делается такая попытка, то интерпретатор GPSS печатает сообщение об ошибке и прекращает выполнение моделирования (в приложении С дан полный список сообщений об ошибках системы GPSS/360). Подобным же образом, если транзакт пытается освободить прибор, занятый другим транзактом, печатается сообщение об ошибке и прекращается моделирование. При моделировании нет необходимости определять соответствующий прибор для интерпретатора GPSS перед тем, как использовать блок SEIZE. Тот факт, что блок SEIZE используется, вызывает установление факта существования данного прибора. Здесь можно напомнить, что когда мы обсуждали вопрос появления транзакта, ничего не было сказано о необходимости указания интерпретатору на его существование до тех пор, пока транзакт не входил в модель. Короче говоря, интерпретатор автоматически обеспечивает возникновение транзактов и приборов (и прочих элементов GPSS, пока еще RELEASE " IV Рис. 2.13. Блок RELEASE (ОСВОБОДИТЬ) н его операнд А: Операнд Л Значение Имя (символическое или чмелоао") освобождаемого прибора Результат по уиол- чанню Ошибка 4 Т. Дж. Шрайбер 49
ГОРИЗОНТАЛЬНАЯ RELEASE f7 ось Рис. 2.14. Блок и SEIZE и RELEASE в зеркальном отражении не рассматривавшихся), когда этого требует логика модели. В то время как транзакты существуют в модели временно, приборы, используемые в модели, существуют в течение всего периода моделирования. При моделировании прибора нужно собирать информацию, описывающую работу прибора в модели. Например, важны ответы на следующие вопросы. •' I. Какую часть времени прибор был занят? ; 2. Сколько раз прибор был занят? , 3. Каков средний интервал времени занятости прибора? Одним из замечательных свойств языка GPSS является то, что ответы на подобные вопросы распечатываются автоматически по каждому из приборов модели. Эти ответы, или статистические данные, распечатываются интерпретатором в конце моделирования. В заключение заметим, что события «занятие прибора» и «освобождение прибора» являются взаимодополняющими. Последнее событие является реверсивным по отношению к предыдущему. Счедовательно, блоки SEIZE и RELEASE дополняют друг друга. В GPSS существует много других взаимодополняющих блоков. Один из элементов пары всегда имеет обратное воздействие или реверсирует эффект воздействия первого элемента пары. В большинстве случаев можно сказать, что действие взаимодополняющих блоков является зеркальным отражением другого блока относительно горизонтальной оси. Это позволяет легко запомнить начертание блока. На рис. 2.14 показаны блоки SEIZE и RELEASE в таком зеркальном отражении. 2.13. Реализация задержки во времени. Блок ADVANCE (ЗАДЕРЖАТЬ) Предположим, что транзакт только что вошел в блок SEIZE, т. е. занял прибор. После выполнения соответствующей подпрограммы для данного блока интерпретатор сразу же пытается продвинуть транзакт в следующий последовательный блок модели. Существует мало ограничений на то, каким должен быть этот блок. Это, например, может быть другой блок SEIZE, описывающий другой прибор. Так делается, если необходимо, например, выполнить операцию с одновременным занятием и рабочего и какого-либо инструмента для выполнения определенного вида обслуживания. Если рабочий и инструмент моделируются некоторой парой приборов, то транзакт одновременно должен занять оба эти прибора, прежде чем может быть начато обслуживание. Обычно транзакт занимает прибор для того, чтобы немедленно начать иа нем обслуживание. В параграфе 2.12 было указано, что обслуживание длится некоторый период времени. В течение этого времени транзакт должен прекратить двигаться по модели. Только по истечении времени обслуживания он должен попасть в блок RELEASE для освобождения прибора. В GPSS существует блок ADVANCE (ЗАДЕРЖАТЬ) для реализации задержки продвижения транзакта в течение некоторого интервала времени. Обычно этот интервал за- двется случайной переменной. Опыт показывает, что время обслуживания обычно меняется от одного обслуживания к другому. Информация, необходимая для описания соответствующего времени обслуживания и его ^распределения^ задается операндами А и В Гблоха ADVAJnCE. Возможные варианты pac> определения времени обслуживания делятся на ^две категории: равномерное распределение интервала обслуживания; прочие распределения [интервалов обслуживания. Как и при использовании блока GENERATEJ особо рассматривается равномерное распределение. Применение более сложных видов распределения требует использования функций Поскольку описание функций отложено д< следующей главы, здесь мы будем рассматрн ватъ только равномерное распределение. На рис. 2.15 показан блок ADVANCE вмест с операндами А и В. Как и ранее, операнд 1 используют для определения среднего времени которое транзакт, входящий в блок, проведе в нем. Операнд В используют для указанш половины поля допуска. W На рис. 2.16 показан блок ADVANCE значениями операндов А и В, равными 30 и соответственно. Для каждого транзакта, вх< дящего в этот блок, возможные значения интс] валов времени находятся в пределах 25 включительно. Предположим, что транзакт вх* дит в блок в момент времени, равный Г а разыгранным значением из распределена 30 ± 5 является 31. Тогда транзакт будет ос ваться в этом блоке до момента времени, pai ного 134 -f- 31, или J65. В этот момент интерпр татор попытается продвинуть его в следую! блок модели. Блок ADVANCE никогда не пр< 50
ADVANCE A.B Рис. 2.15. Блок ADVANCE (ЗАДЕРЖАТЬ) с операндами А н В: Операнд Л В Значение Задержка на время обслуживания Полоанна поля допуска равномерно распределенного интервала времени задержки Значение по умолчанию Ноль Моль пятствует входу транзакта. Любое число транз- актов может находиться в этом блоке одновременно. Когда транзакт попадает в такой блок, выполняется соответствующая подпрограмма и вычисляется время пребывания транзакта в нем. Вновь прибывший транзакт никак не влияет на уже находящийся в блоке транзакт. В зависимости от значений операндов А и В блока ADVANCE может так случиться, что время пребывания транзакта в блоке окажется равным нулю. Например, в блоке ADVANCE 12,12 время пребывания в блоке, равное нолю, может возникать в 4% всех случаев. Когда это происходит, вместо задержки транзакта в блоке ADVANCE интерпретатор сразу же пытается переместить этот транзакт в следующий блок. Иногда, если это удобно, можно использовать/ блок ADVANCE в качестве «фиктивного» блока.' Этого можно добиться, не указывая значения! операндов блока. При этом обеспечивается нулевое значение задержки по умолчанию. Позднее мы рассмотрим ситуации, когда это необходимо сделать. \<\ Классический случай использования последовательности SEIZE — ADVANCE — RELEASE показан на рис. 2Л7. Транзакт, двигающийся по этой цепочке, займет устройство с символическим именем JOE, задержится там на 16 =£ 4 единицы времени и затем покинет его. После того, как транзакт войдет в блок RELEASE и соответствующая подпрограмма закончится, интерпретатор попытается про- AOVANCE 30.5 Рас. 2.16. Блок ADVANCE с конкретными значениями операндов А и В Рис. 2.17. Пример последовательности SEIZE — ADVANCE—RELEASE (ЗАНЯТЬ—ЗАДЕРЖАТЬ-ОСВОБОДИТЬ) двинуть транзакт в следующий блок модели. В момент, когда закончится обработка программы RELEASE, следующий транзакт попытается использовать устройство, называемое JOE. Из рис. 2.17 вовсе не следует, что блоки ADVANCE можно располагать только после блоков SEIZE или оии должны предшествовать блокам RELEASE. Блоки ADVANCE можно располагать в любых местах моделей. Выбор места зависит от логических условий моделирования. 2.14. Ожидание обслуживания: где и при каких условиях происходит ожидание транзакта Предположим, что транзакт прибывает в сегмент модели, изображенный на рис. 2.17, и обнаруживает, что устройство, называемое JOE, находится в состоянии занятости. В связи с этим возникают два вопроса. 1. Где транзакт ожидает освобождения прибора? 2. Если два или более транзактов ожидают освобождения блока, то, когда он свободится, какой из ожидающих транзактов займет прибор? Ответ на первый вопрос станет очевидным, если вспомнить, что транзакт находится в некотором другом блоке, из которого он пытается войти в блок SEIZE. E^_hj6jiojk SEIZE отказывает транзакту во входе, то ои ожидает в этом другом блоке. Вспомним, что когда транзакт проходит через блок, происходят следующие события: 1) обрабатывается соответствующая 51
подпрограмма в момент входа транзакта в блок и 2) интерпретатор пытается продвинуть траиз- акт в следующий блок. Вполне возможно, что транзакт задерживается в блоке после того, как обработана подпрограмма. Этот тип входа с оставлением транзакта в блоке является вынужденным; транзакт предпочитает двигаться дальше по модели, если этому ие противоречат условия моделирования. Сравните эту ситуацию с добровольным пребыванием транзакта в блоке ADVANCE. Отвег на второй вопрос касается дисциплины обслуживания очереди. Дисциплиной обслуживания очереди является правило, в соответствии с которым прибор выбирает на обслуживание следующий транзакт, если таких транз- актов больше, чем один. В обычном режиме мы используем дисциплину обслуживания «первым пришел — первым обслужен». Тот, кто ждет дольше других, будет первым. Эту дисциплину обслуживания используют в GPSS по умолчанию. На самом деле дисциплина обслуживания, используемая по умолчанию в GPSS, является более сложной,' чем «первым пришел — первым обслужен»; ее реализуют только для транзактов одного класса приоритетов. В параграфе 2.6 указано, что транзакту присваивается некоторый приоритет. Уровень приоритета ожидающих транзактов автоматически учитывается интерпретатором при выборе иа обслуживание. В примере, следующем далее (пример 2С), показано, как используют эту дисциплину обслуживания. 2. 16. Сбор статистики при ожидании. Блоки QUEUE (СТАТЬ В ОЧЕРЕДЬ) и DEPART (ПОКИНУТЬ ОЧЕРЕДЬ) Блоки QUEUE (СТАТЬ В ОЧЕРЕДЬ) и DEPART (ПОКИНУТЬ ОЧЕРЕДЬ) обеспечивают в GPSS возможность автоматического сбора статистических данных, описывающих вынужденное ожидание, которое может происходить время от времени в различных точках модели. В первой части этого параграфа описаны блоки, предназначенные для реализации такой возможности. Далее описаны редко используемые возможности этих блоков. В конце прокомментированы два неверных представле- ния о процессе сбора статистики. 2.15.1. Принципы использования блоков QUEUE и DEPART В любых системах массового обслуживания число ресурсов ограничено. Это означает, что не всегда можно немедленно предоставить ресурс при каждом требовании на его использование. В парикмахерской, например, таким ограниченным ресурсом является сам парикмахер. Если он занят в момент прихода клиента, то последний вынужден ждать своей очереди. В действительности, ожидающие обслуживания требования всегда составляют очередь, что дало основание называть такие системы системами с очередями (системами массового обслуживания). ( Воспользуемся собственным опытом при '.использовании ограниченного ресурса и рассмотрим, какие события при этом происходят. 1. Присоединяемся к очереди, т. е. образуем с другими требованиями группу «ожидающих обслуживания». Присоединение к очереди происходит в некоторый момент времени. 2. Ждем своей очереди. Ожидание происходит в течение некоторого интервала времени. 3. Покидаем очередь. Уход из очереди происходит в некоторый момент времени. ) Очень часто бывает необходимо собрать статистику, описывающую особенности протекания I процесса. Эта статистика должна дать ответ иа : следующие вопросы. 1. Сколько раз требования приходили в очередь? i 2. Сколько пришедших требований фактически присоединилось к очереди и сколько сразу заняли прибор? 3. Каково было максимальное значение длины очереди? 4. Каково было среднее число ожидающих требований? ■ 5. Каково среднее время ожидания тех тре- юований, которым пришлось ждать? Специализированный язык, разработанный для моделирования систем массового обслуживания, должен иметь средства сбора такого рода статистической информации. GPSS обеспечивает такую возможность с помощью средства, называемого регистратором очереди. При_ис- пользовании разработчиком регистратора очереди в тех точках модели, где число ресурсов ограничено, интерпретатор начинает автоматически собирать статистику, описывающую ожидание (если оно есть), возникающее в этих точках. Регистратор очереди во многих отношениях подобен такому элементу моделирования, как прибор. Как и при использовании приборов, в модели может быть несколько различных регистраторов очередей. При использовании регистраторов очередей в точках, где возможно ожидание, собирается статистика, описывающая поведение очереди в соответствующей точке модели. Регистраторы очередей различают заданием ииетгг Условия назначения имён те же, что н условия назначения имен приборов. Имена могут быть числовыми или символическими. Если 52
они числовые, то числа должны быть целыми и положительными. Наибольший номер, используемый в модели, должен быть равным максимальному числу регистраторов в модели. (Как и при использовании приборов, максимальное число регистраторов очередей, допустимое при моделировании, зависит от объема используемой памяти. В приложении F указано, что максимальное число регистраторов очередей равно 70, 150 и 300 для 64К, 128К и 256К байт памяти соответственно). Если имя символическое, оно должно содержать от трех до пяти алфавитно-цифровых символов, причем первые три символа должны быть алфавитными. Разработчик вносит регистратор очереди в модель с помощью пары взаимодополняющих блоков-. Такой парой являются блоки, моделирующие упомянутые выше события 1 и 3. Когда транзакт входит в первый из этих блоков, моделируется событие «присоединение к очереди». Подобным образом, когда траизакт входит во второй из них, моделируется событие «уход из очереди». Блоками, соответствующими событиям «присоединение» и «уход», соответственно являются QUEUE (СТАТЬ В ОЧЕРЕДЬ) и DEPART (ПОКИНУТЬ ОЧЕРЕДЬ). Эти два блока вместе с операндом А показаны яа рис. 2.18. Операнд А используют в блоках QUEUE/ и DEPART для указания имени соответству-' ющей очереди. При входе траизакта в блок QUEUE выполняется обработка соответству-, ющей подпрограммы, включающей следу-, ющие четыре действия. 1. «Счетчик входов» для данной очереди увеличивается иа единицу. 2. Запись «счетчика текущего содержимого» для данной очереди также увеличивается на единицу. 3. Транзакт «привязывается» к очереди указанием ее имени. 4. Транзакт «привязывается» к очереди с запоминанием значения текущего модельного времени. QUEUE 3 OEPART э Рис. 2.18. Блоки QUEUE (СТАТЬ В ОЧЕРЕДЬ) н DEPART (ПОКИНУТЬ ОЧЕРЕДЬ) с операндами А: Операнд Л Значение Ими (символическое или числом») очереди, к которой необходимо присоединиться клн которую надо покинуть Значение по умолчанию Ошибка Когда транзакт присоединяется к очереди, устанавливается факт привязки траизакта. В этом смысле информация, указывающая, что конкретный транзакт является элементом очереди, приписывается самому транзакту. Транзакт перестает быть элементом очереди только тогда, когда он переходит в блок DEPART соответствующей очереди. Когда это происходит, интерпретатор выполняет подпрограмму обработки блока, включающую следующее. 1. Запись «счетчика текущего содержимого» соответствующей очереди уменьшается на единицу. 2. Используя привязку к значению времени, интерпретатор определяет, является ли время, проведенное транзактом в очереди, нулевым. Если да, то такой транзакт по определению является транзактом с «нулевым пребыванием» в очереди; соответствующим образом изменяется счетчик «нулевых вхождений» (причина возникновения нулевых вхождений объяснена ниже). 3. Ликвидируется привязка траизакта, указывающая иа принадлежность траизакта соответствующей очереди. В конце моделирования интерпретатор автоматически распечатывает такие элементы стати- <стики, как «счетчик входов», «максимальное содержимое», «среднее значение содержимого» , и «счетчик текущего содержимого». Распечаты- ' вается также среднее время пребывания в очереди. Рассмотрим подробнее значение среднего времени пребывания в очереди. Интерпретатор может накапливать эти статистические данные двумя способами. Одним из иих является расчет времени пребывания в момент входа каждого из транэактов в блок DEPART (ПОКИНУТЬ ОЧЕРЕДЬ). На самом деле интерпретатор поступает иначе. Вместо того, чтобы независимо обрабатывать блок DEPART, интерпретатор отслеживает полное время нахождения в очереди, накопленное до текущего времени, получаемое суммированием значений для всех прошедших и находящихся в очереди транзактов. Таким обраДом, в любой момент времени интерпретатором может быть рассчитано среднее время пребывания в очереди делением полного времени пребывания в очереди, накопленного до текущего времени, на значение счетчика входов. Преимуществом такого подхода является учет тех транзактов, которые не покидают очередь в момент обработки статистики. Недостатком же является тот факт, что это время будет несколько занижено, поскольку те транзакты, которые еще не вышли из очереди (если таковые имеются), должны оставаться в очереди еще некоторое время, а это никак не учитывается в расчете. Фактически интерпретатором рассчитываются два статистических параметра времени на- 53
хождения в очереди. Один из них является средним временем по всем входам в очередь. Обычно часть входов в очередь имеет нулевое время пребывания в очереди, т. е. им не приходится ждать. Поэтому интерпретатор также считает и статистику для среднего временя пребывания в очереди, исключая те входы, которые не вызвали ожидания. Это объясняет, для чего транзакту приписывается значение содержимого таймера при входе в блок QUEUE и для чего в блоке DEPART проверяется, не было ли время ожидания этого транзакта нулевым. \\ Рассмотрим теперь пример записи пары блоков QUEUE и DEPART в модели. Рассмотрим снова рис. 2.17. Ожидание может возникнуть ввиду занятости прибора с именем JOE. Предположим, что мы собираем статистику об этом ожидании. В сегмент модели регистратор очереди будет введен блоками QUEUE и DEPART (рис. 2.J9). Регистратору очереди присвоено произвольное символическое имя JOEQ. Как же работает показанный на рисунке сегмент модели? Положим, что транзакт вошел в этот сегмент в момент, когда прибор JOE не занят. Транзакт входит в блок QUEUE, при этом выполняется соответствующая подпрограмма. Модифицируется счетчик входов, содержимое очереди увеличивается на I, транз- 1 QUEUE S~~k I SEIZE 1 ' DEPART ' ' ADVANCE 16 4 /joe\ © акту приписывается время входа в очередь и имя очереди. Далее транзакт тут же пытается войти в блок SEIZE. Поскольку прибор JOE свободен, эта попытка оказывается успешной. Выполняется подпрограмма SEIZE, и состояние прибора JOE изменяется со «свободно» на «занято». Далее транзакт немедленно попадает в блок DEPART. Выполняется соответствующая подпрограмма, счетчик содержимого очереди уменьшается на 1, и т. д. Продолжая продвижение, транзакт попадает в блок ADVANCE. Вычисляется время задержки в соответствии с распределением 16 =а= 4, и транзакт временно прекращает продвижение. Все это происходит в какой-то определенный момент модельного времени. Это означает, что хотя транзакт входит в очередь JOEQ, время его пребывания в этой очереди равно нулю, т. е. вхождения вызваны тем простым фактом, что блок SEIZE располагается между блоками QUEUE и DEPART. Все транзакты, попадающие на прибор, должны пройти через пару QUEUE — DEPART, даже если прибор свободен и его можно занять. Предположим теперь, что прибор JOE находится в занятом состоянии, и следующий транзакт входит в сегмент модели рис. 2.19. Проходя блок QUEUE, он модифицирует значения счетчика входов и счетчика текущего содержимого. Ему приписывается имя очереди и значение таймера в момент входа в очередь. Далее происходит отказ, поскольку прибор JOE занят. Транзакт вынужденно перестает продвигаться, оставаясь в блоке QUEUE. Позднее, когда транзакт, находящийся на приборе, покидает его, ожидающий траизакт опять попытается войти в блок SEIZE. На этот раз попытка окажется успешной. Двигаясь дальше, транзакт войдет в блок DEPART, уменьшая значение счетчика содержимого очереди на 1, и т. д. В описанной ситуации транзакт проходит блоки QUEUE и DEPART в различные моменты модельного времени. Это означает, что имеет место «ненулевое вхождение» в очередь. Конкретные значения статистических данных, распечатываемых интерпретатором в конце моделирования, будут рассмотрены в при* мере, представленном в параграфе 2.17. Рис. 2.19. Повторение рис регистратора очереди добавлением сегмента 54 2.15.2. Использование операнда В в блоках QUEUE и DEPART В блоках QUEUE и DEPART существует возможность использования операнда В. Не рис. 2.20 повторен рис. 2.18, но с использова* нием операнда В. Операнд В указывает на какую величину должен быть модифицирован счетчик содержимого очереди. По умолчанию для этого операнда подразумевается значение 1. ADVANCE 16.4
DEPART bKV Рис. 2.20. Блоки QUEUE и DEPART с операндами А и В: Операнд А В Значение Имя (символическое зли числовое) очереди Число элементов, на которое должно измениться значение счетчика содержимого очереди Значение или результат по умолчанию Ошибка Единица На рис. 2.19 именно это значение и используется. Лучше всего проследить влияние операнда В при рассмотрении поведения интерпретатора во аремя выполнения подпрограмм блоков QUEUE и DEPART. При выполнении подпрограммы QUEUE происходит следующее. I 1. Увеличивается значение счетчика входов I соответствующей очереди иа число, равное зна- | чению операнда В. 2. Увеличивается значение счетчика содержимого очереди на число, равное значению операнда В. 3. Транзакту приписывается имя очереди. 4. Транзакту приписывается текущее значение модельного времени. Пп. 3 и 4 были пояснены ранее. Пп. 1 и 2 показывают влияние использования операнда В да значение содержимого очереди. Очевидно, что если в блоке QUEUE использован операнд В, отличный от 1, то значение счетчика входов не будет равно числу транзактов, вошедших в этот блок. Подобным образом, содержимое очереди не будет совпадать с числом транзактов, которые привязаны к данной очереди. Например, когда транзакт переходит в блок «QUEUE LINE.2», то и счетчик входов н счетчнк содержимого очереди, названной LINE, увеличивается на 2, но суммарное число транзактов, присоединившихся к очереди, увеличивается только на 1, н число транзактов, находящихся в очереди, также увеличивается на 1. Рассмотрим теперь выполнение подпрограм- мыгекшт. 1. Значение счетчика содержимого очереди уменьшается на число, определяемое операндом В. 2. Используя значение времени, приписанное транзакту при вхождении в блок QUEUE, определяют, является ли данный транзакт транзактом с нулевым вхождением. Если транзакт вызвал нулевое вхождение в очередь, то счетчик нулевых вхождений увеличивается на число, определяемое операндом В блока DEPART. 3. Связь транзакта, показывающая принадлежность к данной очереди, разрывается. Для иллюстрации п. 2 предположим, что транзакт входит в блок «QUEUE QUEUP.5» и что в то же значение модельного времени он проходит в блок «DEPART QUEUP.5». По определению транзакт вызывает нулевое вхождение в очередь. Следует помнить, что интерпретатор обрабатывает элементы информации очереди в единицах содержимого, а не в транз- актах. Следовательно, в этом примере число нулевых вхождений в очередь увеличится на 5, а не на 1. В операндах В блоков QUEUE и DEPART значения, отличные от 1, употребляются в специальном случае. Очевидно, что собираемые статистические данные должны соответствующим образом быть интерпретированы. При печатании таких данных, как число входов, максимальное и среднее содержимое, текущее содержимое, а также число нулевых вхождений делается ссылка не на число транзактов, а на число элементов содержимого. В заключение скажем, что существует однозначное точное соответствие между счетчиком содержимого очереди и числом транзактов, рассматриваемых как элементы очереди только в том случае, если операнд В блоков QUEUE и DEPART равен 1 (заданный в явном виде или по умолчанию). Необходимость использования операнда В возникает крайне редко, поэтому почти всегда существует точное однозначное соответствие. В этой книге нет случаев возникновения необходимости использования операнда В в блоках QUEUE и DEPART. 2.15.3. Некоторые замечания о неверном использовании регистратора очереди Начинающие изучение GPSS могут составить неверное представление об использовании регистратора очереди. Два наиболее часто встречающихся ошибочных представления мы прокомментируем ниже. Первой ошибкой является то, что многие считают, будто регистраторы очереди необходимо использовать в модели всюду, где могут возникать очереди. Часто думают, что если регистратор очереди не записан, то не обеспечивается возможность ожидания обслуживания. Это неверно. Использование регистратора очереди совершенно необязательно. При использовании регистратора интерпретатор собирает статистику об ожидании; если регистратор не используется, статистика не собирается, но 55
всюду, где должно возникать ожидание, оно возникает. Например, на рис. 2.19 независимо от того, находится ли блок SEIZE между парой QUEUE — DEPART или нет, транзакт не войдет в блок SEIZE, если прибор JOE занят. Ожидание является следствием состояния прибора, а не следствием использования регистратора очереди. Во многих случаях, даже если известно, что в определенных местах системы возникают очереди, разработчик предпочитает не использовать регистратор очереди. Если в планы не входит обработка статистических данных об очередях, то лучше не собирать статистику. Это сэкономит время, расходуемое на моделирование. Для иллюстрации на рис. 2.21 изображена система, в которой в шести различных местах могут возникать очереди. Разработчик модели может принять решение собрать статистику во всех шести местах или не собирать ее вовсе; может принять решение собирать статистику в некоторых из этих мест модели или, например, собирать статистику в точках 2, 4, 5 и 6 и не собирать ее в точках 1 и 3. В данной книге дано много примеров, где в местах возникновения очереди статистика об очереди не собирается. В четвертом и пятом примерах этой главы приведены такие случаи. Второй общей ошибкой, касающейся использования регистраторов очередн, является мнение, будто транзакт не является элементом очередн, если он не находится в блоке QUEUE. Это неверно. Транзакт просто отмечает факт своего присутствия в очереди входом в блок, где осуществляется привязка к очереди по имени и времени входа в очередь. Независимо от того, остается транзакт в блоке QUEUE илн нет, он остается элементом очереди до тех пор, пока не войдет в блок DEPART соответствующей очереди. В зависимости от того, каким образом построена модель, траизакт в общем случае может некоторое время находиться в различных частях модели после того, как он Места, В которых Граница системы межет Возникать икиЗати ffK\ Рис. 2.21. Шесть точек, в которых может возникать ожидание покинет блок QUEUE, и прежде, чем он войдет в соответствующий ему блок DEPART. Выше мы сделали предположение, что транзакт может являться элементом более чем одной очереди. Это вовсе не так уж странно, как может показаться на первый взгляд. Можно без труда придумать ситуацию, когда люди одновременно стоят в двух или даже более очередях. Здесь следует отметить, что находиться в очереди вовсе не значит физически в ней присутствовать. Представим себе, например, случай прихода в мясной магазин покупательницы, которой приписан номер в момент входа в магазин. Если покупательница видит, что ее номер еще не дошел, она может пройти в другой магазин, например в бакалейный, стать там в очередь, обслужиться, снова вернуться в мясной магазин и ждать своей очереди. С точки зрения нахождения в очереди, она была в мясном магазине все время, хотя иа самом деле она побывала и в бакалейном. В GPSS траизакт не может присутствовать одновременно более чем в пяти очередях. Если транзакт уже находится в пяти очередях и делает попытку присоединиться к шестой, то печатается предупреждающее сообщение с номером 853 (см. приложение С). Причиной ограничения именно пятью очередями является наличие только пяти полей записи для имени очереди при привязке транзакта к очередн н пяти полей для записи времени присоединения к очереди. При рассмотрении второго примера моделирования в этой главе приведена модель на GPSS, в которой транзакты одновременно присутствуют в двух различных очередях. ,1-'. *1' ч' 2.16. Описание стандартов для ? * записи примеров моделирования В данной книге для иллюстрации различных возможностей GPSS будут рассмотрены примеры моделирования. Ниже указаны элементы описания примеров, которые даны в книге» ^ 1. Постановка задачи. Она включает детальное описание задачи. Такое описание достаточно для того, чтобы по нему можно было строить модель и выполнять ее прогоны (т. е. моделировать систему). 2. Метод построения модели. Здесь опнш*- вают и поясняют, каким образом задачу можно интерпретировать в терминах GPSS. Сделана попытка объяснить, почему избран именно такой подход. 3. Таблица определений. Таблица определений является списком различных элементов GPSS, использованных в модели, с краткой * характеристикой тех частей системы, которые описываются этими элементами. В начале этой 56
таблицы записывается принятая в модели единица времени. Затем записывается представление транзактов. Далее в алфавитном порядке описываются все прочие элементы модели и части моделируемой системы. 4. Блок-схема. В определенном смысле блок- схема и есть модель. Подробная блок-схема может оказаться трудиочитаемой. По этой причине рядом с блоком в блок-схеме пишут пояснения (или комментарии). Комментариями являются краткие сведения, указывающие, что моделирует нли чем помогает моделированию данный блок. 5. Распечатка программы. В процессе чтения перфокарт, представляющих собой вариант модели, интерпретатором GPSS выполняются следующие три этапа: а) присваивается номер каждому блоку модели (т. е. номер его месторасположения); б) присваивается номер каждой считываемой карте; в) по каждой карте на алфавитно-цифровом печатающем устройстве (АЦПУ) распечатываются: J) номер блока (если карта представляет собой блок; 2) информация, перфорированная в полях имени, операции и операндов карты, а также комментарии, если они есть); 3) номер карты (номер расположения этой карты в колоде). Интерпретатор выдает распечатку исходной программы. Поскольку номер блока и номер карты не входят в исходный перфорируемый текст, а добавляются интерпретатором в распечатку, ее можно называть расширенной распечаткой программы. 6. Выходные данные программы. Распечатка результатов, выдаваемая в процессе моделирования, показывает, чего фактически достиг разработчик своими силами. Она служит основой для обсуждения. Часто представляют лишь части выходных данных. Это сделано для экономии места н для сосредоточения внимания читателя на той части выходных данных, которая для него наиболее интересна. В некоторых случаях вместо непосредственной распечатки просто представляют выводы. 7. Обсуждение. Сюда входит обсуждение логики моделирования, использования модели и распечатки результатов. Логика моделирования. Здесь рассматривают особенности блок-схемы и ее соотношение с самой задачей или дают конкретный метод интерпретации задачи в терминах GPSS. Использование модели. Перфокарточная версия модели содержит карты блоков, а также карты, имеющие прочую информацию. Например, карта START, рассмотренная в параграфе 2.9, должна обязательно быть включена как элемент модели. В блок-схеме не существует блока, который соответствовал бы карте START. Есть и другие возможности включения информации, в явном виде ие присутствующей в блок-схеме. При необходимости такая информация будет появляться в распечатке программы и будет обсуждена нами. Распечатка результатов. Результаты можно рассматривать как некий ответ на поставленную задачу. Основным назначением примеров моделирования, тем не менее, является иллюстрация методов построения моделей на GPSS, а не числовых результатов задачи. Поэтому результатам работы программ уделяется не очень много внимания. 2.17. Пример моделирования 2А. Система с одним прибором и очередью 1. Постановка задачи. Интервалы прихода клиентов в парикмахерскую с одним креслом распределены равномерно в интервале 18 =t 2= 6 мин. Время стрижки также распределено равномерно, 16 =t 4 мии. Клиенты приходят в парикмахерскую, стригутся в порядке «первым пришел — первым обслужен» и затем уходят. Модель парикмахерской на GPSS должна обеспечить сбор статистических данных об очереди. Необходимо промоделировать работу в течение 8 ч модельного времени. Результаты, полученные на модели, необходимо трактовать в терминах работы парикмахерской. 2. Метод построения модели. Эту модель нетрудно построить в виде непрерывной цепи блоков, добавив к ней компоненты, предназначенные для управления моделированием. Порядок блоков в модели соответствует' порядку фаз, в которых оказывается клиент при движении в реальной системе. Клиенты приходят; если необходимо, ждут своей очереди; затем садятся в кресло к парикмахеру; последний стрижет их; наконец, клиенты уходят. За исключением блоков GENERATE н TERMINATE эта последовательность уже была изображена на рис. 2.19. Таблица 2А.1. Таблица определений для примера моделировании 2А Элементы GPSS Транзакты: 1-й сегмент модели 2-й сегмент модели Прнборы: JOE Очереди: JOEQ Назначение Клиенты Таймер Парикмахер Очередь, используемая для сбора статистики об ожидания клиентов 57
Для установления периода моделирования используется сегмент таймера из двух блоков. На рис. 2.10 уже был представлен сегмент, требуемый в нашем случае, в предположении, что единицей времени выбрана 1 мин. Его мы и используем в модели. 3. Таблица определений. Единица времени 1 мии. 4. Блок-схема. GENERATE V 18 6 QUEUE ПРИХОД КЛИЕНТОВ ПРИСОЕДИНЕНИЕ К ОЧЕРЕДИ SEIZE Л •or \L \ DEPART JOEQI ADVANCE 16 4 RELEASE 'JOE' V X :RMINA1 = TERMINATE ПЕРЕХОД В КРЕСЛО ПАРИКМАХЕРА УХОД ИЗ ОЧЕРЕДИ ОБСЛУЖИВАНИЕ У ПАРИКМАХЕРА ОСВОБОЖДЕНИЕ ПАРИКМАХЕРА УХОД ИЗ ПАРИКМАХЕРСКОЙ 1-й СЕГМЕНТ МОДЕЛИ GENERATE L 480 ьсп у- TERM/NATE] U3 ТРАНЗАКТ-ТАЙМЕР ПРИХОДИТ В МОМЕНТ ВРЕМЕНИ, РАВНЫЙ 4«0 ЗАВЕРШЕНИЕ ПРОГОНА 2-И СЕГМЕНТ МОДЕЛИ Рис. 2А.1. Блок-схема для примера моделирования 2А 58
5. Распечатка программы. LOCATION .|,|.|.|,|. Iii,, »' р 1 1 1 1 _ % 1 1 . . 1 i 1 . 1 1 I 1,,,, 1 II,-., \ к, t, 1 *1 1 К , , , . 1.,,. i ОРЕЯОТ 3N lit lain izUIm iiUI,;l,e s,imu.lIa,t,e. i , 1 ttOCElj SECME ft 1 Q.UEUEl , , , , 1 S.E.I,ZE| , . , , d,j.»a»'t, . !_,_,_ AD.VAMCE, , , , 1 •,E,L,EJk|S,Ei i i , LIJMjitAIib^ , , . , 1 1 .MQAEili iSiEiOME b,ene,»ia.t,e, . , t.e,imi{ma,t,e, 1 u CONT.RO.L, .СЛ.1 1 s.tab.tI EMA i 1 i i i ■ i «,B.C,0,f f »- чЫг^гг.г^гФ^у^м'^ЫЫЫиЬ 1 1 1 1 i I 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 .. . 1 ' ПРИХОД 1 КЛИЕНТОВ I.I 1 1 llB , Ol 1 | 1 ■ 1 I 1 . . . . 1 1 • 1 1 i i i I i i i , | | 1 I i i«« . I i ПРИСОЕДИНЕНИЕ, .(ОЧЕРЕДИ . , J [ \ , , , int. ■ ! [.ПЕРЕХОАВ'КРЕСЛО.ПДРИКМДХЕРА | J ] JOEO ',,, J ЛХ°Д , | ИЗ ОЧЕРЕДИ 1 1 I ,, . ! Обслуживание у парикмахера ! ! ! |Л- ! , , , 'освобождение парикмахера i ' I 1 'УХОД ИЗ ПАРИКМАХЕРСКОЙ 1,1 1 1 1 II . 1 1 1 1 1 1 1 1 1 ало, , , I 1 . . . . Таймер. ПРНадит'в момент ВРЕМЕНИ.РАВНЫИ 480 , ;, J , 1 '.ЗАВЕРШЕНИЕ ПРОГОНА ,1 1 1 1 1 1 1 ■ 1 1 1 1 1 ' 1 1 1 1 1 ' 1 1 1 1 1 1 ' 1 1 1 1 1 1 1 1 1 , 1 1 1 1 1 1 1 1 1 1 1 1 1 ' 1 1 1 1 . ' 1 1 1 1 1 ' 1 1 1 1 1 1 1 . . 1 1 1 1 1 , , 1 1 1 1 1 1.1 1 1 1 1 1 1 1 1 1 I 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ■ 1 1 1 I . 1 1 1 1 1 1 1 1 1 1 1 1 1 I 1 1 .(. 1 ' г 1 1 J а) BLOCK NUMBER 1 г 3 * s б 7 8 9 •СОС • • • • • • OPERATION А.в.С SIMULATE MOOEL SEGMENT 2 GENERATE «ВО TERMINATE 1 MODEL SEGMENT 1 GENERATE 18.6 QUEUE JOEO SEIZE JOE OEPART JOEO ADVANCE 16.* RELEASE JOE TERMINATE CONTROL CARDS START 1 ENO COMMENTS TIMER ARRIVES AT TIME «BO SHUT OFF THE RUN CUSTOMERS ARRIVE ENTER THE LINE CAPTURE THE BARBER LEAVE THE LINE USE THE BARBER FREE THE BARBER LEAVE THE SHOP START THE RUN RETURN CONTROL TO OPERATING SYSTEM CARO NUMBER I . г « s 6 7 в 9 10 11 12 13 I» IS 16 17 IB 19 20 21 Рис 2А.2. Пример моделирования 2А. Модель и распечатка программы: ■ — и политики блапк ДЛЯ перфорации модели; б — распечатка программы для модели, представленной в част» а. На банке показаны ЛМИЮНЛ (LOCATION), операции (OPERATION) и операндов (помечено символами А. В, С, О, Е, F, Q). На распечатке поле имени отменно символами * L0C
6. Выходные данные. MODEL SEGMENT 1 6EMERATE IS oueue seize DEPART ADVANCE RELEA5E TERMINATE MODEL SEGMENT 2 GENERATE «80 TERMINATE 1 CONTROL CARDS FACILITY SYMBOLS AND CORRESPONDING NUMBERS \ START I 8) UtuE SYMBOLS »NB CORRESPONDING 1. JOEO * ») FACILITY AVERAGE UTILIZATION JOE .860 NUMBERS NUMBER ENTRIES 26 RbLATIVE CLOCK block counts block current 1 0 2 I J 0 « 0 i > «. 6 7 О • 9 0 0 AVERAGE TIUE/TRAN is.ee» TOTAL 27 27 26 26 26 25 25 1 I ♦ 60 ABSOLUT!: CLOCK BLOCK CURRENT TOTAL •0 SEIZING PREEMPTING TRANS. NO. TRANS. NO' 3 «bo PLUCK CURRENT TOTAL A) SUEUE MAXIMUM CONTENTS JOEO 1 • AVERAGE TIME/TRANS AVERAGE TOTAL ZERO PERCENT AVERAGE CONTENTS ENTRIES ENTRIES ZEROS TtUE/TRANS .160 2/ 12 А*.А г.BS1 * AVERAGE TIME/TRANS EXCLUOING ZERO ENTRIES «AVERAGE TIME/TRANS b. 1 33 TAfiLE NUMBtR CURRENT CONTENTS 1 Рис. 2А.З. Часть распечатки примера моделирования 2А: а — ассемблированная модель: б — словарь символов для приборов: в — словарь символов для очереди; г — значении времени и Счегш блоков; д — статистические данные по приборам: е — статистические данные по очередям. Русские эквиволеиты пазпиинй элыели статистик, распечатываемых по-английски, приведены в описании результатов 7. Обсуждение. Логика моделирования. В представленной модели ие выполняется никаких дополнительных действий для вывода клиентов из парикмахерской, когда моделирование завершается при значении таймера 480. Если бы в модели был настоящий парикмахер, то он после восьмичасового рабочего дня ушел бы с работы. Если, наоборот, была бы настоящей модель, то моделировалось бы закрытие дверей через 8 ч работы, а моделирование не прерывалось пока все клиенты, находящиеся в парикмахерской в этот момент времени, не были бы обслужены. Как это записывается на GPSS, будет показано дальше. Использование модели. Бланк, на котором записана перфокарточкая версия модели, показан на рис. 2А.2, а. Соответствующая ей распечатка программы показана на рис. 2А.2, б1. Обратите внимание на то, что интерпретатор 1 Комментарии ко нсем распечаткам программ см. в приложении М. увеличил объем распечатывающей информация по сравнению с исходным текстом. Это увелк чение получено за счет номеров блоков и ном» ров карт, находящихся соответственно в левой и правой колонках рис. 2А.2, б. Легко убм диться, что номера блоков присвоены в соотвен ствии с порядком, в котором следуют дер<№ карты, представляющие блоки. Отметим таюш что карты пронумерованы в порядке распаян жения перфокарт. Комментарии используют для документации модели. Карты 2, 3, 4, 12, 13, 14, 17, 18 и W на рис. 2А.2, б являются комментариями и а* являются частью сегментов модели или упри вляющими картами. Символ *■ в первой колой ке (см. рис. 2А.2, а) указывает на то, что карм является комментарием. Карты-блоки такая могут быть прокомментированы в поле оп» ранда. * Эти комментарии аналогичны тем, кото! ,рые были рассмотрены ранее и стояли рядо» с блоками на рис. 2А.1. ' 60
На рис. 2А.2, б первой картой является карта SIMULATE (МОДЕЛИРОВАТЬ). Если разработчик намерен выполнить прогон модели, то обычно эта карта стоит в начале колоды. На карте перфорировано одно слово SIMULATE, помешенное в поле операции. Если эта харта отсутствует, то интерпретатор проверяет правильность записи модели на языке GPSS, но прогона модели не выполняет. Моделирование начинается после того, как интерпретатором в модели найдена карта START. Это объясняет, почему карта должна стоять в конце программы-модели (карта 20). Цифра I должна быть помещена как операнд А карты START. После того, как прогои модели завершен, ?абота ЭВМ над моделью еще не заканчивается. ' разработчика остается много возможностей для продолжения работы. Независимо от того, используются ли эти возможности, существует некоторая точка в модели, перед которой помещены все команды управления прогонами. Здесь должна быть размещена карта END (ЗАКОНЧИТЬ). Эта карта побуждает интерпретатор вернуть управление в операционную систему. Карта END следует после карты START на рис. 2А.2, б. Она состоит из слова END, перфорированного в поле операции. Для модели в целом очень важен порядок, в котором располагаются карты сегментов модели, но порядок расположения сегментов безразличен. Например, сегмент таймера может располагаться до основного сегмента на рис. 2А.2 без какого-либо влияния на результат моделирования. Распечатка программы в этом случае будет такой, как показано на рис. 2А.4. Распечатка результатов. (Полное время моделирования на ЭВМ IBM 360/67 занимает 16 с. Вопросы о времени моделирования на <}PSS будут обсуждены в гл. 4.) Ни из блок- схемы, ни из распечатки программы не видно, откуда получаются те или иные выходные результаты. По завершении моделирования интерпретатор GPSS автоматически распечатывает некоторое количество информации о поведении модели. Эта информация включает статистические данные по каждому из элементов, используемых в модели, т. е. по каждому из приборов и очередей (и других видов элементов, пока еще не рассмотренных). Основные результаты, полученные при моделировании (см. рис. 2А.2), представлены на рис. 2А.З. На рис. 2А.З, а показана модель после ее ассемблирования (процесс трансляции с исходного языка в некоторый промежуточный объектный код. После ассемблирования все символические имена заменяются на числовые). Оиа обладает следующими четырьмя особенностями. 1. Абсолютный номер блока, присвоенный интерпретатором, повторяется в объектном коде модели. Такими номерами являются номера 1—9 в левой колонке рис. 2А.З, а. 2. Операнды расположены не в смежных колонках и не разделены запятой. Они теперь расположены в полях по шесть колонок каждый и выровнены по левому краю (из рис. 2А.З, а пока явно не видно, что для операндов используют поля именно по шесть колонок). 3. Все символические имена элементов в модели заменены на соответствующие им числовые эквиваленты, присвоенные интерпретатором. Например, операнд А блока QUEUE (блок 2) теперь равен 1, а не JOEQ, операнд А блока SEIZE (блок 3) теперь равен I, а не JOE, и т. д. (В гл. 4 будет показано, каким образом интерпретатор устанавливает соответствие между символическими именами и их численными эквивалентами.) BLOCK миивев i г 3 4 5 6 7 В 9 ««.ОС т ш 4 • • • 4 OPERATION А,В.С.О. SIMULATE MOOEL SEGMENT г GENERATE 4B0 TERMINATE \ MODEL SEGMENT I GENERATE IB.6 DUEUE JOEO SEIZE JOE DEPART JDEO АОVANCE 16.4 RELEASE JOE TERMINATE CONTROL CAROS START t ENO iE.F.G COMMENTS TIMER ARRIVES AT TIME 4BO SHUT OFF THE RUN CU?TJ?«ERS ARRIVE ENTER THE LINE CAPTURE THE BARBER LEAVE THE LINE USE THE BARBER FREE THE BARBER LEAVE THE SHOP START THE RUN RETURN CONTROL TO OPERATING SYSTEM CARD NUMBER I г з 4 s 6 7 в 9 I D I 1 12 13 14 IS 16 17 IB 19 20 21 Рис 2А.4. Распечатка программы примера моделирования 2А с перестановкой сегментов модели 61
4. Комментарии, входящие в перфокарты блоков модели, пропадают. Чистые карты-комментарии, т. е. карты, имеющие в первой колонке звездочку, не пропадают. Они целиком сохраняются в распечатке объектного кода модели. На рис. 2А.З, б, в представлены перечни приборов и очередей. В перечне приборов представлены все числовые эквиваленты, присвоенные символическим именам приборов. Прибору с символическим именем JOE, в частности, присвоен номер 1 и в объектном коде модели; очередь с символическим именем JOEQ получила номер 1. Эти номера являются операндами А блоков SEIZE — RELEASE и QUEUE — DEPART на рис. 2А.З, а. Если используются символические имена блоков, то в распечатке программы появляется соответствие между именами и их номерами. На рнс. 2А.З, г изображены значения времени и список блоков. В верхней строке рисунка указаны два значения времени — относительное и абсолютное. Различие между ними мы определим позднее. А сейчас достаточно заметить, что оба значения времени показывают 480. Это означает, что завершение моделирования произошло в момент модельного времени, равный 480. Сразу же за строкой времени на рнс. 2А.З, г дан список блоков. Он размещен в трех колонках: номер блока, помеченный на рисунке словом BLOCK (БЛОК), счетчик текущего содержимого, помеченный как CURRENT (ТЕКУЩЕЕ), и общее число входов, помеченное как TOTAL (ОБЩЕЕ). Номера блоков соответствуют номерам, показанным на рис. 2А.З, а. Счетчик текущего содержимого является счетчиком транзактов, находящихся в соответствующих блоках в момент завершения моделирования. Счетчик входов является счетчиком общего числа транзактов, которые вошли в соответствующие блоки в течение периода моде- FACI1-I TY JOE t 6 AVERAGE UTILIZATION • B6D NUMBER ENTRIES 26 <b © Рнс. 2А.5. Описание элементов, показанных иа рис. 2А.З, д: лирования, включая также те из них, которые все еще находятся в блоке (если таковые имеются). Например, счетчик входов в блок 1 (рис. 2А.З, г) равен 27. Это значит, что 27 транзактов вошло в модель через блек GENERATE, стоящий на первом месте. Аналогично, счетчик входов в блок 2 равен 27, это означает, что 27 транзактов вошло в блок QUEUE, стоящий на втором месте. Счетчик текущего содержимого в блоке 2 равен I. Эта означает, что только один транзакт все ещ? находится в блоке QUEUE, т. е. один клиент ждал обслуживания в момент завершения работы модели. В блоке 5, т. е. блоке ADVANCE, счетчик текущего содержимого равен 1, а счетчик входов равен 26. Это значит, что парикмахер обслуживал 26 клиентов, из этих 26 один все еще находится на обслуживании. Счетчики входов в блоках SEIZE и RELEASE равны Щ и 25 соответственно; это согласуется со значеч нием счетчика блока ADVANCE. На рис. 2А.З, d, e показаны статистические данные, собранные о работе прибора JOE и очереди JOEQ. Еще раз статистические дан* иые о работе прибора показаны на рис. 2А.6 здесь колонки пронумерованы для удобств! дальнейших ссылок. В таблице к рис. 2A.J даны значения гэлементов в различных коло* ках. Аналогично, на рис. 2А.6 повторена часп распечатки статистических данных об очерщ вместе с номерами колонок. В нижней част! рисунка указаны значения данных, располагв" емых в колонках. Рассмотрим подробнее ri блицы к рис. 2А.5 и 2А.6 со ссылкой на рае печатку результатов. Они выдают следующу| информацию. 1. Прибор JOE использовался в "теченим 86% времени, AVERAGE UTILIZATION! (НАГРУЗКА) = 860. У 2. Прибор JOE был занят обслуживание» 26 раз, NUMBER ENTRIES (ЧИСЛО ВХОД ДОВ) = 26. Это соответствует ранее расемм AVERAGE Tl*e/TRAN is.ee* SEIZING TRANS» NO» 3 PREEMPTING TRANS. NO* Колонка 1 2 3 4 Значение Имена (символические или числовые) приборов, используемых в подели Доля времени, в течение которого соответствующие приборы были в состоянии эвнятостн Число обслуживании Средняя продолжительность одного обслуживания КОЛ01ГЮ! S в Значение Номер трвиввкта (если такой есть), который в id стоящее время находится на обслуживании (щ мера транзактов рассмотрены ниже в этой гмм Номер транзякта (если такой есть), который а Щ стоящее время занял («захватила) првбориЬди хват» прибора ие будет рассмотрен до гл. г) Щ J 62
J£ RAX|MUM CONTENTS JOEO I AVERAGE CONTENTS .160 TOTAL 2ERO PERCENT ENTRIES EMIBIE'S ZEROS 27 12 «4.* О О CD л? л ©-. © AVERAGE T IME/TRANS г. ем 1AVERACE Т|НЬ/TRANS •>. 133 © © TABLE NUMBER t © CURRENT CONTENTS 10) Рас. 2А.6. Описание элементов показанных на рис. 2А.З, е: Колонка 1 о 3 4 S б Значение Имена (символические или числовые) очередей, используемых а модели Наибольшее значение содержимого очереди, зарегистрированное в течение моделирования Среднее внпчение содержимого очереди Общее число входов в очередь Общее число входов в очередь без последующего ожидания (нулевые входы) Процент нулевых входов от общего числа входов Колонка 7 8 9 10 Значение Среднее время, проведенное в очереди, с учетом всех входов (нулевые входы также включаются в среднее) Среднее время, проведенное в очереди (нулевые входы исключаются из среднего) Имя (символическое или числовое) таблицы GPSS, в которой представлено распределение времени ожидания для этой очереди (понятие «таблица GPSS* не будет рассмотрено до гл. 4) Текущее значение содержимого очереди тренному значению счетчика входов, равному 26 для блока SEIZE. 3. Среднее время интервала обслуживания прибора JOE равно 15,884 мин, AVERAGE T1ME/TRAN (СРЕДНЕЕ ВРЕМЯ/ТРАН) = = 15.884. 4. Транзакт номер 3 находился на обслуживании прибором JOE в момент завершения моделирования SEIZING TRANS. NO. (НОМЕР ОБСЛУЖИВ. ТРАНЗ.) = 3. Тот факт, что JOE был занят при завершении моделирования, соответствует ранее рассмотренному значению счетчика текущего содержимого, равного 1 для блока ADVANCE. Номера транз- актов рассмотрены в параграфе 2.21. Б. В очереди JOE никогда не было более одного клиента, MAXIMUM CONTENTS (МАКСИМАЛЬНОЕ СОДЕРЖИМОЕ) = 1. 6. Среднее число клиентов, находившихся в очереди, равно 0,160, AVERAGE CONTENTS (СРЕДНЕЕ СОДЕРЖИМОЕ) = 160. 7. Числом входов в очередь является 27, TOTAL ENTRIES (ОБЩЕЕ ЧИСЛО ВХОДОВ) = 27. 8. Среди этих 27 входов в очередь было 12 нулевых, ZERO ENTRIES (НУЛЕВЫХ ВХОДОВ) = 12. 9. Из общего числа входов в очередь 44,4% было нулевых, PERCENT ZEROS (ПРОЦЕНТ НУЛЕВЫХ) = 44,4. 10. Среднее время нахождения в очереди на один вход (включая нулевые входы) равно 2,851 мин, AVERAGE TIME/TRANS (СРЕДНЕЕ ВРЕМЯ/ТРАНЗ.) = 2,851: 11. Среднее время нахождения в очереди на один ненулевой вход равно 5,133 мин, $ AVERAGE TIME/TRANS (Q СРЕДНЕЕ ВРЕМЯ/ТРАНЗ.) * = 5.133. 12. В момент завершения моделирования один транзакт находился в очереди, CURRENT CONTENTS (ТЕКУЩЕЕ СОДЕРЖИМОЕ) = = I. Это соответствует рассмотренному ранее значению счетчика текущего содержимого для блока QUEUE (СТАТЬ В ОЧЕРЕДЬ), равного единице. Статистические данные, приведенные на рис. 2. А.5 и 2А.6, понятны и почти не требуют дополнительных пояснений. Это особенно справедливо для приборов. Так как только один транзакт в единицу времени может использовать прибор, NUMBER ENTRIES берется непосредственно из счетчика числа транзактов, находившихся на приборе, a AVERAGE TIME/TRAN является средним временем обслуживания транзактов, находившихся на приборе. Также просто все можно было бы описать, если бы операнд В блоков QUEUE и DEPART всегда был равен 1 (для примера моделирования 2А это справедливо, так как операнд В определен по умолчанию). Вспомним, что при описании очередей указывалось, что интерпретатор считает статистику в соответствии с элементами содержимого, а не транз- акгами. В примере моделирования 2А (и в книге вообще) каждый транзакт, входящий в очередь, указывает в точности на один элемент содержимого. Если бы это было не так, необходимо * В ЭВМ единой серии, на которых реализована системе GPSS/360, вместо символа $ следует использовать символ 0. 63
было бы описать статистические данные очереди следующим образом. 1. TOTAL ENTRIES (ОБЩЕЕ ЧИСЛО ВХОДОВ) —это число элементов содержимого, вошедших в очередь. Более точно, TOTAL ENTRIES — это значение счетчика, сброшенного в ноль в начале и модифицируемого на значение, равное значению операнда В блока QUEUE при каждом использовании блока. Исключением является случай, когда операнд В блока QUEUE равен'1; в общем случае значение счетчика не равно общему числу транз- актов, являющихся элементами очереди в течение моделирования. 2. ZERO ENTRIES (НУЛЕВЫЕ ВХОДЫ) — это число элементов содержимого, которое находилось в очереди нуль времени. Точнее, ZERO ENTRIES — это значение счетчика, в начале сброшенного в нуль, к которому добавлялось значение, равное значению операнда В блока DEPART каждый раз при выполнении подпрограммы блока, если время нахождения транзакта в очереди равнялось нулю. Исключением является случай, когда операнд В блока DEPART равен I; в общем случае значение счетчика не совпадает с числом транзактов, являющихся элементами очереди, проведшими нуль времени в очереди. 3. AVERAGE TIME/TRANS (СРЕДНЕЕ ВРЕМЯ/ТРАНЗ.) — это среднее время нахождения в очереди на единицу содержимого. Это значение совпадает со значением среднего времени нахождения транзактов в очереди, если предполагать, что каждый транзакт, проходя очередь, вычитает из счетчика текущего содержимого то же число, которое было прибавлено к счетчику текущего содержимого ранее. Если это не так, то величина AVERAGE TLME/TRA^JS означает нечто иное. 4. Аналогично MAXIMUM CONTENTS (МАКСИМАЛЬНОЕ СОДЕРЖИМОЕ), AVERAGE CONTENTS (СРЕДНЕЕ СОДЕРЖИМОЕ), PERCENT ZEROS (ПРОЦЕНТ НУЛЕВЫХ), $ AVERAGE TIME/TRANS (D СРЕДНЕЕ ВРЕМЯ/ТРАНЗ.) и CURRENT CONTENTS (ТЕКУЩЕЕ СОДЕРЖИМОЕ) должны интерпретироваться в соответствии с концепцией элементов содержимого, а не транзактов, за исключением использования операнда В блоков QUEUE и DEPART, равного единице. Уточним значение некоторых элементов статистических данных об очереди и приборе. Если прибор в момент завершения моделирования занят, то очевидно занижение данных, называемых AVERAGE TIME/TRAN. Это возможно, поскольку AVERAGE TIME/TRAN вычисляется делением полного модельного времени занятости прибора на значение NUMBER ENTRIES (ЧИСЛО ВХОДОВ). Если существует транзакт, который еще не обслужен до завершения моделирования, то неполное время занятости включается в стати* стические данные AVERAGE TIME/TRAN. To же самое можно сказать относительно величины AVERAGE TIME/TRANS, рассчитанной длг очереди делением общего времени нахождения в очереди на значение TOTAL ENTRIES (ОБЩЕЕ ЧИСЛО ВХОДОВ). Если очередь имея CURRENT CONTENTS (ТЕКУЩЕЕ СОДЕРЖИМОЕ) в момент завершения моделирования, то еще не учтено полное время нахождении в очереди. В результате величины AVERAGE TIME/TRANS и 9 AVERAGE TIME/TRANS занижены. И, наконец, самое раннее значение Модельного времени, при котором может начаться движение транзактов, равно 1. Это означает, что на интервале времени 0—1 содержимое очередей в модели равно нулю, все приборы свободны и т. д. Поскольку такие данные статистики, как среднее содержимое очереди, нагрузка приборов -и т. п. вычисляются от значения модельного времени, равного 0, существует незначительное отклонение этих данных от истинных. 2.18. Внешние управляющие карты, необходимые для выполнения моделирования на GPSS После того, как подготовлена колода перфот карт, содержащая модель на GPSS, прежде чем выполнять моделирование, к ией иеобя димо добавить внешние управляющие карты? Эти управляющие карты никак не влияют ш логику работы модели. В них задается информация о задаче пользователя и об имени выполняемой программы, указывается на необхсдо мость работы с интерпретатором GPSS и т. л Когда эти управляющие карты добавлены в колоду, получается задание, которое можно выполнить на ЭВМ. На рис. 2А.2 показаны только карты модели; здесь внешние управляющие карты отсутст-' вуют. Вид внешних управляющих карт задания в значительной степени зависит от вычислительной установки, на которой это задание нужно выполнять. Вот почему в данной книге не ой- саны особенности этих карт. В инструкции дд, оператора GPSS/360 фирмы IBM (номер GH» 0311] приведены примеры внешних управл* ющих карт задания для использования nptf граммы GPSS/360 под управлением операционной системы OS/360. Как указано в инструкции, каждый желающий воспользоваться интерпрй татором GPSS в своем вычислительном центр! может получить готовый список управляют))) перфокарт. Мы будем считать, что такая ив 64
формация нами получена в вычислительном центре, где будет выполнено моделирование наших систем. 2.19. Упражнения l.a). Определите максимальное число транз- актов, которое может присутствовать в модели одновременно (см. приложение F). Как это число зависит от объема предоставляемой памяти ЭВМ? б). Просмотрите в приложении С список указанных ниже сообщений об ошибках. Для каждой ошибки отыщите блок или последовательность блоков, которые могут вызвать эту ошибку: 30, 201, 216, 413, 415, 428, 498, 500, 505, 530, 853, 854. в). Пусть блок 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 (Q СРЕДНЕЕ ВРЕМЯ/ТРАНЗ.), CURRENT CONTENTS (ТЕКУЩЕЕ СОДЕРЖИМОЕ). Почему нет необходимости знать, является ли транзакт, покинувший очередь в момент времени 70, транзактом, вошедшим в очередь в момент времени 32, или транзактом, вошедшим в очередь в момент времени 56? 2.а). Используя среднее значение интервала времени приходов, указанное на рнс. 2А.1, определите, сколько клиентов может прийти в парикмахерскую в течение восьмичасового рабочего дня. Сравните это число с фактическим числом приходов, указанным в счетчике числа входов для первого блока GENERATE (см. рис. 2А.З, г). б). Используя среднее значение интервала времени приходов и среднее значение времени обслуживания, показанные на рис. 2А.1, подсчитайте нагрузку парикмахера в примере моделирования 2А. Сравните ее со статистическим значением нагрузки на рис. 2А.З, д. в). На рнс. 2А.З, д показано рассчитанное значение AVERAGE UTILIZATION (НАГРУЗКА) при заданных NUMBER ENTRIES (ЧИСЛО ВХОДОВ) и AVERAGE TIME/TRANS на заданном интервале моделирования. Совпадает ли независимо рассчитанное вами значение с 0,860, как показано на рис. 2А.З, д? б Т. Дж. Шрайбср г). По информации на рис. 2А.З, е дайте оценку вероятности того, что клиенту придется ждать обслуживания в очереди. д). На рис. 2А.З, е показано рассчитанное значение AVERAGE CONTENTS при заданных TOTAL ENTRIES и AVERAGE TIME/TRANS на заданном интервале моделирования. Совпадает ли независимо рассчитанное вами значение с 0,160, как показано на рис. 2А.З, в? е). На рис. 2А.З, е показано, рассчитанное значение величины $ AVERAGE TIME/TRANS при заданных AVERAGE TIME/TRANS, TOTAL ENTRIES и ZERO ENTRIES. Совпадает лн рассчитанное вами значение с числом 5,133, показанным на рис. 2А.З, е? ж). Может ли в статистических данных об очереди PERCENT ZEROS быть равным 100,0 при значении MAXIMUM CONTENTS, равном 1? Поясните ответ. 3. Подготовьте перфокарты в соответствии с рис. 2А.2. Узнайте, какие внешние управляющие карты необходимы для выполнения моделирования в вашем вычислительном центре; подложите эти карты к вашей колоде и выполните моделирование. Сравните выходные данные с результатами, показанными на рис. 2А.З. Совпадают лн статистические данные об очереди и приборе с данными, показанными на рис. 2А.З? Очень возможно, что они не совпадают. Это может случиться ввиду того, что интервалы прихода и время обслуживания имеют случайный характер. Если результаты совпадают, то это означает, что последовательность случайных чисел, имеющая место при моделировании в вашем случае, в точности совпала со случайными числами, использованными при получении результатов рис. 2А.З (случайные числа в GPSS будут подробно рассмотрены в гл. 3). 4. Измените в модели на рис. 2А.2 распределение интервалов времени прихода на 15 =£= ±- 4 мни. Выполните моделирование на интервале 480 мин. Сравните нагрузку парикмахера, число приходов в парикмахерскую клиентов н число нулевых входов в очередь с соответствующими значениями, показанными на рис. 2А.З. Продумайте н объясните полученное различие изменением распределения интервалов прихода. 5. Измените модель, изображенную на рис. 2А.2, таким образом, чтобы единицей времени была не 1 мин, а 1 с. Выполните моделирование системы на интервале в 8 ч. Сравните нагрузку парикмахера, число входов клиентов в парикмахерскую и число нулевых входов в очередь с данными, приведенными на рис. 2А.З. Объясните различия полученных чисел, если оии есть. б.а). В модели на рис. 2А.1 число обслуживаемых клиентов является случайной переменной, 65
т. е. это число будет Различным для разных дней. Сделайте так, чтобы это число обрывалось сразу после того, как будет обслужен 25-й клиент. (Указание: уберите сегмент таймера, состоящий из двух блоков.) Выполните моделирование. В какой момент времени произошло завершение моделирования [чему равно RELATIVE CLOCK (ОТНОСИТЕЛЬНОЕ ВРЕМЯ) в распечатке?]. Заметьте, что число обслуженных клиентов в модели равно в точности 25, а время завершения моделирования является случайным числом. В модели же на рис. 2А.1 время завершения детерминировано, а число обслуженных клиентов является случайным. б). Покажите, как надо изменить модель, чтобы завершение моделирования произошло в раннем из двух случаев: 1 — модельное время достигло значения 480; 2 — обслужено в точности 25 клиентов. 7. Рабочие приходят в кладовую через каждые 300 =ь 250 с. Здесь они получают детали для неисправных станков. Кладовщику требуется 280 =!= 150 с на поиск необходимой детали для одного рабочего. а). Напишите модель на GPSS для этого случая, выполните моделирование на интервале 8 ч модельного времени. Пусть стоимость потерь из-за поломки станка и простоя рабочего в очереди составляет 0,5 цента в секунду (т. е. 18 долларов в час). Каков в этом случае ущерб предприятию в течение восьмичасового рабочего дня в модели? б). Предположим, что кладовщик получает 4 доллара в час. Он может быть заменен другим кладовщиком, получающим 4,5 доллара в час, но зато выполняющим заявки рабочих за 280 =£ =£ 50 с. Выполните моделирование и рассчитайте ущерб из-за простоев рабочих в этом случае. Что лучше: оставить старого или нанять нового кладовщика? Насколько точен в данном случае (моделирование восьмичасового рабочего дня) результат сравнения двух решений? Какие меры следует предпринять, чтобы сделать вывод более точным? 2. 20. Логика работы интерпретатора В предыдущих параграфах данной главы мы описали операции, выполняемые интерпретатором. Это описание, тем не менее, не является достаточным. Например, нами был рассмотрен вопрос о движении траизактов от блока к блоку. Тем не менее, блок-схема на рис. 2А.1 является скорее статической, нежели динамической. Все еще не ясно, какой транзакт интерпретатор выберет следующим для продвижения в модели, когда другой- транзакт прекратил двигаться, или в чем заключается суть дисциплины обслуживания очереди «первым пришел — первым обслужен внутри одного приоритетного класса». На эти вопросы можно будет дать удовлетворительный ответ только после того, как будет рассмотрена логика, на. которой основана работа интерпретатора. В основном логика работы интерпретатора становится понятной из рассмотрения механизма отслеживания пути транзактов, движущихся в модели. Интерпретатор рассматривает каждый транзакт как элемент одной или нескольких цепей. Каждый транзакт может быть представлен как звеио в цепи. Цепи являются открытыми, а не замкнутыми, следовательно, они имеют два конца, начальный и конечный. В качестве элемента цепи транзакт занимает определенное положение относительно начала цепи. Положение транзакта в цепи тесно связано с тем, как скоро транзакт должен снова вернуться в модель для продолжения движения. Последовательность обработки, в свою очередь, тесно связана с временем возникновений событий при выполнении моделирования. JT Существуют цепи: текущих событий; будущих ' событий; пользователя; прерывания; парности. Имеется только одна цепь текущих и одна цепь будущих события. В общем случае может существовать более чем одна цепь пользователя, цепь прерывания и цепь парности. •Изучение цепей текущих и будущих событий мы начнем здесь и далее будем продолжать его. Изучение цепей пользователя, прерывания и парности отложим до гл. 7. Цепь текущих событий состоит нз тех транзактов, для которых планируется их продвижение в одном или нескольких блоках в течение текущего значения модельного времени или в течение ближайшего времени. В цепь текущих событий входят те транзакты, движение которых заблокировано ввиду текущих условий в модели. (По желанию пользователя транзакты могут быть перенесены из цепи текущих событий в цепь пользователя. Это можно сделать для уменьшения времени моделирования, использования нетипичной дисциплины обслуживания или для того н другого. Эти вопросы будут рассмотрены в гл. 7.) Например, транзакт может быть временно заблокирован ввиду планирования его входа в блок SEIZE, когда требуемый прибор находится в состоянии «занято». Цепь будущих событий состоит из таких транзактов, движение которых не планируется до наступления некоторого времени в будущем. Эти условия могут возникать только в двух следующих случаях. 1. Транзакт попал в блок ADVANCE, и до некоторого времени нет попытки продвинуть его в следующий блок модели.
2. Траизакт должен войти в модель в некоторый более поздний момент времени через блок GENERATE. Фактически существует и третий случай, при котором транзакт может попасть в цепь будущих событий, но он достаточно сложен и здесь рассмотрен не будет. Предположим, что мы рассматриваем некоторую модель, записанную на GPSS. Зададимся вопросом: где в модели находится соответствующий транзакт? Отметим, что ответ может быть дан либо I) с точки зрения расположения транзакта в блок-схеме, т. е. того, в каком блоке ои расположен, либо 2) с точки зрения нахождения траизакта в цепи, т. е. какой цепи он, принадлежит. Иначе говоря, транзакт одновременно существует и в блоке и в цепи. Ответ на поставленный вопрос, таким образом, зависит от контекста самого вопроса. Различия между этими двумя подходами надо хорошо помнить. Транзакты в цепи будущих событий отсортированы в порядке запланированных будущих моментов времени. Предположим, например, что текущее значение таймера равно 48. Тогда транзакт, выход которого из блока ADVANCE запланирован на время 54, будет ближе к началу в цепи будущих событий, чем транзакт, выход которого запланирован из блока ADVANCE (того же или другого) на время 59. GPSS изменяет состояние модели при просмотре цепи текущих событий от начала к концу, транзакт за транзактом. При анализе каждого транзакта интерпретатор выбирает его и двигает в модели по некоторой траектории до тех пор, пока не встретится одна из трех ситуаций. 1. Транзакт входит в блок ADVANCE, где •он должен пробыть некоторое вычисленное время. Когда это происходит, интерпретатор отправляет транзакт в цепь будущих событий, помещая его в ту позицию, которая соответствует времени выхода транзакта из цепи в следующий блок. 2. Возникает условие блокировки, означающее, что транзакт не может войти в следующий блок. Если это происходит, транзакт остается в цепи текущих событии (н в блоке, в котором он находится). Отметим, что анвакт может успешно пройти несколько оков, прежде чем возникнет условие блокировки. Интерпретатор GPSS, естественно, скорректирует его местонахождение в модели. 3. Транзакт входит в блок TERMINATE. При этом интерпретатор выводит транзакт из модели. Когда транзакт прекращает движение, интерпретатор выполняет одно из двух действий. I. Продолжая просмотр цепи текущих событий, он выбирает следующий транзакт и пытается продвинуть его в модели. 2. Без продвижения таймера интерпретатор начинает просмотр цепи текущих событий от начала. Начало просмотра означает, что интерпретатор возвращается к началу цепи, выбирает первый транзакт и двигает его в модели на сколько это возможно. Когда этот транзакт прекращает продвижение, интерпретатор снова предпринимает одно из описанных действий н т. д. Просмотр начинается от начала цепи только при выполнении специальных условий. Эти условия зависят от того, какая подпрограмма была выполнена для только что остановленного транзакта. Если транзакт прошел блок SEIZE илн RELEASE, то интерпретатор выполняет второе действие. (Выполнение подпрограмм некоторых других пока не изученных блоков также вызывает просмотр цепи таким же образом). Причина возобновления просмотра при выполнении блока RELEASE заключается в том, что заблокированные ранее транзакты теперь, возможно, смогут возобновить продвижение ввиду освобождения устройства. Целью просмотра является в этом случае поиск тех транзактов от начала цепи текущих событий, которые принадлежат к этой категории. Следует пояснить, почему цепь текущих событий начинает просматриваться сначала в результате выполнения блока SEIZE. Вполне возможно, что где-то в модели есть заблокированные транзакты (в блоках, тип которых пока не изучен), именно ввиду того, что есть свободные устройства. Следовательно, и занятие прибора и его освобождение в общем случае могут снять условия блокировки. Предположим теперь, что только что обработан транзакт, находящийся в конце цепи текущих событий. Следующего транзакта в этой цепи нет. (Могут быть другие транзакты в цепн текущих событий; если это так, то они располагаются в начале цепн и заблокированы.) В качестве следующего шага интерпретатор проверяет транзакты от начала цепи будущих событий. Он продвигает таймер модельного времени к значению, запланированному для движения следующего транзакта. Этот транзакт переносится из цепи будущих в цепь текущих событий. Любые другие транзакты, движение которых можно возобновить в это новое значение времени, также переносятся из цепи будущих в цепь текущих событий. Каждый входящий транзакт занимает положение в соответствии со своим уровнем приоритета. Чем выше уровень приоритета, тем ближе к началу цепи располагается транзакт. При наличии временных узлов каждый входящий транзакт располагается как последний элемент внутри своего приоритетного класса. После того, как перенос из це^и будущих в цепь текущих событий завершен, интерпрета- 6» 67
/фаза\ коррекции таймера т Найти транзакт в начале цепи будущих событий/ЦбС) Продвинуть значение таймера дв значения Времени движения этом транзакта I Пере.штц зтот транэант из ЦбС 8 цепь текущих событий (ЦТС) и поместить ею в качестве последнего злементл 8 соответствующем классе приоритетов Совпадает Л1 _ Значение времени движения следующего mpai *~ ^звкта ff ЦбС с текущим' значением времени? Ш Нет vepeumu \ на фазу просмотра Перенести следующий трак- \ закт из ЦБС в ЦТС и поместить еее в качестве последнего | элемента, в соответствующем] классе приоритетов | Ряс. 2.22. Фаза коррекции таймера модельного времени интерпретатора GPSS (Фаза просмотра. Перенести транзакт, находящийся в начале Ц ТС, через возможное число влоков ^^ "Необходимо ли noemepHo" 'Просматривать ЦТС ввиду тоге^ ■полько что перемещенный транзакт' ^вызвал paieme определенных- — ^ блоков ? ^ Ми Перейти на оазу коррекций таймера.. Перенести этот следующий транзакт через возможна большее число блоков Рве 2.23. Фаза просмотра интерпретатора GPSS тор начинает новый просмотр цепи текущих событий. Весь цикл просмотра повторяется. Таким образом интерпретатор продвигает модель во времени. Описанные действия интерпретатора сведены в блок-схемы рис. 2.22 и 2.23. Далее будут описаны эти фазы и объяснено, как действует интерпретатор. Теперь рассмотрим основы логики работы интерпретатора. Она будеТ детально описана на численном примере моделирования системы обслуживания с одним прибором и очередью. 2.21. Первый "пример использования цепей текущих и будущих событий Рассмотрим, как интерпретатор GPSS использует цепи текущих и будущих событий на примере моделирования системы с одним прибором и очередью, представленном на рис. 2А.1. Для этого надо сделать следующее. 1. Определить обозначения соответствующей информации о транзактах. 2. Задать распределения интервалов прихода и обслуживания транзактов. 3. Ввести таблицы, показывающие временную зависимость транзактов, находящихся в цепях текущих и будущих событий. 4. Пояснить действия, предпринимаемые интерпретатором, показом изменения информации о траиэактах, перемещаемых в модели. 2.21.1. Обозначения для транзактов Для транзакта имеется пять типов записей:, номер транзакта; время, на которое запланироч вана попытка войти в следующий блок (время движения); номер блока, через который транзакт сейчас проходит (текущий блок); его уровень приоритета; номер следующего блока, в который делается попытка войти. Эта информация записывается в виде пяти символов в указанном порядке. Общий вид такой пяти- позиционной записи представлен на рис. 2.24, к Численный пример представлен на рис. 2.24, б. Численный пример показывает, что транзакт номер 9 пытается в момент времени, равный 68, выйти из блока 5 и войти в блок 6. Транзакт номер 9 имеет нулевой приоритет. [Номер транзакта. Время движения. Номер текущее блока. Уровень приоритета. Номер следующего вломр [9.68*6.0.6] Q Рис. 2.24. Информация транзактов в виде пятнпозицион ной записи: а-о&цав вид; б-часленпып пример 68
В модель Вершина^ И Активный буфер Из медиа д(мвЙание^ранзакты в пассивном буфер Рис 2.25. Перемещение транзактов между пассивным н активным буферами Л ^ Как указывалось ранее, номер транзактам присваивает интерпретатор. Величина номера вависит от того, как много транзактов могут одновременно находиться в модели. Это число зависит от объема предоставляемой памяти. При объеме памяти в 64К максимальным числом транзактов является 200. Это следует из приложения F. Ясно, что номера транзактов могут быть от 1 до 200. Тракзакты могут принадлежать к одной из двух групп. Одна группа — это скрытая или пассивная группа транзактов, находящаяся в пассивном буфере, в отличие от транзактов, уже участвующих в модели. Другая группа хранится в активном буфере транзактов, т. е. они уже вошли в модель через один или более блоков GENERATE и пока еще не удалены из мрдели. (Существует еще один тип блоков, через которые транзакты могут войти в модель. Мы его будем рассматривать в гл. 6.) Прежде чем начинается моделирование, транзакты в пассивном буфере располагаются в порядке возрастания номеров. В модели на 64К транзакты в пассивном буфере располагаются в порядке номеров 1, 2, 200. Этот BLOCK NUMBER «UOC OPERATION A.B.CO.E.F.U SIMULATE буфер можно представить себе как J расположенный «сверху — вниз»: транэакт 1 находится в вершине буфера, транэакт 2 под ним и т. д. до последнего транэакта 200, находящегося в самом низу. При возникновении необходимости ввести в модель транэакт интерпретатор достает его из вершины пассивного буфера. Этот транэакт вносится в модель через цепь будущих событий с помощью процедуры, которая будет описана ниже. И наоборот, когда возникает необходимость удалить соответствующий транэакт, его убирают из модели и помещают обратно в вершину пассивного буфера. Перемещение транзактов между пассивным н активным буферами показано на рис. 2.25. Что касается номеров блоков, то метод их присвоения рассмотрен в параграфе 2.5. Номера блоков присваиваются в том порядке, в котором стоят карты блоков в колоде. Например, на рис. 2.26 представлено повторение распечатки программы рис. 2А.2 с номерами блоков, присвоенными интерпретатором. Номера блоков стоят в левой колонке. 2.21.2. Предполагаемые значения интервалов прихода и времени обслуживания В табл. 2.7 представлена последовательность разыгранных значений, являющихся результатом обращения интерпретатора GPSS за первыми четырьмя значениями из выборки чисел с распределением 18 =£ 6, которое задано в блоке 1 GENERATE. В табл. 2.8 показаны первые три разыгранных значения, получаемых интерпретатором из выборки чисел с распределением 16 =ь 4, которое задано в блоке 5 ADVANCE. COMMENTS MOOEL SEGMENT 1 GENERATE QUEUE SEIZE DEPART ADVANCE RELEASE TERMINATE 1в.6 JOEO JOE JOEO 16.* JOE MOOEL SEGMENT г GENERATE TERMINATE «BO 1 CONTROL CAROS START ENO 1 CUSTOMERS ARRIVE ENTER THE LINE CAPTURE THE BARBER LEAVE THE LINE USE THE BARBER FREE THE BARBER LEAVE THE SHOP TIMER ARRIVES AT TIME «80 SHUT OFF THE RUN START THE RUN RETURN CONTROL TO OPERATING SVSTEM CARO NUMBER 1 2 3 « s 6 7 В 9 10 II 12 13 14 1» 16 17 I В 19 20 21 Рис. 2.26. Повторение рис. 2А.2 6) 69
о транзактах, находящихся в цепях, показана на рис. 2.27 в виде строк третьей и четвертой колонок. Иногда цепь может не содержать ни ч одного транзакта. Эта ситуация обозначена словом «пусто». В клетке строк 1 и 2 на рис. 2.27 показана информация до и после фазы ввода первых транз- актов. Обработка интерпретатором состояний модели начинается с фазы ввода. Для каждого значения модельного времени состояния цепей показаны в двух строках. Первая строка в любое заданное время показывает состояние цепи после последней фазы коррекции таймера, но перед тем, как начинается фаза просмотра. Таким образом, эта информация является входной для последующей фазы просмотра. Вторая строка в тот же момент модельного времени показывает состояние цепей после того, как фаза просмотра завершается, но непосредственно перед тем, как начнется выполнение следующей фазы коррекции таймера. Эта информация является входной для последующей фазы коррекции таймера. Напомним, что между первой и второй строками в любой заданный момент времени интерпретатором выполняются действия, описанные на рнс. 2.23 (фаза просмотра). В общем случае выполняется много промежуточных перемещений транзактов в соответствии с этими действиями. Состояння цепей на рис. 2.27 не включают промежуточные элементы. Во второй строке для каждого значения времени показано окончательное состояние цепей. Подобным образом, между второй строкой каждого значения времени и первой* строкой следующего значения времени интерпретатором выполняются действия, описанные на рис. 2.22 (фаза коррекции таймера). Вновь не показаны промежуточные состояния цепей, возникающих Номер строка 1 2 3 4 5 6 7 8 9 10 Модельное время ? До фразы ввода После фразы ваода 14 14 27 27 Цепь текущих собьттвй К яачаяу цепи Пусто Пусто Ц.КМР.НЕТ.0,11 Пусто I3.KMP.HET.0.1] (З.КМР.2.0,31 32 1 [3,КМР,2,0.3] Ц.КМР.б.О.б] 32 Пусто 44 44 [4,КМР,НЕТ,0,11 [3,КМР,б,0,61 Пусто Цепь будущих событий. К началу цели Пусто Ц.14,НЕТ,0,Ц 12,480,НЕТ,0,81 12.480.НЕТ.0.81 [3,27,НЕТ,0.1] [1,32,5,0,6] [2.480,НЕТ,0.8] 11,32.6,0.6) [2,480.НЕТ,0,81 11,32.6,0.6] [4.44.НЕТ.0.1] 12,480,НЕТ.0,8] [4,44,НЕТ.0,1] [2.480,НЕТ,0,8] I4.44.HET.0.1] 13,44.5,0.6] 12.480,НЕТ,0,81 [2,480,НЕТ,0,8] [4,58,6.0,6J [],59,HET,0,]J {2,480.HET.0,8] Рнс. 2.27. Состояння цепей для первого примера нспольэовання цепей текущих н будущих события: КМР — «как можно раньше» 70 Таблица 2.7. Разыгранные значения интервалов времени прихода в блоке 1 рис 2.26 Номер по пор. 1 2 3 4 Разыгранное значение 14 13 17 15 Таблица 2.8. Разыгранные значения времени задержки в блохе 5 на рис. 2.2в Номер по пор. 1 2 3 Разыгранное значенне 18 12 14 2.21.3. Состояния цепей модели На рис. 2.27 показаны цепи текущих и будущих событий в течение нескольких первых значений таймера модельного времени при прогоне модели, приведенной на рис. 2.26. Каждая строка на рис. 2.27 определяется своим номером (первая колонка), который необходим для удобства ссылок при обсуждении рисунка. Различные значения моментов времени, отмечаемые таймером в течение моделирования, показаны на рис. 2.27 в колонке «Модельное время». Третья колонка представляет цепь текущих событий, четвертая — цепь будущих событий. Просмотр цепи слева направо на рисунке соответствует ее анализу от начала к концу. Закодированная в виде пятипозиционкых записей информация
при коррекции таймера. Первая строка для каждого значения времени показывает состояние цепей сразу после завершения коррекции таймера модельного времени. Рассмотрим теперь, какие действия выполняются интерпретатором над состояниями цепей на рис. 2.27. 2.21.4. Объяснение рис. 2.27. Состояния цепей Фаза ввода (от строки 1 к строке 2). Первым действием интерпретатора является ввод модели. До фазы ввода цели текущих и будущих событий пусты (строка 1). В течение фазы ввода интерпретатор проверяет каждую прочитываемую карту, определяя, не является ли она картой GENERATE. Прн чтении этой карты интерпретатор сразу же «воспринимает» блок GENERATE для установления времени прихода транзакта в этот блок. Для этого интерпретатор сначала должен определить значение модельного времени прихода. Если задано время смещения транзакта операндом С блока, то сначала время прихода устанавливается в значение, равное значению операнда С. В противном случае разыгрывается случайное значение в соответствии с распределением интервалов прихода, определенным операндами А н В блока GENERATE. Времени прихода присваивается разыгранное значение. Далее ин- тепретатор выбирает транзакт из вершины пассивного буфера н помещает его в цепь будущих событий с целью ввести в модель через блок GENERATE в заданный момент прихода. [Если время прихода равно нулю (либо значение операнда С равно нулю, либо разыгранное в соответствии с распределением значение интервала равно нулю), то оно автоматически заменяется интерпретатором на единицу. Это означает, что нет возможности ввести транзакт через блок GENERATE в момент модельного времени, равный нулю. Самое раннее .значение — 1. ] Заметим, что наш транзакт еще находится на пути в модель, пребывая в цепи будущих событий. Он пока не находится ни в одном из блоков. В модели на рис. 2.26 при чтении блока 1 GENERATE на фазе ввода модели разыгрывается число нз выборки с распределением 18 i 6. Первым разыгранным значением, как следует нз та!5л. 2.7, является 14. Интерпретатор выбирает транзакт 1 из пассивного буфера и помещает его в цепь будущих событий (ЦБС), планируя вход в блок 1 в момент времени, равный 14. В течение фазы ввода также читается блок 8 GENERATE. В этом блоке задается детерминированное значение времени — 480. Интерпретатор из пассивного буфера достает транзакт 2 и помещает его в ЦБС, планируя вход транзакта в блок 8 в момент времени, равный 480. Поскольку интерпретатор располагает транз- акты в ЦБС в соответствии с временем движения, транзакт 2 ставится следом за транзак- том 1. После чтения блока 9 TERMINATE стоит карта START. Читая эту карту, интерпретатор определяет значение ее операнда А и помещает копию этого значения в счетчик завершений. Фаза ввода для нас закончена. Проверка цепи будущих событий в заключение фазы ввода (строка 2, рис. 2.27) показывает, что в ней находятся два транзакта, по одному для каждого из блоков GENERATE в модели. Транзакт 1 изображает первого клиента, идущего в парикмахерскую. Он появится в парикмахерской в момент модельного времени, равный 14. Планируемый вход транзакта 1 в блок 1 аналогичен приходу клиента к двери парикмахерской. Транзакт 2 символизирует собой таймер, направляющийся в модель для того, чтобы завершить моделирование. Когда таймер модельного времени достигнет значения 480, транзакт- таймер, наконец, придет и, войдя в блок TERMINATE (блок 9), вызовет завершение моделирования. Заметим, что в качестве третьего элемента двух пятипозиционных записей в строке 2 на рис. 2.27 стоит слово НЕТ. Напомним, что в качестве третьего элемента выступает номер блока, в котором находится транзакт. Но транз- акты 1 и 2 не входят ни в один из блоков модели. Оии еще находятся на пути в модель, поэтому на месте номера блока стоит слово «НЕТ». Блок-схема на рис. 2.28 описывает рассмотренные нами особенности фазы ввода. Вся логика работы интерпретатора на фазе ввода, представленная в блок-схеме, хорошо понятна из приведенного выше описания. Как показано на рис. 2.28, когда фаза ввода завершается, интерпретатор переходит к фазе коррекции таймера. После первой коррекции выполняется первый раз фаза просмотра. Затем фаза коррекции таймера выполняется второй раз, фаза просмотра выполняется второй раз и т. д. Первое выполнение корректировки таймера (от строки 2 к строке 3). Интерпретатор устанавливает таймер в значение 14 — значение времени движения транзакта (транзакт 1), находящегося в начале цепи будущих событий в строке 2. Затем он перемещает транзакт 1 в пустую прежде цепь текущих событий. Следующий транзакт (транзакт 2) в ЦБС имеет значение времени движения, отличное от 14. Следовательно, первое выполнение фазы коррекции таймера закончено. Заметим, что в строке 3 на рис. 2.27 цепь текущих событий (ЦТС) содержит лишь один
единственный транзакт, описанный как 11, КМР, НЕТ, 0, 1 ]. Время входа в пяти- позиционной записи обозначено как КМР, т. е. «Как можно раньше». Все транзакты в ЦТС в позиции «время движения» имеют запись КМР. Это объясняется тем, что они «хотели» бы войти в следующий блок сейчас же (т. е. в текущие значения модельного временя), или, если вход в следующий блок закрыт, то как можно раньше. Текущий блок для этого транзакта по-прежнему содержит запись «НЕТ», поскольку транзакт все еще не вошел ни в один из блоков модели. Он займет какой-либо блок только после того, как отработает фаза просмотра. После завершения первого выполнения фазы коррекции таймера сразу же начинается выполнение фазы просмотра. Первое выполнение фазы просмотра (от строки 3 к строке 4). Выбрав транзакт 1 из начала третьей строки ЦТС, интерпретатор двигает его в блок 1 (блок' GENERATE), затем проверяет, может ли транзакт 1 быть перемещен в следующий блок — блок 2 QUEUE. Блок QUEUE не запрещает вход, поэтому попытка входа будет успешной. Теперь, поскольку транзакт может уйти из блока GENERATE, интерпретатор временно приостанавливает его продвижение и планирует приход следующего транзакта в блок GENERATE. Второй розыгрыш числа в соответствии с распределением 18 =fc 6 интервалов прихода дает значение 13 (см. табл. 2.7). Транзакт выбирается из вершины пассивного буфера (транзакт 3) и помещается в цепь будущих событий с запланированным временем входа в блок 1, равным «текущее + 13», т. е. 27. Напомним, что для определения времени прихода следующего транзакта разыгранное значение интервала прихода прибавляется к текущему значению таймера. Читать следующую карту Пвмеспшт* значение операнда А 9 счетчик завершений Установить время прихода равным значению операнда С на фазд коррекции упаймера! Резыереть значение па распределению времени прихода, установить время прихеЗа равным разыгранномузиечению Установить время прихода равным 1 выбрать следующий, транзакт из пессивнои Ь~урвра,устаао8ить ко значение времени движения раРоымзтему времени прихода. I Поместить транзакт в Ч*пь будущих еевшпий Рис. 2.28. Фаза ввода интерпретатора GPSS (планируется ввод Траазэхтов в модель через блок GENERATE с заданным авачеияеы времени движения) Что касается блока GENERATE, то здесь необходимо сделать два замечания. 1. Интерпретатор не планирует следующий приход в блок GENERATE до тех пор, пока предыдущий транзакт не сделает успешную попытку войти в следующий блок. Если елец дующим является блок, который может запрЯ тнть вход (например, блок SEIZE), то планирование будет иметь место спустя некоторое время после входа транзакта в блок GENERATE. 2. Интерпретатор прерывает движение транзакта, выходящего из блока GENERATE, hi время планирования входа его последователя После завершения планирования движение транзакта возобновляется. Выполнение этих двух условий в виде блок-, схемы показано на рис. 2.29. После завершен)» планирования транзакт 1 вызывает выполнение подпрограммы блока QUEUE. Из блма] 72
Предполагается,что I кеяеетве следующею шага интерпретатор CPSS питается продвинуть транзакт из блока вШЯАН >^ в следующий блок модели Может ли ^ —— •л/дующий блок принят^ ^транзакт ? Хнет Оставить транзакт I блоке 06NERATE i I Временно прекратить обработку тринзакта 1 Запланировать время прихода в влок СЕыевлте его последователя I Продолжение движения уже существующего транзакта в модели как можно дальше Продолжить фазу просмотра. 1 Рис. 2.39. Фрагмент блох-схемы, показывающий логику работы интерпретатора при выходе транзакта из блока GENERATE н планировании прихода его последователя QUEUE интерпретатор перемещает транзакт в блоки SEIZE, DEPART и ADVANCE. В блоке ADVANCE (блок 5) определяется время задержки в соответствии с распределением 16 — ± 4. По табл. 2.8 находим, что первым разыгранным значением является 18. Следовательно, транзакт 1 выводится из ЦТС н помещается в ЦБС. Планируется переход из блока 5 в блок 6 (блок RELEASE) в момент времени «текущий + -f 18», т. е. в момент времени 32. Теперь, поскольку транзакт 1 вызвал выполнение подпрограммы блока SEIZE при своем движении, интерпретатор заново просматривает цепь текущих событий. Цепь пуста. Следовательно, следующим шагом будет выполнение фазы коррекции таймера. Отметим, что транзакты цепи будущих событий в строке 4, если рассматривать их слева направо, имеют смысловые значения, записанные в табл. 2.9. Таблица 2.0. Смысловые значения транзактов ■ цепи будущих событий (строка 4, рис 2.27) Номер транзакта 3 1 2 Смысловое sua' сние Второй клиент идет в парикмахерскую Первый клиент стрижется Транзакт-таймер Второе выполнение фазы просмотра (от строки 5 к строке в). Взяв транзакт 3 вз начала строки 5 цепи текущих событий, интерпретатор двигает его в блок 1 (блок GENERATE), затем определяет, можно ли сразу переместить его в блок 2. Временно приостановив обработку транзакта 3, интерпретатор планирует приход следующего транзакта в блок 1 (GENERATE). В соответствии с интервалом прихода 17 (третье разыгранное значение из распределения 18 ± 6 в табл. 2.7) транзакт 4 выбирается из вершины пассивного буфера и помещается в ЦБС; планируется его вход в блок 1 в момент времени 44. Оиа занимает в ЦБС положение между транз- актом 1 и 2 в соответствии с принципом упорядочения в ЦБС. Интерпретатор возобновляет движение транзакта 3, завершая его выполнением подпрограммы блока QUEUE. Здесь транзакт безуспешно "пытается выйти из блока QUEUE и войти в блок SEIZE. Устройство JOE находится в состоянии «занято», поэтому вход в этот блок запрещен. Интерпретатор оставляет транзакт 3 в блоке QUEUE и в ЦТС, планируя войти в блок 3 «Как можно раньше». Далее интерпретатор должен продолжать работу со следующим транзактом в строке б цепи текущих событий. Но такого транзакта не существует. Поэтому следующим шагом является выполнение фазы коррекции таймера. Заметим, что таймер все равно надо было бы продвинуть, даже если бы цепь текущих событий была не пустой. Отметим, что транзакты в строке 6 на рис. 2.27 имеют смысл, указанный в табл. 2.10. Таблица 2.10. Смысловые значения транзактов в цепях текущих и будущих событий (строка в, рис. 2.27) Цепь ЦТС ЦБС ЦБС ЦБС Номер трац- зактв 3 1 4 2 Смьсловое энзчепяе Второй клиент ждет в очереди Первый клиент стрижется Третий клиент идет в парикмахерскую Транзакт-таймер Второе выполнение фазы коррекции таймера (от строки 4 к строке 5). Интерпретатор продвигает таймер4 к значению 27 — времени движения транзакта (транзакт 3), находящегося в на- чале строки 4 цепи будущих событий. Далее он перемещает транзакт из ЦБС в прежде пустую ЦТС. Следующий транзакт в ЦБС (тран- эакт 1) имеет время движения, отличное от 27. Следовательно, второе выполнение фазы коррекции таймера завершается. Начинается следующее выполнение просмотра. Третье выполнение фазы коррекции таймера (от строки в к строке 7). Интерпретатор продвигает значение модельного времени к 32 — времени движения транзакта (транзакт 1), стоящего первым в строке 6 цепи будущих событий. Далее он перемещает транзакт 1 в цепь текущих событий, где тот занимает место последнего элемента среди элементов того же приоритетного класса. Отметим, что в строке 7 в ЦТС транзакт 1 располагается за транзактом 3 (транзакт 3 уже стоит в цепи текущих событий 73
в начале третьего выполнения фазы коррекции таймера). Следующий транзакт ЦБС (транзакт 4) имеет значение времени движения, отличное от 32, Следовательно, выполняется следующая фаза просмотра. При этом транзакты, находящиеся в строке 7 цепи текущих событий, имеют смысл, указанный в табл. 2.11. Таблица 2.11. Смысловые значения транзактов в цепи текущих событий (строка 7, рис. 2.27) Номер транэакта 3 1 Сыысловое значение Второй клиент ждет в очереди Первый клиент только что завершил стрижку Третье выполнение фазы просмотра (от строки 7 к строке 8). Выбрав транзакт 3 из начала строки 7 ЦТС, интерпретатор терпит неудачу в попытке ввести транзакт в блок 3 (SEIZE) и вывести его из блока 2. Во входе в блок 3 отказано, поскольку прибор все еще не освободился. Поэтому транзакт 3 остается в блоке QUEUE и в ЦТС, причем планируется его вход в блок 3 «как можно раньше». Переходим к следующему транзакту строки 7 ЦТС (транзакту 1). Интерпретатор перемещает его из блока 5 в блок 6 RELEASE) и далее из блока 6 в блок 7 TERMINATE), где он выводится из модели и возвращается в вершину пассивного буфера. Теперь, поскольку транзакт 1 вызвал выполнение подпрограммы блока RELEASE, интепретатор вновь просматривает цепь текущих событий. Снова выбирается транзакт 3, и он снова пытается выйти из блока 2 и войти в блок 3. На этот раз попытка оказывается успешной. Выполнение последовательности SEIZE-ADVANCE-RELEASE вызывает необходимость зедержать транзакт на 12 единиц времени в соответствии с распределением 16 — ± 4 (второе значение из табл. 2.8). Транзакт 3 помещается в ЦБС; планируется вывести его из блока 5 и поместить в блок 6 в момент времени «текущий + 12» или 44. Заметим, что в ЦБС транзакт 3 попадает в один узел с транз- актом 4, который также имеет время движения, равное 44. Поскольку транзакт 4 уже находится в ЦБС, транзакт 3 помещается позади него. Напомним, что если в ЦБС возникает узел времени, то входящий транзакт попадает в цепь как последний элемент среди транзактов того же значения времени движения. Поскольку транзакт 3 вызвал выполнение блока SEIZE, интерпретатор заново просматривает цепь текущих события. На этот раз цепь пуста. Поэтому на следующем этапе необходимо выполнить фазу коррекции таймера. В это Таблица 2.12. Смысловые значения транзактов в цепи будущих событий (строка 8, рнс 2.27) Номер траизакта 3 4 2 Смысловое значение Второй клиент стрижется Третий клиент идет в парикмахерскую Транзакт-таймер время транзакты в цепи будущих событий в строке 8 имеют смысл, указанный в табл. 2.12* Четвертое выполнение фазы коррекции таймера (от строки 8 к строке 9). Интерпретатор продвигает время к значению 44 — времени движения транзакта (транзакта 4), стоящего первым в строке 8 цепи будущих событий. Затем он перемещает транзакт 4 из ЦБС в ранее пустую ЦТС. Следующий транзакт в ЦБС (транзакт 3) также имеет значение времени движения, равное 44. Он также перемещается в цепь текущих событий, где помещается за транэак- том 4 в качестве последнего элемента внутри своего класса приоритетов. Следующий транзакт в цепи будущих событий (транзакт 2) имеет время движения, отличное от 44. Таким образом, четвертая коррекция таймера завершается. Прежде чем продолжить, давайте снова посмотрим, какой смысл придается двум тран» зактам, стоящим в строке 9 цепи текущих событий (табл. 2.13). Таблица 2.13. Смысловые значения транзактов в цели текущих событий (строка 9, рис. 2.27) Номер транзакта 4 3 Смысловое значение Третий клиент только что пришел в парикмахерскую Второй клиент только что закончил стрнжку Четвертое выполнение фазы просмотра (от строки 9 к строке 10). Выбрав транзакт 4, стоящий в начале строки 9 ЦТС, интерпретатор помещает его в блок 1, далее определяет, можно ли его переместить из блока 1 в блок 2.{ Временно прекратив обработку транзакта 4, интерпретатор планирует время прихода его последователя в блок 1 (GENERATE). Тран--' закт 1 выбирается из вершины транзактов пассивного буфера и помещается в цепь будущих событий, причем планируется время входа в блок 1 в момент времени «текущий + 15»,: т. е. 59 (в соответствии с табл. 2.7, четвертое значение для распределения 18 =£ 6 равно 15). Заметим, что это снова транзакт 1, который вернулся в модель из пассивного буфера. Тран- 74
закт, который прежде уже был в модели и символизировал собой первого клиента, теперь вернулся «в игру», символизируя четвертого клиента того же дня. Поскольку интерпретатор всегда возвращает транзакты в вершину пассивного буфера, то понятно, что некоторые транзакты могут «прожить несколько жизней» в течение периода моделирования. В этот момент времени транзакт 4 должен остаться в блоке 2 (QUEUE), поскольку блок SEIZE не может принять его. Интерпретатор переходит к следующему транзакту строки 9 ЦТС (транзакту 3), н последовательность RELEASE—TERMINATE возвращает его в вершину пассивного буфера. Далее, поскольку был обработан блок RELEASE, интерпретатор заново просматривает цепи текущих событий. Выбирается транзакт 4, который снова пытается пройти через блоки SEIZE и DEPART и войти в блок ADVANCE (блок 5). Из табл. 2.8 берем третье значение из разыгранных по распределению 16±: 4 в блоке ADVANCE. Это значение равно 14. Следовательно, транзакт 4 перемещается из цепи текущих событий в цепь будущих событий, причем планируется переход из блока 5 в блок 6 в момент времени, равный 58. Теперь, поскольку отработал блок SEIZE, интерпретатор заново просматривает цепь текущих событий. На этот раз цепь пуста. Следовательно, следующим шагом является выполнение фазы коррекции таймера в пятый раз. На этом мы закончим описание состояний цепи, показанных на рис. 2.27. 2.22. Порядок обработки одновременных событий,ч возникающих при моделировании В гл. 1 довольно подробно был рассмотрен вопрос о временных узлах (см. 1.3.5 и упражнения 8, 9, б и 12, в параграфе 1.6). Как указывалось, временной узел возникает в том случае, когда два или более событий запланированы на одно и то же значение модельного времени. События, вовлекаемые в один узел, называют одновременными событиями. В гл. 1 также было установлено, что в случае временного узла события, вовлеченные в узел, должны выполняться последовательно один за другим. Другими словами, одновременные события имеют последовательный характер при моделировании. При возникновении временного узла надо решить, в какой последовательности будут обрабатываться одновременные события. Если не делается никаких формальных предположений, то последовательность обработки носит случайный характер. В качестве конкретного примера одновременных событий в GPSS рассмотрим пример моделирования 2А и соответствующие состояния цепей, показанные на рис. 2.27. В строке 9 на рис. 2.27 в цепи текущих событий мы видим два события, запланированных на одно и то же модельное время 44. Первым из этих событий, [4, КМР, НЕТ, 0,1], является приход клиента в парикмахерскую. Вторым из этих событий, [3, КМР, 5, 0, 6], является завершение обслуживания клиента, находящегося в кресле парикмахера. На самом деле следующий клиент входит в дверь как раз в момент, когда обслуживаемый клиент поднимается из кресла парикмахера. Посмотрим теперь, как эта реальная ситуация моделируется в примере 2А. При просмотре цепи текущих событий интерпретатор GPSS сначала обнаруживает транзакт 4. Транзакт 4 последовательно входит в блок GENERATE, затем в блок QUEUE и должен там задержаться. Фактически, интерпретатор осуществляет вход следующего клиента в дверь и присоединяет его к очереди. Далее, продолжая просмотр цепи текущих событий, интерпретатор выбирает транзакт 3. Этот транзакт вводится в блоки RELEASE и TERMINATE, что означает «клиент уходит из парикмахерской». Здесь, следовательно, произошли два события —.приход клиента и завершение обслуживания. Последовательность обработки была: приход клиента, а затем завершение обслуживания просто потому, что транзакт 4 оказался впереди тран- закта 3 в цепи текущих событий. Если бы относительная последовательность этих двух событий в ЦТС оказалась инверсной, то и обработка этих событий была бы инверсной. Конечно, в этой точке система еще не окончательно изменяет свое состояние в момент модельного времени 44. Сейчас возникло условие, при котором произошло событие «перевод состояния парикмахера в положение свободно». Поскольку как часть завершения обслуживания выполняется обработка блока RELEASE, интерпретатор заново' просматривает цепь текущих событий. В результате интерпретатор снова выбирает транзакт 4, продвигая его в тот же момент модельного времени через блоки SEIZE и DEPART и вводя его в блок ADVANCE. Следовательно, произойдет событие «занятия». На этом и завершатся действия в момент времени 44. Должно быть ясно, что когда возникают временные узлы в примере моделирования 2А, то последовательность, в которой обрабатываются вовлеченные события, зависит от случая. Однако и ие требуется никакого формального контроля в этой простой модели, поскольку интерпретатор заново просматривает ЦТС после обработки блока RELEASE. Если бы это было 75
не так, модель была бы неверной, так как хотя и существовали бы в момент времени 44 ожидающий клиент н освободившийся парикмахер, никакие действия не были бы предприняты для того, чтобы клиент перешел на обслуживание к парикмахеру. Интерпретатор, следовательно, построен таким образом, что в этой модели ему безразлична последовательность возникновения одновременных событий. В примере моделирования 2А легко поменять условия таким образом, что последовательность, в которой будут записаны состояния в цепях на рис. 2.27 в момент времени 44, станет небезразличной. Предположим, что прибывающий клиент решает остаться только в том случае, если он немедленно может начать обслуживаться у парикмахера, и что модель модифицируется таким-образом, чтобы учесть это предположение (отметим, что мы еще не изучили способа, как это сделать). В этом случае, если приход возникнет раньше события завершения, пришедший клиент не останется на обслуживание, а если последовательность событий будет обратной, останется. При таких условиях очень важно разработать модель таким образом, чтобы в случае возникновения временных узлов завершение обслуживания всегда происходило раньше прихода заявки. Очевидно, что именно такой будет последовательность событий, если принять меры к тому, чтобы обеспечить условие расположения транзакта «завершение обслуживания» ближе к началу ЦТС, чем транзакт «приход заявки». Уже упоминалось, что относительное расположение транзактов в ЦТС определяется уровнем приоритетов. Если бы транзакт «завершение обслуживания» имел более высокий приоритет, чем транзакт «приход заявки», то имела бы место желаемая последовательность обработки событий. Позднее мы увидим, каким образом может устанавливаться уровень приоритетов для того, чтобы избежать проблем, которые возникли бы в связи с временными узлами. 2.23. Упражнения 1. Общие вопросы по теме параграфов 2.20 и 2.21. а). Что такое «время движения?». б). Какая информация записывается в пятой позиции пятипозициояиой записи транзакта? в). Сколько всего существует цепей текущих и будущих событий? г) В каком порядке располагаются тран- закты в цепи будущих событий? д). В каком случае могут возникнуть временные узлы в цепи будущих событий? Если они возникают, то как они разрешаются? е). В каком порядке располагаются траыз- акты в цепи текущих событий? 76 ж). В каком случае могут возникнуть временные узлы в цепи текущих событий? Если они возникают, то как они разрешаются? з). Как интерпретатор GPSS в момент начала фазы коррекции таймера определяет время будущего события в модели? и). После того, как таймер модельного времени продвинут, сколько транзактов выбирается из цепи будущих событий и помещается в цепь текущих событий? к). При таких условиях транзакт выбирается из цепи текущих событий н помещается обратно в цепь будущих событий? л). В чем разница между пассивным и активным буферами транзактов в модели? м). В каком порядке располагаются транз- акты в пассивном буфере? н). Почему нет необходимости разрешать проблему временных узлов в пассивном буфере? о). Каким образом транзакты могут «жить», несколько раз в течение периода моделирования? п). Проанализируйте следующее утверждение: «После каждой коррекции таймера модельного времени интерпретатор GPSS просматривает цепь текущих событий ровно один раз, а затем снова осуществляет коррекцию времени». р). Почему может случиться так, что цень^ текущих событий не обязательно должна быть пустой, прежде чем интерпретатор перейдет к выполнению фазы коррекции времени? с). Проанализируйте следующее утвержде^ нне: «После завершения фазы ввода моделиj в цепи будущих событий находится ровно один, транзакт для каждого блока GENERATE в мо-1 дели*. . т) Проанализируйте следующее утверждм нне: «Наименьшим временем движения, котоЯ рое когда-либо может иметь транзакт, является 1». у). Правильно ли то, что цепь текущих со-; бытии всегда пуста сразу после завершевд»| фазы ввода модели? J 2. Специальные вопросы по параграфу 2.2Я пример использования цепей. . а). Каков уровень приоритетов у всех травз-J актов в модели на рнс. 2.26? Почему этот уро>> вень приоритетов только один? 1 б). Может ли транзакт 2 когда-либо войти в модель, символизируя собой клиента? ГЫ чему да или почему нет? в). Продолжите таблицу на рис. 2.27 так* чтобы она включала строки П, 12, 13 и И При этом считайте, что следующим разыграл ным значением интервала прихода в блок I является 16, а следующим временем обслужив» ния в блоке 5 является 17. Теперь ответил на вопросы: , 1) какое значение таймера в строках Ниш
2) какое значение таймера в строках 18и14> 3) каков номер транзакта, представляющего четвертого клиента? 4) сколько свободного времени было у парикмахера после обслуживания третьего клиента и до обслуживания четвертого? 5) каков номер транзакта, представляющего пятого клиента? 6) в какой момент времени пятый клиент войдет в парикмахерскую? 7) сколько времени придется ждать пятому клиенту в очереди, если вообще придется? 3. Будем рассматривать модель на рис. 2.26. Предположим, что операнды блоков 1 и 5 равны «30, 28» и «18,6» соответственно и что первыми значениями интервалов прихода и времени задержки при конкретном моделировании будут следующие: интервалы времени: 7, 10, 3, 6, 49, ...; время обслуживания 19, 15, .... Используя подход, описанный в параграфе 2.21, проследите за движением транзактов в модели в терминах нх присутствия в цепях текущих и будущих событий. Нарисуйте первые 10 строк состояний цепей. Теперь ответьте на вопросы: а). Какое время зарегистрировано таймером модельного времени в строке 10 в таблице состояний цепей? б). Каков номер четвертого транзакта, попавшего на обслуживание к парикмахеру? в). Точно ли два транзакта находятся в цепи текущих событий после завершения фазы просмотра? Каковы номера двух транзактов когда и если это условие возникает? 4. Продумайте, глядя на рис. 2.29, в чем различие между двумя сегментами, изображенными на рис. У4. б. а). Предположим, что пара QUEUE- DEPART извлечена из модели на рис. 2.26. Используя интервалы и время обслуживания, показанные в табл. 2.7 и 2.8, установите времена, в которые приходят второй, третий и четвертый клиенты в парикмахерскую («приход в парикмахерскую» определяется как переход транзакта-клиента из блока GENERATE в следующий блок). б). Предположим, что разработчик не желает собирать данные об очереди для системы, представленной на рис. 2.26. Если поступить, как это сделано в п. а, т. е. просто убрать карты QUEUE и DEPART из модели, то это приведет к искажению в картине приходов. Покажите, хак можно избежать искажения введением блока ADVANCE между блоками GENERATE и SEIZE. 6. Посмотрите модель на рис. У6. Предположим, что модель выполняется и что параметром А карты START является 4. "generate Li SEIZE 1-Й СЕГМЕНТ МОДЕЛИ. GENERATE \А ADVANCE 9 I L V.10.3 '' ' QUEUE 1' SEIZE 3 A RELEASE w "X rERMINATE O3 Рис У6 2-Й СЕГМЕНТ МОДЕЛИ Рнс У4 а). В какой момент времени первый транзакт войдет в блок GENERATE? б). В какой момент времени в блок GENERATE войдет его последователь? в). В какой момент времени последователь выйдет из блока GENERATE? г). В какой момент третий транзакт войдет в блок GENERATE? д). В какой момент.устройство будет занято в третий раз? е). Сколько времени проходит между последовательными выходами транзактов из блока GENERATE? ж). В какой момент времени завершится моделирование? 7. Посмотрите на модель, состоящую нз четырех сегментов на рис. У7. а). В какие моменты времени первые три транзакта войдут в блок QUEUE в сегменте 1? б). В какие моменты времени первые три транзакта в сегменте 2 войдут в блок QUEUE? в). Каковы наименьшее и наибольшее возможные времена, в которые первые три транзакта в сегменте 3 могут войти в блок QUEUE? 77
GENERATE ( L VgOO ADVANCE 50 1-Й СЕГМЕНТ МОДЕЛИ GENERATE QUEUE b 950.50 _L QUEUE 2-Й СЕГМЕНТ МОДЕЛИ GENERATE 900 3-Й СЕГМЕНТ МОДЕЛИ "ADVANCE 50.50 QUEUE 3 4 Й СЕГМЕНТ МОДЕЛИ Рис. У7 г). Каковы наибольшее и наименьшее возможные времена, в которые первые три транзакта в сегменте 4 могут войти в блок QUEUE? 8. В некоторой конкретной модели тракзакты символизируют собой самолеты, прибывающие в аэропорт. Перед приземлением они присоединяются к очереди STACK, моделирующей группу самолетов, летающих над аэропортом и ожидающих разрешения на посадку. Самолеты прилетают в аэропорт каждые 900 единиц времени, но они могут опаздывать на 50 =t 50 единиц времени. Самолеты прилетают независимо друг от друга. Поэтому если один самолет опаздывает, это никак не сказывается на других самолетах. Напишите модель этой системы. 9. Эти задачи откосятся к проблеме временных узлов в примере моделирования 2А. а). В момент времени 44 на рис. 2.27 существует узел с событиями «приход клиента» и «завершение обслуживания». Интерпретатор GPSS поступает таким образом, что событие прихода всегда находится перед событием завершения обслуживания; в простом случае это означает, что транзакт «приход клиента» предшествует транзакту «завершение обслуживания» в цепи текущих событий. Почему два рассматриваемых транзакта располагаются именно таким образом? Попробуйте ответить в терминах реальной последовательности, в которой планируется выполнение рассматриваемых событий. б). В модели 2А, как показано на рис. 2А.1, может ли: 1) очередь быть пустой; 2) существовать временной узел с событиями завершения обслуживания и прихода клиентов; 3) событие завершения обслуживания оказаться впереди события прихода клиента? Поясните подробно почему да или почему иет. в). Почему в примере моделирования 2А никогда два клиента не приходят одновременно? Предложите два различных способа модификации модели таким образом, чтобы оказалось возможным наличие временных узлов с событиями «приходы клиентов». 2.24. Распечатка цепей текущих и будущих событий Разработчик может довольно долго заниматься моделированием на GPSS, не интересуясь состоянием цепей. Однако разработчик может сделать много неверных моделей, если он не понимает принципа функционирования цепей. Даже если моделируемая система относится к системам средней сложности, разработчик обя зательно задается вопросом: что далее должад произойти в модели? Поскольку одновремен ные события в GPSS выполняются последов* тельно, вопрос о том, что же происходит далее в модели, может иметь очень важные последствия. Ответ на этот вопрос должен быть всегда дан в терминах цепей событий. Разработчик, незнакомый с этими понятиями, должен либо удовлетвориться отсутствием ответа на вопрос о том, что же будет дальше, либо просто лолжеа надеяться на то, что модель верка или почти что верна. Это, вообще говоря, недопустимо. Разработчик, знакомый с понятиями цепей, всегда сумеет найти ответ на поставленный вопрос, и будет лучше понимать поведение моделей. Время от времени ему может понадобиться по» лучить распечатку цепей для того, чтобы сд* лать некоторые заключения относительно того, как работает конкретная модель. Распечатку цепей можно получить любым из указанных ниже способов. 1. Если возникает некоторая ошибка в процессе моделирования, то интерпретатор GPSS автоматически распечатывает содержимое це- 7Я
пей текущих и будущих событий для удобства отладки разработчиком своей модели. 2. В конце моделирования интерпретатор GPSS в распечатку выходных данных включает также и распечатку цепей, если в качестве операнда D карты START используется единица. 3. В процессе моделирования можно делать распечатку цепей в любой желаемый момент. Это, однако, можно осуществить в том случае, если разработчик предусмотрел такую распечатку в логике модели. Результат включает серию «снимков» цепей, выполняемых в процессе моделирования. Посмотрим теперь, как выглядят распечатки цепей, выдаваемые интерпретатором GPSS. Предположим, что используется упомянутый выше подход (2) для получения такой распечатки при выполнении модели, приведенной яа рис. 2А.2. Необходимо только добавить I в качестве операнда D карты START и еще раз выполнить прогон модели. В результате получается распечатка, показанная на рис. 2.30 и 2.31, на которых приведены цепи текущих и будущих событий соответственно. На рис. 2.30 и 2.31 колонки содержат информацию в виде пятипозицнонной записи транзактов (см. 2.21). Дня удобства идентификации она отмечена символами А, В, С, D и Е. В этих колонках указаны номер транзакта, время движения (т. е. время выхода из блока), текущий блок, уровень приоритета и номер следующего блока соответственно. Эта информация при чтении слева направо в распечатке цепи идентична рассмотренной ранее информации пятипози- ционцой записи. Значение информации в колонках от А до Е описано в виде таблицы к рис. 2.30. Прочие колонки, присутствующие на рис. 2.30 и 2.31, пока прокомментированы не будут. Эти Таблиц» 2.14. Интерпретация транзактов, приведенных на комментарии появятся в книге далее. (В приложения D дано полное описание значений всех колонок распечатки цепей 'GPSS.) Информация, показанная на рис. 2.30 в распечатке цепи текущих событий, поясняется табл. 2.14 (только для примера моделирования 2А). Сейчас мы рассмотрим информацию, представленную в таблице, отметив для себя, что здесь дана информация о цепи текущих событий в момент модельного времени, равный 480, т. е. сразу же после завершения моделирования. Отметим, что информация о цепи на рис. 2.30 в таблице повторена в виде пятипозицнонной записи, поскольку по сути это то же, что и ишрормация в распечатке. Очевидно, что распечатка содержит больше информации, чем имеется в пятипозицнонной записи. Также можно отметить, что в распечатке цепи текущих событий интерпретатор GPSS не записывает КМР в позиции «время движения» (колонка, помеченная литерой В иа рис. 2.30). Элемент, который фактически появляется в колонке в распечатке цепи, является самым последним значением времени движения для рассматриваемого транзакта. Запись КМР была введена в параграфе 2.21 для удобства разъяснения состояния цепей. Информация, показанная на рис. 2.31 в распечатке цепи будущих событий, приведена в виде пятипозиционных записей в табл. 2.15. Таблица дает интерпретацию первых из имеющихся транзактов примера моделирования 2А. Интерпретацию прочих транзактов мы оставляем для упражнений. При составлении табл. 2.15, как и раньше, предполагали, что цепь будущих событий показана в момент времени 480, т. е. сразу же после завершения моделирования. Отметим, что интерпретатор не рис 2.30 Номер трапоакто 4 3 Информация в виде пятипозицнонной записи [4,472,2,0,3] 13,480,5,0,6] Значение Транзакт 4 является клиентом, находящимся в парикмахерской и ожидающим обслуживания. Его следующим блоком является блок 3 (SEIZE). Парикмахер занят обслуживанием транзакта 3 Транзакт 3 является клиентом, только что закончившим стряжку. Заметьте, что он должен перейти в блок 6 (RELEASE) в момент времени 480 — время завершения моделирования Таблица 2. IS. Интерпретация транзактов, приведенных иа рис 2.31 Номер троновкта J 5 Информация в виде пнтилоанцнояпой записи [1,489,НЕТ,0,1] (б,Э60,НЕТ,0,8) Значение Транзакт 1 является следующим клиентом, идущим в парикмахерскую. Планируется его приход в блок 1 (GENERATE) в момент времени 489. Он опоздает иа 9 мин Смотри упражнение 2, параграф 2.25 79
CURRENT EVENTS CHAIN TRANS BDT BLOCK 4 «72 2 ря sf 3 «eo s ,1 NBA SET 3 « 6 3 ;. MARK-TIME 472 4 S3 PI 0 0 0 0 0 0 P2 0 0 0 0 0 1) P3 0 0 0 0 0 0 p* 0 0 0 0 0 0 SI Tl DI CI MC PC PF 1 1 2 Рис. 2.30. Ввд распечатки цепи текущих событвй прн завершении выполвешш ноделв, приведенной на рве. 2А.2: Колонка А В Значение Колонка Номер травзахта I С Время выхода а* блока (BDT) то же. что в II время движения, т. е. момент временв. когда 1 траяаакт должен сделать попытку войта в В следующий блок. Отметим, что в целя теку- 1 щвх событие антерпретатор не непользует 1) записи КМР Заачеяве Номер текущего блока; номер блока, а котором сейчас находятся транзакт. Отметвм. что в цене будущих событвй антерпретатор ае использует запись НЕТ, если транзакт не находятся в блоке, а просто оставлвет эту поэи- цню незаполненной Колонка D Е Значение Уровень приоритета (PR); если приоритет равен нули, то позиция остается незаполненной Номер следующего блока (NBA); номер блока, в который транаакт будет пытаться войти FUTURE EVENTS CHAIN TRANS ВОТ BLOCK PR SF NBA SET MARK-TIME I *89 I I -27 PI 0 0 0 О О О P2 О О О О О О РЗ О О О О О О Р4 SI о о о о о о TI DI CI MC 4 PC РР Рве 2.31. Ввд распечатки цепи будущих событвй прв завершеннв выполнения модели, приведенной на рнс. 2А.2 (значения колонок А, В, С, D и Е объяснены в таблице к рис 2.30)
использует запись НЕТ в колонке «текущий блок» (колонка С на рис. 2.31) для тех транзак- тов, которые еще не вошли в блок GENERATE. В этом случае позиция остается незаполненной. Подобно записи КМР запись НЕТ использовали лишь для удобства описания состояний (см. параграф 2.21). Метод получения распечатки состояния цепей в процессе моделирования, а не в конце, будет рассмотрен в параграфе 2.42. Пока достаточно знать, как выглядит распечатка содержимого цепей и как ее можно выполнить ^в конце моделирования. 2.25. Упражнения 1. В примере моделирования 2А два события были запланированы на одно и то же время 480. Этими двумя событиями являются завершение моделирования и завершение обслуживания. а). Поясните, почему можно сделать указанное выше утверждение? б). Какое нз этих двух событий произойдет раньше в момент времени 480 и почему? в). Могут лн перед завершением моделирования произойти другие события? г). Предложите метод, позволяющий реверсировать последовательность событий в момент времени 480? (т. е. предложите метод для того, чтобы заставить таймер быть последним тран- эактом, обрабатываемым в момент времени 480). д). Если бы последовательность событий была обратной в момент времени 480, сколько тран- зактов осталось бы в цепи текущих событий при завершении моделирования? Поясните ответ подробно. 2. Объясните информацию, относящуюся к транзакту 5 на рис. 2.31 в цепи будущих событий. Почему этот транзакт выбирается из пассивного буфера и помещается в цепь будущих событий до выполнения завершения моделирования? 3. В примере моделирования 2А в момент времени 480 один клиент ждет обслуживания. Посмотрите на рис. 2.30 и ответьте, сколько времени клиент провел в ожидании. 4. Измените операнды А н В блоков 1,5 и 8 на рис. 2.26 таким образом, чтобы они стали соответственно равны «30,0», «20,0» и «90,0». Затем проделайте следующее. а). Вручную (без ЭВМ) составьте таблицу состояний цепей, аналогичную той, что показана иа рис. 2.27. Заметьте, что в момент прихода транзакта-таймера при значении таймера 90 потребуется сделать всего несколько операций, прежде чем моделирование завершится. б). Выполните моделирование на ЭВМ, задав операндом D карты START единицу. Тогда при завершении моделирования распечатаются цепи текущих и будущих событий. в). Сопоставьте распечатку цепей текущих и будущих событий с тем, что получилось у вас в последней строке таблицы, составленной вручную. Естественно, что они должны совпадать. Если это не так, исправляйте составленные вами состояния до тех пор, пока не получите совпадения с машинной распечаткой. г). Посмотрите в таблицу, составленную вами, и выпишите, сколько из проведенных 90 мин парикмахер простаивал. Используйте это число для расчета его нагрузки (относительное время, которое он был занят). Полученное вами число должно совпадать с информацией, содержащейся в машинной распечатке. 2. 26. Пример моделирования 2В. Расширение системы обслуживания с одним прибором и очередью 1. Постановка задачи. В парикмахерскую с одним креслом могут приходить клиенты двух типов. Клиенты первого типа желают только стричься. Распределение интервалов их прихода 35 ± 10 мин. Клиенты второго типа желают постричься и побиться. Распределение интервалов их прихода 60 — 20 мин. Парикмахер обслуживает клиентов в порядке «первым пришел — первым обслужен». Такая ситуация может быть изображена рис. 2В.1, на котором кружками представлены клиенты, желающие только стричься, а квадратами обозначены клиенты, желающие и постричься и побриться. В момент, который изображен на рис. 2B.I, в кресле парикмахера сидит клиент, который только стрижется, а в очереди сидят только стригущийся, стригущийся и бреющийся и снова только стригущийся клиенты. На стрижку уходит 18jj=6 мин, а на бритье 10 ^ 2 мин. ~""~ ""Необходимо написать модель парикмахерской на GPSS вместе с картами, обеспечивающими сбор данных об очереди, образуемой ожидающими клиентами. 2. Метод построения модели. Сначала возникает желание попытаться построить такую модель с одним прибором и очередью в виде единственной последовательности блоков, аналогично той, которая была на рис. 2А.1. Но возникают вопросы: «Как один блок GENERATE можно использовать для моделирования двух типов приходов?» и «Как реалн- Приход _ _, л ,-, Уход — -О □ О—»-|0] *• Очередь Прибор Рис. 2В.1. Дисциплина обслуживания «первым пришел — первым обслужен» прн наличии клиентов доух типов 6 Т. Дж. ШрпЯбер 81
зовать различие в обслуживании только стригущихся и бреющихся клиентов?» Довольно быстро можно прийти к выводу, что у нас пока нет средств для разработки такой модели в виде единственной последовательности блоков. Однако такую систему легко промоделировать с помощью двух независимых сегментов или последовательностей. Одна из последовательностей моделирует обслуживание только стригущихся клиентов, а вторая — стригущихся и бреющихся. В каждой из двух последовательностей пара блоков QUEUE—DEPART описывает одну и ту же очередь, поэтому клиенты, проходящие в этих последовательностях, обеспечивают совместный сбор статистики. Таким же образом пара блоков SEIZE— RELEASE описывает в каждой из двух последовательностей один и тот же прибор и моделирует самого парикмахера. В сегменте только стригущихся блок ADVANCE используется для моделирования времени стрижки; в сегменте стригущихся и бреющихся пара последовательных блоков ADVANCE используется для моделирования затрат времени на бритье и далее на стрижку соответственно. При таком подходе моделировать систему довольно легко. 3. Таблица определений. Единица времени: 1 мин. Таблица 2В.1. Таблица определений примера моделировании 2В Элементы GPSS Транзакты: 1-й сегмент модели 2-й сегмент модели 8-й сегмент модели Приборы: Очереди: JOEQ Интерпретация Только стригущиеся клиенты Стригущиеся и бреющиеся клиенты Таймер Парикмахер Очередь, используемая для сбора статистики ожидания клиентов обоих типов 82
4. Блок-схема. GENERATE ( L \ 1 ' QUEUE \ SEIZE ' ' DEPART ' 1 ADVANCE IB,6 ' RELEASE LOEQ A tJ0E\ Si ЪОЕ V I TERMINATE ПРИХОД ТОЛЬКО СТРИГУЩИХСЯ КЛИЕНТОВ ПРИСОЕДИНЕНИЕ К ОЧЕРЕДИ ПЕРЕХОД В КРЕСЛО ПАРИКМАХЕРА УХОД ИЗ ОЧЕРЕДИ СТРИЖКА У ПАРИКМАХЕРА ОСВОБОЖДЕНИЕ ПАРИКМАХЕРА УХОД ИЗ ПАРИКМАХЕРСКОЙ 1-й СЕГМЕНТ МОДЕЛИ GENERATE \J>0,20 J QUEUE JOEQ SEIZE Л JOE. DEPART JOEQj ADVANCE 10.2 ) ' ADVANCE 18,6 \ ' RELEASE Vjoe> V 1 TERMINATE ПРИХОД СТРИГУЩИХСЯ И БРЕЮЩИХСЯ КЛИЕНТОВ ПРИСОЕДИНЕНИЕ К ОЧЕРЕДИ ПЕРЕХОД В КРЕСЛО ПАРИКМАХЕРА УХОД ИЗ ОЧЕРЕДИ БРИТЬЕ У ПАРИКМАХЕРА СТРИЖКА У ПАРИКМАХЕРА ОСВОБОЖДЕНИЕ ПАРИКМАХЕРА УХОД ИЗ ПАРИКМАХЕРСКОЙ GENERATE 480 TERMINATE 3-Й СЕГМЕНТ МОДЕЛИ (СЕГМЕНТ ТАЙМЕРА) 2-Й СЕГМЕНТ МОДЕЛИ Рис. 2В.2. Блок-схема примера моделирования 2В 83
5. Распечатка программы. BLOCK NUMBER OPERATION SIMULATE A.B.C.D.E.F.G COMMENTS MODEL 5EGMEMI | CARO NUMHFR I Г i GENERATE, QUEUE SP liF DEPART ADVANCE RELEASE TERMINATE 3S. 10 JO to JOE JOtO la.о JOE MllDtL 5EGMLM ? GE Nfc R A 1 E QUEUE St \/t HEPAR T ADVANCE ADVANCE МНЕ ASE TERMINATE '•0.Г Jf»EO JUI juro 10.7 IU.6 joe MOOEL SEGMENT 3 GENERATE 480 TERMINATE 1 CONTROL CARDS HAIRCUT-ONLY CUSTOMERS ARRIVE ENTER THE LINE CAPTURE THE BARBER LEAVE THE LINf USL BARUFR FREE THE HAHBER LEAVE THE SHOP SHAVE-AND-HA1RC UT CUSTOMER? ARRIVE ENTER THE LlNC CAPTURE THE RARHFR LEAVE iHL LINE USE HARBER FOB SMAVL USL BARKER FOR HAIRCUT FREE THE BARBER LEAVE THE SHUP START ENO TIMER ARRIVES AT TIME ABO SHUT OFF THL RUN START THE RUN: GET CHAIN PRINTOUT AT ENO RETURN CONTROL TO tIPERATiNG SYSTEM I ? I I I" 14 I ft I т le 1« ?0 ?l T? ?1 ?1 ?s ?6 ?T 211 ?» зо Л1 J2 Рис. 2B.3. Распечатка программы примера моделирования 2В 6. Выходные данные. RELATIVE CLOCK «LOCK COUNTS' ' ULOC* CURHtNf «HO AdSCUU CLOCK «LOCK CVNPfcNl «00 BLOCK CUURENT *■ AClLjrV JDG AVCMA6. UT1L.IZA1-UI4 ■ ВЧГ NHMHI «J I- <4 т •« 11 •: • 0 average т me/THAN /..**■> -iCUIhu 1ЯАЫ7. NO. 1 PREE40I|4G TOAN5. МП. DuFiJE MAXIMUM AVC->ACE TUIAL 7EBO PERCENT CONftNtS CUNttUT'. tNlBltS CNTRirS 2CRO& JOfO Я • "?* 2 I * »4.D iAVERAGir TIHF/1MANS ° АУЕЙАОЕ HMt/lHANS EXCLUDING ZCftO E'tTMlCS AVCO*f.€ t|m; f »<«Nt» 1Л.ООО $*VLUM,L 1 1*4 • IHAS-. M.I*.' ' lAHtr NUMStt. COIMrtjNl COMTCNTfc сиЯйСМГ EVFtrs CHAIN IRAN* вОТ 6lOCk H Tl II CI K PC PF ri<iuMt CVE4T5 CHAIN ША1Ч1 1*01 ULIKK I'fi Sr sdA )l II II П M "f Pf A) Рис. 2B.4. Часть распечатки выходных данных примера моделирования 2В: а — зиачення времени и список блоков; б — статистические данные по прибору; • — статвстнческне данные по очереди; е — цепь теку щнх событий; а — цепь будущих событий
GENERATE QUEUE jOEQ1 QUEUE SEIZE A DtPART DEPART ADVANCE 18,6 ^T RELEASE w ERMIN* ^ TERMINATE ПРИХОД ТОЛЬКО СТРИГУЩИХСЯ КЛИЕНТОВ ВХОД В ОЧЕРЕДЬ "АГРЕГИРОВАННОЙ- СТАТИСТИКИ- fr~lf\ входе TYPEI) ОЧЕРЕДЬ РАЗДЕЛЕННОЙ СТАТИСТИКИ" ПЕРЕХОД К ПАРИКМАХЕРУ ""*Ч УХОД «3 ОЧЕРЕДИ [TYPEI) -РАЗДЕЛЕННОЙ >ОС СТАТИСТИКИ' "ХОД ИЗ ОЧЕРЕДИ J°E^J "АГРЕГИРОВАННОЙ стдтистики- СТРИЖКА У ПАРИКМАХЕРА ОСВОБОЖДЕНИЕ ПАРИКМАХЕРА УХОД ИЗ ПАРИКМАХЕРСКОЙ 1-Й СЕГМЕНТ МОДЕЛИ GENERATE 60,20 ост QUEUE JOEQ) QUEUE [TYPE2) SEIZE л l/°4 DEPART (TYPE2) DEPART JOEQ1 СТРИЖКА У ПАРИКМАХЕРА ОСВОБОЖДЕНИЕ ПАРИКМАХЕРА УХОД ИЗ ПАРИКМАХЕРСКОЙ ПРИХОД СТРИГУЩИХСЯ И БРЕЮЩИХСЯ КЛИЕНТОВ ВХОД В ОЧЕРЕДЬ АГРЕГИРОВАННОЙ СТАТИСТИКИ" ВХОД В ОЧЕРЕДЬ "РАЗДЕЛЕННОЙ СТАТИСТИКИ" ПЕРЕХОД К ПАРИКМАХЕРУ УХОД ИЗ ОЧЕРЕДИ •РАЗДЕЛЕННОЙ СТАТИСТИКИ" УХОД ИЗ ОЧЕРЕДИ "АГРЕГИРОВАННОЙ СТАТИСТИКИ" БРИТЬЕ У ПАРИКМАХЕРА GENERATE V480 1 TERMINATE 3-Й СЕГМЕНТ МОДЕЛИ (СЕГМЕНТ ТАЙМЕРА) 2-Й СЕГМЕНТ МОДЕЛИ Рис 2В.5. Пример моделирования 2В с раздельными и общей очередями для пользователей двух типов
7. Обсуждение. Логика моделирования. Блок-схема, соответствующая разработанному подходу, представлена на рис. 2В.2. Сегмент 1 моделирует обслуживание только стригущихся клиентов. Сегмент 2 моделирует обслуживание стригущихся и бреющихся клиентов. Сегмент 3 определяет логику для таймера. Заметьте, что сегменты I и 2 содержат пару блоков QUEUE—DEPART, использующую одну и ту же очередь (JOEQ). Заметьте также, каким образом каждый из этих сегментов включает пару блоков SEIZE—RELEASE, использующую один и тот же прибор (JOE). Возможность ссылки на один и тот же прибор или очередь из нескольких пар блоков нами еще не была рассмотрена, но не существует причин, из-за которых этого нельзя было бы сделать. В самом деле, гибкость, достигаемая многократными ссылками на заданные элементы GPSS, становится из этого примера очевидной. Распечатка результатов. (Полное время, необходимое для моделирования на IBM 360/67, равно 1,8 с. Обсуждение проблемы временных затрат при моделировании на GPSS смотри в гл. 4). Статистические данные, описывающие производительность прибора в модели, показаны на рис. 2В.4, б. Эти данные показывают суммарный эффект от обслуживания парикмахером клиентов обоих типов. Из NUMBER ENTRIES (ЧИСЛО ВХОДОВ) видно, что парикмахер был занят всего 20 раз. Не делается никаких указаний, сколько из этих 20 клиентов относятся к типу только стригущихся, а сколько к другому типу. Выходные данные показывают, что парикмахер был занят 89,7% времени, но не указано, какая часть этого времени потрачена на обслуживание только стригущихся, а какая на стригущихся и бреющихся клиентов. Аналогичным образом, статистические данные, показанные на рис. 2В.4, в, описывают поведение очереди модели также в агрегированном виде. Не делается различия между только стригущимися и стригущимися и бреющимися клиентами. В модели ничего не предпринято, чтобы такое различие сделать. Для того чтобы можно было осуществить такое различие, необходимо соответствующим образом переделать модель. Предположим, что необходимо собрать статистику и по каждому типу клиентов (т. е. дифференцированным образом), и по обоим типам клиентов (т. е. агрегированным образом). Для сбора дифференцированной статистики рис. 2В.2 модели должен быть дополнен введением дополнительной очереди в сегмент I и в сегмент 2. Когда это будет сделано, модель сможет одновременно обслуживать три раздельные множества записей характеристик ожидания. На рис. 2В.5 показана блок-схема рис. 2В.2 после ее модификации в соответствии со сделанными предложениями. Дополнительные очереди, названные TYPE1 и TYPE2, введены соответственно в сегмент 1 и в сегмент 2. Заметим, что когда клиент входит в сегмент 1, он присоединяется к очереди JOEQ, затем к очереди TYPE1, а уже затем пытается занять прибор. Если попытка успешна, то клиент уходит из очередей TYPEJ и JOEQ, и начинается обслуживание блоком ADVANCE. При ожидании обслуживания, следовательно, только стригущиеся клиенты одновременно имеют запись в двух разных очередях. Одно из множеств записей существует только дня стригущихся клиентов; другое множество обслуживает всех клиентов, ожидающих освобождения прибора, независимо от типа. То же самое можно сказать относительно стригущихся и бреющихся клиентов, моделирование обслуживания которых осуществляется в сегменте 2. Важно отметить, что логика, присущая модели рис. 2В.5, не отличается от логики рнс. 2В.2. Все равно существует только одна очередь клиентов, ожидающих парикмахера. Дисциплина выбора из очереди, реализуемая парикмахером, по-прежнему «первым пришел — первым обслужен». Хочет разработчик собирать статистику порознь или нет, не так важно. Как было показано в параграфе 2.15, присутствие в очереди — это не более чем простая запись. Заметим, что на рис. 2В.З в качестве операнда D карты START используется единица. В результате этого распечатались цепи текущих и будущих событий по завершении моделирования. Эти цепи показаны на рис. 2В.4, г, д. По этой информации составлена следующая группа упражнении. 2.27. Второй пример использования цепей текущих и будущих событий Глядя на рис. 2В.2, можно подумать, что прибор JOE и очередь JOEQ использованы неверно. Хочется задать вопрос: «Каким образом можно использовать прибор в двух совершенно различных местах?» Вопрос этот возникает из-за существования в модели двух пар блоков SEIZE—RELEASE. Число пар блоков SEIZE—RELEASE в модели вовсе не должно совпадать с числом обслуживающих приборов моделируемой системы. В примере моделирования 2В существует только один прибор, однако при этом можно использовать две или большее число пар блоков SEIZE—RELEASE. Рассмотрим еще один пример использо* вания интерпретатором GPSS цепей теку- 86
щих и будущих событий в процессе моделирования. На рис. 2.32 представлено повторение распечатки программы из примера моделирования 2В. В табл. 2.16 даны последовательности интервалов времени прихода и времени обслуживания, которые имеют место в блоках GENERATE и ADVANCE модели. Вспомним вид пятипозиционной записи, используемой' да я обозначения информации о о транзактах: [Номер транзакта; Время движения; Текущий блок; Уровень приоритета; Номер следующего блока]. На рис. 2.33 показаны состояния транзак- тов, находящихся в цепях текущих и будущих событий для нескольких первых значений таймера модельного времени. Фаза ввода (от строки 1 к строке 2). Как показано в первой строке рис. 2.33, в начале фазы ввода цепи пусты. В процессе выполнения этой фазы оказывается, что блок 1 является блоком GENERATE. Транзакт 1 выбирается из вершины пассивного буфера н помещается в цепь будущих событий; планируется вход в блок 1 в момент времени, равный 44 (см. табл. 2.16). Далее карта GENERATE будет обнаружена в блоке номер 8. Теперь транзакт 2 выбирается из буфера и помещается в цепь будущих событий; планируется его вход в блок 8 в момент времени 41, что соответствует табл. 2.16. И, наконец, третья карта GENERATE обнаруживается в позиции 16. Таблица 2.16. Интервалы времени прихода и времени обслуживания во вторам примере использования цепей Номер блока 1 5 8 12 13 16 Тип блоке GENERATE ADVANCE GENERATE ADVANCE ADVANCE GENERATE Моделируемое системное событие Приход только стригущихся клиентов Обслуживание только стригущихся клиентов Приход стригущихся и бреющихся клиентов Бритье стрнгу- щихеи и бреющихся клиентов Стрижка стригущихся я бреющихся клиентов Таймер Предлагаемая последователь- иость интервалов времени 44, 28. 35, 40, ... 20, 18, 22, 17. ... 41,72,52. GO, ... 9. И, Ю. 12, ... 14. 15, 20, 19, ... 480 Теперь уже транзакт 3 помещается в ЦБС; планируется его вход в блок 16 в момент времени 480 в соответствии с табл. 2.16. BLOCK NUMHER «COC 1 2 3 « 5 6 7 9 10 11 12 13 1» 15 OPERATION SIMULATE A,B»C.D.E.F,G COMMENTS MODEL SEGMENT I GENERATE OUEUE SEIZE OEPART ADVANCE RELEASE TERMINATE 35. 10 JOE О JOE JOEO IB,6 JOE MODEL SEGMENT 2 GENERATE QUEUE SEIZE DEPART ADVANCE AOVANCE release terminate 60.20 JOEO JOE JOEO 10.2 IB.6 JOE MODEL SEGMENT 3 16 17 GENERATE TERMINATE 480 I CONTROL CARDS START I,,,) END HAIRCUT-ONLY CUSTOMERS ARRIVE ENTER THE LINE CAPTURE THE BARBER LEAVE THE LIN6 USE BARBER FREE THE BARBER LEAVE THE SHOP SHAVE-ANO-HAIRCUT CUSTOMERS ARRIVE ENTER THE LINE CAPTURE THE BARBER LEAVE THE LINE USE BARBER FOR SHAVE USE BARBER FOR HAIRCUT FREE THE BARBER LEAVE THE SHOP TIMER ARRIVES AT TIME 4BO SHUT OFF THE RUN START THE RUNS GET CHAIN PRINTOUT AT END RETURN CONTROL TO OPERATING SYSTEM CARO NUMBER 1 2 -3 ♦ s 6 7 В 9 10 11 12 13 1« 15 16 17 IB 19 20 21 22 23 24 25 26 27 26 29 30 31 32 Рис. 2.32. Повторение рис. 2В.З 87
3 u Строка 2 на рис. 2.33 показывает эти три транзакта в цепи будущих событий по завершении фазы ввода. Отметим, что траизакт 2 предшествует транзакту 1 в цепи, поскольку имеет меньшее значение времени движения. Прежде чем рассмотреть первую фазу коррекции таймера модельного времени, запишем смысловые значения, приписываемые транзак- там в строке 2 цепи будущих событий (табл. 2.17). Таблица 2.17. Смысловое значение транзакгов в цепи будущих событий (строка 2, рис. 2.33) Номер трап- эпкта Смысловой лишение 2 i 3 Первый из стригущихся и бреющихся клиентов идет в парикмахерскую Первый из только стригущихся клиентов идет в парикмахерскую Траизакт-таймер Первое выполнение фазы коррекции таймера (or строки 2 к строке 3). Сначала интерпретатор устанавливает таймер в значение времени 41 — время движения первого транзакта (транзакт 2) от начала строки 2 цепи будущих событий. Далее он перемещает транзакт 2 в пустую цепь текущих событий. Следующий транзакт (транзакт 1), стоящий в цепи будущих событий, имеет время движения, отличное от 41. На этом первое выполнение фазы коррекции таймера заканчивается. « Заметим, что в строке 3 цепи текущих собы- £ тий транзакт 2, представляющий клиента из <jj группы стригущихся и бреющихся, уже при- £ шел в парикмахерскую. | Первое выполнение фазы просмотра (от стро- * кн 3 к строке 4). Выбирая транзакт 2 из начала S цепи текущих событии в строке 3, интерпрета- 4 тор помещает его в блок 8, затем начинает пере- I* мещать его в блок 9. Временно прерывая обра- el ботку транзакта 2, интерпретатор планирует д приход следующего транзакта через блок 8 fe (GENERATE). В соответствии с интервалом I* времени прихода 72 (второе разыгранное зна- ° чение из распределения 60 =t 20 по табл. 2.16) Л траизакт 4 выбирается из пассивного буфера „,. и помещается в ЦБС; планируется вход его ё в блок 8 в момент времени 41 4- 72, т. е. 113. § Возобновляется продвижение транзакта 2. £ Транзакт движется через последовательность 5 блоков QUEUE—SEIZE—DEPART- g ADVANCE (блоки 9, 10, 11 и 12). В блоке 12 о возникает необходимость задержки на 9 мии (по табл. 2.16). В этом случае транзакт 2 переносится из цепи текущих в цепь будущих событий; планируется его вход в блок 13 в мо- £ мент времени 50. 88
Поскольку был выполнен блок SEIZE, интерпретатор вновь просматривает цепь текущих событий, но цепь пуста. Следовательно, надо снова выполнить фазу коррекции таймера. Заметим, что в строке 4 на рис. 2.33 тран- зшы в цепи будущих событий имеют смысловые значения, показанные в табл. 2.18. В частности, рассмотрим первого клиента из стригущихся и бреющихся, который уже бреется. Он прошел пару блоков QUEUE—DEPART (СТАТЬ В ОЧЕРЕДЬ — ПОКИНУТЬ ОЧЕРЕДЬ), т. е. блоки 9 и 11, при значении таймера, равном 41, т. е. транзакт учтен среди осуществивших нулевые входы в очередь JOEQ. Он занял устройство JOE, войдя в блок SEIZE, являющийся блоком 10 модели. ТМякца 2.18. Смысловые значения траиэактов i цели будущих событий (строка 4, рис. 2.33) Номер траи- Смыслонос значение акта 1 Клиент из только стригущихся идет в парикмахерскую 2 Первый из группы стригущихся и бреющихся клиентов бреется 4 Второй из группы стригущихся и бреющихся клиентов идет в парикмахерскую 3 Траязакт^гаймер Второе выполнение фазы-коррекции таймера (от строки 4 к строке 5). Проверяя транзакты от начала ЦБС в строке 4, интерпретатор наращивает значение таймера до 44. Первый в ЦБС транзакт переносится в пустую ЦТС. Другие транзакты из ЦБС в ЦТС не переносятся. Далее снова выполняется фаза просмотра. Второе выполнение фазы просмотра (от строки 5 к строке 6). Выбирая транзакт 1 из левого конца ЦТС строки 5, интерпретатор помещает его в блок 1 и далее начинает двигать из блоха 1 в блок 2. Временно прерывая обработку транзакта I, интерпретатор планирует приход следующего транзакта в блок I (GENERATE). В соответствии со значением интервала 28 (второе разыгранное значение по распределению 352: Ю, взятое из табл. 2.16) транзакт 5 выбирается из пассивного буфера и помещается в ЦБС; планируется ввести его в блок 1 при значении таймера 44 -f 28, т. е. 72. Далее интерпретатор возобновляет движение транзакта 1, завершая его обработку выполнением подпрограммы блока QUEUE (блок 2). Транзакту отказано во входе в блок SEIZE (блок 3). Причиной, естественно, является то, что прибор занят. Он был занят в момент времени 41 транзактом 2, который выполнил обработку блока 10 при этом значении модельного времени. Интерпретатор теперь оставляет транзакт 1 в блоке QUEUE (блок 2) и в цепи текущих событий, планируя занять блок SEIZE (блок 3) как можно раньше. Пока транзакт 1 ждет разрешения на вход в блок 3, он способствует сбору статистики для очереди JOEQ. Следовательно, он является элементом очереди, для которой транзакт 2 явился нулевым входом в момент времени 41, когда он прошел блоки QUEUE—DEPART, находящиеся в позициях 9 и 11. Строки 7, 8, 9 и Ю рис. 2.33 здесь не прокомментированы. Совершенно ясно, что многократное обращение к элементам GPSS в модели не представляется трудным для интерпретатора. Главное то, что существует только одна цепь текущих событий и одна цепь будущих событий. Используя эти цепи, интерпретатор может описать разнообразные события системы, происходящие в модели. По этой схеме легко описываются также многократные ссылки на одни и те же элементы. 2.28. Упражнения 1. Вопросы касаются примера моделирования 2В, рис. 2В.4. а). Счетчик текущего значения блока 2 установлен в единицу (рис. 2В.4, а). Каков номер транзакта, находящегося в этом блоке? б). Счетчик текущего значения блока 13 также равен единице (рис. 2В.4, а). Каков номер транзакта, находящегося в этом блоке? в). На рис. 2В.4, в текущее содержимое очереди JOEQ равно единице. Какой транзакт находится в очереди? Сколько временных единиц он там находится? г). К какому типу относится клиент, который придет следующим в парикмахерскую: к типу только стригущихся или стригущихся и бреющихся? д). Сколько клиентов каждого типа уже обслужено при завершении моделирования? 2. Вопросы касаются рис. 2.33. а). В строке 7 необходимо пояснить смысловое значение транзакта 2, находящегося в цепи текущих событий. б). В строке 8 необходимо пояснить смысловое значение транзакта 2, находящегося в цепи будущих событий. в). В какой момент времени выйдет от парикмахера первый транзакт? г). В момент времени 64 транзакт 2 вернулся в вершину пассивного буфера транзактов. При каком значении таймера модельного времени этот транзакт вернется обратно в модель? Кого он будет представлять, только стригущегося или стригущегося и бреющегося клиента? (Быть может, для ответа на этот вопрос придется продолжить таблицу на рис. 2.33 с состояниями цепей. Если вы это сделаете, вос- 89
пользуйтесь значениями временных интервалов, представленных в табл. 2.16). З.а). Предположим, что в примере моделирования 2В первый клиент из только стригущихся и первый из стригущихся и бреющихся приходят одновременно. Кто из них и почему первым попадет к парикмахеру? (Указание: обратите внимание на последовательность расположения в колоде перфокарт 1-го и 2-го сегментов модели на рис. 2В. 3, показывающем распечатку программы). б). Возвращаясь к п. а, предположим на этот раз, что перфокарты 2-го сегмента модели располагаются перед перфокартами сегмента 1. в). Предположим, что в момент времени 344 парикмахер свободен и что в очереди никого нет. Предположим также, что следующие два события запланированы на момент времени 344: 1) клиент из группы только стригущихся приходит в парикмахерскую; 2) клиент из группы стригущихся и бреющихся приходит в парикмахерскую. При каких условиях клинет из только стригущихся первым попадает на обслуживание? При каких условиях клиент из стригущихся и бреющихся окажется первым? 4. С использованием номеров блоков, приведенных на рис. 2.32, составлена табл. У4 последовательности интервалов времени прихода и времени обслуживания для блоков GENERATE и ADVANCE. Используя значения из этой таблицы, постройте таблицу состояний цепей, аналогичную таблице на рис. 2.33, до десятой строки включительно. Таблица У4 Номер блоки 1 5 8 12 13 16 Тип блока GENERATE ADVANCE GENERATE ADVANCE ADVANCE GENERATE Моделируемое событие Приход только стригущихся клиентов Обслуживание только стригущихся клиентов Приход стригу- щнхся и бреющихся клиентов Бритье стригущихся и бреющихся клиентов Стрижка стригущихся и бреющихся клиентов Таймер Предполагаемые зп л- ченпя довательностей 31, 38, 29, 42, ... 15. 19. 14. ... 51.32.64, 49, ... 9, II, 10, ... 14, 17, 12, ... 480 Теперь ответьте на следующие вопросы. а). Транзакт с каким номером первым представляет только стригущихся клиентов? б). Какое значение таймера соответствуй" строке 10? в). Куда успел переместиться первый и» только стригущихся клиентов? г). Куда успел переместиться первый из стригущихся и бреющихся клиентов? д). Какой тип клиента представляет собой транзакт с номером 4? 5. Подготовьте перфокарты, соответствули щие модели рис. 2В.5, и выполните моделирование на ЭВМ. Сопоставьте результаты, paenfr чатанные для очередей TYPE], TYPE2 и JQEQ8 6. Предположим, что мы поменяли местам блоки QUEUE TYPE1 и QUEUE JOEQ. Hfc обходимо ли при этом поменять местами так» и блоки DEPART TYPE1 и DEPART JOB? в 1-м сегменте модели, для того чтобы моде» осталась правильной? Рассмотрите эту ситу» цию возможно подробнее. 7. На рис. 2В.5 показано, как собрать <ЯЩ тистику об очереди агрегированным и диффере* цированным образом. Покажите, как собран такую же статистику о приборе. Иначе говор! покажите, каким образом перестроить модей, чтобы она не только продолжала собирать дифференцированную статистику, но также имел возможность измерять процент времени, и- торый парикмахер затрачивает на обслужив- ние только стригущихся, и процент времеда затрачиваемый на стригущихся и бреющие клиентов; среднее время, затрачиваемое ияо* служивание каждого из клиентов этих Щ типов, и т. д. 8. Рабочие трех типов приходят в кладовую^ запасными частями. Интервалы их прихода И времени обслуживания показаны в табл. $ В кладовой работает только один кладовщик.ft пишите на QPSS модель работы такой «ДО вой. Затем выполните моделирование до cow тия прихода 16-го рабочего первого типа Bid довую. Модель должна быть такой, чтобы Щ печить раздельный сбор статистических даш по каждому типу рабочих. Сопоставьте резу» таты, полученные для очередей всех трехтЩ Сравните также нагрузку прибора, получейЛ ' на ЭВМ и вручную. Таблица У8 Тип рабочего Распределенпс интервала» времени прихода, мни Распредели» времени обеда впння. ив i 30:*10 20*8 15*5 12*5 3*1 I 5 8 12 13 16 GENERATE ADVANCE GENERATE ADVANCE ADVANCE GENERATE Приход только стригущихся клиентов Обслуживание только стригущихся клиентов Приход стригу- щихся и бреющихся клиентов Бритье стригущихся и бреющихся клиентов Стрижка стригущихся и бреющихся клиентов Таймер 31, 38, 29, 42, ... 15. 19. 14. ... 51.32.64, 49, ... 9, II, 10, .. 14, 17, 12, ... 480 90
2.29. Пример моделирования 2С. Измененная дисциплина обслуживания в системе с одним прибором и очередью 11. Постановка задачи. На некоторой фаб- 5нке в кладовой работает один кладовщик, я выдает запасные части механикам, обслуживающим стайки и устанавливающим эти части на испорченных станках (запасные части довольно дороги и, кроме того, их ассортимент слишком велик для того, чтобы каждый механик мог иметь запасную часть каждого вида в своем ящике). Время, необходимое для удовлетворения запроса»..зависит от типа запасной части. Запросы бывают двух категорий. Соответствующие данные представлены в табл. 2С.1. Твбшца 2C.I. Интервалы времени прихода в времени обслуживания запросов механиков ща примера 2С Категория запросе 1 2 Интервалы времени прихода механиков, с 420=Ь360 3602:240 Время обслуживания, с 300*90 100^30 Кладовщик обслуживает.механиков по принципу «первым пришел — первым обслужен» независимо от категории запроса. Такая дисциплина обслуживания очереди изображена на рис. 2С.1, на котором кружки и треугольники изображают механиков, делающих запросы категории 1 и 2 соответственно. На рис. 2С.1 запрос категории 2 обслуживается, а один запрос категории 1 и два запроса категории 2 ждут своей очереди в указанном порядке. Поскольку сломанный станок ничего не производит, то простой механика в очереди приносит убыток 0,25 цента в секунду (9 долларов в час). Эта стоимость не зависит от того, за какой запасной частью ушел механик. Руководитель считает, что среднее число простаивающих механиков можно уменьшить, если запросы категория 2 в кладовой будут удовлетворяться быстрее запросов категории 1. (Среднее время обслуживания запроса категории 2 меньше, чем категории 1. Если обслуживающий прибор выбирает запрос с наименьшим средним временем обслуживания, то говорят, что имеет место Приход Очередь Прибор Уход Рис 2С.1. Дисциплина обслуживания «первым пришел— первым обслужен» при наличии двух категорий запросов без приоритетов Приход Высший, приоритет I Низший. \ __. Уход приоритет Очередь ПриЪор Рис. 2С.2. Дисциплина обслуживания «первым пришел — первым обслужен» при наличии двух категорий запросов с приоритетами дисциплина обслуживания «ближайшая операция — кратчайшая».) Только в том случае, когда в очереди иет ни одного запроса категории 2, обслуживаются запросы категории 1. Эта дисциплина обслуживания изображена на рис. 2С.2, на котором очередь состоит из двух сегментов. Сегмент, располагаемый в начале очереди, является высокоприоритетным, а находящийся в конце очереди — низкоприоритетным. Дисциплина обслуживания очереди на рис. 2С.2 называется «первым пришел — первым обслужен внутри приоритетного класса». Ситуация ожидания механиками на рис. 2С.2 аналогична ситуации на рис. 2С. 1. Кладовщик работает над удовлетворением заявки категории 2 (треугольник). Два других запроса категории 2 ожидают в очереди; кроме того, в очереди находится один запрос категории 1 (кружок). Только тогда, когда высокоприоритетный сегмент очереди пуст, обслуживаются заявки низкоприоритетного сегмента. Необходимо создать модель работы кладоаой для обеих дисциплин обслуживания очереди и выполнить моделирование для каждой из них в течение восьмичасового рабочего дня. Уменьшится ли среднее число ожидающих механиков в очереди? Сколько денег ежедневно будет сэкономлено при использовании приоритетного обслуживания? В стоимость потерь не следует включать простои механиков во время обслуживания. 2. Метод построения модели. Система, которую необходимо промоделировать, очень напоминает систему из примера 2В. Есть два различных типа заявок, поступающих на обслуживание к единственному прибору. Различаются распределения интервалов прихода и времени обслуживания для этих типов заявок. Усложнение заключается в том, что один из типов имеет преимущество в обслуживании. Построить модель можно, используя тот же подход, что и в примере 2В. Но при этом надо найти средство задания существующей разницы в моделях, заключающейся в различных приоритетах обслуживания. Аналогично тому, как это сделано в примере моделирования 2В, запросы категории 1 могут моделироваться одним сегментом, а запросы категории 2 — другим. Различие относительных приоритетов задается" путем использова- 91
иия в качестве операнда Е блока GENERATE для запросов категории 2 большего значения, чем для запросов категории 1. Например, запросы категории 2 могут входить в модель через блок GENERATE с операндом Е, равным 2, а запросы категории 1 — через блок GENERATE с операндом Е, равным 1. Конечно, абсолютный уровень приоритетов не имеет значения. Важно лишь то, что транзакты, представляющие механиков категории 2, имеют больший приоритет, чем траизакты, представляющие механиков категории 1. То, как влияет уровень приоритетов транзак- тов на обработку, видно при рассмотрении цепи текущих событий. Вспомним, что при перенесении транзактов из цепи будущих событий в цепь текущих событий транзакты в цепи текущих событий занимают положение, являющееся последним внутри соответствующего приоритетного класса. Более того, чем выше приоритетный класс, тем ближе к началу ЦТС располагается транзакт. Поскольку интерпретатор GPSS просматривает цепь текущих событии сначала, он пытается двигать вначале высокоприоритетные транзакты. Позднее, при просмотре он пытается двигать и транзакты, которые имеют низкие приоритеты. Это означает, что любые механики категории 2, ожидающие обслуживания в очереди (у них уровень приоритета равен 2), скорее смогут занять прибор, чем механики категории 1 (у ннх уровень приоритета равен 1). Если прибор освобождается и в очереди стоит хотя бы один механик каждой категории, механик категории 2 следующим займет устройство просто потому, что он ближе стоит к началу ЦТС, чем механик категории 1. Модель без приоритетов. Для исключения приоритетной дисциплины обслуживания в модели в обоих сегментах достаточно сделать равными операнды Е блоков GENERATE. Проще всего это сделать, убрав операнд Е вовсе. В результате, по умолчанию запросы категорий 1 и Ъ получат нулевой приоритет. О статистике. Среднее число ожидающих механиков интересует нас в первую очередь. Его мы получаем в колонке AVERAGE CONTENTS (СРЕДНЕЕ СОДЕРЖИМОЕ) очереди, в которой происходит ожидание. Поскольку стоимость простоя механиков не зависит от категории их запроса, то целесообразно иметь только одну очередь при моделировании системы. AVERAGE CONTENTS этой очереди потом может быть умножено на 0,25 цента в секунду, или иа 9 долларов в час, или иа 72 доллара в день для того, чтобы получить стоимость потерь в секунду, час или день соответственно. 3. Таблица определений. Единица времени: 1 с. Таблица 2С.2. Таблица определеинй примера моделировании 2С Элекенты GPSS Траизакты: 1-й сегмент модели 2-й сегмент модели 3-й сегмент модели Приборы: CLERK Очереди: LINE Интерпретации Механики, делающие запрос категории 1 Механики, делающие запрос категории 2 Таймер Кладовщик Очередь, используемая для сбора статистики о механиках, делающих запросы обеих категорий 92
4. Блок-схема. GENERATE I L \420 360 1 ' QUEUE ' ' SEIZE ' ' DEPART ' ' ADVANCE 300.90 1 ' RELEASE J TERM 1-Й СЕГЛ L INATE J- »EHT MO; „1 1 Л CLERK @ clerk V n ЦЕЛИ ПРИХОД МЕХАНИКОВ ПЕРВОЙ КАТЕГОРИИ ПРИСОЕДИНЕНИЕ К ОЧЕРЕДИ "ДЛЯ ПЕРВОЙ КАТЕГОРИИ ЗАНЯТИЕ КЛАДОВЩИКА УХОД ИЗ ОЧЕРЕДИ ОБСЛУЖИВАНИЕ КЛАДОВЩИКОМ ОСВОБОЖДЕНИЕ КЛАДОВЩИКА УХОД ИЗ КЛАДОВОЙ GENERATE 4^360,240^2 | QUE 1Э SEIZE DEPART ADVANCE 100.30 hbLEASE Л CLERK t \ LINE С 7 CLERK V TERMINATE X ERM1NA 2-Й СЕГМЕНТ МОДЕЛИ ПРИХОД МЕХАНИКОВ ВТОРОЙ КАТЕГОРИИ ПРИСОЕДИНЕНИЕ К ОЧЕРЕДИ "ДЛЯ ВТОРОЙ КАТЕГОРИИ ЗАНЯТИЕ КЛАДОВЩИКА УХОД ИЗ ОЧЕРЕДИ ОБСЛУЖИВАНИЕ КЛАДОВЩИКОМ ОСВОБОЖДЕНИЕ КЛАДОВЩИКА УХОД ИЗ КЛАДОВОЙ GENERATE. L 28800 TERMINATE 3-Й CETMFHT МОДЕЛИ (СЕГМЕНТ ТАЙМЕРА) Рнс. 2СЗ- Блок-схема для примера моделирования 2С (с пряоритетамн)
5. Распечатка программы. SLOCK NUMBER 4LOC OPERATION SIMULATE AiBiCOiE^F «G в 9 10 1 I 12 13 I* IS 16 MOOEL SEGMENГ I GENERATE QUEUE SEIZE DEPART ADVANCE RELEASE TERMINATE 420 ■360i.. LINE CLERK LINE 300 f90 CLERK MODEL SEGMENT 2 GENERATE . QUEUE SEIZE DEPART ADVANCE RELEASE TERMINATE •360. 2*0. • .2 LINE CLERK LINE 100 • JO CLERK MODEL SEGMENT 3 GENERATE 2вв01> TERMINATE J CONTRDL CARDS START 1 END COMMENTS CATECORV I MECHANICS ARRIVE ENTER «CATEGORY I SEGMENT" OF LINE Capture rut Clerk LEAVE THE LINE USE THE CLERK FREE THE CLERK LEAVE THE TOOL CRItt AREA CATEGORY 2 MECHANICS ARRIVE ENTER «CATEGORY 2 SEGMENT» OF LtNE CAPTURE THt CLERK LEAVE THE LINE USE THE CLERK FREE THE CLERK LEAVE THE TOOL CRIB AREA TIMER AMR IVES AFTER 8 HOURS SMUT OFF THE ЯУЛ1 START THE RUM RETURN CONTROL TO OPERATING SYSTEM CARD NUMBER 1 г з s 6 7 в 9 10 II 12 13 I* 15 16 17 ia 14 20 21 22 24 2* 2b 26 27 га 29 30 л Рис. 2С.4. Распечатка программы из примера моделирования 2С (с приоритетами) 6. Результаты моделирования. FACILITY CLERK AVERAGE UTILIZATION .932 NUMBER ENTRIES 1*0 AVERAGE TIME/THAN 191.870 SEIZING ■TRANS. NO4. 6 PREEMPTING TRANS. NO. OUEUE MAXIMUM AVERAGE TOTAL ZERO PERCENT CONTENTS CONTENTS ENTRIES EMTRIES ZEROS LINE 3 .770 140 20 14.2 SAVERAGE TIME/TRANS • AVERAGE TIME/TRANS EXCLUDING ZERO ENTRIES AVERAGE IME/TRANS isa.soo aAVERAGE TIME/TRANS IB*.916 TABLE MUMPER CURRENT CONTENTS FACILITY CLERK AVERAGE UTILIZATION .959 NUMBER ENTRIES 142 AVERAGE TIME/THAN 194.605 SEIZING TRANS. NO. 1 PREEMPTING TRANS. NO. OUEUE MAXIMUM AVERAGE TOTAL ZERO PERCENT CONTENTS CONTENTS ENTRIES ENTRIES ZLROS LINE 7 , 2.731 14» 13 B.9 SAVERAGE TIME/TRANS в AVERAGE TIME/TRANS EXCLUDING ZERO ENTRIES AVERAGE TIME/TRANS 942.393 SAVERAGE TINE/TRANS 396.030 TABLE NUMBER CURRENT CONTENTS 3 6) Рис. 2С.5. Часть распечатки выходных данных примера моделирования 20 л — с приоритетами; б — 6es приоритетов
7. Обсуждение. Использование модели. Модель, показанная на рис. 2С.4, была выполнена на ЭВМ первой. Затем операнды Е были удалены из карт GENERATE, и результирующая безприори- тетная модель была еще раз пропущена через ЭВМ. При таком подходе, не слишком рентабельном, требуется два прогона модели. Далее в этой главе мы рассмотрим метод оДнократ- ного прогона, позволяющий достичь тех же результатов. Выходные данные моделирования. (Полное время, потребовавшееся для моделирования на ЭВМ IBM360/67, равнялось 2,1 с.) Как отмечалось выше, наиболее интересной для нас является среднее содержимое очереди, т. е. поле AVERAGE CONTENTS. Рис. 2С.5, б показывает, что среднее число ожидающих механиков при отсутствии различия уровней приоритетов при моделировании иа интервале восьмичасового рабочего дня равно 2,731. Когда различие в приоритетах есть, среднее число уменьшается до 0,770, как это следует из рис. 2С.5, а. Следо- вательно, если различие приоритетов реализуется, это ведет к увеличению производительности системы в том смысле, что среднее число ожидающих механиков уменьшается примерно на 70%. Обратите внимание на то, что это различие определено на 140 и 145 входах в очередь [TOTAL ENTRIES (ОБЩЕЕ ЧИСЛО ВХОДОВ), рис. 2С.5, а и 2С.5, б]. Из-за случайности процесса при моделировании без приорн- теров получилось на пять приходов больше, чем при наличии приоритетов. При отсутствии различия приоритетов стоимость потерь из-за простоя механиков в день составляет около 197 долларов (2,731 х 72 доллара в день = 196,63 доллара в день). В случае реализации различия уровней приоритетов стоимость потерь составила около 55 долларов вдень (55,44). Разница таким образом составила 141 доллар (141,19). Несмотря на полученное различие стоимости, ВВриод моделирования, использованный в нашей примере, так мал, что выводы, сделанные на основании полученных результатов, неправдоподобно хороши. После того, как мы изучим авполнительные возможности GPSS, мы еще раз промоделируем эту систему более тщательно. Дополнительные эксперименты с данной системой в примере моделирования ЗС позво- шп сделать вывод, что ожидаемая ежедневная экономия, получаемая при реализации различи приоритетов, составляет около 48 долларов. Это значит, что экономия, рассчитанная ранее, является завышенной. 2.30. Третий пример использования цепей текущих и будущих событий В примере моделирования 2С делается различие между уровнями приоритетов транзактов в двух сегментах модели. Это приводит к реализации в модели дисциплины обслуживания «первым пришел — первым обслужен внутри приоритетного класса». Некоторые сомнения, которые могли остаться относительно того, почему эта дисциплина обслуживания является результатом управления уровнями приоритетов транзактов, могут быть сняты прн рассмотрении численного примера, показывающего метод использования интерпретатором GPSS цепей будущих и текущих событий при моделировании системы, изображенной на рис. 2С.4. Начальные условия такого примера мы сейчас рассмотрим. Рис. 2.34 является повторением распечатки программы модели примера 2С. В табл. 2.19 с использованием номеров блоков рис. 2.34 представлены интервалы времени прихода и времени обслуживания, которые возникают в различных блоках GENERATE и ADVANCE модели. И, наконец, на рис. 2.35 представлены состояния транзактов, находящихся в цепях текущих и будущих событий. Мы не будем тщательно пояснять каждую запись на рис. 2.35. Те, кому это интересно, могут сами построить состояния цепей в соответствии с процедурой, тщательно описанной в первом и втором примерах использования цепей. Для нас интересным являются лишь строки 6, 8 и 10, показывающие состояния цепей в конце фазы просмотра в моменты времени 403, 615 и 682 соответственно. Посмотрим, какое содержание приписывается транзактам в эти моменты времени. Транзакты, находящиеся в цепях в строке 6, интерпретируются табл. 2.20. В частности, транзакт 2 ожидает обслуживания, а транзакты 4 и 5 представляют механиков, направляющихся в кладовую. В момент времени 615 механик категории 2 (транзакт 4) появляется в кладовой. Заметим, что после переноса его из цепи будущих событий в цепь текущих событий транзакт 4 становится позади транзакта 2 в строке 7 ЦТС. Это связано с уровнем приоритета и принятым порядком расположения в цепн (входящий транзакт ставится на последнее место в своем приоритетном классе). Транзакт 4 имеет уровень приоритета 1, а транзакт 2 — уровень 2. Фактически, даже если бы уровень приоритета транзакта 4 был 2, он все равно стал бы позади транзакта 2. В этом смысле уровень приоритета не оказал воздействия на последовательность опе- 95
BLOCK NUMBER 1 2 3 4 5 6 1 S 9 10 11 12 13 14 15 16 •LOC 4 4 * * * 4 OPERATION A.B.C.D.E.F.G SIMULATE MODEL SEGMENT 1 CENERATE «20,360... 1 OUEUE LINE SEIZE CLERK DEPART LINE ADVANCE 300.90 RELEASE CLERK TERMINATE MODEL SEGMENT 2 GENERATE 360. 240. ..2 OUEUE LINF SEIZE CLERK DEPART LINE ADVANCE 100.30 RELEASE CLERK TERMINATE MODEL S6GHENT 3 GENERATE 2BB00 TERMINATE 1 CONTROL CARDS START 1 END COMMENTS CATEGORY 1 MECHANICS ARRIVE ENTER "CATEGORY 1 SEGMENT" OF LINC CAPTURE THt CLERK LEAVE THE LINE USE THE CLERK FREE THE CLER»: LEAVE THE TOOL CRIB AREA CATEGORY 2 MECHANICS AKtMVE ENTEB "CATEGORY 2 SEGMENT" OF LINE CAPTURE THt CLCK LEAVE THE LINE USC THE CLERK FREE THE CLERK LEAVE THE TOOL CRIB AREA TIMER ARRIVES AFTER Й HOURS SHUT OFF THE RUN START THE RUN RETURN CONTROL TD OPERATING SYSTEM CARD NUMBER 1 3 s 6 7 e 9 10 1 I 13 15 lb 1 7 1 В 19 20 21 22 23 2b 26 27 20 30 31 Рис. 2.34. Повторение рис. 2С.4 Таблица 2.19. Интервалы времени прихода и времени обслуживания в третьем примере использовании цепей HoMirp Олики i 5 8 12 15 Тип блоки GENERATE ADVANCE GENERATE ADVANCE GENERATE Моделируемое событие Приход механиков, делающих запросы категории 1 Обслуживание запросов категории 1 Приход механиков, делающих запросы категории 2 Обслуживание запросов категории 2 Таймер Последовательность интервалов 392. 223, 426. ... 309, ... 403, 279, 352, ... В примере не используется 28800 Таблица 2.20. Смысловые значения транзактов в цепях текущих и будущих событий (строка 6, рис. 2.35) Цепь ЦТС ЦБС ЦБС ЦБС ЦБС lis 2 4 5 1 3 Смысловое значение Механик категории 2 ожидает возможности сделать запрос Механик категории 1 идет в кладо- пую Второй механик категории 2 идет в кладовую Кладоащнк выполняет запрос механика категории 1 Транэакт-таймер раций в модели. В цепи текущих событий после фазы просмотра (строка 8) транзакты 2 и 4 ожидают обслуживания кладовщиком в «естественном» порядке, основанном на времени их прихода в кладовую. Далее, в следующей фазе коррекции таймера происходит его продвижение до значения 682 — времени прихода второго механика категории 2 (транзакт 5). Выбирая транзакт 5 как первый транзакт цепи будущих событий в строке 8, интерпретатор располагает его между транзактами 2 и 4 в цепи текущих событий (строка 9). В этом положении он оказывается перед низкоприоритетным транзактом, который уже находился в этой цепи, но позади ранее имеющихся в цепи транзактов с уровнем приоритета 2. Непосредственным следствием такого расположения является то, что транзакт 5 займет прибор раньше, чем траизакт 4, даже если последний провел в очереди больше времени. Более того, если в ЦТС будут внесены дополнительные транзакты с уровнем приоритета 2 до того, как транзакт 4 успеет войти в блок 3 (блок SEIZE), то они также станут в цепи текущих событий перед 96
II 1! п П II ш С.В se CQCQ S3 со _£ IO о In. Й?_Г ©*~ н_г Я3: о«о н— Н"» В_- о*о <51- 2я'"-* ПВО """О» сон -Ш ю*Е I- W В О," =& cnc О) С счс 5 I CN °-8 ww вас ioio" coco oo Si Bo»* cn"<n" ss 13 gp. 00 00 cieS (-V B.B cno" 8.8. loui1 So' us: oo tNC4 оГо? CNCN 1ЛЛ toco о в CN 1-- Я.1 COtD ^00 ^CN* HI-" B.B, II I ■■*■ I ■ I—'F I ^^ вД is ^§ га «Чо ВоГ юл oo CNCN оГстГ ал CNCN CNCN 8S If II 15 Offl CN .- О, а транзактом 4, еще более отодвигая время, когда прибор станет для него доступным. Таким образом, дисциплину обслуживания очереди «первым пришел — первым обслужен внутри приоритетного класса» реализуют три элемента: 1 — уровень приоритета транзакта; 2 — порядок, в котором события выстраиваются в цепи, и 3 — просмотр и повторение просмотра ЦТС от начала до конца. 2.31. Упражнения 1. Предположим, что в третьем примере использования цепи текущих и цепи будущих событий после фазы просмотра в момент времени 28752 выполняются следующие условия. 1). Кладовщик простаивает. 2). Транзакт 2 находится в цепи будущих событий, представляя механика, который должен прийти в кладовую в момент времени 28800 (время завершения). 3). Кроме транзакта 2 и транзакта 3 (транзакт-тай мер) нет транзактов с временем движения 28800 или меньше. Ответьте на вопросы: а). Как выглядит цепь текущих событий? б). Транзакт с каким номером находится в начале цепи будущих событии? в). При завершении моделирования кладовщик будет свободен или занят? 2. Напишите модель для упражнения 8 параграфа 2.28 (три типа приходов в кладовую). Прибор в кладовой должен реализовать дисциплину обслуживания «ближайшая операция — кратчайшая», т. е. следующим он должен обслуживать тот запрос, который требует минимального времени обслуживания. Сделайте так, чтобы в модели собиралась статистика по всем отдельным типам приходов. Сопоставьте характеристики очереди, полученные здесь, с характеристиками, полученными в упражнении 8, где дисциплина обслуживания была «первым пришел — первым обслужен». В какой момент времени завершается моделирование в упражнении 2? В какой момент времени оно завершается в упражнении 8? Чем вы объясните разницу? 3. В примере моделирования 2А парикмахер работает 480 мин без перерыва. Покажите, как изменить модель этого примера для учета следующих свойств. а). Предположим, что парикмахерская открывается в 8 ч 30 мин, а закрывается в 17 ч 00 мин. Парикмахер имеет перерыв на обед в 12 ч 00 мин, или после этого срока, но как можно раньше (либо он простаивал в полдень, либо перед тем, как устроить перерыв, он заканчивает обслуживание клиента). Клиенты, которые приходят в парикмахерскую в течение перерыва, 7 Т. Дж. Шрайбср 97
ждут его возвращения. Какова при этом нагрузка парикмахера? б). Предположим, что парикмахерская открывается в 8 ч 00 мин и закрывается в 17 ч 00 мин. У парикмахера есть несколько перерывов; 1) перерыв на кофе 10.00—10.15; 2) обед 12.00— 12.30; 3) перерыв на кофе 15.00—15.15. Если клиенты приходят во время перерыва, они ждут возвращения парикмахера. После того, как вы придумаете способ модификации модели 2А, выполните необходимые изменения и подсчитайте нагрузку парикмахера. 2.32. л Переход транзактов в блок, отличный от последующего. Блок TRANSFER (ПЕРЕДАТЬ) Иногда возникает необходимость передать транзакт безусловным образом в блок, отличный от последующего. Это можно выполнить, используя блок TRANSFER (ПЕРЕДАТЬ) в режиме безусловной передачи. Использование блока в этом режиме показано иа рис. 2.36. Операнд А при таком использовании блока не участвует. Это означает, что в колонке 19, от которой перфорируются операнды, должна стоять запятая. Наличие запятой указывает на безусловный режим использования блока. Операнд В указывает положение, занимаемое блоком, в который транзакт должен сделать попытку входа. Для краткости такой блок мы в дальнейшем просто будем именовать «В блоком». Положение блока может задаваться либо символически, либо в виде номера блока. Символическое имя использовать значительно более удобно. На рис. 2.36 в скобках указан операнд В. Скобки используют только на блок-схеме модели; они не являются частью операнда и их не надо перфорировать в блоке TRANSFER. В режиме безусловной передачи блок TRANSFER не может отказывать транзакту во I TRANSFER Рис. 2.36. Блок TRANSFER (ПЕРЕДАТЬ) а режиме безусловной передачи: Операнд Л В Значение Не используется Позиция блока, в который должен перейти транзакт Результат по умолчанию Ошибка входе. Когда транзакт входит в блок, он сразу же пытается войти в В блок. Если последний отказывает в этом, транзакт остается в блоке TRANSFER и в цепи текущих событий. При каждом последующем просмотре цепи (либо при возобновлении просмотра в процессе выполнения фазы просмотра, либо в начале следующего выполнения фазы просмотра) снова делается попытка поместить транзакт в В блок. Возможно, что при каком-то просмотре попытка будет успешной. Как уже было указано, такое использование .1 блока TRANSFER называется режимом без- \\ условной передачи блока TRANSFER. Существуют и альтернативные режимы использования блока TRANSFER. Некоторые из них будут рассмотрены позднее. Использование блока TRANSFER в режиме безусловной передачи проиллюстрировано в примере моделирования 20. 2.33. Пример моделирования 2D. Система обслуживания с прибором, очередью и обратной связью 1. Постановка задачи. Производство деталей определенного вида включает длительный процесс сборки,, заканчивающийся коротким периодом обжига в печи. Поскольку содержание печи обходится довольно дорого, несколько сборщиков используют одну печь, в которой одновременно можно обжигать только одну деталь. Сборщик не может начать новую сборку, пока не вытащит из печи предыдущую деталь. Таким образом, сборщик работает в следующем режиме. 1). Собирает следующую деталь. 2). Ожидает возможности использования печи по принципу «первым пришел — первым обслужен». 3). Использует печь. 4). Возвращается к п. 1. Время, необходимое на различные операции, и стоимость операций и изделий представлены в табл. 2D Л и 2D. 2 соответственно. Необходимо построить на GPSS модель описанного процесса. Имея эту модель, следует определить оптимальное число сборщиков, использующих одну печь. Под оптимальным по- Таблица 2D.I Операция Сборка Обжиг Необходимое время, мни 30=Ь5 &И2 98
Таблице 2D.2 Элемент 1 • Стоимость Зарплата сборщика Стоимость печи Цена материала Стоимость готового изделия 3,75 доллара в час 80 долларов за восьмичасовой рабочий день (независимо от степени использования) 2 доллара на одну деталь 7 долларов за деталь нимают такое число, которое дает максимальную прибыль. Определение надо сделать при моделировании в течение 40 ч модельного времени. Предположим, что в течение рабочего дня нет перерывов, а рабочие дни идут подряд без выходных дней. 2. Метод построения модели. Для моделирования на GPSS необходимо определить: 1) условия работы моделируемой системы; 2) какие элементы GPSS надо использовать для удовлетворения условий модели. В данном случае есть два вида ограничивающих условий. Во-первых, имеется лишь одна печь. Во-вторых, существует некоторое фиксированное число сборщиков, работающих в системе. Естественно, для моделирования печи использовать понятие «прибор». Также естественно отождествить сборщиков с транзактами. Тогда можно считать, что сборщики циркулируют в системе. Аналогично тому, как они периодически осуществляют сборку и обжиг, транзакты циркулируют в GPSS-модели системы. В реальной системе, после того как сборщик вынимает из печи обожженную деталь, он возвращается и начинает новый этап сборки. В модели, после того как транзакт завершает использование прибора, моделирующего печь, он должен быть возвращен назад посредством блока TRANSFER в блок следующей сборки. Для того чтобы ограничить общее число тран- зактов, циркулирующих в модели, необходимо использовать операнд D блока GENERATE, с помощью которого можно задать желаемое число транзагов. Для того чтобы вычислить прибыль, соответствующую заданному числу сборщиков, необходима знать, сколько готовых деталей они сделали в течение моделируемого периода. Число использований печи в точности совладает с этим значением. 3. Таблица определений. Единица времени: 1 мин. Таблица 2D.3. Таблица определений примера моделирования 2D Элемент GPSS Транзакты: 1-й сегмент модели 2-Й сегмент модели Приборы: OVEN И'-'лерпретацпя Сборщики Таймер Печь т 99
4. Блок-схема; ОПРЕДЕЛЕНИЕ ЧЕТЫРЕХ СБОРЩИКОВ СБОРКА СЛЕДУЮЩЕЙ ДЬТАЛИ ЗАНЯТИЕ ПЕЧИ ИСПОЛЬЗОВАНИЕ ПЕЧИ ОСВОБОЖДЕНИЕ ПЕЧИ GENERATE ЦюЛ—| л TERMINATE ^J3 2-Й СЕГМЕНТ МОДЕЛИ (СЕГМЕНТ ТАЙМЕРА) ПЕРЕХОД К СЛЕДУЮЩЕЙ СБОРКЕ 1-Й СЕГМЕНТ МОДЕЛИ Рис 2D.1. Блок-схема примера моделирования 2D 5. Распечатка программы. BLOCK NUMBER 1 2 3 л 5 ft 7 а •LOC • • • BACK * • * V • OPERATION А,В.С. SIMULATE MODEL SEGMENT 1 GENERATE ...A АОVANCE 30.5 SEIZE OVEN ADVANCE 8.2 RELEASE OVEN TRANSFER .HACK MODEL SEGMtNT 2 GENERATE 2400 TERMINATE 1 CONTROL С АН Ob START 1 END D.E.F.G COMMENTS PROVIDE Ь ASSEMBLERS ASSEMBLE NEXT WIDGET CAPTURE THE OVEN USfc THE OVEN FREE THE OVEN f.U DO THE NEXT ASSEMBLY TIMER ARRIVES AFTER S OAY"- bHUT OFF THfc RUN bTART THE RUN RETURN CONTROL TO OPERATIN Рис. 2D.2. Распечатка программы примера моделирования 2
6. Выходные данные. FACILITY OVEN AVERAGE UTILIZATION • 7as NUMBER ENTHIES гзь AVERAGE TIMS/THAN 7.9V 1 SEIZING TRANb. NC. Ь PREEMPTING TRANS. NO. ») FAC1LМУ DVEM AVERAGE UTILIZATION .952 NUMBER ENTRIES г во AVERAGE TIME/TRAN в. 160 SE IZING TRANS. NO. 5 PREEMPTING TRANS. NO. B) FACILITY •VEN AVERAGE UTILIZATION .9BB NUMBER ENTRIES 295 AVERAGE TIME/TRAN 8.0Л0 SEIZING TRANS. NO. 1 PREEMPTING TRANS. NO. I) Pic. 2D.3. Часть распечатки выходных данных примера моделирования 2D. Статистика использования печи при наличии «трех (а), пяти (б) и шести (в) сборщиков 7. Обсуждение. Логика моделирования. Это аервая модель, в которой представляется случай дать символическое имя блоку. На рис. 2D. 1 блок ADVANCE 30,5 получил имя BACK. На рис. 2D.2 это символическое имя появляется в поле имени (находится под пометкой *LOC) на карте блока ADVANCE. В колонке номера блока на этом рисунке видно, что символическое имя BACK эквивалентно номеру 2. На рис. 2D.1, несмотря на то, что сборщики ждут своей очереди использования печи, блок SEIZE (ЗАНЯТЬ) не находится внутри пары блоков QUEUE—DEPART (СТАТЬ В ОЧЕРЕДЬ — ПОКИНУТЬ ОЧЕРЕДЬ). Сбор статистических данных об очереди не требуется, поэтому не ставятся блоки для сбора данных об очереди в модели. Сборщики, ожидающие в очереди использования печи, представляются транзактами, которые в цепи текущих событий ждут возможности войти в блок 3 (SEIZE) «как можно раньше». С точки зрения счетчиков блоков эти траизакты входят в число значений счетчика текущего содержимого блока 2 (ADVANCE). Это верно, даже если время задержки в блоке ADVANCE уже истекло. Использование модели. Поведение модели исследовали при трех значениях соотношения сборщики — печь. Было выполнено три раздельных прогона модели на ЭВМ. При каждом новом прогоне менялся только операнд D блока GENERATE 1-го сегмента модели. Именно он задавал изменение соотношения сборщики — печь. В параграфе 2.34 будут представлены управляющие карты GPSS, с помощью которых можно осуществить изменение упомянутого соотношения в течение одного прогона модели на ЭВМ. Результаты моделирования. (Общее время процессора ЭВМ IBM 360/67, требуемое для одного прогона, равнялось 2,0 с.) Стоимость использования печи в течение сорокачасового периода моделирования равна 400 долларов. Каждый сборщик зарабатывает за эту неделю 150 долларов. Для трех прогонов число выпущенных деталей было равно 235, 279 и 294. При этом участвовало четыре, пять и шесть сборщиков соответственно. (В эти числа не вошли те изделия, которые оставались в,печи при завершении моделирования.) Значения прибыли для этих трех случаев, как легко подсчитать, равны 175, 245 и 170 долларов соответственно. Следовательно, оптимальным числом сборщиков на одну печь является число 5. В этой задаче легко составить стоимостную структуру процесса ожидания сборщиков и простоя печи. При работе четырех сборщиков время их простоя невелико (в модели оно не считается), но и нагрузка печи также невелика (всего 0,785, см. рис. 2D.3, а). При работе пяти сборщиков их ожидание увеличивается, но увеличивается также и нагрузка печи (0,952, см. рис. 2D.3, б). Следовательно, оплата труда лишнего сборщика компенсируется повышением нагрузки печи. А вот когда сборщиков стало шесть, ожидание сборщиков увеличилось еще больше, а увеличение нагрузки печи уже не дает того эффекта, что раньше (0,988, см. рис. 2D.3, в). Незначительного увеличения нагрузки печи уже недостаточно для покрытия зарплаты лишнего сборщика. 101
2.34. Управляющие нарты GPSS. Карта CLEAR (ОЧИСТИТЬ) В примере моделирования 2D разработчику необходимо выполнить последовательно несколько прогонов, лишь слегка изменяя версию модели. Изменения в модели требует только операнд D блока GENERATE в сегменте 1. Это, в свою очередь, изменяет конфигурацию системы в том смысле, что меняется число сборщиков на одну печь. Таким образом, необходимость реконфигурации модели требует повторения прогона на ЭВМ. Такая ситуация возникает довольно часто, так как одним из принципиальных моментов применения средств моделирования является измерение поведения альтернативных версий систем для достижения определенных заданных целей. Разработчику было бы удобно, если бы вместо серии выполнений независимых заданий с изменением карт от прогона к прогону он Мог бы все это сделать за один этап пакетной обработки заданий. Для этого необходимо выполнить /следующее. 1. После завершения моделирования и распечатки статистических данных существующая модель должна претерпеть некоторые изменения. Эти изменения могут иметь следующие формы: а) переопределение операндов одного или нескольких блоков модели без изменения типа самих блоков; б) переопределение типов блоков, занимающих одну или несколько позиций в модели; в) расширение модели за счет добавления одного или более независимых сегментов модели. 2. После модификации модели ее надо подготовить к повторному прогону. Это должно включать три пункта: а) все статистики модели должны быть сброшены в нулевое состояние; б) все транзакты, которые оставались в модели в конце моделирования предыдущего прогона, должны быть удалены; это означает, что цепи надо освободить от транзактов, находящихся в них в момент завершения моделирования, и возвратить их в пассивный буфер; в) фаза ввода должна быть выполнена заново в том смысле, что интерпретатор должен снова проверить модель после реконструкции, просматривая ее и обнаруживая блоки GENERATE. Для каждого такого обнаруженного блока интерпретатор должен запланировать приход первого транзакта в модифицированную модель через этот блок. 3. После реконфигурации модели и подготовки ее к повторному прогону надо снова про- и!!Ициализироват(> управление моделированием. Интерпретатор должен задать значение счетчику завершений, затем начать выполнение фазы коррекции таймера, устанавливая таймер в значение времени движения трая- закта, стоящего первым в цепи будущих событий, и т. д. Каждый из перечисленных выше шагов может быть выполнен средствами GPSS. Как это выполняется, мы сейчас разберем. Предположим, что интерпретатор ввел модель, дошел до карты START (НАЧАТЬ) я начал выполнение моделирования. Пусть счетчик завершений достиг нулевого значения, моделирование завершилось, и на печать вывелись результирующие данные. Модель, которая только что выполнялась, осталась такой, какой она была в момент завершения моделирования. Например, все транзакты остались в.тех блоках и в тех цепях, в которых они были в это время. Интерпретатор теперь переходит к следующей карте колоды для того, чтобы прочесть ее следующую команду. (В моделях, которые мы до сих пор рассматривали, следующей картой всегда стояла карта END. Эта карта дает команду интерпретатору вернуть управление в операционную систему.) Предположим, что следующей картой является карта, изображающая блок или блоки, уже находящиеся в модели. Например предположим, что в позиции, имеющей имя ALPHA, располагается блок GENERATE, и что сразу же за картой START пользователь расположил карту «ALPHA GENERATE 15,6., 30». Обнаружив новое определение блока в позиции ALPHA, интерпретатор замещает этот блок новым. Это означает, что блок с именем ALPHA хотя и остается блоком GENERATE, но теперь имеет в качеств операндов А, В, С и D значения 15,5, значени по умолчанию (смещение отсутствует) и 30 со ответственно. Это и есть возможность переопре деления, отвечающая нуждам, указанным в ша ге 1 несколько раньше. Вообще говоря, необходимость модификацш в модели типов блоков в одном или более ме стах возникает у пользователя довольно редко Также редко возникает необходимость расши рения моделей путем добавления новых нем висимых сегментов модели. Вот почему такт возможности здесь рассмотрены не будут. Фай тически ни в одном из примеров моделирования в данной книге такая потребность не возникла, Теперь предположим, что после карты START пользователь поставил карты, переопределяющие значения операндов одного или более блоков модели. Обрабатывая эти карты одну за другой, интерпретатор определяет, что делать дальше. Предположим, что за последней картой, определяющей изменения операндов блоков, в колоде появляется карта CLEAR (ОЧИСТИТЬ). Карта CLEAR является управляющей картой GPSS, которая подготовляет
модель к повторному прогону, как это было описано на шаге 2 несколько раньше. Она состоит из слова CLEAR, стоящего в поле операции перфокарты. Блока, соответствующего этой карте, нет. Когда интерпретатор доходит до карты CLEAR, ои сбрасывает всю статистику модели в ноль (включая также таймеры абсолютного и относительного модельного времени), возвращает все транзакты обратно в пассивный буфер и выполняет фазу ввода (для того, чтобы запланировать приход первых транзактов в блоки GENERATE) в ее текущем состоянии. После того, как эта часть работы будет закончена, интерпретатор переходит к следующей карте колоды. Предположим, что следующая карта в колоде — START. Это указание иа то, что интерпретатор должен выполнить моделирование. Продолжение работы интерпретатора заключается в инициализации счетчика завершений значением операнда А карты START, затем осуществляется переход к выполнению фазы коррекции таймера, фазы просмотра и т. д. Далее счетчик завершений снова достигает нулевого значения, моделирование завершается, и распечатываются статистические данные. Интерпретатор возвращается к поиску следующей команды в колоде и т. д. Из описания шагов 1—3 неясно, являются ли шаги 1 и 2 независимыми, т. е. может ли карта CLEAR идти впереди переопределения блоков. В действительности карта CLEAR может предшествовать переопределению блоков и, более того, может даже находиться среди карт переопределения блоков. Однако тот факт, что карта CLEAR вызывает к работе некоторую часть фазы ввода, означает, что более естественно располагать эту карту непосредственно перед следующей картой START. Это единственная причина, по которой переопределение блоков и очистка модели описаны именно в таком порядке. Существуют ли случаи, когда карта CLEAR должна предшествовать одной или более картам переопределения блоков? Ответ — «да». В частности, если осуществляется попытка переопределить блок, в котором находятся один или несколько транзактов, возникает ошибка. Например, такая ошибка может возникнуть при попытке переопределить блок ADVANCE (ЗАДЕРЖАТЬ), для которого счетчик текущего содержимого не равен нулю. Это например, вполне возможно, если моделирование завершено, а один или более блоков ADVANCE модели содержат находящиеся в них транзакты. Если какие-то из этих блоков должны быть переопределены, то у нас нет выбора, и необходимо поставить карту CLEAR перед переопределяемым(и) блоком(ами) ADVANCE. Однако не так уж часто возникает необходимость переопределять блоки при одном прогоне модели иа ЭВМ. (Как будет показано далее, очень часто надо менять не блоки, а некоторые другие компоненты модели.) Например, в примерах, данных в этой книге, только блоки GENERATE подвергаются переопределению между картами START. I< тому же это делается только в тот момент времени, когда известно, что счетчик текущего содержимого нашего блока GENERATE равен нулю. (Фактически вероятность для счетчика текущего содержимого блока GENERATE иметь ненулевое значение ничтожна, это возможно только в случае отказа следующего блока в приеме транзакта.) Поэтому, за некоторыми исключениями, в данной книге мы будем располагать карту CLEAR непосредственно перед картой START. Что касается переопределения карты GENERATE, то существуют некоторые особенности ее использования, которые полезно знать. Когда интерпретатор воспринимает новое определение блока GENERATE, ои выполняет следующие три действия. 1. Ищет транзакт (если такой есть), который планировалось ввести в модель через старый блок GENERATE, и возвращает его в пассивный буфер. (Если использован ограничитель счетчика вводов для старого блока GENERATE и если соответствующее число транзактов уже введено в модель через этот блок GENERATE, то планирование входа отсутствует.) 2. Затем интерпретатор замещает старый блок GENERATE вновь определенным блоком GENERATE. Значения нового состава операндов вступают в силу. 3. И, наконец, интерпретатор планирует вход траизакта в модель через вновь определенный блок GENERATE. При этом используются новые значения параметров блока. Таким образом, разработчик должен помнить, что интерпретатор работает с определенным числом транзактов при переопределении блока GENERATE. Особенно важно то, что при планировании первого прихода необходимо использовать случайные числа (кроме случая, когда интервалы прихода в новом блоке GENERATE имеют детерминированный характер). То же самое можно сказать, если используется карта CLEAR. Переопределение блока GENERATE и использование карты CLEAR потенциально оказывают влияние на установку последовательностей случайных чисел, которые детально будут рассмотрены в начале гл. 3. Приведем теперь пример использования карты CLEAR. Как указывалось раньше, обработка в примере моделирования 2D выполнялась в виде серии последовательных прогонов. При использовании карты CLEAR мы имеем 103
m ппа± ikia. JACK I , , i ■u, JLi_ OEHUJATiii AJbVAl&JL. 0,ii|^Ll|4|,S SIMULATE. I »АСДЦ_ ^йжилжЕ^^ ..i i„ 1-Й СЕГМЕНТ МОДЕЛИ. T I S,t,l,2,E| , MuJu. MCANJoi. i ■ l , ,E L.E.AiS E. I I ОМЫк-i-l. OViLH iiBuVCiKm- 2-й CEOIEHT МОДЕЛИ j—i, i i i i—^ , , , . B,tM*,lA,Ti tXIMXMAJJu. -J-L. .UI-1-.J Л—^^л. 1l I I I | I I I 1 I УПРАВЛЯЮЩИЕ КАРТЫ, И ПЕРЕОПРЕДЕЛЕНИЕ БЛОКОВ, ■ I i i i i i i I i • 1 1 i I ■ I ■ ■ * I J-1. 1 ' I ■ U-1 . Л 1-1 L I. I . , . I I I I I I I I | I . I 1 I I I I I I | J_l_l- 1 1 ОПРЕДЕЛЕНИЕ ЧЕТЫРЕХ СБОРЩИКОВ р^ . . t . . , ■ | ■ ■ ■ _ СБОРКА СЛЕДУЮЩЕЙ ДЕТАЛИ, {ЗАНЯТИЕ ПЕЧИ,,,! {. ИСПОЛЬЗОВАНИЕ ПЕЧИ < ОСВОБОЖДЕНИЕ ПЕЧИ i i i >—. ПЕРЕХОД К СЛЕДУЮЩЕЙ СБОРКЕ I i I i i . i i i i 1 . i I, i i i . ■ I ... I 1 1.1—I 1 I I I j J -L.1. I TlflUCB * I ...'.. i-..., I I I I..I I I I t , I rTA>MEP ПРИХОДИТ ЧЕРЕЗ 5 ДНЕЙ -г- 1 1- . , ЗАВЕРШЕНИЕ ПР0Г0НА| -I L I I , I ■ i- l UAkjx. ■ i-i i i i -i_lJ_i_i I J I J l.l_L- ■I I I 1 I I I i_ ■ ■■i U- ИАЧАТЬ ПЕРВЫЙ ПРОГОН -i i i—i i i i JUUti аькеАц, ju. ClJjA»! . , ■ 4-L. I SiIARJi- I РЕКОНФИГУРАЦИЯ ДЛЯ ВТОРОГО ПРОГОНА < ОЧИСТКА ДЛЯ ВТОРОГО ПРОГОНА _—. . ■ . ■ "-■ . . . ( . Г- . . * г Jl-1 I I I I t I 1 НАЧАТЬ ВТОРОЙ ПРОГОН . I ■ ■ ■ I I I I -U-L Хья Q.tmUJA.T.E CiLEAlL -r^- ' РЕКОНФИГУРАЦИЯ ДЛЯ ТРЕТЬЕГО ПРОГОНА, I I L.L I SJA&I4- I. ■ .1., L I ОЧИСТКА ДЛЯ ТРЕТЬЕГО ПРОГОНА i I'l t I I I I I I I I ■ .1 I --1-M—1. ■' 1 I I ' НАЧАТЬ ТРЕТИЙ ПРОГОН , , , — i_L fUDu. ■''■•■ I ВЕРНУТЬ УПРАВЛЕНИЕ В ОПЕРАЦИОННУЮ СИСТЕМУ , i i i- i—i l I I I I BLOCK NUMBER 2 3 * 5 e 7 В •LOC • KEY SACK * OPERATION SIMULATE A.B.C.O.E.F.G COMMENTS HOOEL SEGMENT : GENERATE ADVANCE SEIZE ADVANCE RELEASE TRANSFER ...» 30.S OVEN а.г OVEN .BACK HOOEL SEGMENT 2 GENERATE TERMINATE 2*00 PROVIOE 4 ASSEMBLERS ASSEMBLE NEXT *>DGET CAPTURE THE OVEN USE THE OVEN FREE THE OVEN GO 00 THE NEXT ASSEMBLY TIMER ARRIVES AFTER S 0 SHUT OFF THE RUN • CONTROL CARDS ANO BLOCK OPERANO RE-OEFINITtONS • START START THE 1ST RUN J KEY GENERATE i..5 RE-CONFIGURE FOR 2ND RUN MULTIPLE OEFINIT'IDH OF SYMBOL IN ABOVE CARO CLEAR CLEAR FOR 2ND RUN START START THE 2NO RUN I KEY GENERATE ...6 RE-CONFIGURE FOR 3RD RUN .MULTIPLE OEPINITION OF SYMBOL IN ABOVE CARO CLEAR CLEAR FOR 3RD RUN START START THE 3R0 RUN ENO RETURN CONTROL TO OPERATING SYSTEM; •}■ Рис. 2.37. Модель трех конфигураций примера 2D, выполняемая ав один этап^моделировання: а — ввд моделей на бланке; б — распечатка программы CARO NUMBER I 2 J 4 6- 6 7 В 9 10 tl It 13 14 IS 16 17 IB 1» 20 21 SS аз 24 as 26
FACILITY OVEN AVERAGE UTILIZATION • res NUMBER ENTDIES 236 AVERAGE TIME/TRAN 7.991 SEIZING TRANS» NO» 5 PREEMPTING TRANS. NO. FACILITY OVEN AVERAGE UTILIZATION • 9*2 NUMBER ENTRIES 261 AVERAGE TIME/TRAN B.OS3 SEIZING TRANS. NO. 6 PREEMPTING TRANS. NO. «) L1TV OVEN AVERAGE UTILIZATION .989 NUMBER ENTRIES 296 AVERAGE TIME/TRAN B.020 SEIZING TRANS. NO. 1 PREEMPTING TRANS. NO. B). Рнс. 2.38. Часть распечатки выходных данных, полученных на модели рис. 2.37. Статистика об ислольэованни печн при работе четырех (а), пяти (б), шести (в) сборщиков возможность объединить эти три прогона модели в один этап моделирования. На рис. 2.37, а показано, как надо подготовить задание для выполнения этой работы. На рис. 2.37, б представлена распечатка программы, выданная интерпретатором в начале выполнения моделирования. Обратите внимание на следующие особенности на рис. 2.37, б. 1. Блок GENERATE для сборщиков (блок 1) имеет символическое имя KEY. 2. После первой карты START (карта 19) блок GENERATE, имеющий имя KEY, переопределяется. Сразу после' этого интерпретатор печатает сообщение MULTIPLE DEFINITION OF SYMBOL IN ABOVE CARD (В ПРЕДЫДУЩЕЙ КАРТЕ ПОВТОРНОЕ ИСПОЛЬЗОВАНИЕ ИМЕНИ). (У этого сообщения нет номера карты, поскольку такой карты в колоде иет.) Несмотря на это сообщение, интерпретатор не считает, что повторное использование имени является ошибкой. Такое выходное сообщение является предупреждением на случай, если разработчик ненамеренно присвоит одно и то же имя двум различным блокам и модели. Сразу за вставленным сообщением следует карта CLEAR (карта 21), затем карта START (карта 22) и т. д. Следует заметить, что переопределение блока с именем KEY не имеет силы до тех пор, пока не нвчиется моделирование по указанию первой карты START. Сначала интерпретатор читает всю модель целиком, делая распечатку программы. Затем, после некоторых внутренних настроек, начинается моделирование, далее поступает предупреждающее сообщение о повторном определении карт. На рис. 2.38 представлены результаты выполнения модели, изображенной на рис. 2.37. Основной особенностью приведенных результатов является то, что они для конфигураций с пятью и шестью сборщиками отличаются от результатов, показанных на рис. 2D.3, б, в. Почему это произошло? Когда выполнялись три независимых прогона, последовательность случайных чисел каждый раз начиналась от одной и той же точки. При объединении трех прогонов в один этап моделирования последовательность случайных чисел для каждой последующей конфигурации начинается от той точки, которая достигнута в конце предыдущего прогона. Поскольку при прогонах с пятью и шестью сборщиками имеет место другая последовательность случайных чисел, статистические данные для этих конфигураций отличаются от тех, которые имели место в примере моделирования 2D. Таким образом, карта CLEAR не возвращает последовательность случайных чисел в начальное состояние. (Источники случайных чисел в GPSS будут рассмотрены в гл. 3). 2.36. Упражнения 1. В примере моделирования 2D в сегменте 1 модели записано «GENERATE,,,4». Ограничитель, установленный в 4, гарантирует, что через этот блок в модель войдут только четыре траизакта. Поскольку операнды А и В отсутствуют, их значения по умолчанию равны нулю. а). В какой момент модельного времени первый из этих четырех транзактов войдет в модель? Каков номер этого транзакта? б). В какой момент модельного времени войдет в модель второй из этих транзактов? Каков его номер? в). Находится ли в цепи будущих событий первый из этих четырех транзактов, когда второй из четырех входит в блок ADVANCE (блок 2, рис. 2D.2)? Указания. 1. Посмотрите на рис. 2.28, показывающий работу блока GENERATE. 2. В блоке GENERATE, если интервал времени прихода для траизакта-последователя равен нулю, транзакт выбирается из пассивного буфера н 105
сразу же ставится в цепь текущих событий в качестве последнего элемента внутри приоритетного класса. Как обычно, после этого шага планирования интерпретатор возобновляет работу с транзактом-предшественником, продвигая его в модели, пока тот не останется в каком-либо блоке. Тогда интерпретатор продолжает просматривать цепь текущих событий. Это означает, что транзакт-последователь будет теперь объектом обработки интерпретатора и, следовательно, будет продвигаться им в модели в течение того же значения моделируемого времени. 2. В примере моделирования 2D предполагается, что каждый сборщик начинает работу с фазы сборки детали. Покажите, как изменить модель таким образом (для случая четырех сборщиков), чтобы она удовлетворяла следующим начальным условиям: а) трое сборщиков начинают процесс сборки, а четвертый начинает использовать печь для обжига собранной детали; б) один из сборщиков должен начать сборку, второму осталось 10 мин до завершения сборки, третий через 3 мин кончает обжиг, а четвертый ждет возможности занять печь. 3. Посчитайте прибыль для примера моделирования 2D по данным рис. 2.38. Можно ли сделать вывод, что оптимальным числом сборщиков является пять? 4. В авторемонтной мастерской стоит одна полировочная машина для полирования некоторой детали мотора машины. Для этого необходимо выполнить следующие этапы: 1) вынуть деталь (12 ^ 3 мин); 2) установить ее в полировочной машине (10 s: 4 мин); 3) фаза 1 полирования (80 ^= 20 мин); 4) поворот детали в машине для продолжения полирования (15 — 7 мин); 5) фаза 2 полирования (ПО ±30 мин); 6) достать отполированную деталь из машины (10 ± 4 мин); 7) установить деталь на прежнее место (12 — =£ 3 мин) и перейти к этапу 1. Деталь слишком тяжела для того, чтобы ее мог поднять один оператор полировочной машины. Требуется подъемный кран, помогающий ему в работе. В частности, подъемный кран нужно использовать на этапах 1, 2, 4, 6 и 7. Имеется только один подъемный кран. Краном пользуется не только оператор полировочной машины, его используют и на других работах в мастерской. Для других видов работ может потребоваться кран через каждые 39 — 10 мин. Время, на которое забирают кран, равно 25 ± 10 мин. Постройте модель такой системы. Обеспечьте сбор данных о времени ожидания оператора полировочной машины освобождения краиа. Разделите сбор данных об ожидании на этапе 4 и этапе 6. (Предполагается, что если на этапе 6 кран получен, то оператор его уже не отпускает до завершения этапа 2. Соберите также данные об ожиданиях крана другими видами работ.) Моделирование проведите для 400 ч модельного времени. Сравните значения трех указанных видов данных по каждой из следующих дисциплин обслуживания: 1) первым пришел— первым обслужен; 2) оператор полировочной машины имеет наивысший приоритет при использовании крана. Что надо изменить в системе, чтобы реализовать разницу в приоритетах? Легко ли это сделать? Использовали ли вы для моделирования полировочной машины прибор как элемент GPSS? Почему да или почему нет? Если да, то ответьте, как станет работать ваша модель, «ели убрать пару блоков SEIZE—RELEASE (ЗАНЯТЬ—ОСВОБОДИТЬ). Правильно ли будет работать ваша модель после такой операции? 5. В некоторой модели моделирование начинается в полночь и продолжается в течение нескольких дней по 24 ч. Транзакты вводятся в модель каждый день в 1 ч ночи, 4 ч утра, 10 ч утра и 2 ч дня'. Когда транзакт входит в модель, он попадает в блок QUEUE STACK. Нарисуйте блок-схемы сегментов системы, выполняющих эту операцию при следующих условиях: а). Транзакты должны попадать в блок QUEUE STACK точно в указанные моменты времени. б). Транзакты не всегда входят в модель в точно заданное время, а могут задерживаться на 10 — 10 мин, распределенных равномерно. Каждая задержка не зависит от других. Например, время прихода транзакта в 1 ч ночи третьего дня никак не воздействует на время прихода транзакта в 4 ч утра того же дня или на время прихода транзакта в 1 ч ночи следующего дня. в). Транзакты не должны приходить точно в заданное время, они могут приходить в интервале на 10 мин раньше и 20 мнн позже. Распределение вероятностей равномерное. Возможной интерпретацией этой ситуации является моделирование транзактами самолетов, прилетающих в аэропорт. Подлетая к аэропорту, они присоединяются к группе самолетов, ожидающих разрешения на посадку. Самолеты часто прилетают не вовремя; следовательно, условия б) н в) реалистичнее, чем а). 106
2.36. Моделирование многоканальных устройств Два или более приборов часто работают рядом, выполняя аналогичное обслуживание. Такими приборами могут быть и люди и механизмы. Вот примеры того, как люди могут играть роль параллельно работающих приборов: парикмахеры; контролеры универсального магазина; косметички; служащие в конторе; контролеры в театре. А вот несколько примеров использования механизмов, выполняющих аналогичные операции (таких механизмов может быть два и более); буксиры, вводящие и выводящие корабли в порту; подъемные краны, переносящие тяжелые отливки от литейных форм к станкам; места иа стоянке автомобилей; транспортеры для подачи определенного вида запасных частей, находящихся на полках; перфораторы в вычислительном центре. Прибор в GPSS используют для моделирования единственного устройства обслуживания. Два или более находящихся рядом обслуживающих устройства могут быть промоделированы на GPSS двумя или более приборами, располагаемыми рядом, т. е. параллельно. В самом деле, иногда необходимо использовать параллельные приборы, чтобы промоделировать параллельное обслуживание. Обычно к этому необходимо прибегать, когда отдельные приборы являются разнородными, т. е. характеризуются различными свойствами, па- пример различной интенсивностью обслуживания. Очень часто, однако, различные параллельно работающие приборы являются однородными. Это, грубо говоря, тот случай, когда некоторые устройства обладают определенными общими свойствами. Например, интенсивность, с которой контролер обслуживает покупателей в универмаге, не зависит от конкретного контролера, а является некоторой общей характеристикой. GPSS предоставляет для моделирования однородных параллельных приборов специальное средство (или элемент). Для этого элемента используют название «многоканальное устройство». В модели может быть несколько многоканальных устройств, это отражает тот факт, что в системе существует большое число групп параллельно работающих приборов. Для того чтобы между ними было различие, многоканальным устройствам можно давать имена. Условия использования имен такие же, как и в случае приборов и очередей. Число приборов, которое моделируется каждым из многоканальных устройств, определяется пользователем. В этом смысле употребляют термин «емкость многоканального устройства». В следующем параграфе описаны методы использования элемента «многоканальное устройство» и определения его емкости. 2.37. Использование параллельно работающих каналов. Блоки ENTER (ВОЙТИ) и LEAVE (ВЫЙТИ) В первой части параграфа описаны блоки, соответствующие многоканальным устройствам, рассмотрены основные методы их использования и дополнительные возможности этих блоков. Далее объяснены два метода определения емкости многоканальных устройств. И, наконец, обсуждено основное различие между такими элементами, как прибор и многоканальное устройство с емкостью, равной единице. 2.37.1. Основные методы использования блоков ENTER и LEAVE Использование многоканального устройства для моделирования одного из параллельно работающих приборов аналогично использованию одиночного прибора. Элементом, который занимает и использует устройство, является транзакт. При этом, события происходят в следующем хронологическом порядке: [) транзакт ожидает своей очереди, если это необходимо; 2) транзакт занимает устройство; 3) устройство осуществляет обслуживание в течение некоторого интервала времени; 4) транзакт освобождает устройство. Как и в случае с прибором, разработчик использует многоканальные устройства в модели, применяя пары дополняющих друг друга блоков. Эти блоки моделируют выполнение описанных выше событий 2 и 4. Когда транзакт входит в первый из этих блоков, моделируется событие «занятие одного из группы параллельно работающих приборов». Подобным же образом, когда транзакт входит во второй из этих блоков, моделируется выполнение события «освобождения параллельно работающего прибора». Блоками, соответствующими состояниям «занято» и «освобождено», являются ENTER (ВОЙТИ) и LEAVE (ВЫЙТИ). Эти два блока вместе с операндом А изображены на рис. 2.39. Операнд А в блоках ENTER и LEAVE используется для указания имени соответствующего многоканального устройства. Когда транзакт входит в блок ENTER, ннтерпрета-, тор выполняет следующие действия: 1) «счетчик входов» многоканального устрой-, ства увеличивается на единицу; 2) «текущее содержимое» многоканального устройства увеличивается на единицу; 3) «доступная емкость» многоканального уст- ' ройства уменьшается на единицу. 107
Подобным же образом, когда транзакт входит в блок LEAVE, интерпретатор выполняет следующие действия: 1) «текущее содержимое» многоканального устройства уменьшается иа единицу; 2) «доступная емкость» многоканального устройства увеличивается на единицу. В конце моделирования интерпретатор автоматически распечатывает такую статистику о ^лногоканадьных устройствах, как «счетчик входов», «текущее содержимое» и «максимальное содержимое». Также распечатывается значение «среднего времени пребывания» (т. е. средний интервал времени между различными занятиями и освобождениями). Рассмотрим понятие «среднее время пребывания» более детально. Интерпретатор рассчитывает это значение с использованием полного числа единиц времени, в течение которого различные параллельно работающие приборы находятся в состоянии «занято». Существует только одно такое значение. Оно считается по всем приборам, моделируемым в этом многоканальном устройстве. Значение автоматически корректируется, когда это необходимо. Следовательно, в любое время интерпретатор может вычислить среднее время пребывания делением полного времени на «счетчик входов». Преиму-v ществом такого подхода является учет всех приборов, в том числе и тех, которые еще находятся в занятом состоянии в момент выполнения расчета. Недостатком такого подхода/ является некоторое занижение статистики, поскольку часть приборов еще некоторое время должна быть занята, а это не учитывается при ' расчете. Для каждого конкретного транзакта время нахождения в многоканальном устройстве (т. е. между моментами времени, когда он входит в блоки ENTER и LEAVE) является интервалом, в течение которого одно из параллельно работающих устройств находится в занятом Рис. 2.39. Блоки ENTER (ВОЙТИ) н LEAVE (ВЫЙТИ) с операндом А: Операнд Л Значение Иця (символическое нлн числовое) многоканального устройства Значение или результат по умолчанию Ошибка состоянии. Это означает, что среднее время пребывания идентично среднему времени нахождения транзакта в многоканальном устройстве. Вот почему эта статистика об использовании многоканального устройства распечатывается под названием AVERAGE TIME/ TRAN (СРЕДНЕЕ ВРЕМЯ/ТРАН). Очевидна аналогия между методом расчета интерпретатором статистики AVERAGE TIME/TRANS для очереди и AVERAGE TIME/TRAN для многоканального устройства. Также должно быть ясно, почему интерпретатор не осуществляет привязку транзакта к имени многоканального устройства или к значению модельного времени при прохождении тран- зактом блока ENTER. Для многоканальных устройств расчет значения «нулевых входов» не представляет интереса. Это означает, что привязки не нужны, и, следовательно, не существует ограничений на то, сколько различных многоканальных устройств будет занято транзактом одновременно. Распечатка статистических данных об использований многоканальных устройств, выдаваемая в конце моделирования, будет нами разобрана в примере моделирования в параграфе 2.39. Блоки ENTER н LEAVE относятся к таким блокам, после обработки которых возобновляется просмотр цепи текущих событий от начала. Предположим, что перед тем, как остановиться в каком-либо блоке, транзакт прошел один из блоков ENTER и(или) LEAVE. В этой случае вместо того, чтобы перейти к обработке следующего по списку транзакта в цепи текущих событий, интерпретатор начинает заново просматривать цепь текущих событий. 2.37.2. Использование в блоках ENTER и LEAVE операнда В В блоках ENTER и LEAVE можно использовать операнд В. На рнс. 2.40 дано повторен» рис. 2.39 с добавлением использования операнда В. Как показано на рисунке, операнд В задает число приборов, которое должно бытГ- занято в блоке ENTER или должно быть освобождено в блоке LEAVE. Значением операнда В по умолчанию является 1, что означает, что занят только один прибор. Представляется вполне естественным, что допускается занятие нескольких приборов едю- ственным транзактом в блоке ENTER (и аналогично освобождение нескольких приборов единственным транзактом в блоке LEAVER Предположим, что транзакт моделирует корабль, а многоканальное устройство моделирует причал в порту. В зависимости от pas- мера корабль может потребовать использования нескольких причалов. 108
ENTER k^ Рис. 2.40. Блоки ENTER н LEAVE с операндами А и В: Операнд Л В Значение Имя (символическое или числовое) многоканального устройства Число зп и и моемых приборов Значение или результат по умолчанию Ошибка ! GPSS по отношению к блоку ENTER реали- аует подход «все нли ничего». Транзакт не может занимать приборы один за другим, пока не займет требуемое число приборов. Когда транзакт пытается войти в блок ENTER, интерпретатор проверяет, больше или равна доступная емкость многоканального устройства значению операнда В. Если результат проверки отрицателен, транзакт остается в том блоке, •где он находился, и позднее снова будет пытаться войти в блок ENTER. Рассмотрим теперь влияние параметра В на статисшческие данные, собираемые интерпретатором относительно многоканальных устройств. Когда транзакт входит в блок ENTER, для которого используется операнд В, интерпретатор проделывает следующие действия: 1) «счетчик входов» многоканального устройства увеличивается на значение операнда В; 2) «текущее содержимое» многоканального устройства также увеличивается на значение операнда В; 3) «доступная емкость» многоканального устройства уменьшается на значение операнда В. Подобным образом, при использовании операнда В в блоке LEAVE и входе транзакта в этот блок выполняются следующие действия: 1) «текущее содержимое» многоканального устройства уменьшается на значение операнда В; 2) «доступная емкость» многоканального устройства увеличивается на значение операнда В. Независимо от того, используется или нет значение операнда В, отличное от единицы в блоках ENTER и LEAVE, надо помнить, что статистика по многоканальным устройствам собирается интерпретатором относительно приборов, а не транзактов. Следовательно, «число входов» является полным числом приборов, занимаемых в течение моделирования (некоторые, а может быть и все они занимались не один раз); «среднее содержимое» — это число приборов, занятых в настоящее время, а «максимальное содержимое» — это максимальное число приборов, находившихся в занятом состоянии в какой-то момент времени. Соотношения «один к одному» между приборами и транзак- тами, использующими или нет приборы, выполняются только тогда, когда операнд В в блоках ENTER и LEAVE равен единице. 2.37.3. Карты определения емкости многоканальных устройств Емкость различных многоканальных устройств в модели определяется картами определения емкости многоканальных устройств. Допустимы две формы использования этих карт. Первая форма требует использования одной карты для одного многоканального устройства (табл. 2.21). Как и большинство других карт, карта определения емкости разделена на поле имени, поле операции и поле операндов. В поле имени записывают имя (символическое или числовое) многоканального устройства. В поле операции записывают слово STORAGE (МНОГОКАНАЛЬНОЕ УСТРОЙСТВО). Операнд А специфицирует емкость многоканального устройства. На рис. 2.41 представлены два примера, в которых многоканальные устройства 7 и Таблица 2.21. Форма перфокарты определения емкости одного многокапального устройства Поле Информация и поле Имени Операции Операндов А Имя (символическое или числовое) многоканального устройства Записывается слово STORAGE Емкость многоканального устройства т 17. I I-L • |»|ю ii|i?|iir«iij|*|i'Ti« ■SJOKAfili-u-i-t I A.e.co.Ej |9,А7[гг11|м]м|»ОТДЖ wt i l_i_; Li ПЕРВЫЙ . ПРИМЕР , . , i i ■ . i ■■. I ■ i ■ i ■ i ■ i ' ■ ' ' ' ■ »**»v «,ftll'fi о | (ВТОРОЙ (ПРИМЕР I Рис. 2.41. Примеры записи на перфокартах 109
Имя Операция Операнды Не исполь- STORAGE S имя,, Cj/S нмя„ ct/.../S имяп, с„ эуется Рис. 2.42. Формат карт при определении емкости одного нлн нескольких многоканальных устройств MARY определены с емкостями 5 и 2 соответственно. Вторая форма (рис. 2.42) допускает использование разработчиком для определения емкости двух или более многоканальных устройств одной перфокарты. Поле имени не используется. В поле операции входит слово STORAGE. Основной единицей информации является запись «SShmh;, с,», где «имя» является числовым или символическим именем i'-го многоканального устройства, емкость которого определяется, ас, — его емкость. При использовании символического имени, перед ним, после символа S следует ставить знак доллара ($). Примерами использования основных единиц являются «S5,8», «S$TUGS,3» и «S2J.5». Символ «разделить» (/) используется для разделения подряд записанных основных единиц. Первый же пробел, встреченный интерпретатором в поле операндов, воспринимается им как символ конца карты. Никакая информация (за исключением комментария) не может присутствовать за пределами колонки 71. Если необходимо, можно использовать несколько карт STORAGE. На рис. 2.43 представлены примеры определения емкости многоканальных устройств, по нескольку определений на одной карте. В первом из этих примеров показано, что необязательно располагать определения в порядке возрастания или убывания номеров многоканальных устройств. Второй пример демонстрирует смешанное определение емкости многоканальных устройств, заданных номерами и символическими именами. Из третьего примера следует, что многоканальные устройства с номерами 4, 5 и б имеют емкость по пять элементов. Если необходимо определить емкость многоканальных устройств, номера которых представляют собой непрерывный список целых чисел, то допускается компактная запись вида «S/—S/t, с», где I и k являются соответственно наименьшим и наибольшим номерами многоканальных устройств, ас — общим для ннх значением емкости. В четвертом примере как раз использована такая компактная запись. Далее в книге (хотя это вовсе необязательно) мы будем пользоваться картами определения емкости в самом начале колоды карт после карты SIMULATE (МОДЕЛИРОВАТЬ) до первой карты, определяющей блок. Если разработчик забудет задать значение емкости для какого-либо многоканального устройства в модели, интерпретатор по умолчанию присвоит ему емкость в 231—1 (т. е. 2 147 483 647). Существует возможность переопределения емкостей многоканальных устройств при необходимости выполнения нескольких прогонов за один этап моделирования. Это делается введением в колоду между каргами START предыдущего прогона и START следующего прогона карт нового определения емкостей. Эта процедура будет продемонстрирована в следующем примере моделирования (см. рис. 2Е.З). При переопределении емкостей многоканальных устройств следует избегать появления ошибок. В частности, ошибка может возникнуть, если емкость переопределяемого многока* нального устройства становится меньше, чем это было раньше, и если в момент переопреде* ления «текущее содержимое» многоканального устройства превышает значение вновь определяемой емкости. Если перед переопределением емкости многоканального устройства поставить карту CLEAR, то «текущее содержимое» многоканальных устройств устанавливается в ноль, и, следовательно, ошибка не возникает. LOCATION •Ы* I I I I I .'H&!tt№ SJ.QHAOE. ■ L L I , 1 1—i U Sib^Z/J I I J I I i 4-i_L iTAlA^E ■■■■■■''■ ласас/ JoTllj» il|)4|a|llbr|M|n » )i|jj|«|j4 МЫЫиЫ «Op 4гМ44|п|4||47|4|"|4«|»<Ч| |)?|iS'whi|HA'|»h9J«){<"|iulult4lt^u|»'|u ■ . t ■—L. •I'L^iiASJiiTit&S^ la/.s,t,s,iH»,v.a,.A/)8.a.,,i» -1_L ' ' I SAtteH^puAAwA -~J 1—1—L-J_J. i I STQtA|G,E, , , , S.lMEM,|9,/.S,4—5 -1. I 1 J--L. -M- ■ I I I I I ll,/,s.5,,,3v|sA,i,a,/,sJ3, л. , , -J-t I I I l-L I . I I I I 1 I t ■ Al«jbASl3l,i2l I ■ ...1 La. I ■ ■■■■■ I ПЕРВЫЙ l ПРИМЕР I ВТОРОЙ , ПРИМЕР i i j i I ^ I ТРЕТИЙ t ] ПРИМЕР -H--1- ЧЕТВЕРТЫЙ ПРИМЕР J-j. Piic. 2.43. Примеры использования формата карт рис. 2.42 110
2.37.4. Различие между приборами и многоканальными устройствами с емкостью 1 Хотелось бы все-таки знать, в чем заключается различие между прибором и многоканальным устройством, имеющим емкость 1. Во-первых, , прибор может не только «заниматься», но и захватываться, в то время как единственный элемент многоканального устройства может ■ только «заниматься». Это и есть самое важное различие между приборами и многоканальными устройствами. Захват означает, что если даже прибор занят текущим обслуживанием, он немедленно может быть предоставлен по соответствующему требованию. Захват является очень важным элементом функционирования вычислительных и других сложных систем. Моделирование захватов обсуждается и иллюстрируется несколькими примерами, приведенными в гл. 7. Во-вторых, прибор может быть освобожден только тем транзактом, который его занял. Если транзакт пытается войти в блок RELEASE (ОСВОБОДИТЬ) без предварительного входа в блок SEIZE (ЗАНЯТЬ) того же прибора, возникает ошибка. В противоположность этому, любой транзакт может войти в блок LEAVE без того, чтобы перед этим войти в блок ENTER соответствующего многоканального устройства. Ошибка возникает лишь тогда, когда из «текущего содержимого» вычитается величина, приводящая к отрицательному значению содержимого. Вообще говоря, довольно трудно себе представить, как это транзакт может выйти из многоканального устройства без того, чтобы сначала в него войти. Если это происходит, т. е. если некоторый транзакт выходит из многоканального устройства, то логика требует, чтобы некоторый транзакт перед этим вошел в то же многоканальное устройство и никогда не выходил из него. В противном случае ограничение, заключающееся в том, что текущее содержимое не должно быть отрицательно, будет нарушено. Хотя понятно, что пользователь может работать с многоканальными устройствами на таком интуитивном уровне, никто его к этому не принуждает. По крайней мере в этой книге такой необходимости не возникает. В заключение отметим, что в модели легко заменить один прибор двумя или более, если этот прибор моделируется как многоканальное устройство, достаточно только переопределить его емкость. Если же он моделируется как прибор, блоки SEIZE и RELEASE должны быть заменены блоками ENTER н LEAVE и, кроме того, необходимо определить число каналов такого многоканального устройства (т. е. его емкость) 1. 2.38. Многоканальная система массового обслуживания с очередью Типичный вариант использования многоканального устройства показан на рис. 2.44. Кроме блоков ENTER—ADVANCE—LEAVE (ВОЙТИ—ЗАДЕРЖАТЬСЯ—ВЫЙТИ), есть блоки QUEUE—DEPART, которые собирают информацию об ожидании перед блоком ENTER (эта пара блоков необязательна). Необходимо рассмотреть два варианта обслуживания при моделировании системы, показанной на рис. 2.44. Первый — метод выбора прибора пользователем; второй — метод выбора пользователя прибором. Очень часто при параллельном обслуживании перед каждым прибором образуется очередь. Когда пользователь приходит на обслуживание, он оценивает ситуацию и принимает решение, 1 Именно в этом, наиболее часто используемом случае, название элемента STORAGE, которое должно бы быть переведено как НАКОПИТЕЛЬ, не соответствует его назначению. Вот почему при переволе этот элемент назвали многоканальным устройством. — Прим. пер. OUEUE S~~\ S '1 ENTER " DEPART " ADVANCE A.B " LEAVE fSERVS Э SERVS Рис. 2.44. Типичный пример моделирования с использованием многоканального устройства 11
Проход •-ОООО ш Уход ^т' Три параллельных Рнс. 2.45. Пример системы многоканального обслуживания с одной очередью в какую очередь ему стать. В этом смысле пользователь своим выбором прибора отбрасывает другие приборы. Такое отбрасывание невозможно, когда параллельное обслуживание моделируется многоканальным устройством. Приборы, которые являются частью многоканального устройства, не имеют своей индивидуальности. Это означает, что нет возможности разделить очереди по каждому прибору. Следовательно, реализуется концепция: если подошла очередь какого-либо пользователя, то он идет на обслуживание к любому свободному прибору. Это эквивалентно наличию единственной очереди перед устройством с многоканальным обслуживанием. Приходящий пользователь просто становится в очередь. Когда подходит его очередь, он идет на любой свободный прибор (рис. 2.45). При этом следует заметить, что хотя пользователи не могут выбирать прибор, приборы могут выбрать пользователей. Приборы выбирают из очереди пользователей, упорядоченных по приоритетному признаку. Когда прибор освобождается, он выбирает пользователя по принципу «первым пришел — первым обслужен внутри приоритетного класса». Приборы, которые моделируются многоканальным устройством, реализуют в GPSS такой выбор автоматически. Это происходит потому, что тран- закты, ожидающие входа в блок ENTER (см. рис. 2.44), отсортированы в цепи текущих событий в порядке убывания их уровней приоритетов. После прохождения транзактом блока LEAVE освобождение одного или более приборов вызывает возобновление просмотра цепи текущих событий. Свободный прибор занимается высокоприоритетным транзактом, причем тем из них, который ждет дольше всех. Эта ситуация проиллюстрирована на рис. 2.46. Приходящие пользователи не просто становятся в конец очереди, а вливаются в очередь как последние элементы своего приоритетного класса. Рис. 2.46 является повторением рис. 2.45, внесены лишь различия в приоритетах пользователей. Схема многоканального обслуживания с одной очередью часто используется в реальных ситуациях. Это справедливо для тех случаев, когда элементы, ожидающие обслуживания, неодушевлены и однородны, что часто бывает на практике. Это, например, имеет место, когда из цеха в цех по конвейеру двигаются некоторые детали. И хотя в цехах могут быть люди, работающие параллельно, работа их идентична и поступает из единого источника. Многоканальная система массового обслуживания с одной очередью также часто используется и в случае, когда осуществляется обслуживание людей. Такими примерами являются банки, где реализуется система быстрой очереди. Человек, входя в банк, не выбирает себе окошко и не становится в очередь к нему, а становится в конец общей очереди, которая ведет ко всем окошкам. При таком подходе не- возможно обогнать других клиентов, время обслуживания которых больше обычного (например, клиентов, открывающих новый счет или покупающих или выписывающих аккредитив). Очень часто при параллельном обслуживании образуется несколько различных очередей. Моделирование такой многоканальной системы обслуживания с несколькими очередями сложнее, чем моделирование многоканальных систем с единственной очередью. Например, надо определить критерий выбора очередей требованиями. Когда приходит новое требование, этот критерий следует использовать для определения очереди, к которой ему следует прв> соединиться. Также следует предусмотреть воз» можность перехода из очереди в очередь. Если очередь двигается слишком медленно, то стоя- Высший, приоритет Приход Средний, приоритет приоритет ^1/ Низший , а n\000\A^[Aj_^. Уход Очередь Три параллельных прибора. Рнс. 2.46. Многоканальная система массового обслуживания с одной очередью и приоритетами 112
щие в конце очереди могут захотеть перейти в другую очередь. Моделирование многоканальных систем массового обслуживания с несколькими очередями мы отложим до гл. 4. 2.39. Пример моделирования 2Е. Задача об управлении производством \.\Постановка задачи. На трикотажной фабрике 50 швейных машин работают по 8 ч в день и по 5 дней в неделю. Любая из этих машнн может в любой момент времени выйти из строя. В этом случае ее заменяют резервной машиной, причем либо сразу, либо по мере ее появления. Тем временем сломанную машину отправляют в ремонтную мастерскую, где ее чинят и возвращают в цех, но уже в качестве резервной. В существующем замкнутом цикле движения машин легко выделить четыре фазы (рис. 2Е.1). На рисунке квадраты представляют машины, находящиеся в работе или в резерве. Перечеркнутые квадраты представляют собой машины либо ремонтируемые, либо ожидающие ремонта. Показаны две машины в ремонте; предполагается, что два человека могут параллельно чинить машины. Всего в системе находятся 59 машин (две в ремонте, две ждут ремонта, 50 в работе и пять готовы к использованию). Управляющий хочет знать, сколько рабочих следует нанять для работы в мастерской, сколько машин следует иметь в резерве, какую платить за это арендную плату, чтобы резервными машинами можно было подменить 50 собственных. Цель — минимизация стоимости производства. Оплата рабочих в мастерской 3,75 доллара в час. За машины, находящиеся в резерве, надо платить по 30 долларов в день. Почасовой убыток при использовании менее 50 машин в производстве оценивается примерно г—паппп Резерв нашим, готовых к использованию /А □ □□•••□ 41/ I Машины, вышедшие Машины, uj строя и ожидающие иаховящиеся вренспт? ремонта Рис. 2Е.1. Функциональная схема примера моделирования 2Е в 20 долларов на машину. Этот убыток возникает из-за снижения производства. Опыт эксплуатации подсказывает, что на ремонт сломанной машины уходит примерно 7 =£ 3 ч, распределение равномерное. Когда машину используют в производстве, время наработки до отказа распределено равномерно и составляет 157 =£ 25 ч. Время, необходимое для перевозки машины из цеха в мастерскую и обратно, мало, и его не учитывают. Между рабочими в мастерской не делают никаких различий. Не делают различий также и между машинами. Иными словами, распределение времени ремонта не зависит от того, кто какую машину ремонтирует. Распределение времени наработки до отказа одинаково как для собственных, так и для арендуемых машин. Плата за арендуемые машины не зависит от того, используют их или они простаивают. По этой причине не делают попыток увеличить число собственных машин в работе в любой период времени. Предполагаем, что машину снимают с работы только в том случае, если она ломается. Необходимо построить на GPSS модель такой системы и исследовать на ней расходы при различном числе арендуемых машин, доступных управляющему. Найдите такую величину, которая минимизирует стоимость эксплуатации системы. 2. Метод построение модели. Как и в случае 2D, предполагается, что в первую очередь следует разобраться в том, какие ограничения существуют в системе, а затем определить, какие элементы GPSS следует использовать для удовлетворения этих ограничений. В нашей системе (см. рис. 2Е.1) существуют три ограничения. 1. Число рабочих в мастерской. 2. Максимальное число швейных машин, одновременно находящихся в производстве. 3. Общее число машин, циркулирующих в системе. Для моделирования двух первых ограничений удобно использовать многоканальные устройства, а третье ограничение моделировать тран- зактами. В результате такого выбора, грубо говоря, рабочие мастерской и машины, находящиеся в производстве, задаются некоторыми константами (см. рис. 2Е.1) и занимают в системе определенное место. Сами швейные машины являются динамическими объектами, перемещаемыми из одного места в другое в процессе их циркулирования в системе. Рассмотрим состояния определенной машины в процессе полного оборота в цикле системы на рис. 2Е.1. Предположим, что машина в настоящий момент находится в резерве. Тогда многоканальное устройство NOWON (now on, т. е. в работе), используемое для моделирова- 8 Т. Дж. Шравбер 113
ния находящихся в работе машин, заполнено, и резервные машины не могут войти в многоканальное устройство. Машина, находящаяся в состоянии резерва, может получить возможность войти в работу. Транзакт, моделирующий ее, может осуществить это после многократных попыток войти в многоканальное устройство NOWON, когда одна нз них, наконец, будет успешной. Проходя через блок ENTER в блок ADVANCE, транзакт моделирует время работы этой машины до тех пор, пока последняя не сломается. После того, как машина вышла из строя, транзакт покидает многоканальное устройство NOWON и тем самым открывает возможность другой резервной машине войти в работу. Теперь транзакт ожидает (если в этом есть необходимость) входа в многоканальное устройство MEN (рабочие мастерской). Войдя в это многоканальное устройство, транзакт играет роль ремонтируемой машины. Когда он уходит из этого многоканального устройства, тем самым освобождая рабочего, последний может приняться за ремонт следующей машины. Тем временем транзакт вновь возвращается в ту точку модели, в которой он снова начинает делать попытки войти в многоканальное устройство NOWON. Общее число машин, циркулирующих в системе, равно 50 собственным машинам плюс некоторое число арендуемых для резерва. Это число следует задавать до начала прогона модели с использованием ограничителя блока GENERATE. Единственным недостающим элементом модели теперь является таймер. Обратите внимание на то, что многоканальное устройство NOWON можно рассматривать как 50 операторов швейных машин. Эта точка зрения отвечает тому ограничению, что одновременно не могут работать более 50 швейных машин. Эта довольно сложная задача на GPSS может быть промоделирована очень просто. Модель этой же системы на языке FORTRAN значительно сложнее. 3. Таблица определений. Единица временя: 1 ч. Таблица 2ЕЛ. Таблица определений примера моделирования 2Е Элементы GPSS Транзактц: 1-й сегмент модели 2-й сегмент модели Многоканальные устройства: MEN NOWON Интерпретпцня Швейные машины Таймер Рабочие мастерской Накопитель емкостью 50, т. е. максимальное число швейных машин, находящихся в работе одновременно 114
4. Блок-схема. ,'CNTRL) GENERATE ид (BACK) ENTER NO WON ADVANCE 157 25 LEAVE NO WON ENTER <men\ ADVANCE 7.3 LEAVE I ^MEN/ TRANSFFE R (BACK) ОПРЕДЕЛЯЮТСЯ 53 МАШИНЫ (50 СОБСТВЕННЫХ И ТРИ АРЕНДУЕМЫЕ) МАШИНА ПОСТУПАЕТ В РАБОТУ МАШИНА РАБОТАЕТ МАШИНА ЛОМАЕТСЯ. ВЫХОДИТ ИЗ РАБОТЫ ЗАНЯТИЕ РАБОЧЕГО МАШИНУ РЕМОНТИРУЮТ ОСВОБОЖДЕНИЕ РАБОЧЕЮ ВЕРНУТЬСЯ И НАЧАТЬ РАБОТУ. ЕСЛИ НЕОБХОДИМО GENERATE V 6240 TERMINATE 2-И СЕГМЕНТ МОДЕЛИ ГСЕГМЕНТ ТАЙМЕРА) 1-Й СЕГМЕНТ МОДЕЛИ Рис. 2Е.2. Блок-схема примера моделирования 2Е (трн резервные машины) 8* 115
5. Распечатка программы. BLOCK CARO NUMBER *LOC OPERATION A,BiC.0.E.F.G COMMENTS NUMBER SIMULATE l • г • STORAGE CAPACITY OEFINIT ION( S) 3 * * STORAGE S»MEN,3/SSN0W0N.50 3 MEN: MAX OF 50 MACH1S RUNNING 5 * 6 .* MOOEL SEGMENT I 7 • a 1 CNTRL GENERATE ...53 PROVIDE 53 MACHINES (50 OWNED; 3 RENTEOI 9 2 -BACK ENTER NOW ON MACHINE GOES INTO PRODUCTION 10 3 AOVANCE 157.25 MACHINE IS RUNNING 1> * LEAVE NOWON MACHINE FAILS: COMES OUT OF PROOUCTION 12 5 ENTER MEN CAPTURE A REPAIRMAN 13 6 AOVANCE 7.3 MACHINE IS BEING REPAIRED 1* 7 LEAVE MEN FREE THE REPAIRMAN 15 8 TRANSFER .BACK GO BACK TO RUN AGAIN WHEN NEEOEO 16 * 17 * MOOEL SEGMENT 2 IB * 19 9 GENERATE 62*0 TIMER COMES AFTER 3 YEAR5 («0-HOUR WEEKS) 20 10 TERMINATE 1 SHUT OFF THE RUN 21 * 22 * CONTROL CARDS. BLOCK OPERAND RE-DEFS. AND STG CAPACITY RE-0EF5 23 * 2" START I START THE 1ST RUN 25 1 CNTRL GENERATE ...5* SET RENTEO MACHINES = * FOR 2N0 RUN 26 MULTIPLE OEF IN IT ION OF SYMBOL IN ABOVE CARO , CLEAR CLEAR FOR 2N0 RUN 27 START 1 START THE 2N0 RUN 28 I CNTRL GENERATE ...55 SET RENTEO MACHINES = 5 FOR 3RD RUN 29 MULTIPLE DEFINITION OF SYMBOL IN ABOVE CARO CLEAR CLEAR FOR 3RD RUN 30 START I START THE 3R0 RUN 31 STORAGE SSMEN.4 SET REPAIRMEN HIRED = * FOR «TH RUN 32 1 CNTRL GENERATE •••53 SET RENTEO MACHINES = 3 FOR *TH RUN 33 MULTIPLE 0EFINIT10N OF SYMBOL IN ABOVE CARO CLEAR CLEAR FOR «TH RUN 3* START 1 START THE 4TH RUN 35 1 CNTRL GENERATE ...5* SET RENTEO MACHINES = » FOR 5TH RUN 36 MULTIPLE 0EF1NITI0N OF SYMBOL IN ABOVE CARO CLEAR CLEAR FOR 5TH RUN 37 START I START THE 5TH RUN 36 1 CNTRL GENERATE ...55 SET RENTEO MACHINES = 5 FOR 6TH RUN 39 MULTIPLE 0EF1N1TI0N OF SYMBOL IN ABOVE CARO CLEAR CLEAR FOR 6TH RUN *° START 1 START THE 6TH RUN »1 STORAGE StMEN.S SET REPAIRMEN HIREO = 5 FOR 7TH RUN *2 I CNTRL GENERATE ...53 SET RENTEO MACHINES = 3 FOR 7TH RUN *3 MULTIPLE DEFINITION OF SYMBOL IN ABOVE CARO CLEAR CLEAR FOR 7TH RUN ** START I START THE 7TH RUN »5 1 CNTRL GENERATE ...5* SET RENTEO MACHINES = * FOR BTH RUN »6 MULTIPLE OEFINITION OF SYMBOL IN ABOVE CARO CLEAR CLEAR FOR BTH RUN *7 START i START THE 8TH RUN »B I CNTRL GENERATE ...SS SET RENTEO MACHINES = 5 FOR 9TH RUN *9 MULTIPLE DEFINITION OF SYMBOL IN ABOVE CARO CLEAR CLEAR FOR 9TH RUN 50 START I START THE 9TH RUN SI END RETURN CONTROL TO OPERATING SYSTEM 52 'ис 2Е.З. Распечатка программы примера моделирования 2Е
6. Выходные данные. STORAGE MEN NOMON CAPAC1TT • 3 90 AVERAGE CONTENTS 2.IBS *9.1вг AVERAGE UTILIZATION .726 .983 ENTRIES 192» 197* AVERAGE TIME/THAN 7.087 ISS.«7I CURRENT CONTENTS 50 MAXIMUM CONTENTS 3 so STORAGE MEN NO» ON CAPACITY 3 so AVERAGE CONTENTS г. ieo •9.486 AVERAGE UTILIZATION .726 .989 ENTRIES 193* B98* AVERAGE TIME/THAN 7.036 155.6*3 CURRENT CONTENTS 3 so MAXIMUM CONTENTS 3 so STORAGE MEN NOKON CAPAC ITY 3 SO AVERAGE CONTENTS 2.la* «9.629 AVERAGE UTILIZATION .728 .992 ENTRIES I9SI 2003 AVERAGE TIME/TRAM «.986 1S4.6I1 1 CURRENT CONTENTS 3 «9 MAXIMUM CONTENTS 3 so ») Рис. 2E.4. Часть распечатки выходных данных примера моделирования?2Е: а — статистика по ивогокаяальвыи устроВстваи для соотношения «трое рабочнх — трв арендуемые иашвны»; б — статистика поТимго- мяальныи устроВстваи для соогношевня «трое рабочих — четыре арендуемые машины»; в — статистике по многоканальным устроВстваи для соотношения «трос рабочих — пять арендуемых машин» 7. Обсуждение. Стратегия моделирования. Модель используется для оценки сочетания «нанимать/арендовать», которое минимизировало бы средние дневные расходы на производство. На основании результатов моделирования можно будет сказать, какие затраты несет производство прн различных сочетаниях «нанимать/арендовать». Для фиксированного числа нанятых рабочих мастерской средние дневные расходы будут меняться в зависимости от числа арендуемых машин (рис. 2Е.5). При достаточно малом числе арендуемых машин расходы велики ввиду убытков нз-за потери объема производства. При большом числе арендуемых машин стоимость также велика, поскольку приходится дорого платить за резервные машины, число которых больше необходимого. По-видимому, где-то между этими значениями находится минимум. Подобным же образом, при заданном числе арендуемых машин влияние числа нанятых I <! ЧГ ч ь» «3 «». 1 «1 «• * <* • Ф • • • • • —»» Число арендуемых машин Рис. 2Е.5. Зависимость дневных расходов от числа арендуемых машин (число рабочих постоянно) I "§ Число рабочих Рнс. 2Е.6. Зависимость дневных расходов от числа рабочих (число арендуемых машин постоянно) *• • * . рабочих на дневные -расходы выглядит так, как показано на рис. 2Е.6. При малом числе рабочих расходы высоки ввиду убытков из-за потери объема производства. При большом числе рабочих расходы также высоки ввиду высокой оплаты простаивающих рабочих. Вполне естественно предположить, что расходы проходят через свой минимум где-то между этими двумя величинами. На рис. 2Е.7 представлено трехмерное пространство для описанной ситуации. Обратите внимание на то, что множество точек, получаемых пересечением линий решетки на плоскости, представляют собой область допустимых решении (т. е. целых значений) пар величин «число нанятых — число арендуемых». Третьим измерением являются дневные расходы, соответствующие каждой из этих точек пересечений (значения расходов не показаны). Множество всех значений расходов образует 117
Дневные расходы Число арендуемы* машин 1 2 3 Ь 5 Рис. 2Е.7. Поверхность дневных расходов в трехмерном пространстве поверхность расходов в третьем измерении. (Не поверхность, а точки образуют множество дискретных значений. Тем не менее удобно использовать термин «поверхность».) Рис. 2Е.5 и рис. 2Е.6 являются сечениями этой поверхности. Можно предположить, что эта поверхность имеет одну точку минимума. Поиск оптимального сочетания «число нанятых — число арендуемых» является, следовательно, поиском этой точки. Этот поиск можно осуществить различными методами. Рассмотрим два из них. 1. Можно применить метод наискорейшего спуска. Этот метод заключается в выборе оптимального направления движения в области зиачений переменных по некоторому контуру до тех пор, пока не будут исчерпаны все возможные направления движения. Особенно удобно использовать этот метод либо при диалоговом режиме доступа к модели на ЭВМ через выносной пульт, либо если этот метод встроен в модель. В данной книге вторым методом мы пользоваться не будем. 2. Модель может выполняться таким образом, что за каждый прогон определяется значение стоимости для одного соотношения значений «число нанятых — число арендуемых», и эти соотношения последовательно перебираются. Сначала можно исследовать довольно редкую решетку, так чтобы соотношения отстояли довольно далеко друг от друга. Рассмотрение результата обычно показывает, в какой области следует продолжать исследование. На следующем этапе моделирования исследуется ограниченная область с более близко расположенными значениями интересующего нас соотношения. Если необходимо, этот процесс можно продолжать, сужая область и делая решетку более частой. Так можно дойти до оптимального решения. Мы будем придерживаться второго метода. В нашей простой задаче нет необходимости начинать с редкой решетки, поскольку простой расчет делает возможной приближенную оценку местонахождения точки минимальных расходов. Для начала напомним, что дневная оплата рабочих, аренда машин и убытки из-за нехватки машин составляют 30, 30 и 160 долларов соответственно. Стоимость убытков от потери объема продукции непропорционально велика. Это означает, что оптимальное соотношение следует искать среди таких зиачений, которые вызывают потери из-за простоев машин. Теперь рассмотрим условия, при которых ожидаются небольшие потери продукции. Мы видим из исходных даииых, что среднее время работы машины равно 157 ч, а среднее время ее восстановления 7 ч. Рассмотрим некоторую гипотетическую «идеальную» систему, в которой нет очередей из машин. В такой идеальной системе вышедшая из строя машина никогда не простаивает перед тем, как рабочий начнет ремонт. Кроме того, она сразу после ремонта возвращается в работу. Тогда каждая машина имеет средний цикл времени, равный 164 ч. Использование машины в такой идеальной системе равно примерно 95% [157/164 = 0,95]. Если в работе все время должно быть 50 машин (чтобы исключить потери из-за снижения объема производства), то общее число машин, циркулирующих в системе, должно быть равно 52,6 [52,6 х 0,95 = 50]. При 50 работающих машинах 2,6 машины должны быть в резерве. Это, в свою очередь, означает, что следует нанять 2,6 рабочих. Приведенный расчет основан на некоторой идеализации системы-. Конечно из-за наличия случайности в функционировании системы машины будут простаивать в двух местах, где ожидание потенциально возможно. Более того, арендовать 2,6 машины или нанять 2,6 рабочих невозможно. В результате приходим к выводу, что следует арендовать три, четыре или пять машин и взять на работу троих, четверых или пятерых рабочих. Это означает, что необходимо провести моделирование при девяти комбинациях, получающихся при переборе трех значений числа рабочих и трех значений числа машин. После того, как моделирование будет проведено, станет ясно, что наименьшую оценку стоимости дневных потерь дает соотношение «четверо рабочих — четыре резервные машины». Использование модели. Для моделирования использовали модель, представленную иа рис. 2Е.2. Было осуществлено девять реконфигураций модели за один этап моделирования. Подготовленная колода карт для этого выглядела так, как показано на рис. 2Е.З. Обратите внимание на то, что карта 5 определяет емкость многоканальных устройств MEN и NOWON значениями 3 и 50 соответственно. Это соответствует трем нанятым рабочим и 50 одновременно работающим машинам. Карта 9 определяет блок GENERATE, через который в модель входят траизакты-машины. Опе- 1 1 О
ранд D равен 53, что соответствует наличию трех резервных арендуемых машин (операнд D равен сумме собственных и арендуемых машин). Блок GENERATE имеет символическое нмя CNTRL (CoNTRoL, т. е. управление), поскольку этот блок должен переопределяться между картами START, когда необходимо отразить изменения в числе арендуемых машин. После первой карты START карты 26, 27 и 28 соответственно изменяют модель (отражают реконфигурацию) и определяют четыре арендуемые машины, очищают модель от транзактов и сбрасывают статистику после первого прогона модели. Начинается моделирование при условиях «трое рабочих — четыре арендуемые машины». Карты 29, 30 и 31 повторяют эту процедуру и определяют соотношение «трое рабочих — пять арендуемых машин». Затем карта 32 переопределяет емкость многоканального устройства MEN на 4. Карта 33 модифицирует блок GENERATE с именем CNTRL, что снова определяет «три арендуемые машины». Далее модель очищается картой 34, а карта 35 начинает Моделирование при соотиошении «четверо рабочих — три арендуемые машины». Затем перебираются соотношения «4—4», «4—5», «5—3», «5—4», «5—5». Результаты моделирования. (Полное время моделирования на ЭВМ IBM 360/67 равнялось 68,2 с.) На рис. 2Е.4 представлены выходные данные по многоканальным устройствам для первых трех изучаемых конфигураций системы. Для каждого многоканального устройства выдается семь различных типов информации. Рассмотрим их значения для многоканального устройства MEN (рис. 2Е.4, а). 1. Моделировать три параллельно работающих прибора этого многоканального устройства, CAPACITY (ЕМКОСТЬ)=3. 2. В среднем 2,185 из этих устройств были в состоянии занятости, AVERAGE CONTENTS (СРЕДНЕЕ СОДЕРЖИМОЕ) = 2,185. 3. В среднем эти три прибора были загружены иа 72,8%, AVERAGE UTILIZATION (СРЕДНЯЯ НАГРУЗКА) = 0,782. 4. Общее число занятий приборов было 1924, ENTRIES (ВХОДОВ) = 1924. 5. Среднее время на одно занятие было 7,087единиц, AVERAGE TIME/TRAN (СРЕДНЕЕ ВРЕМЯ/ТРАН) = 7,087. 6. Ни один из приборов не находился в занятом состоянии в момент остановки моделирования, CURRENT CONTENTS (ТЕКУЩЕЕ СОДЕРЖИМОЕ) = «пусто». 7. В процессе моделирования были моменты, когда все три прибора были в состоянии занятости одновременно, MAXIMUM CONTENTS (МАКСИМАЛЬНОЕ СОДЕРЖИМОЕ) = 3. Просматривая рис. 2Е.4, можно отметить, что AVERAGE UTILIZATION (СРЕДНЯЯ НАГРУЗКА) многоканального устройства NO WON изменяется от 0,983 до 0,989 и далее до 0,992. Отметим также, что в момент выдачи результатов (рис. 2Е.4, а) фабрика работала с полной нагрузкой, т. е. CURRENT CONTENTS (ТЕКУЩЕЕ СОДЕРЖИМОЕ) многоканального устройства NOWON было равно 50. Сопоставьте эти значения с аналогичными значениями на рис. 2Е.4, бив. В табл. 2Е.2 собраны величины нагрузки многоканального устройства NOWON как функции девяти различных значений соотношения «число рабочих — число арендуемых машин», определяемых моделью 2Е.З. Результаты соответствуют сделанным ранее предположениям. При заданном числе рабочих нагрузка растет при увеличении числа арендуемых машин. Аналогично этому при заданном числе арендуемых машин нагрузка растет при увеличении числа рабочих. Таблица 2Е.2. Нагрузка многоканального устройства как функции различных соотношений «число рабочих—число машин» Число нанятых рабочих 3 4 5 Число арендуемых машин 3 0.983 0,989 0,991 4 0,989 0,993 0,993 5 0,992 0,995 0,997 В табл. 2Е.З собраны значения расходов для различных соотношений «число рабочих — число арендуемых машин». В табл. 2Е.З, а показаны фиксированные значения оплаты труда рабочих и арендной платы за машины; в табл. 2Е.З, б — стоимость уменьшения выпуска продукции, которая легко рассчитывается по значению нагрузки устройства NOWON и платы за снижение объема производства; в табл. 2Е.З, в—сумма этих расходов. Сравнение результатов в табл. 2Е.З, в показывает, что на основании проведенного моделирования можно сделать вывод о том, что наиболее выгодным соотношением числа рабочих и числа арендуемых машин является «четыре— четыре». Следует, однако, помнить, что значения нагрузки в табл. 2Е.2, являются только оценками правильного решения, которое может быть получено лишь при длительном моделировании всех изучаемых соотношений. Это, в свою очередь, ведет к тому, что расходы в табл. 2Е.З, в также являются оценками. При более тщательном анализе эти результаты могут оказаться несколько иными. Например, может случиться так, что правильные расходы при соотношении «четверо рабочих — три арендуемые машины» 119
Таблица 2Е.З. Дневные расходы, долларов в день, при различных соотношениях «число рабочих—число машин» а) Фиксированная плата Число рабочих 3 4 5 Число арендуемых 3 180 210 240 4 210 240 270 мпшип 5 240 270 300 б) Потери из-за снижении объема производства Число рабочих 3 4 5 Число 3 136 88 72 арендуемых машин 1 1 88 56 56 5 64 40 24 в) Общве расходы Чнсао рабочих 3 4 5 Число 3 316 298 312 арендуемых машин 4 298 296 326 5 304 310 324 окажутся ниже, чем при соотношении «четверо рабочих — четыре арендуемые машины». Этот вопрос будет рассмотрен в следующем параграфе. 2.40. Управляющие карты GPSS. Карта RESET (СБРОСИТЬ) Начальные условия модели могут заметно отличаться от тех условий, которые имеют место при достижении системой устойчивого состояния. (Некоторые системы могут вовсе не достигать устойчивого состояния. Хорошим примером такой системы является работа банка. В период между открытием банка в 9 ч 30 мин утра и закрытием в 15 ч 00 мин дня условие его работы в значительной степени зависит от времени дня. Однако подобные системы не рассмотрены.) Рассмотрим еще раз пример моделирования 2Е. При типичных условиях функционирования некоторые из находящихся в работе машин должны быть в конце времени наработки до отказа, другие должны только начинать работу и т. д. Следовательно, время, оставшееся до отказа работающих машин, будет 1 распределено равномерно в интервале от нуля до некоторого максимального времени работы. В начале моделирования состояние системы, приведенной на рис. 2Е.2, таково, что все 50 машин, находящихся в работе, только что вошли в действие. Поскольку время наработки до отказа для каждой швейной машины распределено равномерно и равно 157 ±= 25 ч, то ни одна из этих машин не может выйти из строя ранее значения модельного времени 132. Это означает, что в начале моделирования оставшееся время работы находящихся в производстве машин нереально. В то же время условия функционирования при различных соотношениях «рабочие — машины» изучаемой системы должны определяться при достижения моделью реальных условий, в противном случае это может привести к неверным выводам. Теперь посмотрим, как же можно обеспечить возможность определения типичного значения или значений соответствующих статистических данных. Интересующей нас статистикой в примере моделирования 2Е является нагрузка многоканального устройства NOWON (как показано в предыдущем параграфе, стоимость падения выпуска продукции зависит именно от этой статистики; эта стоимость, в свою очередь, является основой для выбора оптимальных условий функционирования). Для получения достоверной статистики существуют три подхода. 1. Модель надо разработать так, чтобы условия функционирования были типичными с самого начала. Затем можно начать моделирование и сразу же снимать статистические данные. 2. Можно моделировать систему так долго, что любые нетипичные статистические данные, собранные в самом начале процесса моделирования, «утонут» среди типичных данных, собранных в последующее время моделирования. Иными словами, надо сделать так, чтобы нетипичные данные составляли малый процент от полного объема данных и тем самым не имели сколько-нибудь заметного влияния. 3. Можно поступать следующим образом: а) моделировать до возникновения типичных условий работы системы; б) отбросить собранную до этого времени статистику без изменения состояния модели; в) продолжить моделирование, собирая статистику, на которую уже не влияют нетипичные ситуации. Первый подход требует от разработчика знания типичных условий работы и умения внести в модель эти условия. В моделях сложных систем первое требование вряд ли выполнимо. Даже если бы он мог это сделать, то удовлетвО" рить второе требование весьма затруднительно. В упражнениях к следующему параграфу мы еще раз вернемся к этой проблеме на примере
моделирования 2Е (см. упражнение 3 параграфа 2.41). Второй подход имеет значительный недостаток: при нем требуется слишком долгое моделирование до наступления такого состояния, когда исчезает влияние ранее собранных неверных данных. Стоимость такого длительного моделирования для сложных систем может оказаться слишком высокой, что делает этот подход нежелательным. Таким образом, третий подход оказывается наиболее удобным. Его можно сравнить с подходом, принятым для реконфигурации модели в некоторой промежуточной точке моделирования, когда мы объединяем несколько прогонов модели с альтернативными конфигурациями в один этап моделирования. Напомним шаги этого подхода. 1. Остановить моделирование. 2. Переопределить некоторые блоки модели, емкость многоканальных устройств и т. д. 3. «Очистить» модель. В очистку входит три операции, выполняемые с помощью карты CLEAR (ОЧИСТИТЬ): а) сбросить всю статистику в ноль; б) очистить цепи; в) выполнить фазу ввода, т. е. ту ее часть, где производится планирование входов в каждый из блоков модели GENERATE. 4. Возобновить моделирование с помощью карты START (НАЧАТЬ). По отношению к этой.схеме третий подход состоит в точности из выполнения шагов 1, За и 4. Шаги 2, 36 и Зв приведенной схемы не выполняются, а эффект должен состоять именно в отбрасывании статистических данных с последующим продолжением моделирования без каких-либо видоизменений модели. Мы уже знаем, как выполнить шаги 1 и 4. Теперь нам необходима управляющая карта, которая выполняла бы шаг За, т. е. сбрасывала бы статистику в ноль, но в отличие от карты CLEAR не очищала бы цепи и не выполняла бы фазу ввода. Картой GPSS, выполняющей эту работу, является карта RESET (СБРОСИТЬ). Она состоит из слова RESET, записываемого в поле операции перфокарты. Блока, эквивалентного этой карте, нет. Когда интерпретатор обрабатывает эту карту, он устанавливает статистику в нулевое состояние, а затем, как обычно, переходит к следующей карте в колоде. Если следующей картой является карта START, возобновляются моделирование н сбор статистических данных. Таким образом, с помощью карты RESET обеспечивается удобное средство сбора статистических данных в типичных условиях функционирования систем. Существует несколько элементов статистики, на которые карта RESET не оказывает влияния. 1. «Поток случайных чисел» не устанавливается в исходное состояние. При возобновлении моделирования последовательность случайных чисел продолжается с того места, в котором она оборвалась на предыдущей фазе моделирования. 2. Счетчик текущих значений каждого блока устанавливается равным числу транзактов, находящихся в блоке. Счетчики числа входов в блоки устанавливаются в ноль. Что касается последующих значений счетчиков блоков, то далее они интерпретируются как число транзактов, которое входит в блоки в оставшееся время моделирования. 3. Таймер абсолютного времени не устанавливается в ноль, а таймер относительного времени устанавливается. Значениям таймеров абсолютного и относительного времени можно придать следующую интерпретацию. Таймер относительного времени измеряет модельное время, прошедшее после последней очистки модели (или от начала моделирования, если очистки еще не было). Если не использовалось ни одной карты RESET, то значения таймеров абсолютного и относительного времени равны, и таймер относительного времени не дает никакой дополнительной информации. Если же значения таймеров не совпадают, то таймер относительного времени указывает интервал модельного времени, прошедший после последнего сброса статистик модели. В качестве необязательного средства существует возможность использования карты RESET в режиме выборочного сброса. Она позволяет специфицировать те элементы (например, приборы и (или) состояния очередей и (или) многоканальные устройства), статистика которых ие должна сбрасываться. Поскольку такой режим использования GPSS встречается достаточно редко, в книге мы его рассматривать не будем. Подразумевается, что если моделирование выполняется достаточно долго, то система приходит в стационарное состояние. Возникает естественный вопрос, сколько времени следует вестн моделирование до наступления этого состояния? Очень часто ответ на этот вопрос можно получить из опыта экспериментирования с моделью. Карта RESET, в частности, служит для этого. Иллюстрацией такого использования карты RESET является рис. 2.47, на котором представлена распечатка программы, с помощью которой исследуется характер изменения нагрузки многоканального устройства NOWON примера моделирования 2Е для случая сочетания «четверо рабочих — четыре арендуемые машины». Карты 25, 26 и 27 изображают типичное использование группы START—RESET— START (НАЧАТЬ — СБРОСИТЬ — НАЧАТЬ) 121
BLOCK NUMBER •LOC " OPERATION SIMULATE A.B.C.O.E.F.G 9 10 BACK STORAGE CAPACITY OEF I Nt T I ONI S > STORAGE S*MEN.*/S»NOWQN.SO model segment i COMMENTS « MEN; MAX OF 50 MACH'S RUNNING GENERATE ENTER ADVANCE LEAVE ENTER ADVANCE LEAVE TRANSFER imM NOW ON IS7.2S NOW ON MEN 7.3 MEN • BACK MOOEL SEGMENT 2 GENERATE TERMINATE АО 1 CONTROL CARDS START RESET START RESET start' RESET START RESET START RESET START ENO 1 1 I 1 1 1 PROVtOE 5* MACHINES machine goes into production machine is running machine fails; comes out of production Capture a repairman machine ts being repaired free the repairman go back to run again when needed TIMER ARRIVES EVERT АО HOURS SHUT OFF THE RUN START RUN FOR MEEK reset ron week г START RUN FOR WEEK RESET FOR MEEK 3 START RUN FOR MEEK RESET FOR WEEK * START RUN FOR WEEK RESET FOR WEEK 2« START RUN FOR WEEK Z* ftESET FOR WEEK 25 START RUN FOR MEEK 25 RETURN CONTROL TO OPERATING SYSTEM I CARO NUMBER 1 г 3 a ь 6 7 6 10 11 12 13 la IS 16 17 18 19 20 21 22 23 2* 25 26 27 28 29 So 31 70 71 72 73 7» Рис. 2.47. Модель для экспериментального определения времени, требуемого для входа в стационарный режим для осуществления действий шагов: 1 — остановка моделирования; За — сброс статистик в нулевое состояние и 4 — возобновление моделирования. Интервалом модельного времени между сбросами является одна рабочая неделя (т. е. 40 ч; заметьте, что число 40 является операндом А блока GENERATE карты 20). Число пар карт RESET—START, включенных в модель, соответствует полному времени моделирования — 25 рабочих недель. (Обратите внимание, что пары RESET—START от карты 32 до карты 69 включительно на рис. 2.47 отсутствуют.) Распечатка результатов, получаемых на модели рис. 2.47, показана в табл. 2.22. Во второй колонке дано значение нагрузки многоканального устройства NOWON, полученное на интервале моделирования в одну неделю, номер которой указан в первой колонке. В колонке 3 дано значение нагрузки, получаемое в результате накопления статистических данных, полученных на модели рис. 2.47 после того, как из нее были изъяты карты RESET. Если бы для получения результатов стационарного режима работы системы мы использовали второй подход, описанный ранее (достаточно долгое моделирование, целью которого является подавить влияние статистических данных, собранных в самом начале), то мы имели бы результаты, показанные в третьей колонке. Изучение второй колонки дает возможность заключить, что стационарный режим достигается примерно к десятой неделе модельного времени. Из третьей колонки, где показана накопленная статистика, следует, что стационарный режим еще далеко не достигнут даже в конце 25-й недели. Следовательно, по табл. 2.22 мы можем судить об относительной экономии времени «подхода со сбросами» по сравнению с «подходом с подавлением». Теперь прокомментируем некоторые значения элементов второй колонки. Время непрерывной работы распределено для каждой швейной машины как 157 =t 25 ч. Наименьшее возможное значение времени работы машины до отказа равно 132 ч. В начальной фазе моделирования все 50 машин входят в процесс производства. Следовательно, ни одна из них не может отказать в течение первых трех недель. Значение нагрузки многоканального устройства в конце каждой из первых трех недель должно равняться единице. Так оно и есть для второй и третьей 122
Таблица 2.22. Выходные данные примера 2Е от начала моделирования до установления стационарного режима Номер недели (интервала времени) 1 2 3 А 5 6 7 8 9 10 11 12 13 М 15 16 17 18 19 20 21 22 23 24 25 Нагрузка многоканального устройства на интервале 0,974 1,000 1,000 0.905 0,632 0,901 1.000 0,987 0.984 0,998 0,999 0.998 0,986 0,991 1,000 1,000 0.976 1,000 1.000 0,999 0,988 0,992 1,000 0,998 0,991 Нагрузка многоканального устройства, накапливаемая с начала моделирования 0,974 0,987 0,991 0,970 0,902 0,902 0,916 0,926 0.932 0,938 0.944 0,948 0,961 0,954 0,957 0,960 0,961 0,963 0,965 0,966 0,968 0.969 0,970 0,971 0,972 недель, ио не для первой недели. Почему же это произошло? Это объясняется, как было отмечено ранее, тем, что самым ранним временем движения в модели является единица. Следствием является то, что машины не начинают работать в модели до конца первого часа (тран- «акты не входят в блок ADVANCE, блок 3 до наступления момента времени 1). Но GPSS считает статистику, начиная с момента времени ноль. Следовательно, в момент времени 40 машины находятся в работе только 39 единиц времени, что делает нагрузку равной 0,975 (значение 0,974 получается ввиду того, что распечатываются только три знака после запятой без округления). Нагрузка на интервале пятой недели также представляет интерес. В начале пятой недели многие нз машин, вошедших в производство в начале первой недели, начинают отказывать (т. е. отказы приходятся на интервал 160— 200). Резервных машин в это время явно недостаточно для того, чтобы тут же заменить отказавшие, а четверо рабочих в мастерской не могут быстро исправить сломанные машины. Результат очевиден: число работающих машин катастрофически падает, и нагрузка снижается до 0,632. Только, по-видимому, в конце десятой недели значение нагрузки устанавливается окончательно. Приведенный пример хорошо иллюстрирует использование карты RESET для оценки времени достижения стационарного режима. Рассмотрим теперь метод применения карты RESET для использования ее сразу же после установления стационарного режима, и до того, как моделирование будет продолжено в стационарных условиях. Для примера моделирования 2Е сделано заключение о том, что стационарный режим достигнут через 10 недель работы. Но тогда возникает другой вопрос. Сколько времени необходимо вести моделирование в условиях стационарного режима для сбора статистических данных так, чтобы они были достоверными? Даже при функционировании в стационарном режиме происходит флуктуация статистических данных вокруг среднего значения. Если время работы в стационарном режиме мало, то некоторые из измерений могут оказаться недостоверными. После карты START может использоваться серия из последовательно расположенных карт RESET для экспериментального определения времени моделирования в стационарном режиме, требуемого для сбора достоверной статистики. Рассмотрим влияние на модель нескольких подряд расположенных карт START (без карт RESET или CLEAR между ними). Предположим, что модель введена в ЭВМ, интерпретатор дошел до карты START и начал моделирование. Пусть счетчик завершений достиг значения ноль и распечатались результаты моделирования. Если каждой новой картой снова является карта START, моделирование возобновляется. Иначе говоря, счетчик завершений инициализируется операндом А следующей карты START, интерпретатор переходит к выполнению фазы корректировки таймера и т. д. Конечно, транзакты, находящиеся в цепях, продолжают там находиться, как это имело место до остановки моделирования. Более того, накопленная статистическая информация остается незавершенной и будет продолжать накапливаться в течение следующего интервала моделирования. Ясно, что включение двух и более подряд стоящих карт START обеспечивает разработчику возможность получать промежуточные значения накопленной статистики в процессе моделирования. При использовании подряд стоящих карт START выполняется последовательная серия моделирований. В конце каждого следующего интервала моделирования распечатываются результаты, и моделирование продолжается. Прежде чем применить этот метод использования карт START, предположим, что для сбора достоверной статистики в стационарном режиме примера моделирования 2Е достаточно 20 недель. На рис. 2.48 показана распечатка программы для изучения всех комбинаций из 123
BLOCK NUMBER •LOC OPERATION SIMULATE A.B.C.O.E.F.G STORAGE CAPACITY OEFIN ITION{S) STORAGE SSMEN.3/SSNOWON.SO MODEL SEGMENT 1 COMMENTS з men; max of 50 mach's running PROVIDE 53 MACHINES (SO OWNED; 3 RENTED) MACHINE GOES INTO PROOUCTION MACHINE IS RUNNING MACHINE FAILS; COMES OUT OF PRODUCT JON CAPTURE A REPAI»V*AN MACHINE tS BEING REPAIRtO FREE THL REPAIRMAN GO BACK TO RUN AGAIN WHEN NEEDED TIMER ARRIVES EVERY 10 WEEKS OECREMENT TERMINATION COUNTER * » CONTROL CARDS. BLOCK OPERAND RE-DEFSi AND STG CAPACITY RE-DEFS 3* START 1 START 1ST INITIALIZATION RUN RESET RESET FOR 1ST STEAOY-STATE RUN START 2 START 1ST STEADY-STATE RUN t CNTRL GENERATE ,..54 SET RENTED MACHINhS = 4 FOR 2N0 flUN MULTIPLE DEFINITION OF 'SYMBOL IN ABOVE CARO CLEAR FOR 2ND INITIALIZATION RUN I START ?NO 1 2 3 * 5 t> 7 В 9 lO CNTRL BACK • • GENERATE ENTER ADVANCE LEAVE ENTER AOVANCE LEAVE TRANSFER , ..S3 NOW ON IS7.25 NOWON MEN 7.3 MEN .HACK MODEL SEGMENT 2 GENERATE TERMINATE 400 1 CLEAR START RESET START INITIALIZATION RUN RESET FOR 2ND STEAOY-STATE RUN START 2ND STEAOY-STATE RUN CARD NUMflFR I 2 з a S 6 7 8 9 ; о 11 is i s it lb lb I 7 lb 19 го 21 ?2 23 24 2S го 27 га 29 30 31 л/ START 2 START 8TH STEADY-STATE RUN I CNTRL GENERATE ...55 SET RENTEO MACHINES = S FDR 9TH RUN MULTIPLE OEFINITION OF SYMBOL IN ABOVE CARD CLEAR CLtAR FOR 9TH INITIALIZATION RUN START I START 9IH RESET START 2 INITIALIZATION RUN HtSET FOR 9TH STt"AOY-STATE RUN START 9TH STEAOY-STATE RUN END RETURN CONTROL TO OPERATING SYSTEM 64 6S 66 67 6B 69 70 Рис. 2.48. Модель, использующая карты RESET и CLEAR для исследования системы при девяти различных комбннацнях в стационарном режиме трех, четырех и пяти рабочих при трех, четырех и пяти арендуемых машинах, в которой карта RESET используется после достижения стационарного режима (карты от 33 до 63 исключены из рисунка для простоты). Обратите внимание на то, что после каждой карты RESET следующая за ней карта START в качестве операнда А содержит число 2. Следовательно, приход двух транзактов-таймеров требуется для остановки моделирования в стационарном режиме. Это означает, что моделирование в стационарном режиме длится 20 недель, а не 10. Также следует обратить внимание на то, каким образом при достижении стационарного режима модель реконфигурируется н очищается (с помощью карты CLEAR) перед использованием группы карт START—RESET—START для следующего варианта. Нагрузка многоканального устройства, получающаяся при выполнении моделирования по программе, приведенной на рис. 2.48, представлена в табл. 2.23, а. Общие ежедневные Таблица 2.23. Результаты, полученные на модели, которая приведена иа рис 2.48 а) Нагрузка многоканального устройства Число рабочих 3 4 5 Число арендуемых машин 3 0,986 0,989 0,990 4 0,989 0,995 0,992 5 0,985 0,995 0,998 б) Общие расходы (долларов в день) Число рабочих 3 4 5 Число арендуемых машин 3 292 293 320 4 298 280 334 5 285 310 316 124
расходы, соответствующие этой нагрузке, представлены в табл. 2.23, б. Отметим, что комбинация «четверо рабочих — четыре арендуемые машины» здесь выглядит даже лучше, чем в табл. 2Е.З. Также отметим, что каждая комбинация исследуется только 30 недель модельного времени. В противовес этому, в примере моделирования 2Е было 156 недель для каждой комбинации. В примере 2Е потребовалось больше времени для преодоления искажении статистических данных о нагрузке, возможных в начале моделирования. Конечно, использование карты RESET для устранения этого искажения является более предпочтительным, чем длительное моделирование без сброса. Результаты получаются более просто, а время моделирования значительно меньше. Модель иа рис. 2.48 потребовала примерно 25% времени использования ЭВМ для модели примера 2Е (на ЭВМ IBM 360/67 полное время моделирования для модели рис. 2Е.З было равно 68 с, вто время как для выполнения модели рис. 2.48 потребовалось 18 с). Дополнительно следует указать, что после того, как модель создана, работа исследователя только начинается. Его следующей задачей обычно является экспериментирование с моделью, для того чтобы выяснить: 1) сколько времени необходимо для выхода в стационарный режим и 2) сколько времени необходимо вести моделирование, полагая, что стационарный режим уже достигнут. Более того, вопросы «сколько времени» зависят в общем случае от характера статистических данных, которые интересуют разработчика, и от конфигурации моделируемой системы. Пример моделирования 2Е оказался достаточно простым, поскольку только один параметр статистики представлял для нас интерес, а именно нагрузка многоканального устройства. Кроме того, мы неявно предполагали, что ответы на вопросы «сколько времени» при комбинации «четверо рабочих — четыре арендуемые машины» справедливы и при всех прочих изучаемых комбинациях. Хотя это предположение, по-видимому, вполне справедливо в нашем случае, в общем случае это может быть не так. Следовательно, ответы на вопросы «сколько времени» должны даваться неоднократно при изучении только одной задачи. В задачу данной книги не входит рассмотрение дальнейших деталей вопроса сбора статистики при моделировании. Мы не станем больше задерживаться и на разработке стратегий, которых следует придерживаться при исследовании моделей так же подробно, как и в последнем примере. Однако при тщательном моделировании эти два аспекта являются обязательными . 2.41. Упражнения 1. Сопоставьте возможности использования карт RESET (СБРОСИТЬ) и CLEAR (ОЧИСТИТЬ) при моделировании на GPSS. Прн обсуждении этого вопроса по мере возможности используйте такие понятия, как: а) счетчики блоков; б) значения таймеров абсолютного и относительного времени и в) «последовательность случайных чисел». 2. а). Вычислите для примера моделирования 2Е значение фиксированной платы (долларов в день) для комбинации «трое рабочих — три арендуемые машины». Сравните свой результат с результатом табл. 2Е.З, а. б). Вычислите для примера моделирования 2Е значение потерь из-за снижения объема производства (долларов в день) по данным моделирования при «трех рабочих — трех арендуемых машинах». Сравните свой результат с результатом табл. 2Е.З, б. 3. Как указано в параграфе 2.40, условия в начале моделирования примера 2Е заметно отличаются от условий, когда достигнут стационарный режим функционирования. Покажите, как можно модифицировать модель примера моделирования таким образом, чтобы эти условия в самом начале оказались типичными. В частности, в начале моделирования время оставшейся работы 50 находящихся в производстве машин должно быть распределено равномерно в интервале 0—182 ч. Каждая из машин, входящая в производство, должна иметь время наработки, распределенное равномерно с видом 157 t=. 25. 4. В примере моделирования 2Е «собственные машины» и «арендуемые машины» вводят в работу в соответствии с дисциплиной обслуживания «первым пришел — первым обслужен». Когда появляется необходимость в машине и возникает выбор между «собственной» н «арендуемой» машинами, могут возникнуть соображения экономического характера относительно предпочтительного использования «собственных машин» (это может оказаться необходимым, например, если арендная плата устанавливается из соображений степени загрузки арендуемых машин). Для этого случая покажите, как модифицировать модель, чтобы учесть предпочтение подобного рода. 5. В некоторой модели единицей времени является 1 мин. Через каждые 480 единиц времени счетчик завершений уменьшается на единицу. Сопоставьте характер распечатываемых статистических данных для различных последовательностей управляющих карт: a) START 1 б) START 1 в) START 1 RESET CLEAR START 1 START 1 START 1 125
6. В некоторой модели емкость многоканального устройства SCARE сначала определена равной 8. а). Какая может возникнуть ошибка, если в модели использовать следующую последовательность управляющих карт? START I STORAGE SCARE.5 CLEAR START 1 б). Может ли возникнуть эта же ошибка, если карты STORAGE v\ CLEAR, ъ п. а поменять местами? 7. В некоторой модели единицей времени является 1 мин. Через каждые 240 мин счетчик завершений уменьшается на единицу. Объясните характер распечатываемых статистических данных при использовании управляющих карт, показанных на рис. У7. Включите в ваш ответ понятия «таймеры абсолютного и относительного времени», значения которых будут распечатаны в начале всех пяти участков распечатываемой информации. 8. а). Клиенты приходят в парикмахерскую с двумя креслами каждые 9 ± 4 мин. Оба парикмахера затрачивают по 16 ± 4 мин на обслуживание одного клиента. Напишите на GPSS модель, собирающую статистику об очереди ожидающих клиентов. Промоделируйте работу системы в течение одного дня. Пусть парикмахерская открывается в 9 ч и закрывается в 17 ч и парикмахеры работают без перерыва на обед. б). Модифицируйте модель (а) таким образом, чтобы парикмахерская открывалась в 8 ч 30 мин и закрывалась в 17 ч. У обоих парикмахеров в 12 ч (или сразу после 12 ч) есть перерыв на обед (т. е. если парикмахер все равно простаивал, го он обедает в 12 ч 00 мин, а если был занят, то он прервется как только закончит обслуживание очередного клиента). Клиенты, пришедшие в течение обеденного перерыва, ожидают возвращения парикмахеров. Какова нагрузка парикмахеров? 9. На рис. 2.48 карта RESET используется для сброса статистических данных в ноль в примере моделирования 2Е перед тем, как будет моделироваться работа в стационарном режиме. При достижении стационарного режима возникает вопрос, сколько времени следует производить измерение для того, чтобы получен- START 4 CLEAR START 4 CLEAR START 1 RESET START 1 RESET START 2 Рис. У7 1 ные результаты были типичными. Некоторая неясность здесь возникает ввиду того, что и в стационарном режиме значения колеблются около некоторой средней величины. Покажите на примере моделирования 2Е для случая «четверо рабочих — четыре арендуемые машины» состав колоды перфокарт, предполагая, что надо произвести сброс в результате десятннедельиого моделирования и что статистика должна быть распечатана по концу каждой недели на интервале в 20 недель. Выполните ж>д,елкрование. Каково ваше мнение относительно периода моделирования в стационарном режиме, необходимого для сбора достоверной информации о стационарном режиме работы системы? Обратите внимание на то, что для получения результатов табл. 2.23 потребовалось моделирование в интервале 20 недель для каждой комбинации работы системы. Ю. В табл. 2.22 показано значение нагрузки многоканального устройства NOWON примера моделирования 2Е для комбинации «четверо рабочих — четыре арендуемые машины». По информации второй колонки мы сделали качественный вывод о том, что к концу 10-й недели появляется установившееся значеняе. Этот вывод для комбинации «четверо рабочих — четыре арендуемые машины» был нами распространен на все остальные комбинации, исследуемые в задаче, представленной иа рис. 2.48. На практике время моделирования, требуемое для входа в установившийся режим, зависит от конфигурации исследуемой системы. Напишите и выполните моделирование для получения результатов, аналогичных результатам, данным во второй колонке табл. 2.22, но для комбинации «10 рабочих — 10 арендуемых машин». Получается ли выполнение моделирования более длительным пли таким же, как для конфигурации «четверо рабочих — четыре арендуемые машины», в случае моделирования до достижения установившегося значения нагрузки? 11. При обсуждении выходных результата! в примере моделирования 2С было подчеркнуто, что продолжительность моделирования в это» примере настолько мала, что какие-либо выводы относительно результатов надо делать с осторожностью. Продумайте и реализуй** план дальнейшего исследования двух альтер- нативных дисциплин обслуживания очереди, предлагаемых в модели. Используйте в своем плане карту RESET для оценки того, сколько времени необходимо вести моделирование ДД* двух альтернативных моделей для входа в стационарный режим. Далее, промоделируйи в стационарном режиме систему с целью принятия мер по выбору одной из двух дисциплю обслуживания. Обратите внимание на расхо
ЖДенне значения дневной стоимости полученного вами результата со значением в 141 доллар, полученным приближенно в примере моделирования 2С. Если бы вы были управляющим завода, какую из двух дисциплин обслуживания вы использовали бы для работы в кладовой? 12. В примере моделирования 2D (производство деталей) транзакт символизирует собой рабочего, повторяющего циклические действия: сборка — обжиг — сборка — обжиг н т. д. Альтернативным вариантом модели с равным успехом могла бы служить модель, в которой сборщиков могло бы символизировать многоканальное устройство. На рис. У12 показана распечатка программы для такой альтернативной модели. Изучите эту модель и ответьте на следующие вопросы. а). Чему равен интервал времени прихода транзактов в блок GENERATE главного сегмента? (Обратите внимание на то, что в блоке GENERATE операнды не использованы.) б). В какой момент времени первый из транзактов попытается войти в блок ENTER? в). Сколько подряд транзактов в первом варианте модели войдет в блок ENTER в момент модельного времени, равный 1? (см. указание 2, упражнение 1, параграф 2.35). г). Что должно произойти в модели, прежде чем какому-то транзакту будет впервые отказано во входе в блок ENTER? Когда его последователь войдет в блок GENERATE н попытается войти в модель? д). Изменится лн логика работы модели, если в нее ввести пару блоков QUEUE — DEPART (СТАТЬ В ОЧЕРЕДЬ — ВЫЙТИ ИЗ ОЧЕРЕДИ), заключающую в себе блок ENTER? Почему да или почему нет? е). Предположим, что в условиях работы системы сделаны следующие изменения: для работы с печью существует специальный рабочий, поэтому как только сборщик заканчивает работу с деталью, он сразу же переходит к следующей сборке. Покажите, каким образом надо модифицировать модель на рис. У12 для учета этих изменений в условиях работы. ж). Сколько различных конфигураций будет промоделировано при использовании карт модели рис. У12? Поясните свой ответ. з). Сколько времени следует проводить моделирование по каждой конфигурации для того, чтобы было исключено влияние неверных, собранных в начале статистических данных? ULDCK NWMfjfR «LOC OPERATION А.В.С.O.E.F,С SIMULATE COMMENTS 10 STURAGt CAPACITY DEF I N I T I UN ( S ) STDRAGC SSGUYS.a С ONF I GUUt F CW «-ASSEMBLER (ASL MODEL SEGMtNl 1 GENERATE t'NTfcR AC.VANCE SEIZE ADVANCE RfcLEASE Lt AVE TERMINATE GUYS 30 ,b oven е.? UVEN GUYS MOPtl SEGMENT г GfcNERAlE TERMINATE «80 1 C4NIOOL CAjlDS AND STAR T OESET STAR T S ТОН At.E CLE AH ЦТД»! BESET vl ART STORAGE С Lt AR START HF SF T ■;i«t f-ND 1 ь S4GUYS 1 S SH.U'S 1 s s ъ ь PRUVKJb UNLIMITED SOURCE OF MAIEhlAL tNuAGt AN ASSEMBLER ASSEMBLV TIME ELAPSES CAPTURE THE UVEN FIRING TIME ELAPSES RELEASE THE OVEN FHEC THE ASSEMBLER I- IN | SHE D MIDGET LEAVES THE SHOP TIMER ARRIVES AT 1 HE END OF EACH DAY OtCREMENT THE TERMINATION COUNTER BY 1 START THE 1ST INITIALIZATION RUN /EHD-DUT ACCUMULATED STATISTICS START 1ST STEADY-STATE RUN •JE-CONF IGURE FUR NEXT RUN CLEXR THE MOOEL FOR THE NtxT Rut* START THfc SNO INITIALISATION RUN ZEHO-OUT ACCUMULATED STATISTICS START 3N0 STEADY-STATE RUN RE-CONFIGURE FOR NEXT RUN CLtAR THE MODEL FOR THE NEXT RUN START 300 INITIALIZATION RUN /EWO-UUT ACCUMULATED STATISTICS START 3RO STEAOY-STATE «UN RETURN CONTROL TO OPERATING SYSTEM CARD NUMBER 1 г з s с 7 В 9 Ю 11 12 13 It IS 1С 17 i e i ч no г\ гг гз 2« гь 2T 2Н г« 30 л 3? 33 3* 14 зь 37 3» 39 Рис. У12 127
и). Какова длительность моделирования системы в установившемся режиме для каждой конфигурации? к). Рассмотрите возможность изъятия двух карт CLEAR из модели. л). Обратите внимание на то, что в процессе моделирования емкость многоканального устройства GUYS увеличивается. Какая возникла бы трудность, если бы емкость от прогона к прогону уменьшалась? Осталась ли эта проблема при использовании карты CLEAR леред картой переопределения емкости многоканального устройства? 13.* В примере моделирования 2D подразумевалось, что все выпущенные детали могут быть проданы. Использование только одной печи, являющееся ограничением, означает, что на длительном интервале в течение восьмичасового дня может быть изготовлено не более 60 деталей (поскольку время обжига для каждой детали равно 8 =*= 2 мин, то использование печи на 100% соответствовало бы изготовлению 60 деталей за рабочий день). Предположим, что изучение спроса показало, что производство этого вида деталей можно было бы увеличить до 275 деталей в день. Дополнительные печи можно арендовать по 10 долларов в час независимо от нагрузки печи. Постройте модель, которая отражала бы возможность использования более чем одной печи. Используйте модель для определения числа сборщиков и печей, которое принесло бы максимальную дневную прибыль. При оптимальной комбинации «число сборщиков — число печей» может оказаться, что не все неявные требования будут удовлетворены. Может быть не удовлетворено требование оптимальности ввиду выпуска числа деталей, в среднем меньшего 275. При оптимальной конфигурации может оказаться, что число деталей больше 275. В этом случае не следует производить детали, продать которые будет невозможно. Сборщики должны иногда раньше прекращать работу, чтобы не расходовать материал, который стоит 2 доллара на деталь. Обратите внимание на то, что при определенных условиях не надо реализовывать «раннее прекращение работы» в вашей модели. Если при данной комбинации изготовляют, ■Ш УхоВ * Метод реализации полного автоматического решения этой проблемы см. «Использование внешнего оптимизирующего алгоритма с моделью на GPSS» Роберта М. Лов- ковица н Томаса Дж. Шрайбера в трудах зимней конференции по моделированию 1971 г. (AF1PS, Press, Mont- vale, N J.\ 1971, pp. 162—171). В предлагаемом решении модель на GPSS процесса производства деталей объединена с программой на языке FORTRAN для организации стратегии направленного поиска (как это указано в примере моделирования 2Е). Модель на GPSS управляется с помощью подпрограммы поиска, напнсаииой на языке FORTRAN. Очередь t Ovepeh 2 Станция Z •—.— (один прибор) Станция 1 (три npufopa) Рис. У14 например, 283 детали в день, вычислите прибыль при затратах исходя из того, что изготовлено ровно 275 деталей. Должно быть предусмотрено, конечно, что даже если сборщики договорились с управляющим кончать работу раньше, их зарплата остается такой же, как при восьмичасовом рабочем дне. 14.а). Напишите модель, описывающую работу системы обслуживания, показанную на рис. У14. На станцию 1 обслуживания требования приходят каждые 115 — 30 с. Время обслуживания на станциях 1 и 2 равно 335 — ■2=. 60 и 110^=25 с соответственно. Модель должна быть разработана так, чтобы собиралась информация о состоянии очередн перед станциями 1 и 2. Предполагается, что между двумя станциями существует неограниченная очередь. Используйте модель для определения времени моделирования, необходимого для установления стационарного режима для обеих очередей. Затем продолжайте моделирование в стационарном режиме для определения среднего значения длин двух очередей. б). Предположим, что в соответствии с некоторыми ограничениями число элементов очереди перед станцией 2 не может быть больше единицы. Приборы станции 1 не могут начать обслуживание следующего требования до тех пор, пока предыдущий элемент не войдет в очередь 2. Измените модель (а) таким образом, чтобы учесть это ограничение. Используйте модель для определения средней и максимальной длины очереди I в стационарной режиме. Сравните результаты моделирования, полученные в двух случаях моделирования. в). Предположим, что в модели (б) действительное значение нагрузки приборов станции I надо определять как относительное время выполнения обслуживания приборами. В это время не следует включать период, пока приборы ждут перехода предшествующего требования в очередь 2. Покажите, каким образом следует изменить модель (б), для того чтобы измерение1 производить для такого значения нагрузке приборов. 15. Корабли двух типов прибывают в порт, где происходит их разгрузка. В порту имеются два буксира, обеспечивающих ввод и вывод кораблей из порта. Первый тип кораблей вклй*! 128
чает корабли малой тоннажности и требует при входе и выходе использования одного буксира. Второй тип кораблей имеет больший размер, и для их ввода и вывода из порта требуются два буксира. Из-за различия размеров двух типов кораблей необходимы причалы различного размера, кроме того корабли имеют разное время разгрузки-погрузки. Данные по этой задаче приведены в табл. У15. Таблица У15 Таблица У16 Интервал прибытия, мин Время входа в порт, мин Число доступны* причалов Время погрудкн-раэгруэки, ч Интервалы выхода иа порта, мин Тип корабля 1 130^30 :50±7 6 12^:2 20:1:5 о 390±00 45=2=12 3 18=£4 35=Ы0 Период, ч мин 15.00-16.00 16.00—16.30 16.30—17.00 Интенсивность потоки, автомобилей и час 1000 1250 1600 Период, ч. мни 17.00—17.30 17.30—18.00 18.00—18.30 18.30-19.00 Интенсивность потока, аптомо- .бплеЛ в час 2000 1800 1300 1000 а). Постройте модель системы, в которой можно оценивать время ожидания кораблями каждого тина входа в порт. Среднее время ожидания включает время ожидания освобождения причалов и/или ожидания буксира. Корабль, ожидающий освобождения причала, не обслуживается буксиром до тех пор, пока не будет предоставлен нужный причал. (Кстати, что может произойти, если допустить занятие кораблем буксира до того, как ему будет предоставлен причал?) Более того, корабли второго типа не занимают буксир до тех пор, пока не будут ему доступны оба буксира. Используйте модель для оценки среднего времени ожидания в стационарном режиме работы системы. б). Если ожидание кораблями типов 1 и 2 стоит 350 н 500 долларов в час соответственно, a ctohmoctii эксплуатации буксира равна 250 долларов в день, следует ли воспользоваться третьим добавочным буксиром в порту? в). Исходя из стоимости ожидания, определенной в п. б, выясните, при какой стоимости использования причала в день имеет смысл использовать еще один причал для кораблей типа I? Аналогичный вопрос касается причалов длн кораблей типа 2. 16. На заставе, где взимается подорожный сбор, находится семь касс. Каждая из них может обслужить автомобиль за 15 ± Зс. Предположим, что в 15 ч 00 мин дня открыты четыре кассы и ни один автомобиль не стоит в очереди. Средняя дневная пропускная норма автомобилей через заставу возрастает после полудня и надает вечером (табл. У16). Отклонение интервалов прихода от среднего составляет 25% и распределено равномерно. 9 т. д*. шрвпбер 129 При увеличешш потока автомобилей для уменьшения простоев в 16 ч 30 мин открывают пятую кассу, а в 17 ч 00 мин открывают оставшиеся две кассы. Промоделируйте эту ситуацию. Определите максимальное и среднее число автомобилей, ожидающих в очереди на заставе на каждом из интервалов времени, показанных в табл. У16. Как вы считаете, следует моделировать эту систему как систему обслуживания с одной очередью и устройством многоканального обслуживания или же как систему с несколькими очередями и многоканальным обслуживанием? Какой из этих двух систем обслуживания отвечает ваша модель? 2.42. Печать в процессе моделирования В качестве вспомогательного средства сбора информации можно использовать возможность распечатывания статистических данных модели в процессе моделирования для получения этих данных в конце прогона. Полный набор промежуточных статистических данных можно получить при использовании операнда С карты START. Выборочный набор статистических данных может быть получен при использовании блока PRINT (НАПЕЧАТАТЬ). Подробности описаны ниже. 2.42.1. Использование снимков Кроме счетчика завершений в GPSS существует счетчик снимков. Его исходное значение определяется операндом С карты START. При чтении интерпретатором этой карты заносится исходное значение в счетчик завершений и счетчик снимков в соответствии со значениями операндов А и С соответственно. В проноссе моделирования каждый ран при вычитании из счетчика завершений некоторой величины такая же величина вычитается из счетчика снимков. Когда последний принимает нулевое значение, распечатывается стандартная печать результатов моделирования. Затем счетчик снимков автоматически принимает значение, равное зна-
lOcauon -U- _5JAUl TiTio7i^5FlIr«lisfnl"Ii I I I I I SJABT1 i i i ».B.C,O.E,|: i»l2^i]aklll«MibJi'|-rt|r»|lo|j<lujlJ MlMbijIlJBTjtj^iUru^kJt&Mlj «n ,.! ПЕРВЫЙ ПРИМЕР -l i.i.li } Рис. 2.49. Пример использования сяимхов .ВТОРОЙ ПРИМЕР чениго операнда С, и моделирование продолжается. Когда счетчик снимков снова принимает нулевое значение, снова распечатываются результаты моделирования, восстанавливается значение счетчика снимков и т. д. В результате получается последовательная печать снимков, содержащих статистические данные, получаемые в процессе моделирования. На рис. 2.49 показаны два примера использования карты START с параметром С. В первом примере полная печать результатов происходит после того, как показания счетчика завершений (н счетчик снимков) уменьшаются на 25. Затем счетчик снимков принимает значение 25, н моделирование продолжается. Когда показания счетчика завершений (и счетчика снимков) уменьшаются еще раз на 25, моделирование завершается самым обычным образом, н распечатываются результаты моделирования. Во втором примере вся статистика распечатывается каждый раз, когда счетчик завершений (и счетчик снимков) уменьшаются на единицу. Когда истекает время моделирования, результаты моделирования оказываются распечатанными пять раз. Отметим, что этот же эффект может быть достигнут, если карта «START 1» будет стоять пять раз подряд. Таким образом, важнейшим назначением счетчика снимков является возможность уменьшения числа»; карт START, необходимых при моделировании. 2.42.2. Блок PRINT При каждом прохождении транзактом блока PRINT (НАПЕЧАТАТЬ) интерпретатор GPSS распечатывает статистические данные по некоторым заданным элементам. Например, это может быть обычная статистическая информация о приборах, многоканальных устройствах или очередях. Допускается печать статистической информации о нескольких элементах. Вместо печати статистики обо всех приборах модели, например, можно определить печать информации только о приборе 4 или приборах 4, 5 и б и. т. д. Блок PRINT и его операнды представлены на рис. 2.50. С помощью операнда С определяется тип элементов, по которым требуется распечатать информацию. Операнды А и В показывают диапазон значений элементов заданного типа. С помощью операндов А и В можно также определить и символические имена элементов. Когда в этом возникает потребность, разработчик должен проследить за тем, чтобы числовые эквиваленты, которые интерпретатор сопоставил с символическими именами в операнде А, были меньше или равны числовым эквивалентам операнда В. В противном случае возникает ошибочная ситуация. Перед тем как использовать символические имена в этих операндах, разработчику следует подумать о том, как их расположить для того, чтобы интерпретатор присвоил им номера, удобные для пользователя. (Эта проблема будет рассмотрена в гл. 4. В данной книге символические имена в блоке PRINT не используют.) Если разработчик не указывает этих операндов, то по умолча- нию интерпретатор распечатывает информацию по всем элементам указанного типа. Печать обычно начинается с новой страницы. Если в блоке PRINT в качестве операнда D используется любой алфавитный символ, то переход к новой странице не осуществляется. A.B.D PRINT С Рис. 2.50. Блок PRINT (НАПЕЧАТАТЬ)^ операндами А, В, С a D: Операнд А н В Значение Мнемоническое эначенне типа элементов; F. S н Q определяют приборы, многоканальные устройства и очереди, соответственно Наименьшее н наибольшее значения номеров элементов, о которых следует напечатать информацию Необязательный операнд, указывающий нв способ использования печатающего устройства. При использовании любого алфавитного символа в качестве операнде О распечатка происходит без перехода на новую страницу Значение или результат по умолчанию Умолчание эквивалентно записи онмаола X, определяющего распечатку сохраняемых величин (см. гл. S), заданных полными словами Информация распечатывается обо веек членах заданного типа Распечатка начинается с новой страницы 130
Рис. 2.51. Пример использования блока PRINT LOCATION i ... i i i , , . . i i i i i . i i l I QPCftATlON • It [и pile In «its is i? я 1 r.ft.IRT) ■ ,-. . , (»■■■• l*T' MMJ^T,1 . 1 1 1 1 1 1 1 1 1 »,8,C,0,E,F *• две! ! ПЕРВЫЙ, i1 , ПРИМЕР | ! . « „ - L J ВТОРОЙ 1 ПРИМЕР1 I - 1 1 ТРЕТИЙ | ПРИМЕР| | i i i i < На рис. 2.51 показан вид перфокарт, соответствующих блокам PRINT. При входе транз- акта в блок PRINT первого примера распечатывается статистика о многоканальных устройствах 4—8. Если одного или нескольких устройств этого типа в модели не существует, это не считается ошибкой. При входе транзакта в блок во втором примере распечатывается значение статистических данных о приборе 5 (т. е. приборах с номерами от 5 до 5 включительно). При печати не осуществляется перехода к новой странице. Транзакт, входящий в блок третьего примера, заставляет интерпретатор распечатывать данные по всем очередям модели. Это является результатом по умолчанию операндов А и В. Обратите внимание на порядок следования запятых. На рнс. 2.52 показала блок-схема, которую можно использовать для печати статистических данных о приборах модели с номерами 1, 2 и 3 через каждые 100 единиц времени. В сегменте циркулирует единственный транзакт. Он входит IBAKUP» через блок GENERATE в момент времени 100 и сразу же вызывает печать статистики о приборах. (Понятно, что моделирование приборов осуществляется в остальной части модели.) Затем транзакт попадает в блок ADVANCE и находится в нем 100 единиц времени. В момент времени 200 он обязательно передается назад в блок PRINT, вызывает печать статистики о приборах и т. д. Сегменты такого вида следует использовать в тех моделях, где желательна распечатка статистических данных в процессе моделирования. Блок PRINT также можно использовать для распечатки значения таймера относительного и абсолютного времени, счетчиков блоков и цепей текущих и будущих событий. Операнд С блока PRINT (т. е. поле с мнемоническим кодом С) для всех этих случаев показан в табл. 2.24. В каждом случае ие существует номеров элементов, и, следовательно, операнды А и В не используют. Например, транзакт, вошедший в блок «PRINT,, MOV», вызывает печать цепи текущих событий. Другим примером является пример печати интерпретатором значений таймеров относительного н абсолютного времени при каждом входе транзакта в блок «PRINT,, С». Также могут быть распечатаны и другие элементы GPSS, пока еще нами ие рассмотренные. В приложении Е описаны значения операнда С для всех возможных случаев распечатки. При изучении новых элементов языка мы будем Таблица 2.24. Неполный список значений операнда С блока PRINT (фрагмент приложения Е) Рве. 2.62. Отдельный сегмент, ныполняющий периодическую распечатку статистических данных о заданных приборах Операнд С блока С N W В MOV FUT Слспсцптывощаи информация Таймеры абсолютного и относительного цременн Счетчик входов блоков (для всех блоков) Счетчик содержимого блоков (для всех блоков) Счетчики входов и содержимого блокои £для всех блоков) Цепь текущих событий Цепь будущих событий »* 131
использовать блок PRINT для распечатки соответствующей информации. Опытный пользователь предпочитает получать информацию, распечатываемую с помощью блока PRINT, и отказывается от стандартной печати в конце моделирования. Этого легко достичь, если в качестве операнда В карты START поставить символы NP (No Printing — без печати)- Такой метод, однако, не рекомендуется использовать новичкам. 2.43. Управляющие карты GPSS. Карта JOB (ПРОДОЛЖИТЬ) Иногда у разработчика возникает потребность провести моделирование двух нлн более независимых моделей в одном пакете заданий. Это легко сделать с применением карты JOB (ПРОДОЛЖИТЬ). Когда интерпретатор читает карту JOB, он стирает всю информацию, касающуюся и результатов моделирования н самой модели, предшествующей карге JOB. Это означает, что вся записанная статистика сбрасывается в исходное состояние, включая последовательность случайных чисел; все транзакты возвращаются в пассивный буфер; построение блоков разрушается. Затем интерпретатор переходит к обработке следующей модели, находящейся в колоде перфокарт так, как если бы это была первая или единственная модель. Формат карты JOB аналогичен формату других управляющих карт. Карта содержит слово JOB, расположенное в поле операции. 2.44. Переход транзакта случайным образом в один из двух блоков Иногда бывает необходимо передать транзакт в один из блоков случайным образом, прн этом надо выбрать одну из двух возможностей. Это можно сделать, применяя блок TRANSFER (ПЕРЕДАТЬ) в режиме статистической передачи. На рис. 2.53 показано использование этого блока в указанном режиме. Отметим, что в поле операндов блока TRANSFER первым символом является десятичная точка. Это означает, что на перфокарте точка должна перфорироваться в колонке 19. Остальная часть операнда А интерпретируется как частота, с которой транзакт, вошедший в блок TRANSFER, Рис. 2.53. Блок TRANSFER (ПЕРЕДАТЬ) в режиме статистической передачи: Операнд л (S С Значение Частота передачи транэак- Tii в блок С Имя блока U Имя блок» С Значение или результат но умолчанию Ошибка Следующий по порядку блок Ошибка должен переходить в блок, определяемый операндом С ("т. е. в блок ~С}.~Во всех остальных случаях транзакт переходит в блок, определяемый операндом В (т. е. в блок В_). В операнде А можно записывать не более трех цифр. 1^ В качестве примера рассмотрим рис. 2.54, на котором представлена карта блока TRANSFER, работающего в режиме статистической передачи. Транзакты, входящие в блок, в 25% случаев будут передаваться в блок с именем PLAY (блок С). В остальных 75% случаев они будут переданы в блок с именем WORK (блок В). Важно подчеркнуть, что каждый очередной выбор не зависит от предыдущего. Например, вполне возможно, что пять транзактов подряд войдут в блок TRANSFER на рис. 2.54 и попадут затем в блок с именем WORK. Только при длительном моделировании около 75% транзактов попадут в блок WORK. На рис. 2.55 показан вид перфокарты другого блока TRANSFER, работающего в режиме статистической передачи. В нем не определяется блок В. В этом случае подразумевается, что последующий блок модели и является блоком В. Транзакты, входящие в блок, будут переданы в 33% случаев в блок с именем BYPAS. В остальных случаях они попадают в следующий блок, т. е. в блок, карта которого расположена вслед за картон, представленной на рис. 2.55. В этом случае транзакты, входящие в блок на рис. 2.55, как говорят, «проваливаются» в следующий блок. На рис. 2.55 можно было бы с тем же успехом записать в поле операнда В некоторое имя TT«lsu i 7'>Jioi ijujiilnii) itiii'n rr-' OPERATION ».B,C,D.l.F 17и& ^1ЩгШр!Ш;ГлШШ\^^Щ^Щк№\»] ijimujjx-* ~. aa„HOR,K,.Jpx»fl. l^L. —L i I—t—1 j i- 1 i—i- 1_ L_i- L 1 i_* J 32 Рис. 2.54. Первый пример использования блока TRANSFER и режиме статистической передачи
Рис. 2.55. Второй пример использования блока TRANSFER в режиме статистической передачи .?!«>( щ I» Oi ||,?И« ЕМ" T.RANSiFE.K,-.- i.B.C.D.E.f 1Ж]ы|» г«|н(йр]н|йГм )||и1))|И|»||б|я|)| пХЦ ч\ч ■ .3,3.3,., г IB.Y.PAS, блока и присвоить его блоку, следующему за представленным. Умолчание операнда В позволяет упростить разработчику написание модели и не присваивать лишних имен. Отметим, что на рис. 2.53 в скобках записаны операнды В и С. Эти скобки записываются только в блок-схемах модели и не являются частью операндов; следовательно, перфорировать их тоже не следует. В режиме статистической передачи блок TRANSFER никогда не запрещает транзакту входить в него. Когда транзакт входит в блок, происходит выбор следующего блока. Затем транзакт пытается войти в выбранный блок. Если вход запрещен, транзакт остается п блоке TRANSFER и в цепи текущих событий. При каждом следующем просмотре цепи текущих событий (независимо от того, вызван просмотр в течение той же фазы просмотра или это уже новая фаза просмотра) делается новая попытка войти в выбранный блок. Возможно, что одна из таких попыток окажется успешной. Использование блока TRANSFER в режиме статистической передачи иллюстрируется в примере моделирования 2F. 2.45. Пример моделирования 2F. Станция технического контроля производственной • линии 1. Постановка задачи. Собранные телевизионные приемники после сборки проходят серию испытаний па станциях технического контроля. На последней из этих станций проверяют регулировку установки кадров по вертикали. Если оказывается, что функционирование телевизора ненормально, то отбракованный телевизор переправляют в цех наладки, где заменяют блок установки кадров по вертикали. После наладки телевизор возвращают на последнюю станцию контроля к снова проверяют. Телевизионные приемники уходят с последней станции после одной или нескольких проверок в цех упаковки. Описанная ситуация представлена на рис. 2F.1. Кружками представлены телевизоры. Пустые кружки символизируют телевизоры, ожидающие проверки и проверяемые телевизоры, а перечеркнутые — телевизоры с нарушенной регулировкой по вертикали. Они либо находятся в наладке, либо ожидают обслуживания в цехе наладки. Телевизионные приемники попадают на последнюю станцию с предыдущей каждые 5 = — 2 мнн. На станции находятся два контролера. Каждому из них требуются на проверку 9^3 мин. Примерно 85% телевизоров проходят проверку успешно м попадают в цех упаковки. Остальные 15% попадают в цех наладки, в котором находится один рабочий- наладчик. Наладка блока регулировки по вертикали занимает 30 — 10 мин. Напишите на GPSS модель функционирования этого подразделения производственной линии. С помощью этой модели оцените, сколько мест на стеллажах необходимо предусмотреть на входе станции контроля и в цехе наладки. Место на стеллажах — это пространство, предназначенное для хранения ожидающих в очереди элементов, в данном случае телевизионных приемников. 2, Метод построения модели. Такую модель легко реализовать в виде одной последовательности блоков. Транзакты-телевизоры проходят последовательность QUEUE — ENTER — DEPART - ADVANCE - LEAVE (СТАТЬ В ОЧЕРЕДЬ - ВОЙТИ - ПОКИНУТЬ ОЧЕРЕДЬ - ЗАДЕРЖАТЬ - ВЫЙТИ), моделирующую станцию контроля. Из блока LEAVE они входят в блок TRANSFER (ПЕРЕДАТЬ) в режиме статистической передачи. Отсюда в 85% случаев они «проваливаются» в блок TERMINATE (ЗАВЕРШИТЬ). Остальные 15% переходят в последовательность QUEUE — SEIZE — DEPART — ADVANCE- RELEASE (СТАТЬ В ОЧЕРЕДЬ - ЗАНЯТЬ- ПОКИНУТЬ ОЧЕРЕДЬ - ЗАДЕРЖАТЬ - Налаженные телевизоры. возвращающиеся Приход на станцию технической контроля '.__лл ОООО но станцию технического контроля €>©■ Места для ожидания Отбракованные Наладчик телевизоры в очереди Переход на. упаковку Рнс. 2F.I- Функциональная схема примера моделирования 2F 133
ОСВОБОДИТЬ), моделирующую станцию наладки. После выхода из блока RELEASE они безусловно передаются в блок QUEUE, связанный со станцией контроля. Счетчики максимального содержимого для обеих очередей можно интерпретировать как объем места на стеллажах, предназначенных для хранения приемников на станциях контроля и наладки соответственно. 3. Таблица определений. Единица времени: 0,1 мин. Таблица 2F.1. Таблица определений примера моделирования 2F Элементы GPSS Траизакты: 1-й сегмент модели 2-й сегмент модели Приборы: FIXER Очереди: AREA1 AREA2 Многоканальные устройства: TEST Интерпретация Телевизоры Транэакт-таймер Рабочий в цехе наладки Место для ожидании иа станции технического контроля Место для ожидания в цехе наладки Рабочие на станции технического контроля 134
4. Блок-схема. GENERATE ТЕЛЕВИЗОРЫ GENERATE k. L j5.20 1 |c |f ~ (BACK) QUEUE V ENTER ' ' DEPART \ 1 ADVANCE 90.30 \ ' LEAVf 1 TRANSFFER 4^ ARtA t TEST\ AREA 1 iTEST/ /FIX) 1 TERMINATE <^я ^v_«^ ПРИХОДЯЩИЕ ИЗ ДРУГОГО ЦЕХА ПРИХОД К МЕСТУ ОЖИДАНИЯ КОНТРОЛЯ ЗАНЯ1ИЕ КОНТРОЛЕРА УХОДС МЕСТА ОЖИДАНИЯ ТЕЛЕВИЗОР В ПРОЦЕССЕ ОСВОБОЖДЕНИЕ КОНТРОЛЕРА ПЕРЕДАЧА НА УПАКОВКУ ИЛИ НАЛАДКУ ТЕЛЕВИЗОРЫ ПОСТУПАЮТ В УПАКОВКУ (FIX) ,f QUEUE 1 SEIZE 1 г DEPART \ ' ADVANCE 300.100 \ ' RELEASE J TRAN I SFTER >-* AREA 2 A FIXER AREA 2 FIXER V (BACK) 1-Й СЕГМЕНТ МОДЕЛИ Рис'2F.2. Блок-схема примера моделирования 2F \У I I— V 4800 X TERMINATE 2-Й СЕГМЕНТ МОДЕЛИ (СЕГМЕНТ-ТАЙМЕРА) ПРИХОД К МЕСТУ ОЖИДАНИЯ НАЛАДКИ ЗАНЯТИЕ НАЛАДЧИКА УХОД С МЕСТА ОЖИДАНИЯ НАЛАДКИ ТЕЛЕВИЗОР В ПРОЦЕССЕ НАЛАДКИ ОСВОБОЖДЕНИЕ НАЛАДЧИКА ВОЗВРАТ НА КОНТРОЛЬ
5. Распечатка программы. BLOCK NUMBER «LOC 1 2 3 A S 6 7 В 9 10 It 12 13 1» IS 16 OPERATION SIMULATE A.B.C.D.E.F.G COMMENTS STORAGE САРАС1ТГ OEFInITIOnISI MODEL SEGMENT I GENERATE OUEUE enter OEPART ADVANCE LEAVE TRANSFER TERMINATE OUEUE SE IZE OEPART ADVANCE RELEASE TRANSFER SS.20 AREA! TEST AREAI 90 .30 TEST .IS..FIX AREA2 FIXER AMEA2 300. 10 0 FIXER .BACK MODEL SEGMENT 2 GENERATE TERMINATE • BOO 1 CONTROL CAAOS START END Рис. 2F.3. Распечатка программы примера моделирования 2F 6. Выходные данные. TWO WORKERS AT LAST INSPECTION STATION SETS ARRIVE FROM PRECEDING STATION ENTER INSPECTION WAITING AREA CAPTURE AN INSPECTOR LEAVE THE WAITING AREA SET IS BEING INSPECTEO FREE THE INSPECTOR PROCEED TO PACKING OR AOJUSTMENT STATION SET MOVES ON TO PACKING ENTER AOJUSTMENT WAITING AREA CAPTURE THE AOJUSTOR LEAVE THE WAITING AREA SET IS BEING ADJUSTEO FREE THE ADJUSTOR GO BACK TO BE INSPECTEO TIMER ARRIVES AT ENO OF EACH DAV PROVIDE SNAP OUTPUT OR SHUT OFF THE RUN start the Run - return cdntrol to operating ststem CARO NUMBЕй 1 2 3 * 9 6 7" a 9 10 11 12 13 t» IS . 16 I 7 • 8 9 го 21 27 23 24 25 26 27 2B 29 30 31 32 UEUE ARCAI AREA2 •AVERAGE MAXIMUM CONTENTS 3 s TIME/TRANS AVERAGE CONTENTS .5*0 2.IS2 ■ AVERAGE TOTAL ENTRIE5 101 17 TIME/TRANS ZERO PERCENT ENTRIES ZEROS 23 22.7 2 11.7 EXCLUDING ZERO ENTRIT" AVERACE TIME/TRAN5 27.»»* 607 .ТА,* •AVERAGE TIME/TRANS 36.730 6BB.799 TABLE NUMBER CURRENT • CONTENTS г i JUCUE МАКГИКИ CONTENT* «AVERAGE T JMF/THAN5 AV£MAO£ ТОГлЛ. ZEOO PERCENT AVERAGE «AVERAGE CONTENT* ENTRIL5 ENTRIES ZEROS T|ME/TRaN5 T.HE^TRANS •610 19* *6 23.2 29.SAO 34«392 I.«00 2*1 Ь ]7.в «00.03$ S0t*.»91 » AVERAGE TIHE/TRAN5 OClUOING ZERO ЕМТЙЦБ table NUMBER CUA.RC NT CONTENTS *) ueue AREAI AREA2 •AVER AGE MAX|MuM CONTENTS J S TIME/TRANS AVERAGE CONTENTS .s«e 1 .566 ' AVERAGE TOTAL ENTRIES гч» «2 TIME/TRANS 2ЕЯ0 PERCENT ENTRIES ZEROS as га. г 6 l«.2 EXCLUDING ZERO ENTRIES AVERAGE Time/trans 27.2SJ 637.«3» •AVERAGE TIME/TRANS Je.tsa 626.777 table NUMBER CURRENT CONTENTS 1 !UE AREAI АЙЕА2 MAXIMUM CONTENTS 3 5 AVERAGE CONTENTS • 566 1.263 TOTAL ENTRIES 343 63 ZERO ENTRIES III ■ I PERCENT ZEROS ZB.2 20.7 AVERAGE TIME/TRANS 2B.66A 457.B67 •AVERAGE TIME/TRANS 39.9*6 577.7П5 TABLE NUMBER CURRENT CONTENTS •AVERAGE TIME/TRANS » AVERAGE TtKC/THAHS EXCLUDING ZERO ENTRIES UE AREAI AREAZ MAXIMUM CONTENTS i 5 AVERAGE CONTENTS .5*6 l.*J« TOTAL ENTRIES • 93 70 ZERO ENTRIES 147 ■ I PERCENT ZEROS 29.В IS.7 AVERAGE TIME/TRANS 26.6 IB 491.B2B •AVERAGE TIMfc/TRANS 37.927 5B3.S26 TAttlfc NUMBER CURRENT CONTENTS 2 •AVERAGE TIME/TRAMS • AVERAGE TIKE/TRANS EXCLUDING ZERO ENTRIES Д) Dll" OP it U олчч. г\пг>лапч-т/н nLivntrtiLiv nautili v пппиаП» иплАпиплпоииа ОТ7 Г4татилч<ииал1/ил nauuito r»rt пиаЛАЛОУ П/ъРПР' ПРО»
7. Обсуждение. Использование модели. Моделирование выполняется для пяти восьмичасовых рабочих дней подряд с агрегированным сбором статистики; сбор ведется от начала моделирования и статистика распечатывается для конца каждого дня. В распечатке программы на рис. 2F.3 видно, как это осуществлено с помощью значений операндов блока GENERATE (карта 26) и карты START (карта 31). В соответствии со значениями операндов А и С карты START счетчики завершений и снимков устанавливаются в значении 5 и 1 соответственно. Транз- акт-таймер входит в модель через каждые 480 мин модельного времени и сразу же завершает свою работу, вычитая по единице из обоих счетчиков. В первых четырех случаях интерпретатор: а) распечатывает стандартные статистические параметры, поскольку счетчик снимков сбрасывается в ноль; б) восстанавливает счетчик снимков в единицу и в) продолжает выполнение моделирования, поскольку счетчик завершений еще не равен нулю. Наконец, когда пятый транзакт-таймер входит в модель, моделирование завершается, и в пятый и последний раз распечатываются статистические данные. Результаты моделирования. (Полное время моделирования на ЭВМ IBM 360/67 равнялось 4,1 с.) Обращаясь к рис. 2F.4, д, получаем максимальное число телевизоров в очередях AREAI и AREA2, находящихся перед станцией контроля и станцией наладки. Эти значения равны 3 и 5 соответственно в течение пяти моделируемых дней. Эти максимальные значения были получены уже на исходе первого моделируемого дня (см. рис. 2F.4, а), что говорит о том, что этот параметр вошел в устойчивое состояние. В противоположность этому, значение AVERAGE TIME/TRANS (СРЕДНЕЕ ВРЕМЯ/ТРАНЗ) для очереди 2 меняется. В течение первого дня 17,2% телевизоров, прошедших через станцию контроля, были переданы в цех наладки 1см. рис. 2F.4, а, из 101 TOTAL ENTRIES (ЧИСЛО ВХОДОВ) очереди AREAI 99 прошли проверку, а 2 находятся в очереди; из 99 прошедших проверку 17 были посланы в очередь AREA2). В течение пяти дней, как показывает информация на рнс. 2F.4, д, 14,2% проверенных телевизоров было передано в цех наладки. 2.46. Условная передача транзактов в один из двух блоков Когда блок TRANSFER (ПЕРЕДАТЬ) используют в режиме статистической передачи, выбор следующего блока для транзакта не зависит TRANSFER tC) А ^~~ |(В> Рис. 2.56. Блок TRANSFER в режиме BOTH: Операнд А В С Значение Слово BOTH Имя блок» U Имя блока С Значение пли результат по умолчанию Ошнбкл Следующий по порядку Опок Ошибка от условий, существующих в текущий момент в системе. Если выбранный следующий блок отказывает во входе, транзакт просто ожидает разрешения на вход. В противоположность этому можно использовать блок TRANSFER для посылки транзакта в любой из двух блоков, готовый принят!» его. В этом случае говорят, что блок TRANSFER используют в режиме BOTH (ОБА). На рнс. 2.56 изображен блок в указанном режиме работы. Операнд А является не чем иным, как словом BOTH. Операндами В и С являются имена двух блоков модели. Транзакт, входящий в блок TRANSFER, работающий в режиме BOTH, немедленно пытается войти в блок В (т. е. блок, имя которого задано в операнде В). Если вход невозможен, транзакт пытается войти в блок С. Если н этот блок отказывает транзакту, последний остается в цепи текущих событий. С точки зрения использования блоков транзакт остается в блоке TRANSFER и входит в текущее содержимое этого блока. При каждом последующем просмотре цепи текущих событий интерпретатор снова пытается ввести транзакт в блок В, а если вход в его по-прежнему невозможен, то в блок С. Транзакт войдет в один из этих двух блоков, способный принять его первым. Заметим, что блок В проверяется первым, а затем (если это необходимо) проверяется блок С. Если оба блока одновременно смогут принять транзакт, то он войдет в блок В. В качестве примера использования режима BOTH предположим, что в парикмахерской имеются только три кресла для ожидающих клиентов. Клиенты приходят в парикмахерскую каждые 14 ^ 5 мин, но остаются только в том случае, если есть хотя бы одно свободное кресло для ожидания. В противном случае они уходят. Пусть многоканальное устройство SEATS символизирует очередь в парикмахерской. На рис. 2.57 показана блок-схема модели такой парикмахерской. Входя в модель, тре-
GENERATE M.7 I GENERATE \480 TftANSFEK (BYBY BOTH > »■ ENTER ' ' SEIZE ' sIa^S Л BARBR ' LEAVE Seats' ADVANCE 13,3 RELEASE F 7 BARBR (BYBYE) 3E V X ЯМШАТ TERMINATE TERMINATE Рис. 2.57. Пример использования блока TRANSFER в режиме BOTH бования проверяют наличие свободных мест в очереди. Если места есть, клиенты остаются, в противном случае уходят. Заметим, что в данном примере в блоке TRANSFER блок С никогда не отказывает транзакту во входе. Также заметим, что блок ENTER не имеет имени. Это случай, когда удобно использовать параметр в блоке TRANSFER по умолчанию. 2.47. Упражнения I. В упражнении 9 параграфа 2.41 требовалось выполнить пример моделирования 2Е для конфигурации «четверо рабочих — четыре арендуемые машины» со сбором статистики через 10 недель моделируемого времени. Нужно было собрать агрегированную статистику в конце каждой недели последующих 20 недель. Покажите, как можно это сделать, отдавая предпочтение использованию операнда С в карте START использованию последовательной серии карт START в модели. 2. Напишите операнды блока PRINT, которые вызвали бы печать: а) цепи текущих событий; б) цепи будущих событий; в) информации обо всех многоканальных устройствах модели; г) информации о приборах с третьего по седьмой; д) информации об очереди номер 5. З.а). Напишите сегмент из трех блоков, идентичный по своему действию сегменту на рис. 2.52. При прочих равных условиях какой из этих сегментов требует меньшего времени для выполнения и почему? б). Цепь текущих событий должна распечатываться через каждые 50 единиц модельного времени. Напишите сегмент блок-схемы, который выполнял бы эту работу. в). Повторите п. б, на этот раз предполагая, что распечатка должна начинаться при значении времени 25. 4. Проанализируйте следующее утверждение: в примере моделирования 2F, даже если все входы в очередь AREA1 являются нулевыми, возможно, что максимальное содержимое для нее равно 2. 5. В примере моделирования 2F размер стеллажей, располагаемых перед цехом наладки, зависит не только от среднего времени обслуживания на станции контроля и наладки, но также и от величины возможного отклонения от этого числа. а). Выполните еще раз модель 9, но так, чтобы время контроля и наладки всегда было равно 9 и 30 мин соответственно. Каков наибольший размер стеллажей в этом случае при моделировании в течение пяти дней? б). Теперь повторите моделирования в предположении, что контроль осуществляется за 9± 3 мин, как и прежде, а наладка блока установки по вертикали теперь равна 30 - — 20 мин. Каково теперь максимальное значение размера стеллажей при моделировании в течение пяти дней? 6. Покажите, каким образом необходимо модифицировать модель примера 2F, чтобы выполнялось условие, состоящее в том, что не более четырех телевизоров могут одновременно находиться в очереди на обслуживание в цехе наладки. Контролер не может приступать к следующей проверке, пока предыдущий телевизор не будет передан в упаковочный цех или ие будет перемещен на стеллаж в цехе наладки. Выполните моделирование и сравните значения очереди на станции технического контроля с поведением аналогичной очереди примера моделирования 2F. 7. В примере моделирования 2F было принято нереальное предположение о том, что даже после того, как телевизор прошел наладку, 138
вероятность его отбраковки после контроля все равно остается 0,15. Покажите, как видоизменить модель с учетом того, что после одного или более прохождений через цех наладки вероятность отбраковки становится 0,03. Оставшиеся вопросы относятся к рис. 2.57. Кроме оговоренных случаев, они не связаны друг с другом. 8. Предположим, что парикмахер в момент времени 326 занят и что устройство многоканального обслуживания SEATS заполнено. Предположим также, что оба следующие события происходят одновременно в момент времени 326. а). Клиент, которого обслуживал парикмахер, заканчивает обслуживание. б). В парикмахерскую входит новый клиент. При каких условиях вошедший клиент остается? Существуют ли условия, при которых вошедший клиент не останется, а перейдет по «етке BYBYE? 9. На рис. 2.57 нет регистратора очереди для SEATS. Покажите, как ввести «го для сбора статистики об очереди к парикмахеру. 10. Опишите возможность интерпретации статистических данных об использовании многоканального устройства SEATS в качестве данных об очереди к парикмахеру. В терминах вашего описания покажите, какую дополнительную информацию, если это возможно, мы получим при явном описании очереди, как это предложено в упражнении 9. 11. Как по результатам, полученным на модели рис. 2.57, можно вычислить число клиентов, которым не пришлось ждать в течение интервала моделирования? 12. Покажите, как видоизменить модель, с тем чтобы_ввести в нее второго парикмахера. Время обработки клиента для первого парикмахера остается 13 =Ь 3 мин, а для второго равно 15 =£ 4 мин. Измените значение интервалов приходов клиентов на 7 =£ 3 мнн, но условие ухода тех клиентов, для которых нет места в очереди, оставьте без изменений. (Указание: надо воспользоваться двумя параллельно работающими приборами для моделирования работы двух парикмахеров.) 13. При условиях, введенных в упражнении 12, обсудите возможность* использования многоканального устройства с емкостью 2 для моделирования работы двух парикмахеров. 14. Добавьте к модели на рис. 2.57 работу чистильщика сапог. После того, как стрижка заканчивается, 25% клиентов могут захотеть воспользоваться его услугами. Однако лишь 20% из них согласны подождать, если в это время чистильщик занят обслуживанием другого клиента. Время чистки ботинок занимает 3,5 =ь 0,5 мин. 15. Поясните, каким образом результаты моделирования из упражнения 14 могут быть использованы для расчета числа клиентов, желавших почистить ботинки, но не сделавших этого. 16. Добавьте в модель на рис. 2.57 следующее условие: 40% клиентов, ушедших из парикмахерской ввиду нехватки мест в очереди, через 15 =t 5 мин возвращаются. Если и на этот раз приход безуспешен, они уходят окончательно. 17. Видоизмените модель на рис. 2.57 следующим образом: около 20% клиентов, пришедших в парикмахерскую, остаются только в случае, если их сразу могут обслужить. Остальные присоединяются к очереди, если в ней есть свободные места.
3.1. Введение В гл. 2 было описано 11 блоков GPSS, а для одного из них, блока TRANSFER, рассмотрены три режима использования. Из гл. 2 и упражнений к ней ясно, что в принципе можно построить много различных моделей с использованием этих 11 блоков. Однако во всех рассмотренных моделях интервалы прихода требований и времени их обслуживания предполагали распределенными равномерно. Это было сделано для того, чтобы читатель мог больше внимания уделить более сложным аспектам создания моделей на GPSS. Теперь о GPSS известно достаточно для того, чтобы непосредственно перейти к использованию в языке неравномерных распределении. Для описания неравномерных распределений разработчик должен воспользоваться функциями. Это вовсе не означает, что концепции моделирования, изложенные в гл. 2, должны быть отброшены. Все модели, описанные в этой главе, после небольших изменений станут применимыми для использования неравномерных распределений интервалов времени прихода требований и их обслуживания. Изменения включают два этапа. 1. Необходимо определить функции, описывающие каждое из неравномерных распределений. 2. Во всех блоках GENERATE и ADVANCE операнды А и В, описывающие равномерные распределения, должны быть заменены ссылками на соответствующие функции. В данной главе описано, каким образом можно выполнить эти этапы. 3.2. Генераторы равномерно распределенных случайных чисел В общем случае источником «случайности» в моделях являются одна илн несколько функций, при обращении к которым можно получить Использование распределений вероятностей в GPSS случайные значения из выборки равномерно распределенных в интервале 0—1 чисел. Вспомним, как это было сделано в гл. I. Там была реализована функция для генерации равномерно распределенных чисел, которую использовали затем как для получения чисел, равномерно распределенных в произвольном интервале, так н для неравномерно распределенных чисел (см. упражнения 2 и 4 параграфа 1.6). Розыгрыш значения в соответствии с некоторым распределением обычно включает два этапа. 1. Разыгрывается случайное число из выборки чисел, равномерно распределенных в интервале 0—1. 2. Полученное число каким-то образом преобразуется в эквивалентное ему значение, на, уже принадлежащее интересующей нас выборке. GPSS также использует значения, полученные из выборки равномерно распределенных чисел в интервале 0—1, для получения чисел в соответствии с неравномерными распределениями и равномерными распределениями в произвольных интервалах. В GPSS есть восемь различных источников равномерно распределея- ных случайных чисел. Эти источники случайных чисел являются основополагающими элементами самого интерпретатора. Генераторы случайных чисел, использующие соответствующие источники, имеют имена RN1, RN2, RN3, RN4, RN5, RN6, RN7 и RN8. 140
Таблица 3.1. Десять значений, полученных от восьми генераторов случайных чисел Ноыср 1 2 3 4 5 6 7 8 9 10 RN1 0.000673 0.510675 0,870337 0,999177 0,778871 0.194160 0.790719 0.014667 0.043340 0.645420 R.VL» 0,000573 0,510675 0.870337 0,999177 0.778871 0.I94I60 0,790719 0,014667 0.043340 0.645420 RN3 0,000573 0,510675 0,870337 0,999177 0,778871 0,194160 0.790719 0,014667 0,013340 0.645420 RN-1 0,000573 0,510675 0,870337 0,999177 0,778871 0,194160 0,790719 0,014667 0,043340 0,645420 К N5 0,000573 0,510675 0,870337 0,999177 0,778871 0,194160 0,790719 0,014667 0,043340 0,645420 RN6 0,000573 0,510675 0,870337 0,999177 0,778871 0.194160 0.790719 0,014667 0,043340 0.645420 R.N7 0,000573 0,510675 0,870337 0,999177 0,778871 0.194160 0,790719 0,014667 0,043340 0,645420 KNH ' 0,000573 0,510675 0,870337 0,999177 0.778871 0,194160 0,790719 0.014667 0.043340 0.645420 Предположим, что все генераторы случайных чисел GPSS используются без изменений и все восемь выдают одну и ту же последовательность случайных чисел. (Существует способ, использование которого приводит к тому, что последовательности случайных чисел, полученные от разных генераторов, будут отличаться друг от друга; если этот способ не применяют, они одинаковы. Использование этого способа рассмотрено в параграфе 3.18.) Этот факт проиллюстрирован в табл. 3.1, в которой представлены первые 10 значений, полученных от RN1 — RN8. (Элементы табл. 3.1 получены при использовании версии 1 системы GPSS/360. В упражнении 6 параграфа 5.7 показана модель, распечатывающая первые 10 значений, полученных от RN/, где / изменяется от 1 до 8.) Важно то, что все элементы строк одинаковы. Например, восьмое обращение к RN7 дает такое же случайное число, что и восьмое обращение, скажем, к RN2. Аналогично, третье обращение к RN8 не будет отличаться от третьего обращения к RN3 и т. д. Предположим, что разработчик хочет определить какую-то функцию, описывающую некоторое интересующее его распределение. В атом случае он должен определить (в виде аргумента функции), какой из восьми генера- topOB случайных чисел нужно использовать яри розыгрыше случайных чисел. Каждый раз при необходимости получения случайного числа используют определенную функцию. Интерпретатор обращается к выбранному генератору и определяет следующее значение в соответствующей последовательности случайных чисел. Далее для преобразования этого равномерно распределенного случайного числа в случайное значение из интересующего разработчика распределения используют определенную разработчиком функцию. Значения, полученные с помощью RN1 — RN8, фактически контекстно зависимы. В зависимости от используемого контекста значения генераторов могут попадать в один из двух возможных диапазонов чисел. 1. При использовании номера генератора случайных чисел в качестве аргумента функции он выдает шестизначное число из выборки равномерно распределенных в интервале 0,000000—0,999999 чисел. Именно этот контекст был использован для выдачи чисел, представленных в табл. 3.1. 2. При использовании генераторов случайных чисел в любом другом контексте выдается целое трехзначное значение из выборки равномерно распределенных чисел в интервале 000— 999. В этой главе и почти всюду в книге номера генераторов случайных чисел используют как аргумент функции. Однако необходимо помнить, что выдаваемые генераторами числа зависят от контекста. 3.3. Использование равномерных распределений в блоках GENERATE и ADVANCE В гл. 2 подразумевали, что интерпретатор GPSS знает, каким образом пользоваться равномерным распределением. При каждом моделировании в гл. 2 использовали равномерные распределения со значениями среднего и половины размаха, заданные в операндах А и В блоков GENERATE u ADVANCE. Для получения случайных чисел интерпретатор должен иметь доступ к генератору случайных чисел, равномерно распределенных в интервале 0—1. Интерпретатор в качестве такого генератора использует RN1. (Интерпретатору необходимо случайное число каждый раз при использовании блока TRANSFER в режиме статистической передачи. При этом также используют RN1). Рассмотрим, каким образом интерпретатор использует RN1 для получения чисел с равномерным распределением. На рис. 3.1 еще раз показана распечатка программы моделирования работы кладовой, приведенной ранее на рис. 2С.4. В начале моделирования, на фазе 141
BLOCK NUMBER 1 2 3 « 5 Ь 7 в 9 10 11 12 13 1* IS 16 •LOC * • * » • OPERATION SIMULATE a.b.c.d. MODEL SEGMENT I GENERATE OUEUE SEIZE OEPART АОVANCE RELEASE TERMINATE 420,3601 LINE CLERK LINE 300.90 CLERK MODEL SEGMENT 2 GCNFRATE OUEUE SE 1 ZE OEPART ADVANCE RELEASE TERMINATE 36O.240, LINE CLERK LINE 100.30 CLERK MOOCL SEGMENT 3 GENERATE TERMINATE 28B0O 1 control Caros e.f.c ..i ,..z COMMENTS CATEGORV 1 MECHANICS ARRIVE ENTER "CATEGORV 1 SEGMENT" OF LINE CAPTURE THE CLERK LEAVE THE LINE USE THE CLERK FREE THE CLERK LEAVE THE TOOL CRIB AREA CATEGORV 2 MECHANICS ARRIVE ENTER «CATEGORV 2 SEGMENT» OP LINE CAPTURE THE CLERK LEAVE THE LINE USE THE CLERK FREE THE CLERK LEAVE THE TOOL CRIB AREA TIMER ARRIVES AFTER 8 HOURS SHUT OFF THE RUN START ENO Рис. 3.1- Повторение рис. 2С.4 START THE RUN RETURN CONTROL TO OPERATING SVSTEM CARD NUMBER 1 2 3 » S ь 7 В 9 lO 11 12 13 1* IS lb 17 18 19 20 21 22 S3 2« 25 2b 27 2B 29 30 31 ввода интерпретатор читает карту «GENERATE 420, 360». Для планирования прихода первого транзакта через этот блок случайные числа нужно выбирать из распределения 420 =£ 360. Интерпретатор обращается к RN1, который дает значение 0,000573 (см. табл. 3.1). Прн вызове RN1 перемножаются два 32-разрядных числа и получается 64-разрядное произведение. Часть из этих 64 цифр используется в качестве следующего случайного числа. Последовательные обращения к RN1 образуют ряд случайных чисел, показанных в табл. 3.1. Начальное значение множителя может быть изменено управляющей картой, описанной в параграфе 3.18. Как указывалось в гл. 1, значение, соответствующее равномерному распределению AiB, вычисляется как целая часть выражения А — В + RN1 (2В + 1). В данном случае получаем 420 — 360 ■+- 0,000573 (720 4- 1), или 60,4. Целой частью является число 60. Следовательно, число 0,000573 преобразуется в число 60. Транзакт 1 выбирается из вершины пассивного буфера и помещается в цепь будущих событий, с тем чтобы в момент времени, равный 60, он попал в блок 1. Позднее на фазе ввода интерпретатор читает карту «GENERATE 360, 240». Для планирования прихода первого транзакта в этот блок снова происходит обращение к RN1, который выдает значение 0,510675 в соответствии со значением табл. 3.1. (Заметим, что это уже второе обращение к RN1.) Это значение далее преобразуется в 365. Транзакт 2 выбирается из пассивного буфера и помещается в цепь будущих событий, с тем чтобы попасть в блок в момент времени 365. Наконец, в блоке 16 интерпретатор читает карту «GENERATE 28800». Поскольку интервал прихода в этом блоке постоянный, не тре> буется никаких случайных чисел. Без обращений к RN1 интерпретатор сразу выбирает транз» акт 3 из пассивного буфера и помещает его в цепь будущих событий. После завершения фазы ввода начинается первая фаза коррекции таймера. Таймер получает значение 60, и транзакт 1 помещается в цепь текущих событии; начинается просмотр ЦТС, и траизакт 1 входит в блок GENERATE и выходит из него. При планировании следующего входа через блок GENERATE интерпретатор снова обращается к RN1 и получает значение 0,870337. (Третье обращение к RNi.) Это число преобразуется в 687. Из пассивного буфера извлекается транзакт 4 и помещается- в цепь будущих событий. Возобновляется движение транзакта 1, и он входит в блок ADVANCE (блок 5). Для получения числа в соответствии с распределением 300 — 90 снова происходит обращение к RN1. На этот раз получаем число 0,999177. (Четвертое обращение к RN1.) Это число преобразуется в 390. Теперь 390 добавляется к текущему значению таймера (оно равно 60), и получается 450. Транзакт 1 выводится из цепи текущих событий и помещается в цепь будущих событий, причем время его входа в блок 6 заплани ровано на время 490 и т. д. 142
Из сказанного выше можно сделать два вывода. 1. Из нескольких мест модели может происходить обращение к единственному источнику случайных чисел. В примере мы видим два обращения из блоков GENERATE и два из блоков ADVANCE. Каждый из блоков получает значения, выдаваемые генератором случайных чисел. Получаемые значения зависят от последовательности, в которой выполняются подпрограммы блоков, т. е. от последовательности входов транзактов в эти блоки. 2. Предположим, что разработчик в качестве источника случайных чисел для розыгрыша значений различных распределений определяет именно RN1. Если так, то он делит RN1 с интерпретатором. Это справедливо, если интерпретатор пользуется собственным равномерным распределением в одном нли более блоках GENERATE илн ADVANCE, или если ему нужны случайные числа при использовании блока TRANSFER в режиме статистической передачи. 3.4. Метод розыгрыша случайных чисел для дискретных неравномерных распределений Прн определении интервалов прихода н обслуживания требований разработчику часто бывает необходимо сделать так, чтобы интерпретатор разыгрывал случайные числа для неравномерных распределений. Можно предложить некоторый" алгоритм для преобразования чисел, полученных в интервале 0—1, в числа, принадлежащие выборке неравномерно распределенных чисел. Рассмотрим алгоритм розыгрыша чисел для дискретных распределении. Говорят, что случайная переменная является дискретной, если множество ее значений конечно. Например, при бросании игральной кости случайная переменная определяется на множестве точек 1, 2, 3, 4, 5 н 6. Или, если известно, что платежный чек должен быть больше 75 долларов, но меньше 80, то случайная переменная определяется на множестве 75,01; 75,02; ...; 79,98 и 79,99. В первом примере случайная переменная дискретна и получает целые значения. Во втором примере случайная переменная также дискретна и получает дробные значения. Когда-интерпретатор GPSSj>a3birp.bmaeT числа для дискретных распределений, он выбирает сначала случайное число в интервале 0—1, а затем использует его при просмотре таблицы веданной функция распределения. Предположим;" например, что случайная переменная пожег получать значения 2, 5, 8, 9 и 12 с отно- 1 ситеяьной частотой 0,15; 0,20; 0,25; 0,22 и 0,18. Таблица 3.2. Пример дискретной, целочисленной случайной переменной Значение случайной переменной 2 5 8 9 12 Относительная частоте 0,15 0,20 0.2Б 0,22 0.18 Суммарная частота 0.15 0,35 0,60 0,82 1,00 Диапазон 0.0+0,15 0,16-)- +0,35 0,35 -)- -i-0,60 0,60 + +0,82 0.82+ +1.0 Интервал 1 2 3 4 5 Эта информация записана в табл. 3.2, в которой значения переменных и их относительные частоты использования приведены в первом и втором столбцах соответственно. В третьем столбце дана соответствующая функция распределения, которая записана в интервале от 0 до 1. Интервалы, соответствующие каждому из значений случайной переменной, показаны в четвертом столбце. Например, значению переменной 2 соответствует диапазон от 0,0 до 0,15 включительно. Это обозначено как интервал 1 в пятом столбце. Значению переменной 5 соответствует диапазон чисел от значений, больших чем 0,15 (обозначено 0,15 -f) до 0,35 включительно. Этот диапазон обозначен как интервал 2 в пятом столбце и т. д. Предположим теперь, что необходимо разыграть случайное число в соответствии с распределением табл. 3.2. Сначала разыграем число в интервале 0—1. Пусть этим числом будет 0,523664. Тогда, просматривая табл. 3.2, видим, что число 0,523664 попадает на интервал 3. Искомым значением случайной переменной, таким образом, является третье ее значение, т. е. в данном случае 8 (третий элемент первого столбца). Когда необходимо разыгрывать случайное число в соответствии с некоторым распределением, интерпретатор GPSS автоматически выполняет процедуру просмотра таблицы по заданной информации о распределении. Интерпретатору необходимо иметь: источник случайных чисел в диапазоне 0—1; значения, которые может принимать случайная переменная; суммарную частоту использования значений переменной. Пользователь задает эту информацию с помощью дискретной функции GPSS. 3.5. Определение дискретной функции GPSS Пользователь должен задавать следующую информацию для определения дискретной функции GPSS. (Число функций, которое может задать пользователь при объемах памяти 64,128
и 256 К, равно 20, 50 и 200 соответственно, см. • приложение F.) I. Функции должно быть присвоено имя. Соглашения об именах приборов, очередей и многоканальных устройств остаются в силе и для функции. Имена могут быть символическими и числовыми. Если имена числовые, то они должны быть положительными целыми числами. Если имена символические, то они состоят из алфавитно-цифровых символов, причем всего может быть от трех до пяти символов. Первые три символа должны быть алфавитными. Примеры правильных имен приведены в табл. 3.3. Таблица 3.3. Пример правильных и неправильных имей функции Правильно JOE 7 JOE23 SWICH Неправильно —5 HI MP2LO 8ВЕТЛ 2. Необходимо задать аргумент функции. Аргумент называет источник случайных чисел, используемый для розыгрыша в соответствии с распределением, заданным функцией. Аргумент задается в виде RIM;', где/ --= J, 2, 3, 4, 5, 6, 7 или 8. Выбор конкретного источника случайных чисел остается за пользователем. 3. Необходимо задать число различных значений, которые может принимать случайная переменная. 4. Необходимо задать сами значения переменной и соответствующие значения функции распределения (суммарной частоты). Три первые элемента указанной выше информации задаются на одной перфокарте, называемой картой определения функции. Формат этой карты показан в табл. 3.4. Имя функции записывается в поле имени, а слово FUNCTION (ФУНКЦИЯ) записывается в поле операции. Операнд А указывает на источник случайных чисел, используемый в данной функ- Таблнца 3.4. Формат карты определения функции Поле перфокарты Информации, эад.шиемаи и поле Имя Операция Операнды: • Л В Имя (снмнолнческое или числовое) функции .Записывается слово FUNCTION RN/, где / =1,2. 3, 4, 5, 6. 7 или 8 tin, где п — число различных значений, получаемых случайной переменной 1 ции, операнд В состоит из символа D (для дискретных функций) и целого числа, определяющего число различных значений, которые может принимать случайная переменная. Далее следуют значения случайной переменной и соответствующие им значения функции распределения. Они могут быть записаны на одной или более перфокартах, называемых картами следования функции. Формат этих карт показан на рис. 3.2. Существует и другая форма записи, при которой числа записывают в шестиколонных полях перфокарты. В этом случае нет необходимости в записи запятых и разделителей «/». Однако форма записи с запятыми и разделителями удобнее. Именно ее используют далее в книге. Основной единицей информации карты следования функции является пара X,, Y„ где X, — это i'-я суммарная частота, a Y, — соответствующее значение случайной переменной. Первый и второй элементы! каждой основной единицы разделяются запятой.1 Последовательные основные единицы раз-г деляются знаками «/». Основные единицы} должны следовать по порядку так, чтобы сум-i марные частоты шли в возрастающем порядке.1 Основные единицы набиваются на перфокарте колонка за колонкой, начиная от первой и не заходя за 71 колонку. Если необходимо или удобно, можно использовать несколько карт следования. При выполнении фазы ввода первая пустая колонка, встречающаяся 8 карте следования функции, указывает интерпретатору на то, что остальную часть карты следует игнорировать. Если не все пары значений были встречены в картах следования, то имеется в виду, что последующие пары появятся в следующих картах, начиная с первой колонки. Любая основная единица, начинающаяся не некоторой карте, должна быть завершена на той же карте. Последующие примеры позволяют разъяснить некоторые вопросы относительно форматов этих карт. Функция GPSS, которую можно использовать для розыгрыша чисел по распределению, заданному табл. 3.2, изображена на рис. 3.3. Функция имеет символическое имя KATHY. В качестве источника случайных чисел высту- Колонки кпрт Начиная от 1, но не далее 71 Информации Х„ /,| X,. У,|Х„ V, |... 1X,. Yt | ... | Х„, Уп, где X/ и У, являются 1-й суммарной частотой и соответствующим значением случайной переменной, и X, < X, < Х3 < . . . < X, < ... ... < х„ Рис. 3.2. Формат карт следования функции
<., OPERATION еТТ io[ii[e|i)l»[iJ[ii[ir[rt FiUHCTi)QW *&..*■/!■ .6,,iii/i. '-f- i i i '' i i i i- i I i i i Г I WM£_ чЩ!ггаи гЗйFIS;s|ioiijjiиЫЫз«| tHjtinPiSii *a...9,/,i'..i,a, i 'Li i. -' i.i r. i I "i i i i.i i Рис. 3.3. Пример функции для получеиия^случайных чисел по распределению табл 3.2 naerbRN4. Случайная переменная может иметь пять различных значений. Суммарные частоты к соответствующие им пять значений записаны как пять пар чисел на следующей карте. Значения суммарных частот следуют в возрастающем порядке. При записи пар, описывающих распределение, можно не записывать десятичную точку, если данные имеют целые значения. Например, первая пара на рис. 3.3 могла бы быть записана и в виде «. 15,2.», а последняя пара как в виде «1., 12», так и в виде «1., 12.». Число пар, записываемых на одной карте, выбирает пользователь, но так, чтобы не выйти за пределы колонки 71. На рис. 3.4 показан другой вид записи примера, приведенного на рис. 3.3. Удобнее, конечно, на одной карте располагать максимальное число пар. Заметим, что за последней парой на карте нет разделителя. Он требуется только для разделения соседних пар, находящихся на одной перфокарте. На рис. 3.5 приведена графическая интерпретация функции, определенной на рис. 3.3 (и на рис, 3.4). Функция состоит из серии горизонтальных ступенек. Черные кружки в правой части каждой ступеньки отмечают те значения функции, которые определяются ее карами. Каждая ступенька справа заканчивается кружком, указывающим значение аргу- мента, включаемого в данную ступеньку. На- пример, первая ступенька перекрывает значения до 0,15 включительно. Вторая ступенька начинается от значения 0,15 + (т. е. 0,150001) и продолжается до 0,35 включительно и т. д. Можно сказать, что промежуточные ступеньки иа рис. 3.5 «замкнуты» справа, но «открыты» слева. ШСКТ10Ч ■ »»• iKALttX jJJLiJL bUuJd Mi,*/! OPERATION »|lOJlllt2 111* CiUMCI fit/JL JA. IДН л A,B,C,tt,£f IS M 21 К ш I ш ■1 ,1 I I ' I ■ ) I I I I I I, ^r^ _L-L_ I. I ,|- I I I I l-'l I i I .(- f2f i5 I 0,15 0.35 0,60 0,62 1,0 Рас. Э.4. Другой способ определения функции рис. 3.3 10 т. Дх. шрейвер 145 Рис. 3.6. Графическая интерпретация функции рис. 3.3 Первая и последняя ступеньки на рис. 3.5 отличаются от промежуточных. Вместо того, чтобы быть открытой слева, первая ступенька слева замкнута. Иначе говоря, значение RN4^' равное 0,000000, включается в ступеньку. Аналогично, вместо того чтобы быть замкнутой справа, последняя ступенька справа открыта. Это происходит потому, что RN4 не может иметь значение 1.0. Последняя ступенька, следовательно, продолжается от 0,82 + до 1.0 — т. е. от 0,810001 до 0,999999 включительно. Тот факт, что ступеньки в дискретной функции GPSS замкнуты справа, означает, грубо говоря, что распределение, описываемое функцией K.ATHY, несколько отличается от распределения табл. 3.2. Различие возникает из-за первой и последней ступенек функции. Например, рассмотрим первую ступеньку рис. 3.5. Значение 2 получается тогда, когда RN4 находится в диапазоне от .000000 до .150000 включительно. Величина 2 возникает в 15,0001% случаях обращения к RN4 в процессе моделирования. Информация табл. 3.2 означает, что значение 2 должно возникать в 15% случаях. Таким образом, в отношении этого значения возникает неточность в определении функции примерно на один случай из 150 000. Такая же неточность возникает из-за последней ступеньки функции. Однако подобной неточности нет для промежуточных ступенек. (Читатель может самостоятельно убедиться в справедливости двух последних утверждений.) Каким же образом избавиться от этой небольшой неточности функции KATHY? Первой возможностью является задание пар для определения функции следующим образом: 149999.2/.349999, S/.59999, 8/.819999, 9/1,12». Однако это неудобно при перфорации карт следования функции и требует дополнительных усилий. Второй возможностью является задание ступенек дискретной функции, замкнутых слева и открытых справа. Тогда потребуются небольшие переделки интерпретатора, но
зато такое изменение не будет чувствительно для большинства пользователей. Третьей возможностью является некоторая модификация генераторов случайных чисел таким образом, чтобы они давали числа в интервале 0,000001 — 1,00000. Это также будет не заметно большинству пользователей. На практике большинство пользователей просто мирятся с этой небольшой неточностью. Так же будем поступать и мы в книге. По сравнению с другими видами неточностей, свойственных вероятностному моделированию, описанная неточность не так уж заметна. Рассмотрим, наконец, каким образом интерпретатор GPSS просматривает таблицы при определении значений дискретной функции. Заданные при определении функции пары просматриваются интерпретатором слева направо. Иначе говоря, интерпретатор проверяет, является ли аргумент функции по величине меньшим или равным значению X,, i'. = 1, 2 где X, является первым числом t'-й пары определения функции (см. рис. 3.2). Если условие выполняется, функция в качестве значения дает величину Y,. Понятно, что проверка заканчивается в среднем быстрее, если пользователь определит функцию таким образом, чтобы Xlt Хг, Хв и т. д. были как можно больше. (Это утверждение предполагает, что в качестве аргумента функции выступает генератор случайных чисел. В гл. 4 и в некоторых других местах показано, как в качестве аргумента задаются величины, отличные от значений генераторов.) Это, в свою очередь, означает, что можно благодаря удачному определению функций экономить время. В этом смысле функция KATHY на рис. 3.3 ие является эффективной. Функция была определена непосредственно по табл. 3.2, в которой значения упорядочены по возрастанию значений случайной переменной. Если информацию табл. 3.2 упорядочить в убывающем порядке значений относительной частоты и после этого заново определить функцию, то можно добиться более высокой эффективности использования ЭВМ. Если бы все это было проделано, то за картой KATHY стояла бы карта «с.25,8/.47,9/.67,5/.85,12/1,2». В этой книге мы не будем записывать дискретные функции в такой относительно эффективной форме. Всюду, как и в случае функции KATHY, на рис. 3.3, функции определены так, что второе число в парах, определяющих функции, возрастает. 3.6. Использование дискретных ункций в блоках GENERATE и DVANCE Предположим, что распределение интервалов приходов через определенный блок GENERATE не является равномерным. Для входов транзактов в модель через блок GENERATE пользователь в этом случае выполняет два действия. 1. Определяет функцию, описывающую соответствующее распределение интервалов времени. 2. В качестве операнда А блока GENERATE определяет функцию, а операнд В либо определяется по умолчанию, либо задается равным нулю. При необходимости вычислить в процессе моделирования очередное значение интервала прихода в блоке GENERATE интерпретатор определяет значение операнда А путем вычисления соответствующей функции. Это значение далее непосредственно используется в качестве очередного интервала времени. Все делается так, как если бы пользователь определил равномерное распределение в блоке GENERATE со значением среднего, равным значению функции, и с размахом, равным нулю. При нулевом значении размаха значение функции используется как бы детерминированным образом, однако, поскольку сами значения функции вычисляются некоторым случайным образом, значения интервалов времени также случайны. При этом распределение случайной величины определяется функцией. Способ определения функции в блоке зависит от того, как задано имя функции: в символическом или числовом виде. Если имя числовое, то ссылка на функцию записывается как FN/, где / — номер функции. Если имя символическое, ссылка на функцию записывается в виде FN$ имя. Например, ссылка на функцию 16 может быть записана в BWjeFN16. Сдру- гой стороны, ссылка на функцию с символическим именем KATHY осуществляется записью FN$KATHY. Отметим, что знак $ (знак доллара) находится между символами FN и самим символическим именем. Приведем пример использования функции в блоке GENERATE. Предположим, что в табл. 3.5 записаны интервалы времени между соседними моментами поступления заказов в распределительный центр. Транзакты должны символизировать заказы, а блок GENERATE используют для управления поступлениями Таблица 3.5. Пример случайной переменной, описывающей дискретные значения интервалов времени поступления Интерпалы поступления никизов. ч 2 3 4 5 Относительная частота 0,10 0.30 0.40 0,20 146
.лея.. 's|iOHi|i?Hjj.4Jrt|ujif"[S 1]и;.т:;|г|г«|.Ч|.ни»1аЫ|1о1лМл|и[»[1«1 I -t-1 -t- Рис З.6. Функция, используемая для получения случайных чисел по распределению табл. 3.6 этих заказов. Во-первых, необходимо использовать информацию табл. 3.5 для определения соответствующей функции. Табл. 3.5 повторена и дополнена в табл. 3.6, где указаны значения суммарной частоты. На рис. 3.6 показано определение функции по информации табл. 3.6. Функция имеет имя ТВО. Таблица 3.6. Функция распределения мучайной переменное, приведенной в табл. 3.5 Интервалы поступления заказов, ч 2 3 4 5 Относительная частота 0,10 0,30 0,40 0,20 Суммарная частота •0,10 0.40 0,80 1.00 В качестве источника аргументов функции выбран седьмой генератор случайных чисел. На рис. 3.7 изображен блок GENERATE, через который транзакты, представляющие заказы, входят в модель. Функция ТВО записана в качестве операнда А. По умолчанию определено нулевое значение операнда В. Распределение интервалов поступления заказов соответствует заданным в табл. 3.5. Процедура, которую мы только что здесь описали для использования функций в блоках GENERATE, без каких-либо измеиеиий может £ыть использована для блоков ADVANCE. Предположим, что длительность операции в каком-то цехе производственной линии описана первым и вторым столбцами табл. 3.7. Соответствующие им значения функции распределения показаны в третьем столбце таблицы. На рис. 3.8 показано определение функции по информации табл. 3.7. Функция имеет имя STYME. На рис. 3.9 изображен блок ADVANCE, в котором транзакт задерживается на время обслуживания, моделируя тем самым LOCAJIOW i I I]«|SU 'ОЗиЛЛ. • 9 luiiia u 14 UJttllT I 'AA&tL. ЫшьАлАшЬД « B,C,P.E,f »]»!ll[22J13]}4J21JK!r2l ПК 31 UU MBit RN3.A61 i \ i-\ » i i y,i,i,/,.n„>/i,.,i,a Рис. З.8. Функция, используемая для получения случайных чисел по распределению табл. 3.7 Таблица 3.7. Пример дискретного распределения' случайной переменной — времени обслуживания Время обслуживания, мин 5 6 7 Относительная частота 0.05 0,12 0,28 Суммарная чистота 0.05 0,17 0.45 Время обслуживания, мин 8 9 10 Относительная частота 0,30 0,18 0.07 Суммарная частота 0,75 0,93 1.00 интервал времени, требуемый для выполнения необходимой операции. Когда транзакт входит в блок ADVANCE, вычисляется значение функции STYME. Значение, получаемое из RN3, используется при просмотре таблицы, определяемой функцией, н рассчитывается некоторое значение функции. Далее используется это значение «плюс или минус ноль» в качестве времени пребывания транзакта в блоке ADVANCE. При вычислении функции в блоках GENERATE сама функция должна определяться в колоде перфокарт модели перед блоком GENERATE. Это необходимо по следующим соображениям. В процессе фазы ввода интепретатор находит карты GENERATE и сразу же разыгрывает значение по заданному распределению интервалов времени приходов для планирования первого входа траизакта в блок. Если карты, определяющие функцию, еще ие введены, то, естественно, возникает ошибка. Это может случиться, когда определяющие функция карты находятся в колоде после карты GENERATE. Следовательно, как показывает опыт, все функции удобно определять до первого блока модели. Именно так мы и будем далее поступать. Вообще говоря, в этом нет необходимости при использовании функции в блоках ADVANCE. Эти функции не могут GENERATE FN$TBO ADVANCE FNSSTYMC Рас. 3.7. Использование функции, приведенной иа рис, 3.6, i блоке GENERATE Рис. 3.9. Использование функции рис. 3.8 в блохе ADVANCE 10* 147
Таблица ЗА.1. Распределение времени сборки примера моделирования ЗА Время сборки, мин Относительная частота 25 0,01 26 0,03 27 0,05 28 0,1 29 0,18 30 0,26 31 0,18 32 0,10 33 0,05 34 0,08 35 0,01 понадобиться интерпретатору до конца фазы ввода. Понятно, что описание функции в этом случае достаточно расположить где-нибудь до карты START. 3.7. Пример моделирования ЗА. Второе обращение к примеру 2D 1. Постановка задачи. В примере моделирования 2D рассматривали систему, в которой собирали детали. Сборщики циклически повторяли следующие операции. 1. Сборка очередной детали. 2. Ожидание возможности занять печь при дисциплине выборки из очереди «первым пришел — первым обслужен». 3. Использование печи для обжига детали. 4. Возврат в п. 1. В примере моделирования 2D время, необходимое для сборки детали, и время использования печи были распределены равномерно, соответственно 30 :*= 5 и 8 =£ 2 мин. Предположим теперь, что вместо равномерного распределения время сборки и время использования печи распределены в соответствии со значениями табл. ЗА.1 и ЗА.2. Эти распределения являются симметричными с центрами 30 и 8 соответственно. В результате средние значения времени сборки и использования печи совпадают со средними значениями примера моделирования 2D. При внимательном рассмотрении можно заметить, что стандартные отклонения при распределении в соответствии с табл. ЗАЛ и ЗА.2 меньше, чем при равномерном. Необходимо таким образом изменить модель примера 2D, чтобы можно было учесть новые Таблица ЗА.2. Распределение времени печи примера моделирования ЗА Время, использования печи, инн Относительная частота 6 0,05 7 0,25 использования 8 0,40 9 0,25 10 0,05 распределения времен сборки и использования печи. Затем необходимо провести моделирование на интервале 40-часовой рабочей недели, предполагая при этом, что ни между рабочими днями, ни в самом рабочем дне нет перерывов. Сделайте все это для случаев работы четырех, пяти и шести сборщиков. Сопоставьте поведение обеих систем и число сборщиков, при котором на интервале моделирования выгода максимальна. 2. Метод построения модели. Логика моделирования, принятая в модели примера 2D, остается в силе. Изменения, требуемые для модели примера 2D, заключаются только в определении функций для описания распределений табл. ЗА.1 и ЗА.2 и замене операндов блоков «ADVANCE 30,5» и «ADVANCE 8,2» операндами А, ссылающимися на соответствующие функции, и указания нуля в качестве о№ ранда В (в явном виде или по умолчанию). Табл. ЗА.З повторяет информацию табл. ЗАЛ и ЗА.2 и содержит суммарные частоты этих распределений. На рис. 3.A.I показаны перфокарты, описывающие распределения посредством определения функций с символическими' именами ASSEM и FIRE соответственно. Если в колоду карт модели примера 2D вставить карты рис. ЗА.1, а блоки «ADVANCE 30,5» и «ADVANCE 8,2» заменить на ADVANCE i » i «|» i .l&MJLM JflJL*A/ ■ » '01 lli.MU TV»! <|. EiUMCXLQM iOA,.2,AjLufli».u]2Jj/i .^QbUASlZ JF.I.bbL EAMQUAtk-L±..RN1 3^j./>.'i.ju.,a>\ A.B.C.D.E * h|m|j [«{мЫпкьЫм/* «> j. »|!)|><|»[)«h'tM№<0!<y.yj|4yjUcUr «i I | "' | I RN1.,J)LL.L-i_^.i j.i . _ j i ._, i_. j | . . . . J 5.!?,/ i^. ; : . I . l l- hb.JZMJi..,3.7^ruJ^i,.iM. [_. Li. 9,9КЛАи.\.Л% i . .J_i_i._i_i i ! . . i_j_jJ III I I I I I ■' I I 1- 1 l I I i | I . I I i , j_ J.-L.J.-1—i jm; : . '' ' I i.l Ll i Jll I I I j i . i J i_i i i i \ j j o_i_ i ло Рис. ЗА.1. Определение функций по распределениям табл. ЗА.1 н ЗА.2
Таблица ЗА.З. Суммарные вероятности щи времени оборки к времени использования печк • примере моделирования ЗА (а) Время сборки Время сборки. мня 25 26 27 28 20 30 31 32 33 34 35 Относительная частота 0,01 0,03 0,05 0,10 0,18 0,26 0,18 0,10 0,05 0,03 0,01 Суммарная частота 0,01 0,04 0,09 0,19 0,37 0,63 0,81 0,91 0,96 0,99 1,00 (б) Время Время использования печн, мнн 6 7 8 9 10 использования печн Относительная частота 0,05 0,25 0,40 0,25 0,05 Суммарная частота 0,05 0,30 0,70 0,95 1,00 FN$ ASSEM и ADVANCE FN$ FIRE соответственно, то тем самым все изменения будут закончены. 47 Блок-схема. 3. Таблица определений. Единица времени: 1 мин. Таблица ЗА.4. Таблица примера моделирования 3. [елей ни Элементы QPSS Транзакты: 1-й сегмент модели 2-й сегмент модели Приборы: OVEN Функция: ASSEM FIRE Интерпретация Сборщики Транзакт-таймер Печь Распределение времени сбор- кк Распределение времени нс- польэоаании печн (KEY) ОПРЕДЕЛЕНИЕ ЧЕТЫРЕХ СБОРЩИКОВ СБОРКА СЛЕДУЮЩЕЙ ДЕТАЛИ ЗАНЯТИЕ ПЕЧИ ИСПОЛЬЗОВАНИЕ ПЕЧИ ОСВОБОЖДЕНИЕ ПЕЧИ ПЕРЕХОД К* СЛЕДУЮЩЕЙ СБОРКЕ GENERATE 1 2400 1 UE.NE TERMINATE U3 2-Й СЕГМЕНТ МОДЕЛИ (СЕГМЕНТ ТАЙМЕРА) 1-Й 6ЕГМЕНТ МОДЕЛИ Рас ЗА.2. Блок-схема примера моделирования ЗА 149
5. Распечатка программы. BLOCK NUMBER •LOC OPERATION SIMULATE A.B.C.O.E.F.G COMMENTS 7 8 FUNCTION OEFINITION(S) ASSEM FUNCTION BNI.Dll ASSEMBLY-TIME DISTRIBUTION О I.25/.0*.26/.09,27/. 19■28/.3 7.29/.63,30 BI. 31/..9 I. 32/.96. 33/. 99. J*/I .35 FIRE FUNCTION RNI.D5 FIRING-TIME DISTRIBUTION OS.«>/.3,7/.7,6/.95,9/1, 10 MOOEL SEGMENT I PROVIDE A ASSEMBLERS ASSEMBLE NEXT WIDGET CAPTURE THE OVEN USE THE OVEN FREE THE OVEN GO DO THE NEXT ASSEMBLY KEY BACK GENERATE ADVANCE SEIZE ADVANCE RELEASE TRANSFER # t • A FNtASSE CIVEN FN»FIRE OVEN .BACK MOOEL SEGMENT 2 GENERATE TERMINATE 2*00 1 TIMER ARRIVES AFTERS 5 DAYS SHUT OFF THE RUN CONTROL CARDS AND BLOCK OPERAND RE-OEF IN I T I ONS START I I KEY GENERATE ...5 MULTIPLE DEFINITION OF SYMBOL IN CLEAR START 1 I KEY GENERATE ,,,6 MULTIPLE DEFINITION OF SYMBOL IN CLEAR START I ENO START THE 1ST RUN RE-CONFIGURE FOR 2ND RUN ABUVt CARO CLEAR FOR 2ND RUN START THE 2ND RUN RE-CONFIGURE FOR 3RD RUN ABOVE CARD CLEAR FOR 3R0 RUN START THE 3RD RUN RETURN CONTROL TO OPERATING SYSTEM Рис ЗА.З. Распечатка программы примера моделирования ЗА 6. Выходные данные. CARO NUMBER 1 2 3 А ь 6 7 8 9 10 II 12 13 I* 15 16 1 7 I 8 19 20 ?1 22 23 2* гъ 26 27 28 29 30 31 32 J3 ЗА FACILITY OVEN AVER АСЕ UTILIZATION .8 1? NUMHtR ENTHItS 2A3 AVERAUt TIME/TRAN 8.02B SEIZING TRANS. NO. A PREEMPTING TRANS. NO. ») FACILITY OVEN AVERAGE UTILIZATION .959 NUMBER ENTRIES 291 AVERAGt TIME/TRAN T.9IA SEIZING TRAN5. NO. 6 PREEMPT INC TRANS. NO. FACILITY OVEN AVERAGE' UTILIZATION .980 NUMBER ENTRIES 297 AVERAGE TIME/TRAN 7.989- SEIZING TRANS. NO. 6 PREEMPTING TRANS. NO. Рис ЗА.4. Часть распечатки выходных данных примера моделирования ЗА. Сгатнстика использования печи для случаев с четырьмя (а), пятью (б) и шестью («) рабочими
7. Обсуждение. Использование модели. В примере, приведенном на рис. ЗА.З, изучаются три различные конфигурации системы, моделируемые водном этапе. Результаты моделирования. (На ЭВМ IBM 360/67 время моделирования равнялось 4,0 с). Из рис. ЗА.4 следует, что для случаев моделирования работы четырех, пяти и шести сборщиков число_обработанных деталей равняется 242, 290 и 296 соответственно, причем работа моделировалась в течение 40-часовой рабочей недели (в это число не включены те детали, которые находятся в печи в момент завершения моделирования). Числа 242, 290 н 296 следует сопоставить с полученными в примере 2D (рис. 2D.3) числами 235, 289 и 294 соответственно. Как и следовало ожидать, в результате изменения вида распределения производительность несколько увеличилась. Меньшее значение стандартного отклонения для сборки н времени использования ведет к относительно более хорошей синхронности между шагом сборки деталей и шагом обжига. Если бы не существовало колебаний значений этих времен, то систему можно было бы сделать в точности синхронной. Например, представим, что время сборки и время обжига в точности равны 30 и 8 мин соответственно. При работе четырех рабочих легко осуществить синхронизацию использования печи таким образом, чтобы исключить время ожидания сборщиков. После того, как сборщик воспользуется печью, пройдет 30 мин, прежде чем она ему снова понадобится. Тем временем три других сборщика смогут воспользоваться печыо в течение 8 мин каждый, освободив печь к тому времени, когда оиа понадобится первому сборщику. При таких идеальных обстоятельствах сборщик может изготовить около 12,6 деталей в день [480/(30 + т8)= 12,6 + ]. Четыре сборщика способны изготовить 252 детали в течение 40-часовой рабочей недели- Из-за стохастического характера процесса в системе производится на 10—20 деталей меньше. Несмотря на изменение вида распределения, оптимальным числом сборщикон остается число пять. Прибыль для случаев работы четырех, пяти и шести сборщиков равна 210, 300 и 180 долларам соответственно. Прибыль в случае работы пяти сборщиков в примере моделирования 2D была равна 245 долларам. Следовательно, изменение закона распределения интервалов времени увеличило прибыль более чем на 20%. 3.8. Упражнения l.a). Как называются восемь генераторов равномерно распределенных чисел в GPSS? б). В каких трех различных случаях интерпретатор GPSS может потребовать равномерно распределенные случайные числа для собственных нужд? Какой из генераторов случайных чисел он использует в этом случае? в). Опишите метод розыгрыша интерпретатором случайного числа • при равномерном распределении, используя при этом операнды А и В блоков GENERATE и ADVANCE, г). При розыгрыше случайного числа из равномерного распределения А ^= В полученное значение должно быть целой частью выражения А — В + RN1 (2В + -+- 1). Почему берется именно целая часть, а не само значение? д). Что такое дискретная случайная величина? Приведите несколько примеров, е). Проанализируйте следующее утверждение: «Дискретная случайная величина может иметь только целые значения». ж). Опишите метод розыгрыша интерпретатором случайных чисел при использовании дискретных неравномерных распределений, з). Каков диапазон значений RN/ при его использовании как источника аргументов функции? Каково наименьшее возможное число? Каково наибольшее? и). Какой смысл приписывается первому числу из пары чисел, используемых при определении функции? к). Дайте графическую интерпретацию функции, определенной на рис. 3.6. л). Почему определение функции должно предшествовать в колоде карт блоку GENERATE, из которого есть ссылка на данную функцию? м). Напишите, блок GENERATE, в котором FN3 использовалась бы в качестве операнда А. Операнд В должен быть задан по умолчанию, н). Напишите блок GENERATE, в котором функция SYMBL использовалась бы в качестве операнда А. Операнд В должен быть задан по умолчанию, о). Напишите блок ADVANCE, в котором в качестве операнда А использовалась бы функция JOE23. Операнд В по-прежнему должен быть задан по умолчанию. п). Почему в блоке задержки ADVANCE FNSCPU значение функции CPU, получаемое прн моделировании, не модифицируется для получения времени обслуживания? р). К функции ТВО, изображенной на рис. 3.6, происходит первое обращение. Какой ответ она выдает? Предположите, что последовательность случайных чи- 151
сел, выдаваемая генератором, соответствует табл. 3.1. Какие еще предположения следует сделать, прежде чем ответить на поставленный вопрос? с). Какое значение будет получено при шестом обращении к функции STYME, изображенной на рис. 3.8? Снова следует считать, что последовательность случайных чисел должна быть взята из табл. 3.1. Зависит ли ваш ответ от каких-либо дополнительных предположений? т). Сколько обращений к генератору случайных чисел происходит при одном выполнении блока GENERATE FNSTB0.2? Какой при этом используется генератор? (Функция ТВО описана на рис. 3.6.) 2. Запишите определение дискретной функции, которую можно было бы использовать для розыгрыша случайных чисел, принимающих значения 3, 0, 5, 9 и 14 с вероятностями 0,1; 0,05; 0,15; 0,30 и 0,40 соответственно. Функция должна иметь символическое имя DRAW и в качестве аргумента использовать генератор RN7. Можно ли с помощью этой функции задавать распределение интервалов приходов или времени обслуживания? Почему да или почему нет? 3. Интервалы между последовательными приходами кораблей в порт распределены в соответствии со значением табл. УЗ. Таблица УЗ Интервалы врекени прихода, ч 2 3 4 Относ ителы ная частота 0.06 0,09 0.17 Иитервалы вреигнн прихода, ч 5 . 6 7 Относительная частота 0,28 0,24 0,16 а). Пусть единицей времени в модели будет 1 ч. Задайте функцию с именем SHIPS для розыгрыша интервалов из этого распределения. Покажите, каким образом эту функцию можно использовать в блоке GENERATE, если приход корабля в порт моделируется входом транз- акта в модель через этот блок. Какой генератор случайных чисел вы использовали для задания аргументов? Пусть последовательность случайных чисел, выдаваемых генератором, совпадает со значениями, приведенными в табл. 3.1. Ответьте, какие значения будут получены от вашей функции первыми? Каково будет первое значение, полученное при обращении к функции, если использовать какой-либо другой генератор случайных чисел? б). Укажите, каким образом можно пере* определить функцию, заданную в п. а, если единица времени в модели будет заменена на 1 мин. 4. Время, необходимое на ремонт машины, распределено в соответствии со значениями табл. У4. Таблица У4 Время ремонта, мин 10 20 30 Отиоснтель- ьая частота 0,15 0,20 0.30 Врскя ремонта, ИНН 40 50 Относительная частота 0.25 0,10 а). Пусть единицей времени в модели является 1 мин. Определите функцию (номер ее должен быть равен шести), которая описывала бы это распределение. Затем покажите, как эту функцию следует использовать в блоке ADVANCE, если машина моделируется транз- актом, находящимся в этом блоке в течение времени ремонта. Какой генератор случайных чисел' выл выбрали для задания аргумента функции? б). Может ли функция, заданная в п. а, принимать значения, равные 12, 15, 23, 37 и т. д.? Если нет, то это значит, что время ремонта никогда не будет равным 12, 15, 23 и 37 мии и т. д. Продумайте использование функции в терминах ее расширения -с тем, чтобы она могла быть использована при моделировании реальных систем. 5. В параграфе 2.35 в упражнении 4 была описана мастерская, в которой единственную машину используют для полировки деталей. Для удобства ниже повторяют все шаги, связанные с полировкой. В каждом шаге указано время на его выполнение. 1. Извлечь деталь (12 ± 3 мин). 2. Установить ее в полировочной машине (10 =ь 4 мин). 3. Фаза 1 полировки (80 =£ 20 мин). 4. Поворот детали в машине для продолжения полировки (15 ± 7 мин). 5. Фаза 2 полировки (110 2: 30 мин). 6. Достать отполированную деталь из машины (10 =3= 4 мин). 7. Установить деталь на прежнее место и перейти к этапу 1,12 =t 3 мин. а). Теперь предположим, что вместо равномерного распределения на замкнутом интервале целых значений от 9 до 15 время, требуемое для извлечения детали, распределено в соответствии со значениями табл. У5. 1) вычислите среднее время извлечения по распределению табл. У5 и сравните ее со старым значением среднего, т. е. с 12; . , 152
Таблица Уб Время, мни 9 10 II 12 Относительная частота Время, мни 0,06 0,14 0,27 0.25 13 14 15 Относительная частота 0,16 0,09 0,03 2) вычислите стандартное отклонение по распределению табл. У5 и сравните его со старым значением стандартного отклонения для равномерного распределения на заданном интервале для целых значений 12 =*= 3 мин; 3) запишите дискретную функцию, называемую FETCH, которая задавала бы распределение в соответствии со значениями табл. У5; 4) дайте графическую интерпретацию функции FETCH. б). Обратимся теперь к шагу 2. Отметим, что время, требуемое для установки детали в полировочной машине, равно 10±4 мин. Замените это равномерное распределение на любое неравномерное по своему усмотрению. Ограничьте интервалы времени значениями 6 и 14. После этого выполните задания 1—4 п. а упражнения, но для нового распределения. в). Перепишите модель упражнения 4 параграфа 2.35, заменив распределение интервалов времени извлечения детали и ее установки распределениями, заданными в пп. а и б соответственно. Все остальные интервалы времени должны остаться равномерными. Выполните моделирование при условиях, заданных в упражнении 4 параграфа 2.35. Внесли ли заметные изменения в работу модели распределения, заданные для шагов 1 и 2? В частности, изменилось ли время ожидания оператора машины освобождения крана? Если да, то как вы объясните это изменение в терминах изменения распределений для шагов 1 и 2? 3.9. Значения случайных переменных. Целые и дробные значения До сих пор были рассмотрены два вида случайных переменных. Это интервалы времени прихода требований и времени их обслуживания. В моделях GPSS используют только целые значения времен, поскольку таймер интерпретатора работает только с целыми значениями. При розыгрыше чисел в соответствии с распределениями значений времени, последние должны принимать целые значения. Посмотрим, например, каким образом интерпретатор разыгрывает значения в случае равномерного распределения по значениям операндов А и В блоков GENERATE и ADVANCE. Он использует для расчетов генератор RN1, после чего дробная часть отбрасывается. Результатом является целая часть. Округление не осуществляется. Интерпретатор выполняет такую же процедуру и для функций, когда последние используют для расчета интервалов времени прихода и времени обслуживания. Во всех приведенных выше примерах случайные переменные были описаны так, что они получали только целые значения. Но в этом нет необходимости. Рассмотрим пример, представленный на рис. 3.10, где показана функция, которая принимает не целые значения. Эту функцию с успехом можно применить в качестве операнда А блоков ADVANCE и GENERATE. Очень важно при этом понимать, какие значения будут использованы этими блоками в данном случае. В общем случае получаемые значения будут отличаться от значении, заданных в функции, поскольку по-прежнему только целая часть может быть использована в GPSS в качестве значения времени. Предположим, что мы применяем функцию, показанную на рнс. 3.10, в блоке GENERATE, приведенном на рис. 3.11. В табл. 3.8 записаны используемые значения функции и соответствующие им относительные частоты. Для каждого из значений таблицы в третьем столбце показаны те значения, которые будут использованы Таблица 3.8. Значения интервалов времени, используемые в блоке GENERATE (см. рнс 3.11) Значение функции I 1.9 2.6 ш 4,зв 5 5.6 Относительная частота 0,07 0,15 0,24 0.21 0,19 0,14 Используемое зиаченне ! ) 2 4 ел ел Относительная частота используемого значения 0,22 0,24 0,21 0,33 Ряс 3.10. Дискретная функция GPSS, получающая дробные значения UOCAT10N l^LtAJ. "iollifuliltu <i[*l>'T I- JtA«li.± I I I ■ ' I I ■ I I «St IatibW»1i»l.4U»Mlii|»}ij[MnUstitiVil\'r(«oI«i[4jUil«UJ jfti/i -ifc7i ti4i-,!liA ■ |1i 11 Si-ifc—l-i. I I I I ' I I I I a-t 153
GENERATE ^ FNSMIXEO Таблица З.9. Число различных значений, яоторые может принять случайная величина в зависимости от точности, с которой заданы значения функции Рис. 3.11. Использование функции рис. 3.10 в блоке GENERATE в блоке GENERATE на рис. 3.11. Сравнение значений второго и третьего столбцов табл. 3.8 показывает, что интервал поступления.^авный ], будет выпадать в 22% случаев, 2 в 2496 случаев, 4 в 21 % случаев, а 5 в 33% случаев. Как показано в табл. 3.8, тот факт, что используется только целая часть значений функции, означает, что фактические величины интервалов поступления и времени обслуживания могут в значительной степени отличаться от тех величин, которые определены в функции. Это различие может быть неприемлемым. Например, в случае использования функции, приведенной на рис. 3.10 при условии, что единицей времени задан 1 ч, фактическое распределение интервалов времени является очень плохой аппроксимацией заданного. Проблему можно в значительной степени упростить, если изменить значение единицы времени в модели и переопределить соответствующим образом функцию. При использовании рис. 3.10 значение единицы времени должно быть изменено с 1 ч на значение 0,1 ч. После этого функция MIXED должна быть переопределена, причем в 10 раз меняется второе число в каждой паре значений функции. Переопределенная таким образом функция может теперь быть использована для описания интервалов времени прихода требований и времени их обслуживания. Интерпретатор уже не будет отбрасывать дробную часть. 3.10. Непрерывные случайные переменные, рассматриваемые как дискретные В параграфе 3.4 указано, что дискретные случайные переменные по определению могут иметь только фиксированное число значений. В противоположность этому непрерывные случайные переменные могут иметь неограниченное число различных значений. Например, время между последовательными приходами клиентов к окошку кассы может иметь неограниченное число значений, если кто-либо попробует зафиксировать это время с достаточно высокой точностью. Предположим, что время прихода к окошку кассы находится в интервале 15 мин. В табл. 3.9 показано число различных значений случайной переменной, описывающей иитер- Используемая единица времени, ыин 1,0 0.1 0.01 0,001 0,0001 Число различных чначоннй от 0 (включительно) до 15 15 150 1 500 15 000 150 000 валы приходов в зависимости от точности, с которой измеряется время. Если единица времени достаточно мала, то число различных значений становится большим и в пределе является бесконечным. Строго говоря, интервалы времени прихода описываются непрерывной переменной. То же самое можно сказать относительно времени обслуживания. До сих пор эти две переменные были рассмотрены как дискретные, принимающие конечное число значений. В действительности для наших целей достаточно, чтобы все случайные переменные имели конечное число конкретных значений. Нет необходимости в тщательном определении значений этих случайных переменных за исключением случаев, когда необходимо сделать расчет с высокой степенью точности. Нет необходимости в более точном задании этих переменных, чем того требует реальная ситуация. Таким образом, делается вполне возможной дискретизация непрерывных распределений. После дискретизации они могут быть определены в GPSS с помощью дискретных функций. Предположим в качестве примера, что конкретная переменная для интервалов времени является равномерно распределенной и непрерывной в диапазоне 2—6 мин (значение 6 не включается). Измеренная с шестью знаками после запятой, эта переменная, например, в виде 4,12274; 2,00783 и 3,57392 может быть представлена в модели. Поскольку интервал, как определено выше, включает значение 2, но не включает значения 6, наименьшим и наибольшим возможными значениями являются 2,00000 и 5,99999 соответственно. Однако, если за единицу времени в модели принята 1 мин и используется только целая часть фактического шестизначного значения интервала времени, то целесообразно его задавать значениями 2, 3, 4 и 5. В табл. 3.10 записаны относительные и суммарные частоты для этих значений переменной. На рис. 3.12 показано, как записывается такая функция в GPSS для случайной переменной после ее дискретизации. Функция получила
LOCil'OM I I iJYJ.KTi 1AL- JULJU iT9 o'iuTJii' « ii.nWe FJiMCTlbOJi .1.,_ KHX. Л4 Д..Д/ ■ 7Дщ4>/.1 i i i ' i i ■ ■ * a,c,D,£.F •«[арГрг |г >5Лгуь|г'|!1!.'«1сТ5||?Л[5Г»[йГ Д. -н- Рис 3.12. Дискретная функция, составленная по информации, приведенной в табл. ЗЛО Таблица 3.10. Дискретный вариант непрерывной случайной величины Интервал времени приходя, ими 2 3 4 5 Относительная частота 0,25 0.25 0,25 0,25 Суммарная частота 0,25 0,50 0,75 1,00 имя IAT (ИВП), что означает интервал времени прихода. Следует отметить при этом, что равномерное распределение в диапазоне 2—5 включительно не может быть задано непосредственно с помощью операндов А и В блока GENERATE. Перечень 2, 3, 4, 5 содержит четное число элементов, в то время как распределение «А=£В», где А и В целые, всегда содержит нечетное число элементов. 3,11. Определение непрерывных функций В параграфе 3.10 предполагали, что значение непрерывной случайной величины может быть дискретизировано и в такой форме задано bGPSS. Примером такого определения является запись табл. 3.10. Однако так поступать вовсе необязательно. В действительности очень непрактично дискретизировать некоторую важную для нас случайную величину. В таких случаях в GPSS можно определить непрерывные функции. Ниже рассмотрим разницу в вычислительном смысле между дискретной и непрерывной функциями. Затем опишем, в чем заключается разница между ними в смысле определения и, наконец, приведем несколько примеров элементарных непрерывных функций. В начальной фазе непрерывная функция вычисляется так же, как н дискретная. При обращении к функции разыгрывается случайное число, которое далее используется как аргумент функции. Затем просматривается таблица для определения интервала значений суммарной вероятности, иа который выпало случайное число. Если функция была определена как дискретная, берут второй элемент LOCATION liihYi* 1 О'ЕЯДГЮ* fls'ol i|ij! ]li«|t>Uj rlia 1 FJWC T.LON _ . •*rr^m-!L^"l IM2...CJ. -_ , . . 11., : ' i i Рис. 3.13. Непрерывная, заданная двумя точками функция, используемая для розыгрыша случайных чисел в соответствии с непрерывным равномерным распределением соответствующей пары, и его значение считается значением функции. Если функция определена как непрерывная, выполняется линейная интерполяция для пары точек, находящихся по краям того интервала значений суммарной вероятности, на который указало случайное число, являющееся аргументом. Результат интерполяции и является значением функции. Если выразить это графически, то в то время, как дискретная функция GPSS состоит из горизонтальных ступеней (см. рис. 3.5), непрерывная функция в GPSS состоит из прямых отрезков, представляя собой ломаную линию. Непрерывная функция определяется с помощью символа С (в отличие от символа D для дискретных функций), записываемого в качестве первого символа операнда В в карте определения функции. Таким образом, за некоторым исключением, дискретная и непрерывная функции задаются одинаковым способом. Ввиду того, что непрерывная функция задается с помощью линейной интерполяции, для всех точек на одном интервале значений суммарной частоты существует одинаковая вероятность их использования. Это делает процедуру розыгрыша случайной величины при непрерывном равномерном распределении чрезвычайно простой. Предположим, что некоторая случайная переменная распределена равномерно и является непрерывной на интервале от 2 до 6. Значение 2 включено в интервал, а 6 — нет. Вероятность того, что значение случайной переменной меньше 2, равна нулю, а вероятность того, что она меньше 6, равна единице. Эти два значения суммарной вероятности используют для определения непрерывной функции (рис. 3.13). Графическая интерпретация функции приведена на рис. 3.14. Отметим, что график представляет собой прямую, соединяющую две точки, определяемые парами чисел 0, 2 и 1, 6. При обращении к функции используется генератор RN2, значения которого применяют при интерполяции. Например, если значением RN2 является 0,650000, то значением функции будет 4,60000. Преобразование 0,65 в 4,6 изображено графически на рис. 3.14. Если значение RN2 является наименьшим из возможных (0,000000), то 155
5 I RH2 0.65 ЬО Рис. 3.14. Графическая интерпретация функции, приведенной на рис. 3.13 значением функции будет число 2. Если значение RN2 является наибольшим из возможных (0,999999), значением функции будет 5,99999 (в случае записи с точностью до шести знаков). Предположим, что функция на рис. 3.13 используется в качестве операнда А блока GENERATE (рис. 3.15). Хотя значение функ- GEN6RATE ^FNSGOOO Рнс. 3.15. Использование функции рис. 3.13 в GENERATE блоке ции распределено равномерно между точками 2 и 6 значениями интервалов поступления требований будут целые части функции. Фактические значения интервалов времени также распределены равномерно и получают значения от 2 до 5 включительно (рис. 3.16). Из рис. 3.16 следует, что фактическими значениями интервалов времени будут числа 2, 3, 4 и 5. Диапа- 7 Рнс 3.16. График, показывающий интервалы, соответствующие значениям времеви прихода, равным 2, 3, 4 и 5, получаемым в блоке GENERATE, рас 3.15 'jffii! .JAM, iLa&qJ OPtKAUON l«,B.CO.t,P W 7U|ioiii|i!|')|>«|i5|'6|l>l>« I fiUHCT.LOiK i&76. itlnlii jnVib«|H|a{r>j»|!».jo ulujuixiMiM ■***.-C,2i j_L 1 ' ■ ■ ' ■ 1 Рис. 3-17. Непрерывная функции, используемая для розыгрыша чисел из выборки равномерно распределенных целых чисел зоны значений RN2, в результате попадания в которые получаются значения функции 2, 3, 4 и 5, приведены в табл. 3.11. Например, если значением RN2 является число от 0,0 до 0,25 — (т. е. 0,25 не включено), то это приводит к тому, что значением функции является число от 2 до 3—. Целой частью такого значения является число 2. Это происходит в 25% случаев при длительном моделировании. Подобным же образом дело обстоит для значений, имеющих целой частью числа 3, 4 и 5. Таблица 3.JJ. Точные граничные значения RN 2 на интервалах, изображенных графически на рис 3.16 Целая часть значения функции рнс. 3.16 2 3 4 5 Диапазон значений RN'2 0,0-f-0.2S— 0,25-*-0,50— 0,50+0,76— 0,75-М .00— Несмотря на то, что значением второй пары, использованной при определении функции, является 1, 6, функция никогда не получает значения 6. Генератор RN2 никогда не получает значения, большего чем 0,999999. При этом значении RN2 значение функции равно 5,99999. Таким образом, наибольшей целой частью получаемого значения является число 5. Приведенный выше пример показывает метод использования непрерывной, состоящей из двух точек функции в блоках GENERATE и ADVANCE для розыгрыша значений случайных чисел из выборки равномерно распределенных целых чисел. Преимущество такого подхода может быть наглядно пояснено. Предположим, что значения интервалов времени распределены равномерно в диапазоне от 200 до 375 с включительно. На рис. 3.17 изображена непрерывная, описанная двумя точками функция, используемая для розыгрыша чисел из указанной выборки. (Заметьте, что вторым числом второй пары чисел является 376, а не 375.) Если бы мы захотели воспользоваться для достижения той же цели дискретной функцией, то пришлось бы рассчитать 176 значений суммарных частот и задать 176 пар для определения функ- 156
ции. Более того, время, необходимое для просмотра таблицы, состоящей из 176 позиций, было бы значительно большим, чем при линейной интерполяции между двумя заданными точками. Описанный метод будет нами использован далее в тех случаях, когда необходимо в интерпретаторе использовать генератор, отличный от RN1, при розыгрыше чисел из выборки равномерно распределенных случайных целых чисел. 3.12. Интерпретация статистических данных в терминах непрерывных функций При моделировании систем вначале обычно неизвестны распределения интервалов времени между событиями. Если система уже существует, можно произвести необходимые измерения, результаты которых позволяют оценить эти распределения. Полученные данные должны быть введены в соответствующую модель системы. Это можно сделать путем определения функций, на которые могут ссылаться различные блоки модели. Предположим, например, что в результате обследования работы банка измеренное время, требуемое кассиру для обслуживания клиентов, записано в табл. 3.12, причем измерения велн с интервалами в 15 с (здесь мы не будем объяснять, почему измерения вели именно таким образом). Первый элемент таблицы показывает, что ни один клиент не был обслужен быстрее, чем за 15 с. Второй элемент таблицы показывает, что 7% обслуживании были завершены быстрее, чем за 30 с, но медленнее, чем за 15 с (интервал от 15 до 30 с). И так далее, до тех пор, пока не дойдем до последнего элемента, показывающего, что 8% клиентов было обслужено за период от 75 до 90 с. Предположим теперь, что эти данные необходимо использовать при моделировании, причем единицей времени в модели должна быть 1 с, и, следовательно, время обслуживания должно быть представлено с точностью до 1 с. Если более точная информация отсутствует, удобно предположить, что в каждом диапазоне в 15 с значение времени обслуживания равновероятно. Это означает, что для определения непрерывной функции (функции распределения времени обслуживания) можно использовать табл. 3.12. Таблица 3.12. Ствтнстнка времени обслуживания у банковского окошка Интервал времени обслуживания, с Менее 15 15-5-30— ЗО-г-45— 45-5-60— 60-*-75— 75-5-90- Отяоснтельнаи частота попадания времени служноання в i 0,00 0,07 0,25 0,41 0,19 0,08 оо- штсраал 0,00 0,07 0,32 0,73 0,92 1,00 Функция, соответствующая табл. 3.12, показана на рис. 3.18. Первая пара чисел функции «0.0,15» показывает, что вероятность того, что обслуживание длится меньше 15 с, равна нулю. Вторая пара чисел указывает, что с вероятностью 0,07 время обслуживания меньше, чем 30 с. Поясним это утверждение. Когда значение аргумента функции RN2 равно 0,070000 или меньше, интерпретатор выполняет линейную интерполяцию между значениями времени обслуживания 15 и 30 с и определяет значение функции. Если RN2 в точности равно 0,070000, значением функции будет 30. Если значение RN2 равно 0,069999 или меньше, то линейная интерполяция между первыми двумя точками на рис. 3.18 дает значение функции, которое будет меньше 30, но больше или равно 15. Значение RN2, равное илн меньшее 0,069999, бывает в 7% случаев, что соответствует данным табл. 3.12. Поскольку значения RN2 на замкнутом интервале от 0,000000 до 0,069999 распределены равномерно, все значения интервалов времени между 15 (включительно) и 30 (последняя точка исключается) распределены также равномерно, если RN2 не превышает 0,069999. Аналогичные рассуждения справедливы для интервалов от 30 до 45— с, от 45 до 60— с, от 60 до 75— с н от 75 до 90— с. Следовательно, вероятность того, что значение функции приходится на любой заданный интервал, в точности соответствует данным табл. 3.12, а различные величины внутри заданного интервала распределены равномерно. Все это хорошо поясняется с помощью рис. 3.19, на котором дано графическое представление функции, определенной на рис. 3.18. График на рис. 3.19 может быть представлен как последовательность прямых отрезков, используемых для аппроксимации неизвестных Рис. 3.13. Непрерывная функция GPSS, построенная по данным табл. 3.12 LOCATION iSJJJLi ■ [iTiwTJi j 11J U'ljin PUKC.T IOA1 157 Д a.C.D.E.F ili'Tiii йЖ]нЫг«Мг»р'|л|г» joTiilujulij ИИ!» иЫкой «Tpi 4«|« «i «rtJii I Г I I ЙЛХ.цС.*1 i i.i i i t ■ i-ii'i I ■ i i i i I i i i t i I 4.5,/, .,1.3^.6.0,/, .,0ja,.,7,5,/,1|.ia.i9.ft j ■ _i_^. ? t
Таблица 3.13. Преобразованные значения, взятые из табл. 3.12 15 &—" ' 1 1 1 1 1 1 I I О 0,2 0,<+ 0,6 0,8 1,0 RN2 Рис. 3.19. Графическая интерпретация функции, определенной на рис. 3.18 значений функции, описывающей распределение времени обслуживания клиентов. На рис. 3.20 этот график повторяется, но здесь представлена также непрерывная кривая, показывающая, какой может быть действительная функция распределения. Тот факт, что последовательность отрезков лишь аппроксимирует действительную кривую распределения, виден из рисунка. В данной книге распределения интервалов времени приходов и обслуживания будут заданы в виде, представленном в предыдущем примере, т. е. как бы после измерений на реальной системе. При этом будут задаваться только Рис. 3.20. Графическое изображение аппроксимации функцией рис. 3.19 действительного (ио неизвестного) распределения времени обслуживания: 1 — аппроксимирующая функции; 2 — действительная функция Значение случайной переменной Менее 15 30 45 Суммарная частота 0,00 0,07 0,32 Значение случайной переменной 60 75 90 Суммарная частота 0,73 0,92 1,00 значения случайной переменной и соответствующие им суммарные часто-rtfi. Например, данные табл. 3.12 были бы записаны в виде, показанном в табл. 3. J3. При записи такой информации следует помнить, что: 1) случайная переменная имеет непрерывное распределение; 2) распределение должно задаваться с помощью непрерывной функции; 3) результатом такого определения функции является аппроксимация фактической функции распределения. Поскольку используют линейную интерполяцию, распределение представляют в виде последовательности отрезков. 3.13. Моделирование пуассоновских потоков При определении значений интервалов времени при поступлении требований очень часто выполняются следующие условия. 1. Вероятность того, что поступление требования возникает на некотором малом временном интервале, пропорциональна длине этого интервала. 2. Вероятность того, что возникнут два или более приходов требований в течение малого временного интервала, пренебрежимо мала. 3. Все интервалы поступления не зависят друг от друга. В этих условиях можно получить аналитическую зависимость, характеризующую см* рость поступления требований. Рк(Т) = '~КТ^Т)\ * = 0, 1 (3.1) где Рк (Т) — вероятность трго, что ровно k требований придет за время Т; h — средняя интенсивность приходов; е — основание иату* рального логарифма. Распределение, описываемое уравнением (3.1), называется пуассоновскнм. Когда имеет место пуассоновский входящий поток, приход требований описывается законом Пуассона, т. е. распределение определяется уравнением (3.1). Принятие перечисленных выше трех условий и использование пуассонового распределения на. 158
зывается предположением о пуассоновском характере потока. При моделировании пуассоновского входящего потока нет необходимости в определении вероятностей Pk (T). Достаточно иметь лишь значения интервалов времени поступления требований. Расчет значения времени прихода следующего транзакта в блок GENERATE производится посредством сложения текущего значения таймера и разыгранной по распределению интервалов времени величины. Уравнение (3.1) может быть преобразовано таким образом, чтобы можно было выразить распределение интервалов времени. Результатом является экспоненциальное распределение. Когда интенсивность прихода распределена по закону Пуассона, соответствующие значения интервалов времени поступления рвспределены по экспоненциальному закону. Экспоненциальное распределение может быть задано в такой форме, что если имеются равномерно распределенные в интервале 0—1 числа, то соответствующие интервалы времени могут быть вычислены непосредственно из выражения ИВПргзыгр = (ИВПсрсд) I—ln(l - RN/)]. (3.2; где ИВП^ыгр — разыгранный интервал времени; ИВПсреЯ11 — средний интервал времени; RN/ — имя генератора равномерно распределенных чисел, где /', как обычно, может быть задано пользователем. [Вопросам использования и описания пуассоновскнх потоков посвящено большое число учебников. Из них можно получить информацию о том, как составлено уравнение (3.1). Путем небольших преобразований из (3.1) легко получается уравнение (3.2). По этой причине мы решили не повторять то, что можно почерпнуть из уже изданных книг. 1 Для того чтобы разыграть случайное число в соответствии с экспоненциальным обслуживанием со значением среднего ИВПередн. следует воспользоваться уравнением (3.2). это делается так: получаем случайное число в соответствии с равномерным распределением, высчитываем натуральный логарифм от единицы минус случайное число; наконец, умножаем ИВПсрсД11 на минус натуральный логарифм, вычисленный ранее. Напомним, что значение RN/ лежит в диапазоне значений 0,000000—0,999999 и что 1п (1 — RNj) является либо нулем, либо отрицательной величиной (для значений RN/, больших чем 0,000000). Величина [—In (1 — — RNf)l, следовательно, неотрицательна, и, поскольку ИВПсрсд,, также является неотрицательной величиной, значение ИВП радыгр> вычисленное по уравнению (3.2), также является неотрицательным. Использование уравнения (3.2) для моделирования пуассоновского входящего потока в блоке GENERATE включает два этапа. Во-первых, необходимо получить число от RN/ и взять логарифм величины (1 — RN/) со знаком минус. Затем полученный результат следует умножить на ИВПоред„. Первый этап можно выполнить путем задания в GPSS функции, использующей в качестве аргумента RN/ и принимающей значения [—In (1 — RN/)J. На таких языках программирования, как Fortran, Basic и PL/l логарифм вычисляется очень просто, и выражение [—In (1—RN/)1 может быть вычислено без труда. В GPSS функция логарифма отсутствует, поэтому распределение вида t—In (1 — — RNj)] следует аппроксимировать отрезками, накладываемыми на действительную функцию. Для ЭВМ фирмы IBM такая аппроксимация была осуществлена. Она состоит из 23 отрезков, которые охватывают значения экспоненциальной функции случайной переменной на интервале 0—8. (Эта аппроксимация может быть найдена в инструкции пользователя GPSS и вводных материалах по использованию GPSS.) На рис. 3.21 изображены значения выражения 1—1п (1 — RN/)| с учетом того, что RN/ имеет значения от 0 до 1. Для аппроксимации этой кривой используются 23 отрезка, но они на рисунке ие показаны, поскольку можно считать, что для всех практических нужд эти отрезки ложатся непосредственно на кривую. На рис. 3.22 представлено определение непрерывной функции, состоящее из 24 пар значений, используемых для преобразования значений RN/ в значение (—In (1—RN/)J. Функция на рис. 3.22 имеет имя XPDIS (Exponential Distribution), т. е. экспоненциальное распределение. В качестве аргумента функции выбран 0Л 0,6 RNj Рис. 3.21. Графическая интерпретация функции, используемой для розыгрыша чисел в соответствии с экспоненциальный распределением со значением среднего, равным единице 159
».e.c.MZ л а |||и|иЫа|м]г> п Д»Ий u m|»|m|ii|]i|»Uc|«i|m « «|« wp * Sic я м й мЬ>|и и м ЙмКТ|« ЭиЕЕСЛ I ■ I *" I I I I [ 1 _i_L J i i I t I i i i i i I i i I i i i'.i. ЗАЛ,/.-A,.i.АЛЯ,/,.Л> .■*■»!/■ ..6 9|l,5,/..,7,,ll,.,l,/...7's,,,l. ал 2|Д*А*А. 'ЛЛ. ■9g,,)g...S.a./,.)ft4...g...l)|./...9.5,,)g...9.»./..)»A,.a...»l 1 I 1 ! I I I 9,,i4i.i6,/|.19,9iS,J,S|.,3i/,..9.9|l,,A..,g,/|..9i9.9,,,7|/,..9,9i9,a|,,l, ■ i , | i I I i .1 , i i J ■ ■ r ■ ' \ ■ ' i ^ i t i i ■ ^ i i i i ■ ^ i i i . , Рис. 3.22. Непрерывнаи функции GPSS, состоящая из 24 значений, используемая дли розыгрыша чисел в соответствии сэкслоиенциальиыи распределением со значением среднего, равным единице Посмотрим, насколько функция на рис. 3.22 соответствует теоретической кривой. Теоретически значения выражения [—In (1—RN/)J могут находиться в диапазоне чисел от О (RN1 равен 0,000000) до бесконечности (RNI очень близок к 1,0). Практически, поскольку наибольшим значением RN1 является 0,999999, наибольшим значением выражения [—1п (1 — — RN/)] является 13,8155 [—1п (0,000001) = = 13,8155]. Поскольку последним значением функции является пара «.9998,8», функция на рис. 3.22 не достигает этого значения. Когда значение RN1 превышает 0,9998, функция иа рис. 3.22 выдает в качестве своего значения величину 8, в то время, как оно могло бы быть равным 13,8155 (на практике) или даже еще большим (теоретически). Однако RN1 получает значения, большие, чем 0,9998, только в 0,0199% случаев. В большинстве практических случаев аппроксимация значениями функции на рис. 3.22 является вполне достаточной. Мы пришли к заключению, что значение функции FNSXPDIS является хорошей аппроксимацией величины [—In (1 — RN1)]. Теперь это значение надо каким-то образом умножить на ИВПсрвдн, чтобы получить значение интервала времени, соответствующего пуассо- новскому входящему потоку. Для автоматического выполнения этого блок GENERATE имеет специальное свойство. Если операндом В блока GENERATE является FN; (или FNShmh), значение интервала времени вычисляется в блоке посредством умножения значения функции с номером / (или символическим именем) на значение операнда А. Целую часть произведения используют в качестве значения интервала времени. Это означает, что пуассоновский входящий поток моделируется с помощью блока GENERATE путем выполнения следующих действий. 1. В качестве операнда А используют среднее значение интервалов времени. 2. В качестве операнда В используют запись "NSXPDIS, где функция XPDIS определена ia рис. 3.22. Предположим, например, что в какой-то точке модели системы необходимо промоделировать пуассоновский входящий поток со средним значением интенсивности, .равным 4 в течение каждых 24 ч. Единицей времени в модели должна быть 1 мин. Блок GENERATE, выполняющий эту работу, представлен на рис. 3.23. Операнд А, равный 360, получен путем преобразования заданной интенсивности в соответствующее ей среднее значение интервала времени и выражения этого среднего значения в терминах заданной единицы времени. Следовательно, если в течение 24 ч поступает четыре требования, среднее время между последовательными поступлениями равно 6 ч, или 360 мин. Когда транзакт входит в блок GENERATE на рис. 3.23 и переходит в следующий блок, интерпретатор определяет время поступления его последователя путем вычисления FN$XPDIS, умножения результата на 360 и добавления целой части произведения к текущему значению таймера. Для вычисления функции XPDIS необходимо определить значение RN1. Если значение RNI равно 0,35, FNSXPDIS равно 0,432 (среднее между 0,355 и 0,509; смотри четвертую и пятую пары значений на рис. 3.22). Произведением является число 1*55,52. Соответствующим значением интервала времени, следовательно, является 155. Из предыдущего примера ясно, что если иа функцию есть ссылка из блока GENERATE в операнде В, то значение функции является множителем для операнда А. Это первый из. всех до сих пор рассмотренных случаев, касающихся вычисления функции, в котором используется полное значение функции, а не его целая часть. GENERATE JBO.FNSXPDIS I Рис. 3.23. Пример блока GENERATE, используемого для моделирования пуассоиовского входящего потока 160
Если функция используется в качестве one' ранда В блока GENERATE, то говорят, что среднее значение интервала времени (операнд А) модифицируется функцией. Если же операнд В не является ссылкой на функцию, то говорят, что среднее значение интервала времени модифицируется размахом. Модифицируемые размахом значения интервалов времени всегда имеют равномерное распределение на интервале А^В (т. е. операнд А плюс нли минус операнд В). Теперь понятно, что модифицируемые функцией значения интервалов времени всегда являются целыми частями произведения А на В (г. е. операнд А умножается на значение функции, являющейся операндом В). Можно сказать, что в блоке GENERATE в качестве операнда В может быть использована любая функция. В книге, однако, в этом смысле используют единственную функцию, представленную на рис. 3.22. Фактически необходимость использования функции в виде модификатора в блоке GENERATE возникает только при моделировании входящих пуассоновскнх потоков. Следует отметить, что функцию XPDIS можно использовать в различных точках модели. Водном месте, например, пуассоновскин входящий поток может иметь интенсивность 4 в течение 24 ч, в другом — 3 в течение 24 ч. Два блока «GENERATE 360, FNSXPDIS» и «GENERATE 480, FNSXPDIS» в этом случае могут быть использованы в указанных местах модели для моделирования поступления требований. Оба блока GENERATE используют одну и ту же функцию XPDIS. Одним из проявлений второго предположения о пуассоновском характере процесса (вероятность прихода двух и более требований на небольшом интервале времени пренебрежимо мала) является то, что никогда два и более прихода не возникают одновременно. Если это выразить иначе, то получится, что при пуассоновскнх потоках никогда интервал прихода не может быть равен нулю. Предположим теперь, что пуассоновский входящий поток моделируется с помощью блока «GENERATE 5, FNSXPDIS». Если значения функции XPDIS меньше 1/5, то произведение 5 па FNSXPDIS будет меньше единицы. Целая часть произведения в таком случае окажется равной нулю; следовательно, второе предположение о пуассоновском характере процесса будет ^нарушено. Исследование рис. 3.22 показывает, что FN$XPD IS будет давать значение, меньшее 1/5, менее чем ц 18,1% случаев (т. е. если RN1 дает значение, меньшее, чем примерно 0,181, то функция дает значение, меньшее чем 0,2; значение 0,181 получается путем линейной интерполяции между точками «.1..104» и 1.2,.222»). Таким образом, второе предположение о том, что входящий поток является пуас- 11 Т. Дж. ШриПбср соновским, будет нарушаться в модели достаточно часто. Теперь предположим, что в /такой же модели единицей времени является величина, в 10 раз меньшая, чем в исходной. Тогда и блок GENERATE надо переписать заново: Теперь он будет иметь вид «GENERATE 50, FNSXPDIS». Для того чтобы произведение 50 и FNSXPDIS было меньше единицы, значение FNSXPDIS должно быть меньше 1/50. Это может произойти с вероятностью примерно 0,02, или в 2% случаев. Нарушение второго предположения о пуассоновском характере потока в модели в этом случае вполне допустимо. Эти два примера говорят о том, что для того, чтобы второе предположение грубо не нарушалось, операнды А соответствующих блоков GENERATE должны быть как можно больше. Это можно сделать путем задания малого значения единицы времени. В этом смысле рекомендуется, чтобы операнды А блока GENERATE были не меньше 50. Интересно отметить возможную вариацию значений интервалов времени при пуассоиов- ских входящих потоках. Каждое конкретное значение интервала времени вычисляется умножением среднего значения на фактор, который может принимать значение от 0 до 8. Если среднее равно, например, 50, то значения интервалов времени могут лежать в диапазоне от 0 до 400. Известно, что дисперсией экспоненциального распределения является квадрат среднего значения. Из-за большой дисперсии в модели, где существуют экспоненциальные источники случайных чисел, часто требуется большая выборка результатов (длительное моделирование) для обеспечения их точности. 3.14. Упражнения 1. а). Какие три предположения принимают относительно пуассоновского характера потока? б). Ответьте кратко, как между собой соотносятся пуассоновское и экспоненциальное распределения? в). Какова связь между средней интенсивностью поступлений и соответствующим ей средним интервалом? г). Поясните разницу между использованием модификатора-размаха и модификатора-функции, применяемыми в качестве операнда В блока GENERATE. д). Какими должны быть первые два символа операнда В блока GENERATE при использовании его в качестве модификатора функции? е). Почему важно иметь относительно большое значение операнда А в блоке GENERATE при моделировании пуассоновскнх потоков? 2. а). Какое процентное отношение нулевых интервалов установится в блоке «GENERATE
LOCATION -iJAT. , Рис. У1 \W icjfiiTf«7'i|i'[4i LUHCT.LOtL... A.e.C.D.t,F л\яи< j»|»j?<j^ttpftyijjeti'(ttj>il»4»l<« 1N1.,-Ci2i- 1_1 I. I J 1—1 L_J -J_l_ FN iXPDIS» при длительном моделировании (.функция XPDIS определена на рис. 3.22). б). Какое наименьшее значение может стоять в операнде А блока GENERATE, если его используют для моделирования пуассоновского входящего потока и если значения интервалов времени, равные нулю, не должны при длительном моделировании возникать чаще, чем в 0,5% случаев? 3. Корабли входят в порт в соответствии с пуассоновским распределением, причем средняя интенсивность равна четырем кораблям в неделю. Предположим, что единицей времени в модели выбран 1 ч. Запишите блок GENERATE, который моделировал бы входы кораблей в порт. Какое процентное отношение значений интервалов, равных нулю, будет в этом случае? 4. Какими будут интервалы времени в следующих случаях: а) GENERATE FNSIAT; б) GENERATE 1,FN*1AT; в) GENERATE 2,FN$IAT; г) GENERATE FN$IAT, 2. Функция JAT определена на рис. У4. 5. а). Покажите, каким образом может быть решена задача 4, б параграфа 2.7. б). Покажите состоящее из двух значений определение непрерывной функции, с помощью которой можно задать распределение 500^:500. в). Сделайте то же самое, но диапазон равномерно распределенных чисел должен быть от 11 до 21. 6. В некоторой модели блок «GENERATE FN$IAT,,,,1» имеет имя BETA. Аргументом функции IAT является RN2. В некоторой части этой модели находятся карты, показанные на рис. У6. START 1 BETA GENERATE FN$1AT,.„2 CLEAR START 1 Рис. У6 а). Сколько случайных чисел будет получено от генератора номер 2 в момент между концом моделирования, начатого в соответствии с первой картой START, и началом моделирования, определяемым второй картой START? (Указание: посмотрите обсуждение, касающееся переопределения блока GENERATE и воздействия на него карты CLEAR в параграфе 2.34.) б). Как вы думаете, останется ли неизменный интервал входа следующего транзакта в модель, если карты GENERATE и CLEAR поменять местами? Почему да или почему нет? 3.15. Моделирование экспоненциально распределенных интервалов времени обслуживания При моделировании очень часто используют случайные переменные, отличные от переменных, описывающих интервалы поступления требований, но распределенные экспоненциально. Например, время телефонных разговоров распределено по экспоненте. То же можно сказать относительно времени жизни таких элементов электронного оборудования, как транзисторы. Очень часто время, необходимое для обслуживания некоторым прибором, также подчиняется экспоненциальному распределению. Все это делает целесообразным моделирование обслуживания прибором путем задержки транзактов в блоках ADVANCE на интервалы времени, распределенные по экспоненциальному закону. Аналогично тому, как рассчитывается значение интервала времени поступления требований, время обслуживания, распределенное по экспоненте, может быть вычислено умножением некоторого среднего значения времени задержки на выражение [—In (I — RN/)I: ВЗ^р =- (ВЗсрМН) I—In (1 - RN/)J, (3.3) где ВЗрвэыГр — разыгранное значение времени задержки; ВЗсредн — среднее значение времени задержки. Как и прежде, значение I—In (1 — RN/)J может быть определено посредством задания непрерывной функции из 24 точек (см. рис. 3.22). Метод использования модификатора-функции, описанный для блока GENERATE, остается в силе для блока ADVANCE. Иначе говоря, если операнд В блока GENERATE записан как FN/ (или FNShmh), время задержки в блоке вычисляется посредством умножения значения функции, ссылка на которую записана в операнде В, на значение операнда А. Целую часть произведения затем используют в качестве времени задержки. Это означает, что экспоненциально распределенное время задержки можно моделировать при использовании блока ADVANCE, если в операнде А блока записать значение среднего времени задержки и использовать запись FN$APDIS в качестве операнда В. Например, если прибор с экспоненциальным обслуживанием в среднем требует 75 единиц времени на одно обслуживание, то его можно 162
ADVANCE 75.FNJXPDIS Рис. 3.24. Пример блокв ADVANCE, используемого для моделирования экспоненциальио.распределенного времени задержки промоделировать блоком, изображенным на рис. 3.24. Все, что было сказано выше относительно моделирования пуассоновского входящего потока блоком GENERATE, остается в силе для моделирования экспоненциально распределенного времени задержки в блоке ADVANCE. Сказанное касается и различия между модификатором-функцией и модификатором-размахом в блоке ADVANCE. Кроме того, н в этом случае желательно, чтобы экспоненциально распределенное время задержки имело среднее значение не меньше 50. 3.16. Пример моделирования ЗВ. Пуассоновский входящий поток и прибор с экспоненциальным обслуживанием 1. Постановка задачи. Необходимо решить, какое число мест на стоянке следует отвести для автомобилей, ожидающих мойки. Поток автомобилей является пуассоновским со значением среднего интервала, равным 5 мин. Время мойки автомобиля распределено экспоненциально со значением среднего, равным 4 мин. Если клиенты подъезжают и не застают свободного места для ожидания, они уезжают и моют свой автомобиль где-нибудь в другом месте. Необходимо написать на GPSS модель такой несложной системы и использовать ее для исследования системы при использовании одного, двух или трех мест иа стоянке. В каждом из этих случаев надо моделировать работу в течение восьмичасового рабочего дня. По результатам моделирования необходимо оценить долю клиентов, оставшихся для обслуживания, и сравнить для каждой конфигурации системы это число с теоретически вычисленной долей клиентов, обслуживаемых на мойке. 2. Метод построения модели. Модель получается довольно простой. Для моделирования стоянки автомобилей следует использовать мно- коканалыюе устройство. Когда транзакт-клиент входит в систему, он попадает в блок TRANSFER, работающий в режиме BOTH. Из него транзакт пытается войти в многоканальное устройство, моделирующее стоянку. Если вход запрещен, то транзакт сразу же переходит в блок TERMINATE. Для расчета числа клиентов, оставшихся для обслуживания и не покинувших систему сразу же по прибытии, используем счетчики блоков. 3. Таблица определений. Единица времени: 0,01 мин. Таблица ЗВ.1. Таблица определений примера моделирования ЗВ Элементы GPSS Интерпретация Транзакты: 1-й сегмент модели 2-й сегмент модели Приборы: WASHR Функции: XPDIS Многоканальные устройства: SPACE Клиенты Транзакт-таймер МоЙка Функции для розыгрыша случайных чисел в соответствии с экспоненциальным распределением^со значением среднего, равным единице Моделирует число, мест на стоянке автомобилей 11* 163
4. Блок-схема* GENERATE L \600. T TRANSFER BOTH FNSXPDIS (BYBYE) ENTER " SEIZE ' SPACt Л WASHR г \ ' LEAVE ' ' ADVANCE 400.FNSXPDIS 1 ' RELEASE ^РАСЁ WASHR V zt (BYBYE) TERMINATE ПРИБЫТИЕ АВТОМОБИЛЕЙ УЕХАТЬ.ЕСЛИ НА СТОЯНКЕ НЕТ МЕСТ ВЬЕХАТЬ НА СТОЯНКУ ЗАНЯТЬ МОЙКУ ПОКИНУТЬ СТОЯНКУ МЫТЬЕ АВТОМОБИЛЯ ОСВОБОДИТЬ МОЙКУ ПОКИНУТЬ МОЙКУ 1-Й СЕГМЕНТ МОДЕЛИ Рис. ЗВ.1. Блои-схема примера моделирования ЗВ GENERATE I i48000 ucnic \48С I TERMINATE 2-Й СЕГМЕНТ МОДЕЛИ (СЕГМЕНТ ТАЙМЕРА)
5. Распечатка программы. BLOCK CARD NUMBER »LOC OPERATION A . 8. С . U. t ,F . G COMMENTS NUMBtR SIMULATE t • Z • FUNCTION utFINITlON(S) Л • * XPOIS FUNCTION RN1,C24 EXPONENTIAL DISTRIBUTION FUNCTION 5 о .o/. i.» ю4/.г.»ггг/»з..355/.»..bQ9/»s,.69/,.6,.qis/.7,1 .г/.7б, 1.зв о .в, I.6/.84.I.8 3/.86.2.I 2/.9.2.3/.92.2.52/.94.2.8 I/.95.2.99/.96.3.2 .97,3.S/.98.3.9/.99.*.6/.995.S.3/.998.6.2/.999.7/.9999.8 В • 4 • STORAGE CAPACITY DEFINITIONS) 10 • 1 I STORAGE SSSPACE.I ONE WAITING SPACE INITIALLY 12 • П » MODEL SEGMENT I l« • IS 1 GENERATE 500.FNSXPD1S CARS ARRIVE 16 2 TRANSFER BOTH.,BYBVE LEAVE IF NO SPACE TO ИА1Т 17 3 ENTER SPACE ENTER WAITING AREA 1в « SEIZE MASHR CAPTURE MASH FACILITY 19 5 LEAVE SPACE LEAVE WAITING AREA 20 6 AOVANCE 4OO.FNSXP0IS CAR IS BEING WASHEO 2 1 7 RELEASE WASMR FREE THE «ASM FACILITY 22 в BYBYE TERMINATE LEAVE THE SYSTEM 23 • 24 • MODEL SEGMENT 2 25 • 26 9 GENERATE 48000 TIMER ARRIVES AT END OF THE OAY 27 10 TERMINATE I SMUT OFF THE RUN 28 • 29 » C0N7R0L CARDS AND STORAGE CAPACITY RE-DEFINITIONS 30 • 31 START I START THE 1ST RUN 32 STORAGE SSSPACE.2 SET WAITING SPACES * 2 FOR 2NO RUN 33 CLEAR CLEAR FOR 2N0 RUN 34 START I START THE 2NO RUN 35 STORAGE SSSPACE.3 SET WAITING SPACES = 3 FOR 3« < RUN 36 CLEAR CLEAR FOR 3RO RUN 37 START 1 START THE 3R0 RUN 38 ENO RETURN CONTROL TO OPERATING SYSTEM 39 Рис. ЗВ.2. Распечатка программы примера моделирования ЗВ 6. Выходные данные. RELATIVE CLOCK «8000 ABSOLUTE CLOCK 48000 BLOCK COUNTS BLOCK CURRENT TOTAL BLOCK CURRENT TOTAL BLOCK CURRENT I 2 3 8 9 10 NT 0 0 0 0 0 0 0 0 0 0 TOTAL 4« 9* 62 62 62 62 62 9. 1 1 FACILITY HASMR AVERAGE UTILIZATION .6 7* NUMBER ENTRItS 62 AVERAGt TIME/TRAN Ы2. I»i SEIZING TRANS. NO. PREEMPTING TRANS. NO. STORAGE SPACE С AP AC ( T Г 1 AVERAGE C0NTLN1S • 29* AVERAGE UTILIZATION .29* ENTRIES 62 AVERAGE TIME/THAN 227.661 CURRENT CONTENTS MAXIMUM CONTENTS 1 «) Рис. ЗВ.З. Часть распечатки выходных данных примера моделирования ЗВ (при одном месте иа стоянке): « — значения таЛмеров н счетчики блоков; б — статистика по приборам; « — статистика по многоканальному устроАсгау
Таблица ЗВ.2. Результат моделирования примера ЗВ Число мест на стоянке 1 2 3 Степень использования СТОЯНКИ 0.294 0.233 0,272 Число обслуженных автомобилей 62 83 82 Число исобслужеи- иы.х клиентов 32 15 9 Нагрузи» прибора 0.674 0.670 0,660 Среднее время обслуживания L 522 388 387 7. Обсуждение. Использование модели. Заметим, что в таблице определений единицей времени является 0,01 мин. При такой маленькой единице времени средние интервалы поступления и обслуживания прибора равны 500 и 400 соответственно. Использование таких больших значений дает гарантию, что при розыгрыше случайных чисел в соответствии с экспоненциальным распределением будут получаться удовлетворительные результаты. Распечатка результатов. (Время, затраченное на моделирование на ЭВМ IBM 360/67, равно 3,2 с.) Результат моделирования для случая одного места на стоянке представлен на рис. ЗВ.З. В течение времени моделирования в системе появлялись 94 клиента [счетчик входов (Total Count) блока 1 на рис. ЗВ.З, а). Из этого числа 64 клиента остались на обслуживание [счетчик входов блока 3 ENTER (ВОЙТИ)]. Понятно, что 32 клиента остались необслуженными, а обслужено только 66% клиентов. В момент завершения моделирования в системе не было ни одного клиента; все счетчики текущего содержимого (Current Contents) равны нулю. Прибор WASHR работал со средней нагрузкой 0,674 (рис. ЗВ.З, б). Это число можно сравнить со значением нагрузки 0,80, которое имело бы место при точной ^синхронизации работы системы. Среднее время мытья машины для 62 случаев равно 522 единицам времени, или 5,22 мин. Таким образом, существует некоторое отклонение от среднего значения, равного 4 мин. С другой стороны, 94 клиента, вошедшие в систему, хорошо согласуются с ожидаемым числом, равным 96. Рис. ЗВ.З, в содержит статистику по многоканальному устройству SPACE. Несмотря на то, что 34% клиентов не обслужено из-за нехватки места, нагрузка многоканального устройства равна только 0,294. Это число вместе с большим расхождением между наблюдаемым и ожидаемым значениями времени обслуживания подтверждает, что при пуассоновском входящем потоке и экспоненциальном обслуживании существуют большие отклонения, которые не имели бы места при точной синхронизации модели. В табл. ЗВ.2 собраны основные результаты моделирования для случаев одного, двух и трех мест на стоянке для автомобилей. Число необсл уженных клиентов снизилось от 32 до 25, когда на стоянке добавилось одно место, а в случае трех мест таких клиентов осталось всего девять. В правом столбце таблицы указаны средние значения времени обслуживания. В случае моделирования двух и трех мест на стоянке эти значения оказались близкими к ожидаемому значению 400. Заметьте, что число обслуживании возросло с 62 до 83. В табл. ЗВ.З сопоставлены полученная доля обслуженных клиентов с теоретически рассчитанной, т. е. той, которая имела бы место при длительном моделировании. Это теоретическое значение было рассчитано в соответствии с уравнением (ЗВ.1) *. Таблица ЗВ.З. Сравнение полученного и теоретического результатов Число мест па стоянке 1 2 3 Доля обслуженных клиентов полученная 0,660 0,846 0,902 теоретическая 0,738 0,826 0,861 Доля обслуженных клиентов = -1 (i-p«p+0 -.м (ЗВ.1) где М — число, на единицу большее, чем число мест; р — отношение среднего времени обслуживания к среднему значению интервала поступления. Сравнение показывает хорошее совпадение значений за исключением случая с одним местом на стоянке. Если бы среднее время обслуживания в первом случае было ближе к ожидаемому, это привело бы к увеличению числа обслуженных клиентов, что, в свою очередь, дало бы лучшее совпадение с расчетным значением. * Вывод этого уравнения можно найти в книге P. S. Hiller, G. J. Liberman. Introduction to Operation Research (Hoiden—Day, 1967). гл. 10, упражнения З— 6 разд. 3. Здесь приведено с разрешения фирмы Нolden- Day. Все прочие ссылки на эту книги могут быть сделаны только с разрешения фирмы. 166
3.17. Упражнения 1. Для примера моделирования ЗВ весьма существенно, в какой последовательности в модели возникают те события, которые в реальной системе происходят одновременно. а). Укажите такие ситуации (Указание: см. упражнение 8, параграф 2.47.) б). Как вы считаете, часто или редко возникают одновременные события? в). Предположим, что единицу времени изменили с 0,01 на 0,001 мин. Чаще или реже будут возникать одновременные события? г). Предположим, что вы умеете управлять последовательностью обработки событий, возникающих одновременно. (Как это сделать для примера моделирования ЗВ, можно посмотреть в параграфе 4.10). Какое из событий следует обрабатывать первым? Надо ли для этого вводить какие-либо дополнительные условия? Поясните подробно. 2. Взгляните на карту 34, приведенную на распечатке программы примера моделирования ЗВ (см. рис. ЗВ.2). Сколько случайных чисел будет получена от генератора RN1 при обработке этой карты? Приведенные ниже упражнения 3—6, как и пример моделирования ЗВ, описывают системы массового обслуживания, для расчета которых можно получить аналитические выражения. Напишите на GPSS модели, которые бы имитировали поведение соответствующих систем, затем выполните моделирование и используйте результаты моделирования для ответа на соответствующие вопросы. Сравните свои результаты с теоретическими. Последние приведены в*конце каждой задачи. Следует отметить, что на практике входящие потоки могут значительно отклоняться от пуас- соновских, а обслуживание может быть неэкспоненциальными. В этих случаях аналитические результаты в значительной степени могут оказаться неприемлемыми. Модели таких систем представляют собой удобный инструмент, с помощью которого можно всесторонне исследовать их поведение. Следует также отметить, что любой аналитический результат, приведенный ниже, является средним значением случайной переменной, т. е. показывает среднее поведение системы при длительном моделировании. Аналитический результат не может показать изменение параметров системы в процессе длительного функционирования. Моделирование имеет то преимущество, что может дать результаты даже на коротком отрезке. Если эти результаты удовлетворительны, можно моделирование не продолжать и оценить распределение случайных переменных, представляющих наибольший интерес. Метод оценки распределений в GPSS-моделях будет обсужден в гл. 4. 3. Необходимо определить, сколько места следует отвести для конторы по найму рабочих на новой фабрике. Рабочие приходят в контору в соответствии с пуассоновским распределением; средняя интенсивность равна двум человекам в час, а время, необходимое для выполнения соответствующей работы, распределено по экспоненциальному закону со средним, равным 0,4 ч. Для размещения одного человека необходимо выделить 1 кв. фут (1 кв. фут «# «а» 0,093 м2) площади конторы. Сколько места требуется отвести для того, чтобы разместить 50, 90, 99% ожидающих оформления на работу? (ответ: 2; 9 и 19 кв. футов площади соответственно). 4. Предположим, что на одного рабочего, ремонтирующего станки, приходится три станка. Распределение времени наработки до отказа является экспоненциальным со значением среднего времени, равным 8 ч. Время ремонта также имеет экспоненциальный характер, и в среднем на ремонт уходит 2 ч. Определите среднее число станков, которое находится в ремонте (ответ: 0,80). 5. На фабрике имеются две кладовые, в каждой гиз которых работает один кладовщик. Один кладовщик обслуживает механиков, работающих с большими станками, а другой всех прочих механиков. Входящий в каждую кладовую поток является пуассоновским со значением интенсивности, равным 20 механикам в час. Время обслуживания механиков распределено по экспоненциальному закону со значением среднего, равным 2 мин. Ввиду того, что механики очень долго ждут обслуживания, было сделано предложение объединить две кладовые так, чтобы любой кладовщик мог обслужить любой запрос механиков. Предполагается, что интенсивность прихода в такую сдвоенную кладовую также удвоится и будет составлять в среднем 40 механиков в час, а среднее время обслуживания по-прежнему останется равным 2 мин. Оцените оба варианта (существующий и предлагаемый) с точки зрения общего числа механиков, находящихся в кладовой, и ожидаемого среднего времени простоя каждого из них (т. е. включая время их обслуживания). (Ответ: при существующем варианте в среднем два механика находятся в каждой кладовой и время простоя каждого 6 мин. При объединении кладовых общее число механиков в кладовой в среднем будет равно 2,4, а время простоя каждого станет равным 3,6 мин.) 6. В центре координации работ в одном из подразделений предполагается организовать обслуживание так же, как в системе с одним прибором и очередью; входящий поток является
пуассоновским с интенсивностью 4,5 в день. Несмотря на то, что клиенты делятся на три различных типа, время, необходимое для направления на работу, для них одинаково, распределено по экспоненциальному закону » имеет среднее значение 0,2 дня. Обслуживание клиентов происходит по принципу «первым пришел — первым обслужен». Однако важно то, что клиенты типа I не. могут долго ждать. Клиенты типа 2 спешат, но не очень, а клиентам типа 3 почти безразлично время ожидания. Клиенты трех типов приходят со средней интенсивностью 1,5; 2,0 и 1,0 в день соответственно. Поскольку для всех трех типов среднее время ожидания достаточно велико, было предложено обслуживать клиентов на приоритетной основе. Сравните время ожидания (включая обслуживание) по каждому типу клиентов при дисциплине обслуживания: а) «первым пришел — первым обслужен» и б) «первым пришел — первым обслужен внутри одного класса приоритетов». (Ответ: в первом случае время ожидания равно двум дням независимо от типа клиента. При приоритетном обслуживании время ожидания равно 0,457; 1,057 и 6,2 дня для клиентов типа 1, 2 и 3 соответственно.) 7. Предположим для упражнения 5, что интервалы времени прихода механиков в кладовую распределены в соответствии со значениями табл. У7, а; время обслуживания кладовщиком изменяется в соответствии со значениями табл. У7, б. Используйте модели для сравнения раздельных кладовых с предложенным объединенным использованием кладовщиков. Следует предположить, что изменение в распределении времени обслуживания в случае сдвоенной кладовой зависит от типа запроса, но не сделано никаких различий между обоими кладовщиками. Будет ли в этом случае улучшение работы при объединении кладовых столь же значительным, как в упражнении 5? В лучшую или худшую сторону произойдет изменение в связи с изменением распределения? 8. Видоизмените модель примера 2F в предположении, что поток телевизионных приемни- Таблнца У7, а Интервалы приходи, мин 50 100 125 150 160 170 175 180 Относнтельнан чистота Клпдо- вая 1 0,03 0,04 0,05 0,07 0,09 0,12 0,16 0,13 Кллдо- В.1И ? _ — 0,01 0,02 0,05 0,07 0,11 Иптер- вилы при ходи. мим 185 190 200 210 235 200 310 Относительная частота Кладовая 1 0.10 0,09 0,07 0,04 0,01 — — Кладовая 2 0,13 0,16 0,18 0,14 0.08 0,03 0.02 Таблица У7, б ■С Время обслуживания, МП II 80 90 100 ПО 115 120 Относительная частота Кладовая 1 _ — 0,01 0,05 0,10 0,15 Кладовая 2 0,03 0,10 0,14 0,16 0,18 0,23 Время оОслу жнапннн. мин 125 130 140 150 160 Относительная частота К .1 >до- п.ш 1 0.19 0.17 0.14 0,12 0.07 Кладовая 2 0,12 0,04 — — — ков, поступающих на станцию контроля с предыдущей станции, является пуассоновским. Предположите также, что время работы на станции контроля и время работы в цехе наладки распределены по экспоненциальному закону. Средние значения времени обслуживания остаются теми же. Выполните моделирование и сравните результаты с полученными в примере моделирования. К чему в требовании к числу мест на стеллажах привело это изменение? В большую или меньшую сторону произошло изменение? 3.18. Управляющие карты GPSS. Карта RMULT (УСТАНОВИТЬ ЗНАЧЕНИЯ ГЕНЕРАТОРОВ) В параграфе 1.4 гл. 1 был пояснен механизм генерации случайных чисел в GPSS. Прежде чем продолжить чтение, мы рекомендуем читателю вернуться к тому параграфу с тем, чтобы освежить в памяти некоторое детали схемы генерации. Как было указано, каждый из восьми генераторов случайных чисел имеет связанный с ним множитель. Значение любого генератора изменяется при каждом обращении к нему для выполнения процедуры генерации. Следовательно, имеет смысл говорить о некотором начальном значении множителя, а при обращении к генератору можно говорить о текущем значении множителя. Если не указаны никакие дополнительные сведения, то начальным значением любого из восьми множителей в схеме генерации случайных чисел в GPSS является единица. (Точнее говоря, все множители в GPSS/360 версии I равны единице, в версии 2 — равны 37, в GPSS V множители также равны 37. Поскольку во всех примерах моделирования подразумевается использование именно версии 1 системы GPSS/360, мы будем считать, что начальным значением всех множителей является единица.) По умолчанию все восемь генераторов воспроизводят одну н*ту же^тюследовательность случайных чисел (см. табл. 31). 168
Синхронность, которая подразумевалась в табл. 3.1, редко бывает необходимой. Поэтому в GPSS есть специальная управляющая карта, с помощью которой текущее значение одного или нескольких из восьми множителей генераторов может быть изменено. Эту управляющую карту можно использовать: 1) до первой карты START для изменения начального, задаваемого по умолчанию, значения любого числа (в пределах восьми) множителей перед началом моделирования; 2) между картами START для восстановления начальных состояний множителей одного или более генераторов; множители могут быть либо восстановлены в значения, задаваемые по умолчанию интерпретатором с самого начала, либо в указанные значения, которые пользователь задал в начале работы; 3) между картами START для определения нового состава множителей. Управляющую карту, используемую для этих целей, называют картой RMULT (УСТАНОВИТЬ ЗНАЧЕНИЯ ГЕНЕРАТОРОВ). В этой карте поле имени не используют. Слово RMULT записывается в поле операции. Могут быть использованы восемь операндов от А до Н, соответствующие генераторам от 1 до 8. Для изменения текущего значения множителя генератора необходимо задать целое нечетное положительное число в соответствующем операнде карты RMULT. Число не должно содержать более пяти цифр. Заданное число и будет являться текущим значением множителя соответствующего генератора. На рис. 3.25 приведено несколько примеров использования карты RMULT. В первом примере карта RMULT устанавливает множители всех генераторов в начальное значение, обычно устанавливаемое по умолчанию. Во втором примере устанавливаются в это же начальное значение множители генераторов 2, 3 и 6; все остальные значения остаются без изменения. В третьем примере показано, как установить значения множителей генераторов 1, 2 и 4 в состояния, равные 453, 721 и 555 соответственно. Схема генерации случайных чисел в GPSS имеет восемь различных значений ядер. Если какой-либо из генераторов используется впервые, он для образования случайного числа берет первое из этих восьми ядер. Кроме того, генератор предпринимает действие по определению того, какое из восьми ядер следует использовать в следующий раз. Определение также выполняется случайным образом. Когда некоторый генератор формирует случайное число, то можно сказать, что его значение зависит и от текущего значения множителя и от того, какое из ядер будет использовано генератором. Это означает, что для того, чтобы воспроизвести ранее имевшую место последовательность, необходимо: 1) множитель установить в исходное состояние; 2) чтобы при следующем использовании генератор оперировал первым из восьми существующих ядер. Карта RMULT выполняет оба указанных действия. Иначе говоря, при использовании карты RMULT для изменения значения множителя генераторов интерпретатор устанавливает внутренний указатель таким образом, чтобы при последующем использовании генератора последний выбрал первое из восьми ядер для реализации процедуры генерации. Посмотрим теперь, в какое место колоды перфокарт следует вкладывать карту RMULT. Если пользователь желает иметь нестандартную последовательность случайных чисел от начала моделирования, то карта RMULT должна стоять до первого блока GENERATE. Это будет гарантией того, что множители уже установлены в значения, отличные от заданных по умолчанию, до того, как какие-нибудь генераторы будут использованы интерпретатором в процессе выполнения фазы ввода. Если в процессе моделирования необходимо изменить некоторые последовательности случайных чисел (между картами START) и при этом используется карта GLEAR, то карта RMULT должна стоять перед картой CLEAR. В гл. 2 уже было сказано о том, что одним из действий карты CLEAR является планирование интерпретатором первого прихода транзактов в блоки модели GENERATE. Если это планирование выполняется на основе использования одного или более генераторов случайных чисел, то установку генераторов необходимо выполнить до того, как будет выполняться операция очистки. iliH'Lv _1_L -Р 7 '_ЗД "'ЗД;Щ"1Г' EAWLTl^a. йоСТЛмрН!* г 'InjfMM ti* |5?I >>1mI}»1mIj»I^wT^«i ,4j[4i«iF«»|4t^f«aWMiJ»i 1»гЕ)Г%«]ь»1м]>г|мЬ91м)< i t i i i i i i ! ПЕРВЫЙ ПРИМЕР ' ' —L-I— J-4-J ».е.с.о,Е/ i.Lfllt l_L tj /ill , , i , ! i i _ J—f i i- 1__ ВТОРОЙ ПРИМЕР -i i i i i~. ТРЕТИЙ , ПРИМЕР | , L I I I I I I -1 I ' I I I I I I I 1 -I I I I ) I I I I i—i | i ■. i ■ | | ■ ■ Lj. i_4 Piic. 3.25. Примеры использования карты RMULT 169
Необходимо уделить внимание случаю, когда один или более блоков GENERATE должны быть переопределены между картами START и при этом одна или более последовательностей, от которых зависит переопределение, также должны быть изменены. При переопределении блока GENERATE интерпретатор сразу же планирует приход первого траизакта во вновь определенный блок. Если карта RMULT располагается перед картой переопределения блока GENERATE (или вообще перед картами переопределения), го интервал (илн интервалы) времени будет рассчитан с использованием значений генераторов, уже установленных в новые положения. И, наоборот, если карта RMULT стоит после карт переопределения блоков GENERATE, интервалы времени будут рассчитаны с использованием прежних значений генераторов. Пользователь должен хорошо помнить, какую из этих двух альтернативных концепций следует использовать в его задаче. Выбор зависит, в частности, от того, используется ли также карта GLEAR. Этот случай нами будет рассмотрен в примере моделирования ЗС. Там выбранная последовательность состоит из переопределения блоков GENERATE в самом начале, модификации значений множителей генераторов и выполнения операций по очистке. 3.19. Восстановление условий моделирования Экспериментирование в любых областях требует достаточно точного воспроизведения условий, при которых проводят эксперименты. Умышленное изменение значения одной переменной (независимой) может вызывать изменения другой переменной (зависимой). Например, предположим, что переменные, имеющие названия А, В, С, D и Е, могут быть изменены в некотором эксперименте, причем А зависит от В, С, D и Е. Для оценки зависимости А только от В значения С, D и Е должны оставаться неизменными, а В должно меняться; значения А нужно при этом фиксировать. При описанных выше условиях изменения переменной А вызваны изменениями переменной В. Наоборот, если значения В, С, D и Е будут меняться одновременно, то очень трудно будет исследовать влияние изменения В на изменение А. Этот простой пример имеет прямое отношение к экспериментированию, осуществляемому на имитационной модели. Моделирование очень часто используют для сравнения альтернативных конфигураций систем и выбора из них наиболее удовлетворительных. В этом смысле для правильной реконфигурации системы необходимо отыскать независимую переменную. При реконфигурации системы пользователь по существу изменяет значение независимой переменной. Его цель измерить соответствующее изменение эффективности функционирования системы. Если необходимо, чтобы изменение значения эффективности протекало исключительно из-за изменений в конфигурации системы, все прочие условия, при которых используют модель, должны оставаться неизменными от эксперимента к эксперименту. Заметим, что любой источник случайности в системе имеет потенциальное влияние на изменяемое поведение системы. Важнейшими источниками случайных процессов в моделях GPSS являются интервалы прихода требований и время их обслуживания. Пользователь может полагать, что если операнды А и В конкретного блока GENERATE или ADVANCE остаются без изменения при исследовании альтернативных конфигураций, то условия эксперимента не изменяются. Вообще говоря, это не так. Не только распределения интервалов прихода и времени обслуживания требований должны оставаться неизменными при каждом изменении конфигурации в исследовании, но и конкретные значения и последовательности разыгрываемых чисел должны быть абсолютно такими же для альтернативных конфигураций. В противном случае, тот факт, что моделирование продолжается на некотором небольшом отрезке времени, может повлиять на результаты и привести к неверным выводам исследования. Рассмотрим для примера систему, промоделированную в примере 2С. В кладовой работал один человек. Механики, делающие запросы категории J, приходили через каждые 420^=360 с и для каждого из них требовалось по 300±90 с затрат времени кладовщика. Запросы категории 2 занимали кладовщика на 100^=30 с и были сделаны механиками, приходящими через каждые 360:3=240 с. Измеряемой оценкой эффективности являлось среднее число механиков, находящихся в очереди. Независимой переменной была дисциплина выбора из очереди, реализуемая кладовщиком. Необходимо было определить, приведет ли увеличение приоритета для механиков категории 2 к уменьшению среднего числа механиков, находящихся в очереди, и, следовательно, к уменьшению стоимости производства. В примере 2С работу кладовой моделировали на протяжении восьмичасового рабочего дня для обеих альтернативных схем. Был сделан вывод о том, что стоимость резко снизилась при введении приоритетной дисциплины обслуживания. В задаче о кладовой среднее число механиков в очереди зависит от: I) реализуемой дисциплины обслуживания; 2) фактической последовательности значений интервалов времени прихода механиков категории I; 3) фактической 170
последовательности значений времени обслуживания механиков категории 1; 4) фактической последовательности значений интервалов времени прихода механиков категории 2; 5) фактической последовательности значений времени обслуживания механиков категории 2. Зависимость времени ожидания сразу от пяти факторов затрудняет интерпретацию результатов, если мы хотим исследовать влияние только дисциплины обслуживания. Если время ожидания должно изменяться только ввиду изменения дисциплины обслуживания, то другие условия, при которых сравниваются альтернативные варианты, должны быть строго одинаковыми. Существуют, по крайней мере, три метода сравнения альтернативных вариантов при прочих равных условиях. 1. Необходимо произвести некоторые аналитические изменения модели таким образом, чтобы существенно снизить влияние неодинаковости ввиду наличия случайности. 2. Надо выполнять моделирование так долго, что следствия непродолжительности моделирования будут исключены. Так, в примере моделирования 2С случайная переменная «среднее число ожидающих механиков» получает значение, которое зависит не только от дисциплины обслуживания. При увеличении времени моделирования результаты моделирования стремятся к некоторым теоретическим значениям. 3. Можно разработать модель таким образом, чтобы в каждом из альтернативных вариантов были одинаковыми условия моделирования. Для примера моделирования 2Сэто означало бы, что факторы от 2 до 5 должны быть одинаковыми при изменении дисциплины обслуживания. Такой подход подразумевает дублирование случайностей в модели при управлении условней моделирования. Метод 3 не исключает возможности того, что небольшой период моделирования все же приведет к неверному результату. Тем не менее он позволяет сопоставить альтернативные варианты н дает возможность довольно строго говорить: «при прочих равных условиях». У него есть некоторое преимущество перед методом 1, поскольку он в меньшей степени требует повторения случайности в модели и полностью исключает необходимость в аналитических изменениях на основе анализа моделирования. Преимущество перед методом 2 заключается в том, что последний может потребовать больших затрат времени работы ЭВМ, особенно если модели велики и необходимо исследовать большое число альтернативных вариантов. Конечно, методы 2 и 3 не относятся к типу «или—или». Даже если можно осуществить моделирование на большом временном интервале, все равно следует дублировать источники случайностей в альтернативных вариантах модели. Посмотрим теперь, каким образом могут быть продублированы случайности в двух конфигурациях на примере модели 2С. Для удобства распечатка программы, содержащая модель с приоритетной дисциплиной обслуживания и представленная на рис. 2С.4, еще раз изображена на рис. 3.26. В модели блоки GENERATE, занимающие позиции 1 и 8, и блоки ADVANCE, находящиеся в позициях 5 и 12, используют генератор RN1 как источник равномерно распределенных случайных чисел на интервале 0—1. (В блоке GENERATE в позиции 15 случайные числа не используются, поскольку там время прихода транзакта задано детерминированным образом). Другими словами, четыре источника случайности делят между собой единственную последовательность случайных чисел. В табл. 3.14 показано, как это осуществляется. В таблице первые 25 обращений к RN1 записаны в хронологическом порядке, а источник обращения (т. е. блок, из которого сделано обращение) показан для модели на рис. 3.26 (модель 1) и для эквивалентной модели, но с исключением приоритетного обслуживания (модель 2). Первые 16 обращений к RN1 в смысле обращающихся блоков совпадают. Семнадцатое обращение поступает от блока ADVANCE (номер 12) модели 1 и от блока ADVANCE (номер 5) модели 2. Семнадцатое обращение сделано в момент модельного времени 1457 (это в табл. 3.14 не показано). В терминах самой системы это означает, что в момент времени 1457, когда кладовщик закончил обслуживание, он обнаруживает по Таблица 3.14. Источники первых 25 обращений к RNI в зависимости от моделируемого варианта примера 2С Номер обращения 1 2 3 4 5 6 7 8 9 10 II 12 13 Номер блокл. из которого есть обращение С ритетами (модель |1) 1 8 1 5 8 12 1 5 8 8 12 12 1 Без приоритетов (модель >2) 1 8 1 5 8 12 1 5 8 8 12 12 1 Номер обращения 14 15 16 17* 18 19 20* 21 * 22 * 23 24 25* Номер блока. из которого есть обращение С ритетами (модель I) 5 1 8 12 8 12 б 8 1 12 5 1 Без приоритетов (модель 2) 5 1 8 б 8 12 8 1 12 12 5 8 * Обращения из разных источником. 171
BLOCK NUMBER 1 2 3 4 3 6 7 в 9 10 H 12 13 14 15 16 ♦LOC • • * • • * • • » » * UPhKATION Л,е,С, 0.t»h t<« SIMULATE model segment i GENERATE «20,3b0,,,l QUEUE LINE SEIZE CLERK DEPART LINE ADVANCE 300.90 RELEASE CLERK TERMIMATL MODEL SEGMENT 2 GENERATE 360. 240,,, 2 OUEUE LINE BEIZE CLERK DEPART LINE ADVANCE 100 . 30 RELEASE CLERK TERMINATE MODEL SEGMENT 3 GENERATE 28B0U TERMINATE 1 CONTROL CARDS START 1 ENO CUMMtNTb CATEGORY I MECHANICS ,ARRIVE ENTER "CATEGORY » SEGMENT» OF LINE CAPTURE THE CLERK LEAVE THE LINE USE THE CLERK FREE THE CLERK LEAVE THE TOOL CRIB ARtA ' CATEGORY 2 MECHANICS ARRIVE ENTER "CATEGORY 2 SEGMENT" UF LINE capture the clerk LEAVE THE LINE use the Clerk FREE THE CLERK LEAVE THE TOOL CRIB AREA TIMER ARRIVES AFTER в HOURS SHUT OFF THE RUN START ТИС RUN RETURN CONTROL TO OPERATING SYSTEM CARD NUMBER 1 2 3 A Ь 6 7 в 9 10 11 12 13 I* 15 16 17 IB 19 20 21 2* 23 24 25 26 27 20 29 30 31 Рис. 3.26- Повторение рис. 2С.4 крайней мере одного механика категории 1 и одного категории 2, находящихся в очереди. Кроме того, механик категории I ждет больше. В модели 2 механик категории I был обслужен первым, а в модели 1 преимущество имел механик категории 2. Начиная от семнадцатого вызова, значения, выдаваемые генератором RN1 и используемые в блоках 1, 5, 8 и 12 модели 1, отличаются от значений, используемых в модели 2. Например, блок 5 модели I использует двадцатое значение генератора RNI, а в модели 2 это значение использует блок 8 и т. д. Совершенно очевидно, что когда на семнадцатом обращении синхронизация нарушается, использование RN1 в моделях 1 и 2 начинает отличаться. При обращениях от номера 18 до 25 к генератору RN1 в пятидесяти процентах случаев обращения делают различные блоки. Информация, не включенная в табл. 3.14, указывает, что на интервале восьмичасового рабочего дня моделями 1 и 2 осуществлено 282 и 289 обращений соответственно. От первого до 282-го обращения в 55% случаев генератором RN1 выданы значения для несовпадающих блоков. Очевидно, что среди пяти факторов, от которых зависит время ожидания механиков, никакие два не являются одинаковыми в обеих моделях. Исследования, таким образом, проводили при разных условиях моделирования. Достаточно легко, однако, ввести в пример моделирование 2С управление условиями моделирования. Для этого надо лишь предпринять действия, которые дали бы гарантию того, что каждый из четырех источников случайности использует свой собственный генератор случайных чисел, распределенных равномерно на интервале 0—1. Предположим, что для использования в каждом из блоков I, 5, 8 и 12 определена функция; каждая функция использует свой генератор с номером 1, 2, 3 и 4 соответственно в качестве аргумента. На рис. 3.27 приведена распечатка программы, представляющая собой модель с приоритетной дисциплиной обслуживания, использующая такие функции. Функции IAT1, STYM1, IAT2 и STYM2 используются в блоках 1, 5, 8 и 12 в указанном порядке. Отметим, что на рис. 3.27 карту RMULT (карта 5) используют для задания неодинаковых начальных значений четырех генераторов, используемых в модели. Если бы четыре генератора имели одинаковые начальные значения, то имела бы место несуществующая в системе корреляция между четырьмя источниками случайности. Например, в соответствии с правилом совпадепия начальны;: значений одно н то же число было бы результатом первого обращения н RNI—RN4. Это означает, что одно и то же случайное число использовали бы для расчета первого интервала времени прихода первых механиков категорий 1 и 2. (Аналогичное утверждение можно было бы сделать относительно расчета интервала времени прихода вторых механиков категорий 1 и 2, третьих и т. д.) Это было бы неестественно. Подобным 172
Block numbw 8 10 11 12 13 14 15 16 fLOC OPERATION A.b.CO.E.FtC. SIMULATE COMMENTS NON-STANDARD RANDOM NUMBER SEOUENCE INITIALIZATION^) ft MULT Ы1.39.7.663 FUNCTION DEFINITIONS) IATI FUNCTION RNIiC2 О .60/1 t 7BI IAT2 FUNCTION RN3.C2 0, 120/1.60 1 STYM1 F-UNCTlUN RN2tC2 О .210/1» J91 атуиг t-умстюм »н*.г.г 0 • VO /1 . I 3 1 * MDDFL SEGMENT 1 CATEGORY 1 MECHANIC INTER- ARRI »A|_" TIMES CATEGORY Z MECHANIC INTER-ARRIVAL TIMES CATEGORY I MECHANIC SERVICE TIMES СИЕ60РЧ 2 MECHANIC SERVICE TIMES GfcNERATb OUEI/K sr i zfc OEPAR T ADVANCE RELEASE TERMINATE FNIIAT1.... 1 LINt CLERK LINE (■NSSTYMl CLEHK MUOEL SEGMENT Z GENERATE OUEUE SEIZE DEPART ADVANCE RELEASE TERMINATE F4JI AT?.. ..2 LINE CLERK LIME FN*STYM2 CLERK MODEL SEGMCNT 3 GENERATE TERMINATE гвеоо 1 fcriNTROl fAROS S IAR T 1 E NL- САТЕ GORY I MECHANICS ARRIVE ENTER «CATEGORY I bEGME'NT" OF LIME CAPTURE THE CLERIC LEAVC THE LI.NE USE THE CLERK. FREE THE CLERK I.LAVE THE TOOL CRIB AREA CATEGORY 2 MECHANICS ARRIvr ENTER "CATEGORY 2 SEGMENT» OF LINE CAPTURE THE CLERK LEAVE THE LIKE USE THE CLERK FREE THE CLERK LEAVE THE TDOL CRIB AREA TIMER AHRJVFS AFTER в HOURS SHUT OFF THE RUN START THE RUN RfcTUMN CONTROL TO OPERATING SYSTEM CARD NUMBER 1 г 3 4 5 6 7 В 9 10 II 12 13 14 iS lt> 1 7 IS 14 ?0 21 гг гз 24 25- 26 27 28 29 30 31 32 33 34 3S 36 3T 38 J 9 40 41 47 4 3 44 45 46 Рис. 3.27. Распечатка программы модели рис. 3.26 после модификации, обеспечивающей управление условиями моделирования образом одно и то же случайное число использовали бы для расчета интервала времени прихода и времени обслуживания запроса механика категории 1. (Аналогичное утверждение можно было бы сделать относительно расчета интервала времени прихода и времени обслуживания запроса второго механика категории 1, третьего и т. д. Более того, эти утверждении распространялись бы на первого, второго и т. д. механиков категории 2.) Следовательно, карту RMULT используют для исключения такой неестественной корреляции. Конечно, в каждом из двух прогнозов модели было осуществлено одно и то же число приходов механиков, поскольку последовательности интервалов прихода механиков обеих категорий в двух моделях совпадают. По информации о текущем содержимом (Current contents) очереди, не показанной на рис. 3.28, кладовщик в обоих моделях оставил необслуженными OUEUg MAXIMUM C.ONTFNfb L 1НГ 6 AVERAGI' CONTENT -j \ .&?.4 fOTAL ENTRIES 14IJ ZERO ENTRIES 21 PERCENT 2ER0S 14.1 AVERAGE TIME/TRANS JO* «945 SAVbRAGE TIME/TRANS 41 1,6.57 ClUEUE MAXIMUM CONTENTS LINE в AVERAGE CUNlfcNT* 2. 60V» TOTAL e Niniis 140 2ER0 ENTRIES 21 PERCENT Z6RUS 14.1 AVERAGE TIME/TRANS 50 7.74J (AVERAGE TIME/TRANS 641.700 Рис. 3.28. Часть/распечатки результатов моделирования для модели рис. 3.27 и ее бесприоритетиого эквивалента, Дисциплина обслуживание: а — с приоритетами; 6 — без приоритетов 173
пять механиков в момент завершения рабочего дня. В реальной системе к кладовщику, по- видимому, не придут механики в течение последних пяти минут рабочего дня, а если это необходимо, то независимо от того, сколько осталось времени, работа будет продолжаться до тех нор, пока последний механик не будет обслужен. Позже будет показано, как приблизить модель к таким реальным условиям. Между результатами, полученными на модели примера 2С, и результатами, полученными на модели рис. 3.27, существуют значительные расхождения. Кроме того, что необходимо восстанавливать условия моделирования, остается в силе основной вопрос: действительно ли система с приоритетным обслуживанием лучше, чей без него при длительном моделировании? 3.20. Пример моделирования ЗС. Второе обращение к примеру 2С Для этого примера не нужно рассматривать ип. 2, 3, 4 и б, поскольку вся необходимая информация уже представлена ранее. 1. Постановка задачи. Необходимо изменить модель, показанную на рис. 3.27, таким образом, чтобы за один этап моделирования было исследовано 10 различных дней работы кладовой, как это описано в примере 2С. Кроме того, необходимо построить модель таким образом, чтобы модели без приоритетов н с приоритетами были исследованы в одном прогоне. Результаты моделирования должны состоять из двух рядов чисел, в каждом из которых должно быть 10 различных средних длин очереди, полученных для соответствующих дисциплин обслуживания. Надо рассчитать значение среднего и стандартных отклонений для каждого из рядов. Основываясь на полученных результатах, надо отметить, насколько лучше использование приоритетного обслуживания. 5. Распечатка программы (рис. ЗС.1). В целях экономии места карты 52—69 и 81—101 на рисунке не показаны. 7. Обсуждение. Использование модели. На рис. ЗС. 1 очень важно отметить две особенности. Во-первых, для обеих дисциплин, исследуемых в модели, карты RMULT используют между моделируемыми днями, следующими друг за другом. Во-вторых, необходимо отметить относительное расположение карт GENERATE, RMULT и CLEAR при движении от 10-го дня неприоритетного случая к первому дню для случая моделирования приоритетного обслуживания. Прежде чем приступить к обсуждению первой особенности, напомним, что необходимость использования первой карты RMULT для обеспечения неодинаковых начальных состояний для четырех генераторов случайных чисел была обоснована в параграфе 3.19. Телерь надо выяснить причину того, что карту RMULT используют между моделируемыми днями, следующими друг за другом. Например, почему карта «RMULT 741, 211, 483, 659» предшествует началу второго дня для неприоритетной (карта 46, рис. ЗС.1) и для приоритетной (карта 78, рис. ЗС.1) дисциплин? Понятно, что при таком использовании карты RMULT начальные значения для случайных чисел перед началом моделирования работы во второй день будут одинаковыми для обеих дисциплин обслуживания. Но есть ли необходимость в использовании карт RMULT? Почему просто не предоставить значениям случайных чисел оставаться такими, какими они были в момент завершения моделирования первого дня? Не будут ли ив этом случае значения генераторов в начале второго дня одинаковыми для двух дисциплин обслуживания очереди? Для данной модели ответом будет «нет». Сейчас мы поясним, почему. Моделирование каждого дня останавливается в конце восьмого моделируемого часа. В общем случае, следовательно, в модели могут оставаться яеобслужениыми механики в тот момент, когда моделирование данного дня завершается. Предположим, что непосредственно перед окончанием моделирования первого дня кладовщик завершает обслуживание в тот момент, когда механики категорий 1 и 2 находятся в очереди, н механик категории 1 находится в очереди дольше, чем механик категории 2. Кладовщик в системе без приоритетов будет обслуживать первым механика категории 1. В системе с приоритетами кладовщик начнет обслуживать механика категории 2. Если теперь моделирование завершается, модель без приоритетов сделает на одно обращение к генератору RN2 (являющимся аргументом функции времени обслуживания механиков категории 1) больше, чем в модели с приоритетами. Подобным же образом модель с приоритетами сделает на одно обращение больше к генератору RN4 (являющемуся аргументом функции времени обслуживания механиков категории 2), чем в модели без приоритетов. Значения генераторов RN2 и RN4 в конце первого дня моделирования, следовательно, будут в двух моделях различаться. Таким образом, есть вероятность того, что последние значения RN2 и RN4 различаются перед началом моделирования второго дня (см. также упражнение 1, с параграфа 3.21). Этим объясняется использование карты RMULT между последовательно моделируемыми днями: она дает уверенность в том, что значения генераторов случайных чисел в начале /-го дня будут одинаковыми для обеих дисциплин обслуживания, / — 2, 3, ...... 9, 10. (В гл. 4, в примере моделирования 4D показано, как такая необходимость в использовании карты RMULT
BLOCK NUMBER «LOG OPERATION A.B.CD.E.FtG SIMULATE COMMENTS I 2 3 4 S 6 7 8 9 10 II li 13 Ik 15 V6 NON-STANDARO RANOOM NUMBER SEOUENCE INITIALIZATIONS FOR 1ST RUN RMULT 51t,39l7,6u3 FUNCTION DEFINITION(S) IATI FUNCTION RN1.C2 0.60/1.TBI IAT2 FUNCTION CN3.C2 О.1Й0/1 .60 I STVM1 FUNCTION RN2.C2 0,210/1.391 STYM2 FUNCTION &N4.C2 0.70/1.131 TAG! TAG2 :t MODEL SEGMENT 1 GENERATE «UEUE SEIZE DEPART ADVANCE RELEASE TERMINATE FN*I ATI LINE CLERK LINE FNtSTVMl CLERK MOOEL SEGMENT 2 GENERATE OUEUE SEIZE DEPART АО VANCE RELEASE TERMINATE FNIIAT2 LINE CLERK LIKE FNSSTYM2 CLEKX MODEL SRGMENT 3 GENFRATE TERMINATE 2 8600 1 CATEGORY 1 MECHANIC INTER- ARRIVAL TIMES CATEGORY 2 MECHANIC INTER-ARRIVAL TIMES CATEGORY 1 MECHANIC SERVICE TIMES CATEGORY 3 MECHANIC SERVICE TIMES CATEGORV t MECHANICS ARRIVE ENTER BACK OF LINE CAPTURE THE CLERK LEAVE THE LINE USE THE CLERK FREE ГНЁ CLERK LFAVfc THE TOOL CRIB AREA CATEGORY Z MECHANICS ARRIVE ENTER BACK OF LINE CAPTURE THE CLERK LEAVE THE LINE USE TM£ CLERK FREE THE CLERK LEAVE THE TOOL CRIB AREA TIMER ARRIVES AFTER в HOURS SHUT OFF THE BUN CONTROL CAPOS ANO SLOCK О РЕКА NO «IE-DEFINITIONS STArtT I START 1ST RUN RMULT 741«211.«83.659 SET RANOOM SEOUENCES FOR 2ND RUN CLEAR CLEAR FOR 2ND RUN START 1 START 2ND »UN RMULT 1 1 1 ■ IS?, 53*' k\ 1 SET RANOOM SEQUENCES FOR 3RD RUN CLEAR CLEAR FOR 3«D RUN START I START 3RD RUN САДО NUMBE R I 2 3 4 5 6 7 В 9 10 II 12 13 14 IS 16 17 18 19 20 21 22 23 24 гь 26 2T 28 29 30 31 32 33 3« 3b 36 37 38 39 40 »i 42 43 44 45 46 47 4* 49 SO SI RM\M_T 41,52 7,*,«,•> CLEAR START 1 TAGI GENERATE FNIIAT1....1 SET RANOOM SEQUENCES FOR IOTH «uu CLEAR FOR 10TH RUN START 10TH RUN RE-CONFIGURE FOR PRIORITY DIFFERENCES 4ULTlPLt OEFINlTION OF SYMBOL IN ABOVE CARD в TAG2 GENERATE FN11AT2....2 RE-CONFIGURE FOR PRIORITY DIFFERENCES MULTIPLE DCFINITION OF SYMBOL IN ABOVE CARD RMULT SU. 39,7.663 RESTORE 1ST RUN RANDOM SEOUENCE Ь CLEAR CLEAR FOR UTH RUN START 1 START 1ITH RUN RMULT 741 ,2 I 1.4«3,6S9 RESTORE.2ND RUN RANOOM SEQUENCES CLEAR START CLEAR FOR IZTH RUN START I2TH RUN TO 71 •72 73 74 73 76 77 78 79 80 RMULT 41,527,9,55 RESTORE IOTh Run RANDOM SFOUENCES CLEAR CLEAR FOR 20TH HUN START 1 START 20TH HUN END RETURN CONTROL .TO OPERATING SYSTEM 102 юз 104 105 Рве ЗС1. Распечатка программы примера моделирования ЗС
между последовательно моделируемыми днями может быть исключена. Упражнения 7, б и 7, в параграфа 4.19 требуют, чтобы техника моделирования, используемая в гл. 4, была применена к примеру ЗС). Рассмотрим теперь, каким образом реализован переход от 10-го дня с иеприоритетиой дисциплиной к первому дню с приоритетной дисциплиной. В этом переходе используют два переопределения блоков GENERATE (карты 73 и 74 на рис. ЗС.1) и карты RMULT и CLEAR (карты 75 и 76). Для восстановления условий, которые имели место в начале моделирования первого дня в случае модели без приоритетов, необходимо уделить внимание правильности следования этих карт. Предположим, например, что вместо последовательности, показанной на рис. ЗС.1, карты 73, 74, 75 и 76 будут расположены в таком порядке: «MULT 511.39,7,663 TAG1 GENERATE FNjiIATI,,..l TAG2 GENERATE FN?IAT2.,„2 CLEAR Карта RMULT установит генераторы случайных чисел в состояния, которые они имели место в начале моделирования первого дня без приоритетов. Переопределение блоков GENERATE приведет к тому, что интерпретатор не станет пользоваться старыми блоками GENERATE для начальных приходов. Планирование первых приходов будет выполнено с использованием новых блоков GENERATE. (См. параграф 2.34, где описано, какие действия выполняются при переопределении карты GENERATE.) Такое планирование потребует первого обращения к только что установленным генераторам RNI и RN3 (для планирования приходов в блоки GENERATE с именами TAG1 и TAG2 соответственно). Далее, когда будет обрабатываться карта CLEAR, эти приходы, запланирован ныедля блоков GENERATE, будут выведены из цепи будущих событий, помещены обратно в пассивный буфер и заменены на заново запланированные приходы. Это, в свою очередь, будет означать, что произойдет второе обращение к генераторам RN1 и RN3 для определения времени первого прихода в два соответствующих блока GENERATE. Но для первого дня в модели без приоритетов значения времени первых приходов в эти же блоки GENERATE были определены при нервом обращении к RN1 и RN3. А это означает, что условия моделирования для первого дня не будут совпадать для альтернативных моделей с различными дисциплинами обслуживания. Полагаясь на проведенные рассуждения, мы оставляеч в качестве упражнения доказательство того факта, что порядок следования карт Таблица ЗС.1. Результат моделирования примера JC Деиь 1 2 3 4 5 6 7 8 9 10 Среднее Стандартное отклонение Число входов в очередь 148 150 146 145 152 142 147 141 1 148 154 147,3 3,9 Средне» содержи «ос очереди Без приоритетов 2,609 3,946 2,29а 1,839 3,216 1,129 2.516 1,218 2,082 3,030 2,388 0,833 С приоритетами 1,824 2,754 1,6Я8 1,350 2,317 0,906 1,826 0,945 1,516 2,174 1,723 0.550 73, 74, 75 и 76 на рис. ЗС.1 выполняет необходимые действия, при которых первые обращения к каждому из вновь установленных генераторов RN1 и RN3 вызывают планирование первых приходов в блоки GENERATE, как этого требует логика моделирования. Упражнения I, а и б параграфа 3.21 дают дополнительные возможности подумать, какой эффект вызовут перестановки карт 73, 78, 75 н 76. Распечатка результатов. (Время, необходимое для моделирования на ЭВМ IBM 360/67, равно 8,1 с.) В табл. ЗС.1 собраны результаты моделирования. Столбец «число входов в очередь» показывает относительно малую вариацию значения числа поступлений. Экстремальными являются значения 141 и 154, каждое из которых отклоняегся от среднего примерно на 4,5%. Совсем иначе обстоит дело в столбце «среднее содержимое очереди». Для случая моделирования без приоритетов минимальное и максимальное значения равны 1,129 и 3,215; они отличаются от среднего на 53 и 35 % соответственно. Стандартное отклонение составляет 0,833, или 35% от среднего. Аналогичная картииа имеет место для модели с приоритетами. Большая вариация, полученная по статистике о длине очереди, объясняет, почему результат моделирования для одного дня в примере моделирования 2С н результат моделирования с управлением условиями моделирования (см. параграф 3.18) в большой степени различаются. На основе полученных в табл. ЗС.1 значений средних стоимость ожидания для иеприоритетиой и приоритетной дисциплин составляет приблизительно 172 и 124 доллара в день соответственно. Отсюда следует, что ежедневная экономия при приоритетном обслуживании механизмов составляет около 48 долларов.
3.21. Упражнения I. Пункты от а до е этого упражнения посвящены вопросам восстановления условий моделирования для модели примера ЗС. а). Возвращаясь к обсуждению использования модели, предположим, что карты 73, 74, 75 и 76 на рис. ЗС.1 представлены в следующем порядке: TAG1 GENERATE FN$ IAT1,,,.] TAG2 GENERATE FN$ 1АТ2„„2 CLEAR RMULT 511,39.7,663 Если бы это было сделано, условия моделирования для первого дня моделирования с приоритетами отличались бы от условий моделирования первого дня для случая без приоритетов. Поясните, на каком основании сделано такое утверждение. б). Предположим теперь, что карты 73, 74, 75 и 76 на рис. ЗС.1 установлены в следующем порядке: CLEAR RMULT 511,39,7,163 TAG1 GENERATE FN* IATI.,,,1 TAG2 GENERATE FN$ 1ЛТ2.„,2 В этом случае условия моделирования для первых дне§ будут совпадать. Поясните, почему это так. в). Карты 46 (RMULT) и 47 (GLEAR) на рис. Х.1 устанавливают новое состояние четырех генераторов случайных чисел и очищают модель перед началом моделирования второго дня при неприоритетной дисциплине обслуживания очереди. Что будет, если поменять эти две карты местами? "Если поменять местами не только карты 46 и 47, но и соответствующую им пару при моделировании с приоритетами (карты 78 н 79), останутся ли одинаковыми условия моделирования для второго дня обеих дисциплин обслуживания? Почему да или почему нет? г). В примере моделирования ЗС генераторы RNI и RN3 являются аргументами функций IAT1 и IAT2 соответственно (см. карты 9 и 11 на рис. ЗС.1). Предположим, что модель видоизменилась таким образом, что RNI стал аргументом обеих функций. Будут ли в этом случае одинаковыми условия моделирования? Почему да или почему нет? д). Предположим, что модель на рис. ЗС.1 видоизменилась так, что RN1 стал аргументом функций 1АТ1 и STYM1, a RN3 стал аргументом IAT2 и STYM2. Будут ли в этом случае одинаковыми условия моделирования? Почему да или почему иет? е). При обсуждении использования модели было объяснено, почему значения RN2 и RN4 в конце моделирования могут зависеть от реализуемой дисциплины обслуживания. Могут ли также и значения RN1 и RN3 в конце моделирования зависеть от реализуемой .дисциплины обслуживания? Если нет, то подумайте, можно лн не задавать параметры А и С во всех картах RMULT модели на рис. ЗС.1 (за исключением, конечно, карты 5 и 73)? Можно лн при этом исследовать две дисциплины обслуживания при одинаковых условиях моделирования? Оставшиеся пункты этого упражнения касаются проблемы использования последовательностей случайных чисел в примере моделирования ЗА. В этом примере функции ASSEM и FIRE используют RN1 в качестве аргумента (см. карты 5 и 8 на рис. ЗА.З). ж). Какая часть обращений RN1 используется для розыгрыша чисел в соответствии с распределением времени сборки? з). Какая часть обращений к RM1 используется для розыгрыша чисел в соответствии с распределением времени обжига? и). Проанализируйте следующее утверждение. Если бы RN1 и RN2 использовались в качестве аргументов функций ASSEM и FIRE соответственно н если бы эти два генератора имели одно и то же начальное значение, то модель примера ЗА была бы неверной. 2. Упражнение 7 параграфа 2.19 предлагает проверить два различных прибора с целью определения, какой из них более экономичен при аренде для работы в кладовой. Данные о двух приборах представлены в табл. У2. Простой механика стоит 18 долларов к час, если он находится в кладовой. Таблица У2 1 !рибор 1 2 Стоимость, дилларио а чле 4 4.5 Распределение времени обслуживания, с 280±150 280*60 Предположим, что обычное моделирование восьмичасового рабочего дня выполняют для случая использования каждого из этих приборов, причем раздельные прогоны модели реализованы с использованием версии 1 системы GPSS/360 (с неявным розыгрышем в соответствии с распределениями интервалов прихода и времени обслуживания в блоках GENERATE и ADVANCE). При этом получается, что прибор 1 лучше, чем прибор 2; иначе говоря, среднее содержимое очереди к прибору 1 получается меньшим, чем очереди к прибору 2. Эти результаты прямо противоположны ожидаемым. 12 Т. Дж. Шравбер 177
а). Если вы еще не сделали этого в упражнении 7 параграфа 2.19, попробуйте объяснить почему возможен такой результат, .не совпадающий с интуитивно предсказанным. б). Обдумайте возможность восстановления условий моделирования при необходимости исследования эффективности использования каждого из приборов. в). Выполните моделирование с целью определения, какой из двух приборов в действительности более зкономичен. 3. Упражнение 5 параграфа 3.17 требует выполнения сравнения двух альтернативных конфигураций системы. В соответствии с предпосылками примера моделирования ЗС покажите, как следует строить модель на GPSS для упражнения 5 параграфа 3.17, чтобы два альтернативных варианта были исследованы при идентичных условиях моделирования. 4. В упражнении 6 параграфа 3.17 исследуются две альтернативные дисциплины обслуживания очереди. Покажите, аналогично тому, как это сделано в примере моделирования ЗС, как следует провести исследование, которое гарантировало бы сравнение альтернативных вариантов при одинаковых условиях работы. 5. Переменной при исследовании в примере моделирования ЗВ является число мест на стоянке автомобилей, где последние ждут обслуживания на мойке. Разработайте модель, на которой можно было бы исследовать поведение системы при одинаковых условиях. Под одинаковыми условиями подразумевается, что время прибытия автомобилей должно точно повторяться при исследовании различных конфигураций. Более того, независимо от решения вопроса о том, остаться машине или нет, /-й автомобиль должен иметь одинаковое значение времени обслуживания во всех конфигурациях системы для у = 1, 2, 3, ... Например, предположим, что первые пять автомобилей требуют обслуживания, продолжительность которого показана в столбце 2 табл. У5. Последние три столбца таблицы показывают возможное поведение этих первых пяти автомобилей в зависимости от исследуемой конфигурации. Поскольку только Таблица У5 Номер «ВТо- мобн.чя 1 л. 3 4 5 Время, требуемое на обслу- жиоаинс, иин 8 5 6 3 4 Остается ли автомобиль на обслуживание? 1-е место Да Да Нет Нет Да 2-е место Да Да Да Нет Да 3-е м сто Да Да Да Да Да автомобили 1, 2 и 5 остаются для обслуживании в случае одноместной стоянки, первыми тремя интервалами времени обслуживания являются 8, 5 и 4 мин. Первые три автомобиля остаются в случаях двух- и трехместной стоянки, однако первыми интервалами обслуживания, получающимися для обеих этих конфигураций, являются 8, 5 и 6 мип. Таким образом, следует считать, что исследования проводят при различных условиях. 3.22. Особенность обработки блока GENERATE Для большинства блоков GPSS расчет значений операндов блоков необходим при входе транзактов в блок. Исключением из этого правила является блок GENERATE. Только в момент выхода транзакта из блока GENERATE необходимо рассчитать значение операндов, причем это делают для планирования следующего входа в этот блок. Тем не менее во время входа транзакта в блок GENERATE интерпретатор GPSS рассчитывает значения операндов блока. Интерпретатор разработан таким образом, что всегда и для любого блока расчет операндов происходит во время вхо4а транзакта, в том числе и в блок GENERATE. При входе транзакта в блок GENERATE интерпретатор делает попытку немедленно ввести транзакт в следующий блок. Если это возможно, интерпретатор начинает процедуру планирования прихода транзакта-последова- теля в блок GENERATE. Можно было бы считать, что процедура планирования использует значения операндов блока, которые былн определены во время входа транзакта в блок. Но вместо этого для осуществления планирования интерпретатор вновь рассчитывает значения операндов блока GENERATE. Таким образом, во время входа транзакта в блок GENERATE рассчитываются операнды блока, а затем, когда тот же транзакт выходит из блока, операнды рассчитываются заново. Этот лишний расчет операндов в блоке GENERATE должен учитываться пользовате- GENERATE 420.360...1 Рмс. 3.29. Пример блока GENERATE, для которого не выполняется лишнее вычисление значений операндов GENERATE ( 1 , \FN$1AT1„„1 1 Рис. 3.30. Пример блока GENERATE, для которого выполняется лишнее вычисление значений операндов
лем, который намеревается управлять условиями моделирования. Необходимость в этом зависит также от вида операндов блока GENERATE. Рассмотрим, например, блок GENERATE на рис. 3.29 (блок соответствует карте 5 на рис. 3.26). В качестве операндов используются константы. Следовательно, значения операндов рассчитывать не надо. Операнд А просто равен 420, операнд В равен 360 и т. д. Здесь нет никаких трудностей. Рассмотрим теперь блок GENERATE, изображенный на рис. 3.30 (этот блок соответствует карте 20 иа рис. 3.27). Расчет операнда А требует расчета функции IAT1. Из значений карт 9 и 10 на рис. 3.27 следует, что аргументом функции является RN1. Следовательно, происходит обращение к RNJ и полученное значение используется для расчета функции. Это означает, что при входе транзакта в блок GENERATE (рис. 3.30) используется значение, полученное от RN1 для расчета операнда А, но это значение никогда не будет использовано. Когда тот же транзакт покидает блок GENERATE, происходит новое обращение к RN1 для получения значения аргумента, требуемого для расчета времени прихода транзакта-лоследо- вателя. В этом примере, следовательно, только каждое второе обращение к RNI используется для фактического расчета интервала времени. Остальные обращения к RN1 просто отбрасываются; это лишние расчеты значений операндов блока GENERATE. При необходимости управления условиями моделирования очень важно не забывать эту особенность обработки блока GENERATE. Знание этой особенности используется нами в книге далее (в примере моделирования 5D, например). Это делается для гарантированного повторения условий моделирования, которое в противном случае не имело бы места. 3.23. Упражнения 1. В соответствии с полученной выше информацией стало ясно, что часто каждое второе значение, патученяое от генератора случайных чисел при моделировании на GPSS, пропадает. Тем не менее в табл. 3.14 использовано каждое обращение к RN1 и ни одно из них не пропадает. Поясните, почему это так. 2. Посмотрите внимательно на модель, приведенную на рис. 3.27. Предположим, что карта RiMULT изымается из модели и в качестве значений генератора RNJ выступают числа из табл. 3.1. Рассчитайте первые три значения интервалов прихода транзактов, которые должны войти в модель через блок GENERATE, находящийся в позиции 1 (см. карту 20, рис. 3.27). S
ЧАСТЬ I 4.1. Введение В гл. 2 для определения операндов блоков (кроме тех, которые задавались по умолчанию) использовали константы. В таком случае говорят, что значения операндов заданы непосредственным образом. Это наиболее простой метод определения значений операндов. Существует также возможность определения значений операндов косвенным образом посредством использования переменных, значения которых используют в качестве операндов. В гл. 3 мы использовали косвенную спецификацию значении операндов. В качестве операндов блоков выступали функции, и имелось в виду, что значениями операндов как раз и являются значения функций. В частности, мы использовали функции для кослешюго определения значений операндов А и В и блоках GENERATE и ADVANCE. В данной главе описаны дополнительные методы косвенной спецификации операндов блоков моделей GPSS. Источники всех значений операндов могут быть разделены, грубо говоря, на две категории: атрибуты системы и атрибуты транзактов. Атрибуты системы — это параметры, которые описывают состояние модели. Такие количественные показатели, как «текущее содержимое очереди 5» или «число единиц времени, в течение которых занят прибор», являются типичными системными атрибутами. Атрибуты, подобные указанным, автоматически поддерживаются интерпретатором GPSS. Их называют стандартными числовыми атрибутами (СЧА). Их значении, которые обычно меняются в процессе моделирования, доступны пользователю. Доступ осуществляется при использовании специальных наименований этих атрибутов. При использовании этих наименований в качестве операндов, значениями последних становятся соответствующие текущие значения атрибутов. Построение более сложных моделей Транзакты также могут иметь некоторые числовые характеристики. Одной из них является уровень приоритета, о котором мы уже говорили, но пока еще пе использовали в качестве операнда. Кроме того, каждый транзакт снабжается некоторым числом параметров. Транзакт может иметь до ста различных параметров. Параметры имеют целые значения. Их можно задавать и изменять в соответствии с логикой моделирования. Значения параметров также можно использовать в качестве значений операндов блоков модели. Наконец, транзакты снабжаются такой характеристикой, как отметка времени. Она может быть интерпретирована как время «рождения» транзакта или время входа транзакта в модель. В определенном смысле отметка времени дает информацию об относительной производительности моделируемой системы. Кроме описания методов использования системных атрибутов и атрибутов транзактов, в данной главе вводится такой элемент, как таблица. С помощью таблиц могут быть собраны и автоматически табулированы статистические данные о работе модели. Это дает удобный и полезный метод исследования свойств случайных переменных, используемых в моделях GPSS. 4.2. Стандартные числовые атрибуты В процессе моделирования интерпретатор GPSS автоматически регистрирует и корректирует некоторую информацию, касающуюся раз-
личных элементов, используемых в модели. Некоторая часть этой информации распечатывается в конце прогона модели. Такой информацией являются счетчики блокоп, нагрузки приборов и. многоканальных устройств, средние времена пребывания в очередях и т. д. Кроме информации, получаемой в конце прогона модели, существует и такая информация, которая доступна в процессе моделирования. Сам процесс моделирования может управляться динамически путем непосредственного воздействия со стороны атрибутов модели. Например, интенсивность, с которой прибор обслуживает требования, может п действительности зависеть от числа требований, ожидающих обслуживания. При возрастании длины очереди прибор может работать быстрее. Для моделей реальных систем может оказаться необходимым, чтобы время обслуживания зависело от текущей длины очереди. Если такой атрибут доступен в системе, его можно использовать для определения времени обслуживания при каждом поступлении требования на обслуживание. В табл. 4.1—4.3 показаны различные числовые атрибуты для приборов, многоканальных устройств и очередей соответственно. На эти атрибуты можно ссылаться в процессе моделирования. Атрибуты, представленные в таблицах, называются стандартными числовыми атрибутами, или просто СЧА. (Кроме упоминаемых в данном параграфе, существуют и другие виды СЧА. Они будут введены далее в книге по мере надобности. Полный список СЧА дан в приложении I.) Имя стандартного числового атрибута состоит из двух частей. Первая часть указывает групповое имя. Оно идентифицирует одновременно и тип элемента (т. е. прибор, многоканальное устройство или очередь) и тип информации (например, счетчик занятий прибора, нагрузку многоканального устройства, текущее содержимое очереди). Вторая часть иден- Таблица 4.1. Стандартные числовые атрибуты для приборов Таблица 4.2. Стандартные числовые атрибуты для многоканальных устройств Наименование ' F/ или F* имя FC/ или FC$ ими FR/ или FR$ имя FT/ или FTf имя Значение О, если прибор но занят; 1, если свободен Число занятий прибора Нагрузка прибора, выраженная в долях тысячи Целая часть значения средвего времени задержки трапэакта иа приборе Нам мснов.nine ЗнппРиие R/ или R$ имя S/ или S$ имя S.A/ или SAj имя SC/ или SC$ имя SM/ или SM4 имя SR/ или SRg имя ST/ или ST$ имя F.-w кость незаполненной част устройства Емкость заполненной части устройства Целая часть средвего заполнения устройства Счетчик числа входов в многоканальное упройстпо. При каждом выполнении блока ENTER для устройстиа значение счетчика увеличивается на величину операнца В этого блока .Максимально занятая емкость устройства. Запоминает максимальное значение S/ (или SS имя) Нагрузка многоканальвого устройства, выряженная в долях тысячи Целая часть среднего времени пребывания трьнгакта в устройстве. Вычисляется для всех входов Таблица 4.3. Стандартные числовые атрибуты дли очередей Наименование Значение Q/ или Q$ имя QA/ или QA$ имя QC/ или QC$ ими QM/ или QM$ имя QT/ или QTt вмя QX/ или QXS имя QZj или QZ$ имя Текущее .чначеиио длины очереди (текущее содержимое) Целая часть среднего значения длины очереди Число пходоп в очередь. При каждом выполнении в блоке QUEUE для конкретной очереди значение QC/ (или QC$ имя) увел гчнвяется иа величину операнда В этого блока Максимальное значение длины очереди. £>го — максимальное значение, которое принимало Q{ (или QS имя) Целая часть среднего времени пребывания л очереди для всех пходов, т. с. QC/ (или ОС имя). Уто значит, что нулевые входи также учитываются Целая часть среднего времени пребывания л очереди для входов «QC/ мияус QZj» (или SQCsJ имя— QZ$ имя), т. е. за исключением нулевых входов Число нулевых входов в очереди Это число входов, время пребывания которых в очереди было равно нулю 1 / является номером конкретного, интересующего нас првбегр». Если им" яадяно символически, то оно записывается » лоицвн «имя». тифицирует конкретного члена группы (т. е. какой прибор, какое многоканальное устройство, какая очередь). В табл. 4.1—4.3 имена групп различных СЧА записаны заглавными буквами в столбце «Наименование». Вместе с именем группы записывается числовое или 181
символическое имя соответствующего члена данной группы. Номер представляется в таблице буквой у; символическое имя записью «имя». Например, второй элемент табл. 4.1. FC/ описывает число занятий /"-го прибора в течение времени моделирования. Фактически / — это номер прибора в модели. Например, FC12 означает счетчик занятий прибора с номером 12, аналогично FC3 — счетчик занятий третьего прибора и т.д. Второй элемент табл. 4.1, записанный как FC$hmh, является числом занятий прибора, имеющего символическое имя. Например, запись FCSJOE означает число занятий прибора JOE; FCSKATHY означает число занятий прибора с именем KATHY и т. д. Из этих примеров следует, что знак доллара записывается между групповым именем стандартного числового атрибута и символическим именем соответствующего члена данной группы. Все стандартные числовые атрибуты, перечисленные в табл. 4.1—4.3, являются целочисленными. Некоторые атрибуты являются целочисленными, например счетчик занятий прибора, текущее содержимое очереди, число входов в многоканальное устройство и т. д. Другие атрибуты обычно могут иметь дробную часть, например среднее содержимое многоканального устройства, среднее время пребывания в очереди. В GPSS принято хранить только целые части значений стандартных числовых атрибутов. При попытке записи значения нагрузки прибора или многоканального устройства целым числом получился бы ноль (или в вырожденном случае 1), поскольку нагрузка выражается в долях единицы. Чтобы избежать этого, стандартные числовые атрибуты, определяющие нагрузки приборов и многоканальных устройств, имеют значения, выраженные в долях тысячи. Например, если прибор находится в работе в течение 58,2% времени моделирования, то его нагрузка равняется 0,582. Выраженная в долях тысячи нагрузка прибора имеет вид 582. Следует обратить внимание на некоторые из стандартных числовых атрибутов, перечисленных в табл. 4.1—4.3, особенно иа те из них, которые относятся к многоканальным устройствам и очередям. Вспомним, что все стандартные числовые атрибуты являются не чем иным, как целой частью статистических данных, автоматически собранных GPSS и распечатанных для различных приборов, многоканальных устройств и очередей модели. (В упражнениях 2, 3 и 4 параграфа 4.5 предложено назвать различные стандартные числовые атрибуты, относящиеся к статистике по работе приборов, многоканальных устройств и очередей по мере их появления среди результатов моделирования некоторых из примеров моделирования гл. 2.) Значения СЧА для приборов совпадают с аналогичными статистическими данными для одноименных приборов. Такое же соответствие имеет место и для многоканальных устройств и очередей за исключением случая использования ненулевого операнда В в блоках ENTER н LEAVE, QUEUE и DEPART. В этом случае стандартные числовые атрибуты для многоканальных устройств и очередей должны интерпретироваться с учетом того, что в многоканальном устройстве транзакты занимают каналы, а в очередях мы считаем элементы содержимого, а не транзакты. Здесь было бы уместно вспомнить рассуждения, относящиеся к статистическим данным для многоканальных устройств, изложенным в параграфах 2.37 и 2.39 (в примере моделирования 2Е) гл. 2. Статистические данные об очередях были описаны в параграфах 2.15 и 2.17 (в примере моделирования 2А) гл. 2. Счетчики блоков также можно рассматривать как стандартные числовые атрибуты. Групповыми именами для счетчиков текущего содержимого и счетчика входов являются W и N соответственно. Так, WSBLOCK1 является числом транзактов, находящихся в блоке с именем BLOCK1, N*PATHC — число транзактов, вошедших в блок с именем РАТНС. Позиция, занимаемая блоком, может также быть выражена в числовом виде. Например, запись W17 обозначает счетчик текущего содержимого блока, занимающего семнадцатое место в модели. Как указывалось ранее, блоки, на которые необходимо делать ссылки, должны*, как правило, иметь символические имена. Это означает, что при необходимости использования счетчиков блоков в логике работы модели чаще употребляют записи типа >У$имя и N$hmh. Таймер относительного времени также может быть использован в качестве элемента данных. Имя таймера относительного времени — С1. Значение таймера абсолютного времени недоступно в модели и не является стандартным числовым атрибутом. Тем не менее воспользоваться значением таймера абсолютного времени можно. Далее мы поясним, как это сделать. Отметим, что счетчики блоков содержат целочисленные значения. В силу того обстоятельства, что в GPSS время имеет целочисленные значения, С1 также имеет целочисленное значение. Генераторы случайных чисел RN/ являются обычными стандартными числовыми атрибутами. Дискретные и непрерывные функции GPSS, рассмотренные нами в гл. 3, могут иметь нецелые значения. В общем случае истинное
значение функции содержит дробную часть. Является ли значением функции целое или дробное число, зависит от контекста. 1. Если функция употребляется в качестве операнда В блокоп GENERATE или ADVANCE, то используют истинное значение. (Существуют еще два контекста, в которых может быть использовано истинное значение функции, но нами они еще не рассмотрены.) 2. В любом, другом контексте используют только целые значения функции. И, наконец, как стандартные числовые атрибуты GPSS также можно рассматривать константы. Групповое имя констант — К. Номером члена этой группы является сама констапта. Так, КЗ означает константу 3, К561 является константой 561 и т. д. При использовании в GPSS констант употребление буквы К необязательно. В этой книге константу всегда записывают без буквы К. 4.3. Использование стандартных числовых атрибутов Наиболее очевидным применением стандартных числовых атрибутов является их использование в качестве операндов блоков модели. Несколько примеров такого применения даиы на рис. 4.1. При входе транзакта в блок ENTER (рис. 4.1, а), например, он занимает R3 канала устройства с номером 3. Поскольку R3 означает число доступных каналов этого же многоканального устройства, транзакт занимает все остававшиеся до его входа в блок свободные каналы. Пра входе транзакта в блок ADVANCE (рис. 4.1, б) он остается там на время, численно совпадающее с числом занятий прибора EMMA, и т. д. Эти примеры показывают использование СЧА вне контекста, поэтому они не очень показательны. Тем не менее они иллюстрируют техвику записи стандартных числовых атрибутов в качестве операндов различных блоков моделей иа GPSS. Значительно менее очевидным'является использование стандартных числовых атрибутов в качестве аргументов функций. Функции, рассмотренные в гл. 3, всегда в качестве аргумента использовали генераторы RN/, поскольку их применяли для розыгрыша случайных чисел в соответствии с различными распределениями. Тем не менее не обязательно, чтобы аргументом функции была запись RN/. Рассмотрим, например, дискретную функцию, представленную на рис. 4.2, а. Аргументом этой функции является счетчнк входов в блок с именем MARY. При обращении к функции в процессе моделирования в качестве независимой переменной используют этот счетчик. Значение же функции вычисляется обычным образом, как зто принято для дискретных функций. Соответствие между значениями аргументов и значениями функций представлено графически для этого примера на рис. 4.2, б. Аргументы, значения которых меньше или равны 5, приводят к значению функции, равному 1. Аргументы, значения которых меньше или равны 8, но больше 5, приводят к значению функции, равному 2, и т. д. Здесь, однако, следует отметить две важные особенности. 1. При использовании аргументов, отличных от RN/. существует ограничение, заключающееся в том, что значениями аргументов должны быть целые числа. Это следует из того, что в GPSS стандартные числовые атрибуты являются целочисленными. 2. Когда аргумент функции выходят за пределы, описанные при определении функции, значения последней принимаются равными ближайшим описанным значениям. В примере на рис. 4.2 значения аргумента ограничены величинами 5 и 15. Как только что было указано, при значениях аргумента, меньших 5 (т. е. за пределами .нижней границы), значениями функции является число I. Для аргументов, больших 15 (т. е. за пределами верхней границы), в качестве значений функции используется число 7. Функции, использующие в качестве аргумента стандартные числовые атрибуты, могут быть как дискретными, так и непрерывными. Пусть функция, изображенная на рис. 4.2, будет непрерывной, а не дискретной. Для переопределения функции на непрерывную достаточно поменять запись D4 в карте определения ADVANCE FCSEMMA DEPART v-^v QC7 т •> .) Рис. 4.1. Примеры использования в качестве операндов олоков стандартных числовых атрибутов: « - R/:.* - РС$имя; « ~"qc/ 183
LOCATION OPERATION • |» ioni"js|a|i«|rtii»|i?|i« ||л./ .ewjaj/. i л. .у,1А,л aAcAE.f 'itMnl» ji>|»«pij>t|»[i»pao|ii|g|M SisdJ» JF.UIAtT.l^l*. HSMAAt..JlA ..— j.. ^_ a) ff - 8, r ' i ■ о о - ■ ■ о ■И" ' О ,-,l_, I Ь_1 L_J U—I I 1 1—L I "I I О 2 k 6 8 10 12 Ik N$MARY Рис. 4.2. Пример использования счетчика блока в качестве аргумента дискретной функции: а — карта определения функции; б — графическая интерпретация функции функции ua С4 (рис. 4.3, а). Изменение функции на непрерывную было пояснено в гл. 3. При вычислении значения функции сначала высчитывается интервал, на который падает значение аргумента. Затем на этом интервале выполняется линейная интерполяция. Истинное значение функции в общем случае может быть дробным. Будет ли использовано истинное № LOCATION ОРЕВДГЮи, • |t'lOlll,l>Tl>U|ll|ll|i'Jil aKLZiti,|2|/.l.Q.,.VJA.i7l | х »,e,C.O.L,f >,«|j' IjjJhI» ji)l«|j ||г«л|м I ii I »[и|и|)» » ■us- at ■*• 2 J l_ J U_I L L 8 10 N$MARY S) 12 1k Рис. 4.3- Пример использования счетчика блока в качестве аргумента непрерывной функции: а — карта определения функции; б —графическея интерпретация функции значение или только его целая часть, как указывалось ранее, зависит от контекста. На рис. 4.3, б представлена графическая интерпретация функции, определенной на рис. 4.3, а. Соседние точки соединяются прямыми, как требует использование линейной интерполяции. При выходе аргумента функции за границы определения значение функции определяется значениями ближайшей точки. Эта ситуация в точности идентична ситуации, которая имеет место при дискретной функции. Независимо от того, определена ли функция, приведенная на рис. 4.3, а, как дискретная или как непрерывная, при выходе аргумента за величину 15 значением функции будет число 7. Подобным же образом, если аргумент меньше 5, значением функции будет число 1. 4.4. Пример моделирования 4А. Влияние длины очереди на среднюю интенсивность обслуживания 1. Постановка задачи. 6 системе массового обслуживания с одним прибором и очередью имеет место пуассоиовский входящий поток с интенсивностью 12 приходов в час. Обслуживание является экспоненциальным, но среднее время обслуживания зависит от числа требований, находящихся в очереди к прибору. Эта зависимость представлена в табл. 4А.1. Таблица 4A.I. Среднее врем*,, обслуживания как функция длины очереди в примере моделирования 4А Длина очереди 0 1 или 2 3, 4 шяя б 6 и более Среднее время обслуживания, мии 5,5 5,0 4,5 4,0 Необходимо построить GPSS — модель си- стемы и с ее помощью оценить фактическое среднее время обслуживания. Необходимо также получить ответ на вопрос, справится ли прибор с нагрузкой при увеличении интенсивности входящего потока на один приход в час или же очередь будет бесконечно увеличиваться. 2. Метод построения модели. Последовательность используемых блоков для моделирования описанной системы остается такой же, как и в случае моделирования пуассоновского входящего потока и экспоненциального обслужива- 184
ния. Единственным добавлением к разработанной ранее схеме моделирования является включение в модель дискретной функции, в которой текущее содержимое очереди является аргументом. Это необходимо для учета длины очереди при определении интенсивности обслуживания и использования дискретной функции для определения среднего значения интенсивности обслуживания. 3. Таблица определений. Единица времени: 1 с. Таблица 4А.2. Табляна определений примера моделирования 4А Элементы OPSS ТраТШКТЫ Приборы: SURVR Функции-. MEAN XPDIS Очередн: WAIT Интерпретация Клиенты Обслуживающий дрибор Функция, определяющая среднее время обслуживания в зависимости от длины очереди, как показано в табл. 4A.I . Функция для розыгрыша чисел в соответствии с экспоненциальным распределением со средним, равным единице Регистратор очереди для сбора статистики о состоянии очереди перед прибором 4. Блок-схема. GENERATE V^QO.FN^XPDIS] QUEUE \ 1 SEIZE I DEPART 1 waitN л SURVR f \ wait) ADVANCE ENSMEAN FN$XPDIS " RELEASE SURVR V T TERMINATE ПРИХОД ТРЕБОВАНИЙ ПРИСОЕДИНЕНА К ОЧЕРЕДИ ЗАНЯТИЕ ОБСЛУЖИВАЮЩЕГО ПРИБОРА УХОД ИЗ ОЧЕРЕДИ ОБСЛУЖИВАНИЕ ПРИБОРОМ ОСВОБОЖДЕНИЕ ПРИБОРА УХОД ИЗ МОДЕЛИ 1-Й СЕГМЕНТ МОДЕЛИ Рнс. 4А.1. Блок-схема примера моделирования 4А 185
5. Распечатка программы. «LOCK number ♦иос ijpi ration simulate А.Н.С.D.fc.F, » FONCTIUN DEF1N1 Т IUN4b> MEAN FUNCTION Q»MAIT,0« XPUIS I-UNCTION RKI.C?» 0 .0/-, I,. 104/,2.."22Z/..<...SSb/. «, .&09/- ,8. 1.6/.»*.1.вз/.8в.?.12/.9,г.з/.чг. «97, 3.S/.9S.3.9/.91 .A.6/.995.U. 3/.99 * MODEL SeOMLNT I GENERATE aveue SEIZE DEPART ADVANCE RELEASE TERMINATE 30O,FNSX(>ol& «ТА I T swve WAIT FN»MbAN,FNSXPD]S SURVR 1 CL'HlHDL CAkOS START END SOO,,100 COMMENTS MEAN SFFtVICr. TIME DISTRIBUTION t'.PONENTIAt. DISTRIBUTION FUNCTION • S..69/.6..9 15/.Г.! .2/-.T5. (.38 2.S2/,9»,2.61/.95.2.99/.96,3.2 8.6.2S.999.7/.999B.8 CUSTOMERS ARRIVE ENTER ТнЬ LINE capture the server LEAVE rut LINE USE THE SERVER FREE VhE SERVER LEAVE THE MODEL START THE RUN RETURN CONTROL TO OPERATING SYSTEM CARD NUMBER I 2 3 ♦ S 6 7 e 9 10 11 12 13 14 15 16 W IB 19 *Q 21 22 23 £4 26 Рис. 4А.2. Распечатка лрограммы'лримера моделирования 4А 6. Выходные данные. Выходные данные в явном виде не указываются. 7. Обсуждение. Использование модели. В распечатке программы на рис. 4А.2 следует отметить запись Q$WA1T в качестве первого операнда (операнда А) карты определения функции MEAN (карта номер 5). Также отчетам, что блок 5 имеет вид «ADVANCE FNSMEAN, FN$XPDIS». При входе транзакта в блок ADVANCE интерпретатор рассчитывает значение функции MEAN для определения операнда А. Это значение, а свою очередь, зависит от содержимого очереди. Следовательно, интенсивность обслуживания прибором чувствительна к длине очереди перед началом очередного обслуживания. Из распечатки видно, что в карте 24, т. е. карте START, предусмотрена распечатка снимков (используется операнд С). Использование карты «START 500,100» вызывает распечатку статистических данных после завершения каждого 100, 200. 300, 400 и 500-го обслуживания. Завершение моделирования наступает после завершения 500-го обслуживания. Это дает возможность проследить поведение такой переменной, как среднее время обслуживания в процессе моделирования. Результаты моделирования. (Полное время моделирования на ЭВМ IBM 360/67 равно 4,8 с.) Некоторые статистические данные, полученные, в результате моделирования в моменты завершения* 100, 200, 300, 400 и 500-го обслуживания, показаны в табл. 4А.З и 4А.4 для интенсивности входящего потока, равного 12 и 13 приходам в час соответственно. Информации, полученная при 500 завершении обслу- 186 Таблица 4А.З. Таблица результатов, лояучмных в примере моделировавля 4А Число завершен > ных обслу- жиоянии 100 200 300 400 500 llorpv»- к» прибора 0,996 0.945 0.905 0,899 0,902 Средне? время одного обслуживания, с 313 296 291 284 Г Средняя длина очереди 4,6 5,0 5,3 4.6 4,3 Процент нулевых входов 1,9 6,4 8,7 8.9 9,2 Таблица 4А.4. Таблица результатов, полученных в примере моделирования 4А после уменьшения среднего интервала обслуживания с 300 до 277 Число завершенных обслуживании 100 200 300 400 500 Нагрузка прибора 0,999 0,993 0,989 0,956 0.964 Среднее время одного обслуживания, с 27С 277 267 266 270 Средняя длнип очереди 12.4 11,6 10.0 7,8 8,3 Процент кулевых ВХОДО» 0.9 0,9 1,3 3.9 3.0 живаиий, показывает (табл. 4.3), что среднее время обслуживания равно примерно 290 с. или немного менее 5 мин. При этом прибор имеет нагрузку около 90%, а в очереди находится в среднем четыре требования. Около 9% требований были обслужены без ожидания. В табл. 4А.4 после 500 завершений обслуживании нагрузка прибора достигла более 96%,
а в очереди находилось в среднем более восьми требований. Можно сделать вывод, что изменение интенсивности приходов от 12 до 13 в час (увеличение примерно на 17%) почти удпонло средний размер очереди. В то же время число требований, обслуженных без ожидания, уменьшилось с девяти до трех. Простое исследование показывает, что при увеличении интенсивности входящего потока от 12 до 13 в час прибор успевает обслуживать требования. Увеличение интенсивности соответствует изменению среднего значения интервала времени прихода до величины 4,6 мин. Из табл. 4А.З следует, что при наличии в очереди трех, четырех и пяти требований среднее время обслуживания равно 4,5 мин, что явно недостаточно для того, чтобы справиться с входным потоком. При величине очереди, равной шести и более, среднее время обслуживания уменьшается до 4 мин, а этого уже достаточно для того, чтобы обслужить требования входного потока. Следовательно, можно сделать вывод, что при продолжении моделирования очередь не будет расти бесконечно. 4.5. Упражнения ' 1. а). Из- каких двух частей составляются имена стандартных числовых атрибутов? б). Какая информация заключается в первой части? в). Какая информация заключается во второй части? г). Какой символ записывается между первой и второй частями, если вторая часть представляет собой символическое имя? д). Что означают следующие записи: QZI4, SC$BOATS, F$ALONE? е). Как записывается стандартный числовой атрибут, значением которого является нагрузка прибора номер 15? То же для прибора с именем MYRNA? Как записывается стандартный числовой атрибут, значением которого является текущее содержимое очереди номер 1? ж). В чем разница между значением нагрузки прибора при распечатке его в стандартной форме и значением, которое представлено в соответствующем стандартном числовом атрибуте? FACILITY JOE Рис. У2 AVERAGE UTILIZATION' .860 NUMBER ENTRIES 2l> з) Поясните разницу между записями QT6 и QX6. .Может ли QX6 превосходить значение QT6? Почему да или почему пет? и). Укажите разницу между записями Q/, QA/ и QM/. к). Поясните различие в записях W$BYPAShN"$BYPAS.J!№^«oah считать, что одно из них всегда больше или равно другому? л). Какая взаимосвязь между R$BUS, S$BUS и заданной пользователем емкостью многоканального устройства с именем BUS? м). Каково значение операнда В на рис. 4.1, б? и). Каким будет содержимое очереди номер 7 после входа транзакта в блок DEPART на рис. 4.1, в? Имеется в виду, что сначала должна отработать подпрограмма, соответ* ствующая этому блоку. о). Какой стандартный числовой атрибут имеет своим значением относительное время? и). Какой диапазон значений может охватывать RN3, если он используется в качестве аргумента функции? Входят ли в эти значения дробные части? р). Какой диапазон значений охватывает RN3 при его использовании в контексте, отличном от аргумента функции? Входят ли в эти значения дробные части? 2. Рис. У2 повторяет рис. 2А.5, на котором изображены статистические данные, полученные в конце моделирования примера 2А. а). Какие столбцы иа этом рисунке соответствуют стандартным числовым атрибутам: 1) FC&JOE; 2) FR$JOE; 3) FT$JOE? б). Используя информацию рис. У2, ответьте, какими были значения стандартных числовых атрибутов, перечисленные в п. а, в конце моделирования. в). Каково было значение F$JOE в момент завершения работы модели примера 2А? 3. Рис. УЗ повторяет рис. 2А.6, па котором изображена статистика очереди, полученная в конце моделирования примера 2А. а). Какие столбцы рис. УЗ соответствуют перечисленным стандартным числовым атрибутам: 1) Q$JOEQ; 2) QA$JOEQ; 3) QC$JOEQ; 4) QM$JOEQ; 5) QT$JOEQ; 6) QX$JOEQ; 7) Q2$.TOEQ? AVERAGE TIME/TRAN 15.884 SEIZING TRANS. NO. v 3 PREEMPTING TRANS. NO. QUEUE MAXIMUM AVERAGE TOTAL ZERO PERCENT AVERAGE SAVERAGE TABLE CURRENT CONTENTS CONTENTS ENTRIES ENTRIES ZEROS TIME/TRANS TIME/TRANS NUMBER CONTENTS JOEQ I .160 27 12 44.4 2.851 5.133 1 SAVERAGE TIME/TRANS = AVERAGE TIME/TRANS EXCLUDING ZERO ENTRIES Рис. УЗ 187
TORAGF. MEN NOWON CAPACITY" ,1 50 AVERAGE CONTENTS 2.185 49.182 AVERAGE UTILIZATION .728 .983 ENTRIES 1924 1974 AVERAGE TIME/TRAN 7.087 155.471 CURRENT CONTENTS 50 MAXIMUM CONTENTS 3 50 Рис. У4 б). Пользуясь информацией рис. УЗ, ответьте, какими были значения стандартных числовых атрибутов, перечисленные в п. а, в конце моделирования примера 2А? 4. Рис. У4 является повторением рис. 2Е.4, а, на котором изображена статистика работы многоканального устройства, полученная в момент завершения моделирования примера 2Е. а). Какие столбцы рис. У4 соответствуют перечисленным стандартным числовым атрибутам: 1) SM4EN; 2) SASMEN; 3) SOMEN; 4) SM$MEN; 5) SRSMEN; 6) STSMEN. б). Пользуясь информацией рис. У4, ответьте, какими были значения стандартных числовых атрибутов, перечисленных в п. а, в момент завершения моделирования примера 2Е. в). Каким было значение атрибута R$MEN в момент завершения моделирования? 5. а). В момент времени 5 прибор был занят. В момент времени 10 освобожден. Предположим, что более прибор занят не был. 1). Какое значение F1 имеет место в момент времени 4? В момент времени 8? В момент времени 12? 2). Каково значение FR1 в момент времени 8? В момент времени 10? В момент времени 12? б). Блоки «ENTER4» н «LEAVE4» были использованы в моменты времени 5 и 10 соответственно. Пусть емкость многоканального устройства 4 равна трем н в модели больше нет обращений к этому устройству. 1). Каково значение атрибута SC4? 2). Каково значение атрибута SM4? 3). Каково значение атрибута SA4 в моменты времени 8 и 12? 4). Каково значение атрибута SR4 в моменты времени 8 и 12? 5). Каково зпачение атрибута ST4 в моменты времени 8 и 12? в). Повторите упражнение б для значения операнда В блоков ENTER и LEAVE, равного 2. г). Очередь с именем ALPHA имеет содержимым значение 3 в течение шести, единиц вре- llftOi..-Л 0»tBAriON F.UMCT.1.0W i ,. /4 wpuilj иМг-ч^пяЪ» jc[ii|» и|м[к|м I """"" "~"| .1.1 . I I мени. Кроме того, содержимое этой очереди равно двум в течение нуля единиц времени. Будем считать, что в нашу очередь больше входов не было. 1). Каково значение атрибута QG&ALPHA? 2). Каково значение атрибута QZSALPHA? 3). Каково значение атрибута QT$ALPHA? 4). Каково значение атрибута QXSALPHA? 5). Каково значение атрибута QASALPHA в момент времени, равный 10? (Предположим, что текущее содержимое очереди в момент времени 10 равно 1гулю.) д). Очередь BETA имеет содержимым очереди 3 в течение нуля единиц времени. Предположим, что других входов в очередь не было. Каково значение атрибута QM$BETA? 6. Функция BOND определена на рис. У6. а). Дайте графическую интерпретацию функции. б). Чему равны значения функции, если SR$SHELF равен 150, 450, 451, 895? 7. Функция TOUGH определена на рис. У7. а). Дайте графическую интерпретацию функции. б). Чему равны значения функции, если QM2 равен 0, I. 3, 4, 6, 10? 8. Определите функцию, значения которой зависели бы от текущего содержимого блока с именем РАТНО. Вид зависимости задан табл. У8. Дайте графическую интерпретацию функции. 9. Определите функцию, значения которой были бы вдвое больше текущего содержимого очереди ALPHA для случаев 0, 1, 2, 3 и 4. В остальных случаях значения функции должны быть равны 10. Сделайте это двумя способами: а) с помощью дискретной функции, определяемой шестью значениями, и б) с помощью непрерывной функции, определяемой двумя значениями. Дайте графическую интерпретацию каждого из способов. 10. Предположим, что блок QUEUE на рис. 4А.1 имеет имя HOLD. Покажите, как 1.0СДТ10Ы -I- OP{ RATION t ViOMiliZ .'J I n-H-l' LVUl&iH _ .F.UHCT.1AN ,^-J_l LJL I J. I I J-. ' .-I ' I Ajic.o.e.' — T-i~ |и)'.ч ^br?V4Kp5|Sj^(j|j*u^i|Ssj" I ЮМЗ./.С.4'. I _1 . - ■ i i i i i i . i i i Рис. У6 Рис. У7 188
Таблица У8 4.6. Параметры транзактов Значение функции 1 4 2 4 -5 Текущее содержимое. 0 1, 2 или 3 4 или 5 6 7 и более можно модифицировать модель для использования записи W8HOLD вместо QSWAIT в качестве аргумента функции MEAN, если это вообще возможно. П. а). Прибор с экспоненциальным обслуживанием имеет свойство уменьшать интенсивность своей работы в течение восьмичасового рабочего дня. В течение первых двух часов дня ему требуется в среднем 12 мин для выполнения обслуживания. В течение последующих 2 ч среднее время обслуживания составляет 15 мин. В течение пятого, шестого и седьмого часа каждое обслуживание в среднем занимает 17 мин. Обслуживание, начатое в течение восьмого часа, требует в среднем 20 мин для завершения. Предполагая, что единицей времени в модели является 0,1 мин, определите функцию, значения которой давали бы среднее время, требуемое прибору для выполнения обслуживания. Покажите далее, как эту функцию следует использовать в блоке ADVANCE. Дайте графическую интерпретацию функции. б). Ситуация, описанная в п. а, предполагает, что среднее время обслуживания увеличивается скачкообразно. Более реально полагать, что среднее время возрастает постепенно в течение дня. В этом случае, вместо того, чтобы зависеть от значения текущего часа дня, среднее время будет зависеть от текущего значения времени вообще. Покажите, как определить непрерывную функцию, которая описывала бы увеличение времени обслуживания в соответствии со следующим правилом: в момент времени 0 среднее время равно 12 мин; к концу второго часа среднее время увеличивается до 15 мин; к концу четвертого часа оно увеличивается до 17 мин; к концу седьмого часа среднее время обслуживания достигает 20 мин, а к концу восьмого, последнего часа оно увеличивается" до 25 мин. Предположим, что увеличение среднего времени обслуживания непрерывно и равномерно на указанных интервалах времени. Предположим также, что единицей времени является 0,1 мин. Дайте графическую интерпретацию определяемой вами функции. В параграфе 4.1 было указано, что транзакты в моделях GPS9 могут иметь до 100 параметров. Множество параметров транзакта .может рассматриваться как набор стандартных числовых атрибутов, принадлежащих транзакту. В процессе перемещения транзакта по модели его параметры могут устанавливаться и модифицироваться в соответствии с заданной пользователем логикой. Эти значения можно использовать в качестве операндов блоков или аргументов функций. Рассмотрим основные особенности параметров транзактов. 1. Число параметров транзакта задается операндом F блока GENERATE, через который транзакт входит в модель. Значением этого операнда по умолчанию является число 12. До сих пор в наших моделях подразумевалось именно такое число параметров, задаваемое по умолчанию. 2. Как и в случае использования стандартных числовых атрибутов, имя параметра состоит из двух частей: группового имели и номера конкретного члена этой группы. Групповым именем является буква Р. Номера конкретных членов группы задают с помощью целых чисел, а именно 1, 2, 3, .... 98. 99, 100. Понятно, что Р22 означает параметр транзакта номер 22, РЗ — это имя третьего параметра и т. д. Ссылка на параметр имеет, таким образом, вид Р/, где / является целым на интервале от 1 до числа параметров транзакта. Следовательно, если транзакт входит в модель через блок GENERATE со значением операнда F, заданным по умолчанию, то запись Р/ имеет смысл при / ~ 1, 2, ..., 12 и не имеет смысла при / = 13, 14, ..., 99 и 100. Параметры не могут иметь символических имен. Таким образом, записи вида PSYEAR, PSCOLOR и т. д. бессмысленны и неверны. 3. Значениями параметров могут быть целые числа со знаком. Максимальное значение параметра зависит от того, определен ли он в полуслове или в полном слове. Все параметры транзактов могут относиться только к этим двум типам. Тип задается операндом G блока GENERATE. Значением по умолчанию этого операнда является символ Н (для полуслов). Если требуется определение параметров в полных словах, то в соответствующем блоке GENERATE следует в качестве операнда G использовать символ F. Параметры в полусловах могут изменять свои значения в диапазоне от —32 768 до -Ь32 767 включительно (т. е. от —215 до + 215 — 1). В полных словах параметры могут изменять свои значения в диапазоне от —2 147 483 648 до 2 147 483 647 включительно (т. е. от —231 до +231 — 1). 189
4. При входе транзакта в модель начальным значением всех его параметров является нуль. 5. Значения параметров определяет пользователь. Чаще всего это делают путем присвоения им некоторых числовых значений в соответствии со схемой кодирования. После этого значения параметров можно использовать явным образом. Предположим, что мы моделируем контору проката, а транзакт символизирует автомобиль. Характеристики каждого автомобиля могут быть заданы в параметрах в соответствии со схемой, представленной в табл. 4.4. Таблица 4.4.Один и» вариантов интерпретации значений параметров Значение Р1 1 2 3 4 Иятсрерота- икя (цвет автомобиля) Красный Синий Зеленый Серый Значение Pi t 2 3 4 Интерпретация (марка автомобиля) Фольксваген Пи нто Вега Грег/шяя Значение РЗ 1972 1973 1974 Интерпретации (гид выпуска) 1972 19Г;3 1974 Так, трапзакт может иметь в качестве параметров PI, Р2 н РЗ значения 3, I и 1973 соответственно. Это будет означать зеленый фольксваген выпуска 1973 г. Значение параметра РЗ задано явно. Значения Р1 и Р2 понятны только при наличии схемы кодирования. 6. Поскольку параметры являются представителями стандартных числовых атрибутов, их можно использовать в операндах блоков и в качестве аргументов функций. 7. Если параметры используют в качестве операндов блоков или аргументов функций, возникает вопрос, какому транзакту принадле* жит данный параметр. Например, Р6 не может означать какое-либо конкретное одно значение. Понятно, что в модели есть много различных транзактов и каждый из них может иметь параметр номер 6. Однако данные используются в процессе выполнения подпрограммы блока. В свою очередь, подпрограмма выполняется тогда, когда в блок входит транзакт. Если в качестве некоторых данных требуется использование значений параметров, то значения берутся нз множества параметров активного транзакта, т. е. того транзакта, который обрабатывается в данный момент. Предположим, например, что определение функции осуществляется так, как показано на рис. 4.4, а, и транзакт, параметр номер 5 которого равен 4, входит в блок ADVANCE, изображенный на рис. 4.4, б. Выполненне подпрограммы блока включает расчет функции AVG. Это, в свою очередь, требует опреде- LOCAllON -JAYS. Д...4./.5 ».6.C.0.t,F -~- _■ »■ i]l|l<Hll|«U|i4|ii|l«|.7|.t »|dll'J?!)fi«l21j«li-,TJ»jiVi,"lj js^UlMjMJHi МШС.Ы.ОЧ- TJ ?iftMi. i ±.i , I I 1 I L I I 1 I ...If.... ■ -a . v ■ ^ -1 — i. l.s- i) ADVANCE FNSAVG.2 6) Рис. 4.4. Пример использования параметра в коптексте: а — определение функкин, аргументом которой является параметр 5; б — блок ADVANCE, использующий функции ь качестве операнда А ления значения аргумента функции, т. е. Р5. Значение Р5 транзакта, вошедшего в блок, равно 4. Соответствующее значепие функции разно 8. Время задержки, таким образом, равномерно распределено на интервале 8 ± 2, Теперь интерпретатор разыгрывает случайное число в соответствии с этим распределением, и оно используется для моделирования времени задержки. Приведенный пример показывает, как реа> лизуется зависимость времени задержки от свойств транзакта. В примере моделирования 4А было показано^как реализуется зависимость времени задержки от свойств очереди. Стано вится очевидным, что использование системных атрибутов и свойств транзакта, как показано в примерах, делает моделирование на GPSS весьма гибким средством исследования. Посл< того, как мы рассмотрим метод присвоение и модификации параметров, на примере моделирования 4В будет продемонстрирована гиб кость моделирования на GPSS. При распечатке цепей текущих и будущих событий также распечатываются и параметры транзактов, входящих в эти цепи. Операнд D карты START в примере моделирования 4В используется именно для того, чтобы в конце моделирования распечаталось содержимое цепей. Позднее мы рассмотрим метод распечатки значений параметров. 4.7. Изменение значений параметров. Блок ASSIGN (НАЗНАЧИТЬ) Значения параметров транзакта могут назначаться и изменяться при входе транзакта в блок ASSfGN (НАЗНАЧИТЬ). На рис. 4.5 190
1 I л A.e ASSIGN 3 Рве 4.5. Операид А В Клок ASSIGN и его операнды Л и Значение Номер модифицируемого параметра 15елнчннв, используемая для модификации В. Результат ■ю умолчанию Ошибка представлены блок и его операнды А и В. При входе транзакта в блок ASSIGN данные из операнда В фиксируются в параметре, номер которого задается операндом А. В результате предыдущее значение параметра заменяется на новое. При входе транзакта в блок, изображенный на рис. 4.6, например, значение его треть* его параметра становится равным 25. Предыдущее значение Р5, каким бы оно ни было, при этом теряется. В примере на рис. 4.6 операнды А и В заданы непосредственным образом, т. е. в виде констант. Можно один или даже оба эти операнда задать косвепным образом, т. е. через стандартные числовые атрибуты. Например, при входе транзакта в блок ASSIGN, изображенный на рис. 4.7, величина нагрузки прибора BARGE будет записана как значение параметра, номер которого указан в РЗ. Если РЗ имеет значение 5, то величина FR$BARGE становится значением Р5. Если РЗ равен 22, то величина FR$BARGE становится значением параметра 22, т. е. Р22 и т. д. Сравните, использование записи 3 и РЗ в качестве операнда А на рис. 4.6 и 4.7 соответственно. На рис. 4.6 и 4.7 показано использование блока ASSIGN в режиме замещения. В этом режиме старое значение параметра замещается новым независимо от того, каким было это старое значение. Блок ASSIGN можно использовать также в режимах приращения и вычитания. В режиме приращения новое значение параметра вычисляется путем сложения значе- 1 З.Й5 С ASSIGN J Рис 4.6. Первый2пример использования блока ASSIGN P3.FRS8ARGE С ASSIGN Л Рис 4.7. Второй пример использования блока ASSIGN 4*.Q5 С ASSIGN J Г Рис 4.8. Третий пример использования блока ASSIGN П-Л ASSIGN т ъ Рис. 4.9. Четвертый пример использования блока ASSIGN ния операнда В со старым значением параметра. В режиме вычитания новое значение параметра вычисляется путем, вычитания значения операнда В из старого значения. Режимы приращения и вычитания отмечаются указапием знаков (-|-) или (—) соответственно, стоящих перед запятой, разделяющей операнды А и В. На рис. 4.8 показан блок, работающий в режиме приращения. При входе транзакта в этот блок его параметр 4 увеличивается на значение, равное текущему содержимому очереди 5. В этом примере следует отметить, что операнд А задан непосредственным образом, а операнд В косвенным. На рис. 4.9 показано использование блока ASSIGN в режиме вычитания, При входе транзакта в этот блок из значения параметра, номер которого задан параметром Р2, вычитается 7. Если, например, Р2 равен 3, то при входе транзакта в этот блок из значения параметра 3 вычитается число 7. Если же Р2 равен 2, то 7 вычтется из значения параметра 2. На рис. 4.9 операнд А задан косвенным образом, а операнд В непосредственным. В блоке ASSIGN можно использовать операнд С (на рис. 4.5 это не указано). Если это делается, то операнд С определяет номер функции. Интерпретатор при выполнении подпрограммы блока ASSIGN в случае использования операнда С выполняет следующее. 1. Высчитывает значение операнда С. 2. Рассчитывает значение функции, номер которой соответствует операнду С. 3. Полное значение функции перемножает с содержимым операнда В. 4. Целую часть произведения использует для замены, приращения илн вычитания из параметра, заданного операндом А. Пусть, например транзакт входит в блок ASSIGN, показанный на рис. 4.10. Операнд С указывается явно числом 7. Рассчитывается значение функции 7. Предположим, что значение функции получается равным 1,94. Теперь это значение умножается на значение операнда В, т. е. на 5, и получается результат 9,70. Целая часть этого произведения, т. е. 9, добавляется к значению параметра 3 вошедшего транзакта. 191
3+.57 ASSIGN Рис 4. JO. Пример использования блока ASSIGN, включающего операнд С Результат работы блока на рис. 4.10 будет совсем другим, если в качестве операнда С записать не 7, a FN7. Интерпретатор будет трактовать FN7 как косвенное определение номера функции. Вначале будет вычислено значение функции 7. Предположим, как и прежде, что значением функции будет 1,94. Интерпретатор возьмет целую часть этого числа, т. е. единицу, в качестве номера другой функции. Теперь будет рассчитано значение этой функции — функции 1 и умножено на 5 (данное В-операнда). После всего этого целая часть произведения прибавляется к значению параметра 3. Функция, используемая в качестве С-операн- да блока ASSIGN, не должна иметь символического имени. Имя может быть только числовым. Тут пользователь может поступить двумя различными способами. Во-первых, он может дать функции символическое имя, а затем использовать соответствующее ему числовое имя, которое интерпретатор присвоит функции. Во-вторых, он может использовать управляющую карту {ОПРЕДЕЛИТЬ ЭКВИВАЛЕНТНОСТЬ) я этим обеспечить соответствие символического имени нужному номеру. А затем этот номер можно использовать в блоке ASSIGN. Более подробные сведения о такого рода присвоениях будут рассмотрены в параграфе 4.16. Можно отметить, что операнды В и С блока ASSIGN также соотносятся друг с другом, как операнды А и В блоков GENERATE и ADVANCE. Вспомним, что если в качестве операнда В используется запись вида FN/ нли FN*hmh в блоке GENERATE или ADVANCE, то значение функции номер / (или функции с символическим именем) умножается на значение А-операнда. (Формат в случае блоха ASSIGN немного другой. Здесь записывается не FN/, а просто / на месте операнда С.) Как отмечалось в параграфах 3.13 и 3.15, для моделирования пуассоновского входящего потока и экспоненциального обслуживания можно использовать значение одной и той же функции в блоках GENERATE и ADVANCE соответственно. Подобным же образом в блоке ASSIGN можно использовать С-операнд при розыгрыше чисел в соответствии с экспоненциальным распределением. Предположим, на- 9.50.Ь ( ASSIGN ) Рис. 4.11. Пример, показывающий использование слом ASSIGN Для розыгрыша случайного числа и соответствии с экспоненциальным распределением пример, что некоторый прибор, обслуживание на котором имеет экспоненциальный характер, требует 50 единиц времени в среднем для выполнения обслуживания и что 5 является номером обычной непрерывной функции, состоящей из 24 пар значений и описывающей экспоненциальное распределение. При входе тран- закта в блок ASSIGN (рис. 4.11) разыгрывается случайное число в соответствии с распределением времени обслуживания, и результат записывается в качестве параметра 9. Предположим, что траизакт должен занять прибор с таким экспоненциальным временем обслуживания. Тогда время задержки может моделироваться путем введения транзакта в блок «ADVANCE P9». Время обслуживания, требуемое для данного транзакта, разыгрывается случайным образом и предопределяется блоком ASSIGN. Этот метод наиболее интересен, когда необходимо управлять условиями моделирования при экспоненциальном обслуживании на приборах. В примере моделирования 4D, приведенном в параграфе 4.15, используют именно такой подход. 4.8. Пример моделирования 4В. Модель продовольственного магазина 1. Постановка задачи. Небольшой продовольственный магазин состоит из трех прилавков и одной кассы на выходе из магазина. Покупатели приходят в магазин, входной поток имеет пуассоновский характер, причем среднее значение интервала прихода составляет 75 с. Войдя в магазин, каждый покупатель берет корзинку и может обойти один или несколько прилавков, отбирая продукты. Вероятность обхода конкретного прилавка показана в табл. 4В.1. Время, требуемое для обхода прилавка, и число покупок, выбранных у прилавка, распределены равномерно. Подробная информация по каждому из прилавков приведена также, в табл. 4B.I. После того, как товар отобран, покупатель становится в конец очереди, к кассе. Уже стоя в очереди, покупатель может захотеть сделать
Таблица 4В.1. Характеристика покупок у прилавков для неделя пгэдовоаьстаеиноге магазина Прилавок 1 2 3 Вероятность ВЫПО'НОЯИЯ покупок ■ 0,76 0,65 0,82 Броня обхода прилавка, с 1202:60 160=30 120*46 Число покупок, сделанных у прнлявка. шт. 3±1 4*1 5*1 еще 2 ± 1 покупки. Время обслуживания покупателя в кассе пропорционально числу сделанных покупок, на одну покупку уходит 3 с проверки. После оплаты продуктов покупатель оставляет корзинку и уходит, Постройте модель, описывающую процесс покупок в продовольственном магазине. Проведите моделирование восьмичасового рабочего дня и определите нагрузку кассира и максимальную длину очереди перед кассой. Считая, что число корзинок веограничено, определите максимальное число корзинок, находящихся у покупателей одновременно. 2. Метод построения модели. При входе траиэакта-покупателя в модель он сразу же попадает в многоканальное устройство CARTS, моделируя тем самым процедуру взятия корзинки. Емкость этого многоканального устройства ограничивать не следует. По умолчанию интерпретатор будет считать, что его емкость равна 2 147 483 647 (см. гл. 2). Это соответствует условию неограниченности числа корзинок. По результатам моделирования надо будет определить потребность в корзинах, пользуясь графой «MAXIMUM CONTENTS» (МАКСИМАЛЬНОЕ СОДЕРЖИМОЕ) многоканального устройства. Подход к каждому прилавку моделируется с использованием блока TRANSFER в режиме статистической передачи. Если покупатель решает ие делать покупок у одного из прилавков, то транзакт, который его моделирует, переходит к новому блоку TRANSFER, находящемуся перед очередным прилавком. Если же покупатель остается для выполнения покупок, Таблица 4В.2. Таблица определений примера транзакт последовательно продвигается через блок TRANSFER до блока ADVANCE, который моделирует задержку около прилавка для выполнения покупок. Для каждого из прилавков распределение числа покупок описывается с использованием непрерывной, состоящей из двух значений, функции GPSS. Продвигаясь через блок ADVANCE прилавка, покупатель (точнее транзакт) использует эту функцию для выполнения блока ASSIGN в ренише приращения. Здесь разыгранное число добавляется к значению параметра, используемого для регистрации числа покупок, начиная от входа покупатели. Затем транзакт-покупатель последовательно проходит через блок TRASFER, который показывает, что начинается новый прилавок. После обхода всех прилавков покупатель присоединяется к общей очереди перед кассой. Перед тем, как подойти к кассе, транзакт- покупатель проходит еще один блок ASSIGN, соответствующий тому, что он может решить сделать еще несколько покупок. Число таких дополнительных покупок добавляется к общему числу, накопленному ранее. Время обслуживания кассиром определяется посредством расчета функции, аргументом которой является параметр, содержащий значение общего числа сделанных покупок. Далее корзинка возвращается посредством выхода из многоканального устройства CARTS, и транзакт-покунатель покидает систему. Для нас в этой модели представляют интерес: 1) использование многоканального устройства без определения емкости; 2) розыгрыш чисел в соответствии с равномерным распределением в блоке ASSIGN; 3) использование режима приращения в параметре транзакта н 4) использование параметра транзанта в качестве аргумента функции. 3. Таблица определений. Единица времени: 1 с. моделирования 4В Элементы OPSS Транэакты: 1-й сегмент модели 2-й сегмент модели Приборы: GIRL Функции: AYL1.AYL2, AYL3 COTYA1 1MPUL XPDIS Очереди: GIRL Миогокааальные устройства: CARTS Интерпретации Покупателя. Р1 — число купленных товаров Таймер Кассир Функции, описывающие распределение числа покупок у прилавков 1, 2 и 3 соответственно Функция, описывающая зависимость времени обслуживания у кассиров от числа сделанных покупок Функция распределения числа дополнительных покупок Функция экспоненциального распределения с единичным значением среднего Очередь к кассе Моделирует использование корэИиок 13 т. Дж. Шрайбер 193
4. Блок схем*. GENERATE FN$XPDIS] fctNERA (try г) J* TRANSFFER .•45. (TRY3 ADVANCE 160.30 W,rN$AYL2| (TRY3)J-* TRANSFFERjoUj) ПРИХОД ПОКУПАТЕЛЕЙ ВЗЯТЬ КОРЗИНКУ 6УДУТ ЛИ ДЕЛАТЬСЯ ПОКУПКИ У ПРИЛАВКА N-J? ДА. ПРОВЕСТИ ВРЕМЯ У ПРИЛАВКА I ВЗЯТЬ ПОКУПКИ С ТТРИЛШАI БУДУТ ЛИ ДЕЛАТЬСЯ ПОКУПКИ У ПРИЛАВКА №2? ДА. ПРОВЕСТИ ВРЕМЯ У ПРИЛАВКА 2 взять ПОКУПКИ С ПРИЛАВКА 2 БУДУТ ЛИ ДЕЛАТЬСЯ ПОКУПКИ У ПРИЛАВКА №3? ДА. ПРОВЕСТИ ВРЕМЯ У ПРИЛАВКА 3 GENERATE \28800 I TERMINATE- 2-Й СЕГМЕНТ МОДЕЛИ (СЕГМЕНТ ТАЙМЕРА) QUEUE I 1+.FN$IMPUL С ASSIGN ~\ SEIZE I „GIRL DEPART ADVANCE FNSCOTYM RELEASE' *girl' V I LEAVE GARTS T RMINA _ TERMINATE ОЧЕРЕДЬ К КАССЕ СДЕЛАТЬ ДОПОЛНИТШ ПОКУПКИ ЗАНЯТЬ КАССИРА ПОКИНУТЬ ОЧЕРЕДЬ К КАССЕ ИНТЕРВАЛ ВРЕМЕНИ ПРОВЕРКИ ОСВОБОДИТЬ КАССИРА ВЕРНУТЬ КОРЗИНКУ ПОКИНУТЬ МАГАЗИН 1-й СЕГМЕНТ МОДЕЛИ Рйс. 4В.1. Блок-схема примера моделирования 48
б. Распечатка программы. 4LCCK NUMBER «.ОС I 2 3 4 S 6 7 в 10 11 12 13 14 IS 16 1 7 ■ в 19 20 21 OPERATION SIMULATE A.B.C.D.E.F.G COMMENTS ЯUNCTION OEFIMIUONIS) AYLl FUNCTION 0,2/1.5 AYL2 FUNCTION 0.3/1.6 AYL3 FUNCTION D.4/1.7 COTYM FUNCTION 1.3/IB.S* 1MPUL FUNCTION 0.1/1.4 XPO!S FUNCTION RN1.C2 RN1.C2 RN1.C2 P1.C2 RNI.C2 RNI.C24 ITEMS-StLECTEO DISTRIBUTION. AISLE 1 I1EM&-SC.IXCTED DISTRIBUTION, AISLE 2 ITEMS-SfcLECTEO DISTRIBUTION. AISLE 3 CHECKOUT-TIME DISTRIBUTION DISTRIBUTION OF ITEMS TAKEN ON IMPULSE EXPONENTIAL. DISTRIBUTION FUNCTION 0,0/. I.. 10 4/, 2,. 222/. 3. .ЗЬЬ/.4..»09/.5>.69Z.6..919/.?, 1.2/.7S.1.3B .0,1.6/.64.1.83/,Ив.2.12/.9.2.3/.92.2.S2/.94.2.в J/.96,2.99/.96,J.2 • 97.Э.5/.9В,3.9/.99.4.6/'.9?&.а.Э^.99в.6.2/.499,7/.999в,В * MODEL SEGMENT 1 TRY 2 GENERATE ENTER TRANSFER ADVANCE AS916N TRANSFER ADVANCE ASSIGN TRANSFER АОVANCE ASS ICM oueue ASSIGN SEIZE DEPART ADVANCE RELEASE LEAVE TERMINATE TS.PNSXPDIS CARTS .29..TRV2 120.60 1.FNSAVL1 .*•,,, TRY3 ISO, JO 1+,FN»AYL2 .18,,OUT 120.49 |*,FN»AYL3 GIRL 1+,FN»1MPUL GIRL GIRL FMBTCOTYM GIRL CARTS 1? MODEL SEGMENT 2 GENERATE TERMINATE 28600 1 CONTROL CARDS START ЕИО 1...1 SHUPPURS ARRIVE TAKE A CART HANT To SHOP AISLE TIME IN AISLE I SET PI = ITEMS SELeCTEO IN AISLE 1 «ANT TO SHOP AISLE 27 TIME IN AISLE 2 SET PI = TOTAL ITEMS SELECTED SO FAR «ANT TO SHOP AISLE 3 7 TIME IN AISLE 3 Set PI » TOTAL MEMS SCLEC7EO SO FAR QUEUE FDR CHECKOUT ADO TO PI ITEMS TAKEN ON IMPULSE CAPTURE THE CHECKER LeAVE THE CHECK-OUT QUEUE CHECK-OUT TIME FREE THE CHECKER RETURN THE CART LEAVE THE STORE TIMER ARRIVES AT END OF B-HOUR DAY SHUT OFF THE RUN START THE RUN; GET CHAIN PRINTOUT RETURN CDMTROL. TO OPERATING SYSTEM CARD NUMBER 1 2 3 4 S 6 7 a 9 Ю 11 12 13 1* 19 16 17 IB 19 20 21 22 23. 24 2» 26 27 28 29 Э0 31 32 эз 34 39 Э6 37 36 39 40 • 1 42 43 44 45 46 47 48 49 SO Рис. 4B.2. Распечатка программы Примера моделирования 4В 6. Выходные данные. function symbols and correspondin« nvmmrs AYLl AYLl AYL3 COTVH IXPUL xpoia TACILITY 4 ML W average utilization .А4Э NUMBER EM7RKS 36» AVRRA6C 7[MtSTRAN " 36.40* seizin' THAN?. NO. йресиепнс TRANS. NO. JOEuE MAalMUN «tfSRACC TOTAL 2CRO CONTENTS CONTENTS ENTRIES ENTRIES 4I»L 4 . |.b 3*1 ЕЦ «a.| •AVCRAGC TIMC/TRANS » AVCRAG* TIME/IRAN* fXCLUOlNC «RO ENTRIES PERCENT ZEROS STORAGE CARTS CAP AC ITT AVERAGE CONTENTS 114741^47 4.0Z» AVERAGE- UTILIZATION .000 D INTRICS 36» AVCRASC IIME/TRANS 1*.101 SAVERAGt 7flF£/TRAN* 11.210 TABLe number Current contents AVERAGE TlhESTRAN CURRENT CONTtNTi 1 MAAINUH lUNItNr* Рис. 4B.3. Часть распечатки примера моделирования 4В: a — таблица имен функций; б — статистика по прнворяи; ш — статвстнка но очередям; г — статистика но инлгокаиалышм устройствам 13' 195
FUTURE EVENTS CHAIN TRANS BDT BLOCK PR SF NBA SET MARK—TIME 16 28806 12 28830 28836 15 28840 10 11 16 12 15 28632 28766 28380 —366 PI 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 «uepj P2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 i4B: РЗ Р4 SI Tl DI CI MC PC PF 0 0 4 0 0 0 0 0 0 4 0 0 0 0 0 0 4 0 0 0 0 0 0 4 0 0 0 0 0 0* 4 0 0** 0 0*** * строка 1 (PI—P4); •■ строка 2 (P5—P8); B7600 20 —1 Рис 4B.4. Распечатка цепи будущих событий в конце моделирования примера 4В '** строка 3 (Р9—Р12) 7. Обсуждение. Результаты моделирования. (Общее время моделирования на ЭВМ IBM 360/67 равно 5,2 с.) На рис. 4В.З, а показана таблица имен функций. Всего в модели определено шесть функций. Все они имеют символические имена. Номера этим функциям присваивает интерпретатор. Номера присвоены функциям в порядке появления определений функций в модели (см. рис. 4В.2). На рис. 4В.З, б видно, что нагрузка кассира достигает величины 0,403. Статистика очереди (рис. 4В.З, е) показывает, что обслуживания перед кассой в среднем ожидает менее половины покупателя, и это согласуется с малой нагрузкой кассира. Те, кому пришлось ждать в очереди, в среднем находились в ней 31 с. В очереди одновремеино было максимум шесть человек. В модели не предусмотрен сбор статистики о среднем числе покупок, сделанных одним покупателем. Тем не менее видно, что среднее время обслуживания одного покупателя в кассе равно 32 с, откуда следует, что в среднем 11 покупок было сделано каждым покупателем. (Напомпим, что на одну покупку затрачивается ровно 3 с работы кассира). Статистические данные по многоканальному устройству (рис. 4В.З, г) показывают, что в среднем одновременно было использовано четыре корзинки, а максимальное число одновременно используемых корзинок равнялось 14. Одновременно эта статистика свидетельствует о том, что в среднем покупатель провел в магазине 318 с. Отметим, еще раз, что емкость многоканального устройства определена равной 2 147 483 647. При такой большой емкости значение AVERAGE UTILIZATION (НАГРУЗКА) многоканального устройства при записи с точностью до трех знаков равна нулю, хотя его среднее содержимое равно 4. В карте START (карта 49 на рис. 4В.2) для обеспечения распечатки цепей текущих и будущих событий в конце моделирования используется операнд D. Поскольку ни один покупатель не ждал перед кассой в момент завершения моделирования, цепь текущих событий пуста. Цепь будущих событий показана иа рис. 4В.4. Для нас она представляет интерес с точки зрения анализа того, как распечатываются параметры транзактов. Каждый тран- закт модели имеет 12 параметров, расположенных в полусловах, что обеспечено умолчанием соответствующих операндов блока GENERATE. При распечатке значений параметров используются четыре колонки. Это значит, что для распечатки 12 параметров транзактов модели требуются три строки. Эти три строки последней цепи будущих событий и показаны на рис. 4В^. Первая строка содержит значения параметров Р1—Р4, вторая показывает значения PS- PS, а третья Р9—PI2, но над колонками стоят метки только первых четырех параметров, т. е. Р1, Р2, РЗ, Р4. 4.9. Упражнения 1. а). Сколько параметров будет иметь тран- закт, который входит в модель через блок «GENERATE 52, FN$XPDIS„10»? В словах или полусловах определены эти параметры? б). Транзакты, входящие в модель через некоторый блок GENERATE, имеют 20 параметров, каждый размером в полное слово. Интервалы прихода этих транзактов имеют распределение 42 =t 8 единиц времени. Запишите блок GENERATE, для которого выполняются все эти условия. в). Справедливо ли утверждение:.—320 000 является правильным значением параметра? г). Справедливо ли утверждение: Р15 является допустимой ссылкой на параметр? д). Справедливо ли утверждение: P$SYMBL является допустимой ссылкой на параметру 196
nv: J»4i;j__EiU4£7 U»C»"llt»t ifiir» -jIMKJLx l«uJ.A2jb .,2, ОРЕЯ»Т10>» J i_!_... a i i. LOR . bUWCJlflJNL j. _».>.C.P.l..f — _——__•—*- *lnji'i7»ife«]:'K»'~V/»x4J4'"jj«|ssl» t\6,.J>A : . Таблиц» У4,a ..I _ . iii.. i i i : i .„l . l. j ! i i i . i.j j.j. . l.. .1 t ' i. i_i i j_:— Рис. У2 e). Чему равны значения всех параметров в момент входа транзактов в модель? ж). Опишите каждый из транзактов, находящийся в цепи будущих событий на рнс. 4В.4. Поясните значение параметра Р1 каждого транзакта. з). Прочтите в приложении С описание ошибки номер 850. Если возникает ошибка с этим номером, как ее можно устранить? и). Первому из транзактов, вошедших в модель через некоторый блок GENERATE, в параметре 1 надо записать значение 1. Второму, третьему и т. д. транзакту, входящему через тот же блок, надо в параметр 1 записать значение 2, 3 и т. д. соответственно. Как это сделать? 2. Пусть функции ONE и TWO определяются так, как указано на рис. У2. Чему равно время задержки в перечисленных ниже блоках, если входящий в них транзакт в параметрах Р4 и Р6 содержит значения 12 и 14 соответственно: a) ADVANCE P4; б) ADVANCE FN$TWO; в) ADVANCE P4, FNSONE; г) ADVANCE Р6, FNSTWO; д)- ADVANCE FN*ONE, FN6TWO. 3. Пусть функции ALPHA и BETA определяются так, как указано на рис. УЗ. Чему равно время задержки в перечисленных ниже блоках, если входящий в иих транзакт параметром Р1 имеет значение 5: a) ADVANCE FNSBETA; б) ADVANCE FN$ ALPHA, FNSBETA. 4. Предположим, что в некоторый момент времени в процессе моделирования имеют место L0C*riQW н-*- Рис. УЗ ОР( RATION ;n»iKiw i2:Ci£iL ■ »■ и||з|ч||>||б|)?||1 ~*Ща jiTub* 1гэЫ) iffinx [Ж"и[»]1?м JbLlHA |У.Ш*С,Т|1ДЫ , , |Г.1..-СД. I OJ^jftZJUfl J2A . _.* i_i_j_j.a. o^,Oi/.a^l-.h.a./^,a.,,irf i ,_ J—i-l. i_,_ j..a j. j . _i : i .. i j i . : J_ L i ; _|_ i i. i- ftK.CA ' i . i -J 1.J-J _j~ 4 • -i- i . - , ; i ..i,. . "... us _l— t к i. I ,_! I I-1 Стандартный чиспочаЛ атрибут F1 i-R! R$TUOS Q&LONG QZ$LONG Зиичслце 0 532 3 8 1 Таблица У4, f> Номер параметр:) I 2 3 4 5 Значение 30 —10 4 2 3 параметры, показанные в табл. У4, а. Пусть также параметры некоторого транзакта имеют значения, показанные в табл. У4, б. Укажите, значения каких параметров изменятся и каковы будут новые значения параметров при входе этого транзакта в каждый из нижеследующих блоков. (Следует считать, что все блоки независимы друг от друга.) a) ASSIGN 5,100; б) ASSIGN 5—,100; в) ASSIGN P5,100; г) ASSIGN P5-K96; д) ASSIGN P4-J-.P5; е) ASSIGN Р5+.Р4; ж) ASSIGN R$TUGS,P5; з) ASSIGN QZ$LONG,FRl; и) ASSIGN P3,FI. 5. а). Укажите различие между блоками «ASSIGN 5—, 100,3» и «ASSIGN 5—, 100, FN3». б). Пусть значением FN1 является 3,26, а значением FN3—4,1. Какое значение будет иметь параметр 2 после входа транзакта в каждый из блоков, перечисленных ниже: 1) ASSIGN 2,60,1; 2) ASSIGN 2,60,FNI. в). Проанализируйте блоки «ASSIGN 7,1.3» и «ASSIGN 7,FN3»: 1) определяя, какое значение будет назначено параметру 7; 2) указав, есть ли разница во времени обработки этих блоков. 6. Вопросы этого упражнения относятся к рис. 4В.2. а). Какое значение получит функция COTYM, если значением Р1 является число 15? б). Дайте объяснение тому факту, что вторая пара значений при определении функции COTYM равна «18,54». в). Покажите, как следует изменять функцию COTYM, если в среднем на обслуживание одной покупки требуется не 3, а 5 с. г). Укажите максимальное число покупок, которое может сделать покупатель в магазине. 197
RELATIVE CLOCK 28800 ABSOLUTE CLOCK 28800 BLOCK COUNTS BLOCK CURRENT TOTAL BLOCK CURRENT TOTAL BLOCK CURRENT TOTAL 2] 0 I ] 2 3 4 5 6 7 8 9 0 0 0 2 0 0 0 0 0 366 366 366 280 278 364 191 191 364 J] 12 13 14 15 16 17 18 19 0 0 0 0 0 0 0 0 0 306 363 363 363 363 363 363 363 363 Ряс. У7 10 307 20 д). Подумайте, можно ли в блоке ASSIGN (номер 5) записать 1+ вместо 1 в качестве операнда Л, 7. Состояние счетчиков блоков после прогона модели на рис. 4В.2 показано на рис. У7. а). Посчитайте, используя информацию рис. У7, какая часть покупателей сделала покупки у первого прилавка. Сравните ваш результат с тем, который имел бы место при длительном моделировании. б). Выполните упражнение п. а для второго прилавка. в). Сколько покупателей находилось у первого, второго и третьего прилавков соответственно в момент завершения моделирования? 8. Покажите, как следует изменить модель примера 4В для учета следующих обстоятельств. а). В магазине имеется всего 10 корзинок. Если в момент входа покупателя в магазин свободной корзинки нет, ему приходится ждать. б). В магазине имеется всего 10 корзинок; 65% клиентов ожидают освобождения корзинок, если все они заняты. Остальные 35% уходят из магазина, не желая ждать. 4.10. Изменение уровня приоритета транзакта. Блок PRIORITY (НАЗНАЧИТЬ ПРИОРИТЕТ) При входе траизакта в модель уровень его приоритета определяется значением операнда Е соответствующего блока GENERATE. До сих пор в рассматриваемых нами моделях значение приоритета транзакта при его продвижении в модели оставалось постоянным и равным этому начальному значению приоритета. Тем не менее существует возможность динамического изменения уровня приоритета в процессе моделирования. Это может иметь очень важное значение с точки зрения расположения транзакта в цепи текущих событий, что, в свою очередь, определяет последовательность, в которой транзакты выбираются для возобновления движения в модели. Таким образом, возможность динамическим образом изменять уровень приоритета транзактов приобретает важное значение при моделировании на GPSS. При входе транзакта в блок PRIORITY (НАЗНАЧИТЬ ПРИОРИТЕТ) изменяется уровень его приоритета. На рнс. 4.12 изображен блок PRIORITY вместе с операндом А. (В этом блоке может также быть задан операнд В. Обсуждение этой возможности мы отложим до гл. 7.) Именно значение операнда А и назначается в качестве нового уровня приоритета, вошедшего в блок PRIORITY транзакта. Оче»- видно, что новое значение может оказаться равным старому. В этом случае никакого изменения не произойдет. Блок PRIORITY никогда не запрещает вход транзакта; в момент входа в него выполняются следующие действия. 1. Назначается новый уровень приоритета транзакта. 2. Транзакт в цепи текущих событий занимает последнее место среди транзактов соответствующего класса приоритетов. 3. Интерпретатор продолжает двигать транзакт в модели до тех пор, пока есть такая возможность. 4. И, наконец, когда дальше транзакт продвинуть не удается, интерпретатор начинает просмотр цепи текущих событий заново. Для этого есть определенные причины: значение приоритета в блоке PRIORITY может стать меньше. В результате и транзакт и то место в цепи, от которого должен продолжаться I PRIORITY Pec. 4.12. Блок PRIORITY с операндом А: Операнд Л Значение Значение, присваиваемое я качестве уровня приоритета активного гран- эанта Результат по умолчанию Ошибка 198
просмотр, смещаются в конец цепи. Если бы просмотр цепи возобновился от этой точки, то часть транзактов могла бы оказаться пропущенной. Возобновление просмотра цепи от начала гарантирует, что ни один транзакт пропущен ие будет. Уровень приоритета транзакта является стандартным числовым атрибутом GPSS. Имя этого атрибута — PR (Priority Level — уровень приоритета). Ссылка на приоритет транзакта в таком виде является законченной, поскольку у транзакта имеется всего одно значение приоритета. Значение приоритета активного транзакта становится значепием атрибута PR при его использовании в качестве операнда какого-либо блока. Ранее указывалось, что значением PR может быть целое число в диапазоне от 0 до 127. Атрибут PR может быть использован, следовательно, в качестве операнда блоков, аргумента функций и т. д. В цепях текущих и будущих событий распечатываются также и значения приоритетов входящих 8 них транзактов. Фрагмепт распечатки, представленной на рис 4В.4, повторяется на рис. 4.13. Четвертый столбец, который помечен символами PR, указывает значение приоритета транзактов. Все элементы этого столбца пусты, что означает равенство нулю приоритетов всех транзактов цепи. Рассмотрим теперь возможность использования блока PRIORITY при возникновении узлов времени. Последовательность возникновения событий в точности определяется относительным расположением транзактов в цепи текущих событий. Это относительное расположение может изменяться при изменении уровней приоритетов. Предположим, что возникла ситуация, когда два события происходят одновременно и необходимо уметь воздействовать на последовательность обработки этих событий. Это осуществляется простым назначением более высокого приоритета транзакту, представляющему событие, обработка которого должна начаться раньше. Вернемся к примеру моделирования ЗВ для детального рассмотрения этого случая. На рис. 4.14, а еще раз представлен 1-й сегмент модели этого примера. В этой модели автомобиль остается для обслуживания только в том случае, если есть место на стоянке. Возникает вопрос, что делать, если события «приезд нового автомобиля» и «завершение обслуживания» возникают одновременно, а все места на стоянке заняты. Если сначала будет обрабатываться событие приезда автомобиля, транзакт, символизирующий собой автомобиль, обнаруживает, что многоканальное устройство SPACE заполнено, и сразу же переходит по метке BYBYE. Если же наоборот, сначала будет обрабатываться событие завершения обслужи- вания, то один из ожидающих транзактов- автомобилей может пройти блок «LEAVE SPACE» прежде чем приехавший автомобиль будет обработан. Это означает, что для него найдется место на стоянке, и он останется для ожидания обслуживания. Есть определенные основания для того, чтобы в модели на рис. 4.14, а событие завершения обслуживания обрабатывать раньше события приезда нового автомобиля. Каждый из транзактов входит в модель со значением уровня приоритета, заданным по умолчанию, т. е. равным нулю. Если мы поставим блок PRIORITY в модели где-нибудь после приезда автомобиля, но до того, как соответствующий транзакт входит в блок ADVANCE, то при возникновении узла времени в процессе выполнения фазы коррекции таймера транзакт, завершивший обслуживание, будет поставлен перед только что вошедшим транзактом в цепи текущих событий. В процессе следующей за этим фазы просмотра событие завершения обслуживания будет обязательно обработано FUTURE EVENTS CHAIN TRANS ВОТ BLOCK PR SF NBA SET MARK—TIME PI 28632 0 0 16 12 7 IS 3 28806 28830 28836 28840 57600 4 4 10 5 5 11 ] 20 16 12 7 IS 3 28766 28380 —366 1 0 0 0 0 8 0 0 0 0 0 0 0 0 Рис 4.13. Повторение фрагмента распечатки цепи будущих событий, изображенной на рис. 4В.4: PR — информация об уровне приоритета 199
GENERATE ПРИБЫТИЕ \500,FN$XPDIS | к TRANSFER ,„ / 4J BYBYE)_ \юти/ ENTER ' SEI2E i space. л YVASHR ' 1 LEAVE 1 ' ADVANCE 400,FN$XPDIS \ ' RELEASE s>pace' WASHR V автомобили VlXATb.FCIHl HA СТОЯНКЕ IILT МЕСТ ВЪЕХАТЬ НА СТОЯНКУ ЗАНЯТЬ МОЙКУ ПОКИНУТЬ СТОЯНКУ МЫТЬЕ АВТОМСБИЛЯ ОСВОБОДИТЬ МОЙКУ (BYBYEjf TERMINATE 9) ПОКИНУТЬ СИСТЕМУ ENTER ' ' SEIZE SPACE, л yVASHR i LEAVE ' ' ADVANCE 400.FNSXPOIS ■ RELEASE 4. 5^ACE! Washr (BYBYE)J TERMINATE ^Я ПРИБЫТИЕ АВТОМОБИЛЕЙ УСТАНОВИТЬ БОЛЕЕ высокий TiPmiPHiti ДЛЯ СОБЫТИЯ ЗАВЕРШЕНИЯ ОБСЛУЖИВАНИЯ УЕХАТЬ.ЕСЛИ НА СТОЯНКЕ НЕТ МЕСТ ВЪЕХАТЬ НА СТОЯНКУ ЗАНЯТЬ МОЙКУ ПОКИНУТЬ СТОЯНКУ МЫТЬЕ АВТОМОБИЛЯ ОСВОБОДИТЬ МОЙКУ ПОКИНУТЬ СИСТЕМУ Ь) Ряс 4.14. Использование блока PRIORITY о примере моделирования ЗВ: а — повторение 1-го сегмента мидели примера ЗВ; б — l-ft сегмент с увеличением приоритета для события «завершение обслуживания» раньше события приезда, а именно такой последовательности мы и добивались. На рис, 4.14, б показано, каким образом в модель рис. 4.14, а можно ввести блок PRIORITY для достижения желаемого эффекта. Этот блок можно, например, поместить сразу вслед за блоком GENERATE. Конечно, его можно было бы поместить и в других местах (см., например, упражнение 2 параграфа 4.12). Блок PRIORITY можно использовать во многих случаях, а не только для управления последовательностью обработки одновременно возникающих событий. В следующем параграфе будет рассмотрен пример моделирования, в котором блок PRIORITY используется для других целей. 200
4.11. Пример моделирования 4С. Задача о балансе оборудования 1. Постановка задачи. После завершения литья в литейном цехе отливка должна быть перенесена в цех, где происходит окончательная ее обработка' Для выполнения этой обработки служит гак называемый агрегат доводки. Агрегатом доводки управляет один оператор. Сама же доводка состоит из выполнения двух процедур, называемых «процедура 1» и «процедура 2». * Предположим теперь, что отливка только что вынута из формы и отвезена к агрегату доводки. Для выполнения доводки надо выполнить следующие этапы. 1. Выполнить процедуру I. 2. Повернуть отливку. 3. Выполнить процедуру ,2. 4. а) выгрузить обработанную отливку из агрегата; б) уложить обработанную отлнвку; в) поднять следующую отливку из штабеля необработанных отливок; г) загрузить ее в агрегат; д) вернуться к этапу I. Отливка довольно тяжела для того, чтобы с ней мог управиться оператор агрегата доводки. Для выполнения всех этапов требуется подъемный край. Он же необходим для поворота отливки. Это означает, что кран участвует в выполнении этапов 2 и 4. В остальнбе время кран простаивает. Взаимосвязь в работе агрегата доводки и крана изображена схематически на рис. 4C.I. Агрегат доводки циклически выполняет перечисленные выше этапы обработки. Кран, в свою очередь, может находиться в одном из двух Процррш Цикл работы агрегата доводка ПрвцеВура i кране Рис. 4С.1. Схематическое изображение обработки отливки примера моделирования 4С циклов в зависимости от того, после какого из этапов (второго или четвертого) его используют. Время, необходимое для выполнения этапов 1 и 3 доводки, показано в табл. 4С. 1 и 4С.2 соответственно. Промежуточная обработка отливки на этапе 2 требует 15 =fa 5 мин. Последовательность действий этапа 4, т. е. выгрузка — укладка — поднятие — загрузка, занимает 30 ± 5 мин. Поскольку этапы 1 и 3 требуют относительно много времени, простой крана будет значительным, если кран будет обслуживать один агрегат доводки. Если кран будет обслуживать несколько агрегатов, могут возникнуть простои агрегатов из-за ожидания освобождения крана. Надо рассчитать, какое число агрегатов целесообразно обслуживать одним краном для достижения баланса в использовании оборудования. Руководство цеха доделочных работ интересуют два вопроса. Во-первых, оно хочет знать, какова будет загрузка крана н агрегатов доводки в случае использования одного крана для обслуживания трех, четырех, пяти н шести агрегатов. Во-вторых, ему следует выяснить, будет ли более целесообразным использование двух кранов для обслуживания группы из десяти агрегатов или трех кранов для группы из пятнадцати агрегатов. Необходимо построить соответствующую модель на QPSS для моделирования работы цеха доделочных работ. Эту модель следует использовать для оценки нагрузки оборудования для всех перечисленных конфигураций системы. В каждом случае следует моделировать работу , в течение 40-часовой рабочей недели. Следует Таблица 4C.I. Распределение времени, необходимого для яыполяеяия процедуры 1 Время выполнения процедуры 1, ижн Менее 60 70 80 90 100 Суммарная частота 0,0 0,12 0,48 0,83 1,00 Таблица 4С.2. Распределение времени, необходимого для выполнения процедуры 2 Время выполнен и я процедуры 2, Инн Менее 80 90 100 ПО Суммарная частота 0,0 0,24 0,73 1,00 201
отметить, что в работе крана могут возникать конфликтные ситуации. В некоторый момент времени один или более агрегатов могут потребовать работу крана для выполнения этапа 2, в то время как один или более других агрегатов могут потребовать работу крана для выполнения этапа 4. Если возникает такая ситуация, то этап 2 должен иметь преимущество перед этапом 4, поскольку этап 2 требует меньше времени, чем этап 4. Это эквивалентно реализации дисциплины обслуживания «ближайшая операция — кратчайшая». 2. Метод построения модели. В системе фигурируют два ограничивающих фактора — число агрегатов доводки и число кранов. В постановке задачи сказано, что один оператор обслуживает один агрегат. Это означает, что ограничение на агрегаты можно рассматривать как ограничение на число операторов. Если с помощью транзактов моделировать операторов, то число операторов можно задавать с помощью блока GENERATE с ограничителем числа транзактов. Далее эти операторы-тран- закты могут циркулировать в модели, проходя все те этапы, которые сформулированы в постановке задачи. После последнего этапа опе- ратор-транзакт должен возвращаться к первому этапу, повторять весь цикл и т. д. Если операторов мы моделируем посредством транзактов, то вполне естественным будет моделирование некоторого числа кранов посредством многоканального устройства. (Использование именно многоканального устройства, а не прибора объясняется тем. что при исследовании модели нам понадобится моделирование работы нескольких кранов.) Пусть многоканальное устройство имеет нмя CRANS. Тогда для использования крана соответствующий опе- ратор-транзакт должен иметь возможность входить в блок «ENTER CRANS». Нагрузка многоканального устройства эквивалентна нагрузке моделируемых подъемных кранов. Возникает вопрос, каким образом собрать статистику об использовании агрегатов доводки. Следует отметить, что агрегат не используют во время выполнения операций выгрузки- загрузки. Но по тому, как сформулирована задача, этот простой не связан с невозможностью выполнения работ ввиду занятости кранов. В этом смысле мы будем считать, что простой агрегата доводки возникает только тогда, когда его оператор ждет освобождения крана. Оценка нагрузки агрегатов доводки может быть осуществлена прн использовании такого элемента моделирования, как многоканальное устройство. Предположим, что имя используемого для этого устройства — BUSY. Перед началом любого этапа обработки на агрегате доводки опсратор-траизакт входит в блок «ENTER BUSY». Если этот этап требует использования крана, оператор-транзакт сначала проходит через блок «LEAVE BUSY», а затем пытается получить кран. Далее, когда кран становится доступным, оператор-транзакт входит в следующий блок «ENTER BUSY» и т. д. Текущее содержимое (Current Contents) многоканального устройства эквивалентно числу занятых в настоящий момент операторов (что, в свою очередь, эквивалентно числу занятых агрегатов доводки). Нагрузка многоканального устройства BUSY, таким образом, является нагрузкой агрегатов доводки. И, наконец, рассмотрим вопросы, касающиеся приоритетной дисциплины обслуживания в соответствии с номером цикла использования крана. Когда операторы-транзакты завершают процедуру 2 и возникает потребность в использовании крана, они должны расположиться в очереди позади всех операторов-транзактов, только что закончивших процедуру 1 и также ожидающих освобождения кранов. Это относительное расположение операторов-транзактов в цепи текущих событий достигается путем задания различных уровней приоритетов транзактов. Предположим, что операторы-транзакты, ожидающие возможности перейти к выполнению процедуры 2, имеют уровень приоритета, равный единице. Если операторы-транзакты, ожидающие этапа выгрузки — укладки — поднятия — загрузки имеют уровень приоритета, равный нулю, то гарантировано необходимое относительное расположение транзактов в цепи текущих событий. Уровень приоритета, равный единице, назначается операторам-транзактам перед их входом в блок ADVANCE, моделирующий отработку процедуры 1. Далее, после того, -как транзакты возвращаются в цепь текущих событий, завершив выполнение процедуры 1, они в цепи занимают относительно правое положение среди транзактов с приоритетом единица, которым снова требуется кран. Аналогичным образом уровень приоритета, равный нулю, назначается операторам-транзактам непосредственно перед их входом *в блок ADVANCE, моделирующий задержку на время выполнения процедуры 2. После того, как транзакты возвращаются в цепь текущих событий, они также становятся в относительно правое положение цепи среди транзактов нулевого приоритета, которым требуется кран (см. параграф 4.12, упражнение 3, а и б). Это означает, что операторы-транзакты, находящиеся на циклическом обслуживании в модели, все время изменяют свой приоритет между значениями единица и ноль. 3. Таблица определений. Единица времени: 1 мин. 202
Табляца 4С.З. Таблица определений примера моделировании 4С ЭлемРЛТ GPSS Транзакты: 1-й сегмент модели 2-й сегмент модели Функции: PROC1 PROC2 Многоканальные устройства: CRANS BUSY Интерпретация Оператор агрегата Таймер Описывает распределение времени выполпепия процедуры 1 Описывает распределение времени выполнения процедуры 2 Его емкость равня числу кранов в пехе окончательной обработки Его емкость равна числу операторов агрегатов
4. Блок-схема. GENERATE I ENTER (CYGLE)j BUSY. ADVANCE FN$PROCI LEAVE ' ' ENTER ' ' ENTER \ ' ADVANCE 15.5 1 ' LEAVE ' 1 BUSY'- <$RANS BUSY, CRANS I—s—i PRIORITY ввести одного ОПЕРАТОРА НА АГРЕГАТ ВОЙТИ В СОСТОЯНИЕ ЗАНЯТОСТИ ВЫПОЛНЕНИЕ ПРОЦЕДУРЫ ПОКИНУТЬ СОСТОЯНИЕ ЗАНЯТОСТИ ПОЛУЧИТЬ КРАН войти в СОСТОЯНИЕ ЗАНЯТОСТИ ПРОМЕЖУТОЧНАЯ ОБРАБОТКА ОСВОБОДИТЬ КРАН УСТАНОВИТЬ НИЗКИЙЛРИВРИТЕТ ДЛЯ СЛЕДУЮЩЕГО ИСПОЛЬЗОВАНИЯ КРАНА . V ADVANCE FN$PROC 2 . и LEAVE { ffNTW v ENTER 1 ■ 1 PRIORITY 1 f ADVANCE 30,5 ' ' LEAVE BUSY' Crans bus\ CRANS GrfjERA'Yg ^ 120 С TERMINATE ( 1 . \^ 120000 | 1 (CYCLE) JRANSFFER ВЫПОЛНЕНИЕ ПРОЦЕДУРЫ ПОКИНУТЬ состоять ЗАНЯТОСТИ ПОЛУЧИТЬ КРАН ВОЙТИ В СОСТОЯНИЕ ЗАНЯТОСТИ УСТАНОВИТЬ 50ЛЕЕ ВЫСОКИЙ ПРИОРИТЕТ ДЛЯ СЛЕДУЮЩЕГО ИСПОЛЬЗОВАНИЯ КРАНА ВЫГРУЗКА.УКЛАДМ' ПОДНЯТИЕ АГРУЗКД ОСВОБОДИТЬ КРАН ПЕРЕЙТИ К ПРОЦЕДУРЕ ДЯЯ СЛЕДУЮЩЕЙ вТЛИЙКИ 2-Й СЕГМЕНТ МОДЕЛИ (СЕГМЕНТ ТАЙМЕРА) 1-Й СЕГМЕНТ МОДЕЛИ Рис. 4С.2- Блок-схема прнмера мохелнрооапия 4С
5. Распечатка программы. BLOCK NUMBER *LOC PROC1 О.60/. ря'осг 0,80/. OPERATION SIMULATE A.B.OD.E.P.U FUNCTION "BEFINITISNiS) FUNCTION RNI.C5 12.70/.46,BOV.63.90/1, 100 FUNCTION RNl.O £4,90/. 73, loo/t, 110 STORAGE CAPACITY DEFINITIONS) TOR ACE S*BUSY.3/S*CRAN5, 1- COMMENTS TIME REQUIREP FOR PROCESS . TIME REQUIRED FOR PROCESS Z INITIALLY 3 MACHINES. I CRANE 1 2 3 4 5 ь 7 8 9 10 11 .12 13 14 IS 1'* 17 1* 11 * BL0K1 CYCLE . * • * * MODEL SEGMENT 1 GENERATE ENTER . ADVANCE LEAVE ENTER ENTER AOVANCk. LEAVE PRIORI TY ADVANCE LEAVE ENTER ENTER PRIORITY ADVANCE LEAVE TRANSFER CENERATE TERMINATE ...3.1 BUSY FN*PH0C1 SUSY CRANS BUSY »s.S CRANS 0 ,FNSPR0C2. BUSY CRANS BUSY 1 30, S CRANS ,CYCLE 1200» 1 CONTROL CAK&S START CLEAR! I BRING IN-1 OPERATOR PER MACHINE ENTER BUSY STATUS PROCESS '1 PROCEEOS LEAVE BUSY STATUS GET A CRANE ENTER BUSY STATUS INTERMEDIATE HANDLING PROCEEDS RELEASE THE CRANE SET LOU PR1DRITY FOR NEXT CRANE USE PROCESS 2 PROCEEOS LEAVE BUSY STATUS GET A CRANE ENTER BUSY STATUS •SET HIGH PRIORITY FOR NEXT CRANE USE UNLDAOt STORE; FETChS LOAD RELEASE THE CRANE. SO 00 PROCeSb 1 ON NEXT CASTING TIMER ARRIVES AFTER £ 4Q-HDUR WEEKS SHUT DFF THE RUN 1 BL0K1 MULTIPLE OEFIN 1 SL0K1 MULTIPLE DEFIN I BL0K1 MULTIPLE DEFIN 1 6L0K1 MULTIPLE DEFIN S BLOK1 MULTIPLE DEFIN GENERATE .,.4»! ITION OF SYMBOL IN ABOVE CAR» STORAGE SSBUSY.4 START 1 CLEAR GENERATE ...S.l ITION OF SYMBOL IN ABOVE CARD STDRAGE SiBUSY.S START i CLEAR GENERATE t.,6.1 ITION OF SYMBOL IN ASQVE CARB STDRA«E 5» BUSY,* START i CLEAR GENERATE ,..10.1 ITION OF SYMBOL IN ABOVC CARD STORAGE S*RUSY. 10/SSCRANS.2 START 1 CLEAR GENERATE . ..l'j.l ITION OF SYMBOL IN ABOVE CARD STORAGE SSBUSY, Ib/S»CRANS, 3 START 1 END START 1ST RUN CLEAR FOR 2ND RUN RE-CONFIGURE FDR 4 OPERATORS NOW 4.MACHINES, 1 CRANE START 2ND RUN CLEAR FOR 3RD RUN RE-CONFIGURE FOR 5 OPFRATORb NOW 5 MACHINES, 1 CRANE -START 3RD RUN CLEAR FOR 4TH RUN RE-CONFIGURE FOR Л OPCRATqRS MOW 6 MACHINES. 1 CRANE START 4TH RUN CLEAR F<pR- ЭТИ RUN RE-CONFIGURE FOR 10 OPERATORS NOW 10 MACHINES■ ? CRANES START STH RUN CLEAR FOR 6TH RUN RE-CONFIGURE1 FOR IS MACHINES NUW is MACHINES. 3 CRANES START 6TH RUN RETURN CONTROL TD SYSTEM САЙб NUMBER t 2 3 '4 S 6 7 В 9 10 11 12 •13 14 IS 16 17 IB 10 20 21 22 23 24 25 26 27 2B 29 ЭО 31 32 33 34 35 36 37 3* 39 40 41 42 43 44 4S> 46 47 48 •49 ЪО 51 5? 53 54 55 50 57 5P 5V *0 Рас. 4G.3. Расаиатка программы примера моделирования 4С
6. Выходные данные здесь не приведены. Ниже даны результаты моделирования. 7. Обсуждение. Логика моделирования. Логика модели предполагает, что в самом начале каждый агрегат доводки находится в состоянии готовности выполнения процедуры 1. При входе операторов-тракзактов в модель агрегаты сразу приобретают состояние «заняты» (блок 2, рис. 4С.З), затем транзакты переходят в блок ADVANCE для моделирования задержки на время выполнения процедуры 1. Заметим, что олераторы-транзакты входят в модель с уровнем приоритета, равным единице. Это делается ввиду того, что следующее использование крана относится к высокоприоритетному типу (следующим использованием крана является раз- ворог отлнвки, т. е, выполнение этапа 2). После того, как транзакт покидает блок ADVANCE процедуры 1 (блок 3, рис. 4С.З), он проходит через последовательность блоков LEAVE—ENTER-ENTER (блоки 4, 5 н б на рис. 4С.З). Если в этот момент кран не занят, все входы будут сделаны в течение нулевого интервала модельного времени. Это означает, что оператор не выходит из состояния занятости. Если оператору приходится ждать освобождения крана перед блоком «ENTER CRANS» (блок 5), то это ожидание отразится на статистике использования многоканального устройства BUSY. Непосредственно перед входом транзактов в блок ADVANCE процедуры 2 (блок 10 на рис. 4С.З) они проходят через блок «PRIORITY 0» для понижения уровня приоритета в соответствии с типом последующего использования крана. Это определяет относительное месторасположение транзактов в цепи текущих событий. Транзакты размещаются позади олераторов-гранзактов, ожидающих использования крана для поворота отливок перед выполнением процедуры 2. Уровень приоритега снова повышается в блоке 14. Результаты моделирования. (Время моделирования на ЭВМ IBM 360/67 равно 19,3 с). Статистические данные о нагрузке в процессе моделирования показаны в табл. 4С.4. График, Число агрегатов на един кран Рис. 4С.4. График нагрузки оборудования Таблица 4С.4. Результаты моДелиройайня примера 4С Отношение числа агрегатов к числу кранов 3: 1 4: 1 5: 1 6:1 10: 2 15:3 Нагрузка агрегатов 0.972 0.945 0.896 0.806 0.917 0.930 11 агруэкв кранов 0.601 0.775 0.9Ю 0-988 0.935 0.947 построенный по данным таблицы, приведен на рис. 4С.4, На графике изображена нагрузка кранов и агрегатов при использовании трех, четырех, пяти и шести агрегатов доводки на один кран. Как и следовало ожидать, кривые нагрузки имеют противоположный характер. Баланс достигается где-то вблизи значения-пяти агрегатов на один край. Под балансом понимают равенство значений нагрузки агрегатов и кранов. Информация табл. 4С.4 показывает, что нагрузка и агрегатов и крапов повышается при переходе от соотношения 5 : 1 к соотношениям 10 : 2 и 15 : 3. Объяснение такого результата мы отложим fcM. параграф 4.12, упражнение 3, г]. 4.12. Упражнения l.a). Поясните подробно, что произойдет при входе траизакта в блок «PRIORITY PR». б). Справедливо ли утверждение; «Вход транзакта с уровнем приоритета, равным 3, в блок «PRIORITY 3» равносилен тому, что такого блока вообще нет на пути траизакта»? 2. Следующиевопросыотносятсякрис. 4.14,6. а). Получили ли бы мы желаемый эффект, если бы расположили блок «PRIORITY 1» между блоками TRANFER и?ENTER? б). Продумайте возможность расположения блока PRIORITY между блоками ENTER и SEIZE, SEIZE и LEAVE, LEAVE и ADVANCE. Получили ли бы мы желаемый эффект во всех этих случаях? в). Если блок «PRIORITY 1> расположить между блоками ADVANCE и RELEASE, то желаемый эффект достигнут не будет. Объясните почему. 3, Следующие вопросы относятся к примеру моделирования 4С. а) Взгляните на блок. «PRIORITY 0» (блок 9 на рис. 4С.З). Заметьте что оп расположен перед блоком «ADVANCE FN$PROC2» (блок 10). Работа модели не изменится, если поместить этот блок после блока ADVANCE. Объясните почему. б). Взгляните на блок «PRIORITY Ь (блок 14 на рис. 4С.З). Заметьте, что он стоит
перед блоком «ADVANCE 30,5» (блок 15). Если поменять эти блоки местами, то и в этом случае работа модели не изменится. Объясните почему. в). Используется ли многоканальное устройство BUSY для моделирования одного из условий системы? В частности, может ли какой-либо из блоков «ENTER BUSY» отказать во входе транзакту? Объясните почему да нли почему нет. г). Объясните причину того, что нагрузка кранов и агрегатов доводки возрастает при переходе от соотношения 5 : 1 к соотношениям 10 : 2 и 15 : 3. 4. Метод моделирования примера 4С во многом схож с методом моделирования примера 2D. Другой метод моделирования примера 2D использован для построения модели, изображенной на рис. У12 параграфа 2.14. Покажите, как использовать этот другой метод при построении модели примера 4С. 4.13. Системы обслуживания с несколькими приборами и очередями На рис. 4.15, а показана система обслуживания с несколькими каналами и одной очередью для случая, когда параллельно работают три канала. Моделирование такой системы на GPSS было рассмотрено в параграфе 2.38. Напомним, что оно включало моделирование работы параллельных каналов с помощью многоканального устройства и что единственный регистратор очереди нснользовали для сбора статистических данпых об ожидающих их требованиях {см. рис. 2.45). Приход **оооо /%^ Уход а) Очередь N^gpX' Три параллельно работающих прибора Приход Очередь . >^ooo-HoW S\ _ га ^ Уход —оо-ч« Б) -Ор-*|] Три/, работающих лрибоиа. Три параллельно toon, Рис 4.15. Альтернативные системы массового обслуживания стремя параллельно работающими приборами: a — система обслуживания с одной очередью и несколькими приборами,- б — система обслуживания с несколькими очередями и несколькими параллельно работающими приборами На рис. 4.15, б показана работа системы обслуживания с несколькими каналами, перед которыми образуются раздельные очереди. Такие системы массового обслуживания имеют место, например, в продовольственных магазинах с несколькими кассами на выходе, на площадках сбора платы за проезд по скоростным дорогам с несколькими тур ни кетами, в банке с обслуживанием несколькими кассирами и т. п. Рассмотрим теперь, как моделировать такие системы на GPSS. Методом моделирования является моделирование каждого из обслуживающих каналов с помощью приборов GPSS. Перед каждым каналом может образоваться очередь. Предположим, например, что приборы 1, 2 и 3 используют для моделирования параллельно работающих каналов, представленных на рис. 4.15,6. Пусть очереди перед этими каналами также имеют номера 1, 2 и 3 соответственно. Тогда параллельное обслуживание моделируется н соответствия с фрагментом блок-схемы модели, изображенной на рис. 4.16. Предполагается, что транзакты, входящие в блок-схему, выбирают одну из трех ветвей, по которой они будут двигаться дальше. После прохода по своим ветвям они снова объединяются. В каждой из трех ветвей (рис. 4.16) есть очень много общего. Действительно, последовательность блоков совершенно одинакова. Отличаются только значения операндов А блоков QUEUE, SEIZE, DEPART и RELEASE. Если бы значения этих операндов определялись косвенным образом, например через значения параметров траизактов, можно было бы обойтись единственной последовательностью блоков для изображения гех же трех ветвей. Предположим, например, что транзакты выбирают номер прибора непосредственно перед входом в сегмент модели и что соответствующий номер ветви определяется значением параметра 1 транзакта. На рис. 4.17 показана единственная последовательность блоков, эквивалентная трем ветвям, приведенным на рис. 4.16. При входе в последовательность (рис. 4.17) транзакта, первый параметр которого имеет значение 1, он присоединяется к очереди 1, ждет возможности занять прибор 2 и т. д. Аналогичным образом, транзакты, у которых Р1 имеет значение 2 или 3, присоединяются к очередям 2 нли 3 соответственно, ждут освобождения приборов 2 или 3 и т. д. Можно заключить, что сегмент, изображенный па рис. 4.17, является компактной записью сегмента, изображенного на рис. 4.16. Экономия, достигнутая за счет косвенпого определения элементов (рис. 4.17), может быть еще более значительной при параллельной работе более чем трех приборов. 207
QUEUE i SEIZE ' DEPART ' ADVANCE FNSHOLD i' RELEASE Э A Q V QUEUE SEIZE DEPART A ADVANCE FNSHOLD RELEASE R7 ■ QUEUE ■' SEI?fc " DEPART 1 ADVANCE FNSHOLD V RELEASE 3 A Э \v Рис. 4.16. Сегмент блок-схемы, моделирующей параллельное обслуживание \
OUEUE 1 к 1' SEIZE . " DEPART i ' ADVANCE FNSHOLD \ ' RELEASE Г~т\ Э л A f~\ Э Рис 4.17. Последовательность блоков, эквивалентная параллельным ветвям на рис 4.16 Выше предполагали, что транэакт выбирает номер прибора непосредственно перед входом в сегмент модели, приведенной на рис. 4.17 илн 4.16. Как это реализуется в моделях, записанных на GPSS, мы рассмотрим ниже. 4.14. Выбор элементов по их состояниям. Блок SELECT (ВЫБРАТЬ) Требования, входящие в систему обслуживания с несколькими приборами и очередями, в простейшем случае выполняют одно из двух действий. 1. Если один из приборов в настоящий момент свободен, требование занимает этот прибор. 2. Если вес приборы заняты, требование присоединяется к наиболее короткой очереди и остается в ней до тех пор, пока не будет обслужено. Это наиболее простая стратегия поведения. Усложнения можно ввести без труда. Например, даже если один или более приборов свободны, требование может решить оставаться в очереди того прибора, который им выбран, но в настоящее время занят; вместо простого присоединения к кратчайшей очереди и ожидания в ней требование может переходить в другие очереди, если чувствует, что в старой очереди ждать придется долго, а другая очередь двигается быстрее. В этом параграфе мы будем рассматривать простейшую стратегию поведения требования. Во-первых, в соответствии с действием 1 надо найти метод поиска прибора, свободного в настоящее время. Во-вторых, в соответствии с действием 2 мы рассмотрим, как найти, какая из очередей является кратчайшей. И, наконец, опишем метод моделирования процесса выбора прибора. 4.14.1. Блок SELECT в режиме оператора отношения В GPSS есть блок, который может быть использован для просмотра множества элементов определенной группы для выяснения того, удовлетворяет ли хотя бы один из них определенному числовому условию. При входе транзакта в этот блок последний выполняет просмотр состояний элементов определенной группы. Просмотр выполняется в порядке возрастания номеров элементов. Если найден такой элемент, который удовлетворяет установленному условию, просмотр прекращается. В противном случае просмотр прекращается после определения того, что ни один из членов множества не удовлетворяет этому условию. В любом случае тран- закт продвигается в модели (сразу же или как только позволит следующий блок) после завершения просмотра. Ниже приведено несколько примеров просмотров, которые может выполнить блок. 1. Просмотреть приборы I, 2 и 3 для определения, находится ли хотя бы один из них в свободном состоянии (т. е. надо определить, есть ли хотя бы один прибор, для которого атрибут F равен нулю). 2. Просмотреть многоканальные устройства для определения, есть ли хотя бы одно устройство нагрузка которого ниже 25% (т. е. надо определить, есть ли хотя бы одно устройство, атрибут которого SR меньше 250). 3. Просмотреть очереди 13, 14, 15, 16 и 17 для определения, есть ли хотя бы одна из них, у которой среднее время пребывания, если исключить нулевые входы, не меньше 3 (т. е. надо определить, существует ли хотя бы одна из этих очередей, атрибут которой QX превышал или был бы равен 3). Для осуществления такого просмотра используют блок SELECT (ВЫБРАТЬ). Этот блок вместе со своими операндами показан на рис. 4.18. Операнд Е задает групповое имя стандартного числового атрибута (например F, SR, QX, как в приведенных выше примерах). Операнды В и С указывают соответственно мини- 14 т. Дж. Шравбер 209
адсХе,; Рис. 4.18. Блох SELECT со вспомогательным оператором к операндами Л, В, С, D, Е и F: Операнд Е В и С D X А Г Значение Групповое имя стандартного числового атрибута Наименьший и наибольший номера из множества членов просматриваемой группы Значение, с которым должен сравниваться атрибут, указанный в операнде Е Вспомогательный операнд. Ов является оператором отношения, определяющим способ сравнения СЧА, указанного операндом Ь и значением операнда D. Фактически X имеет одну из следующих форм: Оператор отношения G GH L. NR LE I. Интерпретл1(Ии п смысле блока SELECT Польше ли Е, чем D? Ьольше или равны Е и D? Равны ли П и Р? Точно ли не равны Е и D? Меньше иди равны h и D? Меньше ли Е, чем D? Номер параметра, в который записывается номер члена группы, отвечающего установленному условию Необязательный операнд; указывает имя блоня. и который передается траизакт, если пи один член группы не отвечает устеиовлениому условию Значение или результат по умолчанию Ошибка э -> Оожбка Траизакт обязательно переходит в следующий по иорвдку блок мальный и максимальный номера членов группы. Они относятся к определенной группе, члены которой сканируются (например, 1 и 3, 5 и 8, 13 и 17, как в приведенных выше примерах). Операнд D указывает значение данного, с которым следует сравнивать значение атрибута, заданного операндом Е (например, 0, 250, 3, как в приведенных выше примерах). Отношение порядка между стандартным числовым атрибутом и звачением операнда D задастся с помощью вспомогательного оператора, представленного записью X на рис. 4.18. Вспомогательный оператор может принимать значения G, GE, L, LE, E и NE для обозначения таких соотношений, как больше, больше — равно, меньше, меньше — равно, равно и не равно соответственно. Операнд А блока SELECT указывает номер параметра транзакта. Если при просмотре обнаруживается член множества, который удовлетворяет установленному условию, помер этого члена переписывается в качестве значения указанного параметра. После этого траизакт покидает блок SELECT. Конечно, может случиться так, что ни один член группы не будет удовлетворять установленному условию. Если при этом необязательный операнд F блока SELECT не используется, значением указанного параметра транзакта становится ноль, и транзакт .переходит из блока SELECT в следующий блок. Если же операнд F задан и просмотр не дал положительных результатов, транзакт выходит из блока, но входит не в следующий блок, а в тот, имя которого указано в качестве операнда F. Когда имеет место такой выход, значение параметра транзакта не устанавливается в ноль; в этом случае блок SELECT не оказывает влияния на значение параметра. На рис. 4.19 представлены три примера использования блока SELECT, соответствующие трем представленным выше типам просмотра. На рис. 4.19, а показаны операнды для просмотра приборов 1, 2 и 3 для определения, есть ли среди них такой, для которого атрибут F был бы равен нулю. В блоке не предусмотрен дополнительный выход. В результате, транзакт, пройдя блок SELECT, будет пытаться войти в следующий блок. Если просмотр закончился успешпо, траизакт выйдет со значением параметра 7, равным номеру того прибора (I, 2 или 3), для первого из которых обнаружено, что его атрибут F равен нулю. Если просмотр не дал положительного результата, траизакт покидает блок SELECT с пулевым значением параметра 7.' Предположим, что в предыдущем примере два из трех приборов имеют атрибут F, равный нулю в момент выполнения просмотра. Тогда номером прибора, записанным в параметр 7, будет меньший из номеров этих приборов. Если, например, атрибут равен нулю для приборов 2 и 3, то значением параметра 7 будет 2. При входе транзакта в блок SELECT (рис. 4.19, б) просматриваются многоканальные устройства 5, 6, 7 и 8 для определения, какое из них имеет нагрузку, меньшую, чем 250 долей тысячи. Если просмотр закончился успешно, то число 5, 6, 7 или 8 будет записано в параметр, номер которого определен через РЗ транзакта, и сам транзакт переходит в следующий блок. Слова в блоке SELECT не определен операнд F, поэтому, если просмотр не будет успешным, значением соответствующего параметра будет ноль. Выход транзакта остается тем же. . На рис. 4.19, в предусмотрен дополнительный выход из блока SELECT. При входе транзакта в этот блок просматриваются очереди с номерами 210
0 SELECT 7.1.3.0, F T \ LOCAilDN T7TT i_.lAi-E.CiTi ,E, i , « » 014 Hi'iCN 10 iijl?lijir«'lSJi«|l?|lt " l .___. i I L ... • X -J..J I 4 B.C.D.t f &г|"гг'г^¥П^^:Тй!«1оТ1|]м]1Г}4Т»!^ 7,.ilu.3._Xlu-F. 1 L-l 1 . J. L-J. I I _L- ПЕРВЫЙ ' ПРИМЕР ! _u i . —i --^-4- < .i i__ i_i i i -i—j i i j_J L _-:.!_' . Lj ___1___1__1, LJ_pj; ,,$...*..a_Q,.s__. . .. i j_,_, ВТОРОЙ ' ПРИМЕР I .1 I L i » J 1 1. , ■ i i ,4_ iJLUiCX-Ab.. Jl^lJ,.il7i..*.(QJL*__X.|_ji .1 I I 4 ._.!. ТРЕТИЙ I ПРИМЕР I i ■ . ■ i I Рис 4.19. Примеры (в—в) испольяооания блока SELECT и карты (г), представляющие примеры блоков SELECT от 13 до 17 и определяется, есть ли хотя бы одна из них, атрибут QX которой больше или равен 3. Если одна из очередей удовлетворяет этому условию, ее номер записывается в параметр 5 транзакта, который далее выходит из блока SELECT и переходит в следующий блок. Если ни одна из этих очередей не удовлетворяет указанному условию, транзакт переходит в блок, имя которого указано операндом F, т. е. в блок EXIT2. Параметр 5 при этом не меняет своего значения. На рис. 4.19, г показано, каким образом следует записывать блоки примеров а, б и в на бланке. Следует обратить внимание на то, что в каждом случае вспомогательный оператор записывается в поле операции сразу после соответствующего основного оператора блока и одного пробела. Позже мы увидим, что существует еще несколько типов блоков в GPSS, которые также используют вспомогательные операторы. При подготовке перфокарт для таких блоков вспомогательный оператор перфорируется также после одного пробста в поле операции вслед за кодом основного оператора. Наконец, отметим следующие особенности блока SELECT. Во-первых, как и следует ожидать, значения операндов А, В, С и D могут задаваться явно или косвенно. В примерах на рис. 4.19 косвенное определение операнда имело место только в операнде А (рис. 4.19, б). Во-вторых, условие, определенное для просмотра, имеет вид «СЧА (оператор отношения) значение операнда D». Следовательно, на рис. 4.19, б условием является «значение SR меньше 250», а не условие «250 меньше значения 14* SR». В-третьих, все члены данной группы от номера, определенного операндом В, до номера, определенного операндом С, должны быть просмотрены. При таком использовании блока SELECT ист, например, возможности просмотреть приборы с номерами 3, 4, 7, 10 и 12, значением атрибута F которых был бы ноль. 4.14.2. Блок SELECT в режимах MIN или МАХ Описанный режим использования блока SELECT позволяет выяснить, есть ли среди членов определенной группы элемент, удовлетворяющий некоторому условию. Этот же блок может быть использован в режиме поиска члена группы, значение определенного атрибута которого является минимальным или максимальным. Такой режим позволяет отвечать, например, на следующие вопросы. 1. Какая из очередей имеет наименьшее значение текущего содержимого? 2. Какой из приборов имеет наименьшую нагрузку? 3. У какого из многоканальных устройств больше всего свободных каналов? Общим для всех этих случаев является вопрос: «какой из членов заданной группы в указанном диапазоне номеров имеет минимальное или максимальное значение соответствующего атрибута?». Для ответов на такие вопросы блок SELECT можно использовать в режимах MIN или МАХ. 211
Рис. 4.20. Пример использования блока SELECT в режимах МИ^или МАХ: Операнд £ В и С А X Значение 1 руппоиое имя стандартного числового итрибута Нижни» и верхняя границы номеров членов соответствующей группы Номер парахетра, значением которого становится номер соответствующего элемента, имеющего минимальное нли максимальное значение атрибута Вспомогательный оператор. Он является оператором M.1N или МАХ и зависимости от того, определяется ли элемент, имеющий минимальное или максимальное значение атрибута Результат по умолчанию Ошибка » КАКОЙ ИЗ ПРИБОРОВ С НОМЕРАМИ ОТ 5 ДО В ИМЕЕТ МИНИМАЛЬНУЮ ОТНОСИТЕЛЬНУЮ НАГРУЗКУ? ПОМЕСТИТЬ НОМЕР ЭТОГО ПРИБОРА В ПАРАМЕТР 6 61 (мАХ SELECT 5.S,M,.R КАКОЕ ИЗ МНОГОКАНАЛЬНЫХ УСТРОЙСТВ С НОМЕРАМИ ОТ 9 ДО 14 ИМЕЕТ НАИБОЛЬШИЙ РАЗМЕР ОСТАВШЕЙСЯ ЕМКОСТИ? ПОМЕСТИТЬ НОМЕР ЭТОГО УСТРОЙСТВА В ПАРАМЕТР 5 Q SELECT P2.2.5„FT \ > V КАКОЙ ИЗ ПРИБРОВ С НОМЕРАМИ ОТ 2 ДО 5 ИМЕЕТ НАИБОЛЬШЕЕ ЗНАЧЕНИЕ БРЕМЕНИ ЗАНЯТИЯ? ПСМЕСГИТЬ НОМЕР ЭТОГО ПРИБОРА Б ПАРАМЕТР НОМЕР КОТОРОГО УКАЗАН ЗНАЧЕНИЕМ ПАРАМЕТРА 2 Рис 4.21. Примеры (с—г) использования блока SELECT в режимах MIN и МАХ и карты {<?), соответствующие примерам о—г КАШ ЛЗ ОЧЕРЕДЕЙ С НОМЕРАМИ 01 ЗНАЧЕНИЯ, НАХОДЯЩЕГОСЯ В Р2 ДО ЗНАЧЕНИЯ. НАХОДЯЩЕГОСЯ В '3. ИМЕЕТ НАИМЕНЬШЕЕ ТЕКУЩЕЕ СОДЕРЖИМОЕ? ПОМЕСТИТЬ НОМЕР ОЧЕРЕДИ В ПАРАМЕТР.НОМЕР КОТОРОГО НАХОДИТСЯ В PI А) LOCATION a Js py iijii J'JJ^iJIitfiTJ» l ..-ЬьЫ.|Е.С|Ь_ЙШ4 JTJ |_J ! _ \ I i I J .... 'I S.tiLEfilL. M&iXl. OPERATiOn д.р.с,р,ь,г —**■ __^__ ____^_ ' ' ' nmjklM ' nmiurrt I I I I , , , , Pl , , ПЕРВЫЙ ' ПРИМЕР , ft, ..S -,», .1 r.F ■■ , . J_i_i.^._: j. I I ■.! i I | ._^_L I bfiLbC.T,. MAJCl. 4ACAEJ- _l 1 I I I I. _ L J I I i_l I. | sLii9i»-Jj4 <j..i(ti _j j i i _l I l J—L. P.>i| ifr., Д , ! , iFj'x -LI I I I. L J_ J . ! ' J.-L.1 -Н- . I ВТОРОЙ J-.C-L. I I ПРИМЕР , ■ ■ ' '-!-■ .!_.. i .1. J k 1-.1 11.1 j J—L, _1_<_L..I I ' _l.l L ТРЕТИЙ I ПРИМЕР ,U-j-L-L_ 1(11 ''lETBF.PlhW ПРИМЕР XL ^|J I I Li ] i _L. I : A i i ' I I I t ■ ' L.J J . I I.Ll.J.li 1 . -•-i-l- !-V I ■ ' .L. (
Роль вспомогательных операторов для такого режима использования блока SELECT играют слова MIN и МАХ. Сам блок и его операнды изображены на рис. 4.20. Операнды А, В, С и Е остались теми же, что и в блоке SELECT в режиме оператора отношения. Взятые вместе, они говорят, какой атрибут проверяется (операнд Е), какие номера членов группы будут проверяться (операнды В и С) и куда поместить результат проверки (операнд А). Поскольку атриоут должен отвечать некоторому абсолютному условию, значение операнда D ие задается. Значением вспомогательного оператора являются MIN или МАХ в зависимости от того, какое значение атрибута нас интересует. И, наконец, поскольку один из членов элементов нмеег минимальное или максимальное значение, не надо предусматривать дополнительного выхода из блока SELECT в режиме МШ или МАХ. Иначе говоря, блок в этом режиме не имеет необязательного операнда F. На рис. 4.21 приведены четыре примера использования блока SELECT в режимах MIN или МАХ и дано пояснение к использованию каждого из этих блоков. Отметим, в частности, что в примерах на рис. 4.21, в и г'показаны косвенные определения значений операнда А. Кроме того, в примере на рис. 4.21, г использовано косвенное определение значений операндов В и С. На рис. 4.21, д показано, как записываются блоки примеров а—г на бланке. IQUEUP1 SEIZE 1 DEPART 1 ADVANCE FNSHOLO ' RELEASE A Э V OUEUP) •—\, SELECT 1 f.'lN X TRANSFER Рис. 4.22. Пример использования блока SELECT в модели системы обслуживания с несколькими очередями 4.14.3. Использование блока SELECT при моделировании системы обслуживания с несколькими приборами На рис. 4.22 показано использование блока SELECT при моделировании параллельного обслуживания, представленного ранее на рис. 4.17. Трсбование-транзакт сначала входит в блок SELECT в режиме оператора отношения, в котором определяется наличие прибора, который был бы свободен в настоящее время. Если такой прибор найден, то его номер записывается первым параметром тран- закта, и он входит в последовательность блоков QUEUE - SEIZE — DEPART — ADVANCE — —RELEASE, которая моделирует использование прибора. Если же свободного прибора не оказалось, транзакт выходит из блока SELECT через дополнительный выход и попадает в блок SELECT в* режиме MIN, который имеет имя QUE UP. Б этом блоке номер самой короткой очереди помещается в параметр 1. После stoiO транзакт возвращается в блок QUEUE, где он присоединяется к очереди с самой малой длиной. Таким образом, при использовании блока SELECT в обоих указанных режимах легко реализуется простейшая стратегия процесса выбора прибора, описанная ранее. 4.15. Пример моделирования 4D. Сравнение альтернативных вариантов систем обслуживания в банке 1. Постановка задачи. Приход клиентов в банк описывается пуассоповским входящим потоком со средней интенсивностью 200 в час. В течение всего времени работы открыто восемь окошек кассиров. К каждому кассиру стоит очередь. Если в момент входа клиента в банк хотя бы один кассир свободен, клиент сразу же попадает к этому кассиру. В противном случае клиент присоединяется к любой очереди, которая на текущий момент является кратчайшей. Обслуживание клиентов в очереди осуществляется по принципу «первым пришел — первым обслужен». После обслуживания клиент уходит из банка. Обслуживание в кассе может быть разделено на пять различных видов. Относительная частота этих видов обслуживания и соответствующее среднее время обслуживания показаны в табл. 4D.I. Время обслуживания каждого вида имеег экспоненциальное распределение. Ни один из 213
Таблица 40.1. Время выполнения банковской операции Ввд операции 1 2 3 4 5 Относительная частота 0,10 0,19 0,32 0,24 0,15 Среднее лремя обслуживания, с 45 75 100 150 300 клиентов не требует выполнения более чем одного вида обслуживания за один визит в банк. Директор банка заметил, что очереди в банке непомерно велики. Он хотел бы сократить время ожидания клиентов, но без привлечения к работе повых кассиров. Директор зиает, что в одном из соседних банков была введена система с так называемой «быстрой очередью». В такой системе клиенты попадают в банк н становятся в общую очередь. Когда какой- либо кассир освобождается, клиент, стоящий в очереди первым, идет к окошку этого кассира. По-видимому, система с быстрой очередью должна снижать время ожидания ввиду исключения ситуаций, когда медленно двигающаяся очередь образуется перед окошком, где клиент потребовал очепь долгого обслуживания. Поскольку такие ситуации имели место, директор решил провести эксперимент с внедрением быстрой очереди. Необходимо построить GPSS-модель, которая дала бы информацию об очереди при обоих режимах работы в банке, т. е. лрн существующем режиме работы и предлагаемом режиме с введением быстрой очереди. Выполнение моделирования должно охватить пять отдельных пятичасовых диен для каждого варианта, после чего результаты необходимо сравнить. Необходимо сделать максимально схожими условия экспериментирования для сравниваемых альтернативных систем. Это означает, что в обоих случаях последовательности интервалов времени прихода должны быть строго одинаковыми. То же относится и к последовательности значений времени обслуживания клиентов. Например, если 21-й клиент входит н систему с раздельными очередями на третий день через 16 мин после начала работы и требует 165 с для обслуживания, то же самое должно иметь место для 21-го клиента, входящего в систему с одной очередью, на третий день работы. И, наконец, в случае возникновения узлов времени для событий «приход клиента» и «завершение обслуживания», последнее должно обрабатываться первым. (В системе с раздельными очередями это влияет на выбор клиентом кассира). 2. Метод построения модели. Последовательность блоков для системы с одной очередью нам хорошо знакома. Основным вопросом» который может возникнуть, является вопрос как сделать одинаковыми условия моделирования. Для возможности повторения условий прихода необходимо, чтобы только интервалы прихода разыгрывались с использованием генератора RN1. Управление временем обслуживания требует более тщательного продумывания. Относительный порядок, в котором клиенты попадают на обслуживание, будет, в общем случае, различным для обеих систем.. Следовательно, у нас нет возможности управлять временем обслуживания с помощью обычного розыгрыша времени обслуживания непосредственно перед началом обслуживания. Если бы мы поступили именно так, то, например, 21-й приход в систему с одной быстрой очередью привел бы к 21-му розыгрышу времени обслуживания; в противоположность этому, 21-й приход в систему с несколькими очередями может вызвать, например, 18-й розыгрыш времени обслуживания. Соответствующие значения могут существенно различаться. Простым выходом из создавшейся ситуации является розыгрыш времени обслуживания для всех клиентов сразу же после их входа в систему. Тогда /-й вход в систему вызовет j-й розыгрыш времени обслуживания для обеих моделей, / = 1, 2 и т. д. Такое предварительно разыгранное время обслуживания можно сохранить в некотором параметре соответствующего клиеита-транзакта. Позднее, когда трак- закт войдет в блок ADVANCE, эгот параметр следует использовать в качестве А-операнда блока. В параграфе 4.7 была рассмотрена возможность использования необязательного операнда С в блоке ASSIGN для розыгрыша чисел в соответствии с экспапенциальиым распределением. Такое использование блока ASSIGN весьма подходяще для пашей модели. Другим аспектом управления условиями моделирования является использование генераторов случайных чисел. Заметим, что для одного клиента выполняется реализация трех розыгрышей случайных чисел. 1. Необходимо разыграть случайное число в соответствии с экспоненциальным распределением для расчета интервала времени прихода клиента. 2. Необходимо разыграть случайное число для определения, какой вид обслуживания понадобится клиенту, т. е. надо определить среднее время обслуживания этого клиента. 3. Необходимо разыграть случайное число в соответствии с экспоненциальным распределением для преобразования среднего времени обслуживания клиентов в фактическое время обслуживания. Можно каждому из этих источников случайности отвести свой собственный генератор слу- 214
чайиых чисел. Недостатком этого было бы: 1) необходимость определять две разноименные, но одинаковые функции на 24 значения для реализации экспоненциального распределения; 2) использование в модели трех из восьми генераторов случайных чисел GPSS. Второй недостаток неочень существен, поскольку для данной задачи генераторов достаточно. Тем не менее в целях экономии мы будем использовать только один генератор случайных чисел. Строгий хронологический порядок, в котором производится розыгрыш случайных чисел, позволяет использовать одни генератор. Правильное повторение условий эксперимента г.ри этом гарантируется. На рис. 4D. I показана последовательность блоков GENERATE—ASSIGN при условии, что единицей времени выбрана 0,1 с. Эти блоки мы будем использовать в модели. Функция 5 используется для описания экспоненциального распределения, а функция с именем MEAN описывает распределение вида обслуживания. Обе функции используют в качестве аргумента RN1. Рассмотрим теперь последовательность, в которой используется значение RN1. В табл. 4D.2 показана первая-часть этой последовательности. Первое обращение к RN1 происходит в блоке GENERATE в процессе выполнения фазы ввода. Соответствующее значение RN1 используется для расчета интервала времени прихода первого клиента. Далее, когда этот клиент- транзакт входит в блок GENERATE, операнды блока рассчитываются интерпретатором еще раз (как это описано в параграфе 3.22). Расчет значения FN5 операнда В приводит ко второму обращению к RNI. Поскольку это значение функции никогда не используется, значение RN1, полученное от второго обращения к нему, отбрасывается (см. табл. 4D.2). Далее, при попытке интерпретатора продвинуть первый транзакт через блок GENERATE, он рассчитывает операнды блока ASSIGN. Сначала рассчитывается значение FNJW4EAN операнда В. Это приводит к третьему обращению к RNl. Операнд С блока ASSIGN задается в явном виде как константа 5, следо- GENERATE I L \J80.FN5 м 1.FNSMEAN.5 ( ASSIGN Рис. 4D.I. Последовательность блоков GENERATE— ASSIGN, предлагаемых Для использования в модели примера 4D Таблица 4D.2. Последовательность обращения к RNI в модели примера 4D Номгр обращения к RN1 I 2 3 4 5 6 7 8 9 10 11 12 13 tvntm. иэ которого происходит иОрпщеЯче GENERATE GENERATE ASSIGN GENERATE ASSIGN GENERATE ASSIGN GENERATE ASSIGN GENERATE ASSIGN- GENERATE ASSIGN и т. д. Ими вычисляемо!) фуииции б 5 MEAN о 5 5 MEAN 5 5 о MEAN 5 5 Где используется значение функции Интервал прихода клиента I Отбрасывается Время обслуживании клиента 1 Интервал прихода клиента 2 Время обслуживания клиента 1 Отбрасывается Время обслуживания клиента 2 Интервал прихода клиента 3 Время обслуживания клиента 2 Отбрасывается Время обслуживания клиента 3 Интервал прихода клиента 4 Время обслуживания клиента 3 вательао, больше пока никаких обращений к RN1 не будет. (Важно понимать различие между значением операнда С, которое в нашем случае является номером пятой функции и значением самой функции. В последнем случае определяется только номер функции, т. е. число 5, а ие значение пятой функции.) Теперь, поскольку первый клиент-транзакт может выйти из блока GENERATE, интерпретатор выполняет планирование прихода транзакта-носле- дователя. Это требует расчета операндов блока GENERATE, которое приводит к четвертому обращению к RN1. И, наконец, после выполнения этапа планирования завершается вход транзакта. Рассчитывается значение параметра в блоке ASSIGN для входящего транзакта, и это приводит к пятому обращению к RN1. Для расчета времени обслуживания первого клиента значение функции, номер которой равен 5, вычисляется только теперь. Именно это и приводит к пятому обращению к RNl. Значение FN5 умножается на ранее вычисленное значение FN$MEAN (полученное при третьем обращении к RN1), и целая часть произведения помещается в параметр 1 в качестве значения времени обслуживания. И так далее. Табл. 4D.2 показывает дальнейшее использование RN1 для расчета значений интервалов прихода и времени обслуживания второго и третьего клиентов, а также расчета интервала времени прихода четвертого клиента. Заметим, что для расчета значений одного клиента тре- 5
буется четыре обращения. Обращения 1, 2, 3 и 5 потребовались первому клиенту; обращения 4, 6, 7 и 9 использованы для второго клиента; обращения 8, 10, II и 13 — для третьего и т. д. (Обращения для первого клиента не являются типичными. Клиенты 2, 3, 4 и т. д. всегда требуют использования обращений с номерами k, к + 2, k -f- 3 и k -f- 5, где ft = 4 для второго, k = 8 для третьего, k — 12 для четвертого клиента н т. д.) Если RN1 начинается с одного и того же значения в первый день для обеих моделей, то клиенты этого дня будут иметь идентичные значения в обеих моделях. Аналогичным образом, если RN1 будет иметь одинаковые значения в начале второго дня в обеих моделях (но отличные от значений первого дня), это даст гарантию совпадений значений для клиентов второго дня (но разных значений в общем случае с клиентами первого дня). И так далее для всех пяти дней моделирования. Рассмотрим теперь различия начальных значений RN1 для различных дней моделирования. Это легко достигается при использовании карты RMULT между последовательными днями. Но в этом нет необходимости, поскольку при переходе к каждому следующему дию RN1 остается в точности таким, каким он был в конце предыдущего дня. Поскольку нас волнует вопрос соответствия условий эксперимента в обеих моделях, скажем, что число клиентов, вошедших в модель с одной очередью в течение первого дня, в точности совпадает с числом клиентов, вошедших в модель с несколькими очередями в течение того же первого дня. Это означает, что число обращений к RN1 в течение первого дня моделирования остается одним и тем же в обеих моделях. Это, в свою очередь, дает гарантию того, что если оставлять значение RN1 неизменным при переходе ко второму дню, то оно будет одинаковым в двух моделях. То же можно сказать относительно третьего, четвертого и пятого дня. Наконец, нам необходимо обеспечить старшинство в обработке события завершения обслуживания над событием прихода клиента в случае возникновения узла времени с этими событиями. Это можно сделать в системе с несколькими очередями путем внесения клиента- транзакта в модель с уровнем приоритета, равным нулю. Далее, где-нибудь между блоком GENERATE и блоком ADVANCE, в котором дгоделнруется время обслуживания, уровень приоритета клиента-транзакта должен быть повышен на единицу с помощью блока «PRIORITY Ь. Это дает гарантию того, что клиент-транзакт, находящийся в цепи текущих событий, для которого истекло время обслуживания, 'будет стоять перед теми транзактами, которые только что вошли в модель. Состояние кассира-прибора и содержимое очереди будет соответствующим образом скорректировано ко времени прихода любого клиента-транзакта. Интересно отметить, что никакого изменения приоритета не следует делать в случае одновременного возникновения событий завершения обслуживания и прихода клиента в системе с одной очередью. Поскольку в модели существует всего одна очередь и клиенты не различают кассиров, совершенно бессмысленно говорить о выборе очереди, к которой может присоединиться клиент, или о выборе кассира, к которому пойдет клиент. 3. Таблица определений. Единица времени: 0,1 с. Таблица 4D.3. Таблица определений примера моделирования 4D а) Модель с одной общей очередью Элементы GPSS Траиаакты: 1-й сегмент модели 2-Й сегмент модели Функции: 5 MEAN Очереди: ОМЕ Многоканальные устройства: TELRS ' Иитсрпрстаци и Клиенты; Р1 — время обслуживания клиента Таймер Описывает экспоненциальное распределение с единичным значением среднего * Описывает среднее время выполнения банкопских операций различных типов Описывает общую очередь в банке и собирает по ней статистику Моделирует восемь кассиров банка б) Модель с несколькими раздельными очередями Элементы OPSS Транзакты: 1-й сегмент модели Приборы: 1, 2, 3, 4, Б, 6, 7 и 8 Очереди: 1, 2. 3, 4, б. 6. 7 в 8 10 Интерпретация Клиенты; Р1 — время обслужена- ния клиента Р2 — иомер очередв, в которую клиент становится, в аомер кассира Моделируют восемь кассиров баша Описывают очередв перед кассирами и собирают по иим статистику Описывает обобщенную очередь для сбора агрегированной статистики по всем очередям в банке
4. Блок-схемы. GENERATE ^ leo.FNs,,,,! J , \ l,FN$MEAN.S С ASSIGN \ QUE'JE 1 ENTER Т DEPART ' ' ADVANCE PI ' ' LEAVE ) 0 TELRS St TELRS X rERMINATE . ПРИХОД ШЕНТ08 УСТАНОВИТЬ PI. РАВНОЕ ВРЕМЕНИ ОБСЛУЖИВАНИЯ ПРИСОЕДИНИТЬСЯ К ОЧЕРЕДИ > ПОЙТИ К СВОБОДНОМУ КАССИРУ ПОКЧНУТЬ СЧЕ"ЕДЬ ВЫПОЛНЕНИЕ ОПЕРАЦИИ ОСВОБОДИТЬ КАССИРА УЙТИ ИЗ БАНКА GENERATE I >—1 V 16D000 TERMINATE 2-Й СЕГМЕНТ МОДЕЛИ (СЕГМЕНТ ТАЙМЕРА) 1-Й СЕГМЕНТ МОДЕЛИ а) Рис. 4D.2. Блок-схема примера моделирования 4D: в •- иодель с одной общей очередью: б — модель с несколькими раздельными очередями
GENERATE \J80 FNb.,.,2 \ ПРИХОД КЛИЕНТОВ >?H$MEANЬ f ASSIGN J ш PRIORITY ГЕ УСТАНОВИТЬ Ч. РАВНОЕ ВРЕМЕНИ ОБСЛУЖИВАНИЯ УСТАНОВИТЬ 60ЛЕЕ ВЫСОКИЙ ПРИОРИТЕТ ДЛЯ СЛЕДУЮЩЕГО СОБЫТИЯ ЗАВЕРШЕНИЯ ОБСЛУЖИВАНИЯ Q SELECT (line) \' /QUE UP) ' — "" — QUEUE L QUEUE 1 SEIZE 1 DEPART 1 DEPART 2^ Ф A Э s n СВОБОДЕН ЛИ КАССИР" КОРРЕКТИРОВАТЬ ДАННЫЕ РАЗДЕЛЬНЫХ ОЧЕРЕДЕЙ КОРРЕКТИРОВАТЬ ДАННЫЕ АГРЕГИРОВАННОЙ ОЧЕРЕДИ ЗАНЯТЬ КАССИРА КОРРЕКТИРОВАТЬ ДАННЫЕ АГРЕГИРОВАННОЙ ОЧЕРЕДИ КОРРЕКТИРОВАТЬ ДАННЫЕ раздельных Очередей generate: V *—I V I8OO0O | TERMINATE 2-Й СЕГМЕНТ МОДЕЛИ (СЕГМЕНТ ТАЙМЕРА) (QUEUP) I _ /""> SELECT N. (win у (LINE) TRANSFFER Г" It ADVANCE PI RELEASE T^ :rmina TERMINATE УСТАНОВИТЬ Р2 PA8H0E НОМЕРУ КРАТЧАЙШЕЙ ИЧЕРЕДИ НАПРАВИТЬСЯ В ОЧЕРЕДЬ ВЫПОЛНЕНИЕ ОПЕРАЦИИ ОСВОБОДИТЬ КАССИРА ПОКИНУТЬ БАНК 1-Й СЕГМЕНТ МОДЕЛИ 6) Рис. 4D.2. Продолжение
5. Распечатка программы. SLOCK M/MBER OPERATION SIMULATE A.B.C.O.E.F.6 С«ЯО NUMBER • FUNCTION 0£F|N| T ION(S) a S FUNCTION HNWC2A EXPONENTIAL DISTRIBUTION FUNCTION 0.0/.).»IO»/.2..?22/.3,.3SS/.A>.S09/.S..69/.6i.91S/.7.l.J/,75,|.3B •в. |.А/.В4»1.вЗ/»&А«2. 12/.9.2.Э/.92 *.'.52/.,34»2-.eiS.95.2.99/*96.3-2 ■ 97,3.5/.9a«3.9/*9v.A.6/.4»?5.S.3/.90e.6*2/.999.7/«999H.e MEAN FUNCTION RNI.DS DISTPISUTION UF MEAN SERVICE TIME «i.*so/.29.7so/.6 utooo/.as.iso0/1,3000 • ■ STORAGE CAPACITY OEF IN I T I 0>l( S 1 STORAGE StTELRS.6 PROv IOC 4 TELLERS • MOOEL SEGMENT I GENERATE 180.FN-S. ASSIGN OUEUE EHTf.0. DEPART AOVANCE LEAVE 1.FNAMEA*** ONE TfcLAS, ONE PI TELRi MOOEL SEGMENT 2 GENERATE TERMINATE l&UOOO I CONTROL CARDS START - CLEAR START • CLEAR S T АП T 1 CLEAR START 1 (CLEAR START- 1 ENO iI CUSTOMERS ARRIVE SET PJ г SERVICE TIME ENTtP THE LINE ttK.«.t а ielleb LEAVE THE LINE TRANSACT BUSINESS FREE THE TELLER LEAVE THE BANK TIMER ARRIVES AFTER S HOURS SHUT OFF THfc RUN START THE RUN FOR BAT I CLEAR FOR DAV Z START THE RUN FOR DAT г CLEAR FOR OAV 3 START THE BUN FOR DAY 3 CLgAH FOR OAV A START THE RUN FOR OAV A CLFAP FOR OAV S START THE RUN FDR OAV S RETUnN CQNTROL TO OPERATING SYbTEM 13 la 15 16 I» Id 19 20 21 гь 26 г» ?л 29 30 31 32 33 ЗА 3S 36 зв Al А2 A3 BLOCK NUMBER «LOC 'OPERATION SIMULATE •B.C.D.E.F.G CARD MUMttE* • FUP.CTIQN OEFl N1T1 ONES] & Ft.tNCTiqM RNI.C24 EXkLNbNIIAL DISTRIBUTION PUNCIldN o.o/.I..ю»/.г..2гг/.з,.j5b/.»,.boo/.b..o9/.b..)i5/.T.i.?/.75.i.jb .8. 1.6/.04, 1.вЗ/.вь.?.|Г>/.4.г.З/.9;>,2,52/.9* .2.a I/.95,2.99/.96,3.2 ' .97>3.S/.9e>3.9/.«9,A.6/.99S.S.3/.u0e.6.2/.499.7y.999a.e MEAN FUNCTION RN1.US DISTRIBUTION OF MEAN SERVICE TIMb .1,AS0/,29,7S0/,6I. 1000 /.at.. I SOO/ 1.3000 MODEL SEGMENT I GENERATE 10C.FN4.. ASSIGN 1,FN*MEAN PRIORITY 1 I I ia is I* SELECT e LINE OUCUE OUEUE SE lit OEPAR T DEPART AOVANCE U£.i_EA5E TERMINATE OUEUP SELECT M|N TRANSFER 2.1.1. P2 30 PI 10 P2 PI P2 2. 1.8 • LINE CUS.TOKEMS ARRIVE SET PI * SERVICE TIME SET HIGH BUIOUITY FOB LATER SERVICE-COMPLETION EVENT <0*F,0U£UP IS A TELLER AVAILABLE? UPDATE SEGREGATED LINE DATA UPDATE AGGREGATE LINE DATA CAPTURE A 1ELLER" UPOATE AGGREGATE LINE OATA UPDATE SEGREGATED LINE DATA TRANSACT BUSINESS FRfct Тне TfcU.6» LEAVE THE BAN* <<- SET P2 ^ NUMBER OF SHORTEST GO UUEUE UP MUOEL SECHtNl 2 GENERATE 180000 TERMINATE 1 CONTROL iAMDS START 1 CLEAR START 1 CLEAR START 1 CLEAR ST ART \ CLEAR START 1 ЕЛО TIMER ARRIVES AFTER S HOURS SHUT OFF THE RUN START THE PUN FOR ;tAV 1 clear for day г START THE RUN FOR OAY 2 ClEAW РОЙ DAY 3 si art the run for oay 3 clear fou pay - s*tar1 the &un for uly i clear for oay s start thc run for oav s return control .0 operating system II 12 17 1» 19 20 /I 22 23 1' 24 26 27 26 2V 30 31 32 3» Ji 36 37 36 39 «lO Al 4? *J ak »S *6 6) fttt» 4D.3. Распечатка программы примера моделирования 4D: 'в — модель е одной очередью; б — модель с несколькими раздельными очередями
6. Выходные данные. С4>-АС 1 TV А A/tHAUE CONTENTS 7.»|-> AV^RAGt UTILIZATI04 .939 ENTRICS Ю0 1 AVCRAG/ TIME/трлм I3SI.155 CuvuCNT COMTENTS 4 MAXIMUM CONTENTS II HUEUE MAXIMUM AVE» ICt- TOTAL ZERO РГ-RCENT AVI.RAAE CONTENTS COMTENTS EN1BIE5 CNTRIES 2CROS TIME/'.Rans ONC SI 11.136 1001 I2| 14.0 2542.4*9 SAVEnabC TIIIC/TRANS » Аие«А«Е TIME/TRANS EXCLU01NO JrgOO ENTRIES tAVr.ftAGL 1 IMf'.RAKS Z69it.04r TAliLf NUMUFl) CURRENT C0MT{N74 '«C1LITT 1 .' 2 A s> fr 7 e AVERAGE UTILISATION .«68 • 966 • 95S .««3 .93» • 92* • 90S .913 NUMtffcM bNTHf I'S I'j3 1 16 lit 91» lie 107 134 l«l AVERAGt TIME/TRAN ii39.г/» ■«99.008 1310.71)0 17зг.|«г 1220.336 ISS7.SSI 14I6.SO0 ибб.зв! «■EIZIN6 "RANS. NO. SO «3 ze 36 PHfcfMPT TNG TRANt. NU- B) re ■ г 3 « s 6 7 В IU MAXIMUM CONTENTS A 6 6 6 h S s 5 «S AVE» ACE CONTENTS г. i3v Z.203 2.07S 2.11 1 1.740 |.вг» l.6l'-> 1.4*1 IS.IS2 TOTAL ENTRIES ■ S3 11» 11* 98 138 107 134 1*1 tOSI ZERO ENTRIES 27 25 19 25 гг *i 26 г* 189 PERCENT ZEROi 17.6 ZI.S 16. 6 2S.S. 15.9 19.6 19.4 17.0 I8.« AVER46C TloE/TRANS 2317.303 34I8.S0B 3277.4.08 3877.8*6 г?'/о.»б<з 3069.411 2170.900 I840.4S3 2 72«.756 VAVCRAUt 1 1 ME^TRANS 3056.968 «337.656 3933.010 5.20%,87<, <!70I.5S| 3818.918 2692.407 2217.9A2 1'38.966 Table NUMBER CuRRFST CONSENTS «AVERAGE TIME/THANS з AVERACE TIME/TRANS EXCLUDING ZERO ENTRIES T) Pnc. 4D.4. Часть распечатки пыходных данных примера иоделврова&ия 4D: а — статистика но многокапвльным устройствам: (модель с одной очередью для пераогодни); б — статистика по очгредим (модель с одной очередью для первого дня); в — статистнкп по приборам- (модель с несколькими очередями для первого дня); a — статистика по очередям (модель с несколькими сшргдиыи для первого дня) 7. Обсуждение. Использование модели. Функция, предназначенная для описания экспоненциального распределения, имеет числовое (5), а не символическое имя. Это вызвано ограничением при использовании операнда С блока ASSIGN, указывающим, что значеаие операнда должно давать номер функции и не может быть символическим именем. Отметим, что необязательный операнд F блока GENERATE используется в моделях с одной и с несколькими очередями. Это означает, что клиенты-транзакты моделей имеют именно один и два параметра соответственно (см. блок 1, рис. 4D.3, а к б). Если бы операнд F был задан по умолчанию, клиенты-транзакты в обеих моделях имели бы по 12 параметров, каждый размером в полслова. Причины экономии чи'сла параметров транзактов в этом примере моделирования будут пояснены в следующем параграфе. Результаты моделирования. (Время моделирования системы с одной очередью на ЭВМ IBM 360/67 равно 35,3 с; для системы с несколькими очередями — 48,7 с). На рис. 4D.4 показаны статистики ло работе кассиров и по очереди, полученные в конце первого дня моделирования. Соответствующая информация по очереди, полученная в двух моделях для пятого дня моделирования, показана в табл. 4D.4. В таблице показано, что в модели с одной очередью среднее время ожидания для клиентов в течение пяти дней моделирования было равно 1253 единицам времени, или примерно 2,1 мин. В системе с несколькими очередями среднее время ожидания для тех же пяти дней работы было равно 1583 единицам времени, или примерно 2,6 мин. Таким образом, в данном эксперименте сэкономлено 20% времени в системе с одной очередью по сравнению с системой с несколькими очередями. Это требует некоторого разъяснения. 1. Система с несколькими очередями является не совсем реальной, поскольку в ней исключены какие-либо переходы между очередями. 220
Таблица 4D.4. Результаты моделирования примера 4D Среднее время пребывания в очереди, десятки секунд ' День I 2 3 4 5 Среднее Стандартное отклонение Общая 1 Р«Двль- очеред» | »«д«"«- 2542 900 308 1486 427 1253 727 2724 • 1314 1199 2013 666 1583 714 Процент нулевых входов Общая очередь 12,0 29,7 34.8 21.9 60.1 29.7 12,8 Рвздель- иые очереди » 18.8 37,2 44,0 28,2 58,7 37,4 13,6 1 Включая нулевые входы. " Агрегированием очередь (Возможность перехода из очереди в очередь в моделях систем массового обслуживания будет рассмотрена в гл. 7, см. упражнение 19 И 20 параграфа 7.11). 2. Среднее время пребывания в очереди — это только одни из параметров очереди. Кроме среднего значения, важными являются и дополнительные параметры, связанные со временем ожидания. Например, такой параметр, как «процент клиентов, которым пришлось ждать дольше 5 мин», также может иметь большое значение. Даже если обе системы показали бы одно и то же среднее время ожидания, одна из систем могла бы иметь преимущество перед другой в смысле этих дополнительных параметров. Модели, представленные в этом примере, не оценивают распределение времени ожидания. Возможность использования такой оценки в моделях на языке GPSS мы отложим до конца этой главы. 3. Из табл. 4D.4 следует, что стандартное отклоаение средних значений времени ожидания для различных дней примерно на 50 — 60% больше, чем среднее. Это указывает на то, что если бы условия эксперимента не контролировали, то было бы чрезвычайно сложно сравнивать результаты моделирования. Предположим, например, что условия эксперимента мы не контролируем и что получили результат моделирования для пятого дня работы системы с несколькими очередями. В то же время любой из результатов для системы с одной очередью относится не к пятому дню. В этом случае можно заключить, что система с несколькими очередями имеет преимущества. Но полученные результаты при управлении условиями моделирования ясно показали, что это не так. Из табл. 4D.4 также следует, что для пяти дней моделирования клиенты имеют около 29,7% шансов попасть на обслуживание сразу же по приходу в систему с одной очередью. А в системе с несколькими очередями этот шанс составляет 37,4%. Это выглядит несколько странным в свете сделанных выводов относительно преимущества системы с одной очередью. Внимательное рассмотрение этого вопроса, однако, показывает, что процент нулевых входов в системе с несколькими очередями должен быть выше за счет того, что нет переходов между очередями в модели. Почему это приводит именно к такому результату, рассмотрим в упражнениях. На рис. 4D.4, в видно, что нагрузки всех кассиров примерно одинаковы для случая системы с несколькими очередями. Однако этого яе может быть, поскольку если свободно несколько кассиров-приборов, то блок SELECT всегда выбирает прибор с наименьшим номером. Действительно, кассир номер 8 приступает к. работе только тогда, когда в банке уже находятся по крайней мере семь клиентов и приходит восьмой. С другой стороны, данные рис. 4D.4, г указывают на то, что среднее число людей, ожидающих обслуживания в этот день, было более 15. (Это означает, что в среднем в этот день в банке одновременно присутствовало 23 клиента). Следовательно, простоев у кассиров почти не было и с этой точки зрения полученные статистические данные вполне обоснованы. 4.16. Использование памяти ЭВМ при моделировании Когда в книгу вводили такие понятия, как транзакты, приборы, многоканальные устройства и регистраторы очереди, было отмечено, что максимальное число этих элементов зависит от того, какой объем памяти ЭВМ доступен для модели. Эти максимальные значения приведены в приложении F вместе с информацией, касающейся вопросов использования памяти. Часть этой информации, имеющая отношение к изученным элементам GPSS, представлена в табл. 4.5. Каждый из элементов требует некоторого фиксированного объема памяти независимо от того, используется он в модели иди нет. Эти фиксированные значения объемов памяти приведены в табл. 4.5. Например, каждый траизакт требует 16 байтов памяти, каждое многоканальное устройство требует 40 байтов и т. д. Кроме этих значений, при использовании конкретных элементов требуется дополнительная память, связанная с ними. Размеры этой дополнительной памяти могут колебаться в зависимости от свойств конкретных элементов. Например, как указано в сноске * табл. 4.5, каждый траизакт, вошедший в модель, требует еще 20 байтов плюс дополнительные байты для всех своих параметров. Блоки и функции также требуют переменных объемов памяти. 221
Таблица 4.5. Таблица максимального числа элементов GPSS н их требования памяти (фиксированные и неремениые) (фрагмент приложения F) Тип элемента Транзакты Блоки ПрпЙоры Функции Очереди Многоканальные устройства Область COMMON (байтн) ' Стаидгфтиос число **лементон в за- лисниихти <>г объема пяыятн в бяЛтая 64 К 200 120 35 Я) 35 35 5600 128К 600 500 150 50 150 150 14 400 25ВК I 200 1000 300 200 300 300 25 600 Фиксированные требования к памяти на одни элемент, байт 16* 12** 28 32*** 3*2 40 Мнемоническое обозначение при распределении ХЛС BLO FAC FUM QUE STO COM 'Это специальная область памяти, нз которой удовлетворяются запросы па доиолнителъиую память при чвпоминании пар значений функции, параметров транэактов и т. п. * Плюс 20 байтов области COMMON ни каждый активный трапзакт плюс затраты на параметры (2 байта на каждый из параметров, определенных в полусловах, или -I Сайта на каждый из параметров, определенных в словач). ** Плюс 4 байте ив области COMMON иа каждый блок, использующий более одного операнда. *•* Плюс 8 байтов из области COMMON нв каждую пару значений, функции типа D млн плюс 12 байтов на области COMMON на каждую пяру яиатепкй функцик гяпд С. Приборы, многоканальные устройства и очереди требуют фиксированных объемов памяти. При использовании некоторого элемента, если ему требуется переменный объем памяти, он может быть получен из специальной области памяти, называемой COMMON (ОБЩАЯ), сечи, конечно, не вся память этой области уже занята. Размер памяти области COMMON зависит от общего объема памяти, предоставляемого модели. Этот размер также указан в табл. 4.5. Так как размер области COMMON, предназначенный для выделения дополнительной памяти фактически существующим в модели элементам и их членам, ограничен, в процессе моделирования вся память области может оказаться исчерпанной. Если это случается, го появляется сообщение об ошибке номер 599 LIMITS OF GPSS/360СОШОЫCORE EXCEEDED (исчерпана вся память области COMMON системы GRSS/360), ;* моделирование завершается. Рассмотрим типичные ситуации, при которых может оказаться исчерпанной область COMMON. Предположим, что некоторая модель имеет только блоки, приборы, многоканальные устройства и очереди. Для простоты мы будем пренебрегать объемом памяти, требуемым для блоков. Как указано в табл. 4.5, приборы, многоканальные устройства и очереди не требуют дополнительной памяти области COMMON. Значит, если каждый трапзакт имеет 12 параметров, располагаемых в полусловах (по умолчанию), можно определить, какое число транэактов допустимо иметь, если всего для модели отводится 64К байт памяти. Ответом на этот вопрос, как видно из табл. 4.5, является 200. Это еще .не может явиться причиной исчерпания памяти области COMMON, поскольку именно 200 транзактов допустимо иметь в модели при таком объеме памяти. В сноске * табл. 4.5 указано, что каждый активный траи- закт с двенадцатью параметрами, расположенными в полусловах, требует 44 байта области COMMON (20 + 2 х 12 -= 44). Деля 5600 на 44 (5600 — это размер области COMMON при доступной памяти 64К), получаем, что область COMMON может предоставить память только 127 траизактам. Более того, мы ведь не учитывали, что область COMMON можег использоваться и для других целей. Поэтому, котя теоретически при использовании памяти 64К допустимо иметь 200 транзактов, на практике это будет иметь .место, если пользователь ограничит число параметров транзактов (или воспользуется некоторыми свойствами модели, описываемыми ниже). Мы видим, что довольно разумным будет использование необязательного F-операыда блока GENERATE для ограничения числа параметров транзактов до фактически необходимого. Именно так мы н поступили в примере моделирования 40 (см. карты 18 и 14 на рис. 4D.3, а и б соответственно). Если бы число параметров транзактов в примере моделирования 4D нами не было сокращено, то модель не уместилась бы в памяти 64К. Условия моде> лирования в обоих случаях примера таковы, что в процессе выполнения модели при попытке ввести очередного клиента в банк (т. е. при попытке ввода очередного транзакта в модель) область COMMON была бы исчерпана. Может, однако, случиться так, что область COMMON будет исчерпана, даже еелн транзакты имеют строго заданное число параметров. Если это случается, то больший размер области COMMON можно получить за счет использования памяти большего размера, если она вообще существует в системе. [Наличие разделов памяти различного размера зависит от свойств операционной системы; использование тех или иных разделов можетбыть описано с помощью 222
внешних управляющих карт (см. параграф 2.18), т. е.- на языке управления заданиями. ] Недостатком такого подхода, однако, является увеличение стоимости моделирования. Другим способом, позволяющим избежать исчерпания памяти области COMMON, является перераспределение "памяти, предоставленной модели. Максимально допустимые значения, представленные в табл. 4.5 (или в приложении F), являются значениями по умолчанию. Если использовать специальную управляющую карту REALLOCATE (ПЕРЕРАСПРЕДЕЛИТЬ), можно перераспределить имеющуюся в наличии память между различными элементами GPSS. Предположим, например, что в некоторой модели, выполняемой при использовании 64К байт памяти, применяют только два многоканальных устройства. Каждое из таких устройств требует фиксированного объема памяти, а именно 40 байтов, независимо от того, используется многоканальное устройство или нет. Следовательно, если используются только два многоканальных устройства, то 1320 байтов памяти простаивают (40 байтов X 33 неиспользуемых устройства — 1320 байтов). Если пользователь укажет, что максимальным числом многоканальных устройств должно быть два, то он освободит эти 1320 байтов. Если никакие указания больше не последуют, то эти 1320 байтов будут добавлены к области COMMON. Теперь, при общей доступной памяти 64К байт, область COMMON достигнет размера 6920 байтов, т. с. увеличится на 25%. Кроме изменения ограничений на размер области COMMON, в модели может потребоваться увеличение числа допустимых элементов при том же размере общей доступной памяти по сравнению с обычным числом чле нов элементов для той же памяти. Решить этот вопрос можно аналогично тому, как решался вопрос о преодолении исчерпания области COMMON. Если есть выбор, можно попробовать выполнить модель в разделе с большей памятью. Как и в предыдущем случае, недостатком будет удорожание моделирования. Другим способом является перераспределение максимальных значений элементов. В предыдущем примере при использовании двух многоканальных устройств перераспределению подлежат 1320 освободившихся байтов памяти. Они могут быть добавлены к области COMMON. Но предположим, что в модели размер области COMMON не является ограничивающим обстоятельством, а ограничивает модель максимальное число транзактов, равное 200. Если максимальное число транзактов следует увеличить до 250, то память для дополнительных 50 транзактов может быть получена за счет тех же 1320 байтов, высвободившихся при сокращении числа многоканальных устройств. Поскольку каждому транзакту требуется фиксированное число байтов, равное 16, максимальное число используемых транзактов может быть доведено до 250 добавлением 800 байтов. Оставшиеся 520 свободных байтов могут по- прежнему быть добавлены к области COMMON. Снижая требования к одним элементам, можно увеличить число других элементов. Таким образом, в результате перераспределения достигается определенная гибкость процесса построения моделей. Спецификации управляющей карты REALLOCATE представлены в табл. 4.6. Поле имени не используется. Слово REALLOCATE записывается в поле операции. В поле операнда записываются основные элементы в виде пар. Первым значением пары является мнемоническое обозначение типа элемента GPSS, для которого выполняется перераспределение. Вторым значением является новая максимальная величина, указывающая число членов этого типа элемента. Мнемонические обозначения типов элементов записаны в правом столбце табл. 4.5. Таблица 4.6. Спецификации управляющей карты REALLOCATE Поле перфокарты Имя Операция Операнды: A, С, E.G. ... B. D. F, Н, ... Информация ноля Не используется Слово REALLOCATE Каждый из этих операндов является мнемоническим обозначением типа элементов, максимальное число которых необходимо переопределить. Часть таких мнемонических обозначений приведена в табл. 4.5, полный список дай и приложении Г Каждый из этих операндов является константой, указывающей новое максимальное число для типа элементов, определенного предыдущим операндом Примеры карт REALLOCATE приведены на рис. 4,23. Операнды А и В первого примера указывают, что число многоканальных устройств должно быть перераспределено и равно двум. Как было указано выше, это освобождает при общей памяти для модели 64К область в 1320 байтов, доступную для перераспределения. Операнды С и О первого примера указывают на то, что область COMMON должна после перераспределения достигать 6920 байтов. Следовательно, вся освободившаяся от сокращения числа многоканальных устройств память добавляется к области COMMON. Первый пример показывает, что хотя перераспределение определяется с помощью пар значений в карте REALLOCATE, пары операндов не разделяются 223
OPERATIOH |t|Ki]Ti;i?|u|n|a|iijij|ii miiifl A.e,C0.t.F ' ' ' I nCDRUU tlDUUED I I S.T.O. ..?.,ЮОМ..6.9Д.О, . |n.iAn;acAT,E|_ ыА„г,]тс..и]о ПЕРВЫЙ ПРИМЕР , ч « * ■ * | 1 ■ ' ' ' ! L_l_l ' j_ ' I ■ ' I 8Т0Р0И I ПРИМЕР | I ' ' • - j ■— t. 1 L i | i i i i i Рис. 4.23. Примеры использования карты REALLOCATE знаками "J", как это имело место в картах следования для функций или в картах определения емкости многоканальных устройств. Для разделения операндов карты REALLOCATE используют только запятую. Из первого примера следует также, что освобождающиеся байты памяти при сокращения требований к элементам могут быть добавлены к области COMMON путем явного использования одним из операндов мнемонического имени СОМ. Это, однако, не является обязательным, и по умолчанию вся освобождающаяся часть памяти автоматически добавляется к области COMMON. Во втором примере число многоканальных устройств также сокращается до двух. Если предположить, что всего доступно 64 К байтов памяти, то освободившиеся 1320 байтов используются для увеличения максимального числа Йянзактов до 250 (операнды С и D в примере), а это требуется 800 байтов. Оставшиеся 520 байтов добавляются к 5600 байтам области COMMON, расширяя ее размер до 6120 байтов (операнды Е и F в примере). Можно сделать три основных замечания относительно использования карты REALLOCATE. 1. В поле операндов карты может встречаться любое число пар операндов, но перечень не должен выходить за колонку 71. Допускается использование нескольких карт REALLOCATE, если в этом есть необходимость. 2. Все без исключения карты REALLOCATE должны быть первыми, прочитываемыми интерпретатором GPSS. Следование карт REALLOCATE даже за картой SIMULATE или картами* комментариями, т. е. картами, у которых в первой колонке стоит символ «звездочка», вызывает ошибку. 3. Рекомендуется в качестве минимального специфицируемого числа для любого типа элемента задавать единицу, а не ноль. Хотя ноль логически допустим в качестве минимального числа, определение его может привести к ошибке ввиду специфики конструкции интерпретатора GPSS. 4.17. Время моделирования Нигде, кроме указания в скобках, при описании результатов моделирования, фактического времени, затрачиваемого на прогон модели, не 224 был затронут вопцос о времени, необходимом для выполнения программ, написанных на GPSS. Время, необходимое центральному процессору (или просто процессору) для моделирования, важно для нас по многим соображениям. Во-первых, от времени моделирования зависит стоимость моделирования. Время работы процессора стоит от 15 центов до 1 даалара в секунду в зависимости от используемого оборудования и архитектуры вычислительной системы. [Например, модель примера на рис. 4D.3, б потребовала 48,7 с работы процессора в мультипрограммной вычислительной системе IBM 360/67 (Мичиган)]. Стоимость моделирования равна 6,65 долларам. Понятно, что стоимость использования процессора составляла 15 центов в секунду. Конечно, это грубая оценка, поскольку алгоритм расчета стоимости в вычислительном центре Мичиганского университета учитывает использование не только процессора, но и других ресурсов системы. Предположим, например, что пользователи платят по 1 доллару за секунду использования процессора в режиме удаленной пакетной обработки на ЭВМ UNIVAC-1108. Конечно, цифры 15 центов и 1 доллар не могут быть непосредственно сравнены, поскольку UNIVAC-1108 за секунду выполняет в 1,5— 2 раза больше вычислений, чем IBM 360/67. Кроме того, сам интерпретатор GPSS UNIVAC-1108 более эффективен, чем интерпретатор GPSS/360. Эффективность интерпретатора также в значительной степени отражается на стоимости его использования. Кроме вопросов стоимости, пользователю следует оценить максимальное время, требуемое для выполнения задания. Если в процессе моделирования затрачено много процессорного времени, а задание не заканчивается, то его обычно снимают. Это делают из следующих соображений. Если проходит больше времени, чем предполагалось, то это может служить сигналом того, что в логике моделирования допущена ошибка. С другой стороны, если пользователь не сумел избежать тех или иных излишеств в модели, может оказаться, что хотя все функционирует нормально, но времени на моделирование уходит значительно больше, чем предполагалось вначале. 'В результате моделирования получается значительно меньше выходных данных, чем ожидалось. Очень неприятными бывают
случаи, когда вместо нескольких минут время обращения задания (т. е. время, проходящее от момента, когда задание отдано для выполнения, до момента получения результатов работы) измеряется часами. За некоторым исключением, модели, рассмотренные до сих пор, требовали менее 10 с работы процессора ЭВМ. (Все эти модели выполняли в мультипрограммной вычислительной системе IBM 360/67). Время использования процессора ЭВМ складывалось из двух компонентов. Каждый из освовных компонентов состоит из составляющих, описанных в табл. 4.7. В табл. 4.8 показан пример вычисления времени, затраченного на выполнение модели примера 4D (см. рис. 4D.3, б), причем составляющими являются элементы табл. 4.7. Время моделирования является, как правило, самой значительной составляющей (табл. 4.8). Таблица 4.7. Компоненты, из которых складываются затраты времени на моделирование на GPSS Основные компоненты Затраты времени на GPSS-модель Затраты времени на работу операционной системы Составляющие Ассемблирование модели Затраты на фазу ввода Время моделирования Выполнение выдачи данных Выдача на консоль оператора Загрузка интерпретатора Очистка памяти от интерпретатора Обработка выходного патока данных Таблица 4.8. Составные части затрат времени яа выполнение мокелировалия примера, приведенного на рис 4D.3, 6 Составляющие Ассемблирование модели Фаза ввода Время моделирования Выдача результатов моделирование Затраты на операционную систему Полное время моделирования Затраты времени, с 0.375 0.421 44,731 0,648 2.524 48,709 В табл. 4.9 собраны значения времени, затраченного иа выполнение 13 моделей рассмотренных примеров. 6 параграфе, где описаны результаты моделирования каждого примера, это время было указано в скобках. Использование системы GPSS/360 на модели 67 системы IBM/360 требует в среднем 1 мс на обработку одного блока. Это очень грубая оценка. Фактически время выполнения зависит от типов используемых блоков, способа 15 Т. Дж. Шрайбер Таблица 4.9. Таблица затрат времени на выполнение моделирования примеров, приведенных и давной книге Пример моделировании 2А 2В 2С 2D 2Е 2F ЗА Затраты времени, с м 1,8 2,1 2,0 68,2 4,1 4,0 Пример моделировании зв зс 4А 4В 4С 4D Затраты времени, с 3.2 8,1 4,8 5,2 19,3 84,0 (иа обе модели) использования функций, числа и типов блокировок, с которыми сталкиваются транзакты, числа просмотров и повторных просмотров цепи текущих событий и т. д. Для оценки времени моделирования обратимся снова к модели на рис. 40.3, б. Зная значения счетчиков использования блоков, не показанных в книге, счетчиков входов, суммарное значение которых показано для каждого блока для всех пяти дней моделирования, получаем значение около 66 000. Это общее число входов может интерпретироваться как число использований блоков. Деля 48,7с работы процессора на 66 000, получаем около 0,75 мс на однократную обработку блока. Этот пример показывает, что грубая оценка в 1 мс на выполнение блока является приемлемой. Если бы потребовалось дать приближенную оценку использования других интерпретаторов GPSS или других ЭВМ, то можно было бы выполнить несколько различных моделей, подсчитать общее число входов, как это было проделано нами только что, и делением оценить время, затрачиваемое на выполнение одного блока. Имея такую оценку, можно было бы, хотя и очень грубо, дать предварительную опенку времени выполнения модели. В гл.7 приведены некоторые рассуждения, касающиеся методов построения эффективных в смысле быстродействия моделей на GPSS. Если использование процессора достаточно дорого или ограничено, то модель должна строиться так, чтобы она требовала как можно меньше процессорного времени. 4.18. Опасность, возникающая в связи с одновременным использованием символических и числовых имен в GPSS Нами были рассмотрены три способа использования имен различных типов элементов GPSS: I) числовые имена могли задаваться в явном виде; например, в блоке «SEIZE 7» числовое имя 7 явно определяет имя прибора;
2) в явном виде могли задаваться также символические имена; например, запись LINE явно указывает имя очереди в блоке «QUEUE LINE»; 3) числовые имена могли задаваться косвенно; при входе транзакта в блок «SEIZE PI», например, имя прибора задается косвенным образом как значение параметра I входящего транзакта. Такая гибкость в определении имен элементов может привести к нежелательным последствиям. Для объяснения того, что мы называем нежелательными последствиями, рассмотрим пример, в котором разработчик использует одно многоканальное устройство с номером 1 и второе с символическим именем TUGS. Предположим, что разработчик легко различает эти два многоканальных устройства; устройство помер 1 и TUGS. Пусть теперь, как указывалось ранее, интерпретатор дает числовой эквивалент всем символическим именам элементов модели. (На самом деле, интерпретатор распечатывает эти эквиваленты в виде таблицы имей, которые помечены в распечатке словами «BLOCK SYMBOLS AND CORRESPONDING NUMBERS, FACILITY SYMBOLS AND CORRESPONDING NUMBERS...» (имета блоков и соответствующие номера, имена приборов и соответствующие имена и т. д.). В данном примере в зависимости от метода построения модели может получиться, что многоканальное устройство с именем TUGS получит числовой эквивалент 1. Если это случится, то 1 и TUGS будут являться именами одного и того же многоканального устройства, а не двух различных. Это приведет к неправильной модели. Неправильной модель может оказаться и по многим другим причинам. В то же время нет причин считать, что интерпретатор обязан выдать сообщение об ошибке и прекратить моделирование, если 1 и TUGS окажутся одним и тем же устройством. Такого рода частичный отказ от использования символических имен, следовательно, является очень опасным. Важно понимать, откуда возникает эта опасность и как с ней можно бороться. При рассмотрении вопроса частичного отказа от имен необходимо знать, каким образом интерпретатор устанавливает соответствия между символическими именами элементов и их числовыми эквивалентами. При решении этой задачи интерпретатор составляет отдельно список числовых и список символических имеп для каждого типа элементов на фазе ввода модели. После завершения фазы ввода интерпретатор получает эти списки уже сформированными. Прежде, чем описывать, каким образом эти списки используются для установления соответствия символических имен и их числовых эквивалентов, рассмотрим, как формируются списки. Если интерпретатор вводит карту, содержащую символическое имя в любом контексте на фазе ввода, он помещает это имя в список символических имен для соответствующего типа элементов. Отсюда, тем не менее, не следует, что точно так же интерпретатор поступает с числовыми именами. Номер элемента помещается в список числовых имен соответствующего типа элементов только в том случае, если номер используется в модели в контексте, называемом определительным. Очевидно не любой контекст, в котором встречаются номера элементов, может быть определительным. Несколько примеров определительного и неопредел ительного контекстов для номеров элементов мы сейчас приведем. Пусть в модели примера 4D встречается блок «SELECT M1N 1.1.8„Q». Типом элемента является очередь, что следует из использования группового имени Q стандартного числового атрибута в качестве операнда Е этого блока. Операнды В и С указывают диапазон померов очередей. Совершенно очевидно, что пользователь хотел, чтобы в модели были очереди с номерами от 1 до 8. Тем не менее блок SELECT представляет собой пример, в котором номера элементов используются в неопределительном контексте. Другими словами, само использование блока SELECT в модели не приводит к тому, что интерпретатор добавляет числовые имена от 1 до 8 в список числовых имен очередей или хотя бы добавляет числа 1 и 8 в этот список. В качестве другого примера рассмотрим карту определения емкостей многоканальных устройств. Каждая ссылка на конкретный помер устройства на этой карте является неопределительной. Например, если интерпретатор вводит карту «STORAGE S4,5/S$ALPHA,9», он помещает символическое имя ALPHA в список символических имен для многоканальных устройств, но число 4 в список числовых имен многоканальных устройств не помещается. Это может показаться странным, но это так. Указанная карта определяет емкости устройств 4 н ALPHA как 5 и 9 соответственно и помещает имя ALPHA в список символических имен устройств, но то же самое не выполняется для устройства с номером 4. С другой стороны, блоки SEIZE, RELEASE, ENTER, LEAVE, QUEUE и DEPART используют номера элементов в определительном контексте. Если интерпретатор вводит карты «SEIZE 14», «ENTER 7», «QUEUE 21», он соответственно добавляет номера 14, 7 и 21 в списки числовых имеп приборов, многоканальных устройств и очередей. Как же можно узнать, является контекст определительным или нет? Нестрого можно дать такое определение определительного контекста: либо номер элемента должен использоваться 226
в качестве операнда Л таких блоков, как SEIZE, RELEASE, ENTER, LEAVE, QUEUE н DEPART, либо он должен использоваться в поле имени соответствующей карты определения. В число таких карт определения входят карта определения функции и карта определения емкости единственного многоканального устройства. Например, карты «23 FUNCTION RN1.C5» и «9 STORAGE 6» образуют определительный контекст для функции с номером 23 и многоканального устройства номер э соответственно. Соответствующим образом, номер 23 добавляется в список числовых функций, а номер 9 — в список числовых имен многоканальных устройств при вводе этих двух карт. Кроме приведенного нестрогого правила, существует легкий способ определения, является ли данный контекст определительным или пет. Достаточно просто сверить свою запись со списком определительных контекстов, приведенных в приложении G. Вернемся теперь к проблеме назначения числовых эквивалентов символическим именам элементов в языке. Рассмотрим для начала список числовых и символических имен приборов. Интерпретатор относит все числовые имена, помещенные в список числовых имен, к так называемым недопустимым для использования в качестве числовых эквивалентов символических имен приборов. И, наоборот, числа, не вошедшие в список числовых имен приборов, являются допустимыми для назначения их в качестве числовых эквивалентов. Интерпретатор теперь просто назначает допустимые числа именам, находящимся в списке символических имен приборов по возрастанию (одип к одному). Это означает, что наименьшее допустимое число ставится в соответствие первому имени в списке символических имен, следующее допустимое число ставится в соответствие второму имени из списка символических имен и т. д. Рассмотрим в качестве примера рис. 4.24, где первые два столбца изображают списки числовых и символических имен приборов после завершения фазы ввода определенной модели. Элементами списков числовых и символических Числовое имя 5 2 3 I Символическое имя BETA ALPHA GAMMA Номера, оставшиеся свободными 4 6 7 8 35 Рис. 4.24- Списки числовых и символических имен н номеров, оставшихся свободны ми для приборов первой гипотетической ситуации имен являются имена и числа, которые прочитывались интерпретатором в процессе ввода модели. Поскольку числа 5, 2, 3 и 1 попали в список числовых имен, они являются недопустимыми для использования в процедуре установления соответствия. Приборы, имеющие такие номера, уже «существуют» в модели. Допустимыми являются оставшиеся числа 4, 6, 7, 8,... 33, 34 и 35, что следует из последнего столбца рис. 4.24. (Предполагается, что модель выполняется в разделе с памятью 64 К байта без перераспределения последней. Из табл. 4.5 следует, что в этом случае максимально допустимым является номер 35). Наименьшим из допустимых является число 4. Оно ставится в соответствие первому из символических имен BETA. Следующим за ним допустимым является число 6, оно ставится в соответствие имени ALPHA, и т. д. Заметим, что хотя мы все время говорим о приборах и примеры относятся к этому типу элементов, выполняемая интерпретатором процедура остается точно такой же для многоканальных устройств, очередей и всех других типов элементов, до сих пор в книге не встречавшихся. Рассмотрим теперь, что происходит при косвенном определении имен элементов в определительном контексте. Будет ли при вводе интер- претатором карты «SEIZE PI» какое-либо число добавлено в список числовых имен приборов? Нет. На фазе ввода модели у интерпретатора нет возможности определить, какое значение получит Р1 в процессе моделирования. Это невозможно, тем более, что Р1 может в процессе моделирования получать различные значения. Интерпретатор не знает, какое число ему следует внести в список числовых имен, если встречается карта «SEIZE PI». Вот тут-то и возникает опасность частичного отказа от использования символических имен, иногда называемая опасностью избыточности из-за появления избыточных членов элементов. Проще всего показать, как возникает эта опасность, на примере (рис. 4.25). На рисунке Чисиовос нмя 4 5 Символическое имя DIftTA BETA Номер, оставшийся снободныи 1 2 3 6 7 8 33 Рис. 4.25. Списки числовых и символических имен н оставшихся свободными номеров дли приборов иторой гипотетической ситугщии 15* 227
представлены списки числовых и символических имен приборов, полученные после завершения фазы ввода некоторой модели, выполняемой при использовании памяти размером 64К байт без перераспределения. В соответствии с представленной выше схемой назначения номеров символическим именам 1 будет являться числовым эквивалентом для имени DELTA, a 2 будет номером прибора с именем BETA. Предположим теперь, что в модели имеется блок «SEIZE РЬ, и сама модель составлена таким образом, что Р1 получает в процессе моделирования последовательно значения ], 2 и 3. Если Р1 равен 1, то запись «SEIZE PI» эквивалентна записи «SEIZE DELTA». Аналогично, если Р1 равен 2, то запись «SEIZE PI» эквивалентна записи «SEIZE BETA». Возможно, это вовсе ке то, что имел в виду пользователь. Если такое использование приборов не входило в его намерения, то модель, как теперь ясно, построена неправильно. Пользователь, по всей видимости, рассуждал так: «У меня есть приборы с номерами 4 и 5. Кроме того, в соответствии с моей записью «SEIZE PI» и с тем, что Р1 могут принимать значения 1, 2 и 3, у меня будут приборы 1, 2 и 3. Следовательно, интерпретатор GPSS приборам с именами DELTA и BETA присвоит номера б и 7. Очевидно, в этом случае пользователь считал, что у пего будет семь различных приборов, в то время как на самом деле их в модели оказалось только пять. Приведенный пример относится к возможности возникновения избыточности, которая появляется в случае использования приборов. Естественно, что все сказанное в такой же степени относится ко всем остальным типам элементов, например к многоканальным устройствам, очередям, функциям. Существует несколько приемов, пользуясь которыми можно избежать опасности избыточности. 1. Всем элементам модели можно дать либо символические, либо числовые имена явным образом. Недостатком такого подхода является потеря возможности использовать неявную спецификацию элементов. 2. Символические имена элементов могут не использоваться вовсе. Если все ссылки на элементы будут либо числовыми, либо неявными спецификациями, то опасность избыточности исчезнет. При этом присвоения символическим именам числовых эквивалентов следует выполнить заранее. Такой подход использован в примере моделирования 4D. В системе с несколькими очередями индивидуальные очереди к кассирам 1—8 определяются неявным образом с помощью параметра. Номер 10 был выбран в качестве имени общей агрегированной очереди в модели. Если бы эта очередь имела символическое имя, ей интерпретатором был бы присвоен номер 1, и в целом модель была бы неверной. Зная, что интерпретатор поставит в соответствие символическому имени номер 1, для отдельных очередей к кассирам можно было бы использовать номера от 2 до 9. Тогда и кассирам-приборам следовало бы присвоить номера от 2'До 9. Это все потребовало бы произвести сдвиг в номерах очередей и приборов в блоке «SELECT Е 2, 1, 8, 0, F, QUEUP», записать его в виде «SELECT Е 2, 2, 9, 0, F, QUELTP» и заменить блок «SELECT MIN 2, 1, 8„ Q» на блок «SELECT MIN 2, 2, 9„ Q». 3. Пользователь может заставить интерпретатор поставить выбранный пользователем номер в соответствие символическому имени. Нежелательная избыточность при этом исчезнет. Требуемое соотношение между символическим именем и его числовым эквивалентом определяется с помощью карты определения эквивалентности, использование которой мы сейчас объясним. Карта определения эквивалентности имеет вид, показанный в табл. 4.10. В поле имени пользователь записывает символическое имя. Поле операции заполняется словом EQU (ОПРЕДЕЛИТЬ ЭКВИВАЛЕНТНОСТЬ). Операнд А должен содержать номер, который пользователь ставит в эквивалентность этому символическому имени. Наконец, операнд В содержит единственный символ, являющийся указанием того, к какому типу элементов относится эта эквивалентность. Таблица 4.10. Формат карты определении в квивалентности Поле перфокарты Имя Операция Операнды: А В Информация пола Символическое имя элемента Слово EQU Номер, которому должно соответствовать указанное имя Мнемоническое обозначение типа элемента, для которого определяется эквивалентность Таблица 4. П. Неполный список мнемонических обозначений типов элементов для карты определения эквивалентности (полный список приведен в приложении Н) «( Злехеят Прибор Функция Очередь Мпогоканальное устройство Мнемоническое обозначение F Z Q S
LOCATION JUJULl •!• ИГ» a аМаЫШл iaa i- - 1_J*-I J ■ ■ ' J_L_ i,g,C,0,E.F К г! »1гз|м|29Ыгг|мЬ«|]оЫ»|мЫ1я|м| 1A-A- ■j-j-1 -х-ч- I I..I I 14 1,1 I I Ряс. 4.26. Пример использования карты определения эквивалентности В табл. 4.11 показаны различные мнемонические обозначения операндов В для тех типов элементов, которые изучены нами к настоящему времени. В приложении Н дан полный список мнемонических обозначений типов элементов, используемых в книге. На рис. 4.26 показан пример использования карты определения эквивалентности. В этом примере очередь с символическим именем LINE получает числовой эквивалент 10. Если бы эквивалентность, установленная картой, была включена в модель с несколькими очередями примера 4D, то блоки «DEPART 10» и «QUEUE 10» можно было бы заменить блоками tDEPART LINE» и «QUEUE LINE» без опасения возникновения избыточности в модели. Как указано выше, без определения эквивалентности интерпретатор символическому имени очереди LINE поставил бы в соответствие номер очереди ]. 4.19. Упражнения I. Напишите блоки SELECT для выполнения следующих действий. а). Просмотреть очереди 2—7, выяснив, какая из них в качестве значения счетчика «число нулевых входов» имеет ноль. Если такая очередь есть, ее номер следует поместить значением седьмого параметра соответствующего тран- закта. При любом исходе транзакт должен из блока SELECT перейти в следующий по порядку блок завершения просмотра. б). Просмотреть многоканальные устройства 8—11 и определить, есть ли среди них хотя бы одно, текущее содержимое которого было бы меньше чем 3. Если да, то номер такого устройства записать значением параметра 1 транзакта (в этом случае он должен пойти в следующий по порядку блок). Если ни одно из многоканальных устройств этому условию не отвечает, трая- закт должен перейти в блок с именем RUTE4. в). Просмотреть приборы 1—5 и определить, есть ли среди них такой, который был занят более 10 раз. Номер такого прибора надо записать в Р7. Если ни один прибор не удовлетворяет условию проверки, то транзакт, находящийся в блоке SELECT, должен перейти в блок с именем BYPAS сразу же после завершения просмотра. г). Среди приборов с номерами 4—9 необходимо отыскать такой, нагрузка которого была бы наименьшей. Номер такого прибора надо записать в Р1. д). Необходимо определить номер многоканального устройства (среди устройств с номерами 2 и 3), свободная часть содержимого которого является в настоящий момент наибольшей. Номер этого многоканального устройства поместить в параметр 3. е). Параметры 1—10 транзакта содержат упорядоченные номера приборов. Номер параметра, содержащего минимальное из этих чисел, надо записать в качестве параметра 12 этого же транзакта. ж). Определите номер очереди, время пребывания в которой до сих пор в среднем было наименьшим (включая нулевые входы в очередь). Поиск надо провести среди очередей, номера которых определены параметрами 1 и 2 транзакта, причем наименьший номер находится в Р1. Поместите найденный номер в Р5. (Все три иараметра, указанные в задаче, принадлежат транзакту, вошедшему в блок SELECT). 2. Объясните, что происходит при входе транзактов в блоки1 SELECT, имеющие карты: a) SELECT 5, 3, 7, 5, Q, РАТНА; б) SELECT MIN P5, I, 10„ FR; в) SELECT GE 5, PI, P2, РЗ, SC. З.а). Опишите два метода, с помощью которых можно увеличить обычно допустимое число различных типов элементов GPSS. Какой из этих двух методов предпочтительней и почему? б). Если нам доступно 64К байт памяти, сколько дополнительных многоканальных устройств можно «ввести» в модель, если число приборов сократить до 20? Напишите карту REALLOCATE, которая выполнила бы необходимое нам перераспределение. Можете принять те предположения, которые вам покажутся необходимыми. в). Если нам доступно 64К байт памяти, сколько транзактов могут существовать в модели одновременно, если каждый из них должен иметь 10 параметров, размещаемых в полных словах? Предполагаем, что карта REALLOCATE не используется и другие типы элементов модели не пользуются памятью из области COMMON. Напишите также блок GENERATE, через который эти транзакты могут войти в модель. г). Выполните еще раз упражнение п. в в предположении, что число блоков модели можно сократить до 75, а число приборов до 5. Напишите для этого случая карту REALLOCATE, в которой явно указывалось бы увеличение размера области COMMON. 229
д). Какая часть области COMMON тратится при использовании функции XPDIS, представленной на ряс. 3.22? 4.а). Подготовьте модель, приведенную на рис. 4D.3, б, для прогона на ЭВМ вашего ВЦ. Сравните полное время моделирования, тре- буедюе в вашей системе, с результатом, полученным на IBM 360/67 (48,7 с). Подсчитайте общее число входов при данном моделировании и рассчитайте число миллисекунд, требуемых для выполнения одного блока. б). Сравните общее число входов и соответствующее ему число миллисекунд на выполнение одного блока, полученные для других GPSS-моделей, разработанных вами. В большой ли степени различаются значения числа миллисекунд, требуемых для выполнения одного блока различных моделей? 5, Объясните, почему в примере моделирования 4D процент нулевых входов в системе с несколькими очередями больше, чем в системе с одной очередью. 6. Предположим, что в системе с несколькими очередями не предпринимаются никакие действия для ускорения обработки события завершения обслуживания по сравнению с обработкой события прихода следующего клиента, если эти события возникают в одно время. Предположим теперь, что: I) возник временной узел с этими событиями; 2) заняты все восемь кассиров; 3) четвертый кассир должен кончить обслуживание; 4) все очереди пусты; 5) возникшие события стоят в порядке «приход», а затем «завершение». Объясните, как поведет себя вошедший клиент-транзакт. Что будет, если завершение обслуживания обработано раньше? 7.а). Общей целью примеров 4D и ЗС является моделирование работы в течение нескольких дней при различных конфигурациях системы. В примере моделирования ЗС понадобилась карта RMULT между последовательно моделируемыми днями для восстановления условий моделирования, а в примере моделирования 4D нет необходимости в использовании этой карты. Объясните причину, по которой в одной модели карта RMULT понадобилась, а во второй нет. б). Покажите, как концепции, изложенные в гл. 4, могут быть использованы в примере моделирования ЗС при построении альтернативной модели (см. рис. ЗС. 1). В модели по- прежнему могут быть использованы четыре генератора случайных чисел. В модели на рис. ЗС. 1 не должны использоваться карты RMULT (кроме карт б и 73), но, тем не менее, две альтернативные дисциплины обслуживания должны моделироваться при одинаковых условиях. в). Повторите п. б этого упражнения, но используйте только один генератор случайных чисел и совсем не используйте карту RMULT. 8. На рис. У8 показана последовательность карт QUEUE с различными ссылками на очереди в некоторой GPSS-модели. Карты показаны в том порядке, в котором опи встречаются в колоде. Какие числа соответствуют символическим имепам GAMMA и BETA? QUEUE GAMMA QUEUE 1 QUEUE 4 QUEUE BETA QUEUE 3 QUEUE 6 Рис. У8 9. На рис. У9, о показаны блоки, имеющие ссылки на приборы и очереди некоторой модели, причем их последовательность совпадает с последовательностью расположения этих блоков в колоде карт. Какое число будет являться числовым именем прибора, символическое имя которого DELTA? Какой номер будет иметь очередь, символическое нмя которой DELTA? SEIZE l QUEUE 3 SEIZE DELTA QUEUE 2 SEIZE 2 QUEUE DELTA 10.а). Напишите карту определения эквивалентности, которая числу 10 ставит в соответствие символическое имя многоканального устройства SLIPS. б). Опишите множество условий, при которых число 1 будет эквивалентно символическому имени многоканального устройства TUGS, даже если это не входит в намерения пользователя. в). Предложите метод, используя который интерпретатор GPSS автоматически обнаружит, может ли в модели возникнуть избыточность при использовании в ней: очередей; многоканальных устройств и приборов. П. Подумайте, можете ли вы получить аналитическое решение для какой-либо системы массового обслуживания примера моделирования 4D. Если да, сопоставьте аналитический результат с. результатом, полученным при мо< делировании на GPSS. 12. Покажите, как можно было бы изменить модель с несколькими очередями примера моделирования 4D таким образом, чтобы использовался только один блок SELECT (Указание: в примере моделирования клиент-транзакт сначала просматривает приборы для отыскании ср*еди них свободного; если такого нет, клиент просматривает очереди, определяя, какая из Них самая короткая. Если начать именно с этого, то первый блок SELECT окажется ненужным). 13. Предположим, что в примере моделирования 4D время обслуживания распределено не 230
Таблица }У13 4.20.1. Резидентное время Бречя обслуживания, с 25 50 75 100 125 150 175 200 250 300 350 400 Суммарная частота для 1 0,00 0,10 0,68 1,00 гмпля банковских г •2 0,0 0,14 0,39 0,72 1,0 3 0,0 0,18 0,42 0,58 0,83 1.0 различных цервапй ■1 | S • . 0.0 \ 0,21 0,58 0,79 1,00 0,00 0,09 0,54 0,81 1,00 по экспоненте, а в соответствии с данными табл. У13. (Замечание: интерпретация данных табл. У13 может быть облегчена при использовании разъяснений, приведенных в параграфе а). Покажите, как изменить модели примера 4D для учета изменений распределения времени обслуживания. По-прежнему необходимо восстанавливать условия моделирования. б). Предположим теперь, что интенсивность прихода клиентов возросла с 200 до 240 в час, но входящий поток остался пуассоновским. Промоделируйте работу системы с несколькими очередями в течение восьмичасового рабочего дня и выясните, каково минимальное требуемое число кассиров, если средняя нагрузка кассира не должна быть ниже 90%. Используйте метод проб и ошибок. Перед тем как начать прогоны модели, разработайте разумный план, придерживаясь которого исследование с применением метода проб и ошибок дает результат. в). Используя число кассиров, полученное при выполнении п. б упражнения, выполните прогон версии модели с быстрой очередью. Сопоставьте производительность систем двух альтернативных конфигураций. 4.20. Резидентное и транзитное время транзактов Интервал времени, в течение которого транзакт находится в модели, называется резидентным временем транзакта. Интервал времени, который проходит в течение перехода транзакта от одной произвольно выбранной точки модели до другой точки, называется транзитным временем перехода между двумя этими точками. В GPSS существуют два стандартных числовых атрибута, значениями которых являются резидентное время транзакта и транзитное время соответственно. Рассмотрим их подробнее. При каждом входе транзакта в модель интерпретатор записывает текущее значение времени. Это значение времени называется отметкой времени. Здесь следует обратить внимание на две особенности. 1. Говорят, что транзакт вошел в модель, когда он успешно сумел выйти из блока GENERATE. Если транзакт задержан в блоке GENERATE, то время его входа в модель отличается от времени входа в блок GENERATE. 2. Для записи отметки времени используется значение таймера абсолютного времени. {Если в модели используется карта RESET, значения таймеров абсолютного и относительного времени могут различаться.) Запись времени входа транзакта в модель недоступна в явном виде в процессе моделирования и, следовательно, не может непосредственно использоваться как часть логики моделирования. Другими словами, не существует стандартного числового атрибута, значением которого явилась бы отметка времени. Тем не менее существует стандартный числовой атрибут, который тесно связап со значением времени входа транзакта в модель. Имя этого стандартного числового атрибута Ml. Его значением является разница между текущим значением таймера абсолютного времени и значением времени входа транзакта в модель. Сле- довательно, Ml считает число единиц времени в процессе пребывания транзакта в модели. Если определить СЧА Ml иначе, то он как раз и является резидентным временем транзакта в модели. Конечно, для каждого конкретного транзакта значение Ml изменяется в процессе моделирования. Сразу после входа в модель значением Ml транзакта является ноль. Через десять единиц времени значением Ml является число 10. Еще через 10 единиц времени значение Ml является 20 и т. д. Относительно Ml возникает тот же вопрос, что и относительно Р/, или PR: к какому транзакту относится значение Ml, когда мы его рассматриваем? Как и в остальных случаях, Ml относится к тому транзакту, который обрабатывается в настоящее время. Отметка времени транзакта распечатывается вместе с цепью текущих и будущих событий. Фрагмент распечатки цепи будущих событий, приведенных на рис. 4В.4, повторяется на рис. 4.27. Столбец 8, отмеченный как MARK TIME, как раз и содержит значение отметки времени. Значение отметки времени не имеет никакого смысла до тех пор, пока транзакт не покинет блок GENERATE. Если транзакт задерживается в блоке GENERATE, его отметка времени в цепи текущих событий является отрицательной величиной. Это также справед-
FUTURE EVENTS CHAIN TRANS BDT BLOCK 16 28806 4 PR SF NBA SET MARK—TIME 12 28830 28836 IS 28840 67600 10 11 20 16 12 15 28632 28766 28380 -366 —1 Рис. 4.27. Повторение фрагмента цепи будущих событий (см. pec. 4B.4): MARK-TIME — информация об обметке времени Р1 0 0 0 0 0 0 8 0 0 О 0 0 0 0 0 Р2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ливо и для транзактов, находящихся в цепи будущих событий, т. е. находящихся на пути к блоку GENERATE. Транзакты 16 и 3 имеют отрицательные значения в столбце, показывающем отметку времени, т. е. в столбце MARK TIME. Транзакт 16 является покупателем, направляющимся в продовольственный магазин; транзакт 3 является таймером, идущим к завершению моделирования. Эти значения являются отрицательными из-за внутренней логики работы интерпретатора GPSS. (Этн значения отметки времени равны значению счетчика входов со знаком минус блока GENERATE, который является для транзакта следующим блоком или NBA.) 4.20.2. Транзитное время Ml измеряет время, прошедшее от момента входа транзакта в модель. Очень часто требуется знать, сколько времени проходит при продвижении транзакта между двумя точками модели. Предположим, нам надо определить интервал времени, в течение которого транзакт проходит от точки А до точки В. Для этого следует выполнить два действия. Когда транзакт находится в точке А, необходимо сделать отметку абсолютного времени по соответствующему таймеру. Далее, когда транзакт придет в точку В, высчитывается интервал между значением времени, отмеченным при прохождении точки А и текущим значением таймера абсолютного времени. Этот интервал и будет значением транзитного времени. Рассмотрим теперь метод выполнения этих действий в GPSS. Первое действие выполняется при использовании в GPSS блока MARK (ОТМЕТИТЬ). При входе транзакта в блок MARK значение таймера абсолютного времени записывается в качестве одного из его параметров. Такую запись называют отметкой транзакта. Блок MARK вместе с операндом А показан на рис. 4.28. Операнд А определяет номер параметра, в котором должен быть отмечен транзакт. Единственным назначением блока MARK является переписывание значения таймера абсолютного времени в этот параметр. При помещении блока MARK в точке А модели первое из двух действий будет выполнено. Когда транзакт достигает точки В, вторым действием должно быть определение того, сколько времени прошло с момента отметки транзакта. Это значение времени может быть получено в виде стандартного числового атрибута. Имя этого СЧА—MP/, где/ — номер параметра, в котором отмечен транзакт. Для расчета значения MP/ интерпретатор вычитает значение /-го параметра транзакта из текущего значения таймера абсолютного времени. В ^момент достижения транзактом точки В значение MP/ является транзитным временем между точками А а В. Ранее мы отметили, что стандартногочнелового атрибута, являющегося значением абсолютного 1 С MARK J lC\ Рис. 4.28. Блок MARK и его операнд А: Олерпид А Значение Номер параметра, в которые записывается значение таймера абсолютного времени Результат по умолчанию См. примечание Примечание. Умолчание допускается. Результат умолчания — вйдоеняе абсолютного времени помещается ее места ранее записанного времени входа транзакта в модель. Это означает, что. Параметр может на использоваться вовсе я что Ml больше не является резидентным временем транаахта 1 модели. Вместо этого Ml указывает ха интервал времени, прошедший с момента входа транзакта в последний блок MARK, У которого хе используется операнд А. Режим использования этого блока бее операнда А Наин далее не рассмотрен к в книге не неполном» 232
временя, нет. Тем не менее использование блока MARK позволяет обойти трудности, которые могут возникнуть в связи с этим. Предположим, например, что в модели необходимо узиать значение абсолютного времени в момент прихода транзакта в определенную точку. Если в этой точке поставить блок MARK, то значением параметра, в котором транзакт отмечается, будет значение таймера абсолютного времени. Если транзакт отмечается, например, в параметре 3, то значение РЗ в момент отметки и является значением таймера абсолютного времени. 4.21. Упражнения 1.а). Что подразумевается под временем входа транзакта в модель? б). Что такое отметка времени транзакта? в). Почему следует различать значение времени таймеров абсолютного и относительного времени, когда говорят об отметке времени? г). Как поступает интерпретатор, когда используется Ml? 2.а). Транзакт входит в модель в момент абсолютного времени 21. В момент абсолютного времени 52 ои входит в блок «ASSIGN 3, Ml». Чему равно значение РЗ после выполнения подпрограммы блока ASSIGN? б). Еще позже, в момент абсолютного времени 72 транзакт входит в блок «ASSIGN 5, FNJDAVID». На рис. У2 определена функция DAVID. Чему равно значение Р5 после выполнения подпрограммы блока ASSIGN? З.а). Какую работу выполняет подпрограмма блока MARK? (Считаем, что операнд А блока известен.) б). Что означает фраза: «Транзакт отмечается в параметре 2»? в). Как интерпретатор GPSS вычисляет значение МР5? г). Какая разница между Ml й МР1? д). Как следует интерпретировать запись МР7, если Р7 равен нулю? 4. При значении абсолютного времени 5 транзакт входит в блок «MAR К б». а). Чему равно значение Р6 после того, как подпрограмма блока MARK выполнится? б). Позднее, когда значением таймера абсолютного времени становится число 25, транзакт LOCUTION ДОШ2 a^oizja OPERATION lIlliejllMU 0 FiUHCTitOtt . ш/Л„1,1 *.».C.O,E,f »|M|}l |l2J2l|l«|2SJM|2'[»|nJMjl>|» UJM Дм Mil* jPj4» i I ■ ■ ' ■ .1—l-l I I I I ■ i ■ I r ■■'■:'' ' Рнс. У2 входит в блок «ASSIGN 4,MP6». Чему равно значение Р4 после завершения выполнения подпрограммы этого блока? в). Далее транзакт входит в блок «ENTER JOE,P6». На какое число уменьшится значение R$JOE? 5. Транзакт должен занять прибор, номер которого совпадает с текущим значением таймера абсолютного времени. Напишите блоки, с помощью которых это можно сделать. (Замечание: хотя в этой задаче и нет логического смысла, тем ие менее мы просим показать, как ее можно решить). 6. В определенной точке модели транзакт должен пройти очередь 7. Логика работы модели предусматривает, что время пребывания транзакта в этой очереди должно записываться в параметре 5. Напишите блоки, которые выполняют эту работу. 7.а). Напишите блоки, пройдя через которые транзакт запишет в Р2 значение, равное 50 плюс значение абсолютного времени. б). Повторите п. а упражнения, но время на этот раз должно быть относительным. 4.22. Использование таблиц в GPSS Предположим, что собрана совокупность чисел, полученных при наблюдении за значениями некоторой случайной переменной. Например, каждое число совокупности может быть временем, требуемым для прохождения транзакта между точками А и В модели. В процессе моделирования многие транзакты могут проходить путь от А до В. Если записать время перехода некоторых или всех этих транзактов, то результатом будет совокупность значений случайной переменной времени перехода. Эта совокупность называется выборкой. Значения выборки относятся ко множеству значений случайной переменной. Часто необходимо проанализировать числа из такой выборки для оценки свойств множества, которое они представляют. Свойствами множества являются среднее значение, стандартное отклонение, относительная частота, с которой элементы выборки попадают в тот или иной диапазон значений, и др. Эти диапазоны значений часта называют интервалами, или частотными интервалами, или частотными классами. Свойства множества часто оценивают расчетом соответствующих свойств выборки, полученной нз этого множества. Для заданной выборки можно: 1) определить среднее значение; 2) определить стандартное отклонение выборки; 3) подсчитать число элементов выборки, попадающих в каждый из установленных интервалов; 4) подсчитать процентное соотношение числа значений* выборки, попадающих в различные интервалы* 233
Такой расчет, хотя и не слишком сложен, однако требует тщательности и затрат времени, если его делать вручную. Вследствие этого подобный расчет выполняется в GPSS автоматически. Для автоматизации этого расчета необходимо использовать такой тип элементов GPSS, как таблицы. Действия, которые для этого надо выполнить, описаны в следующем параграфе. 4.23. Определение и использование таблиц. Карта TABLE (ТАБЛИЦА) и блок TABULATE (ТАБУЛИРОВАТЬ) Использование таблиц включает следующие два действия. Во-первых, каждая таблица, используемая в модели, должна быть определена. Во- вторых, требуется разделить входящие в выборку значения для каждой из описываемых таблиц. 4.23.1. Карта TABLE В модели может быть несколько таблиц. Каждая таблица сначала должна быть определена, после чего ее можно использовать в модели. Таблицу определяют путем указания: . 1) имени таблицы (числового или символического); 2) имени случайной переменной, значения которой будут табулироваться; 3) числа, явлиющегоси первым граничным значением; значения выборки, меньшие или равные этому числу, попадают в самый левый интервал (частотный класс) таблицы; 4) ширины, общей для всех интервалов таблицы за исключением левого (низшего) и правого (высшего); 5) общего числа интервалов таблицы, включая низший н высший. Пп. 3—5 требуют некоторого пояснения. Значения, которые должны быть табулированы, в общем случае могут иметь размах от минус до плюс бесконечности. (Величина, помещенная в полное слово, в GPSS/360 имеет размах от —2 147 483 648 до +2 147 483 647. Именно эти граничные значения и моделируют практически «плюс и минус бесконечности».) При использовании таблиц этот размах должен быть разделен (на оси действительных чисел) на ряд последовательных интервалов. Относительная частота, с которой табулируемое значение попадает в каждый из этих интервалов, должна подсчитываться интерпретатором. При определении таблицы iin. 3—5 указывают, в какой части оси действительных чисел пользователь хочет расположить эти интервалы. На рис. 4.29 дана попытка графической -бесконечность * бесив- неччоеть ■*— Ось действительных значений. —*- Рис. 4.29. Графическая интерпретация оси действительных значений и ее разделение на ряд иитервэлоп интерпретации этой мысли. Заметим, что левый (первый) интервал включает значение от мшгус бесконечности до значения первой границы включительно. Второй интервал включает значения, большие, чем значения первой границы, но меньшие или равные значению второй границы. Все промежуточные интервалы имеют одинаковую ширину. Наконец, правый интервал включает все значения, большие, чем последняя граница. Все пять элементов информации записываются на одной перфокарте — карте определения таблицы, или карте TABLE. Как и во многих других случаях, карта определения таблицы состоит из полей имени, операции и операндов. Информация, записываемая в этих полях, представлена в табл. 4.12. Таблица 4.12. Формат карты определении таблиц Поле перфокарты Имя Операции Операнды: А В С D Информация моли Имя (символическое или числовое) таблицы Слово TABLE Имя переменной, значения которой должны учитываться в таблице. Операнд А должен быть именем стандартного числового атрибута Первое гранячное значение Ширина всех промежуточных интервалов Общее число интервалов таблицы, включая левый н правый На рис. 4.30, а приведен пример записи карты определения таблицы. На рис. 4.30, б дано графическое изображение интервалов, на которые разделена ось действительных значений. Таблица имеет имя TYME2. Стандартный числовой атрибут, который мы табулируем, является атрибутом МРЗ (определяется операндом А). Первой границей является 10 (задается операндом В). Ширина промежуточных интервалов в таблице равна 5 (определено операндом С). Это означает, что второй границей будет 15 £г. е. 10 + 5), третьей 20 (т. е. 15 -f 5) и т. д.^ а последней границей будет 30. Ось действительных значений делится на шесть по- 234
10С*Г|ОН ОРЕИДТЮИ Д.в.СО.Е^ | г » < ' « JLXAJU tJ- e|»llOJll|u(u|kt|l5|l»[l7|ll Т.А.М.Е) ■ ■ ■ il ЦП »pJ3«J!!|»|i:|2«|»|N|3l|»|9)b«|»J9t ' ( f I ■i-i..i i * ^ » i i t i . . i i t i a) Интервалы biafi/шцьг Левый, интервал Промежуточные интервалы одинаковой, -ширины ' ' ' Правый интервал -бяхвяечнесть +бесконечность 3качения от MPS S) Рис. 4.30. Пример определения и интерпретации таблицы GPSS: « — определение таблицы; б — графическая интерпретация ив» «рвалов таблицы следовательных интервалов (операнд D). Это значит, что кроме левого и правого интервалов существуют четыре промежуточных. Значения операндов В, С и D должны определяться целыми константами. Операнд В мо* жег быть отрицательным; естественно, что one» ранды С и D не могут быть отрицательными. Ни значения границ, ни число интервалов в процессе моделирования не может быть изменено. Заметим, что при наличии ограничения на тип значений операндов В и С (относятся к типу целых) каждая из границ в таблице является целым числом. Все значения выборки, попадающие в таблицу, также являются целыми. 4.23.2. Блок TABULATE Значения выборки попадают в таблицу в те моменты, когда транзакты входят в блок TABULATE (рис. 4.31). Операнд А задает имя таблицы, в которую попадают значения выборки. Одну таблицу можно использовать в нескольких блоках TABULATE модели, если в этом есть логическая необходимость. Заметим, что сам стандартный числовой атрибут в блоке TABULATE не записывается, поскольку он уже записан в карте TABLE. Рассмотрим пример того, как оценить распределение транзитного времени транзакта для точек А и В модели с помощью таблиц. В точке А транзакты входят в блок MARK, где они отмечаются, например, в третьем параметре. В точке В транзакты входят в блок TABULATE, операндом которого записано имя таблицы TYME2 (она определена на рис. 4.30). В соответствии с этим определением табулируемым значением является СЧА MP'S. Именно это транзитное время транзакта для точек А и В нас и интересует. TABULATE Lb Рис. 4.31. Блок TABULATE и его операнд А: Операнд Л Значение Имя (символическое или числовое) таблицы, в которой используется соответствующее значение Результат ПО умолчанию Ошибка Следовательно, при каждом входе транзактов в блок TABULATE очередное значение транзитного времени добавляется к выборке и учи; тывается в таблице. 4.23.3. Пример использования таблиц Обратимся вновь к примеру моделирования 4В (модель работы продовольственного магазина). Предположим, что нам надо оценить распределение интервалов времени пребывания покупателей в магазине. Для этого потребуется сделать небольшие добавления к модели на рис. 4В.2. На рис. 4.32 дана распечатка программы, в которой эти добавления уже сделаны. Карта 22, которая определяет таблицу, имеет имя RTIME и в качестве операнда А задает атрибут Ml. Карта 44 представляет блок TABULATE, помещенный между блоками «LEAVE CARTS» и «TERMINATE». Непосредственно перед тем, как каждый покупатель- транзакт покидает магазин, он проходит через блок TABULATE и его резидентное время, т. е. время его пребывания в магазине, отмечается в таблице RTIME. На рис. 4.33 представлена часть распечатки, получаемой после завершения прогона модели, дайной на рис. 4.32. Всего до завершения моделирования из магазина вышли 363 покупателя. Об этом говорит запись «ENTRIES IN TABLE» (ЧИСЛО ЭЛЕМЕНТОВ ТАБЛИЦЫ). Среднее время пребывания в магазине равно 318 с (MEAN ARGUMENT — среднее значение аргумента — равно 318). Стандартное отклонение для этой выборки размером 363 равно 121 с (STANDART DEVIATION — стандартное отклонение — равно 120, 562). Сумма всех значений, вошедших в таблицу, равна 115373 (SUM OF ARGUMENTS — сумма аргументов — равна 115373,000). 235
CLOCK NUMBER •LOC OPERATION SIMULATE • • FUNCTION atli function 1.2/1.9 AVL2 FUNCTION 0.3/1.6 AYL3 FUNCTION 0.4/1,7 COTVM FUNCTION 1.3/16.54 IMPUL FUNCTION 0.1/1.4 XPDIS FUNCTION 0.0/. 1.. 104/. 2.. .a. 1.6/. 84. 1.83/ .97.3.6/.9B.3.9/ A.8.C.D.E.F DEFINITIONS) RN1.C2 RNI.C2 RN1.C2 P1.C2 RNI.C2 RNI.C24 222/.3..35S/. .6Э.Я. 12/.9.2, .99.4.6/.99S.1 •G COMMENTS rreMS-SElECTEO DISTRIBUTION. AISLE 1 ITEMS-SELECTED DISTRIBUTION. AISLE 2 ITEMS-SELECTED DISTRIBUTION, AISLE 3 CHECKOUT-TIME DISTRIBUTION DISTRIBUTION OF ITEMS TAKEN ON IMPULSE EXPONENTIAL DISTRIBUTION FUNCTION 4,.e09/.S».69/«6».915/.7.I.2/.7S.I.3B .3/.92.2.52/.94.2.BI/.99.2.99/.96.3.2 Ь.Э/.99В.6.2/.999,7/.9996.8 TABLE DEFINITIONS) RTIME TABLE 1 2 3 4 S 6 7 6 9 10 J J 12 13 |A 15 16 17 18 19 20 21 22 • • ТИУ2 TRY3 OUT у » MODEL SEGMENT. 1 GENERATE ENTER TRANSFER ADVANCE ASSIGN TRANSFER AOVANCe ASSIGN TRANSFER ADVANCE ASSIGN OUEUE ASSIGN SEIZE DEPART ADVANCE RELEASb LEAVE TABULATE TERMINATE 7S.FN8XPDIS CARTS •as.. try г 120.60 1.FNSAYL1 .45..TRV3 ISO. 30 I+.FNBAVL2 .13..OUT 120.«S ]».FN»AVL3 GIRL l+.FNSIMPUl GIRL GIRL FNSCOTYM GIRL CARTS RTIME MODEL SEGMENT 2 GENERATE TERMINATE 2B600 1 Ml. 100. 100,9 TABLE FOR DIST'N OF TIME SPENT IN STORE shoppers arrive take a cart «ant to shop aisle 17 time in aisle 1 set pi s items selected in aisle 1 want to shop aisle 27 time in aisle 2 ' set pi = total items selected so far want to shop aisle 37 time in aisle 3 set pi = total items selected so fa» oueue for checkout counter add to pi items taken on impulse capture the checker leave the checkout oueue check-out time FREE THE CHfcCKER RETURN THE CART PLACE RESIDENCE TIKE SAMPLE IN TABLE LEAVE THE STORE CONTROL CARDS START EMO TIMER ARRIVtS AT EMO OF в-MOUR DAY SHUT OFF THE RUH START THE RUN RETURN CONTROL TO OPERATING SYSTEM CARD NUMBER I г з 4 5 6 7 В 9 10 It 12 13 14 15 16 17 IB 19 20 21 22 23 24 2S 26 27 26 29 30 31 32 33 34 3S 36 37 38 39 40 41 42 43 44 43 46 47 4B 49 50 SI 52 S3 94 9S Рис 4.32. Распечатка программы модели, приведенной на рис 4В.2, после ^изменения для табулирования распределения резидентного временя транзакта в модели ТАВ1Е ЯТ1МЕ ENTRIES IN TABLt 361 UPPER (.MOT 100 ZOO 300 •00 MO 000 MEAN OBSERVED FREUUF.NCV 9 19 93 9» 89 20 «RGUMgNl 317 .1*3 1 PER OF 1 CENT TOTAL г. »7 16.29 23.61 23.61 г».si 5.50 MANOAp.0 PEV1ATIDN SUM 120 CUMULATIVE PERCENTAGE г.* 16.7 »».3 %6*.9 »«.4 100.0 .462 CUMULATIVE PEMAINOeR. "97. S si.г *ь.6 30.0 s.% .0 » AAGUMENTS 1)5373.000 MULTIPLE Of MEAN .31» .62» .9*3 1.2SE ¥l.%73 1 I.8B7 NON-aEIGHTEO DEVIATION PROM MEKN -1.BUb -.9TT -,I*T .6*1 1.510 г. 340 remain1мь frequencies ame all 2ero Рис. 4.33. Распечатке таблицы после прогона модели, приведенной на рис. 4.32
Заметим, что справа от значения суммы аргументов записывается . отметка NON— WEIGHTED (не взвешенная). Эта отметка означает, что каждое значение выборке, помещенное s таблицу и учитываемое в расчетах, представляющих различные показатели таблицы, ис- нользовано только один раз. В противоположность этому возможно наличие так называемых взвешенных таблиц GPSS. Сейчас мы не будем обсуждать эту возможность, а рассмотрим ее в гл. 5. Девять покупателей провели в магазине 100 с и меньше IOBSERVED FREQUENCY (наблюдаемая частота) равна 9 для значения интервала таблицы UPPER LIMIT, верхняя гра- вица которого равна 100. ] Эти девять покупателей составили 2,47% от всех покупателей {PERCENT OF TOTAL — процент от всех). CUMULATIVE PERCENTAGE (суммарный процент), приходящийся на этот интервал от минус бесконечности до верхней границы, равной 100, равен 2,4%. CUMULATIVE REMAINDER (суммарный остаток) значений, которые пока еще не учтены (поскольку эти значения попадают в интервалы, находящиеся •правее указанного), равен 97,5%. Элементы двух правых столбцов (рис. 4.33) содержат информацию, относящуюся к верхним границам (UPPER LIMIT) соответствующих частотных классов, а не к элементам этих частотных классов. Например, верхняя граница самого левого частотного класса равна 100. Это значение составляет 0,314 долей среднего значения аргумента таблицы [MULTIPLE OF MEAN — (часть от среднего) равна 0,314]. Отклонение этой верхней границы (100) от среднего значения аргумента в долях стандартного отклонения составляет—1,806 {DEVIATION FROM MEAN (отклонение от среднего) составляет —1,806]. Аналогичные числа приводятся по каждому интервалу. Карта определения таблицы в модели на рис. 4.32 (карта 22) указывает на наличие девяти интервалов. Однако на рис. 4.33 мы видим, что интервалов шесть. Последний из этих шести интервалов, покрывающий значение от 500 + до 600, содержит 20 элементов (OBSERVED FREQUENCY). Поскольку ни одно значение выборки не было более 600, оставшиеся три интервала, покрьгаающие значения от 600+ до бесконечности, пусты. Интерпретатор GPSS подавляет распечатку значений для этих интервалов, завершая таблицу фразой REMAINING FREQUENCIES ARE ALL ZERO (ВСЕ ОСТАВШИЕСЯ ЧАСТОТЫ РАВНЫ НУЛЮ). Если хотя бы одно значение выборки попадает в правый интервал таблицы, интерпретатор печатает слово OVERFLOW (ПЕРЕПОЛНЕНИЕ) в столбце UPPER LIMIT, а затем заполняет остальные столбцы этой строки. Примером этого служит распечатка таблицы на рис. 4.34, которая имела бы место, если бы в модели на рис. 4.32 в операнде D карты определения таблицы стояло число 6, а не 9. Запись OVERFLOW указывает число значений, попавших в правый интервал. Пользователю, однако, неизвестны величины этих значений, поскольку конец интервала уходит в бесконечность. Частично устраняет этот недостаток информация AVERAGE VALUE OF OVERFLOW (СРЕДНЕЕ ЗНАЧЕНИЕ ПЕРЕПОЛНЕНИЯ), распечатываемая интерпретатором в конце таблицы. В частности, на рис. 4.34 среднее из двадцати приходящихся на этот интервал попаданий равно 525, 84. При оценке распределения вероятностей было бы удобнее значении таблицы изобразить графически (вручную) в виде гистограммы (рис. 4.35). Она соответствует значениям таблицы на рис. 4.33. Горизонтальной линией отмечена вершина каждого прямоугольника, ширина которого соответствует диапазону значений для соответствующего интервала. «Вес» каждого прямоугольника пропорционален процентному значению тех элементов выборки, которые попали в этот интервал. Например, левый прямоугольник имеет 2,47 единиц высоты (что соответствует относительной частоте, равной 2,47%), горизонтальная линия проходит от 0 до 100. (Начало в данном случае определено в нуле, а не в минус бесконечности, поскольку резидентное время не может быть отрицательным.) Вообще говоря, можно указать интерпретатору GPSS на необходимость построить гистограмму по значениям таблицы. Для этого необходимо наличие редактора вывода GPSS. На TABLE BTlMf Entries in table .TO J UPPER LIMIT 100 гоо ЛОО 400 ьоо OVtRFLD» MEAN orsfrvco FREUlltNC v 9 SO 4 Л 93 "9 20 »Vt»«Gt VALUE DF OVERFLOH AHClfMUNl 3l> .«.11 1 1 PKR CtNT OF • OlAL 2.47 >ь.гь ?S.6I 2s>. 6i г*.si s.so S20.£i STANDARD OEvlATIQN 1 CUMULATIVE PCRCFNTAtit 2.«( 10.7 »A.» 69.9 0».« 100.0 го«?б> CUMULATIVE PFMA INUtH ■97. Ь «1.^ 5!-. 6 ЗС.а S.s .0 MJM pr Ml ARGUMt NT$ IM7 J.nao • LTIMli (II 41-AN . Jl« • A20 .041 .^st • . Ъ7.Х NOI4-4* Ot»IAlION Гмич *lf-A* ■ •во» • VT ■ . 1»' ■ bo: ..in шитег. ,Рнс. 4.34. Пример использования таблицы, в которой есть переполнение 237
ioo гоо зоо wo 500 время пребывания в магазине Рис. 4.35. Гистограмма, начерченная по значениям таблицы на рис. 4.33 рис. 4.36 дана гистограмма, построенная интерпретатором по значениям таблицы на рис. 4.33, если в модели на рис. 4.32 были использованы редактор вывода и соответствующие спецификации. Редактор вывода может выполнять такие служебные функции, как, например: 1) распечатку сопроводительного текста, заданного пользователем; 2) отбор к печать только той части статистической информации, которая нужна пользователю; 3) выбор и печать указанных пользователем стандартных числовых атрибутов в графическом виде, включая такие возможности для таблиц. Хотя полезность редактора вывода не вызывает сомнений > его описание потребовало бы указания большого числа технических деталей, которые к тому же никак не связаны с основными концепциями построения моделей с использованием GPSS. Специфика использования редактора в нашей книге не рассмотрена. Читателей, интересующихся этим вопросом, мы отсылает* к руководству по эксплуатации GPSS (инструкции пользователя). 4.24. Стандартные числовые атрибуты таблиц Некоторые из компонентов таблиц являются стандартными числовыми атрибутами. Это означает, что часть информации из таблиц может быть использована для управления логикой работы модели. Стандартные числовые атрибуты и их назначения представлены в табл. 4.13. Значения стандартных' числовых атрибутов таблиц зависят от времени. ТС/ просто считает число значений выборки, помещенных в таблицу. При возрастании величины ТС/ значения ТВ} и TD/ стремятся к некоторому определенному значепию и изменяются все меньше и меньше. Действительно, небезынтересно ис- 30 + 29. ♦ 28 ♦ 27 + 26 ♦ 2S + 2» * 23 ♦ 22 ♦ 21 + 20 ♦ I» + 18 ♦ 17 ♦ 16 ♦ ♦♦♦♦++♦*** 15 ♦ + + 1* * * * 13 ♦ 12 + 11 + 10 ♦ 9 * в * 7 ♦ в ♦ 5 ♦ 4 ♦ 3 + 2 * ♦«■+♦*♦♦«•+♦ 1 ♦ + ♦ О ********** ********** + * * * ********** ♦ + + * ■* ♦ ♦ ♦ + ♦ * + ♦ + ♦ * ♦ ♦ ♦ * ■* * * * ♦ * > * * * ♦ * * * * + ♦ ♦ ♦ ♦ + ♦ * ♦ + ♦ + ♦ ♦ + ♦ * + ♦ ♦ * ♦ ♦ * ♦ * ♦ + ♦ * * * * * * * *■ * * * *■ * * * * ♦ ♦ ♦♦♦♦♦♦♦+♦♦ ♦ ♦ ♦ ♦ + + ♦ ♦ *. ♦ ♦ ♦ + **++++** *********и-**+*******и-*+*************+********** ********************* 100 200 300 «00 5Q0 600 X AXIS- TIME IN STORE SECONDS YAX1S: OBSERVED RELATIVE FREQUENSY, ^PERCENT Рис. 4.36. Гистограмма, построенная редактором вывода GPSS по значепням таблицы на рис. 4.33 238
Таблица 4.13. Стандартные числовые атрибуты таблиц Имя1 Значение ТВ/ ИЛИ TBS ИМЯ TQ или ТС$ имя TD/ пли TDjJ имя Среднселначенне элементов таблицы Число учтенных в таблице эле- ментоп Стандартное отклонение элементов таблицы 1 Именем является .1нбо номер /, как указано в сноске к табл. 4.1. либо .щДаниос символической ни». пользовать значение ТВ/, например, для управления длительностью моделирования. Условие завершения может быть сформулировано в этом случае так: «Когда ТС/ становится ббльшим 1000, и увеличение его на 10% вызывает изменение ТВ/ менее чем на 5%, то моделирование можно завершить». (При таком подходе, однако, может возникнуть опасность следующего рода. По-видимому, пользователь построит свою модель таким образом, что завершение моделирования наступит также и при достижении таймером модельного времени некоторого большого значения. Тогда завершение может возникнуть до того, как будет определено первое условие.) Использование такого условия в логике моделирования требует динамической проверки значения ТВ]' в процессе моделирования. Возможности описания такой проверки и ее использования рассмотрены в гл. 5. В параграфе 4.2 было подчеркнуто, что числовая форма записи отдельных параметров элементов зависит от того, предназначаются они для печати или для использования в модели. Это в полной мере относится к стандартным числовым атрибутам таблиц. При распечатке таблицы RTIME (см. рис. 4.33), например, среднее значение и стандартное отклонение записано в виде 317, 831 и 120, 562 соответственно. Значениями TB$RTIME и TD$RTIME, тем не менее, являются 317 и 120 соответственно. Другими словами, когда эти СЧА применяются в модели для косвенного определения данных, то используется только целая часть их значений. Относительно величины ТС/ (или ТС$ имя) такие предупреждения не имеют смысла, поскольку этот атрибут по своей природе является целочисленным. 4.25. Упражнения l.a). Как связано число интервалов таблицы со значением операнда D карты определения таблицы? б). Дайте графическую интерпретацию интервалов таблицы, карта определения которой имеет вид «JOE TABLE РЗ,—50,25,8». в). Какой диапазон значений покрывает самый левый интервал таблицы JOE, описанной в н. б? Какие значения покрываются третьим интервалом? г). В какой интервал таблицы JOE, описанной в п. б, попадает значение 25? д). Каково наименьшее значение элемента, попадающего в таблицу SOFAR, карта описания которой имеет вид «SOFAR TABLE Ml, —100,50,15»? 2. В некоторой модели описаны две различные таблицы, операндом А которых является Q$LONG. Оба описания представлены на рис. У2. Один из блоков TABULATE указывает на таблицу ТАВ1, а другой — на ТАВ2, но оба они располагаются один за другим. Дайте объяснение, почему это может оказаться необходимым. (Указание: причина скрыта не в выборе значения операнда карты описания таблицы, т. е. QSLONG.) 3. Требования в точке А системы могут ждать освобождения ресурса. В другом месте, в точке В, они могут ждать освобождения другого ресурса. Интересующей нас переменной является общее время ожидания требованиями освобождения ресурсов. Например, если некоторое требование ожидает 5 мин в точке А и 3 мин в точке В, то общее время ожидания равно 8 мин. Покажите, как в модели оценить распределение общего времени ожидания. 4. Измените модель сборки деталей примера 2D таким образом, чтобы с ее помощью можно было оценить распределение для трех следующих переменных: 1) общее время обработки одной собранной детали (состоит из двух компонентов: времени сборки и времени обжига); 2) полное время сборки (состоит из трех компонентов): времени сборки, времени ожидания освобождения печи и времени обжига); 3) время сборки детали. Выполните моделирование для случая четырех, пяти и шести сборщиков, работающих в течение пяти рабочих дней по каждой из конфигураций. Затем выполните следующее. а). Среднее значение случайной переменной п.1, ее наименьшее и наибольшее значения LOCATION 333! JIABJL JlAftil, OPERATION t|n>jli|ir|u|l«|l3|K|ll I ишь ».B.CO.E.f *|5 21 b|n !«bj|tt|2rJM|a|>3;»ll2;U|Ml3»JK i i ft. . . t__i_ auoHc|.iQ,,iV,iVq, J—1 1_ .1 J Рис. У2 239
легко рассчитать по данным, описывающим модель. Сравните эти известные значения со значениями распределения, полученными при моделировании. б). Используя среднее значение, полученное при моделировании для переменной л.2, рассчитайте число деталей, сборка которых должна кончиться в течение периода моделирования. Согласуется ли подсчитанное вами число с числом собранных деталей, указанным счетчиками блоков? в). Насколько хорошо согласуются распределение, полученное при оценке времени сборки, указанного в п.З, и заданное распределение времени сборки для различных конфигураций модели (равномерное на интервале 25—35 включительно)? 5. В некоторой точке системы имеет место обслуживание, время которого распределено экспоненциально со значением среднего 100 единиц времени. Разработайте GPSS-модель, в которой было бы разыграно 1000 обслуживании, и по полученным значениям, собранным в таблице, оцените получившееся распределение времени обслуживания. Распечатайте таблицу после того, как число ее элементов будет достигать 100, 200, 300, ..., 1000. Сравните среднее значение и стандартное отклонение, получаемое при распечатках в процессе их выдачи, со значениями среднего и стандартного отклонения, каждое из которых, как известно, равно 100. Какое из этих двух параметров устанавливается скорее при увеличении размера выборки? Сделайте интервалы такими, чтобы табулировались относительные частоты, с которыми значения попадают в диапазоны чисел 0-К 20; 80+, 100; 140+, 160. Сравните относительные частоты, полученные в распечатке друг за другом, j с относительными частотами, которые должны получаться при длительном моделировании (относительные частоты при длительном моделировании могут быть вычислены при использовании информации, данной в параграфе 3.22). Для каких из этих интервалов оценочные относительные частоты устанавливаются быстрее? Можете ли вы объяснить, почему? 6. Предположим, что пользователю необходимо оценить относительную частоту, с которой случайная переменная получает значение, попадающее в интервалы 0+, 20 и 20+, 40. В то же время ему необходимо оценить частоту, с которой та же случайная переменная получает значения, попадающие в интервалы I9+, 21; 21 + , 23 н 23+, 25. Пусть значения случайной переменной содержатся в параметре 2 транзакта, проходящего через некоторую точку модели. Покажите, как можно получить интересующие нас оценки. 7. На некоторой авиалинии в день совершается 15 полетов. Для каждого полета требуется Таблица У7 заболевших Вероятность U заболевших Вероятность 0 0.20 j 3 0,15 1 0,25 j 4 0,10 2 0.20 5 0,10 стюардесса. Правила работы таковы, что в резерве всегда должны быть три стюардессы на случай, если кто-либо заболеет. Распределение вероятностей числа заболевших стюардесс представлено в табл. У7- Постройте модель, которая моделировала бы эту ситуацию и на которой можно было бы оценить нагрузку резервных стюардесс и распределение случайной переменной «число полетов, отмеченных ввиду отсутствия стюардессы». Промоделируйте работу на интервале 1000 дней, распечатывая результаты через каждые 100 дней. Подсчитайте теоретические значения интересующих переменных. Сравните поведение оцениваемых переменных при росте размера выборки с. теоретическими значениями. (Эта задача включена с разрешения издательства J. Wiley & Sons. Она опубликована в гл.З книги «Operation Research, Methods and. Problems», 1959, авторы M. Sasieni, A. Yaspan, L. Triedman). 8. Интервалы прибытия кораблей в порт, функционирующий круглосуточно семь дней в неделю, показаны в табл. У8. Тридцать процентов этих кораблей оснащены современным оборудованием, позволяющим производить быструю погрузку-выгрузку. Эти корабли причаливают к перегрузочному комплексу 1 (рис. У8) с двумя причалами, "на каждом из которых перегрузка может быть закончена за 1 ± 0,1 дия. Остальные корабли направляются к перегрузочному комплексу 2, у которого есть шесть причалов. На них перегрузка длится 1,5 ± 2= 0,2 дня. Для ввода кораблей в порт используют одно буксировочное судно. Время буксировки к причалу занимает 30 — 10 мин, а от причала 15 2= 5 мин. Необходимо промоделировать работу такой системы и оценить распределения для следующих переменных: 1) общее время ожидания кораблей, оснащенных совре- Таблица У8 Интервалы првхода. НИН Менее 125 175 225 275 Суммарная частота 0,00 0.10 0,22 0,40 1 Интервалы мни 325 375 425 475 Суммарная частота 0,55 0.78 0,90 1.00 240
Приход . > ОО - Счередъ1 ^ X Перегрузочный комплекс 1 Уход АЛЛ Очередь Z _ Лерееруэачный комплекс? Рис. У8 менным погрузочно-разгрузочным оборудованием, у входа в порт (заметим, что это время состоит из времени ожидания освобождения причала и времени ожидания буксировки); 2) то же самое для всех прочих кораблей. а). Покажите, как можно построить такую модель, используя блоки ENTER и LEAVE, операндами А которых являются константы или символические имена. При этом для перегрузочных комплексов 1 и 2 следует иметь различные блоки ENTER и LEAVE. б). Постройте ту же модель с использованием косвенного определения операндов блоков ENTER и LEAVE. В этом случае можно обойтись единственной парой блоков ENTER и LEAVE для моделирования обоих комплексов. Сравните число используемых блоков для обеих моделей. в). Посчитайте значения степени использования причалов комплексов 1 и 2 и буксировочного судна, получающиеся при длительном моделировании (т. е. рассчитайте математические ожидания этих величин). г). Постройте один или два сегмента модели, назначением которых является определение для модели, построенной в п. б, начальных условий, рассчитанных в п. в. Под начальными условиями понимается состояние модели в момент времени, равный единице. д). Используя модель из п. б и сегмент(ы) модели(ей) из п. г, определите время моделирования, необходимое для правильной оценки обеих случайных переменных времени ожидания системы. е). При исследовании может возникнуть необходимость модификации модели для того, чтобы добавить новые причалы, перегрузочные комплексы и буксировочные суда. Поэтому модель целесообразно построить таким образом, чтобы интервалы времени прихода кораблей, время перегрузки и буксировки не зависели от конфигурации моделей. Это, как мы внаем, необходимо для восстановления условий моделирования при сравнении различных конфигураций системы: 1) покажите, какие изменения в модели из п. а следует сделать для удовлетворения этого условия; 16 Т. Дж. Шрайбер «1 2) то же самое выполните для модели из п. б. ж). Выполните моделирование и ответьте на следующие вопросы: 1) при какой стоимости использования причала в день целесообразно добавить еще один причал к комплексу 1, если стоимость простоя корабля в час равна 500 долларам; 2) выполните предыдущий пупкт по отношению к перегрузочному комплексу 2; насколько, по вашему миепию, ответы на вопроси 1 и 2 не зависят друг от друга? 3) если стоимость эксплуатации буксира равна 250 долларам в день, целесообразно ли использовать в порту еще один буксир? 9. В упражнении 6 параграфа 3.17 требуется создать модель или модели, на которых можно получить среднее время ожидания (включая обслуживание) по каждому из типов обслуживания в бюро по найму при реализации дисциплин обслуживания «первым пришел — первым обслужен»; «первым пришел — первым обслужен внутри одного класса приоритетов». Постройте новую модель обслуживания в бюро по найму, которая помогла бы оценить распределение времени ожидания по каждому из типов обслуживания. Какое влияние оказывает дисциплина обслуживания на такие характеристики случайной переменной — времен1.: ожидания, как стандартное отклонение или относительная частота, с которой значение переменной попадает в определенный интерпал? Нарисуйте гистограмму распределения iv:eMC:ii: ожидания требований, отпосящихся к типу I при дисциплине обслуживания «первым пришел — первым обслужен». Наложиie теперь на этот рисунок (используя цветные карандаши) гистограмму распределения времени ожидания для требований типа I прн приоритетной дисциплине обслуживания. Укажите уличил, касающиеся этих двух распределений. 4.26- Дополнительные режима использования таблиц Существуют три специальных режима, в которых можно использовать таблиич. Пх называют 1А-режимом, RT-режимом и QTA'iLf.-pe- жимом. Ниже рассмотрим все три режима использования таблиц. 4.26.1- 1А-режим При использовании блока GENER4TR олппе- деление интервалов времени ns:xo;n n ".»ледененных точках системы задаются ,* w-.-v: некоторых данных. Определение таког» распределения представляет собой од;.>: к; способов привязки моделируемой спето.»:; J :; ппечигей среде» Данные для определения распределений
интервалов времени прихода должны быть либо заданы, либо измерены на конкретной системе. Но существует другое определение распределений интервалов времени прихода, которое также может использовать разработчик. Эти распределения относятся к транзактам, а именно ко времени их прихода в некоторую точку внутри системы. Для оценки таких распределений в процессе моделирования можно использовать таблицы GPSS. Логика сбора данных об интервалах времени входа транзактов в некоторую точку внутри модели довольна проста. Необходимо отметить значение абсолютного времени при входе первого транзакта в эту точку. Далее, при входе второго транзакта необходимо из текущего значения абсолютного времени вычесть ранее отмеченное время. Разннца как раз и является интервалом времени прихода. Именно ее и следует использовать как аргумент для таблицы GPSS. Когда в ту же точку придет следующий тран- закт, необходимо рассчитать время его прихода относительно транзакта-лредшественииха и записать в таблицу. Так, продолжая сбор данных, можно оценить распределение интервалов времени прихода. Интервалы времени рассчитываются и вводятся в таблицы в GPSS автоматически при применении специального режима их использования, называемого 1А-режимом (Inter Arrival, т. е. интервалы прихода). При этом пользователю необходимо выполнить следующие действия. 1. В карте определения таблицы операндом А необходимо записать IA. Операнды В, С и D определяют обычным образом. 2. Блок TABULATE, относящийся к этой таблице (т. е. такой блок, в котором в качестве А-операнда записано имя таблицы), должен быть помещен в интересующую нас точку модели. Для использования таблиц в режиме IA больше ничего не требуется. 4.26.2. RT-режим Довольно близко к понятию интервала времени прихода понятие интенсивность прихода. Разработчику может оказаться полезной оценка распределения интенсивности, с которой тран- закты поступают в определенную точку модели. Для этого существует специальный режим использования таблиц. Этот режим называют RT-режимом (Rate, т. е. интенсивность). При этом пользователю необходимо выполнить следующие действия. 1. В качестве операнда А записывают RT. Операнды В, С и D определяют как обычно. 2. Необходимо определить значение операнда Е. Им является интервал времени, относительно которого измеряется интенсивность. 3. Блок TABULATE, относящийся к этой таблице, должен быть помещен в интересующую нас точку модели. Заметим, что интенсивность определяется относительно какого-либо интервала времени. Для указания интенсивности мы говорим: «автомобилей в час», «людей в каждые 15 мин» или «требований в каждые 5 дней». Необходимо, чтобы интерпретатор также знал, чему равен тот интервал времени, для которого он должен собрать статистику об интенсивности. Для этого и служит операнд Е карты определения таблиц. Значение этого операнда задается в единицах модельного времени. Например, если в модели единицей времени является I с, и карта определения таблицы имеет вид «BRIAN TABLE RT, О, 5, 10, 30», то это значит, что значение интенсивности должно указывать число штук за 30 с. Логика сбора данных в этой таблице следующая. Каждая таблица, используемая в RT-pe- жиме, имеет специальный счетчик. В начале моделирования этот счетчик сбрасывается в ноль. Прн ссылке на таблицу из блока TABULATE значение счетчика увеличивается на единицу. Если интервал времени, указанный в операнде Е, проходит, то значение счетчика помещается в таблицу, а сам счетчик снова сбрасывается в ноль. Процесс добавления к счетчику продолжается теперь на следующем интервале времени. Далее, по истечении интервала снова значение счетчика помещается в таблицу, а счетчик сбрасывается, и т. д. Время, когда интерпретатор должен помещать очередное значение счетчика в таблицу, определяется следующим образом. При чтении интерпретатором карты определения таблицы в RT-режиме в процессе выполнения фазы ввода он выбирает из пассивного буфера транзакт и помещает его в цепь будущих событий. Временем выхода такого «фиктивного» транзакта устанавливается значение операнда Е карты определения таблицы. По истечении этого интервала временя транзакт будет помещен в цепь текущих событий. При обнаружении фиктивного транзакта интерпретатором в процессе просмотра цепи текущих событий (ЦТС) значение указанного счетчика помещается в таблицу и сбрасывается в яоль. Значение Е-операнда прибавляется к текущему значению абсолютного времени, и фиктивный транзакт вновь помещается в ЦБС со времени его выхода в ЦТС именно при таком значении времени. И так далее. Необходимо помнить, таким образом, что в цепях могут находиться фиктивные транзакты. При распечатке цепей такие транзакты также распечатываются. Это не должно вызывать удивления у пользователей.
4.26.3. QTABLE-режим Прн распечатке статистических данных в конце моделирования можно получить средние времена пребывания в очереди. (Вспомним, что существует два типа тахих времен. Во-первых, это среднее время пребывания, обозначаемое как AVERAGE TIME/TRANS, базирующееся на общем числе входов в очередь QUEUE. Во- вторых, это среднее время, обозначаемое как SAVERAGE TIME/TRANS, базирующееся только на ненулевых входах в очереди. Далее мы говорим о первом из этих времен). Другие параметры ожидания не собираются и не распечатываются. Однако именно эти другие параметры могут иметь более важное значение, чем среднее время пребывания. Например, в применении к обслуживанию в банке критичным может оказаться не среднее время ожидания, а процентное отношение числа ожидающих больше 10 мин. При использовании таблиц разработчик в логике моделирования может учитывать параметры оценки распределения времени ожидания в очереди. Для этого необходимо, чтобы 1) транзакты отметились в параметре j при входе в очередь н 2) прошли через блок TABULATE, относящийся к таблице со значением MP/ операнда А. То же самое может быть получено при использовании специального режима использования таблиц, называемого QTABLE-режимом. Преимуществом его использования, по отношению к отметке тран- закта блоком MARK и прохождению его через блок TABULATE является уменьшение числа используемых блоков и уменьшение времени моделировании. Для оценки распределения времени пребывания в очереди пользователю необходимо определить соответствующую карту определения таблицы. Она записывается следующим образом, 1. В поле операции записывается не TABLE, a QTABLE. 2. Операндом А карты является имя очереди, оценка распределения времени пребывания в которой представляет интерес. Операнды В, С и D определяются так же, как и поле имени карты (последнее определяет имя самой таблицы). В примере моделирования 40 нам пришлось оценивать среднее время ожидания клиентов в банке. Кроме определения относительной частоты нулевого ожидания из распределения времени ожидания, нам ничего измерить не удалось. Если в модель вставить карту QTABLE, можно получить полную оценку распределения. На рис. 4.37 повторяется распечатка программы-модели системы обслуживания с одной общей очередью, представленной па рис. 4D.3,a, но теперь в модель добавлена карта QTABLE (карта 18) и показано моделирование лишь од- 16* ного дня работы примера 4D. На рис. 4.38, а показана статистика, полученная в результате прогона модели на рис. 4.37. Следуя процедуре, описанной в параграфе 4.18, интерпретатор присваивает очереди с именем 1NQUE номер I. На рис. 4.38, а столбец указания номера таблицы, отмечаемый как TABLE NUMBER, содержит число 1. Это означает, что статистика об очереди собирается в таблице 1, причем очередь имеет символическое имя ONE. (До сих пор столбец TABLE NUMBER оставался пустым.) В табл. 4.14 сопоставляется информация, полученная из рис. 4.38, а и из таблицы на рис. 4.38, б. Соответствующие значения из двух «различных» источников одинаковы. Это вполне естественно, но небольшая, хотя и заметная, разница есть. Причиной является то, что время пребывания транзакта не записывается в таблице до тех пор, пока транзакт не пройдет блок DEPART той же очереди. В противоположность этому, при распечатке статистики об очереди в конце моделирования, все транзакты, оставшиеся в очереди, учитываются как вышедшие из очереди в конце моделирования. Поэтому статистика очереди показывает несколько заниженное значение среднего времени пребывания в очереди по сравнению с реальным значением, т. е. значением, которое было бы получено при продолжении моделирования. Таблица 4.14. Сравнение некоторых статистических данных, полученных по описанию очереди и но таблице (см. рис. 4.38) Рисунок Рис. 4.38, а Рис. 4.38, б Среднее время пре- Сык'шня, с 2542,59 2542,459 Стандартное отклонение Не выдастся 2158,000 Процент нулевых входов 12,00 12,08 • * Процент нулевых и кодов, полученных но описанию очероди п виде PERCU.MT OF TOT Л!., в таблице присутствует в виде значения интервала прн UPPEK LIMIT, paimou нулю. Почему же тогда в табл. 4.14 мы видим одинаковые значения среднего времени? Причина заключается в том, что в момент завершения моделирования пи один транзакт не находился в очереди. (Заметьте, что столбец CURRENT CONTENTS на рнс. 4.38, а пуст.) В общем случае число входов в таблицу, отмечаемых как ENTRIES IN TABLE для таблиц, может быть меньше, чем число входов TOTAL ENTRIES, показанных в статистике для той же очереди. Это показывает, почему существует уменьшение времени пребывания в статистике очереди. Хотя таблицы, используемые в режимах IA, RT и QTABLE, имеют свою специфику, они являются so всех смыслах именно таблицами.
BLOCK •VJK8ER *LCC * OPERATION SIMULATE a.b.c.o.e.f.g COMMENTS FUNCTION DEF tNIT|ON(S> 5 FUNCTION RN1.C24 EXPONENTIAL DISTRIBUTION FUNCTION 0,0/. 1..104/.2,.222/.3, .3SS/.4..S09/.S».69/.«>..9 IS/.?, 1.2/.7S.I.38 .a,I.6/*B4,1.83/.BB.2»12/.9.2.3/.92,2.52/.94.2.6 1/.99,2.99/^96,3.2 .9?,3.&/.9e»3.9S.99»4.bS>99S,S.3/.99B«6.2/.999,7/.9998.8 MEAN FUNCTION RN1.DS 0I9TR1BUTIDN OF MEAN SERVICE TIME .l,450/«29, 750/,6}, >0O0/.eS, 1*00/1,3000 * • STORAGE CAPACITY OEFtNlTlONtS) STORAGE SSTELRSjH TABLE OEFINITION(S) INOUE QTABLE ONE ,0.600.20 MODEL SEGMENT I I 2 3 4 Ь 1 в ю GENERATE ASSIGN OUEUE ENtto DEPART ADVANCE LEAVE TERMINATE leO.FNS.,, ■ I 1,FNSMEAN,S ONE TELRS ONE PI TELRS MODEL SEUMtNT 2 GENERATE Tf HMlNATt 180000 CON-OOL CARDS START fcNO PROVIDE a TELLERS RESIDENCE TIME IN THE LINE CUSTOMERS ARRIVE SET Pi = SERVICE TIME ENTER THE LINE ENGAGE A TELLER LEAVE THE LINE TRANSACT BUSINESS FREE THE TELLER LEAVE ГНЕ BANK TIMER ARRIVES AFTER S HOURS SHUT OFF THfc RUN start The Run fdr day i retuhn control to operating svsttm САЯО NUM8E« I 2 3 4 S 6 т 8 9 10 11 12 13 14 IS 16 IT IS 19 20 21 22 23 24 2b 2b 2» 26 го 30 31 3.2 33 3* 35 Jo 37 JH 3* Рис. 4.37. Распечатка программы модели pre. 4D.3,a после ее модификации с целью табулирования распределения резидентного времени для очереди ttUEUE И*х;мим AVL.4ACC CONTENTS СО^ЧК1"» ONE Ъ1 II. I."» (AVERAGE 1IME/THANS х AvEJAljv JUT»!. •' ^t»0 PKBCtNT «VCRACC SAVEPAOi tNieiLS ENTRIES ZCBbi- TIKF/1PAAIS Tlfcfc/TBANS tl!01 121 12-0 2S«S.*.by *49-J.U«7 riVr/lniM ExCLUOI'.-i /FPO FKTS It <• TABLf CUPHS...4T NOHBt" CCjMt.ht:, I taole tNOue ENTRIES IN TABLt 100 1 UPPER. Lllll' 0 600 >20П leoo 24co 3000 ЗЬОО .«200 4 МЛ 9*00 6000 «400 7200 7И00 8*00 Mt»N oastsveо FrttOuCNf v 121 12* If Иг 99 «6 so ■ . 71 ьг »Л .0 36 30 18 в AUCDMkfclT ZS«2 • »49 РСЙ OF СЕМГ 1 Ul.AL 12. Oft 12.«• 9.49 11.IS 9.89 в.1.9 А.9Ч- 7.Q9 4.1V '*.S9 .1.99 3.44 2.99 I.T9 .79 STANDARD DEVIATION ^lil< CUMUlATtVL PeRCEftrAbti 12.0 2».i 34.2 45. * 35. J 63.9. 6H.4 76.0 Ф1.2 ■86 «в 9.0.4 a»-,» 97.« 99.» 100.0 .000 CUMULATIVE REHAINVErt. ОТ.Ч 7*.4 64.7 3*.b 44.6 36.0 31.0 23.4 17.7 13.1 9.1 s.s г. s .7 .0 „E.XAI41N*. f atOUENCItS »И| ALL, ZtHO « Sum of ARC*u*bNrs .'S.iOO^.OOO MULTIPLt OF MtAI» -.004 .23$ .•71 .707 .443 I . ПЧ 1.415 1.6Ы :..чЛ7 2.1*3 2.3S4 2.Ь9Ь 2.B3I з.оь; 3.303 NUN-tfb(ЗИТЁО Рис. 4.38. Часть распечатки, полученной после выполнения модели рис. 4.37: а -- статистика очереди: б — Ta6ARuatINQUE. описывающая ожидание в очереди dc v i • t to n Р«0М MiAN -l, 178 -.900 -.622 -.3»* -.066 .21.1 .490 .76» l,0*o 1.324 1.602 t.eso e, i?b JN4 36 e.Ti*
1. Они распечатываются как часть стандартных выходных данных.- 2. Они могут распечатываться динамически при использовании блока PRINT. 3. Три табличных стандартных числовых атрибута относятся и к этим таблицам. Символические имена, присваиваемые обычным таблицам, не должны совпадать с именами таблиц, используемых в специальных режимах. Если, например, таблица 7 используется в IA- режиме, то в качестве имени любой другой таблицы число 7 использоваться не должно. 4.27. Упражнения l.a). Какой процент клиентов в первый день ожидал обслуживания не более 4 мин в модели с одной обшей очередью в банке (рис. 4.38, б)? . б). Покажите, какие изменения следует сделать в модели на рис. 4D.3, б, для того чтобы можно было оценить распределение общего времени ожидания клиентов. в). Вернемся к примеру моделирования 4D, где оцениваются распределения времени ожидания в системе с одной общей и несколькими раздельными очередями. Посчитайте, используя выходные данные, значения среднего и стандартного отклонения случайной переменной процента клиентов, которым пришлось ждать .более 4 мин. Какая из двух систем оказывается лучше по этому критерию? 2. Какие изменения необходимо сделать в указанных ниже моделях, чтобы можно было оценить распределения следующих случайных переменных. а). Пример 2А, распределение интервалов времени между последовательными обслужива- ниями. б). Пример 2А, интенсивность завершения обслуживания. в). Пример 2В, время обслуживания для клиентов, которые и стригутся и бреются. г). Пример 2С, интервалы времени прихода механиков в кладовую (без различия типон механиков). д). Пример 2Е, интенсивность поступления сломанных швейных машин в ремонтную мастерскую. е). Пример 2Е, интервалы времени поступлении сломанных швейных машин в ремонтную мастерскую. ж). Пример 2F, интервалы времени поступг леняя телевизионных приемников на станцию технического контроля. 3. Напишите модель на GPSS, которая использовала бы таблицу для определения первых 1000 значений, получаемых от RNI для пяти различных начальных значений этого генератора случайных чисел. (Табулируемыми значениями RN1 являются целые трехзначные числа.) Таблица должна содержать интервалы 0—49, 50—99, 100—149 950—999. Выполните моделирование. Для всех пяти таблиц сравните: а) средние значения; б) стандартные отклонения; в) относительные частоты для каждого из интервалов с теоретическими значениями тех же параметров.
ЧАСТЬ II 5.1. Введение В разобранных до сих пор методах моделирования на GPSS пользователю не требовалось знать, как происходит процесс вычислений. Предполагалось, что интерпретатор сам знает, как организовать н подсчитать нагрузку прибора, среднее квадратичное отклонение таблицы, среднее время пребывания в очереди н т. п. Эти вычисления, необходимы, и интерпретатор GPSS автоматически выполняет их. Многие вычисления в значительной степени зависят от контекста, т. е. присущи моделируемой системе и используемому алгоритму. Интерпретатор не может быть сконструирован так, чтобы предвидеть все ситуации, возникающие у пользователя, и автоматически их учитывать. Поэтому для пользователя предусмотрена возможность создавать по своему желанию арифметические выражения, а затем использовать их в логике модели. В этой главе будут рассмотрены арифметические переменные, вводимые для удобства пользователя. Все модели, построенные до сих пор, не использовали преимуществ проверок, встроенных в модель. Для обеспечении логики моделей, описанных в предыдущих главах, требовались проверки, которые имели место только в блоках SEIZE, ENTER, SELECT и TRANSFER в режиме статистической передачи и режимах BOTH. Проверки, осуществляемые в этих блоках, являются заранее определенными н относительно жесткими. Эти блоки не в состоянии обеспечить полный набор проверок для принятия всевозможных решений. Предположим, например, что транзакт может двигаться дальше в модели только в случае, если сумма двух чисел мекьше или равна некоторого третьего числа. В этой главе будет описана возможность включения подобных условий в GPSS-модели с помощью блока TEST (ПРОВЕРИТЬ). Построение более сложных моделей Не все проверки, которые пользователь хотел бы иметь в модели, являются численными соотношениями. Иногда удобно сделать поведение модели зависимым от логического состояния определенных элементов внутри языка GPSS. Может случиться так, что т.ранзакт не может продвинуться вперед в какую-то точку модели до тех лор, пока занят некоторый прибор где-либо в другой точке. В этой главе описано использование блока GATE (ВПУСТИТЬ), удобного для моделирования условий, в которых участвует логическое состояние выбранных элементов GPSS. Ни в одной из представленных до сих пор моделей транзактам не было необходимости «общения друг с другом», Действительно, в языке слабо развиты возможности прямого обмена информацией между траизактами. Тем не менее тракяакгам лредегавлена возможность косвенного общения друг с другом посредством ячеек памяти, известных как «сохраняемые величины». Эти сохраняемые величины, которые можно представлять в одно- и двухмерном виде, имеют также множество других полезных применений. Некоторые из них будут рассмотрены в примерах, приведенных в гл. 5. Таким образом, в дайной главе будут рассмотрены: арифметические переменные, блоки TEST и GATE и сохраняемые величины. В дополнение к сказанному будет введен еще один объект GPSSa— логический переключатель, и в двух йример.ах будут продемонстрированы возможности его использования.
5.2. Арифметические переменные Арифметическая переменная в GPSS является стандартным числовым атрибутом, определяемым пользователем. Ссылкой на арифметическую переменную является либо V/, либо V$ имя, где / — номер переменной, если она была задана этим номером, а «имя» — символическое имя в случае символического задания. Величиной арифметической переменной является величина заданного пользователем арифметического выражения, определяющего эту переменную. В свою очередь, арифметическое выражение — это набор даипых, связанных арифметическими операциями. Ниже внимание будет сконцентрировано на допустимых в GPSS арифметических операциях; на данных, входящих в арифметические выражения; на карте определения переменной; на примерах переменных и правилах их вычисления и, наконец, на специальном случае определения переменной по желанию пользователя. 3.2.1. Арифметические операции Допустимые арифметические операции в GPSS показаны в табл. 5.1. Первые три из них хорошо известны. Последние две (деление нацело н деление по модулю) могут потребовать дополнительного разъяснения. Таблица 5.1. Арифметические операции, используемые в GPSS Символ I Операция -\- Сложение — Вычитание * Умножение / Деление @ Деление по модулю При делении нацело результатом операции является только целая часть частного. Дробную его часть, если она есть, отбрасывают. Так, 17/4 есть 4. Частное от деления 17 на 4 есть 4,25. Дробная часть этого числа отбрасывается, а целая часть остается в качестве результата операции. Аналогично 25/3 равно 8, —21/6 равно — 3 и 10/5 равно 2. Как показано во втором из этих примеров, алгебраический знак, присваиваемый результату, определяется по обычным правилам. В последнем примере показан случай, когда результат является точным, поскольку у частного нет дробной части. Если величина делителя в GPSS при операции деления нацело будет равна нулю, интерпретатор полагает величину частного равной Устная форма (а) 53 по модулю 26 равно 1 (б) 17 по модулю 6 равно о (в) 3 по модулю 5 равно 3 (г) 8 по модулю 10 равно 8 <д) 7 по модулю 7 рапио 0 (е) 54 по модулю 9 равно 0 Запись 53 17 3 8 7 54 @ @ @ @ @ @ 26= 1 6= 5 5=3 10 = 8 7 = 0 9= 0 Рис. 5.1. Примеры деления по модулю нулю. Это удобно, если величина делителя определяется косвенно и может принять нулевое значение в модели. Последний оператор в табл. 5.1 определяет деление по модулю. При делении по модулю отбрасывается целая часть частного, а результатом деления является остаток. Например, 13, деленное на 3, равно 4 с остатком 1. При делении по модулю 4 отбрасывается, а 1 остается в качестве результата. Обычно более сжато это произносится так: «13 по модулю 3 равно 1», и записывается как «13@3= 1». Читателю следует просмотреть примеры деления по модулю, приведенные и а рис. 5.1, чтобы убедиться в том, что смысл операции деления по модулю ему понятен. 5.2.2. Определение данных в арифметических выражениях В выражениях, используемых для задания арифметических переменных, данные могут определяться как прямо, так и косвенно. При прямом задании данные принимают форму целых констант. Косвенно заданные данные принимают форму стандартных числовых атрибутов. Все описанные стандартные числовые атрибуты могут быть использованы в арифметических выражениях. Так как переменные также являются СЧА, в выражение, определяющее арифметическую переменную, могут быть включены ссылки на другие арифметические переменные модели. Рассмотрим, что произойдет, если в арифметическом выражении для косвенного задания данных будет использована функция. Как было указано выше, в большинстве случаев в качестве данных используется только целая часть полного значения функции. Это также справедливо, когда функции используются для задания арифметических выражений. 247
Следовательно, все данные, участвующие в атч.фметическом выражении, являются целыми. Если в этих выражениях при прямом задании данных используются константы, то они должны быть целыми. Все СЧА, которые могут Сыть использованы при косвенном задании, также 5!1!ляются целочисленными. При использовании операций «+», «—» и «X» над целыми числами результатом будет целое. Как объяснялось выше* при использовании операций «/» и «ф» результатом также является целое число. Следовательно, иа каждом шаге вычисления арифметического выражения может получиться только целое. Таким образом, арифметические выражения сами являются только целыми числами. 5.2.3. Карта определения переменной Арифметическая переменная задается с помощью карты определения переменной, называемой иногда просто картой переменной. Как и большинство других карт, карта переменной разделена па поля имени, операции и операндов. Информация, помещаемая в этн поля, показана в табл. 5,2. Имя переменной помещается в поле имени, а в поле операции ставится слово VARIABLE. В поле операндов ставится арифметическое выражение. Оно должно начинаться в 19-м столбце карты и продолжаться в последующих столбцах карты без пробелов. Первый пустой столбец в поле операндов означает колец арифметического выражения. Выражение не может заходить за 71-и столбец карты. Более того, если выражение слишком длинное для того, чтобы поместиться на одной карте, оно не может быть продолжено на следующую карту. В подобных случаях такое выражение должно быть разбито на несколько более коротких выражений и определено посредством двух или более арифметических переменных. Наконец, знак «минус» в арифметических выражениях в GPSS может быть использован только в качестве бинарного, а ие унвриого, оператора. На практике это означает, что карты определения переменной, в которых знак минус Таблица 5.2. Формат карты, используемой для определения арифметической перемеявоЯ Поле перфокарты Поле имени Поле операции Поле операндов Информация, помещаемая в поле Числовое или символическое имя аряфмегяческой переменной Слово VARIABLE Арифметическое пыражение, определяющее арифмегичесяую перемен- ную находится в 19-м столбце и (или) знак минус стоит сразу же после левой круглой скобки, являются ошибочными. 5.2.4. Примеры в правила На рис. 5.2 показаны четыре примера арифметических переменных. Переменная JOE представляет собой величину, равную сумме оставшейся емкости и текущего содержимого многоканального устройства 5. Конечно, оставшаяся емкость плюс текущее содержимое многоканального устройства есть емкость, определенная пользователем. Среди стандартных числовых атрибутов, обеспечиваемых интерпретатором, нет величины емкости многоканального устройства, определенной пользователем. Таким образом, данный пример показывает, как пользователь может задать арифметическую переменную, имеющую в качестве своей величины емкость многоканального устройства. Переменная PETE на рис. 5.2 — счетчик числа входов в блок с именем РАТН1 по модулю 10. Заметим, что множество значений. V$PETE состоит только из десяти целых: 0, 1, 2, ..., 8 и 9. Такое ограничение характерно для деления по модулю. Переменная MARK определяется как текущее содержимое очереди LONG минус текущее содержимое очереди 5. Переменная TIM определена как разность величин 2 и 4-го параметров, деленная на 2. По поводу перемедной TIM следует сделать два замечания. 1. Если для арифметической переменной данные, заданные косвенно, являются параметрами, то используются параметры активного транзакта. Арифметическая переменная подсчитываете я лишь тогда, когда транзакт входит в блок, в котором величины операнда каким- либо образом зависят от этой переменной. Это тот самый транзакт, чьи параметры используются. 2. В выражениях, определяющих арифметические переменные, могут использоваться круглые скобки. То, что заключено в скобки, под- считывается в первую очередь, затем результат используется для вычисления оставшейся части выражения. Это так называемое правило круглых скобок. Рассмотрим теперь набор примеров арифметических переменных, приведенных на рис. 5.3. Во всех трех примерах поставлен вопрос о временной последовательности, в которой действуют различные арифметические операторы. Например, если Р5 равно 5 и Q2 равно 15, то V ANN равно 4 (если сложить Р5 и Q2, а затем разделить на 5) или 9 (если вначале разделить Q2 па 5, а затем результат сложить с Рэ). Таким образрм надо решить, что делать: либо сначала складывать, затем делить, либо сначала 248
ZpELi |1|M<>!* JlfiJL. MiLL. p £JL. |TilM I VAB.IAB.l.t vh*M*if ■.t-t.S.5. цама'вчх i *AULAfiJUEi_4_ V.A.IUAftl.E. «WM i 'I I I ncnBU&i tIDKEiEP ' I I I tHiPA.bH^iai.P..i.i- aii ПРИСУЩ. l,pt-,M,w.a 1,111 ! -r-^ I I.U ПЕРВЫЙI д ЯРИЫЕР j 111 j-j.j 111 i I ВТ0Р0Й1 ПРИМЕР I I ' ■ ■ - ■-!■-'— ■—-J—f Г 1 ТРЕТИЙ ПРИМЕР | -Uj_._i„j i V 'четвертый, пример I • I -.1 I I I I I ,., , Рис. 5.2. Первый набор арифметических переменных делить, затем складывать. Для этого на операторы налагают порядок выполнения, и их действие подчиняется правилу предшествования. В табл. 5.3 указан порядок предшествования для пяти возможных операций. Правило предшествования заключается в том, что, если предшествование не изменено наличием скобок, арифметические операции в выражении выполняются в порядке убывания уровня предшествования. Из табл. 5.3 следует, что умножение, деление и деление по модулю предшествуют сложению и вычитанию при отсутствии скобок. Это означает, что переменная ANN па рис. 5.3 подсчитывается вначале делением Q2 на 5, а затем прибавлением результата к Р5. Таблвца 5.3. Порядок предшествования дм арифметических операций в G**SS Операция *./■© + и- Уровень предшествования Высший Низший Переменная KATHY подсчитывается так: вначале RN2 делится по модулю на 10 и к результату прибавляется единица. Вспомним, что за исключением использования в качестве аргумента функции RN/ выбирают случайное число из равномерного распределения целых чисел от 000 до 999 включительно. В переменной KATHY RN2@10 является соответственно случайной величиной, равномерно распределенной в интервале целых чисел от 0 до 9 включительно. После прибавления единицы к этому промежуточному результату V$KATHY становится случайной величиной, равномерно распределенной в замкнутом интервале от 1 до 10. В последнем примере рис. 5.3 величина V$ALICE формируется путем умножения приоритета активного транзакта на 5 и последующего вычитания из этого произведения свободной, емкости многоканального устройства с именем TUG. Заметим, что правило предшествования распространяется на арифметические переменные без скобок. Если используются скобки, то все, что в них заключено, подсчитывается в первую очередь, а затем этот промежуточный результат используется в оставшейся части выражения. При подсчете выражений вне скобок правило предшествования сохраняется. Четвертый пример на рис. 5.2 показывает, каким образом скобки могут быть использованы для того, чтобы вычитание произошло раньше деления. На рис. 5.4 дана третья группа примеров арифметических переменных. Заметим, что в табл. 5.3 *, / и @ принадлежат общему уровню предшествования. То же относится к + и —. В обоих примерах рис. 5.4 присутствуют два или более операторов с общим уровнем предшествования. Возникает вопрос: какие операции будут выполняться первыми при равенстве уровней предшествования? Для ответа на этот вопрос используется правило распутывания связей. Это правило утверждает, что внутри уровня предшествования операции выполняются слева направо. Величина VgFRITZ определяется следующим образом. 1. Умножить PR на 4. 2. Разделить Р10 на SCfsFIXIT, оставив целую часть частного в качестве результата. 3. Вычесть из результата шага 1 результат шага 2. 4. Прибавить 2 к результату, полученному иа шаге 3. 5. Результат шага 4 есть величина V$FRITZ. jMUt-j. !>PEHA»lON ^•ТОпКПйГнр ViA.e.lAB.1.,,-, .1. fUkTHX [VAB-liA^LE. . ■ |lAB.Htgfl|l.ft ■ JeUJi£E t.B.CO.E.F "№' laH^I^I>,lal^l>lMlMrMlMl"l'1H>^F°R,2:<il<<l,il't,l<*M>0h' i"H",*>i*|*|»|"fe •i T i < 11 * i 1 ВТОРОЙ ' ПРИМЕР !_+_: J—I—1_ ■ ■ ' ' 1 i —i ■ — , j ТРЕТИЙ, j ПРИМЕР T Рис. 5-3. Второй набор примеров арифметических переменных 249 i t- РЛАО.*/|5 ПЕРВЫЙ i ПРИМЕР ! . Г^ГПМ.А/ IJt i i i I -,' ■ i I ■ | I , . . . ... [ | г ■ | . j i i I ._i_J 1 ' [III!
jIj'.OI ill? U^< lb Л I'.К I . i ! i.: ai- |'м|г-|»»|нЬ«*игк JEIJJ.Z JIS.CRI IvAMXMI, . , |C,t./.l,OiO|*1ftO, , A,e,c,D.e f i i i|jz;>i M|«|M|>4M|3ijw|«i|«jj«j[w|»^6|<f|<e «<|>»я |»|ц»|»у»|у[я|»]« ПРИМЕР t A Д_^ J..1-1 l_ ПЕРВЫИ д.. 1 . _ — .. 1 ВТОРОЙ _ I . J ПРИМЕР Рис. 5.4. Третий набор примеров арифметических переменных Аналогично, величина V$USCHI находится следующим образом. 1. Разделить С1 иа 100, приняв в качества результата целую часть частного. 2. Умножить результат шага 1 на 100. 3. Результат шага 2 является величиной VJUSCH1. Заметим, что величина VIUSHI равна С1 только тогда, когда О делится нацело на 100. Например, если О равно 400, то 400/100*100 равно 400. Таким же образом, если О равно 2700, то 2700/100*100 равно 2700. Если же С1 равно 425, то 425/100*100 равно 400, а не 425. Точнее, 425/100 равно 4, а не 4,25. 5.2.6. Целые и действительные переменные Переменные, рассмотренные ранее в этом параграфе, называются целыми, потому, что их величины подсчитываются с использованием арифметики, применяемой к целым числам. В GPSS можно определить и действительные переменные (т. е. переменные с плавающей запятой). Что касается нх определения, то действительные переменные отличаются от целых только тем, что в поле операции карты определения переменной стоит слово FVARIABLE, а не VARIABLE. Что же касается их вычисления, то интерпретатор QPSS определяют величину действительной переменной следующим образом. I Если для косвенного определения данных, используется функция, то берется ее полное значение. Дробная часть, если таковая имеется, не отбрасывается. 2. При использовании операции деления (/) дробная часть частного, если она есть, не отбрасывается. 3. При пошаговом вычислении выражения, определяющего переменную, используется обычная арифметика (т. е. арифметика с плавающей запятой). Это означает, что все дробные величины, возникающие в промежуточных вычислениях, сохраняюгея в течение всего вычисления. Только после того, как определено окончательное значение выражения, его дробная часть отбрасывается, и в качестве величины действительной переменкой берется его целая часть. При определении действительных переменных не может быть использована операция деления по модулю @. Константы, используемые в арифметических выражениях, также должны быть целыми. В выражении, определяющем переменную, нельзя использовать десятичную точку. Среди всех стандартных числовых атрибутов только у функции используются полные значения при подсчете действительных переменных; так, только целая часть табличного среднего (ТВ/ или ТВ$ имя) и табличной дисперсии (TD/ или TDS имя) будет использована при подсчете величины действительной переменной. Наконец, следует отметить, что действительные переменные целочисленны. Несмотря на перечисленные ограничения, действительные переменные используют в моделировании на GPSS. На рнс. 5.5 показаны два таких применения. В первом примере величина V$AVG формируется суммированием текущего содержимого очередей 1, 2 и 3 с последующим делением на 3 и прибавлением 1/2 к этому промежуточному результату. В результате величина действительной переменной AVG есть целая часть округленного среднего текущего содержимого очередей с номерами от 1 до 3. Округление происходит потому, что к истинному среднему содержимому добавляется 0,5 (т. е. 1/2) перед тем, как отбрасывается дробная часть для получения окончательного результата. Предположим, например, что Ql, Q2 и Q3 равны соответственно 5, 7 и 2. Тогда ях сумма равна 14. Если разделить ее на 3, получится 4,66666 +. После того, как к этому промежуточному результату будет добавлено 0,5, величина этого выражения будет равна LOCA40N TTVTTTi|s Ч OPI WTIQN ■!'ЕЖЭ -ШМ». I. _ EJCA&l ABLE. .ДОДЖ. >.vau;able A.B.C.D.t.F 1Д1,.ми4ад)./,341У,1 t > > " I t ! ' I ПЕРВЫЙ ' ПРИМЕР I , i 1 I I I 1 I j— ' ■ I ' • ■ - • I I I I I * ам»мф.>ди.«. ; I ВТОРОЙ, ! ПРИМЕР-; 1 ' ■ ■ ' Рис. 5.5- Два примера действительных переменных 250
5,16666 +. Таким образом, величиной V$AVG будет целая часть, а именно 5. Если бы AVG была определена как целая переменная, то ее величина в данном примере была бы равна 4. Во-первых, сумма 14, деленная на 3, была бы равна 4. Во-вторых, величина 1/2 была бы равна 0. Окончательный результат, таким образок, был бы равен 4 -(- 0, т. е. 4. Фактически, в целых переменных величина +1/2 или —1/2 в определяющем выражении никогда не вносит вклада в конечную величину перемешюйГ. Рассмотрим теперь второй пример на рис. 5.15. Предположим, что FN&XPDIS является обычной 24-точсчной непрерывной функцией, .задающей экспоненциальное распределение с математическим ожиданием, равным 1. Если случайная величина, являющаяся выборкой из этого распределения, умножается на 50, то результатом является случайная величина, выбранная из экспоненциального распределения со средним 50. Эта переменная, таким образом, дает возможность имитировать пуассоновский поток поступления в блоке GENERATE или экспоненциальное обслуживание в блоке ADVANCE. Для переменной DRAW, определенной на рис. 5.5, блоки «GENERATE 50, FNfXPDIS» и «GENERATE V$DRAW» полностью эквивалентны. Аналогично, эквивалентны блоки «ADVANCE SO.FNigXPDIS» и ADVANCE V$DRAW». Рассмотрим, что бы случилось, если бы переменная DRAW на рис. 5.5. была определена как целая. Тогда на 50 умножалась бы только целая часть FNjjiXPDIS. Рассмотрение 24-точечной функции XPDIS показывает, что в 65% случаев ее целая часть равна 0. Это означает, что V$DRAW имела бы значение, равное 0 в 65% случаев. Ясно, что эти величины нельзя считать выборками для экспоненциального распределения со средним 50. Как видно из примеров, ссылка па действительные и целые переменные производится одинаково, т. е. на оба типа переменных ссылаются с помощью V/ или У^имя. Поэтому они не могут иметь одинаковых имен в одной модели. Если целая переменпая имеет имя ZELDA, то в этой же модели не может быть действительной переменной с именем ZELDA и т. п. В следующем параграфе обсужден метод, принятый в GPSS для выборки из нормального распределения. 5.3. Выборка из нормального распределения В параграфе 3.13 были введены пуассоновские и экспоненциальные случайные величины, показано взаимоотношение между ними и разра- ; ботана методика моделирования пуассоновского поступления и экспоненциального обслуживания в GPSS-моделях. Ниже будет проделана аналогичная работа для другой очень важной, хорошо известной случайной величины, распределенной по нормальному закону. Случайная величина с нормальным распределением полностью оинсываегся задачием двух значений: математического ожидания (или среднего) и стандартного отклонения. Пуассоновские и экспоненциальные случайные величины в отличие от нормальных полностью описываются заданием только одного значения. По определению, нормированная случайная величина с нормальным распределением имеет математическое ожидание, равное 0. и стандартное отклонение, равное 1. Ненормированная или произвольная нормальная случайная величина не всегда имеет математическое ожидание, равное 0, и (или) стандартное отклонение, равное 1. Как правило, нормальные случайные величины, представляющие интерес, являются ненормированными. Для того чтобы сделать выборку из ненормированного нормального распределения, удобно вначале осуществить выборку из нормированного нормального распределения и произвести арифметические действия с полученной величиной, преобразуя ее в ненормированную. В уравнении (5.1) дано соотношение между нормированной выборкой и ее ненормированным эквивалентом: GNORMHue - (GNORMc.ac) (SNORMUU<s) + + GNORMM.(nK, (5.1) где SNORM,^ — величина, выбранная из нормированного нормального распределения; GNORMc.OT и GNORMn.o* — соответственно стандартное отклонение и математическое ожидание интересующей пользователя произвольной нормальной случайной величины. Если можно найти способ определения случайной величины SNORMnbie, то подсчитать правую часть уравнения (5.1) с помощью арифметической неременной просто. Такую переменную можно затем вычислять всякий раз, когда потребуется другая точка, принадлежащая соответствующему нормальному распределению. Как указывается в любом учебнике по математической статистике, случайная величина для нормированного нормального распределения может быть найдена из решения уравнения SNORMBbl6 RN' = J ТЁГ*' (52) -со где SNORMflu6 — верхний предел интегрирования; RN/—случайная величина любого из восьми равномерных распределений от 0 до 1, имеющихся в GPSS.
Рис. 5.6. График фуихыии, используемой для нахождения выборки из нормированного нормального распределения Уравнение (5.2) нельзя решить аналитически для нахождения точного значения SNORM,,^ для RN/. Как следствие, величины SNORMBbl<5, определяемые из уравнения (5.2) для различных RN/, необходимо протабулировать*. На рис. 5.6 показана получающаяся зависимость между RN/ и SNORMHU6. Кривая на рис. 5.6 может быть аппроксимирована с помощью непрерывной функции в GPSS, составленной из соответствующих ей прямолинейных сегментов. Она состоит из 24 сегментов. На рис. 5.7 показано определение непрерывной GPSS-функшш, состоящей из 25 пар точек, используемых для аппроксимации2, функция имеет символическое имя SNORM. В качестве 1 Существует несколько возможностей для осуществления такого табулирования. Например, можно исходить из величии RN/. Тогда, используя технику численного интегрирования с последующим методом проб и ошвбок, можно определить такую величину SNORMBblC. для которой правая часть уравнения (6.2) будет равна выбранному значению BN/. 3 Величины на рис 5.7 взяты из публикации IBM «Интерпретатор I! общецелевой системы моделированию, документ номер Н20-6Э46. аргумента функции был произвольно выбран RNI. Заметим теперь, что хотя величины SNORMBue, удовлетворяющие уравнению (5.2), могут лежать d пределах от минус бесконечности (для величин RN/, стремящихся к нулю) до плюс бесконечности (для величин RN7, стремящихся к единице), величины, взятые для FN$NORM (рис. 5.7), могут меняться только в интервале от —5 до 5. Ввиду других неточностей, возникающих при моделировании, небольшое расхождение, возникающее при использовании функции на рис. 5.7, аппроксимирующей решение уравнения (5.2), в большинстве случаев является приемлемым. Предположим теперь, что время между поступлениями требований на склад распределено по нормальному закончу с математическим ожиданием 12 ч и стандартным отклонением 2 ч. Пусть транзакт представляет собой требование и за единицу времени в модели принимается 1 ч. На рис. 6.8, а представлен блок GENERATE, имитирующий процесс поступления требований, а на рис. 5.8» б — переменная GNORM, используемая в операнде А блока GENERATE. Предполагается, что функция SNORM определена на рис. 5.7. Согласно уравнению (5.1), величина переменной GNORM определяется с помощью выборки нормированного нормаль-- ного распределения, определенного функцией] SNORM, умножением этой величины на 2; (стандартное отклонение ненормированного распределения) и прибавлением 12 (математическое ожидание ненормированного распределения) к полученному произведению. Таким образов всякий раз, когда транзакт выходит из блока GENERATE (рис. 5.8, а) интерпретатор случайным образом определяет величину времен! выхода следующего транзакта способом, удовлетворяющим уравнениям (5.1) н (5.2). В качестве другого примера предположим, чи время обслуживания в некоторой точке модем имеет нормальное распределение и что матема тическое ожидание и стандартное отклонен» в действительности зависят от типа осуществлю ■рЕ'Е i .5,Л JP,6i6i8,1 •-Д4.4Д» JsiTiajj QffEBATlQM iltjioiillifjijnjisjlijujl ^^|Гг|г)р«)г^|г'|»|^ир}и|ир<;>^ I I ' l I . ! I a._i.xj I i i-i-L k I. l~i I— J _ J 1-.4 L 0,0Al,_-.4iAuuO 1.3.5.....3j/...fta.6.a)i,..-|7...^/,.ihUiZjSt, -X. ■ b,.J./^iLl.*tt7f_-iti.ai/^i1iSJi*i4l/-ili/i.,2lLLeieui.---AZ1.jlJi«i2ib.i -t-!A. I I I I I I ,.,4,/.4,2 0.7,4.■ .,.Л,/..А,.А/,.Л,7\9Л.Ь1. .paj/..lA.S.y.4|g1,l..4, | , лЛаД7,1 x ^^jrjejLli^.LL. »iA^Ii4,l£i4i. ili/i .JlJLAa3uJba2i/,.,9]3i3:li»i,,llu5, i .i_i., ■ ■ ■ ■ l./..i9SA7Au&, Si/i,A3A6J<i,AAj91a&9i7i'l4,/,L±J5. '^ ^ : ' . I i i I I I , -l-J—l. I _ U, I I I I I I Рис. 6.7. Непрерывная 25-точечная GPSS-функция, используемая Для нахождения выборки из нормированного иормая ного распределения ; 252
GENERATE ^ VSGNORM *) LOCAllON ' » 1 * » » И _JZHQAM -f- • 4|io.'ii|e|u|i«|n|i(ii it OPERATION F.VAUJAJUJb-.. I -H- *,e,c,o,t,f л >ф|[кЦг4|к|5р^й|г«|и|>||я|ы]и|я|»|] i~i _i.: I i i i I i . -r-1- ■■■'■- «> Pec 5.8. Пример, показывающий, каким образом в GPSS можно моделировать нормально распределенные интервалы между поступлениями: а —1вяок CENERATH, в котором моделируютс» нормально распределенные времена между поступлениями; 6 — определение действи- техмов r.tpeueexoft, используемой в блоке GbNLRATE , ного обслуживания. В табл. 5.4 показаны соответствующие математические ожидания и стандартные отклонения для трех различных типов обслуживания, которые могут потребоваться. Предположим, что тип обслуживания, необходимый траизакту, записан в его четвертом параметре. На рис. 5.9, а представлен блок ADVANCE, в котором имитируется время обслуживания. На рис. 5.9, б показаны определения функции и арифметической переменной, обеспечивающих функционирование блока, изображенного на рис. 5.9, а. Соотношение в уравнении (5.2) выражается переменной с символическим именем SERVE (рис. 5.9, б). Эта переменная, в свою очередь, всякий раз, когда транзакт входит в блок ADVANCE, обращается к функциям MEAN и STDEV для обеспечения нужного математического ожидания и стандартного отклонения. Эти функции в качестве своих аргументов используют величину Р4 активного транэакта. Табпда 5.4. Определение нормально распределенных задержек Тип обслуживания 1 2 3 Корчллыю распределенные нремгна обслуживания, мни. при отклонении среднем 30 20 36 стандартном 5 3 6 В заключение необходимо отметить три особенности выборки из нормального распределения в GPSS. 1. Математическое ожидание и стандартное отклонение, характеризующие нормальное распределение, вводятся в определение переменкой прямо или косвенно. Могут быть определены несколько таких переменных в зависимости от числа выборок из нормального распределения, вводимых в модель, и от контекста, в котором эти выборки используются. 2. Если определяется переменная, с помощью которой будет производиться выборка из нормального распределения, в поле операции карты определения переменной должно стоять слово FVARIABLE. Использование слова VARIABLE будет означать, что при промежуточных вычислениях у величин, взятых в качестве выборки из нормированного нормального распределения, будет оставлена только целая часть. Это, в свою очередь, приведет к неверному результату при подсчете ненормированных величин. 3. Наименьшее значение, принимаемое функцией SNORM (см. рис. 5.7), равно —5. Если математическое ожидание данного нормального распределения меньше умноженного на 5 стандартного отклонения, большего нуля, то из уравнения (5.1) следует, что соотвегствующее значение выборки из распределения может стать отрицательным. Это согласуется с тем, что нормально распределенные величины могут находиться в пределах от минус до плюс бесконеч. ADVANCE VSSERVE I '.OCA HON .'['(•Hi!! ШАЫ SJJL&tf UA££*| JMAyj гааш »[.'..Э,0/Л л 2.0^3^4, FUWCT|l,QN , /з..* • ■ ■ ■ ■ «,B.C,0,E.F 'эБал !я !)Ъ«Ык|.'>Ы?ч1» Я"["|нЫй I, 4СИ1 «П«~4|«£рЭй FilHGULON : . |Р.»г.р.з. ' . i uj.iU.^.j. I - I -t-U.t. { I ' ' * i i i l * I i j 1 J J I J t '- M:f,Pi3i Ll • j. i ., ; i i —I i j ' l l i i i I I I I I I • I I L_J I i . tVAi. tAMib. i_ LNL<iSJl0IE.y^F.«4<lslN,OI>M-t-fN,iMCAU , , ,'■ «) Pie. 6.9. Пример, показывающий, каким образом в GPSS можно моделировать нормально распределенные времен а задержки: • -блок ADVANCE, в котором моделируются нормально распределенные времена задержки; б — определение действительной пере- Mlfot, используемой о блоке ADVANCE, it функций, используемых а действительной переменкой 253
ности. Однако на практике может оказаться, что величины, определяемые как распределенные нормально, имеют смысл лишь в том случае, когда они неотрицательны. Например, отрицательные времена между поступлениями и отрицательные времена обслуживания лишены смысла. Следовательно, в подобных случаях программист должен быть уверен, что математическое ожидание по крайней мере в 5 раз больше стандартного отклонения, большего куля. Если это условие не выполняется, следует пересмотреть предположение о том, что случайная величина подчиняется нормальному распределению, ограниченному =£5 стандартными отклонениями от математического ожидания. 5.4. Упражнения ]. Определите величины, обозначенные VAR1, VAR2, VAR3 и VAR4, определенные в табл. У1, предполагая что текущее значение WSRUTE6 равно 7. Таблица У1 Имя VAR1 VAR2 VAR3 VAR4 Операция VARIABLE VARIABLE VARIABLE VARIABLE Операнды W$RUTE/5 W$RUTE6 @5 2o/W$RUTE6 W$RUTE6/25 2. В чем различие целых и действительных переменных в GPSS? В чем они схожи? 3. Определите переменные, принимающие следующие значения: а). Сумма емкостей многоканальных устройств TUGS и SLIPS. б). Округленное среднее значение текущего содержимого очередей 5, 7 и LONG. в). Случайная величина, выбранная из экспоненциального раеггределеикя с математическим ожиданием, равным 75. г). Случайная величина, выбранная из нормального распределения с математическим ожиданием, рапным 10, и среднеквадратичным отклоненном, равным 2. д). Целая случайная величина, выбранная из равномерного распределения целых чисел ог О до 15 включительно. с). Целая случайная величина, аыбранная из равномерного распределения целых чисел от I до 15 включительно. ж). Целая случайная величина, выбранная из равномерного распределения целых чисел от 7 до J8 включительно. з). Целая случайная величина, выбранная из равномерного распределения целых чисел от 1 до Р2 включительно (какой транзакт будет обеспечивать величину Р2?). 4. Определите переменную, являющуюся функцией приоритета согласно закону, определенному в табл. У4 (какой транзакт будет обеспечивать величину PR?) Таблица У4 PR 1 2 (или более) Величина nrpvMcn uoi| I PR—1 5. В зависимости от того, является ли величина седьмого параметра равной 1, 2, 3 или 4, время задержки транзакта в блоке ADVANCE определяется случайной выборкой из нормального распределения математическим ожиданием и стандартным отклонением, соответственно равными (20; 3), (35; 4), (30; 4) и (25; 2). Покажите блок ADVANCE, в котором будет имитироваться это время задержки. Дайте также определения переменных и (или) функций, необходимых для функционирования этого блока. 6.а). Пользователь определил действительную переменную ALPHA с помощью выражения (Р2 -г Р5) * 0,4 * R$TUG. Это выражение; вызовет сообщение об ошибке. Почему? б). Напишите правильное выражение, при-; водящее к результату, которого добивался поль-j зователь в п. а. ! в). Покажите, каким образом в блоке; ADVANCE, использующем модификатор размаха, можно сделать размах равным 75% среднего времени задержки. Предположите, что среднее является величиной, записанной в первом параметре транзакта, входящего в блок ADVANCE. 7. Действительная переменная BETA определена выражением 2*FN$SNORM 4- 9, где функция SNORM определена на рис. 57.. Почему может возникнуть ошибка, если включить в модель блок «ADVANCE V$BETAi? По приложению С определите, какое именно сообщение об ошибке будет выдано. 8.а). Необходимо назначить пятому параметру /-го транзакта, поступающего в точку А ./модели, значение, равное /, для /-■=-• 1, 2, 3.., Покажите, как это можно сделать. (Указание: стандартный числовой атрибут «счетчик числа входов в блок» увеличивается на единицу после выполнения подпрограммы, соответствующе! блоку. Например, первому транзакту, входя! щему в блок «HERE ASSIGN 3,N$HEREJ в качестве значения третьего параметра будея назначена величина, равная нулю, потому чтя в момент вычисления величина N$HERE имеея
значение, равное нулю. Третьему параметру второго транзакта, вошедшего в этот блок, будет назначена величина, равная единице; для третьего транзакта, вошедшего в тот же блок, эта величина будет равна двум, и т. д.) б). Пятому параметру /-го, (J -,- 10), (/ + 20) и т. д. транзакта, поступающего в точку А модели, следует назначить величину / для /' = = 1, 2, 3, ..., 8, 9 и 10. Покажите, как это можно сделать. 9. Покажите, каким образом можно использовать только блок GENERATE для ввода транзактов в модель согласно определению в упражнении 5а параграфа 2.35. (Указание: последовательность времен между поступлениями: 1, 3, 6, 4, II, 3, б, 4, 11, 3, 6, 4, 11... Построить функцию, циклически вырабатывающую величины 3, б, 4, 11.) 10. Объясните, что произойдет при входе транзакта в блоки: а) SELECT G 10, 1, 5, 25, V; б) SELECT МАХ РЗ, Р1, Р2„ V; в) SELECT NE 6, 10, 12, 0, V, NOGO. 11. В GPSS в большинстве случаев, если данные вводятся косвенно через функцию, используется только целая часть величины этой функции. Из этого утверждения есть четыре исключения. Какие? 12. а). Почему возникает ошибка при следующем определении переменной ALPHA: «ALPHA VARIABLE — R$JOE + 25»? б). Если величина Р4 равна нулю, чему будет равна величина переменной BETA, определенной так: «BETA VARIABLE (Ql + Q2)/P4»? в). Почему возникает ошибка при следующем Леделении переменной GAMMA: «GAM- * VARIABLE (W$BLOKA + +W$BLOKB)/(—2*P2)»? г). Почему переменная DELTA, определяемая так: «DELTA FVARIABLE (Q$ONE + 4- Q$TWO + Q$THREE)/3 + V2) @ 5», является ошибочной? 5.5. Сохраняемые величины. Карта INITIAL (ИНИЦИАЛИЗИРОВАТЬ) И БЛОК SAVEVALUE (СОХРАНИТЬ ВЕЛИЧИНУ) В этой главе будут сняты ограничения при моделировании на GPSS, которые упоминались в параграфе 5.1, и будет описана возможность производить вычисления в рамках языка. Вначале следует отметить несколько ограничи- 1 тельных черт, присущих описанным до сих пор 'моделям, и выяснить, каким образом обойти 'фк ограничения. [' Ниже даны ограничения, накладываемые на «рассмотренные до сих пор модели. 1. Единственными способами ввода исходных данных в модели были прямое их определение в качестве операндов блоков или задание их упорядоченными парами в определениях функций. 2. Константы, используемые в качестве операндов блока, не могут занимать более шести столбцов на перфокарте. Таким образом, наибольшая возможная величина для операнда блока, определяемого прямым образом, есть 999999. 3. Транзакты не .могут непосредственно «говорить друг с другом» или «говорить друг о друге». Так, трапзакту, вошедшему в блок ASSIGN, нельзя в качестве какого-либо его параметра присвоить значение, равное Р5 некоторого другого транзакта. Аналогично, в блоке SELECT, работающем в режиме MIN, транз- акт не может запросить, «какой из транзактов, ожидающих в блоке с именем BLOK9, имеет наименьшую величину параметра РЬ. 4. Не существует прямого способа распечатывания значений переменных. В конце прогона эти значения не подсчитываются и не выдаются интерпретатором; более того, величины отдельных переменных ие могут быть распечатаны в период прогона использованием блока PRINT. Все эти ограничения могут быть устранены использованием постоянных ячеек памяти, начальные значения которых могут быть назначены перед моделированием и к которым можно обратиться из любого места модели во время прогона. Эти ячейки называют сохраняемыми величинами. В GPSS они являются стандартными числовыми атрибутами. В отличие от параметров транзакта, приоритета и отметки времени, теряющихся в момент выхода транзакта из модели, сохраняемые величины не исчезают на протяжении всего процесса моделирования. В отличие от таких стандартных числовых атрибутов, как FR/, QQ, 5/ и т. п., их величины не подсчитываются чнтерпретатором. Сохраняемые величины изменяются только при прямом указании пользователя. Ниже будут рассмотрены соответствующие свойства сохраняемых величин. Далее будет описан способ установки их значений перед началом прогона и изменения этих значений в течение процесса моделирования. В заключение будет рассмотрено воздействие на сохраняемые величины карт RESET и CLEAR. 5.5.1. Свойства сохраняемых величин Пользователь должен снабдить числовыми и (или) символическими именами используемые им сохраняемые величины. Возможны как полу- словпые, так и нолнословные сохраняемые величины. Их максимальное число при объеме
памяти 64К байт равно соответственно 50 и 100 (см. приложение F). Таким образом, яри памяти 64К целые величины в интервалах от 1 до 50 я от 1 до 100 полностью исчерпывают числовые имена соответственно для полнословных и полусловных сохраняемых величин. Значения сохраняемых величин являются целыми числами со знаком плюс или минус. Полусловные сохраняемые величины находятся в пределах от —32 768 до +32 767 включительно. Полнословные сохраняемые величины могут находиться в пределах от —2147483648 до +2147483647 включительно. Общее название полусловных сохраняемых величин — ХН, полнословных — X. Таким образом, для ссылки на полусловные и полнословные сохраняемые величины используют соответственно обозначения ХН/ (или ХН§ имя) и X/ (или Х$ имя). Например, ХН1 — ссылка на полусловную сохраняемую величину 1, XI— ссылка на полнословную сохраняемую величину 1; XH$SARAH — ссылка на полусловную сохраняемую величину SARAH и т. д. В качестве стандартных числовых атрибутов сохраняемые величины могут быть использованы для косвенного задания данных в поле операндов блока, а также как аргументы функций и таблиц. Например, в модели может быть использована такая карта определения таблицы: «SMITH TABLE XH3, —20,5,25». Всякий раз, когда транзакт входит в блок TABULATE, ссылающийся на таблицу SMITH, в таблицу будет заноситься текущее значение третьей полусловной сохраняемой величины. Аналогично, всякий раз, когда транзакт входит в блок «ADVANCE X3,XH$PRED», среднее время задержки будет определяться выборкой из равномерного распределения ХЗ =ь XH$PRED. Полнослов- ная сохраняемая величина 3 будет использована в качестве среднего значения распределения, а полусловная сохраняемая величина SPRED — в качестве модификатора размаха. В конце прогона автоматически распечатываются все не нулевые сохраняемые величины. Отдельные сохраняемые величины можно также вывести на печать во время прогона, используя блок PRINT. Это достигается введением X или ХН в качестве мнемонического указателя в операнде С этого блока. Например, если транзакт войдет в блок «PRINT 3,8,ХН», то будут выведены на печать полусловные сохраняемые величины с 3 по 8. 5.5.2. Карта INITIAL Обычно перед началом моделирования интерпретатор устанавливает значения сохраняемых величин в нуль. По желанию пользователя отдельным сохраняемым величинам могут быть присвоены ненулевые начальные значения ис< пользованием карты INITIAL. Формат карть показан на рис. 5.10. Поле имени не исполь' зуется. В поле операции ставится слове INITIAL. Основная единица информации в поле операндов представлена в форме «имя ,-, величина,», где нмя j — имя /-й сохраняемой величины, которой следует установить начальное значение, а величина / — желаемое начально? значение. Примерами основных единиц могут служить запись «ХНЗ, —450», «X$JOE,400000» и «ХН49,6». Обратите внимание на то, что имя состоит из общего имени X нли ХН, за который следует номер или символическое имя данного члена общего семейства. Величина в основной единице может лежать в пределах от —32768 до 1-32767 включительно для полусловных сохраняемых величин и от —2147483648 до +2147483647 включительно для полнословных сохраняемых величин. Имя Не нспаяъ- зуется Операция INITIAL Операнды Hmti, ueaK4HauJ...nHHjy величина у/ .../имяп, величина,, Рис. 5.10. Формат карты, задающей начальные значения сохраняемых величии Для разделения основных единиц в карте INITIAL используется знак «у». Внутри основных единиц н между ними нельзя ставить пробелы. Информация не может выходить за 71-й столбец карты. Если для установления начальных значений всех необходимых сохранявши величин не хватает места на одной карте, то необходимо использовать несколько карт) INITIAL. На рис. 5.11 приведено несколько примеров использования карты INITIAL для сохраняемых величин. В первом примере полнословноЯ сохраняемой величине TIMER присваивается начальное значение 1000000. Если бы было необходимо, чтобы в момент времени 1000000 лоявился «транзэкт-таймер» и закончил моделирование, то для этой цели можно было бы использовать блок «GENERATE Х$ТШЕЙ>. /Заметим, что использование блока .«GENERATE 1000000» недопустимо, так как в операнде А стоит величина, для записи которой требуется более шести столбцов карта. Когда интерпретатор на этапе ввода рассмотрит такой блок GENERATE, будет напечатаяо. сообщение об ошибке «избыточное число десятичных знаков в числовой константе», н моделирование выполняться не будет. Если в олеранде А я (или) В блока GENERATE стоят сохраняемые величины и их 256
LOCATION .1 I i • 1 ' ■ OPERATION * 1 o' l!i?]..'[•«.|>!*,|Г|» 1NJJLIA1o_l. XJTIME», lOftOOftO. . . , , , , 'NIT l>.l. 1JN.I.T.IAL. ^ < . IWITUL ., a.B.C.D.l F x.3, r -M- / X.K7»i -11,0,ЛХ,Н,4, J4Aa./,x»[a., i, первый! пример I 4_i_ HU.I.i;ai. ■ i i...y4.BJ.T.A,„2/,xa,>:3,/KtALlp,HA..,i./hf^...7. . X.H.2., ДЛХУ-fiS/iX.*,. »i/,aWi«i3>/JUixtt XHi2.>.3i/;x,7,-,X9...'5./,X.I,.,-|a.A. ..■'.. ВТОРОЙ) ЛРИМЕР1 третий; пример , ;ЧЕТВЕРТЫЙ| ПРИМЕР] ПЯТЫЙ | ПРИМЕР | -j. ■ ■ I I 1 ■ 1 ■ . ■ L J-»- J-L Рис. 5.11. Примеры использования формата карты, показанного иа рис 5.10 значении являются ненулевыми, то карты INITIAL нужно располагать в колоде пер«р*о- карт перед картами с блоками GENERATE. В противном случае при обработке интерпретатором карт GENERATE значения сохраняемых величии будут приняты равными нулю, и, следовательно, при моделировании возникновения первого транзакта в этих блоках GENERATE будут использованы нули. Рекомендуется все карты INITIAL, так же как и карты определения функций, емкости многоканальных устройств и карты определения таблиц, ставить в модели перед картами с блоками. Во втором примере на рис. 5.11 полнословной сохраняемой величине с номером 3 присваивается начальное значение 25; пол условной сохраняемой вечичине 7 — (—10); полусловной сохраняемой величине 4—452; полнословной сохраняемой величине 98—1. Этот пример показывает, что на порядок, в котором сохраняемые величины следуют в карте INITIAL, не налагается ограничений. Нет необходимости группировать полусловные илн полпословные сохраняемые величины; более того, нет необходимости располагать номера используемых сохраняемых величин в порядке возрастания. В третьем примере показано одновременное использование полнословных сохраняемых величии, имеющих как числовые, так и символические имена. Тем самым показана возможность совместного использования имен. Из четвертого примера видно, что полнословные сохраняемые величины 7, 8 и 9 принимают одно и то же начальное значение 5. Когда сохраняемые величины одного типа имеют одно и то же начальное значение, а их номера образуют последовательность идущих подряд целых чисел, то основная единица может быть выражена следующим образом: «имя ; — имя А, величина», где имя / и имя k — соответственно наименьший и наибольший номера сохраняемых величин, а величина — общее начальное значение. Другая форма записи четвертого примера показана в пятом примере на рис. 5.11. В заключение рассмотрения карты tNITIAL для сохраняемых величин следует отметить, что эта .карта не обеспечивает определения 17 Т. Дж. Шраабер ^*" по контексту для сохраняемых величин, имеющих числовое имя. (В этом можно убедиться, посмотрев приложение G). Когда интерпретатор обрабатывает карту INITIAL, приведенную в третьем примере рис. 5.П,тоон закосит имена BETA и ALPHA в список символических имен для полнословных сохраняемых величин, но не заносит 2и4в список числовых имен для полнословных сохраняемых величин. Это обстоятельство может привести к осложнениям (см. упражнение 2 из параграфа 5.7). 5.5.3. Блок SAVE VALUE Значение сохраняемой величины изменяется при входе транзакта в блок SAVEVALUE (СОХРАНИТЬ ВЕЛИЧИНУ). Этот блок с операндами А, В и С показан на рис. 5.12. Когда транзакт входит в блок SAVEVALUE, величина стоящая в операнде В, становится значением сохраняемой величины, номер которой С savevalue) т Рис 5.12. Блок SAVEVALUE и его операнды Л, В и С: Операнд Значение В С Номер или символическое имя изменяемой сохраняемой величины Величняа, используемая 8 процессе модификации Определяет, какому типу принадлежит рассматриваема» сохраняемой величина; буква II определяет полу- сливиый тип; отсутствие величины в поле С подразумевает ссылку »а полиослов- пую сохраняемую величину Результат по умолчанию Ошибка Подразумевается полнословиая ■ сохраняемая величина 1 Заметим, что в случае сохраняемых пеличпн ситуация пряло противоположна случаю определения параметров. Сохраняемые величины по умолчанию полнословиыо: для ссылки иа полусловные сохраняемые величины >< сшерлнд С, блока SAVEVALUF- необходимо вводить символ Н. Иорамгтры транзакта по умолчанию полуслоаиме; для получения полнословных параметров Для транзакта а операнде О. блока GITN|-RATH необходимо вводить символ F.
i 1 С SAVEVALl/E ^ fsAVEVALUE J P5.V5ALPHA T MARIE,TD$TIME3.H I 1 T Рис 5.13. Первый пример блока SAVEVALUE Рис 5Л4. Второй пример блока SAVEVALUE (или символическое имя) записан в операнде А. Как только транзакт входит в блок SAVEVALUE, . изображенный на рис. 5.13, прежде всего вычисляется величина переменной ALPHA. Полученный результат назначается полнословной сохраняемой величине, номер которой записан в Р5. При этом старое значение сохраняемой величины уничтожается. На рис. 5.14 приведен второй пример. При входе транзакта в блок SAVEVALUE стандартное отклонение таблицы TIME3 заносится в пол- нословную сохраняемую величину с именем MARIE. Подобно блоку ASSIGH, блок SAVEVALUE может быть использован как в режиме замещения величины, так и в режиме накопления и уменьшения. В режиме накопления предыдущее значение сохраняемой величины увеличивается на значение, стоящее в операнде В. В режиме уменьшения оно уменьшается на величину, стоящую в операнде В. Режимы накопления н уменьшения определяются введением соответственно знака плюс и минус перед запятой, разделяющей операнды А и В. Например, когда транзакт входит в блок «SAVEVALUE 5 -f-,X2», величина Х5 будет увеличена на Х2. Или, при входе транзакта в блок «SAVEVALUE DAVID—, FN$HOLD,H», величина XH$DAVID будет уменьшена на величину FN$HOLD. 5.5.4, Действие карт RESET и CLEAR на сохраняемые величины Значения сохраняемых величин не меняются при воздействии карты RESET. Использование карты CLEAR в обычном случае вызывает обнуление всех полусловных и полнословных сохраняемых величин. Это зачастую бывает неудобно, поскольку может означать повторение всего входного набора карт INITIAL перед новым этапом моделирования. Поэтому существует такая форма задания карты CLEAR, с помощью которой пользователь может оставить некоторые сохраняемые величины нетронутыми. Для того чтобы воспользоваться этой так называемой избирательной картой CLEAR, пользователю необходимо всего лишь перечислить в поле операндов этой карты имена тех сохраняемых величин, которые не требуют обнуления при выполнении операции очистки. В противоположность допущениям, разрешенным в карте INITIAL, на избирательную карту CLEAR налагают следующие ограничения. 1. Полусловные и полнословиые сохраняемые величины в карте должны быть сгруппированы по типам. 2. В каждом типе сохраняемых величин (т. е. полусловных или полнословных) номера сохраняемых величин, оставляемых без изменения, должны быть расположены в порядке возрастания. На рис. 5.15 показаны два примера избирательной карты CLEAR. В первом примере требуется, чтобы полнословиые сохраняемые ве- личины 3, 12 и 14 и полусловные сохраняемые величины от 1 до 5 и 9 не были обнулены при воздействии карты CLEAR. Второй пример аналогичен первому, за исключением того, что вначале следует определение полусловных, а затем полнословных сохраняемых величин. 5.6. Пример моделирования 5А. Третье обращение к примеру 2D 1. Постановка задачи. В примере 2D было рассмотрено моделирование операции сборки деталей для определения числа сборщиков, которых необходимо нанять для получения максимальной прибыли. В представленном решении для определения дохода, получаемого при каждом исследовании для заданного числа сборщиков необходимо было выполнить ручной расчет, основанный на результате моделирования. Модифицируем решение примера 2D так, чтобы выполнить следующие требования. I. Организовать для каждого случая выдачу на печать средней дневной прибыли. I LOCATION- R- OPERAT.CN J » 10 н-.в I» i« й|< II II ЕЕ !&LfiMLi.j XUAft A,B.C,O.E,F X3i.iJLlJj,*1AiJt|HJi-lXHaiultMJA_L_L . , , , , | ."ЕРВЫЙ j ПРИМЕР I , i , , , (X.KI,-,XH,l5...XK»,.;x,3...Xt.2|l,Jbl,4. ■ '■■■■■ ,' ВТ0Р0Й ) m»№\ ...,., Рис 5.15. Примеры, показывающие использование избирательной карты GLEAR 258
2. Сделать число моделируемых дней для каждой модели переменным с помощью сохраняемой величины. 3. В одном прогоне модели исследовать случаи с четырьмя, пятью и шестью сборщиками. В каждом случае промоделировать 40-часовую рабочую неделю. Предположить, что рабочий день непрерывен и промежутков между восьмичасовыми рабочими днями нет. Ниже повторено описание задачи- из примера 2D. Производство определенного типа деталей представляет собой сравнительно длинный сборочный процесс, за которым следует короткое время обжига в печи. Так как работа печи является дорогостоящей, с одной печью, в которой одновременно может находиться лишь одна деталь, работают несколько сборщиков. Сборщик не может начать сборку новой детали до тех пор, пока не вынет старую из печи. Каждый сборщик выполняет следующие действия: 1) сборку следующей детали; 2) ожидание возможности использования печи в порядке прихода сборщиков; 3) использование печи; 4) возврат к п. 1. Информация о времени выполнения и стоимости операций приведена соответственно в табл. 5А.1 и 5А.2. Таблица 5А.1. Время выполнения операций дм примера 5А Операция Оборка Обжиг Необходимое время, мне 30±5 8±2 Табянвд SAX Стоимостные даяние для примера БА Элемен» Зарплата сборщика Стоимость печи Цена материала Стайность готового изделия Стоимость 3,75 доллара в час 60 долларов за восьмичасовой рабочий день (независимо дуг степени использования) 2 доллара на одну деталь 7 долларов за деталь 2. Метод построения модели. Б примере 2D транзакт использовался для имитации сборщика. Нужное число сборщиков вводили в мо- 17* дель использованием ограничителя блока GENERATE (операнд D). Эта величина, в свою очередь, определялась непосредственно. В рассматриваемом случае ограничитель определяется косвенно с помощью полнословной сохраняемой величины GUYS. Это дает возможность изменять модель, переопределяя величину GUYS между соседними прогонами. Более важно то, что сохраняемая величина GUYS может быть также использована для определения средней дневной прибыли. Полнословная сохраняемая величина с именем TIMER используется в операнде А блока GENERATE; эта величина определяет, в какое время транзакт-таймер попадет в модель. Операнд В отсутствует, что означает нулевую величину. Таким образом, модельное время, в которое таймер войдет в модель, равно величине X&TIMER. Как указывается ниже, величина X$TIMER также используется в вычислительной части модели, участвуя в определении средней дневной прибыли. Средняя дневная прибыль равна 5 долларам, умноженным на среднее число деталей, производимых ежедневно, минус дневные расходы. Если в поле имени для блока «RELEASE OVEN» (освободить печь) стоит символическое имя MADE, то NSMADE будет числом деталей, сделанных за моделируемый период. Если предположить, что единица модельного времени равна 1 мин и что XSTIMER Делится нацело на 480, то величина XSTLMER/480 равна числу моделируемых дней. (В упражнении 4, д параграфа 5.7 снимается необходимость делимости XSTIMER нацело на 480). Предположим теперь, что для определения переменной DAYS используется выражение XSTIMER/480. Тогда величина 5*N$MADE/V$DAYS является средней дневной выручкой без учета расходов на печь и заработную плату. Из постановки задачи видно, что дневная стоимость использования печи равна 80 долларам. Так как сборщик зарабатывает 3,75 доллара в час, то его дневкой заработок за восьмичасовой рабочий день равен 30 долларам. Таким образом, общая дневная плата рабочим равна 30* X$GUYS. Среднюю дневную прибыль, таким образом, находят из выражения: 5* N$MADE/V$DAYS—80—30* X$GUYS. Предположим, что это выражепие используют для определения переменной с именем PROFT. Тогда, при входе в модель транзакта- таймера он может войти в блок SAVEVALUE, инициируя подсчет средней дневной выручки и занесение ее значения в сохраняемую величину. Когда моделирование - закончится, эта величина выручки будет включепа в распечатку сохраняемых величин, являющейся частью стандартного вывода результатов моделирования.
3. Таблица определений. Единица времени: 1 мин. Таблица 5А-3. Таблица определений примера моделирования Элемент QPSS Транзакты: 1-й сегмент модели 2-й сегмент моде- Лрнворыг OVEN Сохраняемые чины: GUYS TIMER Переменные: DAYS PROFT вели- 5А Интерпретация Сборщики Таймер Печь Число сборщиков Продолжительность моделирования для каждого исследуемого случая, мин Продолжительность моделирования для каждого исследуемого случая восьмичасовых дней Средняя дневная прибыль для исследуемого случая, долларов 4. Блок-схема. GENERATE l-xfevsn ADVANCE 30,5 (ВАСКЛ SEIZE I OVEN ADVANCE 8.2 (MADE)' RELEASE. X ;—7 OVEN V TRANSFFER <BACK) V ОПРЕДЕЛЕНИЕ СБОРЩИКОВ СБОРКА СЛЕДУЮЩЕЙ ДЕТАЛИ ЗАНЯТИЕ ПЕЧИ ИСПОЛЬЗОВАНИЕ ПЕЧИ ОСВОБОЖДЕНИЕ П£ЧИ ПЕРЕХОД К СЛЕДУЮЩЕЙ СБОРКЕ GENERATE x$timer| СSAVEVALUE J INDEX. V$PROFT т TERMINATE ПРИХОД ТАЙМЕРА ПОЛОЖИТЬ XfclNDEX РАВНЫМ СРЕДНЕ! ДНЕВНОЙ ПРИБЫЛ». ЗАКОНЧИТЬ ПРОГОН 2-Й СЕГМЕНТ МОДЕМ 1-Й СЕГМЕНТ МОДЕЛИ Ряс 5А.1. Блок-схема примера моделирования 5А 260
5. Распечатка программы. BLOCK NUMBEN TLOC OPERATION A.8.C.D.E.F.& SIMULATE COMMENTS SAVEVALUE INITIALIZATIONS) INITIAL X»GOT5,4/X*tVmER.2«00 a ASSEMBLERS! VARIABLE DEFINITION/IS) TIMER AT 4 0TH HOUR Days variable proft variable XSTIMER/A80 SIMULATION TIME IN DAYS &*N»MADE/V»OAYS-80-30*XSGUYS AVERAGE DAILY PROFIT MODEL SE&MtNT I 1 2 3 « s 6 6AC« MADE GENERATE ADVANCE SEIZE ADVANCE RELEASE TRANSFER ...XSGUVS 30, S OVEN 8.2 OVEN .BACK 7 e 9 MUOEL SEGMENT 2 GENERATE XSTIMER SAVEvALUE INDEX,VSPROFT TERMINATE 1 PROVIDE ASSEMBLERS ASSEMBLE NEXT WIDGET CAPTURE THE OVEN USE THE OVEN FREE THE OVEN GO OO THE NEXT ASSEMBLY Timer arrives set xsinoex « average daily profit shut off the run CONTROL CAROS AND SAVEVALUE RE-INfTIALIZATIONIS) START THE 1ST RUN <» ASSEMBLERS) RE-CONFIGURE FOR 2ND RUN SELECTIVELY CLEAR FOR 2ND RUN START THE 2ND RUN (6 ASSEMBLERS) RE-CONFIGURE FOR 3RD RUN START INITIAL CLEAR START INITIAL CLEAR START END 1 XSGUYS.S X»GUVS«XflTIMER 1 X«GUYS.6 XSGUYS.X6TIMCR I START THE 3RD RUN lb ASSEMBLERS) RETURN CONTROL TO OPERATING STSTEM Рис 6А.2. Распечатка программы примера моделирования SA ■ CARD мимаея 1 2 3 4 S 6 т 8 9 10 II 12 13 14 1» \Ь 17 18- 19 20 21 22 23 2* 25 26 27 26 29 30 31 32 33 а* 35 36 б. Выходные данные. FACILITY OVEN AVERAGE UTILIZATION .78» NUMBER' ENTRIES 236 AVERAGE TIME/TRAN 7.991 SEIZING TRANS. NO. 5 PREEMPTING TRANS. NO. CO-TENTS OF FULL-ORO SAVEVALUES «N°"-""° > SAVEVALUEJ*. VALUE ^Ш, V»L* NS. INDEX VALUE 35 VALUE i\
FACILITY OVCK AVCP.AGt UTILIZATION • 942 NUMBER ENTRIES го i AVERAGE IME/TRAN в. 053 SEIZING Trans, no. 6 PREEMPTING TRANS. NO. CONTENTS OF FULLWORO SAVEVALUES <NON-Z£RO> SAVEVALUE ■ NR» VALUE NR. VALUE NR. GUVS 3 TIMER 2*00 INDEX VALUE SO ■ VALUE t) FACILITY OVEN AVERAGE UTILIZATION .9Ъ9 NUMBER ENTRIES 296 Average TIME/TRAN в.ого SEIZING Trans, no» l PREEMPTING TRANS. N0. CONTENTS OF FULLWORO SAVEVALUES (NON-ZERO) » SAVEVALUE NR.' VALUE NU. VALUE NR * GOVS О TINE!» 2*00 1N0EX VALUE 35 NR, VALUE ,B> Рис 5А.З. Часть распечатки выходных данных примера моделирования 5А. Информация о приборе и сохраняемых величинах для четырех (а), пяти (б) и шести (в) сборщиков 7. Обсуждение. Использование модели. В расширенной распечатке программы на рис. 5А.2 карта 5 — карта INITIAL используется для того, чтобы присвоить полнословным сохраняемым величинам GUYS и TIMER значения 4 и 2400 соответственно. Это согласуется с первой моделью, когда в ней находятся четыре сборщика и транз акт-таймер входит в модель по истечении 40 ч (т. е. 2400 мин) модельного времени. Карты 9 и 10 на рис. 5А.2 определяют соответственно переменные DAYS и PROFT. Заметим, что интерпретатор должен вычислить переменную DAYS в качестве одного из этапов вычисления переменной PROFT. Когда транзакт-таймер входит в модель, он поступает в блок SAVEVALUE, в котором вычисляется величина переменной PROFT и затем присваивается сохраняемой величине с- именем INDEX (блок 8). Затем транзакт- таймер переходит к блоку TERMINATE (блок 9), заканчивая моделирование. После первой карты START (карта 29, рис. 5А.2) следует карта INITIAL, присваивающая сохраняемой величине GUYS новое значение 5. Тем самым заканчивается переопределение модели для случая пяти сборщиков. Следующая карта (карта 31) является избирательной картой CLEAR, которая обнуляет все величины (за исключением сохраняемых величин GUYS и TIMER), возвращает все транзакты в пассивный буфер и планирует прибытиетранз- акгов в двух блоках GENERATE. Карта START, следующая за ней (карта 32), инициирует начало моделирования для новой модели. Аналогичная последовательность карт INITIAL — CLEAR — START следует затем для обеспечения конфигурации с шестью сборщиками (карты 33, 34 и 35). Распечатка результатов. Общее время моделирования на ЭВМ/IBM 360/67 составило 12,5 с. Статистика для прибора и значения сохраняемых величин, выведенные моделью, показанной на ' рис. 5А.2, приведены на рис. 5А.З. Статистика для прибора для всех трех случаев в точности повторяет результаты, приведенные в параграфе 2.34, где карта CLEAR была введена впервые, а затем использована для этой же задачи в случае четырех, пяти и шести сборщиков (см. рнс. 2.37 и 2.38). Поскольку сохраняемые величины GUYS, TIMER и CLEAR обрабатывались интерпретатором в модели рис. 5А.2 в порядке перечисления, их значения на рис. 5А.З распечатываются s том же порядке. В информации о сохраняемых величинах на рис. 5А.З, а, например, под столбцом, Обозначенным NR (от NUMBER — номер), стоят. GUYS, TIMER и INDEX. Справа от каждого столбца NR в столбце, обозначенном VALUE, печатается значение соответствующей сохраняемой величины. Следовательно, GUYS имеет зпачение 4, TIMER — значение, равное 2400, и INDEX — значение 35 (рис. 5А.З, а). Это означает, что для случая с четырьмя сборщиками по результатам моделирования в течение 2400 мин средняя дневная 262
.выручка составила 35 долларов. На рис. 5А.З, 6 и е соответственно указана дневная выручка в 50 и 35 долларов для случаев пяти и шести .сборщиков. '5.7. Упражнения "у J. Это упражнение состоит из небольших вопросов, касающихся сохраняемых величин. . а). Найти сходство и различия между сохраняемыми величинами и параметрами. р б). В чем разница между XI и ХН1? ' в). Показать, какой должна быть карта INITIAL, которая присваивает полнословным сохраняемым величинам 3, 5 и MACRO значения 25, 75 и 40 соответственно и полуслозным сохраняемым величинам с 1-й по 5-ю значе- ■кне 100. .. г). Показать карту CLEAR, которая не меняет значения пол условных сохраняемых величая 1 и 5 и полнословных сохраняемых величин Д, 5 и 6 и обнуляет все остальные сохраняемые величины. *. д). Почему ошибочен блок «ADVANCE 4500000»? Каким образом' можно избежать этой сшибки? 2. а). Пользуясь приложением G, сформулировать условия, при которых во время фазы ввода модели в поименный список номеров для «охраняемых величин вносятся добавления. б). Предположим, что в некоторой модели «пользуется карта INITIAL, показанная ?|третьем примере на рис. 5.11. Предположим, jfio эта карта INITIAL для сохраняемых вели* Щв единственная в модели и что пользователь требует (как логически подразумевает карта INITIAL), чтобы BETA, 2, ALPHA и 4 были 1ЧНЫМИ полнословными сохраняемыми ииами; то должно быть предусмотрено в модели аполнения этого требования? лисать модельные условия, при которых претатор отождествит полнословную няемую величину BETA с сохраняемой иной 2; лисать модельные условия, при которых претатор отождествит полнословную няемую величину ALPHA с сохраняемой шей 2. J некоторой модели используется блок ERATE X$MEAN, XSSPRED». После- вльно нужно изучить два различных слу- причем сохраняемые величины MEAN iD должны иметь во втором случае значе- отличные от значений, которые они имели IBOM случае. Объяснить разницу в трех дсвательностях управляющих карт, по- 1ных ниже в пп. а, б и в. Какая последова- ость правильна и почему? (Указание! еще раз посмотрите в параграфе 2.34 действие карты CLEAR) а) START 1 CLEAR INITIAL X$MEAN,60/X$SPRED,30 START 1 б) START 1 CLEAR X$MEAN,X$SPRED INITIAL X$MEAN.60/X$SPRED,30 START 1 в) START 1 INITIAL X$MEAN,60/X$SPRED,3O CLEAR X$MEAN,X$SPRED START I 4. Все указанные ниже вопросы относятся к примеру 5А. а). Использовать статистику для прибора на рис. 5А.З для вычисления (вручную) средней дневной прибыли соответственно для случаев четырех, пяти и шести сборщиков. Совпадают ли ваши результаты с результатами, приведенными на рис. 5А.З в информации о сохраняемых величинах? б). Показать, каким образом из модели рис. 5А.2 можно исключить переменную DAYS. в). Показать, как можно построить модель для примера 5А, использующую только сохраняемую величину INDEX и не использующую других сохраняемых величин. г). Изменить модель рис. 5А.2 так, чтобы каждый результат для средней дневной прибыли базировался на моделировании в течение десяти, а не пяти рабочих дней. В построенной модели сделать то же изменение, что и в п. в. Сколько карт следует изменить в каждом случае? Используя в качестве- меры сравнения число измененных карт, сказать, какая модель является более гибкой. д). В модели на рис. 5А.2 предполагаем, что величина X$TIMER делится нацело на 480. Показать, как модифицировать модель, чтобы избежать этого предположения. Измененная модель должна работать, например, если величина X$TIMER равна 2450. В этом случае вычисление средней дневной прибыли должно быть произведено в момент модельного времени, соответствующий пяти восьмичасовым рабочим дням и первым 50 мин шестого рабочего дня. е). В примере 5А дневная прибыль является случайной величиной. Показать, как можно изменить модель на рис. 5А.2 так, чтобы значение этой случайной величины включалось в GPSS-таблицу после каждого модального дня. Полученную модель следует прогнать для каждой конфигурации дли 25 последовательных рабочих дней. Таким образом, результатам бу-
дет не только среднее значение случайной переменной «дневная прибыль», но и ее распределение, основанное на выборке размером 25. Подробно объяснить все предположения, сделанные для модификации модели. 5. В примере моделирования 2Е были произведены поиски такой конфигурации системы, при которой достигается минимизация средних дневных расходов, связанных с процессом производства продукции. Расширенная распечатка программы для модели, исследующей девять различных конфигураций системы, приведена на рис. 2Е.З. Показать, каким образом следует изменить модель рис. 2Е.З так, чтобы средняя величина дневных расходов для каждой конфигурации была частью стандартного вывода результатов моделирования. 6. Объяснить, что произойдет при входе транзакта в различные блоки SELECT: а) SELECT Е 5, 3, 7, О, X; б) SELECT Е 5, X, 7, О, X, RATS; в) SELECT MIN РЗ, 1, Р2„ ХН; г) SELECT МАХ ХН2,ХН10.Х12,,Р. 7. Предположим, что необходимо определить первые десять значений RN1 при использовании RN1 в качестве аргумента функции. Значения должны быть определены с точностью до шестого знака. Показать сегмент модели, обладающий свойством распечатывать эти первые десять значений. (Указание: определить функцию, имеющую RN1 в качестве аргумента и умножающую RN1 на 1 000 000, сдвигая тем самым вправо шесть десятичных позиций, затем поместить результат в сохраняемую величину.) 8. В магазинах самообслуживания параллельно работают несколько контролеров, причем к каждому контролеру выстраивается своя очередь. Рассмотрим некоторый магазин самообслуживания с шестью контролерами. Покупатель, подошедший к месту проверки, либо проходит к свободному в данный момент контролеру, либо встает в очередь к тому контролеру, для которого сумма длины очереди и среднего числа покупок, у каждого покупателя в этой очереди (за исключением покупок, принадлежащих проверяемому в данный момент покупателю) меньше (или равна) соответствующей суммы для других очередей. Показать блок-схему, с помощью которой можно промоделировать на GPSS такую ситуацию. Предположить, что транзакт имитирует покупателя и что число покупок, которые каждый покупатель должен предъявить, равно величине первого параметра. Бремя проверки покупателя составляет 10 =£ 5 мин, единица времени в модели равна 1 мнн. 5.8. Проверка числовых выражений. Блок TEST (ПРОВЕРИТЬ) Соотношение между двумя стандартными числовыми атрибутами может быть исследовано с помощью блока TEST. Этот блок со своими операндами и вспомогательным оператором показан на рис. 5.16. Операнды А и В являются именами сравниваемых стандартных числовых атрибутов. Вспомогательный оператор X указывает способ сравнения этих двух СЧА друг1 с другом. Как показано на рис. 5.16, X может быть либо одной из букв G, Е или L (соответственно для «больше», «равно» или «меньше»), либо одним из двухбуквенных сочетаний GE, NE или LE (соответственно для «больше или равно», «не равно» и «меньше или равно»). Операнд С является необязательным. Если присутствуют только операнды А и В, то проверка проводится в режиме отказа. Когда транзакт пытается войти в блок TEST, используемый в режиме отказа, вход запрещается в том случае, если ответ на вопрос, подразумеваемый Рис 5,16- Блок TEST со вспомогательным оператором я операндами А, В и С: Операнд А В X с Зиачеане Имя первого стандартного числового атрибута Имя второго стандартного числового атрибута Вспомогательный оператор, представляющий собой оператор отношения, используемый при проверке; ниже приведены значения, принимаемые оператором X Оператор отношения G ОЕ Б NE LE L II!!! Вопрос, подразумеваемый в контексте блоха TEST Л больше В? А больше вл» J>a*Ho В? Л равно В? А не равно В? А меньше или равно 3? А меньше В? яылельво; имя блока, в ко- \ переходит проверяющий «акт, если ответ на вопрос, азумсваемый оператором деивя, отрицателей Результат по умолчанию Ошибки » Прв отсутствия операнда С проверку производят в режиме отказа 264
.PS VSOELTA. 6) 'Рве. 5.17. Примеры использоиаиия блока TEST: ia — режим откеэе; 0 — режим условного перехода; « — режим отказа оператором отношения, является отрицательным. При запрещении входа транзакт задержи- лается в предшествующем блоке и учитывается его счетчиком текущего содержимого. Всякий •раз, когда просматривается цепь текущих событий, транзакт вновь пытается войти в блок TEST. Наконец, происходит вход в блок TEST, поскольку величина одного или обоих рассматриваемых СЧА, по всей вероятности, может измениться в процессе моделирования. После того, как транзакту удается войти в блок TEST, работающий з режиме отказа, он пытается войти в следующий блок, и т. д. Если используется операнд С блока TEST, то проверка проводится в режиме условной передачи. Транзакт, поступающий в такой блок TEST, проходит в следующий блок, если ответ ва подразумеваемый вопрос положительный, в противнем случае он переходит в блок, ука- шный в операнде С. (Блок TEST в режиме передачи отличается от команд условной передачи большинства языков программирования. Рассмотрим, например, команду в языке FORTRAN IV «IF (A. LT. В) GO TO 25». Если утверждение «А меньше В» истинно, управление передается оператору 25, не являющемуся следующим; в противном случае управление переходит к следующему оператору про- сраммы. В блоке TEST, работающем в режиме условней передачи, транзакт передается в расположенный в другом месте блок в случае, когда проверяемое условие ложно, в противном де случае транзакт переходит в следующий блок. Запомнить это можно с помощью фразы .«Условие не врет — проходи вперед».) Таким «бразом, вход в блок TEST, работающий в режиме условной передачи, никогда не запрещается. Транзакт, подошедший к такому блоку, «медленно входит в него, и путь, по которому «н будет следовать далее, тут же определяется выполнением подпрограммы блока. * Значение счетчика текущего содержимого ;6дока TEST может быть отлично от нуля. По- «шо режима проверки, такая ситуация возникает всегда, когда следующий блок, запланированный для транзакта, отказывается принять pro. Если трапзакт остановится в блоке TEST, фя него номер следующего блока уже опре- 265 делен. Для задержанного транзакта нет необходимости заново исполнять подпрограмму блока TEST. На рис. 5.17 показано несколько примеров блока TEST. На рис. 5.17, а проверяющий транзакт будет задержан в предыдущем блоке до тех пор, пока содержимое очереди 1 не станет меньше или равно содержимому очереди 2. На рис. 5.17, б проверяющий транзакт также перейдет в следующий по порядку блок, если содержимое очереди 1 меньше или равно содержимому очереди 2. Если это условие не выполняется, транзакт перейдет в блок с именем BYPAS. На рис. 5.17, в транзакт должен ждать до тех пор, пока его величина Р5 станет больше величины переменной DELTA. Хотя применение арифметических операций в блоке TEST запрещается, их разрешено использовать в определении переменных. Таким образом, используя арифметические переменные в операндах А и (или) В, можно сравнивать значения арифметических выражений в блоке TEST. При набивке перфокарты, соответствующей блоку TEST, операторы условия ставятся в поле операции в 13-м (или в 13 и 14-м) столбце карты. Таким образом, они находятся в поле операции, следуют за самой операцией и отделяются от нее пустым столбцом. 5.9. Пример моделирования 5В. Задача об управлении запасами 1. Постановка задачи. В магазине ежедневная потребность в некоторой продукции распределена нормально с математическим ожиданием и стандартным отклонением соответственно равными 10 и 2 единицам. Как только запас магазина падает до (или ниже) уровня заранее определенной величины, называемой точкой восстановления, поставщику посылают заказ на пополнение запаса. Величина пополнения, называемая количеством восстановления, всегда равна 100 единицам. Пополнение приходит в магазин где-то между шестым и девятым днем после подачи заказа. Это случайное время между подачей заказа на пополнение и прибы-
Таблица 5В.1. Распределение ориведеввого времени в примере моделирования 6В Приведенное время, дни 6 7 8 Относи- Приаедсииос тельная Ц время, частота j дни 0,05 0,25 0,30 9 10 Относи- тельиая частота 0,22 0,18 тием пополнения в магазин называется приведенным временем. Распределение приведенного времени показано в табл. 5В.1. Требование, возникающее в момент, когда магазин не имеет запаса, теряется; это означает, что покупатель, чье требование невозможно удовлетворить немедленно, тут же уходит. Владельцу магазина нужно знать, как установить точку восстановления. Из табл. 5В.1 ему известно, что приведенное время в среднем составляет 8 дней. Поскольку в среднем запрашивается 10 единиц товара в день, он полагает, что точка восстановления не должна быть ниже 80; в противном случае у него не найдется достаточного количества товара для удовлетворения требований, ожидаемых в период приведенного времени. Владелец полагает, что установление точки восстановления на более высоком уровне, таком как 90 или 100, уменьшает возможность потерь при продаже з период ожидания прибытия пополнения. Кроме того более высокий уровень точки восстановления означает, что в среднем запас больше; это увеличивает величину вложенного в запас капитала. Требуется построить GPSS-модель для описанной ситуации. В модели следует предусмотреть возможность измерения характеристик распределений двух случайных переменных: «ежедневные потери от несделанных покупок» н «число единиц, имеющихся в наличии». Необходимо выполнить прогон модели для оценки этих двух распределений, если число восстановлений равно 100, а точка восстановления равна 80, 90 и 100. Для каждой конфигурации провести моделирование работы магазина в течение 1000 дней. Предположим для простоты, что владелец проверяет уровень товара только в конце рабочего дня, а затем либо делает, либо не делает заказ на пополнение. Предположим также, что пополнение прибывает только после закрытия магазина; это означает, что ни одна единица товара из пополнения не может быть использована для удовлетворения требования, возникающего в день прибытия пополнения. Пренебрежем также «проблемами выходных». Такие вопросы возникают потому, что на практике владелец может не открывать магазин в субботу и (или) воскресенье; тем не менее в субботу и воскресенье пополнение продолжает поступать к месту назначения. Отказ от проблемы выходных равносилен тому, что владелец держит магазин открытым семь дней в неделю. 2. Метод построения модели. Модель составлена из двух отдельных сегментов. Сегмент запроса имитирует дневной спрос на товар, проверяет, какое количество из этого запроса может быть удовлетворено, н вводит величины потерь продажи и наличного запаса в GPSS-та- блиды в конце каждого дня. Сегмент инвентаризации производит наблюдение за наличным запасом и вызывает заказ на пополнение, если наличный запас находится на уровне или ниже точки восстановления и не ожидается поступления ранее заказанного товара. Эти два отдельных сегмента сообщаются через единственную сохраняемую величину STOCK, которая равна текущему наличному запасу. В сегменте запроса вместо удовлетворения многих запросов в течение дня определяется общий запрос на день с помощью транзакта, вводимого в модель ежедневно. Этот общий запрос, помещаемый в первый параметр транзакта, сравнивается затем в режиме условного перехода с сохраняемой величиной STOCK для того, чтобы определить, можно ли удовлетворить все дневные требования. Если можно, то меняется значение STOCK, в таблицы заносятся требуемые данные, и транзакт выходит из модели. Если дневной запрос превышает STOCK, то транзакт иэ блока TEST переходит не в следующий блок, а идет на вычисление потерь покупок и устанавливает STOCK, равным нулю. Затем он заносит данные в таблицы и выходит из модели. В сегменте инвентаризации впереди блока TEST, работающего в режиме отказа, находится единственный транзакт-учетчик, ожидающий, когда величина STOCK опустится до уровня (или ниже) точки восстановления. Сама точка восстановления занесена в сохраняемую величину ROP. Когда блок TEST разрешает вход, указывая на необходимость подачи заказа на пополнение, транзакт проходит в блок ADVANCE, где имитируется приведенное время. По истечении приведенного времени трап- закт-учетчик выходит из блока ADVANCE и изменяет STOCK добавлением к нему количества восстановления, содержащегося в сохраня- • емой величине ROQ. После этого учетчик возвращается назад для продолжения наблюдения за наличным запасом. У транзакта, находящегося в сегменте ин» вентаризации, более низкий приоритет, чем у транзакта, находящегося в сегменте запроса. Это различие в приоритетах сделано для того, чтобы удовлетворить условию, состоящему
в том, что пополнение прибывает всегда после вакрытия магазина. Предположим, например, что прибытие заказа запланировано на 51-й день моделирования. Транзакт-учетчик, обеспечивающий заказ, был помещен в цепь будущих событий не позднее, чем в конце 45-го дня (минимальное приведенное время равно шести двям). Транзакт же сегмента запроса не был пометен в цепь будущих событий до начала 50-го дня (запланировано ввести его в модель ва 51-й день). Последовательность помещений в цепь будущих событий означает, что после перехода в цепь текущих событий учетчик был бы впереди транзакта сегмента запроса, если бы они имели равный приоритет. Это, в свою очередь, привело бы к тому, что пополнение прибыло перед тем, как будет определен дневной запрос, что является нарушением условий задачи. Введение различия в приоритетах изменяет эту ситуацию. 3. Таблица определений. Единица времени; 1 день. Таблица 5В.2. Таблица определений примера моделирования SB Элемент GPSS Транзакты: 1-й сегмент модели 2-й сегмент модели Функции: LTIME SNORM Сохраняемые величины: ROP ROQ STOCK Таблицы: LOSES STOCK Переменные: DMND LOST Интерпретация Продавец: Р1 — общий запрос в рассматриваемый день Р2 — потеря покупок за рассматриваемый день Учетчик Функция, описывающая распределение приведенного времени Функция, описывающая нормированное нормальное распределение Точка восстановления Число восстановлений Наличный запас Таблица, используемая для оценки распределения дневных потерь покупок Таблица, используемая для оценки распределения наличного запаса Переменная, величина которой равна общему запросу в рассматриваемый день Переменная, величина которой равна количеству потерь покупок за рассматриваемый день
4. Блок-схема. GENERATE XSSTOCK/' GE \P1 (THUBU SAVEVALUE STOCK-.P1 (TAB) * TABULATE STOCK 4 TABULATE "X" TERMINATE^ LOSES (THUBL) \ 2.VSLOST f ASSIGN J С SAVEVALUE J STOCK,0 X (TAB) TRANSFER ЕЖЕДНЕВНЫЙ ПРИХОД СЛУЖАЩЕГО ПОЛОЖИТЬ PI РАВНЫМ ДНЕВНОМУ ЗАПРОСУ МОЖНО ЛИ УДОВЛЕТВОРИТЬ ДНЕВНОЙ ЗАПРОС? ДА: УМЕНЬШИТЬ ЗАПАС НА ВЕЛИЧИНУ ДИЕЗНОГО ЗАПРОСА ЗАНИСАТЬ УРОВЕНЬ ЗАПАСА НА КОНЕЦ ДНЯ ЗАПИСАТЬ ДНЕВНУЮ ПОТЕРЮ (ЕСЛИ ВНА ЕСТЬ) СЛУЖАЩИЙ УХОДИТ ДОМОЙ НЕТ: ПОЛОЖИТЬ Р2 РАВНЫМ ДНЕВНОЙ ПОТЕРЕ ВСЕ РАСПРОДАНО. ПОЛОЖИТЬ ЗАПАС РАВНЫМ НУЛЮ ПОЙТИ НА ЗАПИСЬ РЕЗУЛЬТАТОВ ДНЯ (WATCH) XiSTOCK^ LE L_ ADVANCE FNSLTIME Г SAVEVALUE J STOCK+ XSROQ TRANSFER ВОЙТИ В СЕГМЕНТ ИНВЕНТАРИЗАЦИИ ПОРА ЛИ ПОДАВАТЬ ЗАЯВКУ НА ПОПОЛНЕНИЕ? ЗАЯВКА НАХОДИТСЯ В ПУТИ ПРИБЫТИЕ ЗАЯВКИ, УВЕЛИЧИТЬ ЗАПАС HAROQ ПОЙТИ ОБРАТНО Н НАБЛЮДАТЬ (WATCH) 2-Й СЕГМЕНТ МОДЕЛИ 1-Й СЕГМЕНТ МВДЕЛИ (СЕГМЕНТ ЗАПРОСА) Рис. 5В.1. Блок-схема примера моделирования 5В
5. Распечатка программы. Ы.ОСК NUMBER I t J » » 6 .9 :« 4LOC OPERATION SIMULATE A.B.C.O.E.F.G COMMENTS NON-STANOARD RANOOM NUMBER SEQUENCE INI T IALIZAT ION fS ) R.MULT 11.33 * * LTIME .05.6/* SNORM 0.-5/.О .0668 1. .3*456. .72575. .97725. * * FUNCTION DEPIN1TJON(S) FUNCTION RN2.D5 REPLENISHMENT OROEft LEAO-TINC OIST'N 3.7/.6.8/.Й2.9/1. 10 FUNCTION RNI.C2S STANOARO NORMAL DISTRIBUTION FUNCTION 000 3.-4/.OOI35.-3/.0062l.-2.3/.0227S.-2 -I.5/.11507,-|.2/.15866,-I/.21 186.-.8/.27*25.-.6 -.4/.420 74.-.2/.S.0/.S7926..2/.6S342..4 »6/.7вВ14..В/.в4 1Э4.I/.88493.1.2/.93319.1.5 2/.99379.2.5/.99865.3/.99997.4/1.5 LOSES STOCK BMNO LOST * « SAVEVALUE INITIALIZATION^ > INITIAL XV» OP. 80 INITIAL XCR00.100 INITIAL X»STOCK.100 TABLE OEFIN]TIOM<S» REOROER POINT = 80 FOR 1ST RUN REOROER QUANTITY = 100 FOR 1ST RUN INITIAL STOCK ON HAND = 100 UNITS TABLE TABLE P2.0.1.17 TABLE FOR L05T OAILV SALES XSSTOCK.O. 10.12 TABLE FOR OAILV STOCK LEVEL VARIABLE DbFlNITION<S> FVARIABLE 2*FNSSN0RM+10 DAILY DEMAND DISTRIBUTION VARIABLE Pl-X*STOCK DAY'S LOST SALES MODEL SEGMENT I GENERATE ASSIGN TEST 6E SAVEVALUE TABULATE TABULATE TERMINATE ASSIGN SAVEVALUE TRANSFER 1.•..1 1•V*0MNO X*STOCK, P1-.TRU8L ST0CK-.P1 - STOCK LOSES 1 2.VSL0ST STOCK,0 • TAB «cjoel segmlnt г MATCH GENERATE TEST LE ...1 XSSTOCK.XSRQP ADVANCE FN*LTIME SAVEVALUE STOCK-t.XSROQ TRANSFER .WATCH CLERK CONES EACH DAY SET PI = OAY'S DEMANO CAN DAY'S OEMANO BE MET? yes; oeplete stock av oay's demand RECORD END-OF-ОЛУ STOCK LEVEL RECORD OAY'S LOST OEMAND (IF ANY) CLERK GOES HOME NO! 5ET P2 » OAY'S LOST OEMAND SOLD OUT} "SET STOCK = 0 GO RECORO OAY'S EXPERIENCE seed the inventory control segment is it time to place a replenishment qr0er7 the oroer is on its wav order arrives; aoo rod to stock go back to watch CONTROL CAR OS ANO SAVEVALUE RE-INITIAL1ZATI0NIS> START RMULT CLEAR INITIAL START RMULT CLEAR INITIAL START END 1000 11.33 XSROU XSROP.90/XSSTOCK.100 1000 11.33 XSROO XtftOP. 100/X4ST0CK.10 10DO start 1st run <rop » 80> restore random seouenccs selectively clear for 2nd run re-configure! set initial stock start 2nd run <rop = 90) restore random sequences selectivelv clear for 3rd run re-configure: set initial stock start 3rd run <rop » 100) return control to op* ing system CARD NUMBER 1 2 3 « 5 6 7 В 9 10 11 12 13 14 15 16 17 IB 19 20 21 22 23 2'* 29 26 27 28 29 зо 31 32 33 ЗА 35 36 37 за 39 «о 41 42 43 44 45 46 47 4В 49 50 SI . 52 53 5» 5t> 56 57 SB 59 60 61 62 63 64. »s 66 г,т , 6Б.2. Распечатка программы примера моделирования 5В
6. Выходные данные. TABLE LOSES ENTRIES IN TAALE JOOO UPPER LIMIT 0 1 г 3 * Ъ » 7 В 9 10 II 12 13 1* MEAN OBSrCRvCO «MEOUtNCT 923 10 2 i ь 5 1? 9 U 6 « i о и 1 ARGUMENT .61 ft PER OF CENT TOTAL ег. гч .99 .19 .19 ♦ «« .-9 ). 19 .«9 .79 .39 .79 .2v .59 .40 .09 STANDARO DtVIATlON CUMULATIVE PCRCENTAGC 92. * 93.2 9».* 93.6 9*. I 9* .6 95.В 94.7 97.9 9S.1 9B.9 99»г 99.8 99 .в 100.0 2.01» SUM cummlativc RCMAI NDER 7.7 ft.7 6.4 6-.J S.8 в.з ».i j.г г.* LB l»0 • 7 • 1 . 1 • 0 OF ARC-UKtNT$ S17.O00 MULTIPLE OP MEAN -.000 1.93* 3.B6S ь.ьо* 7.736 9.67 1 1 I .60S» 13.534 1S.A7J 17.«08 19.3*2 21.276 23.219 *3.J«» 27.07» «JH-HEIlNIEr. OEVI AT1CN FROM MEAN -.гм .239 .73» J.831 1.727 4.22» 2.720 4.21b 3.712 A.208 — 70* ь-гоо S..696 е. 193 6.609 REMAINING FREQUENCIES ARE ALL ZERO TABLt STOCK ENTRIES IN TABLE 1000 UPPER LIMIT 0 10 20 3ft «0 SO 60 70 во 90 100 OVERPL 0« AVbRACE VALUE ' MEAN OBSERVED FREOUENO 01 7S 9* 90 90 93 95 9* 10 1 95 »9 23 OP OVER FLO» ARuUMfcNT ♦ 7 • t!-.4 B*R OF CENT TOTAL 8.09 7.«9 9.39 B.99 B.99 *»*9 9»*9 9» J» 10,09 «.«9 6.B9 2.29 :оо.вб STANOARO OfeVIA CUMULATIVE PERCENTAGE B.O 15. Ь 2«.4 33.9 «2.9 52.2 61.7 . 71. f "1.2 90.T 97.6 100.0 30 ION .876 SUM CUMULATIVE REMAINOER 91.В B*.3 75. 0 66.0 57.0 «7.7 ЭВ.2 20.В IB.7 9.2 2.3 .0 OF AKSUMENTS •7816.000 MULTIPLE OP MEAN -.000 .209 • «IS .627 .836 1.0*5 ».2S* I.A6J 1.673 I.B82 2.041 NON-VtlSnltl DEVIATION FROM MEAN -I .s«e -1.22* -.900 -.577 -.253 .070 .34* .7» В 1.0*2 1.366 1.690 8) Рис.5 В.З. Часть распечатки выходных данных примера моделирования SB с точкой восстановления, равной 80: в — таблица дневных потерь покупок; б — табяяпа наличного запаса аа конец каждого дпя 7. Обсуждение. Логика моделирования. На блок-схеме (рис. 5В.1) видно, что в модели используется один блок TEST в режиме условной передачи, а другой блок TEST — в режиме отказа. Заметим также, что оба сегмента модели взаимодействуют друг с другом с помощью сохраняемой величины STOCK. Модель существенно зависит от внешних условий. Двумя источниками случайностей являются дневной запрос и приведенное время. Каждое соответствующее распределение представлено функцией (карты с 9 по 16 на рис. 5В.2), и у каждой функции в качестве аргумента свой датчик случайных чисел. Для каждого случая точки восстановления перед началом моделирования эти датчики устанавливаются или сбрасываются к некоторой начальной точке с помощью карты RMULT (карты 5, 59 и 63 на рис. 5В.2). Распечатка результатов. (Общее время моделирования на ЭВМ IBM 360/67 составило 4,3 с.) На рис. 5В.З показаны таблицы дневных потерь и наличного запаса, полученные при моделировании, для точки восстановления, равной 80. Число входов в каждую таблицу равно; 1000, по одному на каждый день. В средне»] каждый день терялось 0,516 покупок (среднее] значение таблицы LOSES). За 1000 имитируемых дней эта величина составит 516 потерь. В 92% дней потерь не было (процент от общего числа для верхнего предела, равного нулю, fe таблице STOCK). Бывают случаи 14 потерь за один день. Из таблицы"5Т0СК на рис. 5В.З видно, что наличный запас распределен равномерно между О и 100. Средний наличный запас составил 47,1 единиц. Примерно в 8% случаев наличный 31 пас в конце дня был нулевым, не считая во» можности прибытия пополнения в конце этоп дня (процент от общего числа для верхней предела, равного нулю, в таблице STOCK) В течение 23 дней наличный запас превыша ЮО единиц. В табл. 5В.З приведены данные, получении при исследовании всех трех случаев точек вое становления. Из таблицы видно, что средни дневная потеря уменьшается с возрастаете уровня точки восстановления. В то же врем 270
.Таблица 5В.Э. Итог результатов моделирования дм примера SB Точка постановлении 80 90 100 Среднее число дневных потерь покупок 0,516 0,173 0,005 Процент дней, в которые происходила нехватка запаса 7.7 3.2 0.4 Средний наличиый запас 47,8 55,0 65,0 средний наличный запас увеличивается при .повышении уровня точки восстановления. Существует много других аспектов проблемы управления запасами. Некоторые из них включены в следующие ниже упражнения. ' 6.10. Упражнения ^ 1. Эти вопросы предназначены для тренировки в использовании блока TEST. а). Программисту нужно, чтобы транзакт, поступивший в точку А модели, продвинулся в следующий блок, если текущее содержимое очереди 1 мепьше текущего содержимого очереди 2, в противном случае транзакт должен верейти в блок с именем RUTE7. Показать подробно, какой блок TEST программисту следует поместить в точку А. 6). Показать, каким образом задержать транзакт в точке А модели до тех пор, пока оставшаяся емкость многоканального устройства ALPHA не превысит оставшейся емкости лногоканальпого устройства BETA. <гв). Когда посетитель приходит в парикмахерскую, он решает ждать обслуживания только I ток случае, если там ожидают не более пяти двсетителей. В противном случае он уходит :| больше не возвращается. Показать сегмент фок-схемы, моделнрующий эту ситуацию, фешмните, что если используется многока- ^иьвое устройство, то для имитации подобной SyamiK может быть применен блок ANSFER в режиме BOTH; см. рис. 2.57.) '-if).Транзакт следует держать в точке А модели до тех пор, пока коэффициент нагрузки шибора CRANE не превысит 50%. Показать, шли образом это можно осуществить. Ёлд). Почему блок «TEST LE Ql -+- Q2, Q3, ЙУРАЗ» ошибочен? Предложить метод устранения ошибки при осуществлении той же проверки в блоке TEST. I«). Когда транзакт достигает точки А мо- ШЛп, ему следует перейти в блок с именем lOCl, если все очереди ONE, TWO и THREE Кусты, в противном случае он должен пойти ■ блок LOC2. Показать, как это осуществить. шЫ)- Транзакты, поступающие в точку А мо- Цуш, выбирают себе следующий блек случайным образом. При длительном прогоне 35% их числа переходят в блок с именем BLOKI, а остальные 65% — в блок с именем BLOK2. Показать, каким образом блок TEST может быть использован для моделирования такого случайного выбора следующего блока. (Замечание: тот же эффект может быть достигнут с помощью блока TRANSFER работающего в режиме статистической передачи, см. гл. 2. Для этой цели более эффективным является использование блока TRANSFER, а не блока TEST.) з). Показать, каким образом можно использовать сохраняемую величину для моделирования прибора. Обсудить преимущества и недостатки такой модели. и). Показать, каким образом можно использовать сохраняемую величину для моделирования многоканального устройства. Обсудить преимущества и недостатки такой модели. к). Составить блок-схему сегмента модели, имеющего свойство распечатывать относительное время в момент его изменения. л). Составить блок-схему сегмента модели, обладающего свойством записывать в GPSS-та- блицу разность между последовательными значениями относительного времени. м). Повторить пп. к и л для величины абсолютного времени. 2. Эти вопросы связаны с использованием сохраняемых величин для моделирования регистраторов очередей. а). Обсудить возможность использования сохраняемой величины для моделирования регистратора очереди, объем машинной памяти, который экономится при таком подходе, возможное направление изменения затрат процессорного времени и изменение в количестве доступных статистических данных, описывающих процесс ожидания. Можете ли вы придумать одну или две ситуации, в которых имитация регистратора очереди сохраняемой величины была бы идентична представлению с помощью регистратора очереди? б). Показать, как использовать сохраняемую величину для имитации регистратора очереди в решении упражнения 2, а так. чтобы избежать наличия пары блоков QUEUE/DEPART. в). В примере 4D (задача об очереди в банке) единственной причиной использования индивидуальных регистраторов очередей к каждому кассиру в системе с несколькими очередями была необходимость использования статистики «Q/» в период моделирования. Показать, как можно имитировать индивидуальные регистраторы очередей с помощью сохрапяемых величин в этой задаче, отказавшись тем самым от индивидуальных регистраторов очередей. Сделать это, оставив прежде всего оба блока 271
SELECT в решении, как показано в примере 4D. Затем сделать это другим способом, отказавшись от первого из двух блоков SELECT (см. упражнение 12 параграфа 4.19). 3. Эти вопросы относятся к примеру моделирования 5В. а). Каковы номера траизактов, используемых в модели на рис. 5В.2? б). Показать, как можно сделать у транзак- тов в обоих сегментах модели нулевой приоритет с тем, чтобы условие задачи о поступлении пополнения после рабочего дня тем не менее выполнялось. Условие: не менять ни одного блока в модели за исключением блока GENERATE в сегменте запроса, в котором убрать ноле Е. в). Модель на рис. 5В.2 не включает пополнение, полученное в конце дня, в таблицу наличного запаса для этого дня. Показать, как следует изменигь модель, чтобы изменить эту ситуацию. г). Говорят, что происходит регистрация заявки, если посетитель, чей запрос не может быть удовлетворен немедленно, согласен ждать до тех пор, пока .не придет очередное пополнение и его запрос сможет быть исполнен. Предположим, что любой запрос посетителя составляет ровно единицу товара, и вероятность того, что посетитель захочет сделать заявку, равна 0,35. Показать, какие изменения следует произвести в модели на рис. 5В.2, чтобы включить в нес эти предположения. д). Предположим, что вероятность сделать заявку зависит от числа уже сделанных в этот день заявок (табл. УЗ). Внести изменения в модель рис. 5В.2 так, чтобы включить в нее эти изменения. е). В примере 5В заказ на пополнение подается, как только величина наличного запаса оказывается меньше или равна точке восста- Таблица УЗ Число сделанных эпнвоя 0-2 3-5 6—8 9—10 Более 10 Вероятность сделать запалу 0,98 0,80 0,50 0,20 0,0 новленяя и запрос на пополнение еще не сделан. Показать, как изменить модель рис. 5В.2 так, чтобы заказ на пополнение подавался, если сумма наличного запаса и находящихся в путя пополнений (если она есть) меньше или равна точке восстановления. 4. а). Б задаче управления запасами обычно присутствуют три статьи расхода: стоимость подачи заявки на пополнение, стоимость потерь покупок из-за исчерпания запаса и стоимость поддержания уровня. В примере 5В предположим, что стоимость подачи заявки па пополнение равна 10 долларам, стоимость потери (поскольку таким образом теряется прибыль) равна I доллару и стоимость содержания одного предмета за год составляет 25% от стоимости покупки, т. е. от 10 долларов. Подсчитать вручную средний дневной расход для каждого из трех случаев точки восстановления, рассмотренных в примере 5В. Какая точка носе та новленяя соответствует наименьшему среднему дно- ному расходу? (Из счетчика числа вхождений в блоки, не приведенного в распечатке результатов моделирования примера 5В, для точек восстановления 80, 90 и 100 было соответственно подано 90, 93 и 95 заявок на пополнение.) б). Используя вычисления, приведенные в п. а, построить график зависимости средвего дневного расхода от точки восстановления., Имеет ли кривая расхода минимум? Если нет, использовать модель для дальнейшего поиска,; пока не будет найден минимальный расход дла"; некоторой точки восстановления, соответ»! ствующий фиксированному количеству вом становления, равному 100. в). Показать, каким образом следует модифицировать модель примера 5В для автоматизм ции вычислений, указанных в п. а. 5. В задаче управления запасами, как правило, при изменении точки восстановлена* и фиксированном объеме восстановления сред» ний дневной расход имеет минимум. Это пока за$ю на рис. У5, а, где средний дневной расхоц велик для малых точек восстановления (по скольку на общие расходы в большой степеа влияют расходы, связанные с исчерпанием запаса) д вновь становится большим для больше! точек восстановления (поскольку в общие ра© ходы вносят огромный вклад расходы на поддержание уровня). По этой же причине пра изменении объема восстановления и фикевро' I Объем Восстановлении, остается постоянным Точка, восстановления Рис. У5 Точка Восстановления остается постоянной Объом восстановлений. 6) 272
ванной точке восстановления средний дневной расход также, как правило, имеет минимум (рис. У5, б). Малые объемы восстановления приводят к высокому среднему расходу, так как ори этом требуется часто подавать заявку на восстановление, а большие объемы восстановления дают высокий средний расход, так как при иом возрастают расходы на поддержание уровня. На трехмерном графике, где средний дневной расход зависит от точки восстановления но одной оси и объем восстановления но другой, можно увидеть, что расход имеет минимум. (Следует заново посмотреть обсуждение примера 2Е. Там также расход зависел от выбора двух независимых переменных и проходил через точку минимума. Была показана методика одномерного поиска точки минимума расхода). Пусть в примере 5В точка восстановления Н объем восстановления будут переменными. Используя информацию о расходах, приведенную в упражнении 4, найдите в модели таУую комбинацию точки восстановления и объема восставовлеиия, при которой достигается минимум среднего дневного расхода. 6. В задаче управления запасами важной случайной величиной является запрос н приведенное время. Запрос в приведенпое время — это общий запрос в период, соответствующий длительности приведенного времени. Он зависит как от распределения дневных запросов, так и от распределения приведенного времени. Построить GPSS-модель для оценки распределения запроса в приведенное время для данных, указанных в примере 5В. Оценит» распределение на основании выборки из 1000 опытов с приведенным временем. Использовать результат для оценки установления владельцем точки восстановления, если вероятность исчерпания запаса должна быть: а) 0,05; б) 0,20 и в) 0,15. . 7. В этом упражнении сталкиваемся с подходом к задаче управления запасами не с точки зрения определения точки восстановления и объема восстановления, как это было в примере SB, а с точки зрения оЬределения длительности планируемого периода и планового уровня. Владелец из последних записей знает, что дневной спрос па некоторый товар меняется случайным образом согласно закону, приведенному в табл. У7, а. Приведенное время, требуемое для выполнения заказа, распределено но закону, показанному в табл. У7, б. Если запас у владельца магазина исчерпан, то с вероятностью 0,65 посетитель не сделает заявку, а уйдет в другой магазин. Владелец "магазина контролирует свой запас товара тем, что посылает заказ на пополпение при открытии магазина либо каждый понедельник, лнбо каждый второй понедельник. (Число недель между подачами заказов на пополнение называется планируемым периодом.) Как пока- 18 Т. Дж. Шрпйбер Таблица У7 Требуемое КОЛИ1ССТ1Ю товара 0 1 2 3 4 5 Относительная частота 0.30 0.35 0.13 0.11 U.07 0.04 а) Приведенное время, дни 4 7 8 Относительнаи частота 0.30 0.60 0.10 б) зывают данные о приведенном времени, пополнение приходит в момент открытия торговли в пятницу, понедельник или вторник. По субботам и воскресеньям владелец не торгует. Объем восстановления переменный. Он вычисляется вычитанием числа единиц в текущем запасе из заранее определенной постоянной величины, называемой плановым уровнем. Стоимость подачи заявки на пополнение равна 40 долларам. Стоимость содержания одного предмета в день составляет 1 доллар (включая выходные). Стоимость потери покупки равна 100 долларам. Составить GPSS-модель для моделирования этого случая. Использовать эту модель для того, чтобы определить, должен ли планируемый период быть равным I или 2 неделям, и каков должен быть плановый уровень, чтобы минимизировать средний недельный расход. Вычисление расхода должно быть частью модели. 5.11. Концепция использования взвешенных таблиц Бывают случаи, когда некоторые наблюдаемые величины случайных переменных должны быть в один и тот же момент времени введены в таблицу не один раз, а два или более. Например, предположим, что моделируется гавань. Для подхода и отхода судна от якорной стоянки в зависимости от типа рассматриваемого судна необходимы одии или два буксира. Если в гавани имеются два буксира и для их имитации используется многоканальное устройство, то среднее время использования буксира будег распечатано автоматически в конце моделирования. Предположим теперь, что нужно оцепить распределение случайной величины — времени 273
использования буксира, а не ее математическое ожидание. Значения такой случайной величины могут быть получены записью времени занятости буксира в /-м параметре транзакта<удна с последующим занесением величины MP/ в таблицу после того, как судно освободит буксир (или буксиры). Если для судиа использовали один буксир, то величина MP/ должна быть занесена в таблицу один раз. Если же судну требовалось два буксира, то величина М.Р/ должна быть помещена в таблицу 2 раза. Таким образом, использование двух буксиров для одного судиа требует, чтобы случайная величина наблюдалась дважды. Одним из способов сделать так, чтобы в приведенном выше примере занести величину MP/ в таблицу дважды, является использование двух последовательных блоков TABULATE в модели. С другой стороны, это потребовало бы, чтобы а рассматриваемый сегмент модели было разрешено входить только тем транзак- там-судам, для которых нужно два буксира. Более того, как будет сказано позднее, число входов данного наблюдения в таблицу часто является случайным, что делает невозможным включение нужного числа блоков TABULATE в модель. Для подобных ситуаций GPSS имеет в блоке TABULATE необязательный операнд, который называется весовым фактором. Он означает число раз, которое величина, подлежащая табулированию, должна вводиться в соответствующую таблицу всегда, когда выполняется блок TABULATE. Таким образом становится возможным назначать одним наблюдаемым величинам сравнительно более высокие веса, нежели другим. Таблицы, в которых сделаны такие различия в весах, называются взвешенными таблицами. \ На рнс. 5.18 повторено определение блока TABULATE с указанием операнда В. Заметим, TABULATE ъ Рис. 5. Гв. Блок TABULATE с операндами А и В: Операнд А В Значение Имя (числовое пли символическое) таблицы, в которую следует занести величину Число раа, которое величина должна быхь занесена в таблицу, когда транзит входит а блок TABULATE Значение или ре- аультет iio умолчан ню Ошибка 1 «.0CATON 4-J1L JHIOME I f j. i i i 7JT To I V-lulx '\i<.i" '• TA5.LE1. '''!-'»' A 8 С OX f )X\a'n ;<|г<Мм';/м!» 1э!*|м|и|г< nfi2,..i.<n,.i3..wa. i i i ■ i 11 ' ■ ■ i TABULATE PI HTIME i) Рис. 5-19. Пример, показывающий использование взвешенной таблицы в QPSS: а - определение взвешенной таблицы: б — блок TABULATE, ссылающийся на взвешенную таблицу что отсутствие величины в операнде В интерпретируется как единица. Следовательно, если операнд В не используется, наблюдаемая величина во время выполнения блока TABULATE вводится в соответствующую таблицу только J раз. Чаще всего программист опускает операнд В блока TABULATE, используя тем самым так называемую невзвешенную таблицу. Если таблица является взвешенной, первый символом операнда D в карте определения этой таблицы должна быть буква W. Это справедливо даже в том случае, если программист ста* вит в операнде В всех соответствующих блоков TABULATE величину «1». Это означает, что как только операнд В блока TABULATE задав; численно, а не по умолчанию, соответствующая таблица воспринимается как взвешенная. На рис. 5.19 показан пример взвешенной таблицы с именем HTIME. Отметим наличие W а качестве первого символа в операнде D. Заметим также, что табулируемой переменной, является время прохождения транзакта, как 'показано при использовании вторичного параметра этого транзакта. Как только транзакт входит в блок TABULATE (рис. 5.19, б), величина МР2 вычисляется и вводится в таблицу. HTIME; число введений в таблицу равно значению первого параметра транзакта. Если 8frj личина Р1 равна единице, то величина будет помещена в таблицу 1 раз; если PI pan двум, то МР2 попадает а таблицу 2 раза и т. д.; Предположим теперь, что транзакт имнтиру! судно и что величина первого параметра тра* закта может быть интерпретирована как чис* буксиров, требуемых этому судну для под* или отхода от якорной стоянки. Тогда, судно-транзакт проходит через блок «MARK сразу после занятия требуемого буксира (и, 274
буксиров) и входит в блок f ABTJLATE, показанный на рис. 5.19, б, сразу после освобождения буксира (или буксиров), результатом будет табулирование случайной величины «время задержки одного занятого буксира». Для дальнейшей иллюстрации взвешенных таблиц рассмотрим случайные переменные «длина очереди» и «время пребывания в очереди». Оценка средней длины очереди и среднего времени пребывания в очереди включена в стандартную статистику по очередям н обеспечивается средствами GPSS. Более того, оценка распределения времени пребывания в очереди GPSS обеспечивается наличием таблиц, используемых в режиме QTABLE. Тем ие менее в языке не предусмотрен автоматический контроль над распределением длины очереди. Рассмотрим, как можно найти распределение длины очереди. Записывать длину очереди всякий раз, как она изменяется, а затем производить действия с полученными величинами сложно. Вместо этого можно рассматривать отрезок времени, в течение которого длина очереди равна заданной величине. Эти отрезки времени показаны на примере, приведенном га рис. 5.20. За длиной очереди наблюдали в течение 50 единиц времени. За это время очередь имела длину 0 в течение шести единиц времени, длину 1 в течение двух единиц времени, длину 2 в течение 22 единиц времени S13 единиц от времени 8 до времени 21 и еще 1 едивиц от времени 28 до 37) и длину 3 в течение 20 единиц времени (7 единиц от времени 21 до 26 и эатем 13 единиц от времени 37 до 50). Следовательно, относительная частота, с которой очередь имела кулевую длину, составила 12% (6 временных единиц из 50) и т. д. Эти результаты даны в табл. 5.5.- Если нужно знать распределение длины очереди, то одним из возможных путей получения необходимых данных является внесение записи в таблицу длины очереди в каждую единицу времени. Так, для примера на рис. 5.20, величина 0 будет помещена в таблицу в моменты времени 1, 2, 3, 4, 5 и 6; величина 1 — в моменты времени 7 и 8; величина 2 — в моменты времени 9, 10, 11 и т. д. jne. 6.20. Изменения длины очереди Та&нца 5.5. Относительные Частоты различных длив очереди (см. ряс 5.20) Длина очереди 0 1 2 3 Итого . . . Общее время, а течение которого очередь имела данную длину 6 2 22 20 Относительная частота этой дляиы, % 12 4 44 40 50 Подобный подход обеспечил бы соответствующий вес каждому времени, в течение которого очередь имела заданную длину. Однако для осуществления такого подхода в GPSS тран- закту пришлось бы входить в блок TABULATE в моменты времени 1, 2, 3 и т. д. Огромное неудобство заключается в том, что это заставит модельное время двигаться фиксированными t приращениями, равными 1. Таким образом будет утеряно свойство времени в GPSS увеличиваться переменными порциями, что приведет к отрицательным последствиям в смысле затрат времени процессора. Более удачно было бы записывать длину очереди в таблицу только тогда, когда она изменяется. Чтобы придать должный вес интервалу времени, на протяжении которого очередь имела данную длину, статистика по длине должна быть записана в таблицу столько раз, сколько единиц времени очередь имела эту длину. Например, в момент модельного времени 6 на рис. 5.20 величина 0 должна быть помещена в таблицу б раз; в момент времени 8 величина 1 должна быть помещена в таблицу 2 раза; в момент модельного времени 21 величина 2 должна быть помещена в таблицу 13 раз н т. д. Указанием в операнде В блока TABULATE количества проведенных в данном состоянии единиц времени можно обеспечить сбор статистики, характеризующей распределение длины очереди. К сожалению, в только что описанном подходе к «изменению длины очереди» есть одно упущение. Оно состоит в том, что перед тем, как моделирование будет закончено, последняя наблюдаемая длина очереди не будет занесена в таблицу. Для иллюстрации этого утверждения обратимся к рис. 5.20. Предположим, что моделирование, соответствующее этому рисунку, заканчивается в момент, когда модельное время равно 50. Длина очереди между моментами времени 37 и 50 не меняется, она остается постоянной и равной 3. Следовательно, если длину очереди заносят в таблицу только тогда, когда происходит ее изменение, то в момент модельного времени, равный 50, в таблицу 18* 275
ничего пе будет внесено. Одно из наблюдений за длиной очереди останется неучтенным. Описанное упущение может быть исправлено занесением длины очереди в таблицу по изменению таймера, а не ло изменению длины. Вообще говоря, в этом случае в таблицу будет сделано больше записей, чем при подходе с изменением длины очереди. Например, предположим, что на рис. 5.20 таймер принимает последовательные значения 8, 12, 17 н 21. Тогда, хотя длина очереди остается постоянной и равной 2 в течение временного интервала от 8 до 21, величина 2 за это время будет занесена в таблицу трижды. (Величина 2 будет помещена в таблицу 4 раза в момент времени 12, 5 раз в момент времени 17 и 4 раза в момент времени 21.) При построении таблицы по изменению длины очереди величина 2 была бы просто помещена в таблицу 13 раз в момент модельного времени, равный 21. Преимуществом подхода по изменению таймера является то, что он не влияет на свойство интерпретатора GPSS иметь переменные приращения времени. Важно также, что при этом подходе будут учтены все наблюдения за длиной очереди, включая последнее. На рис. 5.21 показана блок-схема сегмента GPSS-модели, осуществляющего вычисление (WATCH» , - Рис. 5.21. Сегмент модели для вычисления распределения текущего содержимого очереди ONE распределения длины очереди, названной ONE, с использованием метода изменения таймера. Во время моделирования в сегменте циркулирует единственный транзакт. Он попадает в модель в момент времени, равный единице, затем тут же заносит значение абсолютного времени в первый параметр. (Заметим, что параметры являются полнословными; если бы они были пол условными, то в случае, когда значение времени превысит величину 32767, в блоке MARK возникнет ошибка переполнения.) Затем транзакт заносит текущую длину очереди во второй параметр. После этого транзакт ждет у блока TEST, работающего в режиме отказа, до тех пор, пока его резидентное время не станет больше нуля, т. о. пока таймер не изменится. Когда происходит изменение таймера, транзакт входит в блок TABULATE, занося в таблицу длипу очереди, найденную в предыдущий момент времени. (Для этого требуется, чтобы в карте определения таблицы LENTH в операнде А стоял Р2.) В блоке TABULATE в качестве весового фактора используется MF1. Это означает, что ранее полученная длина очереди вводится в таблицу одни раз для любого модельного интервала времени, на который увеличивается таймер, получая новое значение. Затем транзакт возвращается назад на запись времени и длины очереди и снова продолжает ждать у блока TEST, пока не произойдут изменения в таймере. В сегменте модели на рис. 5.21 предполагается, что везде в модели была использована очередь с именем ONE. Тот факт, что в модель имеются другие участки, поднимает вопрос об уровнях приоритета. После того, как выполнена фаза ввода и первая фаза коррекции таймера, транзакт, приведенный на рис. 5.21, всегда находится в цепи текущих событий. Важно ли, где находится транзакт в Цепи текущих событий? Да, важно. Дело в том, что транзакт делает только одно наблюдение з^ длиной очереди за одно показание таймера.^ Таким образом, важно, чтобы это наблюдение! было сделано только после того, как модель полностью обработана при каждом показания таймера (см., однако, упражнение 4 в пара-! грао>е 5.12). В противном случае может наблкк даться лишь промежуточная величина длины очереди, не являющаяся той, которая в дейсш- тельноети существует в момент коррекции тай^ мера. В этом случае результаты будутошнбоадь!, Таким образом, транзакт, показанный ш рис. 5.21, должен наблюдать за длиной очеред» непосредственно перед тем, как интерпретато] закончит фазу просмотра и перейдет к фал коррекции таймера. Это может быть достиг нуто помещением транзакта в колец цепи теку щнх событий. Другими словами, приорите транзакта, показанного на рис. 5.21, додже 276
Block NUMBER OPERATION A>B,C»D,e,F«« SIMULATE COMMOITS FUNCTION OEFINITIOM(S) »LOC * * 5 FUNCTION RN1»C2« EXPONENTIAL DISTRIBUTION FUNCTION 0.0/.1..104/.2».222/.3..353/.4..S09/.5»«69/.6..9 IS/.7. 1.2/.75.1.3S ili1.6/.B*.l.e3/>SB»2.I2/.9l2.3/.92«2*S2/«9«t2.ei/.9S>2»99/.96i3«2 •97»3*S/.9Bi3*9/»99.*«6/.995t5.3/.99B,6.2/.999.7/.999B .8 MEAN FUNCTION RNl.OS OlSTRItUIT ION OP WAN SERVICE TlMEt .1.43O/.29.750/.61.1000/.SS,1500/1.30Q0 STORAGE CAPACITY DEFINIT 10N<S> STORAGE 5STELR3.B TABLE DEFINITIONS) LENTH TABLE P2.0.5.WI4 MODEL SEGMENT 1 1 2 3 4 S 6 7 в 9 10 11 12 13 1* IS 16 • A • WATCH 4 • * * * * GENERATE. ASSIGN OUEUE ENTER OEPAR T ADVANCE LEAVE TERMINATE IBO.FNS...1.1 l.FNSMCAN.S ONE TELRS ONE PI TELRS MODEL 3EGNENT 2 GENERATE МАЙК ASSIGN TE3T NE TABULATE TRANSFER ■ nli «2.F 1 г. о «one MP 1.0 LENTH.HP1 «HATCH NOOEL SEGMENT 3 GENERATE TERMINATE iaoooo i CONTROL CAROS START £N0 i PROVIDE в TELLERS ИЕ1СНТЕ0 TABLE FDR LINE LENGTH CUST0MER5 ARRIVE SET P» - SERVICE TIME ENTER THE LINE ENGAGE A TELLER LEAVE THE LINE TRANSACT BUSINESS FREE THE TELLER LEAVE THE BANK SEEO THE LENGTH-OBSERVATION SEGMENT SET Pi » ABSOLUTE CLOCK TINE SET P2 = CURRENT LINE LENGTH MA1T.F0R THE CLOCK TO CHANGE RECORO LENGTH OBSERVED AT OLD CLOCK TIME,' WEIGHTED ИГ THE CLOCK INCREMENT GO SET UP FOR THE NEXT OBSERVATION TIMER ARRIVES AFTER 5 HOURS SHUT OFF THE RUN START THE RUN FOR DAY 1 RETURN CONTROL TO OPERATING SYSTEM САП О NUMBER ■ г з 5 6 7 • 9 10 II ' 12 13 14 15 16 IT IB 19 20 21 22 23 24 ZS 26 27 га 29 30 31 зг 33 34 35 36 37 за 39 40 «1 42 43 44 45 46 47 4a «9 Pic. 5.22. Распечатка программы для модели, приведенной на ркс. 4D.3, а, с включенным сегментом, показанным на ряс, 5.21 быть меньше, чем приоритет любого другого Зранзакта в модели. Приоритет этого транзакта равен 0. Таким образом, предполагается, что все другие транзакты d оставшейся части модели имеют приоритеты, большие или равные 1, за исключением транзакта-таймера. У транзакта-таймера приоритет также должен быть равен 0 при использовании сегмента, показанного на ряс. 5.2J. Тогда, при вводе транзакта- таймера в цепь текущих событий, он будет последним в цепи. Это гарантирует, что последняя запись в таблицу длины очереди будет Произведена перед тем, как моделирование завершится при последнем показании времени. Рассмотрим теперь использование сегмента, приведенного на рис. 5.21, в модели с одной очередью, использованной в примере модели- рования 4D «Сравнение альтернативных вариантов системы обслуживания в банке». На рис. 5.22 дана распечатка программы для модели с одной очередью, представленная на рис. 4D.2, а, и теперь увеличенная в результате включения участка, изображенного на рис. 5.21. На рис. 5,23, а и б представлены стандартная статистика очереди и взвешенная таблица, полученные при прогоне модели, данной на рис. 5.22. Как видно из таблицы, очередь пустовала 14,82% времени, имела длину 5 и меньше (но не была пустой) 16,64% времени и т. д. Заметим, что на рис. 5.23, б под наименованиями ENTRIES IN TABLE (ЧИСЛО ВХОДОВ В ТАБЛИЦУ), MEAN ARGUMENT (СРЕДНЕЕ ЗНАЧЕНИЕ АРГУМЕНТА). STANDARD DEVIATION (СТАНДАРТНОЕ ОТКЛОНЕНИЕ) и SUM OF ARGUMENTS (СУММА АРГУМЕНТОВ) стоят два ряда значений. Первый ряд содержит величины, 277
f MAXIMUM AVEMACt TOTAL ZERO PERCENT AVERAGE CONTENTS CONTENTS CHTR1ES ENTRIES MHOS TIME/TRANS ОМЕ SI 14.136 1«0I 121 12.0 2542.459 mum 11 «i/trans * average timc trans excluding zero entries Jl •AVERA6C 1I ME/TRANS 2692.047 TUlt NUMBEW CURRENT CONTENTS TARLt LEMTM KNTRIE5 IN TABLE 1464 17494V UPPER LIMIT 0 5 10 IS no 25 SB 35 АО 43 50 55 DVMAIN1NC FBEaUfMTI . MEAN OBSERVED FREOUENCY 26690 29454 22976 25310 27654 14314 13297 6366 62 7T гзто 2372 392 ARGUMENT 14 14 .27( > 131 »ен or CENT TOTAL 14.02 16.64 12.76 14.06 15.36 7.95 7.36 4.66 "3.40 1.31 1.31 «21 STANDARD DEVIATION CUMULATIVE PERCENTAGE 14.6 31.4 44.2 50.2 73.6 el .6 69,0 43.6 47.1 96.4 99.7 100.0 12. 12. ■ Ol 027 SUM CUMULATIVE REMAINDER ■S.I 68.5 55.7 41.7. 26.3 16.3 10.9 6.3 2.» 1.5 • 2 .0 OF ARGUMENTS 20324.000 9*»aot>e.ooo MULTIPLE OF MEAN -.006 • 360 .700 1.060 1.400 I.7S1 2.101 2. 451 2.601 3.152 3.502 3.962 NON-KEI6HTE0 яечнтео DEVIATION •ROM MEAN -1.179 -.766 -.353 • 0 59 • 472 .666 1 .299 1.712 2. |2b 2.536 2.951 3.365 6) Рис. 5.23. Часть распечатки выходных данных для модели, показанной на рис. 5.22 подсчитанные NON-WEIGHTED (HE ВЗВЕШЕННЫМ) способом. Второй ряд показывает соответствующие WEIGHTED (ВЗВЕШЕННЫЕ) величины. Информация о OBSERVED FREQUENCY (НАБЛЮДАЕМОЙ ЧАСТОТЕ) и т. д. в оставшейся части таблицы основана на взвешенных величинах. Вспомним, что для таблицы стандартными числовыми атрибутами являются ТВ/ (таблич- ■ ное среднее), TD/ (стандартное отклонение таблицы) и ТС/ (число входов в таблицу). При использовании взвешенной таблицы (рис. 5.23, б) подсчитывается как взвешенный, так и невзвешенный набор этих величин. Возникает естественный вопрос, к какому из этих наборов применяют табличные стандартные числовые атрибуты? Ответ таков: табличные СЧА применяют к невзвешенному набору величин. Это неудобно, поскольку более вероятно, что в первую очередь разработчика, использующего* взвешенную таблицу, интересуют именно взвешенные значения среднего, стандартного отклонения и числа входов в таблицу. Однако, хотя взвешенные величины и появляются в распечатке результата, использовать их в процессе моделирования с помощью табличных стандартных численных атрибутов нельзя. 5.12. Упражнения 1. Объяснить разницу между двумя таблицами, карты определения которых показаны на рис. У1. 2. Три транзакта со значениями Р2, равными соответственно 2, 3 и 4, проходят через блок «TABULATE TABL4». В той же модели два других транзакта, величина Р2 у которых равна 5, проходят через блок «TABULATE TABL4.2». Предполагая, что других обращен»! к таблице не происходит, выяснить каковы будут величины ТВ STABL4 и ТС STABL4 после прохождения всех транзактов. Что должно находиться в операнде D карты определещ таблицы TABL4? 3. Все вопросы этого упражнения связа с рис. 5.21. а). В гл. 2 было отмечено, что самым ран: моментом времени, в который транзакты мо начать движение в модели, является еди Это означает, что содержимое всех очереде в модели обязательно равно нулю в промежуто модельного времени от 0 до 1, все прибор: обязательно «доступны» в этот промежуто модельного времени и т. д. Поскольку стал стика, подобная среднему содержимому о<м реди, нагрузки прибора и т. п., вычисляете с начала модельного времени, равного нулю в нее, таким образом, попадает небольшо смещение. На рис. 5.21 не предусмотрено введеяя в таблицу величины, отмечающей, что очеру ONE имела нулевую длину в течение модеш ного времени от 0 до 1. Показать, как моя LOCATION ТЩ jQttii TWO О^С RATION •TVJiJ ii ji? ji»J«* №p Ji Щд* |»]?Л?»|лр£ 'l?#j>»i»|*]^№fi . IAMJEu.. i .i.i, гл. i A e.CD.E.F Pll,,0,,i3i.,20, PiE.^LiSpWlQ! ■ * ■ i L.I 1.1 Рис. У1 278
Модифицировать участок на рис. 5.21 так, чтобы По значение было помещено в таблицу. Высказать затем свои соображения по поводу того, В какой степени это полезно или бесполезно. б). Предположим, что транзакт-наблюдатель ролучил приоритет, равный 1. Как это влияет ра приоритеты, которые назначаются другим (ранзактам в этой модели? в). Проанализируйте следующее утверждение: «транзакт-наблюдатель обрабатывается tetepfiperaтором GPSS ровно один раз во время каждой фазы просмотра». 1 4. Подход, использованный при составлении сегмента на рис. 5.21, заключался в том, Что единственный транзакт, циркулирующий I этом сегменте, всегда является последним I цепи текущих событий (за исключением Воследнего момента времени, когда позади него В ЦТС помещается транзакт-таймер). Показать Эквивалентный сегмент, в котором циркулирующей транзакт был бы всегда первым в цепи Текущих событий. Затем обсудить полученный Сегмент, определив: "-а) помещение в таблицу наблюдения, отме- 1ащего тот факт, что очередь ONE имела нулевую длину в период модельного времени от О to 1; ;■ б) приоритет транзакта-наблюдателя; М в) число параметров, необходимых транз- Юту-ваблюдателю; 1 т) число блоков, необходимых в сегменте; ;: д) число раз, которое транзакт-наблюдатель Может быть образован интерпретатором за каждую фазу просмотра. *Б. В упражнении 15 параграфа 2.41 рассмотрена модель гавани, используемая двумя ти- |ши судов. Один тип требует наличия только Иного буксира для подхода к якорной стоянке 1ЛИ ухода с нее другому типу требуются два буксира. Показать, как построить модель для задачи, собирающую информацию, требу- в указанном упражнении, и, кроме того, Щшвающую распределение случайной пере- |енной «время задержки занятого буксира». Минимизировать число блоков в модели, ис- Кшьзуя косвенную адресацию. "; 6. В стандартную распечатку результатов для (Иогоканальных устройств включена средняя Цяичина случайной переменной «число за- Итых приборов». Предположим, что нужно Ийти распределение этой случайной переменяй. Показать, как это может быть сделано |вя модели примера 4D, показанной U рис. 4D.2, а, где с помощью многоканального устройства моделировали работу восьми face. t'7. Когда параллельное обслуживание моде- Мруется с помощью параллельных приборов, |нтерпретатор GPSS не обеспечивает суммарной информации о случайной переменной «число занятых приборов». Показать, как-может быть получено распределение этой случайной переменной для модели примера 4D, показанной на рис. 4D.2, б, где восемь касс в банке моделируются с помощью восьми параллельных приборов. 8. В упражнении 15 параграфа 2.41 показать, как найти распределение случайной величины «время задержки занятой стоянки» в качестве функции типа рассматриваемой стоянки. Является ли в этом случае необходимым использование взвешенной таблицы? Почему да или почему нет? 9. Распределение времени пребывания в очереди, получаемое использованием таблицы в режиме QTABLE, включает нулевые входы. Показать, каким образом можно найти распределение времени пребывания в очереди при исключении нулевых входов. В частности, показать как это можно сделать в модели примера 4D, показанной на рис. 4D.2, а, где к независимо работающим кассам в байке выстраивается одна очередь. Необходимо ли в этом случае использовать взвешенную таблицу? Почему да или почему нет? 10. Покажите, каким образом в упражнении 8 параграфа 4.25 можно найти распределение случайной переменной «число судов в гавани». Нужно ли использовать взвешенную таблицу? Почему да или почему нет? 5.13. Матричные сохраняемые величины. Нарта MATRIX (ЗАДАТЬ МАТРИЦУ), карта INITIAL и блок MSAVEVALUE (СОХРАНИТЬ ЗНАЧЕНИЕ ЭЛЕМЕНТА МАТРИЦЫ) Сохраняемые величины, введенные в параграфе 5.5, составляют линейные массивы. Так, Х5 — это ссылка на пятый элемент одномерного массива, состоящего из полнословных ячеек памяти. Аналогично, ХН12 — ссылка на 12-й элемент одномерного массива, состоящего из полусловных ячеек памяти. Понятие сохраняемой величины в GPSS может быть также применено к двумерным массивам или матрицам. Такие сохраняемые величины называются матричными, или матрицами. Ниже будет рассмотрен способ задания матриц. Затем будут показаны их свойства и изложены способ задания их значений перед началом моделирования и метод изменения значений в процессе моделирования. После этого будет показано действие карт RESET и CLEAR на матрицы. 279
5.13.1. Карта MATRIX 5.13.2. Свойства матриц В отличие от одномерных массивов сохраняемых величин матричные сохраняемые величины должны быть заданы интерпретатору GPSS в начале моделирования. Это делается путем введения для каждой матрицы карты MATRIX. Эта карта формируется так, как показано в табл. 5.6. В поле имени находится числовое или символическое имя задаваемой матрицы. В поле операции должно стоять слово MATRIX. В паче операндов операнд А содержит единственный символ Н или X в зависимости от того, будет ли матрица состоять соответственно из пол условных или полнословных ячеек памяти. Операнды В и С являются константами, определяющими соответственно число строк и столбцов, из которых составляется матрица. Таблица 5.6. Формат карты, используемой для задания матрицы Поле перфокарты Имя Операция Операнды: А В С Информация, потмциемля в поле Имя магрицы (числовое или символическое) Слово MATRIX Символ Н или X в зависимости от того. из каких ячеек памяти должна состоять матрица Константа, указывающая число строк в матрице Константа, указывающая число cmn<N цов в матрице На рис. 5.24 показано несколько примеров карт MATRIX. В первом примере матрица, имеющая символическое имя PHI, определена полнословной и имеет три строки и пять столбцов. Во втором примере полнословная матрица 3 определена как состоящая из одной строки и 10 столбцов. В третьем примере показано определение полусловной матрицы 5, имеющей 10 строк и четыре столбца. Карта MATRIX в колоде ^перфокарт должна быть помещена перед любыми ссылками на рассматриваемую матрицу. Каждая отдельная матрица имеет числовое или символическое имя и состоит из полусловных или полнословных ячеек памяти. Каждый элемент в матрице, в свою очередь, занимает место в определенной строке и в определенном столбце этой матрицы. Таким образом, имя элемента матрицы состоит из следующих четырех видов информации: 1) типа матрицы (полусловиая или полно- слопная); 2) имени этой матрицы; 3) номера строки в которой стоит этотэлемент; 4) номера столбца, в котором стоит этот элемент. Для обозначения полусловного или полно- словного типа матрицы употребляют соответ- стпенно символы МН и MX. Сразу же за МН и MX следует номер или символическое имя рассматриваемой матрицы. (Если используют символическое имя, то между МН и MX и символическим именем необходимо помещать знак S.) Затем идут номера строки и столбца в указанном выше порядке, причем онн заключены в круглые скобки и разделены запятой. Так «МНЗ(2,7)» — обращение к элементу полусловной матрицы 3, стоящему во второй строке, седьмом столбце. MX$JOE(4,3) ссылается па элемент, стоящий в четвертой строке, третьем столбце полнословной матрицы с символическим именем JOE. Естественно, номера строки и столбца могут быть заданы коспенно. Например, «МХ2(Р1, Р2)» — ссылка на элемент в полнословной матрице номер 2. Номера строки и столбца этого элемента находятся соответственно из первого и второго параметров обрабатываемого в данный момент транзакта. Матричные элементы являются целыми величинами со знаком. Для полусловных матриц .величины их элементов могут лежать в диапазоне от —32768 до -f-32767 включительно; для полнословных матриц — в диапазоне от —2147 493648 до +2147 483647 включительно. Число сохраняемых величин зависит от размера доступпой машинной памяти. При объеме памяти 64К байт, например, обычно допускается пять полусловных и пять полно* (.ОСД'ЮЧ _jT_HJ. . 3, L_b J*. 0"СйаГк>»| | e,B.C.D.E,F Г»V ■■"« Ы • jftjlpjlii чТкЪТЬ |и >• u?sjttCTjM»»c I J'j»' »• xjAfxlм| м| и «Я« |«!«j|«« i«|«n«»«' IM.AT»!,* x a s , Швы* i ПРЙМЕР ! ', fftA.IK.lJAi-. i i. i Xi,i3i,i5. . „_j i j ..Li i i II ,—■—i.■ 1 • i i < I ' W**.T F'l A. ИАТ..1ЫХ- Г X'.iIi.'I'Oi i ВТОРОЙ ПРИМЕР , , 1 , ■ ■ ■ ■ • ■ ■ .. I 1 I I I I H.i.lifli.t* . i i.j ,i.J • ii ■ i м ' ' -i i. i.,.u..i —Li. i- i i.i. iЛ.i j ,i i |. Рис. G.24. Примеры, показывающие использование формата, приведенного в табл. 5.6 280
MATRIX HALFWORD SAVEYALUE 2 COL. 1 2 3 A a ROW 1 600 200 350 1250 0 2 650 900 1050 0 0 3 250 300 500 2500 2350 Рис. 5.25. Пример, показывающий, в каком виде интерпретатор GPsS осуществляет выдачу на печать полуслов- ЮЙ матрицы сохраняемых значений слоеных матриц. Конечно, число элементов в каждой матрице будет зависеть от способа задания размеров матрицы с помощью соответствующих карт MATRIX. Элементы матрицы могут быть использованы как стандартные числовые атрибуты для косвенного ввода данных в операнды блоков .и т. п. Например, всякий раз, когда транзакт входит в блок «ADVANCE МН2(1,5),Р2», среднее время задержки определяется выборкой из равномерного распределения MH2(l,5):tP2. Величина элемента, стоящего в первой строке, ритом столбце полусловной матрицы 2, будет вспользована в качестве среднего значения этого распределения, а величина параметра 2 будет использована как модификатор размаха. В конце процесса моделирования все матрицы автоматически выводятся на печать. Содержимое матриц может быть также распечатано в процессе прогона с использованием блока PRINT. Это достигается введением в операнд С этого блока обозначения MX или МН. Например, если транзакт входит в блок «PRINT 1, 3, MX», то будут распечатаны полнословные матрицы 1, 2 и 3. На рис. 5.25 проиллюстрировано, каким образом матрицы выдаются на печать. На рисунке показана пол условная матрица сохраняемых величии 2. Она состоит из трех строк i пяти столбцов. Величина, стоящая в первой строке, первом столбце матрицы, равна 600; В первой строке, втором столбце — 200 и т. д. Три элемента матрицы содержат значения, равные 0. 6.13.3. Карта INITIAL (ИНИЦИАЛИЗИРОВАТЬ) Обычно интерпретатор GPSS перед началом моделирования устанавливает значения всех элементов матрицы равными нулю. По желанию пользователя некоторым элементам матрицы жгут быть присвоены ненулевые значения лри использовании карты INITIAL (ИНИЦИАЛИЗИРОВАТЬ). Эта карта имеет форму, показанную на рис. 5.26. Поле имени, как видно из |ВВсунха, не используется. В поле операции 'Стоит слово INITIAL. Основной единицей информации в поле операндов является сочетание Щт j, величина,-», где именем является имя ('& матрицы, элементы которой должны полу- Имя Не пользуется Операция INITIAL Операнды Имя^ величина]/.../имя/, величина,/...,'имяи. величина,, Рис. 6.26. Формат карты для задания начальных значений величии в матрице чать начальные значения, а величиной является начальное значение. Примерами основных единиц являются «МХ2 (1, l),—555», «MH$ANN (5, 2), 77»и«МН1 (2, 3), 20». Величина, входящая в основную единицу, может лежать в диапазоне от —32768 до 32767 включительно для полусловных матричных сохраняемых величин и в диапазоне от —2147483648 до 2147483647 включительно для полнословных матричных сохраняемых величин. Для разделения основных единиц в карте INITIAL используется знак «/». Внутри основных единиц и между ними пробелы не Допускаются. Информация не может заходить за 71-й столбец карты. Если на одной карте недостаточно места для задания всех необходимых начальных значений элементов матрицы, необходимо использовать несколько карт INITIAL. На рис. 5.27 приведено несколько примеров кар^ INITIAL для матрицы. В первом примере в каждой из трех различных матриц одному элементу назначается ненулевое значение. Этот пример показывает, что в карте INITIAL нет ограничений на порядок расположения основных единиц. Нет необходимости группировать полусловные и полнословные матрицы вместе, более того, нет необходимости в том, чтобы номера рассматриваемых матриц располагались в порядке возрастания. (Заметим, что поле имени, которое нигде не используется, вообще не показано на рнс. 5.27.) Если значения ряда последовательных элементов в строке одинаковы, то основная единица может быть использована в Зюрме, соответствующей такой записи: «МХЗ (1, 1—3), 2», как показано во втором примере. В этом примере интерпретатор присвоит значение 2 в качестве начального значения трем элементам, стоящим в первой строке и перво.м-третьем столбцах полнословной матрицы 3. Аналогично, если ряд последовательных элементов в столбце должен принять одно и то же начальное значение, то может быть использована основная единица вида«МН2 (2—5,3), —1», как показано в третьем примере. Такая единица повлечет за собой присвоение интерпретатором величины —1 в качестве начального значения четырем элементам полусловной матрицы 2, стоящим в третьем столбце и втором-пятом строках этой матрицы.
>!» mime u * i>Miiii.ie I IWITIAli .1. A 0,C,D,l.,F -— :» J3f its ';>jif^»^»|w|x>|»|tt|^ffi*]^M|»[«^ii|'43 4taM4d«>M<n|k|sijul^j)>i^ MiXi5i<iai,i4i)i,Ai/iW»iiliiii»i Ха^АДь.и .од. /JftXA.La., .a.) i. гял.. LMJ.iLlAli i l-l ».Xi3il.li f|i,-.3i).r Л| i i . i i I i i i, i-i | i i i_i i I i WttJLLai^i,i3j.w.=!l;-jL i.. i_Li_ fjiijti(ii,'-ib>4^gJfl.Lt(i. Г L 1 I I J... -Д I I. .-< l_l 1_1_ _i_l _l I.J.. -Ш.ЬЫIftJL-j- j..l. ft&J l=J»xJs.<j1 rj*„j*Ju,Л I I 1 .♦. x. i.i : ._» i i i i i 4-jl-j—l_ -4-J-t_l_ I ЛкРВЫЙ ! ПРИМЕР второй пример ■ ■ ■ ■ I I ■ I ТРЕТИЙ I ПРИМЕР —1—I J .1 III ЧЕТВЕРТЫЙ1 ПРИМЕР ' ' ' -Ц ■ I. i ' ', ПЯТЫЙ I ПРИМЕР Рис 5.27. Примеры, показывающие использование формата, изображенного на рис. 5-2G Диапазоны изменения строк и столбцов, как было приведено во втором и третьем примерах, могут быть выражены одной основной единицей. В четвертом примере всем элементам из прямоугольной области, ограниченной строками с первой по пятую и столбцами с первого по десятый полусловной матрицы PETE, дается начальное значение, равное 1. Наконец, с помощью карты INITIAL можно также задавать диапазон матриц. В пятом примере на рис. 5.27 элементы в первой-третьей строках в четвертом столбце полнословных матриц 1—5 получают начальное значение, равное 5. Основные единицы типов, показанных в примерах 2—5, могут перемежаться с типом, показанным в первом примере. Карты INITIAL для тех элементов матриц, которые принимают участие в обеспечении величин операндов блока GENERATE и необходимы для подсчета времени между поступлениями, во входной колоде должны стоять перед соответствующим блоком GENERATE. В противном случае поступление первого транзакта в соответствующем блоке GENERATE будет спланировано при нулевых значениях соответствующих матричных элементов. 5.13.4. Блок MSAVEVALUE Значение одного элемента матрицы изменяется при прохождении транзакта через блок MSAVEVALUE (СОХРАНИТЬ ЗНАЧЕНИЕ ЭЛЕМЕНТА МАТРИЦЫ). Этот блок и его операнды А, В, С, D и Е показаны на рис. 5.28. Когда траизакт входит в блок MSAVEVALUE, величина операнда D присваивается элементу матрицы, стоящему в строке В и столбце С, в А-матрице. Поскольку одновременно могут существовать и пол условная, и полнословная матрицы с одинаковым именем (числовым или символическим), го операнд Е обеспечивает задание рассматриваемого типа. Если операнд Е не используется, то матрица подразумевается полнословной. Для указания того, что происходит обращение к полусловной матрице, в операнде Е необходимо указывать символ Н. Как и блоки ASSIGN и SAVEVALUE, блок MSAVEVALUE может быть использован как в режиме приращения и вычитания, так к в режиме замещения. В режиме приращения прежнее значение элемента матрицы увеличивается на величину, стоящую в операнде D. 1 ( MSAVEVALUE ) А.8.С.0.Е I Рис. 5.28. Блок MSAVEVALUE с операндами А, В, С D и Е: Поле Л В с о Е Значение ИмяТматрицы (числовое или символическое), в которой следует изменить элемент Номер строки Номер столбца Величине, используемая в процессе изменения значения Нуква Н означает, что рассматриваемая матрица полусловиого типа; если рассматривается полнословная матрица, то поле Е оставляется пустым Результат ала значение по умолчанию Ошибка > » » Матрица принадлежит к полнословаоку типу В режиме вычитания она уменьшается на величину операнда D. Режим приращения и вычитания задается помещением соответственно знака плюс или минус непосредственно перед запятой, отделяющей операнды А и В. 5.13.5. Действие на матрицы карт RESET и CLEAR Матричные величины не изменяются под воз>; действием карты RESET. При обработке аю интерпретатором карты CLEAR все они обну*] ляются. Для матричных сохраняемых величин нет возможности использовать избирательную] карту CLEAR, как это было введено ранее для сохраняемых величин. Если некоторые матрнЦ ные элементы должны,иметь значения, отличный от нуля, перед началом следующего прогонал то в колоду между картой CLEAR и следующее картой START должны быть помещены cootl ветствующие карты INITIAL. 282
6.14. Пример моделирования 5С. Модель производственного цеха I 1. Постановка задачи. Некоторый производственный цех имеет шесть различных групп Механизмов. Каждая группа состоит из определенного числа механизмов данного типа фабл. 6СЛ). Например, первая группа состоит ■$$ 14 отливочных блоков. Внутри каждой ^»уппы механизмы идентичны друг другу. |Гаким образом, не имеет значения, какой 'аменно блок используют для выполнения опе- фацин отливки или какой именно фрезерный Станок используют для фрезерования и т. д. ^■воца 5С1. Состав групп механизмов :1 пряхере производственного цеха 5С ■'. Яокер , группы ,. Тт 1 ■' J 2 ь 3 s J 'I 6 ft* Механизмы а группе Тип 1 Отливочные блоки Токарные стайки Строгальные ствики Сверлильные станки Фрезерные станки Шлифовальные станки Число, шт. Тип 3 14 5 4 8 16 4 f. В производственном цехе выполняют три Еичных типа работ. Каждый тип работы ует, чтобы операции выполняли при уча- определенных типов механизмов в заданной !]юследрвательиости. Общее число и типы работ, ;1 также соответствующая последовательность гйрохождения показаны в табл. 5С.2. Например, работы типа 1 должны пройти четыре этапа ^работки. Обрабатывающие ^механизмы пере- ЯЬклены в том порядке, в котором должна проводить обработка; ими являются отливочный [блок, строгальный, токарный и шлифовальный Цпнки. В таблице указано также среднее время, «ребуемое каждому типу работы £ на каждую [разводимую операцию. Например, для типа 1 Шаботы операция отливки занимает в среднем |25 мин. Все времена выполнения распределены Экспоненциально. ' Работы поступают в цех по закону Пуассона |» средним значением 50 работ в восьмичасовой рабочий день; 24% работ принадлежат типу 1, Щ% типу 2, а оставшиеся являются работами ЙЧгаа 3. Тип поступающей работы не зависит от Bbro, какого типа работа поступила перед ней. к Построить GPSS-модель, имитирующую" раиту производственного цеха. Выполнить про- |он модели за время, эквивалентное пяти нрокачасовым рабочим неделям. В конце каж- КЙ недели выдать на печать: 1) распределение Неыени пребывания работы в цехе как функцию вша работы и 2) распределение общего числа Таблица 5С.2. Последовательность прохождения и средние времена обработки для трех типов деталей в примере 5С Тип детали 1 2 3 Общее число механизмов, через которые нужно пройти, шт 4 3 5 Последовательность прохождения через механизмы Отливочный][блок Станок: строгальный токарный шлифовальный Станок: фрезерный сверлильный токарный Отливочный блок Станок: фрезерный сверлильный строгальный шлифовальный |№ 125 35 20 60 105 90 65 235 250 50 30 23 работ в цехе, основанное на наблюдениях, делаемых в конце каждого дня в течение недели. Вместо того, чтобы накапливать статистику, собрать ее нужно так, чтобы она была разделена по неделям. Предположить, что обслуживание в каждой группе механизмов происходит в порядке поступления («первым пришел — первым обслужен») вне зависимости от типа работы. Предположить также, что между последовательными восьмичасовыми рабочими днями нет промежутков. 2. Метод построения модели. Было бы сравнительно просто моделировать производственный цех, используя три сегмента модели, по одному на каждый тип работы. Когда тран- закт-работа поступает в модель, можно определить ее тип, а затем этот транзакт может быть направлен в соответствующий сегмент модели. Он проходил бы там через естественную последовательность блоков, состоящую из комбинации ENTER—ADVANCE—LEAVE для каждого механизма, на который он бы поступал. На лротяжении всей модели операнды блоков определялись бы непосредственно как константы. Описанный выше подход имеет следующие недостатки: а) потребуется сравнительно большое число блоков и б) полученная модель не будет гибкой. Вместо такого подхода будет продемонстрирован другой, использующий матричные сохраняемые величины для построения компактной модели. Принципиальной частью требуемой модели является единственная последовательность ENTER—ADVANCE—LEAVE. Эта последовательность может быть применена для моделиро-
вания использования последовательности механизмов для всех типов работ при условии, что будут обеспечены следующие условия. 1. Номер рассматриваемой группы механизмов должен быть введен в операнд А блоков ENTER и LEAVE. 2. Среднее время рассматриваемой операции должно стоять в операнде А блока ADVANCE. 3. Каждый транзакт-работа должен проходить через последовательность блоков ENTER-ADVANCE—LEAVE нужное число раз (один раз для каждой используемой группы механизмов). Ниже будут рассмотрены шаги, обеспечивающие выполнение этих пунктов. \ Что касается jjn. l и 2, то соответствующие номера группы механизмов могут быть записаны в матрицу последовательности прохождения в нужном порядке, а соответствующие средние времена обработки могут быть занесены в матрицу среднего времени обработки. Тогда в блоке ENTER транзакту-работе просто нужно указать на соответствующую ячейку в матрице последовательности прохождения, для того чтобы получить номер группы механизмов, к которой он должен поступить; аналогично, после того, как механизм в группе, занят, транзакт-работа может указывать на соответствующую ячейку в матрице среднего времени обработки для того, чтобы найти необходимую величину операнда А блока ADVANCE. Наконец, что касается п. 3, то число групп механизмов, через которые работа должна пройти, может быть записано в параметр транзакта-работы, как только он поступает в модель. После каждой выполненной операции параметр следует уменьшать на единицу и затем проверить, остались ли еще операции, которые необходимо выполнить (т. е. проверить, уменьшилось ли значение параметра до нуля). Если осталась хотя бы одна операция, то транзакт-работа вновь проходит через последовательность ENTER — ADVANCE — LEAVE. Затем параметр уменьшается, снова проверяется и т. д. В результате построенная модель получается весьма компактной. Рассмотрим подробнее возможность задания и использования матриц последовательности прохождения и среднего времени обработки. В табл. 5С.З показана матрица последовательности прохождения в предположении, что для имитации на GPSS групп механизмов с 1 по б использованы соответственно многоканальные устройства с 1 по 6. В матрице три строки, каждая для своего типа работы. В соответствии с максимальным числом групп механизмов, через которые должна проходить какая-либо работа, матрица содержит пять столбцов. Заметим, что номера столбцов интерпретируются как число групп механизмов, через которые Таблица 5С.З. Матрица последовательности прохождение длв примера 5С Строка (тип детали) 1 2 3 Столбец (число групп ысхан ihmob, которме еще необходимо пройти) 1 6 2 6 2 2 4 3 3 3 5 4 4 1 5 5 I данная работа еще должна пройти. Величина внутри матрицы интерпретируется как номер группы механизмов, к которой эта работа должна перейти. Например, как показано в табл. 5С.2, работа типа 1 должна пройти через четыре механизма. Когда она поступай в цех, число механизмов, через которые она должна пройти, равно 4. В четвертом сгалбвд первой строки табл. 5С.З номер группы механизмов, к которой необходимо перейти (т. е. первая группа, к которой следует поступить), оказывается равным 1. Первая группа механизмов состоит из отливочных блоков (см. табл. 5С.1). Как показывает табл.5С.2, первой операцией, которую следует выполнять для типа 1 работы, является отливка. Таким обра^ зом, в первой строке четвертого столбца матршш последовательности прохождения содержится необходимый номер группы механизмов. После' завершения отливки работа типа 1 должна пройти только через три механизма. В первой строке третьего столбца матрюш последовательности прохождения должен соответственно находиться номер группы механизмов, к которой перейдет работа. В этой клетке матрицы стоит число 3. Третья группа механизмов состоит из строгальных станков (см. табл. 5С.1), и, как показывает табл. 5С.2, второй операцией для первого типа работы] действительно является обработка на строгальном станке; и т. д. В приведенном выше объяснении подразумевали, что порядок прохождения для данного типа работы считывается с матрицы (табл. 5С.З) справа налево. Например, если для второй строки матрицы произвести считывание сирам палево, то последовательность прохожденщ операций для типа 2 работы получится «5—4—ft, (Во второй строке в столбцах 4 и 5 нет значении потому что тнп 2 работы проходит всего черчГ три механизма.) Обращаясь к табл. 5С.1, нахм дим, что последовательности «5—4—2» соотвея ствует последовательности «фрезерование! сверление—токарная обработка». Это соинР суется с последовательностью обработки тнм | показанной в табл. 5С.2. ] В табл. 5С.4 приведена матрица средне времени обработки. Номера строк и столби! имеют те же значения и смысл, что и в таЯ 5С.З. Величины матричных элементов являют!
Млида 5С.4. Матрица среднего времени обработки щ примера 5С Отрока (1ВП детали) 1 2 3 Столбец, (число групп мехиииэмоп, которые еще и «обходи но пройти) 1 600 650 250 2 200 900 300 3 350 1050 500 4 | 5 1250 2500 2350 средними временами обработки, выраженными В десятых долях минуты (единица времени, используемая в модели). Обращения к элементам табл. 5С.4 непосредственно связаны с обращениями к соответствующим элементам табл. 8С.З. Например, когда тип 1 работы проходит обработку на механизме группы 1 (первая строка четвертого столбца табл. 5С.З), сроднее Время этой обработки равно 1250 десятых долей минуты (первая строка четвертого столбца табл. БС.4). Затем, когда тип 1 работы пере- Ходит к механизму группы 3 (первая строка третьего столбца табл. 5С.З), среднее премя Обработки на нем равно 350 десятых дЪлей шуты (первая строка третьего столбца табл. 5С.4) и т. д. Транзакту-работе очень просто указать соответствующий элемент в матрицах последовательности прохождения и среднего времени обработки. Предположим, что когда транзакт- работа входит в модель, тип этой работы кодируется в первом параметре единицей, двойкой Таблица 5С5. Таблице определений примера или тройкой. Таким образом, первый параметр может быть использовал в качестве указателя строки матрицы. Предположим далее, что после прибытия транзакта-работы число механизмов, через которые он должен пройти (т. с. «еще должен пройти»), записывается во второй параметр. Тогда второй параметр может быть использован в качестве указателя столбца матрицы. После выполнения первой операции величина второго параметра уменьшается па единицу, означая, что: 1) эта величина может быть интерпретирована как число механизмов, которое еще необходимо пройти, и 2) эту величину можпо продолжать использовать как указатель столбца матрицы. Предположим, что для последовательности прохождения используется нолусловная матрица сохраняемых значений 1. Тогда «МН1(Р1,Р2)» косвенно определяет нужный номер группы механизмов по только что описанной схеме. Предположим далее, что для среднего времени обработки используется полусловная матрица сохраняемых значений 2. Тогда «МН2(Р1,Р2)» косвенно определяет соответствующее среднее время обработки, так как между этими двумя матрицами существует поэлементное соответствие. На этом заканчивается описание матричного подхода к процессу моделирования. Ниже будут приведены блок-схема и подробная распечатка программы для рассмотрения отдельных деталей. 3. Таблица определений. Единица времени: 0,1 мин. моделирования 5С Элемент QPS.S Траизакты: 1-й сегмент модели 2-е сегмент модели Функции: GRUPS JTYPE XPDIS Матрицы сохраняемых значений (полусдовные): 2 Многоканальные устройства 1, 2. 3, 4, 5. 6 Таблицы: 1. а, з Интерпретация TJOBS Переменные: COUNT Деталь: Pi — первый параметр принимает значения 1, 2 и 3, означая соответственно детали типов 1, 2, 3 Р2 — второй параметр указывает па общее число групп механизмов, через которые эта деталь «еще должна пройти» Траызакт-таймер Функция, описывающая общее число групп механизмов, через которые должна пройти каждая деталь Функция, описывающая распределение типов в общем потоке поступающее деталей Экспоненциальная функции распределения Матрица последовательности прохождения Матрица среднего времени обработки Многоканальные устройства, используемые для имитации ipynn механизмов соответственно с 1 по 6 Таблицы, в которые заносится время пребыла пня в цехе деталей соответственно 1, 2 и 3-го типов Таблица, используемая дли записи общего числа деталей в цехе п конце каждого дня Переменная, неличика которой равна общему числу деталей в цехе 285
4. Блок-схема. GENERATE ^ ee,FN$XPDIS ll,FN$JTYPE| Г ASSIGN J /AAA) 2,FN$GRUPS ( (E 1 1 ( (C F ASSIGN ) ехт) . ENTER 1 MH1 (PI.P2) BB) , ' ADVANCE J (P1.P2)FN$XPD|S 1 ' ' MHl (P1.P2) LEAVE 1 ♦ 2-.1 ASSIGN CC) * ) ° (NEXTi ПОСТУПЛЕНИЕ РАБОТ В ЦЕХ ПОЛОЖИТЬ PI РАВНЫМ ТИПУ РДБОТЫ ПОЛОЖИТЬ Р2 РАВНЫМ ЧИСЛУ ГРУПП, ЧЕРЕЗ КОТОРЫЕ НЕОБХОДИМО ПРОЙТИ ЗАНЯТЬ МЕХАНИЗМ СЛЕДУЮЩЕЙ ГРУППЫ ПРОЦЕСС ОБРАБОТКИ ЗАНЯТЬ МЕХАНИЗМ СЛЕДУЮЩЕМ ГРУППЫ ОПРЕДЕЛИТЬ ЧИСЛО ГРУПП ЧЕРЕЗ.К0ТОРЫЕ Щ1НУЖНОПРОЧТИ РАБОТА ЗАКОНЧЕНА? ЕСЛИ НЕТ. ТО ПЕРЕЙТИ К СЛЕДУЮЩЕЙ ГРУППЕ ДА. ЗАПИСАТЬ ВРЕМЯ. ПРОВЕДЕННОЕ В ЦЕХЕ ПОКИНУТЬ ЦЕХ GENERATE I L 4800 \ TABULATE X RMINA" TJQS] TERMINATE ПОСТУПЛЕНИЕ ТАЙМЕРА В КОНЦЕ КАЖДОГОДНЯ ЗАПИСАТЬ ЧИСЛО РАБОТ В ЦЕХЕ УМЕНЬШИТЬ СЧЕТЧИК ЧИСЛА ЗАВЕРШЕНИЙ 2-Й СЕГМЕНТ МОДЕЛИ 1-Й СЕГМЕНТ МОДЕЛИ Рнс. 5С.1, Блок-схема примера моделирования 5С
5. Распечатка программе. •соек. NUMBER *LOC OPERATION SIMULATE A.B.C.D.EtF.G COMMENTS' FUNCTION DEFINITIONS) NO* OF MACHINE GROUPS EACH JOB 1 Y)»E VISITS DISTRIBUTION OF JOB-TYPES 6RUPS FUNCTION PI.03 t.4/2,3/3,5 JTYPE FUNCTION RNI.D3 .24.1/.66,2/1.3 XPOIS FUNCTION TINI.C24 EXPONENTIAL DISTRIBUTION FUNCTION 0,0/.t..l04/.2..222/.3,.3S6/.4..S09/.S>.69/.6,.91S/.7. 1.2/.75,1.38 «B.I.6/.B4.1*63/.SB,2. >2/.9,2.3/.42,2.52/.94 «2.В1/.95.2.99/.96.3.2 .97,3.3/.9в.3.9/.99,4.6/.995,5.3/.99в,6.2/.999,7/.999В .8 MATRIX SAVEVALUE DECLARATION!S>/INITIALI2AT1QN(S> MATRIX Н.Э.5 MATRIX OF VISITATION SEQUENCES INITIAL NHIII, D.6/MHK l.2).2/Mnl< 1.3),3/MH1I I ,4 1,1 INITIAL MHI(2.1>,а/ИН1<2.2).4/МН1I2.3),5 INITIAL МИ КЗ. D.6/HH 1(3,2) ,3/MHl (З.Э) ,4/MHl ( 3.4 > .5 INITIAL MH143.5I.1 MATRIX Н.З.Ь И..1.1Х (IF MEAN MACHINING TIMES INITIAL MH2I1,1I.600/MH2.l«2).200/MH2l1,3><350/MH2<1.»).1250 INITIAL MH212.1 >,6S0/HH2 12.2).900/Mrt2( 2.3) .1050 INITIAL MH2(3. 1).2SO/MH2(3.2).300/MH2I3,3),500/MH2(3<4 >.2500 INITIAL MM2(3,5L23S0 STORAGE CAPACITY OEFINIT1 ONI S > STORAAC STORACE Sl,14/S2.S/S3,4 S4.6/SS.I6/S6.4 TABLE DEFINITION!S) TABLE TABLE TABLE TJOBS TABLE П1.2*00.2400, to MU2400.24eo.I0 NI.240O.2AO0. 10 VSCOUNT, 10.IO.S PROVlOE 14» 5. AHO 3 MACHINES IH GROUPS 1, 2. AND 3, RESPECTIVELY PROVIDE в, 16. ANO 4 MACHINES IN GROUPS 4. Э. AND 6. RESPECTIVELY SHOP RESIOENCE TIME (TYPE 1 JOBS) SHOP RESIDENCE TIME (TYPE 2 JOBS) SHOP RESIOENCE TIME I TYPE 3 JOBS) TOTAL JOBS IN THE SHOP * VARIABLE OCFINITION(S) * COUNT VARIABLE WSAAA4-WSB6B+WSCCC TOTAL JOBS IN THE DMOP 1 2 10 11 12 13 \ * 6 AAA NEXT BBB CCC £ * • • • Ш MOOEL 5EGK GENERATE ASSIGN ASSIGN ENTER ADVANCE LEAVE ACSIGN test e TABULATE TERMINATE «NT t 96.FNSXP0IS 1,FN»J TYPE 2.FNSGRUPS MH1IPI.P2) MH2(PI.P2>. MH1(PI.P2> 2-.1 P2.0.NEXT PI NOOEL SEGMENT 2 GENERATE TABULATE TERMINATE «BOO tjobs 1 CONTROL CAR OS START RESET START RESET START RESET START RESET START CttO s s 5 S S JOBS ENTER THE SHOP SET PI = JOB TYPE SET P2 m NO. OF GROUPS TO VISIT CAPTURE A MACHINE IN NEXT GROUP MH2(PI.P2>.FNSXP0IS MACHINING OPERATION PROCEEDS RELEASE THIS MACHINE UPDATE NO. OF GROUPS YET TO VISIT JOB DONE? IF NOT, GO TO NEXT CROUP YESI RECORD TIME SPENT IN SHOP LEAVE THE SHOP TIMER ARRIVES AT END OF EACH DAY RECORD NO. OF JOBS NOW IN THE SHOP DECREMENT TERMINATION COUNTER START RUN FDR WEEK 1 ZERO-OUT ACCUMULATED STATISTICS START RUN FOR WEEK 2 2ER0-DUT ACCUMULATED STATISTICS START RUN FOR WEEK 3 2ER0-0UT ACCUMULATED STATISTICS START RUN FOR WEEK A ZERO-OUT ACCUMULATED STATISTICS START RUN FOR WEEK Б RETURN CONTROL TO THE SYSTEM Саяо NUMBER 1 2 3 a s 6 7 а 9 10 11 12 13 14 IS 16 17 IB 19 20 21 22 23 24 25 26 27 2B 29 30 31 32 33 34 35 36 37 36 39 40 41 42 43 «4 45 46 47 «8 49 50 51 52 53 5* esse 57 SB 39 60 61 62 63 64 65 66 67 6B 69 70 71 72 73 7» 7S 76 frc. EC2. Распечатка программы примера моделирования SC
6. выходные данные. STORAGE 1 г 3 4 5 6 CAPACITY 14 5 • в 16 * AVERAGE CONTENTS 10.07* z.a*o 1.72* ».*эг 10.657 1.703 AVERAGE UTILIZATION .710 .369 • »3l .55» • 666 • *г» ENTRIES 136 i*i 110 ISO 166 106 AVERAGE цие/TRAN 1777.«30 А6Ч.560 376.299 709.166 16*0.11*3 J 85.7 16 CURRENT CONTENTS 1* Э • 2 IA 3 «!»Xll4\JM CONTENIS 1* a 4 в in * a) r«*nc tjobs ВNT»ItS IN TABLE i UPPER LIMIT 10 20 30 *o OVERPLOV AVERAGE VALUE DP MEAN OBSERVED PREOUENCT 0 0 i 1 2 OVEMPLOW ARGUMENT 3B..799 PER OP CENT TOTAL • 00 .00 39.99 19.97 39.99 SO. BO s STANDARD (DEVIATION CUMULATIVE PERCENTAGE .0 • 0 39.9 99.9 100.0 11 .62$ С JMULATIvE REMAINDER 100.0 ioo.o 60.0 *o.o • 0 SUM OP ARGUMENTS MUL OP 19* .01)0 TIPLt MEAN .2S7 • Sib • 77J 1.0 JO NON-KtIGMtta UEVIAT ION PROM MEAN -?.*TT - 1.61T -.750 »>0J 6) MATRIX HALFKORO SAVEVALUE I COL. I 2 3 *o» MATRIX HALFMORO COL. 1 SOW 1 600 г ььо 3 250 SAVtVALUE 2 III 3 1050 900 г • ?2>U 0 290 0 S 0 0 2350 Рис 5С..З. Часть распечатки результатов /гримера 5С: а — статистики по многоканальным устройствам в конце первой недели; б — распределение числа работ в цехе в конце первое иедас, основанное на наблюдениях, проводимых в конце каждого дня; в — Матрица последовательности прохождения; г — матрица среджгв врсмеци обработки < 7. Обсуждение. Логика моделирования. После детального обсуждения «метода» участок 1 модели (блоки с 1 по 10 на рис. 5С.2) можно подробно не описывать. Однако стоит остановиться иа одном пункте. Заметим, что блокам ASSIGN (блок 3), ADVANCE (блок 5) и TEST (блок 8) присвоены имена. В любой момент времени все транзакты-работы в модели находятся либо в блоке ASSIGN (ожидая входа в блок ENTER), либо в блоке ADVANCE (если они находятся в цепи будущих событий), либо в блоке TEST (ожидая разрешения на новый вход в блок ENTER). Следовательно, сумма текущего содержимого этих трех блоков равна общему числу работ в цехе. Переменная COUNT (карта 44, рис. 5С.2) имеет эту сумму d качестве своего значения. Именно эта переменная вычисляется в конце каждого дня моделирования для определения числа работ в цехе в текущий момент. Транзакт-таймер входит в участок 2 модели в конце каждого дня, записывая величину переменной COUNT в таблицу TJOBS. Значение счетчика завершений уменьшается на единицу в конце каждого дня моделирования. Уменьшению показаний счетчика числа завер- Таблица SC6. Сводка результатов моделирования для примера 5С Недоля 1 2 3, 4 5 Среднее число рпбот в цехе 38.8 36,6 41.4 2д,6 47,2 Среднее время пребывания в цехе, мим, работы типг 1 277 317 300 234 303 2 248 314 260 269 340 3 503 700 ; 625 820. 724 шений способствует транзакт-таймер. Обну. ние счетчика числа завершений вызовет прекр щение процесса моделирования. После эй интерпретатор восстанавливает модель, уют жая статистику, набранную за эту неделю начинает моделирование для следующей недел Распечатка результатов. (Общее время mq лирования на ЭВМ IBM360/67 состав! 25,3 с.) Часть распечатки выходных даны полученная в конце первой недели, показана рис. 5С.З. Результаты для моделирования пяти недель собраны в табл. 5С.6. Во результатах есть существенное различие 288
каждой недели. Тот факт, что цех начинает работу при условии пезанятости и отсутствия работ, не оказывает большого влияния ца статистику за первую неделю. Степень разброса статистики неудивительна, если учесть, в какой степени в модели используется экспоненциальное распределение. 5.15. Списковые функции Обращаясь к определению функций в примере 5С {см. распечатку программы на рис. 5С.2), заметим, что функция GRUPS имеет два свойства. 1. Она определена как дискретная. 2. Первые члены упорядоченных пар, определяющих функцию, образуют неразрывную последовательность целых чисел, начинающихся с единицы (для функции GRUPS такой неразрывной последовательностью является просто 1, 2, 3). Если функция обладает такими свойствами, ее можно определить как списковую. По опре-' целению операнд В списковой функции при- вимает форму L/, где / — число упорядоченных пар, введенных для определения самой функции. Во всем остальном списковые функции определяются как дискретные. Например, на рве. 5.29, с показано определение дискретной функции GRUPS, взятой из рис. 5С.2. На рве. 5.29, б показана эта же функция, определенная как списковая. За исключением операнда В заглавной карты функции определения идентичны. ' Для обработки списковой функции в вычислительном плане требуется меньшее время вьшол- вения, чем для эквивалентной дискретной функции. Причина этого заключается в том, что ■йггерпретатор использует аргумент функции цяя прямого обращения к массиву заданных ?Ьэ.' :jiz[uj» о|*||), " ""I /:3,..5. i«ALL. I I ' ' I ■1Г.ОМ , , |»,1, .ПД I | I "I 1 ■ ■ ' I ' ' '—•"Г1-1 •ш-+ ») I TiTro" i'i].7;'iljrt|lSj*|l»jl -FUHCIlLQti- |4|/д.г a /i3vi£i +—' >—> i—ь *.8.C0.E,F в^ор7|гГм|г*|»р«р лг*|г»ЬоГй р]й|)«|мТи| "i" '" I I fib. iLia ; i i-i x. ijlu -m- fi) . 5.29. Пример дискретной функции и эквивалентной ей исковой функции: г-дискретная функция; б — эквивалентная списковая функ- я 19 Т. Дж. Шравб«р величин функции. Таким образом, не требуется просматривать таблицу. Поэтому везде, где это возможно, предпочтительней использовать списковые функции в целях экономии времени выполнения. Если величина аргумента списковой функции выходит за диапазон, указанный в заглавной карте, интерпретатор GPSS печатает сообщение об ошибке и прекращает моделирование. Сравните это с тем, что происходит при выходе за диапазон аргумента дискретной функции. 5.16. Блок LOOP (ОРГАНИЗОВАТЬ ЦИКЛ) Блоки 7 и 8, приведенные на рис. 5С.2, схематически повторены на рис. 5.30. Целью такой двухблочной последовательности является уменьшение значения второго параметра тран- закта на единицу с последующей проверкой полученного значения на его равенство нулю. Если результат проверки положителен, то транзакт переходит в следующий блок. Если же результатом проверки является неравенство полученного значения нулю, то транзакт направляется в другой блок с именем NEXT. Случай уменьшения с последующей проверкой, показанный на рис. 5.30, часто возникает в различных вариантах моделей. Для этого предусмотрен специальный блок, выполняющий функции двух блоков, показанных на рис. 5.30. Таким образом, этот блок при входе в него транзакта выполняет следующие шаги. 1. Величина указанного параметра уменьшается на единицу. 2. Вычисленная величина параметра проверяется на равенство нулю. 3. Если параметр не равен нулю, транзакт переводится в указанный для этого случая блок, в противном случае он переходит в следующий по порядку блок. Блоком, выполняющим эти три шага, яотя- ется блок LOOP (ОРГАНИЗОВАТЬ ЦИКЛ), показанный на рис. 5.31. В операнде А блока стоит номер так называемого параметра цикла. Рис. 6.30. Повторение части блок-схемы рис. 5С. 1 289
Ряс. 5,3). Блок LOOP с операндами А и В: Операнд А В Результат по Значение ' ^ умолчанию Номер параметра Символическое имя некоторого блока Ошибка » Когда транзакт входит в этот блок, указанный параметр уменьшается на единицу, а затем проверяется, равно ли его значение нулю. Если нет, то транзакт переходит к В-блоку, т. е. к блоку, имя которого задано в операнде В блока LOOP. Когда параметр цикла равен нулю, транзакт проходит в следующий блок. Таким образом, блок LOOP, показанный на рис. 5.32, эквивалентен двухблочной последовательности, представленной на рис. 5.30. Блок LOOP может быть использован только для убывающего счета, а именно, для уменьшения значения параметра. Более того, на уменьшаемое количество существует жесткое ограничение. Оно всегда равно единице. Наконец, если при входе транзакта в блок LOOP параметр цикла меньше или равен нулю, происходит указание на ошибку, и моделирование прекращается. Если пользователь применяет блок LOOP вместо введения собственной логики уменьшения и проверки с помощью блоков ASSIGN и TEST, то тем самым достигается экономия во времени вычисления и машинной памяти. С другой стороны, использование блока LOOP требует от пользователя постоянно помнить о том, что над параметром цикла производятся вычисления. Если возникают циклы, пользователь всегда имеет возможность выбора такой логики, которая лучше служит его целям. Рве S.32. Блок LOOP, эквивалентный последовательности двух блоков, приведенных иа рис. 6.30 5.17. Упражнения 1. Эти вопросы относятся к примеру 5С. а). Объяснить, почему для подсчета числа работ в цехе в рассмотренном примере нельзя просто брать разность между общими числами вхождений в блок GENERATE из первого участка модели (блок 1, рис. 5С.2) и в блок TERMINATE (блок 10, рис. 5С.2). б). Показать блок-схему модели, имитирующей производственный цех и использующей сравнительно более простой подход, описанный в первой части раздела «Метод построения модели». Сколько блоков потребуется? (Заметим, что в нашей модели потребовалось 13 блоков.) в). Предположим, что процесс производства для работ типа 2 изменился так, что эти работы теперь проходят через четыре механизма в такой последовательности: сверлильный станок, строгальный станок, токарный станок и шлифовальный станок. Предположим также, что соответствующее среднее время обработки равно соответственно 75, 95, 60 и 10 мин. Показать, какя* изменения следуег ввести в распечатку про*: граммы на рис. 5С.2 для введения этих изменений в модель примера 5С. •! г). Используя в качестве отправной точвд^ модель из п. б, сделать в ней необходимы»] изменения, для того чтобы отразить изменений в процессе производства, описанное в п. ц Сравнить число карт, которые необходим* переделать, когда эти изменения вводятся в м» дель примера 5С. j д). Рассмотрим два события: «работа типа поступает в цех» и «операция по отливке работ! типа 3 подходит к завершению». Предположим что два эти события происходят при одном I том же показании модельного времени. Следу») щей операцией для каждой из этих работ явл! ется обработка на строгальном станке. Предо ложим, что из 16 строгальных станков в и время свободен только один; 1 1) описать условия, при которых работа типа займет единственный свободный станок; 2) описать условия, при которых рабо типа 3 займет единственный свободный стадо е). В модели примера распределение врема пребывания работы в цехе как функции та работы получается использованием трех М TABLE к блока TABULATE. Для получен этой же информации могли быть использова таблицы в режиме QTABLE. Показать, к изменить модель примера, чтобы обеспещ такой подход. ж). Модель примера делает одно наблюдя случайной величины «количество работ в ц« в день. Если бы наблюдение за величиной 9 случайной переменной проводилось непрерм в течение всего времени, а ие одни раз в д< то можно было бы получить более точ! 290
информацию. Показать, как изменить модель Примера, чтобы получить этот результат. (Указание: воспользоваться взвешенной таблицей.) г 2. в). Порядком обслуживания, принятым ■ производственном цехе в примере 5С, является первым пришел — первым обслужен». Пока- мть, как изменить модель, чтобы обеспечить Йорядок обслуживания по динамическому приоритету в каждой группе механизмов 1. !* б). Показать, что следует сделать с моделью йримера 5С и с вашей моделью из п. а, чтобы |кшю было изучить две различные примененные дисциплины обслуживания при одинаковых Экспериментальных условиях. Iе в). Провести моделирование по двум схемам, Подученным в п. б. Как проявляется влияние (Ьгашплины обслуживания по динамическому Ёриоритету на распределение времени пребыва- ия а цехе и распределение числа работ в цехе? М- Каждые 100 единиц времени в модели Икяуег собирать следующую статистику. " fi). Коэффициент нагрузки прибора JOE должен быть занесен в следующий свободный столиц первой строки матрицы DATA. (В момент Эремени 100 нагрузка заносится п первую рроку первого столбца; в момент времени 200 Мгрузка заносится в первую строку второго иолбца н т. д.) к б). Число занятий прибора JOE нужно Вносить в следующий свободный столбец вто- Мй строки матрицы DATA, р-в). Среднее время одного занятия прибора |0Е нужно заносить в следующий свободный Юлбец третьей строки матрицы DATA, г). Каждая из статистик в пп. а, б и в должна йть записана в свою таблицу. ' Показать сегмент блок-схемы, который будет 1бирать требуемую статистику. Обсудить раз- пня в информации, извлекаемой из первых рех строк матрицы DATA и из трех соответ- Йующих таблиц. i,4. а). Рассмотрим функцию GRUPS, опреде- енную иа рис. 5.29, а. Каково будет значение увкции, если: 1) Р1 = —3; 2) Р1 = 12? ■ б). Повторить п. а при условии, что функция IRUPS определена так, как показано на |Ю. 5.29, б. »>в). Каково значение ошибки выполнения 509 т приложении С? V 5. Каким трем условиям должны удовлетво- !ПЪ величины аргумента функции, если эга ункдия определена как списковая? 6. Транзакт должен 6 раз циклически пройти ер» некоторый участок модели, имея величину Итого параметра, равную 6 при первом проще, 5 при втором, 4 при третьем и, наконец, гпри шестом, последнем проходе. , ' Под обслуживанием по динамическому приоритету огамается порядок: «Требующий самого короткого ofr- |у)юмния идет первым». Прим. ред. 1в» а). Показать, какие блоки следует, поместить в начале и в конце сегмента, чтобы достичь желаемого эффекта без использования блока LOOP. б). Повторить п. а, используя только блок LOOP. 5.18. Элементы, моделирующие управление. Логические переключатели Рассмотрим элементы, наличие которых указывает на то, что в системе существует некоторое условие. Эти элементы управляют последовательностью событий в системе. Вот несколько примеров управления: замок на двери; сигнал светофора; табличка «Пройдите к следующему окну» в окошке банковского кассира; табличка «Нет мест» на автомобильной стоянке; вывеска «Закрыто» в окошке заправочной станции. Для моделирования подобных управляющих объектов в GPSS можно было бы легко использовать сохраняемые величины. Например, сохраняемая величина LOCK может быть использована для указания, открыта или закрыта парикмахерская. Величипы X$LOCK, равные 1 или 0, могут быть истолкованы, как «открыто» или, соответственно, «закрыто». Посетитель, имитируемый транзактом, подходя к двери парикмахерской, пытается войти в блок TEST, проверяющий равенство X$LOCK единице. Посетителю разрешено войти в парикмахерскую, только если она открыта, в противном случае вход не разрешен. Вместо того, чтобы вынуждать пользователя применять сохраняемые величины для моделирования управления, в GPSS существует специальный элемент, предназначенный для этой цели. Для моделирования управления служат элементы, называемые логическими переключателями. Логические переключатели являются двухпозиционпыми. Два различных положения переключателя называют не «включено» и «выключено», а соответственно «установлено» и «сброшено». Таким образом, в любой рассматриваемый момент времени данный логический переключатель в модели либо установлен, либо сброшен. Конечно, установка некоторых логических переключателей может изменяться в процессе моделирования для отображения изменяющихся условий в модели. Состояния логических переключателей можно проверять и использовать для оказания влияния на движение трапзактов в модели. Существует по крайней мере два преимущества в использовании для моделирования управления логических переключателей вместо сохраняемых величин. Во-первых, пользователю удобнее понимать управление в терминах
«включено-выключено» (т. е. установлено-сброшено), чем в терминах числовых кодов, которые возникали бы при использовании сохраняемых величин. Во-вторых, время выполнения, требуемое для изменения и проверки положения логических переключателей, меньше, чем время, требуемое на проведение тех же операций с сохраняемыми величинами. Конечно, логические переключатели имеют ограниченное применение, поскольку их значения ограничены только двумя возможными состояниями. Может быть, окажется необходимым использование сохраняемых величин для моделирования^более сложных управляющих элементов. Например, светофор находится в одном из трех состоянии: красный, зеленый или желтый. Эти три состояния легче представить с помощью сохраняемой величины, а не логического переключателя. Обычпое число логических переключателей в модели при объеме машинной памяти 64К, 128К и 256К байт равно соответственно 200, 400 и 1000. Подобно приборам, многоканальным устройствам, очередям, функциям, таблицам и сохраняемым величинам логические переключатели должны иметь числовое или символическое нмя. При назначении имен выполняются обычные правила. 5.19. Управление логическими переключателями. Карта INITIAL и блок LOGIC (ВОЗДЕЙСТВОВАТЬ НА ЛОГИЧЕСКИЙ ПЕРЕКЛЮЧАТЕЛЬ) В этом разделе будет описан метод задания положения логических переключателей перед началом моделирования, а также способ изменения их положений в период моделирования. Затем, в параграфе 5.20, будет введен блок, используемый для проверки статуса логического переключателя. 5.19.1. Карта INITIAL Логические переключатели, как и сохраняемые величины, существуют в модели автоматически вне зависимости от того, используются они или Имя Опсраця я Не пользуется INITIAL Операнды /.../LSHMRn ! Рис. б.ЗЗ. Формат карты, используемой для вачаль помещения одного или более логических переключа в положение «установлено» нет. Обычно перед началом моделированй интерпретатор помещает все логические пем ключатели в состояние «сброшено». По желаня пользователя некоторые логические переключ тел и могут быть помещены в начальное coctoi ние «установлено» с помощью карты INXTIAJ Карта имеет формат, показанный на рис. 5.3 Как видно из рисунка, поле имени не иена зуется. В ноле операции стоит слово ДОГГШ Каждая единица информации в поле операнда состоит из букв LS, за которыми следу< числовое или символическое имя логически переключателя, который должен находиты в начальном состоянии «установлено». При использовании символического ним между LS и этим именем необходимо помелю знак доллара ($). Примерами возможных зав сей в поле операндов могут служить LS LS21, LS$LOCK и LSSSYGNL. Для разде» ния последовательных единиц информащ в карте INITIAL используется знак «/», ПерМ пустой столбец, который интерпретатор bctj тит при обработке карты, будет воспринят к) сигнал о конце карты. Информация (кра комментариев) не должна заходить за 71 столбец. При необходимости следует испол; вать несколько карт INITIAL. На рис. 5.34 приведены несколько прям* карт INITIAL для логических переключ Как видно из первого примера, нет необХ! мости располагать номера рассматриваем логических переключателей в карте INITIO в порядке возрастания. Второй пример показывает, что логичесц переключатели, имеющие числовые и символ ческие имена, могут быть записаны вперемежя Интерпретатор GPSS устанавливает соотЫ ствие между символическими именами и LOCATION I U I Ш .tl-i.it i " % ij~i i' i - _■ .miiiilAii-. UtLblAl i II ■_ L3.4ZiLi$Oi/.lil2i3<L/.Li£i5jQLi_i »,B,c,o,e,f JlgMl. | ПРИЦЕР, i , , , , , ТРЕТИЙ ПРИМЕР I j—i—i iii I i ■ ' ■ JJU-L. .Si»j/iLS!»./AJi9,A.SiWjJ51Uj/1Us!21 1-1-1 ■ ; ^ -■ ■ ■ ■ ■ . ■ ■ ■ , Рис. 5.34. Примеры, показывающие использопание карты указаивого на рис. 5.33 формата 292
числовыми эквивалентами с помощью двух- шаговой процедуры, уже описанной в гл. 4 при рассмотрении других объектов изыка. Третий Вркмер показывает, что, наряду с другими переключателями, логические переключатели 8, 9, '10 и II должны быть помещены в начальное •Юяояние «установлено». Когда номера логических переключателей, начальное состояние Цюпгорых должно быть «установлено», образуют репрерывиую последовательность целых чисел, соответствующая запись в карте INITIAL мо- «ет быть сокращена до вида «LS/—LSfe», где jf и k — соответственно наименьший и наибольший номера логических переключателей в диапазоне переключателей, подлежащих «уставке». Четвертый пример на рис. 5.34 повторяет третий с использованием такой формы Лписи. ' г Состояния логических переключателей не "изменяются под воздействием карты RESET. jXapra CLEAR вызывает установку всех логических переключателей в модели в состояние «брошено». В отличие от ситуации с сохранявший величинами, избирательной карты ALEAR, позволяющей оставлять нетронутыми «стояния отдельных логических переключатели при выполнении операции очистки, не. существует. РВ конце моделирования автоматически распе- ватываются имена всех логических переключа- даей, которые находятся в состоянии «установ- Цпо». Состояния отдельных логических пере- Жючателей можно также выводить на печать |о время прогона, используя блок PRINT. яо достигается путем помещения букв LG рполе С этого блока. Например, если трапзакт Рйдет в блок «PRINT 5,I0,LG», то будут введены на печать состояния логических пере- аяочателей с 5 по 10. Ш2. Блок LOGIC ЕЬстояиие логического переключателя может ■пениться, если транзакт войдет в блок pOGIC. Этот блок, его операнд А и вспомогательный оператор X показаны на рис. 5.35. тогда транзакт входит в этот блок, указанный Югнческий переключатель помещается в половине «сброшено», «установлено» или инвертируется, в зависимости от того, является ли Шмратор отношения соответственно R, S или I. г В табл. 5.7 показано, в каком состоянии будет родиться переключатель после выполнения ВДорограммы блока LOGIC в зависимости шк от его предварительного состояния, так и н используемого оператора отношения. {Состояние логического переключателя обяза- мьио изменяется лишь в том случае, когда рератором отношения будет I. Для операторов ряошеиия R и S в момент входа транзакта i LOGIC X А Рнс. 5.35. Блок LOGIC со вспомогательным оператором и операндом А: Операнд А X Значение Имя логического переключателе (числовое пли символическое) Вспомогательный оператор X указывает, что следует сделать с ряссмитркваеммм логическим переключателей; ниже приведены возможные значения X X R 5 1 Производимое дейстние Сбросить логический переключатель Установить логический переключатель Инвертировать логический переключатель Таблица 5.7. Возможные действия блока LOGIC Положение переключатели перед входом транэакта н блок Сброшеио Установлеяо Сброшеио Установлено Сброшено Установлено Используемый вспомогательный оператор R R S S I I Положение переключателя после выполнении подпрограммы блокп Сброшено » Усгановлено » » Сброшеио в блок LOGIC соответствующий логический переключатель может уже находиться в нужном состоянии. Когда транзакт, прошедший через блок LOGIC, остановится в каком-то месте модели, интерпретатор начнет сначала просмотр цепи текущих событий. Это сделано потому, что могло произойти изменение положения логического переключателя и для одного илн более транзактов стало возможным продолжить свое движение. \ 5.20. Проверка состояния логических переключателей. Блок GATE (ВПУСТИТЬ) При проверке состояния логического переключателя не используются какие-либо его числовые свойства; у переключателя их нет. Из этого следует, что для управления потоком транзактов с использованием состояния логического пере- 293
ключателя «установлено» или «сброшено» требуется какой-то другой блок, отличный от блока TEST. Для этой цели используют блок GATE (ВПУСТИТЬ), показанный на рис. 5.36, с двумя операндами и вспомогательным оператором. Операнд А блока GATE указывает имя проверяемого логического переключателя. Если это числовое имя, то оно может быть указано как прямым, так и косвенным образом. Вспомогательным оператором является логический указатель, показывающий требуемое состояние логического переключателя для того, чтобы проверка была истинной. Если используется логический указатель LS, то проверка истинна в случае, когда переключатель «установлен», в противном случае проверка ложна. Когда в качестве логического указателя используется LR, то проверка истинна при «сброшенном» переключателе и ложна в противном случае. Операнд В необязателен. Если операнд В не используется, то проверку проводят в режиме отказа. Если проверка в режиме отказа не будет истинной, то клапан закрыт. Если транзакт обнаруживает, что клапан закрыт, он задерживается в блоке, предшествующем блоку GATE, и учитывается там счетчиком текущего содер- А <в)г Рнс 5.36. Описание блока GATE, иеиользуемого для проверки положения логического переключателя: Операнд А X В Значение Имя логического переключатели (числовое или символическое) Вспомогательный оператор, называемый логическим указателем; указывает положение переключатели, требуемое для истинности проверки: ипже приведены дна логических указателя для логических переключателей ЛОГИ- ЧСС- КИП указе- тель LS LR Значение Проверка услоиия «установлено» Проверка условия «сброшсио» Необязательно: ими блока, к которому переходит проверяющий транзакт, рсли логический переключатели находится в положении, не отвечающем условию проверки Результат но умолчанию Ошибка > Проверка происходит в режиме отказа жимого. С точки зрения цепей заблокированный транзакт находится в цепи текущих событий, и внутренний флаг транзакта поставлен в положение «включено» для указания того факта, что причиной блокировки является состояние некоторого логического переключателя. Когда флаг транзакта «включен», говорят, что транзакт находится в пассивном состоянии во время просмотра. Это означает, что интерпретатор не будет пытаться продвигать транзакт при последующих просмотрах цепи текущих событий. При продолжении процесса моделирования в случае исполнения блока LOGIC, ссылающегося на логический переключатель, и изменения состояния этого переключателя интерпретатор переводит флаг заблокированного транзакта (или гралзактов) в положение «выключено». Тем самым транзакт (или транзакты) вновь переходит в активное состояние. При повторном просмотре цепи текущих событий, который затем обязательно будет произведен, поскольку отработал блок LOGIC, интерпретатор попытается продвинуть ранее заблокированный транзакт (или транзакты) через блок GATE. Процесс установки о)злага как аспект внутренней логики интерпретатора, упомянутый здесь лишь вкратце, будет рассмотрен в гл. 7. Если используется операнд В блока GATE, то проверка производится в режиме условной передачи. Транзакт, поступающий в блок GATE, переходит к следующему но порядку блоку, \ если логический переключатель имеет заданное,! состояние; в противном случае он поступает, в другой блок, указанный посредством задания- его имени в операнде В. (Заметим, что блоки] GATE и TEST в режиме условной передачи] работают одинаково по отношению к истинности или ложности проводимой проверки. Транзакт} переходит из блока GATE к непоследовательному блоку, если логический переключатель не имеет заданного статуса. Напомним: «проверка, не врет — проходи влеред».) Таким образом^ в режиме условной передачи вход в GATE ие. запрещается. Транзакт, поступающий в блоку немедленно входит в него, и его дальнейший, путь определяется исполнением подпрограммы, блока. Если первый блок на этом пути запрел щает вход, то транзакт остается в цепи текущих событий и учитывается счетчиком текущего; содержимого рассматриваемого блока GATE. Затем, когда блокирующее условие на вход в следующий блок будет снято, возобновится дальнейшее продвижение транзакта. Примеры блоков GATE даны на рис. 5.37, На рис. 5.37, с блок GATE закрыт, если ло№ ческий переключатель SYGNL «сброшен», К открыт в противном случае. Если GATE закрыт,! то транзакты должны ожидать в предшествую^ щем блоке. На- рис. 5.37, б транзакты, входн щие в блок GATE, проходят к следующему" 294
») (PATH2I CHANL Рис. 5.37. Примеры блока GATE, используемого для проверки положения логического переключателя: • — режим отказа; в — режвм условной передачи Люку, если логический переключатель 10 сбро* шен; в противном случае следующим блоком, куда они попытаются войти, будет блок с именем RUTE7. $.21. Использование блока GATE с приборами и многоканальными устройствами Пребывание логического переключателя в состоянии «установлено» или «сброшено» является |ргияеским, а не числовым условием. Можно гакже определить некоторые логические условия, связанные с приборами и многоканальными устройствами. В частности, вопросы, исполь- РУется прибор или нет, заполнено многоканальное устройство или нет, пусто оно или нет, являются логическими условиями, связанными С этими объектами. Для описания этих условий ftjQPSS предусмотрены логические указатели, вносящиеся к приборам и многоканальным |Сгройствам. Блок GATE снабженный этими Ярзателями, может быть использован для ЗДро, чтобы сделать движение транзактов зави- Щуш от логического состояния приборов и. 1цшжаиальных устройств. L:Ha рис. 5.38 показаны логические указателя, коользуемые с блоком GATE и предназначен- ijv»_ U t,JF ■Леппееххя укштель fc i( se ^SNE 1. Значение Проверка занятости прибора Проверка незанятости прибора Проверка заполненности многоканального устройства Проверка незаполненного многоканального устройства Проверка того, что многоканальное устройство пусто Проверка того, что многоканальное устройство не пусто к 5.38. Логические указатели блока GATE для при ум и многоканальных устройств Рис. 5.39. Примеры блоков GATE, используемых для проверки статуса многоканального устройства н прибора: a — режим отказа: б — режвм условной передачи ные для приборов и многоканальных устройств. На рис. 5.39 приведено несколько примеров использования этих указателей с блоком GATE. (Обратите внимание на небольшие изменения в форме блока, зависящие от его использования для логических переключателей, как показано на рис. 5.37, и для приборов или многоканальных устройств, как показано на рис. 5.39.) На рис. 5.39, а трапзакты будут задержаны в блоке, предшествующем блоку GATE, до тех пор, пока многоканальное устройство CHANL не станет пустым. На рис. 5.39, б транзакты переходят из блока GATE к последующему блоку, если прибор CRANE не используется; в противном случае они переходят к блоку с именем РАТН2. Следует заметить, что логические условия для приборов и многоканальных устройств, описанные указателями на рис. 5.38, могут быть выражены путем проверки некоторой числовой информации. Например, в блоке «TEST E S$CHANL, 0» транзакт может проверить, является ли многоканальное устройство CHANL пустым. Эффект, достигаемый таким блоком TEST, аналогичен эффекту блока GATE, показанного на рис. 5.39, а. Так как величина стандартного числового атрибута F$CRANE равна 0, если прибор CRANE не используется, блок «TEST F$CRANE,0, PATH2» выполняет то же назначение, что и блок GATE на рис. 5.39, е. Спрашивается, зачем же тогдв нужно использование логических указателей для приборов и многоканальных устройств и их использование с блоком GATE? Причина заключается в том, что с точки зрения машинного времени блоки GATE экономичнее блоков TEST. Если у пользователя есть выбор между блоками GATE и TEST, то использование блока GATE более предпочтительно. (Причина большей эффективности блоков GATE, нежели блоков TEST, будет подробно объяснена в гл. 7.) Пример в параграфе 5.23 иллюстрирует использование в модели блоков GATE и LOGIC. Затем в параграфе 5.25 приводится более сложная задача, требующая использования блоков GATE и LOGIC. 295
5.22. Использование блока SELECT в логическом режиме Как было описано в гл. 4, блок SELECT может быть использован в режиме оператора отношения для просмотра заданного набора элементов одного типа в поисках такого элемента, который удовлетворяет сформулированному числовому условию. Представляется естественным расширить сферу применения этого блока так, чтобы исследуемое условие относилось к логическому статусу элементов. Тогда можно было бы, например, просматривать группу логических переключателей для определения хотя бы одного из них, находящегося в состоянии «-установлено», или просматривать группу многоканальных устройств для нахождения хотя бы одного незаполненного и т. д. Для обеспечения такой возможности с блоком SELECT можно использовать те же логические указатели, которые были введены для блока GATE. Рис. 5.40. Определение блока SELECT для использования в логическом режиме: Операнд А U и С X F Значение Помер параметра, в который будет записан номер объекта, удовлетворяющего поставленному условию Соответственно наименьший и наибольшая номера в ряду просматриваемых элементов одной группы Логический указатель; указывает условие, которое должно выполняться; паже показаны допустимые логические указатели чески ft указатель LS LR и NU SF SNF SE SNE Условие, которое должно иыполняться Логический переключатель установлен Логический переключатель сброшен Прибор используется Прибор ие используется Многоканальное устройство заполнено Многоканальное устройство ле ааполнено Многоканальное устройство пусто Миогонаиальиос устройство ие пусто Необязательно; имя блока, куда перейдет выбирающий транзакт в случае, если ни один на просмотренных элементов не удовлетворяет требуемому условию Результат по умолчанию Ошибка > Выбирающий транзакт безусловно переходит в еле. дующий блок Рис 6.41. Примеры использования блока SELECT в логическом режиме: а — альтернативный выход ие определен; в — альтернативны! выход определен На рис. 5.40 показан блок SELECT и даны указания по его использованию в логическом режиме. Операнды А, В, С н F служат для тех же целей, что и в случае использования блока SELECT в режиме оператора отношения. Вспомогательный оператор, в качестве которого используется логический указатель, однозначво определяет как рассматриваемый тип элемента, так и условие, которое должно выполняться. На рисунке не указано, как использовать операнды D и Е, и их не используют. На рис. 5.41 даны два примера использования блока SELECT в логическом режиме. На рис. 5.41, а указаны логические переключатели с 7-го по 11-й для выяснения, находится ля хотя бы один из них в положении «установлено». Номер удовлетворяющего условию логического переключателя следует поместить в 15-й параметр выбирающего транзакта, который переходит в следующий по порядку блок. Если ни один из логических переключателей с 7-го по 11-й ие находится в положении «установлено», то 15-й параметр выбирающего транзакта становится равным нулю, а транзакт также переходит в следующий блок. На рис. 5.41, б указаны многоканальные устройства с 5-го по 8-й для нахождения среди них хотя бы одного незаполненного. Если незаполненное многоканальное устройство найдено, его номер заносится в 1-й параметр выбирающего транзакта, который затем пере-, ходит в следующий блок. Если же все много-: канальные устройства из диапазона с 5-го до 8-го заполнены, то 1-й параметр остается 6esj изменения, а выбирающий транзакт переходтд в блок с именем FULUP. 296
5.23. Пример моделирования 5D. Задача о заправочной станции 1. Постановка задачи. В табл. 5D-1 приведено распределение интервала времени между прибытиями автомашин на заправочную станцию. Время обслуживания автомашин подчиняется распределению, приведенному в табл. 5D.2. Машина останавливается на обслуживание лишь в том случае, если число ожидающих обслуживания автомашин меньше или равно числу обслуживаемых машин (это означает, что машина останавливается, если водитель видит, что в состоянии ожидания находится не более одной машины на колонку). Машины, которые не останавливаются, уезжают на другую заправочную станцию и, таким образом, уменьшают прибыль. Таблица 6D. I. Распределение интервалов между прибытиями автомашин в примере моделирования 5D Интервалы между прибытиями, с Меньше 0 100 200 300 > Суммарная частота 0.0 0,25 0.48 0,69 Интервалы между прибытиями, с •* «5 «о Суммерная частота 0.£1 0.90 1.0 Таблица 5D.2. Распределение времени обслуживания &пи примера моделирования SD Время обслуживания, с Меньше 100 200 300 400 Суммарная частота 0,0 0,06 0.21 0,48 Время обслуживания, с 500 600 700 Суммарная частота 0,77 0,83 1.0 Заправочная станция открыта с 7 ч до 19 ч. В 19 ч выключают свет, что означает, что машины, поступившие позднее 19 ч не обслуживаются. Тем не менее все машины, попавшие в очередь до 19 ч, должны быть обслужены. Подсчитало, что прибыль с одной обслуженной машины составляет в среднем 1 доллар, включая заработок служащих н другие постоянные расходы. На каждой колонке работает один служащий. Заработок служащих составляет 2,5 доллара в час и выплачивается только за 12-часовой рабочий день, даже если они задерживаются после 19 ч для того, чтобы закончить обслуживание ждущих машин. Другие постоянные расходы составляют 75 долларов в день. Владельцу станции нужно определить, сколько служащих следует нанять для того, чтобы максимизировать дневную прибыль. Построить GPSS-мадедь, имитирующую работу станции, а затем использовать эту модель для ответа на поставленный вопрос. Провести моделирование для каждого числа нанятых служащих в течение пяти дней. Сделать модель способной управлять условиями эксперимента так, чтобы различные варианты были исследованы при идентичных условиях. Также предусмотреть в модели, что в случае возникновения временного узла между событиями завершения обслуживания машины и прибытием другой машины завершение обслуживания было бы обработано в первую очередь. Это эквивалентно предположению о том, что водитель прибывшей машины видит возможность завершения обслуживания. Таким образом, при некоторых обстоятельствах, водитель вместо того, чтобы уехать, предпочтет остаться на обслуживание. И, наконец, если есть временной узел между событиями поступления автомашины на станцию и закрытием заправочной станции в конце дня, прибывшей машине должно быть разрешено попасть на станцию Паред тем, как последняя будет закрыта. 2. Метод построения модели. В основном структура модели ясна. Существуют только три особенности модели, которые требуют обсуждения. Первая связана с закрытием заправочной станции в конце каждого дня, вторая относится к вычислению ежедневной прибыли и третья связана с обеспечением двух различных временных узлов, которые могут возникать. Закрытие станции требует координации между основным сегментом модели и временным сегментом. После 12 ч работы машинам не разрешается входить в основной сегмент модели. Это можно осуществить путем помещения блока «GATE LR LOCK» сразу же после блока GENERATE, используемого для поступления машин. Когда логический переключатель LOCK сброшен, блок GATE открыт; это означает, что транзакт-мзшина может войти в модель. По умолчанию начальное положение логического переключателя «сброшено». Затем, когда тран- закт-таймер появится через 12 ч, оп тут же поступит в блок «LOGIC S LOCK», закрывая тем самым Доступ в основной сегмент модели. Таким образом, доступ машин на станцию будет запрещен. После закрытия станции транзакт-таймер должен ждать до тех пор, пока все машины, находящиеся в это время в очереди, не будут обслужены. Это можно осуществить с помощью блока TEST, работающего в режиме отказа, где транзакт-таймер будет вынужден ждать до тех пор, пока число машин, обслуживание которых завершено, не будет равно числу машин, поступивших на обслуживание в течение дня. Это эквивалентно требованию равенства 297
общего числа входов в два произвольно выбранных блока модели. Таким образом, гранзакгу- таймеру легко определить, когда он сможет заняться вычислением дневной выручки и закончить моделирование. Вычисление дневной прибыли требует знания числа обслуженных за день машин. Эта величина равна числу занятий многоканального устройства, используемого для моделирования служащих станций. Ежедневный доход зависит также от числа служащих на станции. В конце рабочего дня ни один служащий не находится в состоянии занятости. В этот момент чдело служащих равно оставшейся емкости используемого для моделирования служащих многоканального устройства. Для правильного обращения с возможными временными узлами между событиями завершения обслуживании и событиями прибытия автомашин требуется использование блока PRIORITY. Перед тем, как транзакт-машина войдет в блок ADVANCE, где имитируется время обслуживания, его приоритет должен стать выше, чем приоритет, с которым транзакт- машина входит в модель. Таким образом, при одновременном возникновении двух указанных событий, транзакг, готовый войти в блок LEAVE (и освободить служащего), находится ближе к началу цепи текущих событий, нежели трапзакт, моделирующий прибывшую машину. Следовательно, завершение обслуживания имеет более высокий приоритет, чем поступление машины. Наконец, если возникает временной узел между прибытием машины и закрытием станции, то прибывшей машине должно быть разрешено попасть на станцию и быть обслуженной (если, конечно, водитель не уезжает со станций из-за большого числа уже ожидающих машин). Этот возможный узел разрешается путем назначения транзактам-машинам более высокого приоритета (посредством операнда Е в их блоке GENERATE), чем транзакту-таймеру. Таким образом, в момент закрытия траизакт-таймер находится в самом конце цепи текущих событий. Если в этот момент машина поступает, то для нее блок GATE открыт, затем он будет закрыт транзактом-таймером. 3. Таблица определений. Единица времени: 1 с. Таблица 5D.3. Таблица определений для примера 5D Элемент CPSS Транзакты: 1-й сегмент модели 2-й сегмепт модели Функции: 1АТ STIME Логические переключатели: LOCK Очереди: Сохраняемые величины: 1 Многоканальные устройства: Переменные: NET i Интерпретация Автомашина: Р1 — время, необходимое, для обслуживания .машины Таймер Функция, описывающая распределение между временем прибытия машин Функция, описывающая распределение времени обслуживания машин Логический переключатель, имитирующий состояние заправочной станции «открыто*—(закрыто» Очередь, в которой машины ждут обслуживания Сохраняемая величина, куда заносится ежедневная выручки Многоканальное устройство, полная емкость которого равна числу служащих на станции Переменная, величина которой равна дневной прибыл» после подсчета расходов 298
4. Блок-схема. GENERATE I 1 . V FN$IAW | (GOIN) IZO PRIORITY (DONE) 1 LEAVE J37 (BYBYE) TERMINATE. ~£ i tj^minni б. ■ МАШИНЫ ПРИБЫВАЮТ НА СТАНЦИЮ СТАНЦИЯ ОТКРЫТА? ПРИНЯТЬ И РАВНЫМ ВРЕМЕНИ ОБСЛУЖИВАНИЯ ЧИСЛО МЕНЬШЕ ИЛИ РАВНО ЧИСЛУ ОБСЛУЖИВАЕМЫХ? ЕСЛИ НЕТ. ПЕРЕЙТИ К BYBYE ДА: ПРИСОЕДИНИТЬСЯ К ОЧЕРЕДИ ЗАНЯТЬ СЛУЖАЩЕГО ВЫЙТИ ИЗ ОЧЕРЕДИ УВЕЛИЧИТЬ ПРИОРИТЕТ ОБСЛУЖИВАНИЕ ОСВОБОДИТЬ СЛУЖАЩЕГО ПСХИНУТЬ СТАНЦИЮ GENERATE L ь 43200 N$GO!N LOCK ВЛАДЕЛЕЦ ПРИХОДИТ В МОМЕНТ ЗАКРЫТИЯ УСТАНОВИТЬ ЗНАК-ЗАКРЫТО' N$OONE ПОДОЖДАТЬ КОНЦА ОБСЛУЖИВАНИЯ ПОСЛЕДНЕЙ МАШИНЫ ЗАПИСАТЬ ДНЕВНУЮ ПРИБЫЛЬ TERMINATE , УЙТИ ДОМОЙ 2-Й СЕГМЕНТ МОДЕЛИ 1-Й СЕГМЕНТ МОДЕЛИ ГОЛ. Блок-схема примера моделирования 5D
5. Распечатка программы. BLOCK NUMBER »LOC * OPERATION A.B.C.O.E«F.G COMMENTS SIMULATE NUN-STANDARD RANDOM NUMER SEQUENCE IN I T IALIZAT ION IS > RMULT 111 SET RANDOM NUMBER SEUUENCE FOR 1ST RUN • FUNCTION v>tF!NI TlONtS) IAT FUNCTION RNI.C7 INTER-AMR1VAL TIME DISTRIBUTION О .0/.25, WQ/.*B,2QQ/.bb, ЗОО/.Ы . л О0/. 9, 5 00/1 ,600 ST 1Mb FUNCTION RNI.C7 SERVICE TIMfc DISTRIBUTION O, 100/. 06. 200/.2 I .300/.4B.*00/.77,500/.93.600/I.700 STORAGE CAPACITV DEF INI T t ONI S > STORAGb SI, I CONFIGURE FUR 1-ATTfcNDANT CASE 0E«- |NE VAR 1 ABLC< S > VARIABLE 5Cl-7b-30»RI MODEL. SECfENT Г I г з ♦ s 6 7 а 9 to II 12 13 It lb 16 GENERATE GATE LR ASSIGN ТЕЬТ LE OUEUE ENTER OEPART PRIORITY ADVANCb LEAVE FN»IAT.... 1 LOCK. I.FNSSTIME OLS! ,BYBYE 1 1 1 г pi l BYBYE TERMINATE MODEL SEGMENT 2 GENERATE LOGIC S TEST E. SAVEVALUE TERMINATE «3200 LOCK N*GUIN,N*DUNE I,vsnET 1 OAY'S PROFIT Al-TER COSTS Cars approach station station open? set pi = latent service time no. waiting <г no, in service? IF NOT. GU UYByE YtSI GET IN LINE CAPTURE AN ATTENDANT GET 0U1 OF LINE RAISE PHlpRITY TO RESOLVE POTENTIAL ARRIVAI?/'I>EPARTURE TIE SERVICING I'KUCfrEDS ftJtE THE ATTENDANT LEAVE. THE STATION Closeup time; omner arrives SET "NOT U«»tN" SIGNAL HAIT 'TIL LAST CAR IS SERVICED RECORD DAY"., NET PMUF1T CO HOME CONTROL CAROS AND STORAGE CAPACITY Rf-OEF IN I T I UNS START RNid.T CLEAR START RMULT CLEAR START RMULT CLEAR START RMULT CLEAR START RMULT CLEAR STORAGE START 1 333 1 SSS 1 777 1 999 1 HI SI.2 1 START 1ST RUN IOAY SET RANDOM NUMBER CLEAR fOft 2ND RUN START 2ND RUN (DAY SET RANDOM NUMBER CLEAR FOR 3R0 RUN START 3RD RUN (OAY 5ET RANDOM NUMBER CLEAR FOR 4TH RUN START ATH RUN (DAY SET RANDOM NUMBER CLEAR FOR STH RUN START STH RUN IOAY SET RANDOM NUMBER CLEAR FOR 6TH RUN RE-CONFIGURE FOR 2 START 61H RUN IOAY l; 1 ATTENDANT! SEQUENCE FOR 2ND RUK г; i attenoant» SEOUENCE FDR 3RD RUN 31 1 ATTENDANT) SEOUENCE FOR ATH RUN 1 ATTENDANT! SEQUENCE FOR STH RUN St I ATTENOANT1 SEOUENCE FOR 6TM RUN ATTENDANTS i; г atte/»d.«nts> CARD NUMbER 1 2 3 A S О 7 8 9 JO 1 1 12 13 1A IS 16 17 IB 19 го 22 24 2S 2b 27 2B 29 30 31 92 33 3* зъ 36 37 за J9 «О «I «2 «3 44 AS 46 47 4B 49 ЬО. si S2 S3. 54 SS 56 S7 se s« 60 61 62 63 »* RMULT CLEAR STORAGE START I 11 SI.3 1 RMULT CLEAR START ENO '999 SET RANDOM NUMBER SEOUENCE FOR' IITH RUN CLEAR FOR IITH RUN RE-CONFIGURE FUR 3 ATTENDANTS START IITH RUN «DAY It 3 ATTENDANTS! SET RANDOM NUMBER SEQUENCE FOR ISTH RUN CLEAR FOR* 15TH RUN START ISTH RUN (DAY St 3 ATTENDANTS! RETURN CONTROL TQ OPERATING SYSTEM Рие. 6D.2/ Распечатка программы примера моделирования GD 77 76 7» 60 9ф 91 92 93
6. Выходные данные. Результаты даны в следующем параграфе. 7. Обсуждение. Логика моделирования. Обратим внимание на то, каким образом на рис. 5D.1 транзакт-таймер ожидает окончания обслуживания всех ждущих машин. Он ожидает в блоке TEST, работающем в режиме отказа во 2-м сегменте модели. Условие, которое должно быть выполнено для того, чтобы проверка была истинной, заключается в том чтобы MGOIN было равно NSDONE. GOIN есть имя блока QUEVE 1-го сегмента модели, a DONE — имя блока LEAVE в этом же участке. Два рассматриваемых счетчика числа входов будут равны лишь тогда, когда последняя ожидающая машина обслужена и выйдет ,из модели. '- В переменной NET (карта № 20 на рис. 5D.2) SC1 — счетчик числа занятий первого многоканального устройства. Это число равно числу нашил, обслуженных за рассматриваемый день. .При средней выручке в I доллар за машину fro есть доход за данный день. Эта величина .уменьшается на 75 долларов, составляющих расход не на заработную плату. Стоимость оплаты служащих вычисляется как 30* R1, № 30 — это 30 долларов, зарабатываемых 'Каждым служащим в день (12 ч, помноженные М 2,5 доллара в час); R1 — число служащих, работающих на станции. Строго говоря, R1 ■равно оставшейся емкости первого многоканального устройства, однако в момент вычисления «ременной NET многоканальное устройство jrjrcro, это означает, что R1 равно его полной JMKOCTH. Заметим, что на рис. 5D.2 в качестве аргу- ,|квта как функции времени между прибытием, JBK и функции времени обслуживания исполь- :|руется общий генератор случайных чисел RN1 pi. упражнение 8, б параграфа 5.24). Заметим Шоке, что для обеспечения начальных условий RKl для различных дней используют карты [JMULT. Сначала это может показаться страной, поскольку в примере 4D (сравнение Вьтернативных вариантов системы обслужива- *м в банке) при очень схожих модельных условии, не было необходимости использовать карты ЯМШТдля повторения условий эксперимента. fjuxo в примере 4D транзакт-таймер прекра- я моделирование в момент своего появления, примере 5D транзакт-таймер в общем случае Прекращает моделирование лишь по истечен|и ■Которого времени после своего прибытия. В-это время, пока таймер ждет освобождения ианции, на пути к станции находится следующей транзакт-машина. Если этот транзакт- рашина поступит в блок GENERATE перед М, как прекратится моделирование, из RN1 Идет взята величина, которая «пропадет» (см. рараграф 3.22). Поскольку возникает такое Таблица 5D.4. Сводка результатом моделирования для примера SD День 1-Й 2-й 3-й 4-й 5-й ч 1 1 2 а —1 2 пело служащих 2 36 50 46 24 52 3 15 24 25 —5 29 изъятие из RN1 и неясно, как оно зависит от момента прекращения моделирования и времени моделирования, то этот эффект будет зависеть от конфигурации модели. Это означает, что момент прекращения моделирования зависит от числа служащих, работающих иа заправочной станции. Теперь предположим, что на третий день моделирования при двух служащих произойдет такое изъятие из RN1. Предположим также, что на третий день при трех служащих этого не произойдет. В результате, если оставить RN1 без изменения, то для двух различных конфигураций модели начальные условия RN1 будут разными. Таким образом, в четвертый день не будет совпадепия в условиях эксперимента. Такая проблема легко разрешается введением карты RMULT между последовательными днями. Это обеспечивает независимость начального отсчета RN1 от конфигурации модели. Распечатка результатов. (Общее время моделирования на ЭВМ IBM 360/67 составило 17,6 с.) В табл. 5D.4 указана дневная прибыль в долларах для различных прогоноп. Ясно, что случай с двумя служащими миксимизирует дневную прибыль. Другие случаи в среднем также дают прибыль, однако в четвертый моделируемый день происходит даже потеря. (В четвертый день на станцию поступило всего 160 машин, тогда как число машин, поступивших на станцию в 1, 2, 3 и 5-й дни, равно соответственно 180, 189, 190 и 194. Этим объясняется, почему прибыль, указанная для четвертого дни, сравнительно низкая.) 5.24. Упражнения I. Светофор может быть либо красным, либо зеленым. Когда зажигается красный свет, он горит в течение 3 мин. Если он переключается на зеленый, то остается в этом положении 2 мин. Используя логический переключатель LIGHT для имитации светофора и принимая в качестве зеленого света положение «сброшено», показать сегмент модели, переключающий сигнал светофора указанным образом. Предположить, что
единица времени равна 1 с и что в начале моделирования светофор был зеленым. 2. а). Используя приложение F, указать карту REALLOCATE, которая уменьшает число логических переключателей в модели до 100. б). Предполагая, что модель используется при объеме памяти 64К байт, расширить информацию карты REALLOCATE для случая в п. а таким образом, чтобы память, высвобождаемая при уменьшении числа логических переключателей, добавлялась к области COMMON. в). Указать карту INITIAL, которая поместит логические переключатели ALPHA, BETA и 7 в положение «установлено» перед началом моделирования. г). Проанализировать следующее утверждение: карта CLEAR не изменяет состояния логических переключателей. д). Предполагая, что транзакт вызвал исполнение блока LOGIC, сказать, что будет делать интерпретатор GRSS после того, как этот транзакт остановится в своем движении. е). Что означает высказывание: транзакт находится в пассивном состоянии? Если тран- закту было отказано во входе в блок «GATE LR 7» и он попал в пассивное состояние, при каких условиях он вновь станет активным? 3. Проанализировать следующие утверждения. а). Счетчик текущего содержимого блока LATE, работающего в режиме отказа, всегда равен нулю. б). Если транзакт останавливается в своем движения в блоке GATE, работающем в режиме отказа, то следующий блок, в который транзакт будет пытаться войти, необходимо определить. в). Счетчик текущего содержимого блока GATE в режиме условной передачи всегда равен нулю. г). Если транзакт остановился в своем движении в блоке GATE с режимом условной передачи, то следующий блок, куда транзакт будет пытаться войти, необходимо определить. 4. Для каждой из следующих задач указать блок GATE в режиме отказа, который будет закрыт до тех пор, пока не выполнится указанное условие. а). Логический переключатель MARK «установлен», б). Прибор 9 не используется, в). Многоканальное устройство TUGS пусто. 5. Для каждой из следующих задач указать блок GATE в режиме условной передачи, который вызовет переход транзакта в блок с именем BYPAS в случае, если не будет выполнено указанное ниже условие. а). Логический переключатель JOE «сброшен» б). Прибор CRANE занят. в). Многоканальное устройство 21 не заполнено. б. а). Составить список всех условий, при которых пользователь имеет возможность выбирать между блоками GATE и TEST. Какой из этих двух блоков следует использовать при наличии выбора и почему? б). Указать блоки GATE, эквивалентные следующим блокам: I 1) TEST NE n$SUPS,0; 2) TEST E FJCPU.l,BYPAS; 3) TEST GE RlO.l- 7. а). Показать, как можно использовать логический указатель с блоком SELECT, целью которого является просмотр приборов с 1-го по 10-й для определения хотя бы одного из них, находящегося в данный момент в пользования. • Если такой прибор найден, его номер следует поместить в 12-й параметр выбирающего траям закта. Если же такого прибора не окажется! выбирающий транзакт после завершения просмотра должен перейти к блоку, следующему за блоком SELECT. б).. Предложить для п. а другое решение»; используя на этот раз в качестве дополяитеи1 ного оператора блока SELECT не U, а Е. в). Перечислить условия, при которых поль« зователь может использовать с блоком SELECT как логический указатель, так и оператор отношения для обеспечения желаемого результате Что кажется более «естественным» для испо№ зования при наличии выбора: логический ув* затель или оператор отношения? г). Указать блок SELECT, который мо: использовать для просмотра логических nepi ключателей с 5-го по 8-й для нахождения * бы одного из них в положении «установл! Если такой переключатель найден, его hoi следует поместить в первый параметр выбир щего транзакта. Если в указанном диапв: нет логического переключателя в полож* «установлено», то выбирающий транзакт Д| перейти к блоку с именем SHUKS. 8. Следующие аопросы относятся к приме 6D. а). Показать, как заменить блок ТЕ во 2-м сегменте модели блоком GATE. 06a нить преимущества или недостатки использм ни я блока GATE вместо блока TEST в модели. б). Указать: 1) какие обращения к ft используются для вычисления времени мей прибытием транзактов-машин, 2) какие обр ния к RNI используются для опредея! требуемого времени обслуживания маш 3) какие обращения к RNI «пропадают». (У] зание: см. метод моделирования в примере *' 302
в). Следующие вопросы относятся к блоку «TEST LE Q1.S1.BYBYE»: J) какие условия должны выполняться на заправочной станции, перед тем как транзакт переходит не к следующему после блока TEST блоку при одном служащем? двух служащих? трех служащих? 2) показать, каким образом определить переменную с именем ITSOK, так, чтобы блок «TEST LE QI.S1.BYBYE» можно было заменить блоком «TEST LE Ql,V$ITSOK. BYBYE», сохранив тот же результат при его выполнении; 3) какой из двух возможных блоков в п. 2 кажется вам предпочтительнее и почему? г). Предположим, что пользователь решил заменить блок «TEST E NSGOIN, N$DONE» блоком «TEST E Q1.0». Почему это неверно? д). Предположим, что блок ADVANCE в модели имеет имя GOTEM. Будет ли справедлива замена блока «TEST E NSGOIN, MDONE» блоком «TEST E WSGOTEM.O»? Подробно объяснить правильность или неправильность такой замены. 9. В станке используют детали, которые периодически выходят из строя. Как только используемая деталь ломается, станок должен быть выключен. Затем неисправную деталь удаляют и вместо нее устанавливают исправную запасную, если она имеется в наличии или как только появится в наличии, и станок вновь включают, Неисправные детали ремонтируют, и их можно использовать вновь. Время работы детали распределено по нормальному закону со средним 350 ч и стандартным отклонением 70 ч. Время изъятия отказавшей детали из станка равно 4 ч. Время, необходимое для того, чтобы заменить деталь, равно 6 ч. Время ремонта отказавшей детали распределено по нормальному закону со средним и стандартным отклонением соответственно 8 и 0,5 ч. Оператор, обслуживающий станок, снимает отказавшую деталь и устанавливает исправную. За ремонт неисправных деталей отвечает механик. В обязанности механика входит также ремонт других изделий, поступающих к нему. Поступление этих других деталей подчинено закону Пуассона со средним интервалом между поступлениями, равным 9 ч. Время их ремонта равно 8з=4 ч. Они имеют более высокий приоритет при ремонте, чем неисправные детали, используемые в рассматриваемом стайке. Эта система схематически изображена на рис. У9. Каждый пустой кружок представляет собой либо исправную деталь в «резервном состоянии», либо деталь, находящуюся в станке. Перечеркнутые кружки обозначают детали в «неисправном» состоянии. Другие детали, поступающие на обслуживание к механику, обоз- (У- .Деталь в станке Станок О о о Исправные запасные детали. 1 \ НеаепраВмые детали Другие 8етали,постум- ggi letuut 8 ремонт __ \ Другие неисправные \ детали й {L Механик возврат атренвнти- f\ равлнныл деталей. Рис У9 Возврат других деталей начены перечеркнутыми квадратами. Как отмечалось выше и как показано на схеме, эти детали при ремонте имеют более высокий приоритет, чем отказавшие: они встают в очередь на ремонт впереди любых неисправных деталей, ожидающих ремонта. Построить GPSS-модель для системы «станок—детали», используя подход, при котором транзакт имитирует деталь. Таким образом, число транзактов, проходящих через сегмент модели «станок—детали», будет равно общему числу деталей, находящихся в системе. Использовать модель для подсчета коэффициента использования станка как функции числа запасных деталей. Исследовать систему для случаев, когда в наличии имеются ноль, одна и две запасные детали. Выполнить каждый прогон для моделирования работы в течение 5 лет, предполагая 40-часовую рабочую неделю. Для каждой конфигурации проследить за условиями эксперимента, с тем чтобы продублировать во всех случаях поток поступления других деталей и условия их взаимодействия с неисправными деталями. 10. Прочтите постановку задачи для примера 5Е (модель автобусной остановки) в следующем параграфе. а). Перед тем, как разобрать пример, попробуйте разработать GPSS-модель, имитирующую события, происходящие на остановке автобуса. б). Прочтите теперь метод построения модели. Попытайтесь разработать GPSS-модель, следуя описанному подходу, не читая пример дальше. 5.25. Пример моделирования 5Е. Модель автобусной остановки 1. Постановка задачи. По расписанию автобус должен приходить на остановку каждые 30 мин, однако возможно его опоздание на 1,5±1,5 мин. Опоздание автобуса никак не зависит от опоздания предыдущего автобуса и не влияет на опоздание следующего. 303
Приход людей на автобусную остановку подчиняется закону Пуассона с интенсивностью 12 человек каждые 30 мии. Автобус вместимостью 50 человек в момент своего прибытия везет 35:±:15 человек. После того, как от трех до семи пассажиров выйдут (распределение равномерное), в автобус входят столько ожидающих, сколько возможно. Тс, кто не смог сесть после того, как автобус заполнился, уходят и больше не возвращаются. Для высадки пассажира требуется 4^:3 с, а для посадки — 8±:4 с. Пассажиры выходят и входят один за другим. Ожидающие не начинают посадки до тех пор, пока из автобуса не выйдут все желающие. Посадка производится в соответствии с правилом «первые пришел — первым обслужен». Вес пришедшие на останолку во время посадки имеют право войти при условии, что для них есть место. В случае временного узла между событиями «автобус закончил посадку» и «прибыл еще один пассажир» прибывший пассажир садится в автобус (при условии, конечно, что для него есть место). Построить GPSS-модель, имитирующую события на автобуспой остановке. Приспособить модель для сбора следующей информации. 1. Собрать статистику очереди, в которой находятся люди, ожидающие автобуса, включая распределение времени ожидания в очереди. 2. Найти распределение случайной переменной «число необслуженных пассажиров на один прибывающий автобус». Выполнить прогон модели до 25 прибытий и уходов автобуса. 2. Метод построения модели. Модель состоит из двух сегментов: 1-й сегмент моделирует пассажиров, приходящих на автобусную остановку, ждущих автобуса и затем либо уезжающих, либо уходящих; 2-й сегмент моделирует автобус и алгоритм, по которому происходит высадка из автобуса. 1-й сегмент модели. Каждый транзакт-пзс- сажир, поступивший в модель, входчт в блок «QUEUE WAIT», где остается до тех пор, пока не придет автобус и пока не подойдет очередь этого транзакта-пассажира попытаться сесть в автобус. Если эти условия выполнены, двери автобуса (BUS) открыты для транзакта- пассажира. Транзакт выходит из очереди и в блоке TEST, работающем в режиме передачи, проверяет, будет ли значение сохраняемой величины NOWON меньше 50. (Эта сохраняемая величина используется в качестве счетчика числа людей в автобусе, находящемся на остановке.) Если мест нет, траизакт-пассажир добавляет единицу к сохраняемой величине MAD и уходит из модели. (Сохраняемая величина MAD используется для подсчета числа людей, котфым не удалось попасть в пришедший автобус.) Если в автобусе есть место, траизакт-пассажир переходит в блок, следующий за блоком TEST, и закрывает вход п автобус (BUS). (Это сделано для того, чтобы следующий пассажир не пытался совершить посадку до тех пор, пока не сел рассматриваемый.) После задержки в 8=ь4 с транзакт-пассажир подсчитывает значение сохраняемой величины NOWON, затем открывает BUS для следующего ожидающего транзакта-пассажира н уходит из модели. 2-й сегмент модели. Транзакт-автобус вво- * дится в модель каждые. 30 мин. Затем ои переходит в блок ADVANCE, где моделируется задержка. (Время задержки в блоке ADVANCE может быть равно нулю, и в этом случае автобус прибывает во-время.) Выходя из блока ADVANCE, транзакт-автобус выбирает число из распределения числа пассажиров в автобусе и заносит результат в сохраняемую величину NO WON. Затем он производит выборку из распределения числа пассажиров, желающих выйти, и заносит этот результат в параметр 1. Используя затем параметр 1 в качестве параметра цикла, транзакт-автобус выпускает все: желающих, моделируя соответствующую задержку времени и корректируя при этом сохраняемую величину NOWON. После выхода из цикла транзакт-автобус открывает BUS и затеи ждет до тех пор, пока последний пассажир из тех, кто может сесть в автобус, не закончит посадку. Затем транзакт-автобус записывает в GPSS-таблицу число необслужепиых людей и обнуляет сохраняемую величину MAD (для того чтобы назначить этому счетчику его начальное значение для следующего автобуса). Наконец, транзакт-автобус закрывает BUS и выходит из модели. В качестве упражнения попытайтесь построить блок-схему этой модели. Затем посмотрите на блок-схему, приведенную на рис. 5E.I. и сравните ее с построенной. 3. Таблица определений. Единица времени: 1 с. 304
Таблица 5Е.1. Таблица опредемняй примере моделировавии 5Е Элемент OPSS Трапзакты: 1-й сегмент модели 2-й сегмент модели Функции: XPD1S ONBUS OFF Логические переключатели: BUS Очереди: LINE Сохраняемые величины: MAD NOWON Таблицы: INQUE MAD Интерпретация Пассажир Автобус: Р1 — сиачало число людей, желающих выйти; затем число людей в автобусе, которым еще необходимо выйти Экспоненциальная функция распределения Функция распределения числа пассажиров в автобусе в момент прибытия на остановку Функция распределения числа выходящих из автобуса пассажиров Логический переключатель; в положении «сброшено» указъгоаег на одновременное выполнение следующих условий: 1) автобус находится на остановке и 2) следующему пассажиру можно попытаться произвести посадку Очередь ожидающих автобуса Счетчик для определения числа людей, не сумевших сесть в находящийся на остановке автобус Счетчик для определения числа пассажиров в прибывшем на остановку автобусе Таблица для оценки распределения времени пребывания в очереди Таблица для оценки распределения случайной переменной «необслуженные люди на один автобус* Й Т. Дж. Шрайбер 305
4. Блок-схема. GENERATE ^ ПРИХОД ЛЮДЕЙ ^. НА АВТОБУСНУЮ 150,FN*XPDIS,„1 ОСТАНОВКУ X$NOWON {GETON) СТАТЬ В ОЧЕРЕДЬ ПОДОЖДАТЬ ОТКРЫТИЯ ДВЕРЕЙ АВТОБУСА выйти из ОЧЕРЕДИ ЕСТЬ ЛИ В АВТОБУСЕ МЕСТО? ЕСЛИ НЕТ. ПЕРЕЙТИ К MAD ДА: ЗАКРЫТЬ BUS ПЕРЕД СЛЕДУЮЩИМ ПАССАЖИРОМ НА НЕКОТОРОЕ Р.РЕМЯ ВОЙТИ В АВТОБУС (MAD) С SAVEVALUE -.VALUE J iVD+,1 I X", TERMINATE LP МОДИФИЦИРОВАТЬ СЧЕТЧИК ОТКАЗОВ НЕОБСЛУЖЕИНЫИ ЧЕЛОВЕК УХОДИТ SAVEVALUE NOWON+J LOGIC IRMIN/ BUS TERMINATE ПОДСЧИТАТЬ ЯИСЛО ЛЮДЕЙ В АВТОБУСЕ ОТКРЫТЬ BUS ДЛЯ СЛЕДУЮЩЕГО ЧЕЛОВЕКА РАССМАТРИВАЕМЫЙ ПАССАЖИР СЕЛ В АВТОБУС 1-Й СЕГМЕНТ МОДЕЛИ. Рис БЕЛ. Блок-схема примера моделирования 5Е
GENERATE \J800 [ ADVANCE 90,90 С SAVEVALUE J NOWON >N$ONBUS I.FNfcOFF С ASSIGN J (NrXT/ I ADVANCE 4.3 '' С SAVEVALUE J NOWON-,1 LOOP LOGIC Q$LINE W$GETON ПРИБЫТИЕ АВТОБУСА КАЖДЫЕ 30 МИН ЗАДЕРЖКА ОЗНАЧАЕТ ОПОЗДАНИЕ АВТОБУСА УСТАНОВИТЬ X$NOWON РАВНЫМ ЧИСЛУ ПАССАЖИРОВ В АВТОБУСЕ УСТАНОВИТЬ PI РАВНЫМ ЧИСЛУ ЖЕЛАЮЩИХ ВЫЙТИ ВЫХОДИТ СЛЕДУЮЩИЙ ПАССАЖИР ПОДСЧИТАТЬ ЧИСЛО ПАССАЖИРОВ В АВТОБУСЕ ВЫПУСТИТЬ СЛЕДУЮЩЕГО ПАССАЖИРА (ЕСЛИ ЕСТЬ) ОТКРЫТЬ BUS АВТОБУС" ЖДЕТ, ПОКА ВЧЕРЕДЬ ОПУСТЕЕТ УБЕДИТЬСЯ.ЧТО ПОСЛЕДНИЙ ПАССАЖИР СОВЕРШИЛ ПОСАДКУ 1 TABULATE mad] С SAVEVALUE J MAD 0 LOGIC BUS TERMINATE U3 ЗАПИСАТЬ ЧИСЛО НЕОБСЛ УЖЕННЫХ ОБНУЛИТЬ СЧЕТЧИК "ИЕОЕДОЖЕННЬ'Х" ЗАКРЫТЬ'ВUS АВТОБУС УЕЗЖАЕТ Рк. 6Е.1. Продолжение 2-И СЕГМЕНТ МОДЕЛИ 20* 307
5. Распечатка программы. SLOCK NUMBER OPERATION A.B.C.O.E.F.G SIMULAT£ FUNCTION DEFINITIONS) COMMENTS С ДНО NUMBER 2 г 10 11 13 34 1? i«> 1? П) it ze 21 za 23 ?* 25 26 XPDZS FUNCTJON RNJ.C24 E XVONEHT tAL. О tST#ie{ITTON FUNCTION 0,0/. l,.104/.2».222/.3,.3b5/.4..S>09/.5, .69/.6 . . 91 5/. 7 , 1.2/.75.1., 33 .в,1.б/.а».1.вз/.ав,2.]г/.9.г.з/.9г»г.ьг/.дч.а.вl/.95,2,49/.96,3.2 .9 7.3 ..5/.98,3.9/.99,*. 6/.995, 5.3/. 998 , 6. г/ .999 .7/.9998 .в DN9U5 Function rni»c2 oisTejeuTJON of people on AWRjyjwo bus 0,20/1.51 off Function rni.cj о istsibution of people getting off bus о.з/i>e * * TABLE DEFINITIONS) IMCUE MAO OTABLE TABLE LINE.300.300.7 TIME SPENT WAITING AT BUS STOP XSMAD.0.1,10 PEOPLE КОТ SERVED PER BUS MODEL SEGMENT 1 GET M.10 семЕЯАте Queue GATE LS Depart test u LOGIC R ON AOVANCE SAVEVALUE LOGIC S TERMINATE SAVEVALUE ТЕЙМШАТЕ •lSOiFNSXPDIS.,.1 LINE eus LINE XSNOWONiSO , MAU BUS a,* MOW0N+,1 BUS MAO+,1 MODEL SEGMENT 2 NEXT <5£(ЧЕ«АГЕ AOVANCE SAVEVALUE ASSIGN ADVANCE SAVEVALUE LOOP LOGIC S TEST E TEST E TABULATE SAVEVALUE LOGIC ft TERMINATE laao 90,90 NOflDNoFNSQNeUS ltPNSOFF **Э NOWON-,1 l.NEXT BUS QSLJNE.O WSGETON.O. HAD MAD.O BUS 1 CONTROL CAH.OS STA4 Г SS\0 2S PEOPLE ARRIVE AT BUS STOP JOIN WAITING LINE WAIT «TIL THE BUS-GATE IS OPEN LEAVE THE WAITING LINE IS THERE ROOM LEFT UN THE BUS? IF NOT , GO Aw AY MAO YES! CLOSE THE BUS-GATE ON THE NEXT PASSENGER FOR NOW CLIMB ABOARD THE BUS UP0AT6 THE NO. NOW ON THE BUS OPEN THE BUS-GATE FOR NEXT PERSON CURRENT PERSON IS MOW ABOARO IC-OATE THE "MAO" CCHJNTTR 60 AtfAV MAO BVS APPROACHSS EVEfel' 30 «IWUTE5 ANY DFLAY HERE MEANS THE BUS IS LATE SET XSNOWON =s NO. ЬШН ON THE BUS 3£T PI = hlD» WHO KANT TO GET OFF NEXT PESSDN GETS OFf= UPDATE THE NO. NOW ON THE BUS LOOP BACK TO LET NEXT OFF <IF ANY) OTHERWISE, OPCN THE BUS-GATE BU5 WAITS 'TIL THE LINE IS EMPTY MAKE SURE THE LAST РЕЯ50Н IS NOT STILL GETTING ON ЯЕСОЯО PEOPLE-NOT-SERVEO ZERO-OUT THE "MAO" COUNTER CLOSE THE BUS-CATE THE BUS DEPARTS START THF RUN RETURN CONTROL TO OPERATING SYSTEM a 6 7 в 9 10 LI 12 13 1A IS 1'6 17 18 19 20 21 22 23 24 2S 2b 27 23 29 30 31 32 33 3* 35 36 37 3» 39 40 41 *2 «3 «A AS 44 *' 43 *</ ьо 51 S2 53 SA S3 5* 57 Риг. 5Е.2, Распечатка программы примера иоделирования 5Е
6. Выходные данные. SvJtML (. tut («AVtRAGI- ИАХ IMU«L CONTENTS lb t IML/TftA*.S AVERAGE CONTENTS 5. 6*0 u AVER «Si TOTAL ZERO PERCENT tNlDlCS ENTBIFS /CHOS гее i -3 TIME/THAN» LXCLbOINC- Zt«0 ENTKIFS «) AVERAGE fIMtVTHANS aew.ttiv »AVEKAGi£ TIMC/TRANS «93.0.20 TaAlc NUMeCH 1 CURRENT CONTENTS -»BLt IN1IIH-. fc'HTRILS IW 7ABLC гее UPPFR L Wll 300 600 voo 1200 iv>o leoo PVEBFLO» AVEOA&E" VILUt 1 Mf »N OBSERVE 0 ►RtOUlbtl *9 «J 61 • 1 ъо 4/ 2 DF OVtRFLCM AMGUMCNT 609 .919 ИЕЯ CENT OF TOT»». 17.01 14.93 21. IS |«.гз Ll.it i«.se .69 18*6.00 STANDARD DEVIATION SOS. CUMULATIVE VtlACEMTACE 17.0 31.У 53.1 67.3 M.7 99.3 Ю0.0 .000 SUM CU«Ut*TIV« ЯЕМ.А.1М0СМ 82.» 66.0 «6.8 32.6 is.г • a .0 OF ADCUMENTS 2362Ч7.0С0 MULTIPLt of m&am .337 .67» l.OD l.J»8 1.68b 2.022 NOM-WClbHTtO I>E'|ATION Г ПСИ HKAM -1 .16Й -.57* .019 .61* 1.206 1.802 IA6LE MAO ENTRIES IN TABLE 29 ОЛ-*Я iTMjT и 1 2 9 »C*AIH}H« FBEau£MCt«5 MEAN OBSERVED FRE0UEI4CY 21 0 3 > ARGUMfcN? КЯЕ M.U ZERO .359 PER CENT OF TOTAL СГ-.9» • 00 11.99 3.99 STANDARD OEV CUMULATIVE PERCENTAGE 03.0 03.9 93.9 100.0 :at ion .860 CUMULATIVE 1 №МА1М0£К 16.0 16.0 *.o V.0 SUM OF ABGUM.NTS 9.000 MULT(Pit OF MEAN -.000 2.777 t.ss;; A. 333 NOM-HEICHTEO DEVIATION FROH MEAN .«16 .7** 1.906 3.069 Pic. 5E.3. Часть распечатки выходных данных примера моделировании 5Е: • —статистика izd очереди; С — раепредслснне вреисни. проведениого в очереди; в— распределение случайной пореиеныой «число •«обслуженных людей на один автобус» ? 7. Обсуждение. Логика моделирования. Как указывалось в постановке задачи, перед тем, сак пассажир попытается сесть в автобус, Должно быть выполнено несколько условий: 1а остановку должен прийти автобус и должна водойти очередь этого пассажира на посадку. Тем не менее в модели используется только (дщн логический переключатель. Положение Кого переключателя управляется обоими сегментами модели. Во 2-м сегменте модели тран- Ьаи.автобус может установить логический переключатель, тем самым открыв BUS и указав № то, что автобус прибыл и можно начинать посадку. Транзакт-автобус может также «сбро- шь» переключатель BUS, что будет означать, Яго на остановке автобуса больше нет. Однако JJUS не остается открытым на протяжении tcero времени стоянки автобуса. В 1-м сегменте дели транзакт-пассажир, начавший -посадку | автобус, «сбрасывает» переключатель, закры- ая тем самым вход и заставляя других пасса- вров ждать своей очереди. Аналогичным разом, транзакт-пассажир может «установить» решочатель, открывая тем самым доступ и Газывая на то, что следующему пассажиру очереди пора пытаться производить посадку. Конечно, транзакт-пассажир не может управлять переключателем до тех пор, пока автобус не прибыл на остановку. Логика'задачи такова, что состоянием единственного логического переключателя можно описывать сложное условие. Необходимо сделать замечание относительно условий, при которых автобус покидает остановку. Было бы ошибкой сделать так, чтобы автобус мог уехать, как только очередь опустеет. Причина этого заключается в том, что человеку, совершающему посадку, требуется для этого ненулевое время. Выход из очереди на посадку еще ие означает, что посадка совершена. Поэтому во 2-м сегменте модели транзакт-автобус сначала ждет в блоке «TEST E Q$LINE, О», пока не опустеет очередь, а в следующем блоке проверяет, не находится ли последний пассажир в процессе посадки. Только после того, как очередь пуста и последний пассажир сел, автобус может уезжать с остановки. (В задачах следующего параграфа будет предложено дальнейшее исследование этого вопроса.) Распечатка результатов. (Общее время моделирования на ЭВМ IBM 360/67 составило 4,6 с.) На рис. 5Е.З, а приведена статистика для очереди. Всего было 288 вхождений в очередь. 309
(Ожидаемое значение было чуть более 300.) Наибольшее число людей, находившихся в очереди одновременно и ожидавших посадки в автобус, равнялось 16. Один человек имел нулевое время пребывания в очереди. На рис. 5Е.З, б показано распределение времени пребывания в очереди. Среднее время ожидания составило 889 с, или около 15 мин. Однако 42 пассажира ждали от 25 до 30 мин. Обе части статистики согласуются с данными, указанными в постановке задачи. На рис. 5Е.З, в даио распределение людей, не обслуженных остановившимся автобусом. Все желающие имели возможность сесть в автобус в 21 случае из 25, т. е. в 84% случаев. Ни разу не было так, чтобы необсл уженным остался один человек. В трех случаях не смогли сесть в автобус двое и в одном случае — трое. 5.26. Упражнения Все вопросы этого параграфа относятся к примеру 5Е. 1. а). Почему транзакту-автобусу дан более низкий приоритет, чем транзакту-пассажиру? б). Предположим, что не имеет значения, каким образом будет разрешен временной узел между готовым к отходу автобусом и прибывающим пассажиром, и что пользователь из-за этого не делает различий между приоритетами траизактов-автобусов и транзактов-пассажиров. Будет ли при этих обстоятельствах модель корректной? Ответ обосновать. в). В модели предполагается, что пассажиры производят посадку в автобус на основании правила «первым пришел — первым обслужен». Однако это не всегда соответствует практике: Показать, каким образом изменить модель, чтобы порядок, в котором пассажиры садятся в автобус, был случайным. (Указание: для получения результата нет необходимости добавлять в модель новые блоки.) г). Предположим, что имеется хотя бы один человек в очереди на посадку и что транзакт- автобус только что вышел из цикла «высадка пассажиров» и перешел к блоку «TEST E Q$L1NE,0». Будет ли этот человек производить посадку в данный момент модельного времени? Если да, то объяснить, почему. д). Из распечатки результатов видно, что один человек находился в очереди нулевое время. Описать условия, при которых могла возникнуть эта ситуация. Можно ли сказать, сел этот человек в автобус или ушел? е). Объяснить, почему для моделирования людей, желающих сесть в автобус, используются транзакты, а для моделирования пассажиров, желающих сойти, — нет. 2. а). Модель будет неверной, если из нее убрать блок «TEST E QSLINE.O». Объяснить почему, показав, как будет работать модель при отсутствия этого блока. б). Модель будет неверной, если из нее убрать блок «TEST E W$GETON,0». Объяснить почему, показав, как будет работать модель пря отсутствии этого блока. 3. В задаче предполагается, что скорость прибытия людей на автобусную остановку не зависит от времени. На самом деле эта скорость должна возрастать по мере приближения времени прибытия следующего автобуса. Предложите численное определение такого способа прибытия по собственному выбору. Покажите затем, как изменить модель, чтобы ввести в нее ваш способ прибытия. (Указание: см. упражнение 11, б параграфа 4.5.) 4. а). Модель примера может быть значительно упрощена, если предположить, что: 1) время, требуемое на выход из автобуса, и 2) время, требуемое для посадки в автобус, пренебрежимо малы. Показать, как измеиить модель, чтобы отразить эти предположения. б). Модель может быть еще более упрощена, если предположить, что не требуется сбора ста- тистикн об ожидании в очереди. В этом случае Модель находила бы только распределение случайной величины — число необслужениых пассажиров на один автобус. Показать, как изменится модель, если выполняется это предположение и предположения из п. а. Постарайтесь: минимизировать среднее число транзактов в модели во время ее прогона.
ЧАСТЬ I к 8,1. Введение В отличие от гл. 4 и 5 этой книги, рассматрн- нощих промежуточные концепции моделиро- шия на GPSS, гл. 6 и 7 посвящены дальней- рм концепциям. Термин «дальнейшие», исполь- кванный здесь, не означает «более сложные». ■ двух последующих главах рассмотрено боль- шнетво оставшихся главных составляющих Коса GPSS. Эта глава начинается с обсужде- ш булевских переменных, которые позволяют Кгшвать сложные логические условия в моде- Вх на GPSS. Предположим, например, что «но не может войти в гавань до тех пор, пока ■гбудут выполнены условия: 1) нет шторма, ■ есть свободная якорная стоянка и 3) судну шкет быть представлен буксир. Булевские Ьемеяные могут быть использованы для опре- Щеаия одновременного выполнения подобных Цалее рассмотрен блок BUFFER (ПОМЕ- ИТЬ В БУФЕР). Используя этот блок, |ьзователь может заставить интерпретатор •SSnpn определенных условиях заново начать !£мотр цепи текущих событий. Это дает Нежность более гибко управлять последо- рьностью прохождения транзактов во время юютра интерпретатором цепи текущих со- ± Ьсле этого изучен второй способ ввода зактов в модель. Транзакты, уже находя- ся в модели, могут с помощью блока SPLIT СШЕПИТЬ) имитировать «родителя», вы- игацего одного или нескольких, дополни- «ых транзактов из пассивного буфера н ящего их в модель в качестве своих «потом- 1 . Блок SPLIT имеет множество применений. Ьимер, его можно использовать в связи Юлиями, возникновение которых требует ведения в движение большого числа незави- ш активных транзактов. Блок SPLIT нахо- Дальнейшее развитие концепций моделирования на gpss дит применение в трех из пяти разбираемых в этой главе примеров. Другая тема, рассматриваемая в этой главе, посвящена косвенной адресации данных. Косвенное определение, уже рассматривавшееся в гл. 4 и 5, дает возможность использовать имена «переменных» (т. е. стандартные числовые атрибуты). В этом смысле для представления данных путем косвенного определения используют «имена данных». Косвенная адресация развивает эту идею дальше. Она позволяет представлять данные путем назначения «имен именам данных». Использование косвенной адресации дает возможность пользователю создавать более компактные и гибкие модели. Косвенная адресация использована в двух последних примерах этой главы. В главе также расширено понятие функции в GPSS путем введения функций, значения которых являются значениями других стандартных числовых атрибутов, Идея, заложенная в такие атрибутивно-значимые функции, имеет много общего с идеей косвенной адресации. Так как на применение косвенной адресации в QPSS накладываются некоторые ограничения, атрибутивно-значимые функции часто применяют в языке. 1
£ Итак, в гл. 6 рассмотрены булевские переменные, блок BUFFER, блок SPLIT, косвенная адресация и атрибутивно-значимые функции. Кроме того, описаны функции, значения которых могут быть именами блоков; в одном из примеров введена и проиллюстрирована возможность одновременного, а не последовательного моделирования различных конфигураций модели. 6.2. Булевские переменные В GPSS булевской переменной является стандартный числовой атрибут, определяемый пользователем. На булевскую переменную можно ссылаться так: либо BV/, либо ВУ$имя, где / — номер переменной, если ей было присвоено числовое имя, а «имя» — символическое имя. Величина булевской переменной может быть либо 1, либо 0, в зависимости от того будет ли булевское выражение, введенное пользователем для определения этой переменной, иметь значение «истина» или «ложь». В свою очередь, булевское выражение состоит из 1) ссылок на логические условия элементов, или 2) ссылок на числовые свойства элементов, выраженных в логических величинах, или 3) из логических комбинаций 1 и (или) 2. В этом параграфе внимание будет сконцентрировано на построении булевских выражений с использованием конструкций типа 1 и 2 и их комбинаций. Затем будут рассмотрены карта определения переменной, примеры булевских переменных и правила их вычисления и, наконец, использование булевских переменных в GPSS-моделях.) 6.2.1. Логические операторы Логические операторы используют для ссылок на логическое состояние так называемых элементов оборудования в GPSS, а именно приборов, многоканальных устройств и логических переключателей. Имеющиеся в GPSS логические операторы перечислены в табл. 6.1 с указанием условий, налагаемых на тот элемент, на который делается ссылка. Таблица 6.1. Логические операторы'в GPSS' Логические операторы LS LR FU (ила F) FNU SF SNF SE SNE Ссылка на состояние элемента Логический переключатель установлен Логический переключатель сброшен Прибор используется Прибор не используется Многоканальное устройство заполнено Многоканальное устройство не заполнено Многоканальное устройство пуста Многоканальное устройство не пусто 312 Как часть булевского выражения, логический оператор должен быть отнесен либо к числовому, либо к символическому имени определенного элемента. Как обычно, если используется символическое имя, между ним и логическим оператором следует ставить знак доллара. Примеры логических операторов: SNE$JANE, FNU21 и LR3. Если многоканальное устройство JANE не пусто, то SNE$JANE истинно, в противном случае ложно. Если прибор 21 не занят, то FNU21 истинно, в противном случае ложно. Аналогично, если логический переключатель 3 сброшен, то LR3 истинно, в противном случае LR3 ложно. Подобные единичные элементы составляют простые булевские выражения. Следует отметить, большую схожесть между логическими операторами и логическими указателями, описание которых состоит из тех же последовательностей букв (исключением являются приборы). Несмотря на схожесть в описании, используют их в совершенно различных ситуациях. Логические указатели используют в качестве вспомогательных операторов в блоках. Логические операторы используют для построения логических выражений. 6.2.2. Операторы отношения Оператор отношения выражает условие, которое может существовать между двумя отдельными величинами, выраженными численно. В табл. 6.2 показаны операторы отношения с указанием того, что они выражают. Таблгипа 6.2. Операторы отношения в GPSS Операторы отношения 'G' 'GE' 'Е' 'NE' 'LE' 'L' Выряжаемое' условие Больше Больше или равно Равно Не равно Меньше или равно Меньше Булевское выражение может быть построена помещением оператора отношения между двум стандартными числовыми атрибутами. Примеры элементарных булевских выражений: RSCHANL'GE'3; Q$LINE1'L'Q$LINE2 я P5'G'X$ROP. Если оставшаяся емкость многоканального устройства CHANL больше или равна 3, то R$CHANL'GE'3 истинно, в противном случае это выражение ложно. Аналогично, если текущее содержимое очереди LINE1 меньше текущего содержимого очеред! LINE2, то Q$LINErL'LQ$LINE2 истинно, в противном случае — ложно. Наконец, если Р5 больше, чем полнословная сохраняемая! величина ROP, то PB^XSROP истинно,'.
в противном случае ложно. Приведенные примеры являются простыми булевскими выражениями. Операторы отношения, перечисленные в табл. 6.2, схожи со вспомогательными операторами, используемыми блоком TEST. В обоих случаях используются одинаковые буквенные обозначения, но в случае операторов отношения буквы заключаются в простые кавычки. 6,2.8. Булевские операторы Булевские переменные характеризуются тем, что их значения не числовые, а логические. Возможны только два логических значения: истина и ложь. Логические величины называют иногда булевскими величинами, или значениями истинности. Булевский оператор помещается между двумя логическими величинами, и дает логический результат. Следует отличать такой оператор от оператора отношения, который помещается между двумя числовыми величинами и также дает логический результат. Оба булевских оператора и логические величины, получающиеся в результате их применения и зависящие от логических величии, между которыми они находятся, показаны в табл. 6.3. ДОшца 6.3, Булевские операторы в GPSS Було- ■ • СМИ 1«тратор 1. • '■ • \н~ ■ + 2' .;, *• 1 няе и Или Результат операции - Результат — истина, если значения величин с обеих сторон от оператора являются истиной; в противном случае результат — ложь Результат — истина, если хотя бы одна или обе величины, между которыми стоит оператор, истинны. в противном случае результат — мжь tf Как показывают предыдущие примеры, выражения, составленные из логических операторов |,операторов отношения, имеют значения либо Щщна, либо ложь, т. е. являются логически йвределенными. Вследствие этого булевские щераторы могут помещаться между такими ражениями. Когда таким образом исполь- один или более булевских операторов, ннкает составное булевское выражение, на- ример, R5'G'3*RSSYGNL. Если оставшаяся икость многоканального устройства 5 больше 3 ■логический переключатель SYGNL. сброшен, составное булевское выражение истинно; явном случае выражение ложно. ругой пример, составного булевского выра- вя FNU$CPU*(SNF12 + SNF$LINE). Заем, что в этом случае используют оба булевских оператора. Как показано в этЪм примере, для выделения частей внутри составных выражений можно использовать круглые скобки. При этом информацию внутри скобок вычисляют в первую очередь, а затем полученную величину используют при вычислении общего выражения. В приведенном примере выражение в скобках истинно, если не заполнено либо многоканальное устройство 12, либо многоканальное устройство LINE, либо не заполнено ни одно из них. Когда истинно выражение в скобках и прибор CPU не используется, то окончательный результат всего выражения — истина, в противном случае — ложь. 6.2.4. Карта определения булевской переменной Формат карты, используемой для определения булевской переменной и изображенный в табл. 6.4, идентичен формату карты для определения арифметической переменной. Различия в содержании карты состоят в том, что в поле операции стоит слово BVARIABLE, и выражение в поле операндов является не арифметическим, а булевским. Все другие свойства карты для определения арифметической переменной сохраняются. В частности, первый пустой столбец, обнаруженный в поле операндов, означает прекращение определения булевской переменной; слишком длинные выражения, выходящие за 71-й столбец карты, должны быть разбиты на более короткие и определены посредством двух или более булевских переменных. Таблица 6.4. Формат карты, определяющей булевскую переменную Поле перфокарты Имя Операция Операнды Информация Имя (числовое или символическое) булевской переменной Слово BVARIABLE Булевское выражение, определяющее булевскую переменную 6.2.5. Примеры и правила На рис. 6.1 приведены три примера булевских переменных. В первом и втором примерах показаны простые булевские выражения. Третий пример представляет составное булевское выражение. Все эти примеры были рассмотрены выше (в параграфах 6.2.1,6.2.2. 6.2.3). В зависимости от того, будут ли величины булевских выражений истинны или ложны, соответствующие величины BVSMAIZE, BVSBLUE и BVSIRISH будут равны 1 или 0. 313
U4iu|iiju|i«|e|i«|ii|« ■».B.C,P,f/ elzobi tehitaH» v »jH»hi|s2|»lMbt|Ml)7|]i|»|4d<i|4iU] «MuUrMriMhi |иЬ»Ь« Mpf NMM МЫЛ& I ■■VAl.lJLB.l.I. ■ it «U.UAH* , ПЕРВЫЙ ПРИМЕР, , _jBiULb. iiJLlJJtll .IlYAJL^AJl Lb- Ll^CHAt^L-'Ablia!, i •t- . 1Д '.Q.',a|*i.,t,f.s.Y|ej*L, . , 4 i ■ . i ВТОРОЙ ПРИМЕР , r^4-1 1—l ТРЕТИЙ , , ПРИМЕР, IГ I ' ■ ' ■ ■ | M-■ -U- Рис. 6.1. Первый набор примеров булевских переменных Без предварительного изучения логических величин и булевских операторов могут возникнуть вопросы относительно того, каким образом вычислять составные булевские выражения. Как и для арифметических выражений, при определении значения булевского выражения существует строго определенная последовательность действий. В GPSS эта последовательность описывается довольно просто, поскольку в булевских выражениях арифметические операторы, не разрешены. Таким образом, когда в булевском выражении встречаются символы + и *, они представляют булевские операторы, а не арифметические операторы сложения и умножения. Ниже приведены правила выполнения булевских выражений. 1. Логические операторы и операторы отношения имеют высший уровень предшествования. Если в булевском выражении используются два или более таких операторов, они действуют в порядке их написания слева направо. 2. Булевские операторы + и * находятся на следующем уровне предшествования. (Заметим, что в этом вопросе GPSS отличаегся от боль- ' шинства других языков программирования. В других языках булевские операторы * и + обычно стоят на разных уровнях предшествования, причем оператор * предшествует оператору -+■.) Если в булевском выражении используются два и более булевских операторов, они действуют в порядке их написания слева направо- 3. При использовании круглых скобок все, что находится внутри них, вычисляется в первую очередь с использованием правил 1 и 2. Промежуточный результат, который при этом получается, используется затем в оставшемся булевском выражении. На рис. 6.2 приведено несколько дополнительных примеров булевских переменных. В первом примере оператор отношения 'GE' и логические операторы SE и LS учитываются в первую очередь в том порядке, в каком она встречаются в записи (первое правило). Затэд действуют булевские операторы -+■ и * также! в том порядке, как они встречаются в записи] (второе правило). Для того чтобы булевское выражение имело значение «истина»: 1) Cl'GE'500 должно быть истинно, или SE$SPACE должно быть истинно (или оба эти выражения должны быть истинны)', 2) LS£AMBER должно быть истинна. Таким образом, заметим, что BV$KAPPA будет; ложно в любом случае, если LS$AMBER ложно. Во втором примере рис.. 6.2 вначале выпол няюгея логические операторы FNU (1-е пря вило). Затем выполняются булевские операторы -К * и 4- в указанной последовательное!! слева направо (2-е правило). Легко видеть, что в приведенном булевском выражении суще ствует 16 различных исходов истина—ложь, Для восьми из них FNU4 истинно, и npi этом все выражение принимает значен! истины. Из оставшихся восьми исходов (■ восьми, для которых FNU4 ложно) выражен! будет истинно только в трех случаях, произойдет в случае, когда FNU3 — истш или FNU1, или FNU2, или оба также истинны Третий пример повторяет первый, но в на часть выражения заключена в скобки. Скобк были введены для того, чтобы дать булевском оператору * более высокий уровень npej шествования, чем булевскому оператору 4 LOCATION ыэ ллиел I. i 0>tR»nOW iO|lyj|u|.«|iljl«lcr|il ■.VAUIfiLB.Lt, , e,1,'CE,»lS,fl,ft*S,E.$,S,PAC.E|»I..S,i,A.MJa.g,K, ■ . I .,.,.■, |A,l,P.Hu» IVAtlAltf, , »|^a|affi?«Mi»|?>|MJ^io|*|a[i^^ _. ' '^ '- . . - ' ' ' Псрймй ! nouueo !. I гми.гл.р^ии^г.^иц.л,гы^л. I II I I ПЕРВЫЙ, . ПРИМЕР ,. , ■- | .nil ■' ' ' I , ВТОРОЙ ' l ПРИМЕР i .ТРЕТИЙ , ПРИМЕР I / 1-.—L.I 1--1 . -JL_L -J I I ' . ' ' I ■ ' ' I I ! i I I 1 Phc. 6.2. Второй набор примеров булевских переменных 314
Таким образом, для того чтобы указанное булевское выражение било истинно, необходимо, чтобы: 1) или было истинным Cl'GE'500, ш 2) и LS$AMBER и SE$SPACE были истинны, или 3) были удовлетворены условия в 1 к 2. Ввод круглых скобок совершенно изменил условия истинности для третьего примера по сравнению с первым примером. 8,2.8, Проверка булевских переменных HGPSS-моделях для проверки булевских переменных используется блок TEST, поскольку их величинами могут быть либо 1, либо 0. Обычно предполагают, что при выполнении требуемого ряда условий булевская переменная должна быть истиной, т.е. иметь величину 1. Как следствие, булевские переменные обычно проверяют на их равенство едипице. Например, транзакт будет задержан в блоке, предшествующем блоку TEST E BVSALLOK, Ь ДО тех пор, пока значение булевской переменной ALLOK. не будет истиной. В другом примере транзакт, вошедший в блок «TEST E BVtoREEN,l,RUTE3», пройдет в следующий во порядку блок, если значение булевской переменной GREEN будет истинно, и перейдет в блок с именем RUTE3 в противном случае. Естественно, булевские переменные могут про- крятьсй и в том случае, если они ложны, т.е. равны нулю. Транзакты, производящие шуй проверку, будут переходить в следующий во порядку блок или по выполнении событии I режиме отказа или сразу же в режиме условное передачи, если переменная имеет значение лжно. Транзакт сразу же переходит в следующим по порядку блок в режиме условной передок, если переменная имеет значение истина. Использование простых булевских выраже- Пй (подобно таким, какие показаны в первых pyx примерах па рис. 6.1) должно показаться вранным. Булевское выражение считается прости, если оно состоит из точно одного логического оператора или точно одного оператора отношения. 1. В первом случае для достижения того же результата можно использовать блок GATE. 1ричем время, требуемое на вычисление, будет меньшим. Например «GATE NU CPU» иден- Вино по логике «TEST E BVtfSIMPL.I», l*61MPL BVARIA3LE FNUSCRU» является определением булевской переменной S1MPL. Мк было указано ранее, для блока GATE tpeoyerot меньшее время исполнения, чем для Ьика TEST. , 2, Во втором случае для получения того же |югического эффекта с меньшим временем выполнения также можно использовать $блок JEST. Например «TEST L QI, Q2» логически «винчен блоку «TEST E BV*WHY,b, „где «WHY BVARFABLE QI'L'Q2» определяет ^булевскую неременную WHY. Первый блок TEST требует только одного сравнения (Q1 и Q2), тогда как в-ropoff требует двух сравнений (Q1 и Q2, а затем BVSWHY и 1). 6.3. Пример моделирозания 6А. Обслуживание танкеров в порту I. Постановка задачи. Порт в Африке используют для заливки танкеров сырой нефтью для дальнейшей перевозки. Порт имеет возможность заливать одновременно до трех танкеров. Танкеры, прибывающие в порт каждые 11 :s 7 ч, могут быть трех различных типои. Относительная частота появления танкеров различных типов и требуемое время их заливки показаны в табл. 6А.1. Таблица 6А.1. Характеристики танкеров для примера 6А Тки 1 2 3 Откосителыяя частота 0,25 0.55 0.20 Время заливки, ч 18±2 24±3 Зб±4 В порту имеется один буксир. Танкерам любого типа для подхода к стоянке требуются услуги этого буксира. Далее, в этой части океана часто бывают штормы, и в период шторма для танкера невозможен пи подход к стоянке, ни отход от нее. Продолжительность шгорма 4*2 ч. Время между окончанием одного шторма и началом следующего подчиняется экспоненциальному распределению со средним значением, равным 48 ч. Если буксир свободен и нет шторма, время подхода к стоянке или отхода от нее занимает около 1 ч. При наблюдении за работой порта установили, что три якорные стоянки в порту заняты в течение примерно 80% времени. В среднем из-за задержек, возникающих в результате штормов, занятости стоянки или занятости буксира время пребывания танкера в порту превышает среднее время принятия танкера примерно на 5 ч. Эго справедливо для всех типов танкеров. Грузоотправитель намеревается заключить контракт на перевозку нефги из этого порта в Великобританию. Он определил, что пять таикеров определенного типа могли бы полностью удовлетворить условиям контракта. Этим танкерам требуется 21 =£ 3 ч для заливки нефти в танкер. После заливки и отхода от стоянки танкеры должны плыть в Великобританию, выгружать там нефть, возвращаться в порт для новой заправки и т. д. Их время
пребывания в пути, включая выгрузку, должно составлять 240 =£24 ч. Прежде чем портовые власти возьмут на себя обязательства по предоставлению предлагаемых пяти танкеров, необходимо определить влияние дополнительного портового грузооборота на их время пребывание в порту. Построить GPSS-модель, имитирующую работу порта, с учетом возникающих требований. Обеспечить в модели возможность определения времени пребывания предлагаемых дополнительных танкеров в порту, а также времени пребывания в порту уже имеющихся трех типов танкеров. Использовать моделирование года работы порта для оценки распределения этих случайных переменных. 2. Метод построения модели. Модель со- ставлена из главного сегмента и двух вспомогательных. В главном сегменте моделируется движение различных танкеров через портовые устройства обслуживания. В одном из вспомогательных сегментов в модель в начале прогона вводятся пять предлагаемых дополнительных танкеров, а затем они переходят в главный сегмент. Во втором вспомогательном сегменте, являющемся замкнутым, моделируется возможность шторма. Связь между наличием или отсутствием в настоящий момент шторма и главным сегментом осуществляется через логический переключатель. Далее эти участки будут прокомментированы более подробно. В сегменте, моделирующем шторм, циркулирует единственный транзакт. Впервые попадая в сегмент, он входит в блок «ADVANCE 48,FN$XPDIS», где может быть рассмотрен как приближающийся шторм. Выходя из блока ADVANCE, о» переводит логический переключатель STORM в положение «установлено», что означает начало шторма в данный момент. Затем транзакт задерживается в другом блоке ADVANCE в течение 4 ± 2 ч, г. е. на время шторма. Когда шторм заканчивается, логический переключатель STORM переводится обратно в положение «сброшено», и транзакт направляется в первоначальный блок ADVANCE, имитируя тем самым следующий приближающийся шторм. В сегменте возникновения дополнительных танкеров в начале прогона в модель входят пять танкеров, которые помечают занесением в их первый параметр Р1 числа 4. (Остальные три типа танкеров будут иметь значения Р1, равные I, 2 или 3.) Затем они входят в блок ADVANCE, где первый задерживается на 0 ч, второй на 48 ч, третий на 96 ч и т. д. Такое ступенчатое изменение времени задержки сделано для того, чтобы вводить эти пять танкеров в главный сегмент модели с промежутками. Время между входами танкеров, равное 48 ч, было получено из предположения, что время плавания туда и обратно для каждого из пятя танкеров равно 240 ч. После такой задержки каждый танкер предполагают только что прибывшим в порт (в первый раз). Время при* бытия отмечается в третьем параметре, и танкер переводится в главный сегмент модели. Танкеры типов 1, 2 и 3 попадают в главный сегмент модели через блок GENERATE; помечают их занесением в параметр номера, соответствующего их типу, и затем стремятся использовать портовые средства обслуживания. Как только обслуживание танкеров заканчивается, они покидают модель. В противоположность им пять дополнительных танкеров не выходят из модели. Как и другие танкерьъ в главном сегменте они вступают в соревнование за право использования портового оборудования. Однако в момент покидания порта, они выводятся из потока уходящих судов и переводятся в блок ADVANCE, имитирующий время, в течение которого совершается путь туда' и обратно. По истечении времени их плавания; туда и обратно время их возвращения в порт| заносится в третий параметр, и они вновь] стремятся использовать портовые средства об-] служивания. Условия, требуемые для подхода и отходе от стоянки, проверяются в главном сегмент» модели с помощью булевских переменных.! Для того чтобы осуществить подход к якорноЯ; стоянке, необходимо одновременное выполнение трех условий (стоянка свободна, буксир свободен, нет шторма). Для отхода от стоянки; требуется выполнение двух условий (буксир свободен, нет шторма). Одновременное выполнение этих условий легко проверяется с помощью булевских переменных. Время заливки танкера в порту определяется значением Р1 каждого транзакта. Значение Р!г используется в качестве аргумента функция MEAN, которая вырабатывает нужное сред* нее время заливки, а также в качестве аргумев-Г та функции SPRED, с помощью которой кахо^ дится модификатор размаха времени заливши Тем не менее нельзя имитировать время заливки блоком «ADVANCE FN$MEAN,FN$SPRED>j Если использовать такой блок, К интерпретатор сочтет поле В блока модиф* катором функции, и полученное значение будя использовано как число, на которое следуя умножать среднее значение. Для полученв желаемой модификации разброса во второ параметр каждого транзакта-таикера вначая заносится нужный разброс. Затем этот трая закт входит в блок «ADVANCE FN$MEAN,P2 для имитации времени заливки. 3. Таблица определений. Единица времени 1 ч. 316
Таблица 6А.2. Таблица определений для примера 6А Элемент QPSS Травзакты: 1-й сегмент модели 2-й сегмент модели 3-Й сегмент модели 4-й сегмент мод ел в Приборы: TUG Функции: MEAN SPRED TYPE Логические переключатели! STORM Миогокаиальвые устройства: BERTH Таблицы: 1, 2, 3 н 4 Переменные (арифметические): SPACE Переменные (булевские)*. GOIN GOOUT Интерпретация Носитель возможного шторма Один иэ дополнительных танкеров Один на танкеров, используемых в порту: Р1 — код типа танкера: Величина 1 2 3 4 Значение Танкер типа 1 Танкер типа 2 Танкер типа 3 Дополнительный танкер Р2 — половина размаха времени заправки; РЗ — времи прибытия в порт (используется только для травэактоо, имитирующих дополнительные танкеры) Таймер Буксир Описывает среднее время заливки, зависящее от типа танкера Описывает половину размаха времени заливки в зависимости от типа танкера Описывает распределение танкеров типов I—3 Находясь а положении «установлено», означает наличие шторма Моделирует заливочные установки в порту Используют для оценки распределений времени пребывания в порту танкеров тнпоа 1—3 и дополнительных танкеров Принимает значение 0, 48, 96, 144 и 192 в указанном порядке; используется для задержки первоначального прибытия дополнительных танкеров Принимает значение «истина» при выполнении условий, обеспечивающих подход к стоянке Принимает значение «истина» при выполнении условий, обеспечивающих возможность отхода от стоянки 317
4. Блок-схема. GENERATE L ^ INEXT) ' ' AOVANCE 48.FNSXPDIS LOGIC STORM AOVANCE 4,2 LOGIC 1 stohm X TRANSFER У «NEXTI ВОЙТИ В СЕГМЕНТ ШТОРМА НАДВИГАЕТСЯ ШТОРМ НАЧАЛСЯ ШТОРМ: УСТАНОВИТЬ СИГНАЛ ШТОРМА ШТОРМ ПРОДОЛЖАЕТСЯ ШТОРМ ЗАКОНЧИЛСЯ: выключить сигнал ШТОРМА ПЕРЕЙТИ К ИМИТАЦИИ НОВОГО ШТОРМА 1-Й СЕГМЕНТ МОДЕЛИ (СЕГМЕНТ ИМИТАЦИИ ШТОРМА) GENERATE L 1.4 С ASSIGN J (HERE) ' ADVANCE VS5PACF С mark j зN; I TRANSFER ВВЕСТИ ДОПОЛНИТЕЛЬНЫЕ ТАНКЕРЫ В МОДЕЛЬ ЗАКОДИРОВАТЬ ДОПОЛНИТЕЛЬНЫЙ ТАНКЕР ВЕЛИЧИНОЙ 4 В PI > iPOR Г) ЗАДЕРЖАТЬ ВРЕМЕНА ПЕРВОГО ПРИБЫТИЯ В ПОРТ ПОЛОЖИТЬ РЗ РАВНЫМ ВРЕМЕНИ ПРИБЫТИЯ Е ПОР Г ВОЙТИ В ГЛАВНЫЙ СЕГМЕНТ МОДЕЛИ 2-и сегмент модели (Сегмент создания дополнительных танкеров}
SEIZE fTuQ. ENTER BERlTH ПРИБЫТИЕ 8 ПОРТ ДРУГИХ ТАНКЕРОВ ПОЛОЖИТЬ PI РАВНЫМ КОДУ ТИПА ТАНКЕР* ДОЖДАТЬСЯ ВОЗМОЖНОСТИ ПОДХОДА К СТОЯНКЕ УСТАНОВИТЬ СТАТУС БУКСИРА "ЗАНЯТО" УСТАНОВИТЬ СТАТУС СТОЯНКИ SEIZE л iTUG. ADVANCE I ADVANCE I RELEASE TUG V ~t~: 2,FN$SPREP Г ASSIGN ^ Г ADVANCE I FN$MEAN,P2 bv$goout; ТАНКЕР ЗАХОДИТ НА СТОЯНКУ БУКСИР БОЛЬШЕ не нужен ПОЛОЖИТЬ Р2 РАВНЫМ ПОЛОВИНЕ ВРЕМЕНИ ОБСЛУЖИВАШ ЗАЛИВКА ТАНКЕРА ДОЖДАТЬСЯ ВОЗМОЖНОСТИ УХОДА СО СТОЯНКИ RELEASE V LEAVE V TABULATE tug' V 3ERTH ~h 4 (CYCLE) УСТАНОВИТЬ СТАТУС БУКСИРА ■ЗАНЯТО- ТАНКЕР ОТХОДИТ ОТ СТОЯНКИ БУКСИР БОЛЬШЕ НЕ НУЖЕН СТОЯНКА ДОСТУПНА ДРУГИМ ТАНКЕРАМ ЗАПИСАТЬ ВРЕМЯ ПРЕБЫВАНИЯ В ПОРТУ ОТДЕЛИТЬ ДОПОЛНИТЕЛЬНЫЕ ТАНКЕРЫ ДРУГИЕ ТАНКЕРЫ УХОДЯТ ДОПОЛНИТЕЛЬНЫЕ-) ТАНКЕРЫ ДЕЛАЮТ ПУТЬ ТУДА И ОБРАТНО ПОЛОЖИТЬ РЗ РАВНЫМ ВРЕМЕНИ ВОЗВРАЩЕНИЯ В ПОРТ ТАНКЕР ВОЗВРАЩАЕТСЯ В ПОРТ GENERATE \8760 | х— TERMINATE ПРИХОД ТАЙМЕРД ЧЕРЕЗ I ГОД ПРЕКРАТИТЬ ПРОГОН 4-ЙСЕ1МШШШ (СЕГМЕНТ ТАЙМЕРА) (PORT) 3-Й СЕГМЕНТ МОДЕЛИ (РАБОТА ПОРТА: ВОЗВРАТ ДОПОЛНИТЕЛЬНЫХ ТАНКЕРОВ) Рк. 6А.1. Блок-схеиа примера моделирования 6А
5. Распечатка программы. п 9 Ю II 12 J J lft 15 16 I 7 18 19 20 21 22 2J J4 25 26 27 ze 29 30 3) 32 33 о^елатюь simulate AiB.CrD,5.F,C COMMENTS * FUNCTION OSFINtTIONlS) * i, ie/a.2w3.36/4,21 SPRED FUNCTION ,P1,L» 1.2/2.3/3,4/4,1 TYPE FUNCTION KN1,D3 .Jib,1/.8,2/1,3 XPDtS FUNCTION ЛЕАМ SERVICE TJ«E FOB ТЛЫКЕП TYPE «PI1 SERVlCfe TIME SS>>REAC FOR TANJKFR ТУРЕ "Я DISTRIBUTION OP «OTHEK TANKEP" TYREb RNI,C24 EXPONENTIAL DISTRIBUTION FUNCTION o.o/. 1..1С14/.2,.ггг/.з..з5ь/-4..ь«9<'«5..б9/.«,.915У.7»1.г/.75,».за «в. 1.6/.^4, I. 8 3/. «а, 2. 12/.<j,2.3/. 92,2.5Й/.94,2.Й1/.95,2.'J'./.96,J.2 .9 7,3.5/,оВ,3.9/.«9,4.Ь/.9ЧЪ,Ь.З/.9«>е,6.2/..999»7/.999!*.Е> w * ЬГОКЛ-GE СД**А£/ТГ PEFlNlTlOHtS) » PROVIDE Э BERtK$ STORAGE b»8ERTH,J T.ABLE 0EF1N1TI0M<S> TABLE TABLE TABLE TABLE M1.£Q,1U,9 »1<гО| Ю.9 Ml, 40 ,10.9 MP3.20 . 10,9 PORT RtJSIOENCC TIbtE, "TANKER TYPfc. I" PORT peSIDENCu TIME, "TANKER TYPE 2" PORT RESIDENCE TIME, "TANKER TYPE 3" POHT RESIDENCE TIKfc, PROPOSEl TANKERS VAK3ABLE DEF1N1 llONtS) COIN eVARlASLE GOOUT BVARIA8LE SPACE VARIABLE SNF*fc£HTt-wNU*7UG»LRSSTORM f-«USTuG»LK*bTORM 48»NiHEKl£ bERTH-ENTtHlrSO COND(TlUNS BERTH-LEAVING CONDITIONS MODEL SEGMENT I < STORM GliNbRATING SECMENT 3 GENERATE , ,,1 SEEO THJ S.TORM ьбНИЕМТ ADVANCE 40,FNSXP0IS ЬТОНМ lb UN ITS *AY LDG1C 5 STORM STOtfM AX4IVES; 'jfcT STORM 5ICNAL АОVANCE Л,2 ~'HS bTORi» !S STGZMlf/ii LOGIC R bTORM STORM lb OVER; TUt-SN STORM 41Ч1ТСН OFF TRANSFfcR ,NEXI OP tiKING ON THE NEXT STORM MODEL SEG4ENT UNITlALlFATION SEGMENT FOR PRUPQSEC TANKERS, СЕМЕНA16 ...5 ASSIGN 1,4 ADVANCE V*SPACE MARK з TRANSFER «PORT BRIrJG THt PROPOSrD TANKERS INTO IHt MDUEL CODE PROPOSED TAHKERS WITH PI VAi_uL Lif 4 SPACE OUT П fg5 OK n>£lR FIRif f>UWT vl'jll SET Pj = ARRIVAL TH-»e AT PORT JUMP INTO MAJOR MnCbL SEGMENT PORT MDDLL SEGMENT 3 <PORT ACTIVITI5S1 CYCLING OF FROPOSEO TANKERS. "UTMER TANXtRS" ARRIVL AT PORT St.T t>l =• TANKfc.li-TvP£ CDOE WAIT 'TIL ALL OK FDR MOVEMENT INTC BERTH UPUATE TUG STATU"-. TD "bltSY" UPDATE BERTH STATUS tanker ;s being'moved Into the Berth TUG ND» NO LONGF.R NbhDfcEJ SbT I>2 = SERVICE TIHC SPREAD ТЛЛ1КЕЯ IS ВЕ1ЫИ L!?J>nL!> «AIT >TIL ALL DK FUR LUVINT, THt BERTH UFHJATE TUG STATUS TO "BUSY" TAbKER IS UEINC MOVFL. OUT OF BERTH T№ IS NO LONGER NFJDK15 BERTH is NO* AVAlLAiiLf. FOR OTHER TANKERS RCCOHu RESIDENCL TIME IN PORT SJLVE OUT IHi: PROPOSED TANKfcRS "OTHER TANKERS" l.EAVL PKUPUSED TANKE.K5 M4KF THEIR KOUNO TRIP SET P3 = TIME Of RETURN TO PORT ТАЫХЕЯ IS BACK AT PORT MODEL SEGMENT ft (TIMER 5EGMfcNT) U&NEPATE А 'ЛЬ ! GN TEST E SEIZE ENTER ADVANCE- RELFASE ASSIGN AOVAHra TEiT e stiz1: ADVANCE ME LEASE LEAVF TABULATE TLiT NE TERMINATE AUVANCE MARK 7ЯЛМЗ?£В 11,7 I.FNSTY&E BVSG01N,1 TUG BERTH 1 TUG ?tFN*SPR£D FJJSiMLAJ»«F^ UVSGUUUT.1 TUG 1 TUG BERTH P 1 PI,4,CYCLE 240 ,1:4 3 • POR7 GENERATE 8760 TERMINATE 1 CONTROL CARDS START I END TIMER ARRIVES AFTER I YEAR SHUT OFF THE RUN START TH.C RUN RtTURN CONTROL TO OPERATING SYSTEM CARD NUMBER 1 2 3 4 5 6 7 a 9 10 11 12 13 14 IS 16 17 ■ Й 19 20 21 22 23 24 2S 27 20 29 зв л 32 33 34 3S> 36 37 38 39 40 41 42 43 44 *S ЧЬ 47 48 ■49 SO >1 аг 53 Ъл th 5to S7 50 59 «# Ы 6£ <ij 64 65 66 67 6B 69 TO 71 ■гг 73 74 75 76 77 78 Г» ВО в! Рис. 6А,2. Распечатка программы примера моделирования 6Л
6. Выходные данные программы. TABLE ENTRIES i I IN TAfll.lf 193 UPPER L IM1T 20 30 «0 50 «0 70 HO «0 DVERFLO* AVERAGE VALUfc MEAN OBSERVE0 FREQUENCY 12 56 г« 19 19 20 го 1з 10 OF OVERFLOW ARGUMENT 48 .704 pep cent OF total 6.21 24.1)1 IS.»J 9.a» 9,a» 10.36 JO. 36 6.73 5. in 106.59 STANDARD DEVIATION CUMULATIVE PERCENTAGE 6.г 35.2 • т.ъ 57.5 67.3 77.7 ай.о 9». a 100.0 2*. .937 CUMULATIVE REMAINDER 93.7 64.7 ьг.з 42.4 32.6 Ji<!.2 I 1.9 S.l .0 SUN OF ARGUMENTS 9A0O.O00 MULTIPLE OF MEAN .410 .615 .«?1 1.026 1.231 1.4J7 1.6Ag 1,847 N0N-WETGH1EO DFVIAT ION FROM MEAN. -J.15» -.750 -.3»» .Oil .452 «as J 1.25» 1.655 a) TABLE z 6MTR1ES In fable »гг UPPER LIMIT го 30 АО 50 60 70 ao «0 OVERFkOM AVERAGE VALUE MEAN OBSERVED FRliOUENC Y 0 It 7S 61 52 «7 57 42 16 OF OVERFLOW AWOUMtNT 54. . »SJ PER Of- : CENT IOTAL .00 17.06 17.77 14.«5 12.32 11.13 13.SO 9.93 3.79 I0S.S.6 STANDARD DEVIATION CUMULATIVE PfcRCENTAGE .0 17,0 34.a 49.г 61.6 72.7 as.2 96.2 100.0 22.062 CUMULATIVE REMAINDER 100.0 ег.9 65.1 50.7 36.3 27.2 13.7 3.7 •O SUM OF ARGUMENTS 22979.000 MULT IPLE OF MEAN .367 .350 ♦ 734 • 91S 1.101 1.ZB5 1.469 1..65Я NON-кЕ lUHTtO- OEVlATION FROM MEAN -1.561 -1.10B -.6*5 -.201 .2S] .70» 1.157 1.61 1 lAHLt J 1-HT.ilCb IN TAHlf 17s UPPtR L IHIT «0 50 60 70 ao 90 100 no 1 OVERf-LU* MtAN 0US.tH4*i< FRf.Ol.LNCY 2 1 27 2;; 2-f 31 14 1 J I» 6 AVERAGE VALUt- OF- OVfcKFLOw ARGUMENT 69, iJAtl MhR L.h CLMT T<.T*L 1 1 . <>4 1 5.42 la.от 1 3»1ч 17.71 7.99 7.42 10. 2» L*3 ixo.3j STANDARD OLVIAIION 23.437 CUMUt. AT J tft- PtWCLN! ACS: I 1.9 ri7.4 39.9 S>3.1 70.Й 7Й.Э «6.2 96. s 100.0 CUMULATIVE «».<! 72.5 60.0 Аб.е г», i 21.1 13.7 3.4 .0 SUM OF A»Gl|V| h«T5 12136.000 MULTltJl.t Jh Mfc AN • i7p • 720 .66 . 1 «009 1.15.} 1.29? 1.441 1 .580 MlN-wfc IipMTlO OF ■.'! F itl M - JlTlilN Mf. M>| ) . 'bj -.825" -. <9r- .027 • •S. .Rftl 1..W1 I* 7J4 TABLF ENTRIES IN TAfLL 15 1 UPPER LIMIT 20 30 AO 50 60 70 ao 90 OVERFLOW HEAts UH^FHVEU FREQUENCY 1 AO 26 17 1S> 2o 13 10 9 AKOUMtNT 50 • t>0 9 PfcH OF LtNT TOTAL .Ь6 «>Л ч 49 17.21 1 1.25 9.93 1 J. 24 6.60 6.62 5.96 AVtRA^E VAtUE OF OVLHFLD» STANDARD DEVIATION 23.6?S SUM L* AHCiUMl-NV 7642.000 CUMULATIVE PtRCfcNIAbt .6 27. 1 44.3 05.6 65.5 7S.H P 7.4 94.0 100.0 CUMULATIVE HtNAINOER 99. "I /2.rt SS.6 44. Л .4 A. A 21.1 12.5 5.9 .0 Рис, fiA.3. Распределение времени пребывания в порту примера моделирования 6А: С — танкеры типа 1:6 — танкеры типа 2; в — танкеры типа 3; г — дополнительные танкеры MUI OF I IPt h MfcAN .39* .SO? »79У .ЧЙ7 1 . 1Mb 1.3S J i.beo 1.77» NON-HE I Gin tl> OFVI ATlnN l-t^IlM MFAN - 1 . f 9b -.P.7J - .444 -.025 Л97 • иго 1 »?44 1 . 66 7 „ 21 Т. Дж. Шрайбер 321
7. Обсуждение. Логика моделирования. Обратим внимание, каким образом во втором сегменте модели осуществляется задержка первого прибытия предлагаемых дополнительных танкеров. Время пребывания в блоке ADVANCE, осуществляющем задержку прибытия (блок 9 на рис. 6А.2), определяется посредством переменной SPACE, вычисляемой как 48 * N$HERE. В свою очередь, HERE — есть имя самого блока ADVANCE. Когда первый транзакт- танкер поступает в этот блок, N8HERE равно нулю; таким образом, время пребывания в блоке также равно нулю. (Вспомним, что счетчик числа вхождений в блок подсчитывается в последнюю очередь при выполнении подпрограммы блока. Это означает, что прн нахождении произведения 48* N$HERE значение NSHERE остается равным нулю.) При входе в этот блок второго транзакта-танкера N$HERE равно единице (благодаря первому транзакту-танкеру), время пребывания равно 48 с и т. д. (см. упражнение 5,а параграфа 6.4). Блок ASSIGN в 3-м сегменте модели (блок 19, рис. 6А.2) является в некотором смысле лишним. Второй параметр транзактов дополнительно предлагаемых танкеров после их первого захода в порт уже несет в себе правильную величину размаха времени заправки. В упражнении 5 в параграфе 6.4 предлагается уменьшить число выполняемых блоков. Распечатка результатов. (Общее время занятости процессора при моделировании на ЭВМ IBM 360/67 составило 21,6 с.) На рис. 6А.З даны таблицы времени пребывания в порту различных танкеров. Среднее время пребывания танкера типов ]—3 составляет соответственно 48,7; 54,4 и 69,3 ч (MEAN ARGUMENT в табл. рисунка 1, 2, 3). Сравнивая эти величины с их средними общими временами подхода к стоянке, заправки и ухода со стоянки, составляющими соответственно 20, 26 и 38 ч (в предположении отсутствия каких-либо задержек), можно сказать, что их задержки прн заходе в порт возрастают примерно на 30 ч. Задержку на 30 ч можно сопоставить с задержкой на 5 ч, возникающей для этих танкеров при отсутствии соперничества со стороны дополнительных танкеров (как было указано в постановке задачи). В иеприведенной в тексте части распечатки результатов указано, что занятость стоянки подскочила примерно до 97% при использовании дополнительных танкеров против 80%, как это было раньше (что следует из постановки задачи). Предлагаемые дополнительные танкеры проводят в порту в среднем около 2 дней (50,6 ч, табл. 4 на рис. 6А.З). Без учета задержек время нх подхода к стоянке, заправки и отхода от стоянки должно было составлять в среднем 23 ч. Следовательно, по прибытии в порт они имеют задержку на 27 ч. В упражнении 6 параграфа 6.4 проведено дальнейшее исследование задержек танкеров. 6.4. Упражнения I. Определить булевские' переменные, принимающие значение истины при указанных ниже условиях. Определить также все арифметические переменные, используемые вами в ка честве компонентов булевских переменных. а). Очередь 7 не пуста и очередь 6 пуста. б). Многоканальное устройство TUG заполнено или текущее содержимое очереди SHIP больше 3. в). Сумма текущего содержимого очередей 1 и1 2 меньше, чем текущее содержимое очереди 3. г). В качестве решения для п. в была предложена булевская переменная, определенная следующим выражением: Ql -f Q2'L'Q3. Почему; это выражение приводит к выполнению ошибочного условия? Что следует сделать для исправления ошибки? д). Стандартное отклонение таблицы LTD меньше 10% ее среднего значения, число входов в таблицу превышает 250 и относнтелып время делится нацело на 24. е). Очередь ONE пуста и очередь TWI не пуста, или оставшаяся емкость многокан! ного устройства THREE меньше двух. ж). Логический переключатель АМВЕЦ «установлен» или многоканальное устройств) CROSS заполнено, или сохраняемая величин! KTIME имеет нулевое значение. 2. Транзакт должен продвинуться далыш определенной точки модели только в том еду чае, если логический переключатель ВЕТТ «установлен» и оставшаяся емкость много: нального устройства больше или равна Для осуществления этой цели пользован предлагает использовать блок-схему, показа» ную на рис. У2. Что неверно в таком под* (Васю rsmen Рис У2 322
Что может случиться в результате прогона Такой модели? Что можно предложить для Достижения поставленной цели и исправления ошибки в логике пользователя? 3. Показать участок блок-схемы, в котором Транзакт будет задержан в очереди 7 до тех юр, пока прибор 5 не освободится, многоканальное устройство 3 будет незаполненным и Логический переключатель 2 не будет «сбро- ;«н>. * 4. Транзакт необходимо направить на один ,Й возможных приборов JOE или PETE. Если Фба прибора или свободны, или заняты, тран- ityter должен попасть на тот из них, у которого ■йеаыпе коэффициент использования. Указать [Лглевскую переменную и соответствующий блок NnEST, в котором она будет проверяться, для 1Ьстиження такой передачи. f 6. Перечисленные ниже вопросы относятся Ш примеру моделирования 6А. ^а). Показать, как можно упростить 2-й сег- |1евт модели путем отказа от блока ADVANCE I соответственной замены операндов блока GENERATE. к*б). Показать, как изменить модель рис. 6А.2 Пис» чтобы избавиться от частичной избыточ- Мкти, представленной наличием блока ASSIGN Ш 2-м сегменте модели (блок 10). Ш*). 6 модели на рис. 6А.2 часть времени, ■•■течение которого стоянки заняты, опреде- Рется с помощью многоканального устройства BERTH. Тем не менее факт занятости стояикн ■це не означает, что ее обязательно исполь- шт для заливки нефти в танкер. Показать, Чжим образом следует изменить модель так, Избы можно было измерить время, в течение дорого стоянки используются для заливки |вкера. №. Предположим, что время пребывания Нюрту танкеров 1, 2 и 3 в примере 6А из-за Иааления пяти дополнительных танкеров уве- |иилось до недопустимого уровня. Управле- ho порта нужно определить распределение Ммени пребывания в порту для каждого из ■едующих случаев. Hi). Пяти дополнительным танкерам дается морту более низкий приоритет по сравнению мругими таикерами. (В добавление к изме- ■вшемуся времени пребывания в порту опре- пвть, каким образом в данном случае умень- Шкя интенсивность транспортировки нефти пи пятью танкерами в Великобританию.) М. Дополнительным танкерам дается в порту ■ее низкий приоритет, а их число увеличимся до шести. Предполагается, что шестой ■Вер идентичен предыдущим пяти. (Помимо Bra изменения времени пребывания в порту, уделить, как изменится интенсивность ■рспортировки нефти в Великобританию при Щп дополнительных танкерах.) в). Всем танкерам в порту назначается один приоритет, но число заливочных стоянок увеличивается от 3 до 4. Внести в пример 6А соответствующие изменения, для того чтобы отразить все указанные случаи и выполнить прогоны этих моделей для получения требуемой информации. 7. Составить полную блок-схему на GPSS для модели использования одного станка при следующих обстоятельствах. а). Поступление деталей на станок происходит по закону Пуассона со средней интенсивностью две детали в час. б). 55% деталей являются деталями типа 1, 30% — деталями типа 2 и оставшиеся 15% — деталями типа 3. в). Тип поступающей детали не зависит от типа детали, поступившей до и ее. г). Время обработки деталей типов 1, 2 и 3 распределено экспоненциально со средними значениями соответственно 20, 30 и 40 мин. д). Для определения дисциплины обслуживания на станке используется следующее правило: 1) вначале обслуживаются детали, прождавшие 90 мин и более; среди этих деталей используется критерий динамического приоритета; 2) если нет деталей, прождавших 90 мин и более, то к остальным ждущим деталям (если они есть) применяется закон обслуживания по динамическому приоритету. Модель должна определить распределение случайной величины «время, проведенное у станка» как функцию типа детали. Время, проведенное у станка, является суммой времени ожидания (если оно было) и времени обслуживания. Прогон следует прекратить после обработки на станке 100 деталей. Как будет вести себя модель при возникновении некоторых возможных временных узлов в системе? 6.5. Управление просмотром цепи текущих событий. Блок BUFFER (ВОЗОБНОВИТЬ ПРОСМОТР) Ранее было указано, что при определенных условиях в фазе просмотра интерпретатор GPSS возобновляет просмотр цепи текущих событий сначала. В частности, если некоторый активный транзакт проходит один или более блоков определенной категории, интерпретатор заново начинает просмотр ЦТС после того, как этот транзакт остановится. В табл. 6.5 перечислены ранее изученные блоки, приводящие к этому эффекту. Возобновления просмотра при указапных выше обстоятельствах являются частью логики работы интерпретатора, и пользователь лишен
Таблица 6.5. Блока, использование которых приводит к возобновлению просмотра цепи текущих событий сначала SEIZE RELEASE ENTER LEAVE LOGIC PRIORITY возможности управлять ими. Возобновления просмотра не происходят до тех пор, пока активный транзакт не остановится в своем движении. Транзакт не прекратит своего движения до тех пор, пока не войдет или в блок ADVANCE (в котором указано ненулевое время задержки), или в блок TERMINATE, или не встретит блокирующее условие. (Остановить активный транзакт могут и другие обстоятельства, до сих пор не рассматривавшиеся.) Таким образом, просмотр в общем случае не начинается заново, пока активным транзак- том не будут пройдены еще один или более дополнительных блоков. Иногда бывает так, что по достижении тран- зактом заданной точки модели пользователю нужно немедленно начать вновь просматривать цепь текущих событий, а не ждать, пока этот транзакт пройдет через дополнительные блоки. В GPSS существует специальный блок, используемый для получения такого эффекта. Этот блок показан на рис. 6.3. Он носит название BUFFER (ВОЗОБНОВИТЬ ПРОСМОТР). Этот блок не имеет операндов. Когда транзакт входит в блок BUFFER, интерпретатор GPSS прекращает его движение и тут же начинает заново просматривать ЦТС. Транзакт, помещенный в буфер (т. е. вошедший в блок BUFFER), остается в цепи текущих событий, сохраняя в ней то же положение, что и при входе в блок BUFFER. По мере продолжения нового просмотра этот помещенный в буфер транзакт будет в конце концов вновь обработан интерпретатором. С этого момента будет возобновлено его дальнейшее движение в модели. В качестве примера, иллюстрирующего использование блока BUFFER, рассмотрим стол выдачи в библиотеке, где пет открытого доступа (т. е. посетителям не разрешено заходить BUFFER Рис. 6.3. Блок BUFFER 324 в хранилище для поиска необходимых книг). Стол выдачи обслуживает один библиотекарь. Для простоты предположим, что посетителю не разрешается выбирать одновременно более одной книги и что книга, которую он заказывает, всегда имеется в наличии. Для получения книги посетитель дает библиотекарю листок; с требованием. Затем библиотекарь идет к книжным полкам, находит кпнгу, возвращается; с ней к столу выдачи и отдает ее посетителю.; Если в момент освобождения библиотекаря обслуживания ожидают два или более посетителей, то библиотекарь забирает все листки с требованиями и затем приносит одновременно все необходимые книги. Время, требуемое для поиска книги или книг в хранилище на полках, зависит от числа книг, которое необходимо отыскать. Время, затрачиваемое иа передачу листков и на выдачу книг, которые уже принесены из хранилища, пренебрежимо мало, х.На рис. 6.4 показана модель стола выдачи. В 1-м сегменте модели моделируются посетители, подходящие к столу выдачи по закону Пуассона со средним временем между прибк тиями, равным 300 с. После прибытия лосе» тель входит в блок QUEUE и затем в ой случае ждет там, пока библиотекарь не воз.» его листок с заказом (т. е. ждет, пока библ текарь не откроет клапан SLIP). Когда библ! текарь открывает клапан SLIP (имитируя самым процесс взятия листка у посетитч илн листков у посетителей), посетитель (т, тители) входит в блок «GATE LS SLIP» ждет там до тех пор, пока библиотекарь принесет книгу (книги) и не отдаст ее (i (т. е. ожидает открытия библиотекарем клан book). После того, как библиотекарь откроет кла: BOOK (имитируя тем самым выдачу кал посетителю заказанной им книги), посети, (посетители) проходит через открытый клан фиксирует статистику для очереди и уход Заметим, что транзакт-посетитель имеет пр ритет, равный 1, по причине, которая бу, объяснена ниже. 2-й сегмент модели на рис. 6.4 моделир; библиотекаря. В «холостом» режиме бнблис карь ждет у блока «TEST G WSBLOKA, 0», тех нор, пока не понадобятся его услуги. R только в блоке QUEUE 1-го сегмента мод будет находиться хотя бы один транзакт титель, библиотекарь проходит через TEST, открывает клапан SLIP (посред< входа в блок «LOGIC S SL IP») и входит в. BUFFER, чтобы пропустить через только открытый клапан транзакты, имитирующие сетителей. Заметим, что транзакт-библиотею имеет приоритет 0; это означает, что в цепи кущих событий он располагается позади тр эактов-лосетителей, имеющих более внш
ii, GENERATE ''TERMINATE [LP fc#CRMEHl МОДЕЛИ. } LOuit; S SLIP ' BUFFER • LOGIC R ' ' ADVANCE FNSFETCH ' ' LOGIC S 1 f BUFFER ^ LOC R SLIP BOOK, BOOK I TRANSFER (BACK) с-И СЕГМЕНТ МОДЕЛИ , 6.4. Блок-схема, иллюстрирующая использование *- BUFFER оитет. Войдя в блок BUFFER H вызвав р,шшм возобновление просмотра ЦТС за- Ч' гранзакт-библиотекарь вынуждает ин- ретатор GPSS обрабатывать транзактов- гятелей, продвигая их через клапан SLIP, яе того,, как это сделано, интерпретатор "i берется за транзакт-библиотекаря в цепи "их событий. Теперь библиотекарь протея дальше в блок «LOGIC R SLIP», закрывая клапан SLIP. Это необходимо для того, чтобы посетители, пришедшие в период занятости библиотекаря, ждали, пока у них заберут листки с заказом. После закрытия клапана SLIP библиотекарь ищет и приносит книги (путем входа в блок «ADVANCE FNSFETCH»). Время, затрачиваемое на эту операцию, зависит от числа листков у библиотекаря, а оно, в свою очередь, равно W$BLOKB, т. е. числу транзактов, ожидающих в блоке «GATE LS SLIP». (Это означает, что функция FETCH, определение которой не припедеио, имеет в качестве своего аргумента W8BLOKB.) Когда библиотекарь возвращается с книгой (книгами), он открывает клапан BOOK (посредством входа в блок «LOGIC S BOOK») и затем помещается в буфер (войдя в блок BUFFER). Это вынуждает интерпретатор GPSS заново начать просмотр цепи текущих событий. Транзакты-посетители, ожидающие возвращения библиотекаря из хранилища (т. е. задержанные у закрытого клапана BOOK), проходят через этот клапан, фиксируют статистику об очереди в блоке DEPART и уходят. После этого интерпретатор вновь встречает транзакт-библиотекаря в цепи текущих событий. Теперь библиотекарь закрывает клапан BOOK (зайдя в блок «LOGIC R BOOK») и переходит назад либо для обслуживания следующего посетителя (или посетителей), если он (они) есть, или ожидает прибытия следующего посетителя. Модель на рнс. 6.4 следует изучить до тех пор, пока она не станет абсолютно понятной (см. упражнение 1 параграфа 6, 7, где приведены вопросы, касающиеся этой модели). В следующем параграфе представлен пример, в котором также моделируется работа стола выдачи в библиотеке. В противоположность модели на рис. 6.4 п примере 6В рассмотрена возможность наличия более одного библиотекаря у стола выдачи. Происходит также отказ от предположения о том, что время, требуемое иа выдачу принесенных книг, пренебрежимо мало. Все это усложняет логику, необходимую для моделирования процесса. 6.6. Пример моделирования 6В. Задача о библиотеке 1. Постановка задачи. Рассмотрим библиотеку без открытого доступа. В такой библиотеке любой желающий получить книгу должен представить библиотекарю, работающему у стола выдачи, листок запроса. После этого библиотекарь идет в книгохранилище, ищет там книгу и возвращается с ней к столу. Затем происходит процедура выдачи, после чего посетитель уходит с книгой. 325
Если обслуживания ожидают несколько человек, то библиотекарь часто экономит время, необходимое для хождения от стола выдачи до хранилища, забирая листки запроса сразу у нескольких читателей. Поскольку число книг, которое библиотекарь может нести одновременно, ограничено, то и число листков, забираемых библиотекарем одновременно, будет ограничено. Построить GPSS-модель для имитации процедуры выдачи книг в библиотеке при следующих условиях. 1. Лица, желающие получить книги, приходят к столу по закону Пуассона со средней интенсивностью 30 человек в час. 2. Каждый хочет подучить ровно одну книгу. Более того, требуемая книга всегда имеется. 3. Число библиотекарей, работающих у стола выдачи, должно быть переменным. 4. Как только библиотекарь освобождается, он может взять листки запроса ие более чем у четырех человек одновременно (если такое число людей ожидает обслуживания). 5. В модели приняты следующие временные характеристики. а). Время, затрачиваемое на передачу листков запроса, несущественно. б). Время, необходимое на прохождения в один конец от стола выдачи до хранилища, равно 1 =t 0,5 мин. в). Время, необходимое на поиск одной, двух, трех или четырех книг, распределено по нормальному закону со средним соответственно 3, 6, 9 и 12 мин и стандартным отклонением, равным 20% от среднего. г). После возвращения библиотекаря из хранилища время, требуемое на завершение процедуры выдачи, составляет 2 =ь 1 мин на человека. 6. Листки запросов берут в порядке поступления. По возвращении библиотекаря из хранилища завершение процедуры выдачи осуществляется по этому же принципу. 7. Если свободны два или более библиотекарей и прибывает посетитель, то его обслуживает тот, кто был свободен дольше других. 8. Если свободны два или более библиотекарей и обслуживания ожидают два нли более посетителей, то библиотекари не делит работу поровну между собой. Вместо этого, один библиотекарь берет столько листков, сколько сможет (но не более четырех); затем, если остаются еще посетители с листками, то следующий библиотекарь также берет столько листков, сколько сможет, и т. д. В модели следует определить распределение случайных величин «время, проведенное каждым читателем у стола выдачи» и «число листков, забираемых библиотекарем». Необходимо иайти также нагрузку библиотекарей. Получить требуемую информацию для случаев трех, четыре! и пяти библиотекарей, работающих у стол! выдачи. Для каждого случая продолжать мо делирование до тех пор, пока не будут пол ностью обслужены 100 человек. 2. Метод построения модели. По сравиеиик с упрощенной моделью библиотеки на рис. 6.4 в более сложной постановке в настоящем при мере существуют пять дополнительных а» циальньгх обстоятельств, которые необходад учесть. 1. Следует найти способ, с помощью которой! библиотекарю запрещалось бы брать листе! более чем у четырех посетителей одновременно] (В этом состоит отличие от модели рис. 6.4| где библиотекарь забирал листки у всех ожи дающих, независимо от их числа.) ] 2. Каждый библиотекарь должен каким-п образом узнать, сколько у него имеется ли стков, когда он идет в хранилище. (Эго необ ходимо для того, чтобы сделать выборку и распределения времени поиска. Знание числ листков используется также потом, когда й блиотекарь должен определить, скольким m сетителям необходимо вручить прииесенив книги после возвращения нз хранилища.) Men использования счетчика содержимого блок как на рис. 6.4, в примере неприемлем, а скольку в общем случае какие-то посетите ожидают возвращения первого библиотекам другие ожидают (в том же блоке) возвращен! второго библиотекаря и т. д. 3. Поскольку у стола выдачи работают 1 сколько библиотекарей, посетители дол/и иметь возможность опознать именно того, км рый взял их листки, чтобы впоследст» узнать, что он вернулся нз хранилища, и з кончить процедуру получения. 4. Поскольку несколько посетителей мод ожидать возвращения из хранилища нескш ких различных библиотекарей, библиотека? необходимо иметь возможность опознать ц посетителей, чьи книги они принесли. Зая библиотекари должны указать своим лося телям, что для них процедура выдачи зам шена. 1 5. Любой библиотекарь завершает лря дуру выдачи одновременно только для одя посетителя. Посетители могут уходить отав выдачи только поодиночке (в отличие от модГ на рис. 6.4, где процедура выдачи заканчи лась одновременно для всех посетителей, у! торых были взяты листки запроса). Ниже! каждого обстоятельства приведен метод,, пользуемый для его обеспечения. Обстоятельство 1\ ограничение числа стков, забираемых библиотекарем. Когда у вия модели приводят к событию взятия! стков, библиотекарь открывает клапан S Затем библиотекарь помещается в буфер,
зывая новый просмотр цепи текущих событий интерпретатором. Обрабатываемый транзакт- лосетитель, имеющий более высокий приоритет, проходит через открытый клапан и входит в блок SAVE VALUE, увеличивающий сохраняемую величину на единицу. (Сразу перед открытием клапана SLIP транзакт-библиотекарь обнуляет сохраняемую величину. Сохраняемая величина последовательно подсчитывает число листков, забираемых библиотекарем.) Затем транзакт-посетитель переходит в блок TEST, где вычисляется булевская перемен- ■ая, определяющая, является ли истиной одно КЗ двух условии: 1) или библиотекарь уже взял четыре листка и 2) или посетителей, желающих отдать свой листок, больше нет. Если булевская переменная имеет значение остина», то транзакт-посетитель сам закрывает клапан SLIP; в противном случае посетитель обходит блок LOGIC, закрывающий мот клапан. При этом транзакт-посетитель останавливается у другого клапана (соответствующего клапану BOOK модели иа рис. 6.4), W и будет ожидать, пока библиотекарь не вернется из хранилища и не закончит процедуру выдачи. Между тем интерпретатор GPSS, продолжая просмотр ЦТС, либо пропустит еще несколько транзактов-посетителей через клапан SLIP (если он еще открыт), либо оставит U заблокированными у клапана SLIP (если ОН был закрыт предыдущим траизактом-посе- отелем). ,' 8 модели иа рис. 6.4 клапан SLIP закрывает сбнблиотекарь. Это отличается от модели настоящего примера, где клапан SLIP закрывает [транзакт-посетитель. Ь Обстоятельство 2: как узнать, сколько у библиотекаря листков. Как указывалось при рассмотрении обстоятельства 1, транзакты-по- Йетители подсчитывают число листков, забирае- ра библиотекарем, с помощью сохраняемой мшчины. Как только транзакт-библиотекарь таодит из блока BUFFER, он поступает (блок ASSIGN, записывающий значение этой «Ираияемой величины во второй параметр. in все, что требуется библиотекарю для того, |тобы знать, сколько у него листков. ^Обстоятельство 3: обеспечение индивидуальности каждому библиотекарю. В начале, когда Каждый транзакт-библиотекарь поступает в мо- нь, он входит в блок ASSIGN, где его первому ■раметру назначается значение 1, 2, 3 и т. д. ^зависимости от того, является ли он первым, Рррым, третьим библиотекарем и т. д. Это качает, что транзакты-библиотекари отли- ротся один от другого значением своего пер- ро параметра. ГДля того чтобы сказать посетителям, кто их нсдуживает, транзакт-библиотекарь начинает риуживание входом в блок «SAVEVALUE CLERK.P1», записывая тем самым свой отличи* тельиый номер в сохраняемую величину CLERK. Затем транзакт-библиотекарь открывает клапан SLIP и помещается в буфер. После того, как транзакт-посетитель во время нового просмотра проходит через клапан, он поступает в блок «ASSIGN 1.XSCLERK», помещая таким образом номер библиотекаря в первый параметр. Таким образом, каждый траизакт-посетитель с помощью величины своего первого параметра знает, какой библиотекарь его обслуживает. Рассмотрим теперь часть модели, логически соответствующую клапану BOOK в модели на рис. 6.4. Поскольку в этой модели у стола выдачи работал только один библиотекарь, там требовался только один клапан BOOK. В данной модели для каждого библиотекаря требуется эквивалентный клапан BOOK. Поскольку у транзактов-посетителей, ожидающих книг, в Р1 записан отличительный номер библиотекаря, то в качестве клапана BOOK для каждого библиотекаря может служить единственный блок «GATE LS PI». Число необходимых клапанов равно числу значений, которое может принимать первый параметр транзакта-посе- тителя. Оно, в свою очередь, равно числу библиотекарей, работающих у стола выдачи. Рассмотрим, например, транзакта-посетителя, величина Р1 которого равна 2. Это означает, что его книгу ищет второй библиотекарь. Когда второй библиотекарь готов вручить ему книгу, он может проинформировать об этом, поместив логический переключатель 2 в положение «установлено». Это вызовет открытие клапана для траизакта-посетителя, который теперь может пройти через блок «GATE LS PI». С точки зрения транзактов-посетителей с величинами Р1, равными 1, 3, 4 и т. д., клапан продолжает быть закрытым (если, конечно, их библиотекарь не вернулся из хранилища и не открыл их клапан). Обстоятельство 4: как библиотекарю узнать своих посетителей. Библиотекарю просто отличить своих посетителей, поскольку в их первом параметре записан его номер. Вспомним, что у транзакта-библиотекаря также записан его номер в качестве величины Р1. Когда транзакт-библиотекарь заканчивает поиск, он информирует об этом посредством входа в блок «LOGIC S PI», после чего открывается его клапан BOOK (а именно, логический переключатель, номер которого равен величине PI этого транзакта, переходит в положение «установлено»). Затем транзакт-библиотекарь помещается в буфер, давая возможность интерпретатору GPSS попытаться продвинуть дальше в модели транзакты-посетителн. Для того чтобы продвинуться через блок «GATE LS PI», транзакт-посетитель должен иметь соответству-
ющий номер библиотекаря в качестве величины Р1. Только тот траизакт, который обслуживается данным библиотекарем, может пройти через этот клапан. Обстоятельство 5: как обеспечить однократное завершение процедуры выдачи. После того, как транзакт-библиотекарь возвращается из хранилища, он входит в блок ADVANCE, где задерживается на время, необходимое для того, чтобы закончить процедуру выдачи для одного посетителя. Затем транзакт-библиотекарь открывает свой клапан BOOK и помещается в буфер, позволяя интерпретатору подвинуть транзакт-посетитель, для которого процедура закончена, через этот клапан. Затем сам транзакт-посетитель входит в блок «LOGIC R PI», закрывая тем самым этот клапан за собой. Это предотвращает продвижение других транзак- тов-посетителей (если они есть), обслуживаемых этим же библиотекарем, через клапан BOOK, соответствующий этому библиотекарю. (Они еще по логике модели не могут пройти через этот клапан, поскольку процедура выдачи для них не закончилась.) После этого траизакт-посетитель табулирует свое время, проведенное у стола выдачи, и покидает модель. По мере продолжения просмотра вновь обрабатывается помещенный в буфер транзакт-библиотекарь. Выйдя из блока BUFFER, библиотекарь входит в следующий блок LOOP, где определяет, ждет ли его хотя бы еще один посетитель, чтобы закончить процедуру выдачи. Если это так, то библиотекарь идет назад в блок ADVANCE, где имитируется следующее время завершения выдачи; если нет, то библиотекарь переходит пазад для определения, есть ли посетители, ожидающие сдачи своих листков запроса, и т. д. В модели на рис. 6.4 клапан BOOK закрывал транзакт-библиотекарь. Это отличается от модели примера, где транзакт-посетитель закрывает тот клапан BOOK, который соответствует его библиотекарю. Теперь следует изучить блок-схему, приведенную на рис. 6В.1. Затем нужно вновь просмотреть только что сделанные замечания, причем в процессе их чтения следует почаще смотреть на блок-схему. Необходимо понять, что модель, приведенная на рис 6В.1, несмотря на свою кажущуюся вначале сложность, является просто логическим расширением модели, приведенной на рис. 6.4. 3. Таблица определений. Единица времени: 1 с. Таблица 6В.1. Таблица определений примера моделирования 6В Элемент GPSS Интерпретация Транзакты: 1-й сегмент модели 2-й сегмент модели Функции: SNORM XPDIS Логические переключатели: 1, 2, 3 и т.д. SLIP Сохраняемые величины: CLERK COUNT •Многоканальные устройства: BUSY Таблицы: DELAY SLIPS Посетитель у стола выдачи: Р1 — номер, определяющий библиотекаря, который обслуживает этого посетителя Библиотекарь, работающий у стола выдачи: Р1 — вомер, определяющий этого библиотекаря; Р2 — вначале число листков, которое взял этот библиотекарь; звтем число посети* телей, которым еще необходимо закончить процедуру выдачи Функция нормированного нормального распределения Функция экспоненциального распределения Связаны с 1, 2, 3-м в т. д. библиотекарем; каждый библиотекарь использует свой логический переключатель для информации своих посетителей о том, что его книга найдена. Каждый посетитель соответственно проверяет логический переключатель своего библиотекаря, чтобы определить, готова лн его книга Используется библиотекарем для информации о том, что он готов начать собирать листки; для этой цели все библиотекари используют один и тот же логический переключатель ; Полнословная сохраняемая величина, используемая в качестве канала связи маму отличительным номером библиотекаря н посетителями, чьи лнсткя этот библиотекарь' забрал Полнословная сохраняемая величина, используемая для подсчета числа листков, взятых библиотекарем на этапе сбора листков Используется для подсчета нагрузки библиотекаря Используется для нахождения распределения времени, проводимого посетителями у стола выдачи Используется для пахождеиия распределения числа листков, забираемых библиотекарем 328
4. Блок-схема. GENERATE I \t20FNSXPDi;,.„l} (WAIT) { ADv'ANCt ПРИХОД ЛЮДЕЙ к'СТЭЛУ ВЫДАЧИ ПУСТОЙ БЛОК ADVANCE (СМ ОПИСАНИЕ 1 :г хз l.XSCI ERK 1 С ASSIGN J С SAVEVALUE Л COUNT».1 I BV$DOU8L IBYPAS) LOGIC PI TABULATE TERMINATE ЖДАТь.ПОКА БИБЛИОТЕКАРЬ ОТКРОЕТ КЛАЯАН SLIP ПОЛОЖИТЬ PI РАВНЫМ НОМЕРУ БИБЛИОТЕКАРЯ ПОДСЧИТАТЬ ЧИСЛО ЛИСТКОВ У БИБЛИОТЕКАРЯ ВЗЯЛ ЛИ БИБЛИОТЕКАРЬ ВСЕ ЛИСТКИ? ЕСЛИ НЕТ. ОБОЙТИ СЛЕДУЮЩИЙ БЛОК ДА ЗАКРЫТЬ КЛАПАН SLIP ЖДАТЬ. ПОКА БИБЛИОТЕКАРЬ ОТКРОЕТ КЛАПАН BOOK ЗАКРЫТЬ КЛАПАН BOOK ЗАПИСАТЬ ВРЕМЯ, ПРОВЕДЕННОЕ DELAY У СТОЛА ВЫДАЧИ УЙТИ ОТ СТОЛА ВЫДАЧИ 1-Й СЕГМЕНТ МОДЕЛИ Рнс 6В.1. Блок-схема примера моделирования 6В
(BLOKA) GENERATE ВВЕСТИ ТРЕХ БИБЛИОТЕКАРЕЙ I.NSBLOKA IBLOKfl) WSWAM ENTER BUSY f SAVEVALUE J COUNT. 0 С SAVEVALUE J CLERK,P1 11 LOGIC SLIP BUFFER 2.XSCOUNT С ASSIGN J TABULATE slips] ПОЛОЖИТЬ PI РАВНЫМ НОМЕРУ БИБЛИОТЕКАРЯ ЖДАТЬ. ПОКА ПРИДУТ ПОСЕТИТЕЛИ УСТАНОВИТЬ СТАТУС ЗАНЯТОСТИ ОБНУЛИТЬ СЧЕТЧИК -взятых листког СВЯЗАТЬ НОМЕР БИБЛИОТЕКАРЯ С ТЕМИ. КТО БУДЕТ ОБСЛУЖЕН ОТКРЫТЬ КЛАПАН SUP ВОЗОБНОВИТЬ ПРОСМОТР ДЛЯ ТОГО. ЧТОБЫ ПРОПУСТИТЬ ПОСЕТИТЕЛЕЙ ЧЕРЕЗ ОТКРЫВШИЙСЯ КЛАПАН ПОЛОЖИТЬ Р2 РАВНЫМ ЧИСЛУ ВЗЯТЫХ ЛИСТКОВ ЗАПчСМЪ ЧИСЛО взятых листкое 2-й СЕГМЕНТ МОДЕЛИ Рнс. 6В.1. Продолжение (BLOKC) LOGIC ADVANCE 60,30 ADVANCE VSGNORM ADVANCE 60.30 3 ADVANCE 120.60 2 BUFFER LOOP I Pi LEAVE f8^ T (BLOKB) TRANSFER ПОЙТИ В ХРАНИЛИЩЕ НАЙТИ КНИГИ ВЕРНУТЬСЯ ИЗ ХРАНИЛИЩА ЗАВЕРШИТЬ ВЫДАЧУ ДЛЯ СЛЕДУЮЩЕГО посетите: ля ОТКРЫТЬ КЛАПАН BOOK ВОЗОБНОВИТЬ ПРОСМОТР ДЛЯ ТОГО. ЧТОБЫ ПРОПУСТИТЬ ПОСЕТИТЕЛЕ* С НАЙДЕННЫМИ ДЛЯ НИХ КНИГАМИ ЧЕРЕ1 КЛАПАН BOOK ВЕРНУТЬСЯ ДЛЯ ЗАВЕРШЕНИЯ ВЫДАЧИ СЛЕДУЮЩЕМУ Л ОСЕТИШВ /ЕЫИ ОН ЕСТЬ) БИБЛИОТЕКАРЬ ОСВОБОЖДАЕТСЯ ПОЙТИ НА НАЧАЛО СЛЕДУЮЩЕГО ЦИКЛА ОБСЛУЖИВАНИЯ
S. Распечатка программы. SLOCK NUMBER •loc □РЕВЛТ[ON SIMULATE AlB.ODiE.F.G COMMENTS * EOU1VALENCE OeFINitiONCSl * SLtR EOU 10.L "SLIP" ANO 10 A«E Гиб SAME LOGIC SWITCH * FUNCTION OEFtttt rroNISl * SNQRM FUNCTION RHI.Cfb STANDARD NORMAL DISTRIBUTION FUNCTION 0»-5/»00003,-4/.00 13г.-3/.00621.-2.Э/.0227й,-а .OU68 1,-J .5/. I S50 7. -I.<i/. | ЬВ66 .- I/. 2 1 I 86 .- .8/ .27*25, -. 6 .3«4 5&.-.4/.*20 7«.-.2/.5,0/.&?926..2/.6SSA3..A .7гь75,.б/.7веi4..8/.e» la*.i/.aei93.1.2/.93319.1.s .97725.2/"»99379.2.b/.99BbS, 3/.99997. A/I .5 XPOIS FUNCTION RN1.CS* EXPONENTIAL DISTRIBUTION FUNCTUlN 9.6/. }» . 104/.Z..2 22/.3..3&5/.4. .509/.>».64/»6• .9 15/.7 .1 .2/, 75, I. Jf} .В. 1.6Л84 • 1.83/.88. 2. 1 2/.9. 2.3/.92.2. 52/.9» .2.81/.95. 2.99/-,96, 3.2 .97,3.&/.9£ . 3. 9/.99,A.6/.99 5,Ъ. 3/.998 .6.2/.999. 7/.999В,В « * STORAGE CAPACITY DEFINITIONS) SILE OEF INITIONI SI DELAY slips TABLE TABLE M 1,360 ,60.2b XSCOUNT. 1, I.5 SET STORAGE CAPACITY FOR 3-CLERK RUN TIME SPENT AT CHECKOUT DESK NUMBER OF SLIPS PICKED UP VARIABLE DEFINITIONISI DOuBL GNORM BVAR I ABLE FVARIABLb KICOUNT > E ><>»>A I T ■ E "О f fnssncam/5+ i i« iaoAP? MqOtL SEGMENT ) GENERATE ADVANCE GATE LS ASSIGN SAVEVALUE TEST t LOMC R GATE LS LOGIC R TABULATE TERMINATE I20.FNtXP01S, SLIP l.X*CLERK COUNT 4-, J evsoaueL.i,bv SLIP Pi pi DELAY I .♦ I PEOPLE ARRIVE AT CHECKOUT DtSK DUMMY ADVANCE BLOCK (SEE ThL BfclTEUPI •AIT 'TIL CLERK HAS OPENED "SLIP-PICKUP" Г.АТЕ SET PI = CLERK 1 .0. Nil. UPDATE COUNT OF SLIPS CLERK NOW HAS AS IS THIS CLFftK OONL PICKING UP bLIPS? IF NOT. BYPASS THt NtKT BLOCK yesi Close the. "slip-pickup- sate wait 'til cle4k has opened "checkout-finished" gate Close '«cmeckouT-f in ishe<>>< gatc recqro time spent at chf-ckout desk leave the checkout olsk MODEL SEGMENT 2 12 13 ]A 15 16 17 18 »9 2« 21 22 23 г» 25 26 г? 28 29 30 BLDKA BLDKB BLOKC « GENERATE AS5IGN TEST G ENTER SAVEvALUE SAVEVALUE LDGIC S BUFFER ASSIGN TABULATE AOVANCL ADVANCE ADVANCE ADVANCE LOGIC S BUFFER LOOP LEAVE TRANSFER ..,3 l.NSBLQKA ITIWAI T,0 BUSY COUNT.Q CLERK.pl «LIP 2.XICOUNT SLIPS 60,30 VtGNORM 60.30 , 1 20,ЬО PI 2,BLOKC BUSY •BLOKB CONTROL CAROb, BLOCK QPE 12 MULT t PL I 12 MULTIPLI START 100 CLEAR BLOKA GENERATE ...» DEFINITION OF SYMBOL IN ABOVE STORAGE S*SLISY,e START 100 CLEAR BLUKA GENERATE ...5 DEFINITION GF SYMBOL IN ABOVE STORAGE S»BUSV.S START Ю0 END PROVIDE 3 CLERKS SET pi = Clerk i.o. no. ANYONE WAMING FOR SL|P~PTCKUP7 YES". ENTER BUST STATUS ZERO-OLT "SLIPS-PICKFO-UP" COUNTt" COMMUNICATE CLERK I.O. NO. TO PEOPLE ABOUT TO BE SERVED OPEN SLIP-PICKUP GATF «C-START SCAN TO LET PEQPLF lndUUUH THE JUST-DPENEO GATE SET P2 = NO. OF SLJPb PICKED UP RECORD ND. Of SLIPS PICKEP UP TRAVEL (NTO THC STACKS LOCATE THE BOOKS RETURN FROM THE STACKS FINISH CHECKING OUT NEXT PERSON OPEN "CHECKOUT-FINISH60» GATE RE-STAGY SC*M tO Lfc'T THIS Л*ХТ person through the just-dpened gate loop back to finish checking out next person iif anvi otherwise. Clerk leaves bum status GO START NfcKT SERVICE CYCLE rand «e-def5, ano stc capacity re-oefs start the 3-clerk run clear for the 4-clerk run re-configure fd» tm€ a-clerk hun CARO 5ЕГ STORAGE CAPACITY FOR 4-CLERV RUN START THE «-CLERK RUN CLEAR FOR THE S-CLERK RUN RE-CONFIGURE FDR 7HE S-CLERK RUN CARO SET STORAGE CAPACITY FOR 5-CLtRK RUN START THE S-CLERK RUN RETURN CONTROL TO OPERATING SYSTEM CARO NUMBER 1 2 3 A s 9 10 1 I 12 13 I* 15 16 17 IB 19 20 21 22 23 г* 25 26 27 28 £9 30 31 32 33 ЗА 3» ЗЬ 37 3tt 39 40 «I «г 43 44 АЬ 46 AT »8 4V 50 SI S? S3 Ь4 5S *>6 •5T btt 5V 60 SI 62 63 64 66 66 67 6H 69 to 71 72 73 7A 7b 76 77 78 79 80 81 ВЭ 84 lib 86 87 88 U 6B.2. Распечатка программы примера моделирования 6В
6. Выходные данные программы. TAHLl. (VLAT iNTW I bS J"* T А И1, 1 i"? irpvf К 1 1И1Т 360 4?0 4НО ?>4й OQO 660 7?0 /ту rt4 0 40» »(>(> юго ЮНО МФО 1<Г0О 1,4.0 IJ?e 1зао 1440 1'jOO 1*>Ь0 16^0 1680 1741) iaoo DVLPFLO» ML AN I1H&1-4VEU FktOUl KY > 7 rt ill *> l> I 1 .) *' 1 J ' w о i> a 4 м 7 1 'j О 1 J 7 AtftHAGE VALUE OF OvLHU-OW AMGUMlNT 10 6Ъ Ciiiy **€U DC CENT TOTAL. Г .44 b. <1<1 ь.чч 4*4* 1.44 *Э.44 .40 .44 .00 J. 44 .«>-> ?.49 ?.6o Ц.4Ч /.■1» «-.49 -i.44 3. 44 «.'1'» 6.49 .44 4.99 • on .99 ?.44 6.44 1 V* 5 * П 0 STANOACD ktV 1 A T f (.lhl 4в« CUM'JLATl VF PErtCtNTAGE 1.» e.v 14.4 24.9 56.4 32.4 33. 4 3.4.4 34.» 36,9 Л/.4 40 .«г 43.4 49.9 S>7.<» 6.?. 4 66.9 70.4 75.4 н;-.4 H.J.4 К». 4 яа.9 ,44.4 92.9 ] 00.0 ооо ■SUM CUMULAT|VF Rfe MA] N0119 ОЙ.О 4 1 .11 НЬ ■ 'J 75.0 7 J.O г 7.0 6*. О 4^.П оь.о 6 1.0 (>2.а '.4.О Ьб.Н ъо.о 42.0 37.0 "J3.0 24.0 24 ,0 17.0 16. о 1 1 .0 11.о 10.0 7.11 .0 OF АЯйимЬМТ'. LU6S66.CP0 MULT 1 PL!: llF McAN ..ЧТ7 • J» 4 -4<jO .306 • S6 i .61" .671 .711 • 76* ♦ И44 .4PG .4S7 1.01 ' 1.0 6" l.l^n 1. 142 l.<».}« 1.294 1.Й1 1 .40 7 1.46 4 i. ьго i ••>;!. 1 > (:Л<' 1.68Ч nun-wi. [<;нг-о Ol.VlAl li J N (-**MW M^AN -1 .4-, 7 - 1 ♦ ,1 U -1.^10 -1.ЛИ6 - .46** -. «Mrt -. 71 4 -,S«H. -. 4ц*. -..* • • -..!IH -.0 94 .o;i4 .in .777 .«»! .■;^"i .644 .77 ' ."47 1 .-';*l 1. 14'> l -2Ь4 1.393 l."4 7 a) TABLE Sl-IVS FNTHIES IN TABItE 53 UPPEH L IMIT 1 2 3 4 Mf An OBSERVE 11 f-frEOUENCY V J / I I Argument 1.943 PbR CENT OF TOTAL 60. 17 b.66 1J.20 20.75 S7ANOARO OEV1A 1 CUMULATIVE PtHCENT Aufc 60.3 66.0 79.2 100.0 ION .261 <:UMULAT1VF BEMA|N|>F4 34.6 33.9 JO.T .0 SUM 01- AtfGUMtNTS 103.OPO МШЛ 1PLE (IF MfcAN «bj* 1 .0^4 1 . Ь4 Л г,оьч NO г—ч,у I>F.VTA1 1()N FHOM HI-AN -. 74 / • 1144 .HI T l.ftj" !u41tl> RF«AIN|Nu FREQUENCIES AHfc ALL /EDO 6) Рис. 6В.&. Часть распечатки результатов для примера моделирования GB: а— распределение времени, проведенного посетителями у стола выдачи (случай с тремя библиотекарями); б — распределение чкел* листков, забираемых библиотекарем (случай с тремя библиотекарями) j 7. Обсуждение. Логика моделирования. Среди всего прочего модель должна быть приспособлена для оценки распределения времени пребывания посетителей у стола выдачи. Одним из способов достичь этого является табулирование величины Ml транзактов-посетителей непосредственно перед их уходом из модели. Другим способом могло быть использование Q-таблицы, что потребовало бы прохождения транзактов- посетителей через блок QUEUE в момент их поступления и через блок DEPART в момент их ухода. В представленной модели был выбран первый способ. Таким образом, нет смысла вводить в модель блоки QUEUE—DEPART. Заметим, однако, что в 1-м сегменте модели на рис. 6.4 присутствовала пара блоков QUEUE—DEPART; более того, число транзактов, ожидающих в блоке QUEUE, указывало на число транзактов-посетителей, ожидающих, чтобы у них взяли листок. Чтобы получить такую же статистику в модели примера 6В, в 1-м сегменте модели испояй зустся пустой блок ADVANCE. Этот блок, расположенный сразу же после блока GENE! RATE для транзактов-посетителей, имеет дв назначения: 1) он позволяет транзактам-посе тителям немедленно выходить из блока GENE! RATE, что необходимо для того, чтобы не на рутать последовательность времени между по ступлениями; 2) подобно блоку QUEUE, прв веденному на рис. 6.4, текущий счетчик чисЛ транзактов в этом блоке равен числу транзах тов-посетителей, ожидающих обслуживай! Поля А и В этого блока ADVANCE оставла пустыми; это означает, что транзакты-поо тели задерживаются в этом блоке только в случае, если следующий за ним клапан SLII закрыт (см. упражнение 2, а, параграфа 6.!" Обратим внимание на метод последовател: ной нумерации транзактов-библиотекарей в в 332
мм параметре. Их блок GENERATE имеет доя. В следующем блоке величине первого параметра дается значение счетчика числа Етуплений в блок GENERATE. Поскольку нзакты-библиотекари входят в модель через к GENERATE один за другим, счетчик кгого блока последовательно принимает зна- Ййя I, 2, 3 и т. д. Таким образом, эта вели- ш является подходящим счетчиком, который (Южно использовать для пометки транзактов- бйблиотекарей определяющими их номерами L 2, 3 и т. д. ..Условие 6 постановки задачи утверждает, Иго библиотекарь забирает листки на основа- Ёпринципа «первым пришел — первым обей». Затем библиотекарь отдает найденные i посетителям в том же порядке, в котором Езабирал листки. Для обеспечения свойств ;ого обслуживания в порядке поступления требуется дополнительных средств; это про- Айюдвт как естественное следствие автоматиче- Jioro порядка просмотра с начала до конца |НШ текущих событий (см. упражнение 2, в рраграфа 6.7). ^Условие 7 в модели говорит о том, что тот ■блиотекарь, который был свободен дольше Вех, должен начать обслуживание первым. Цветом случае нет необходимости в специаль- !1ствах для обеспечения этого правила, гы, представляющие свободных библио- расположены в цепи текущих событий 1 до конца в порядке, соответствующем нию времени, прошедшего с момента дения. В момент прибытия посетителя библиотекарь из этой группы открывает BOOK и продолжает обслуживание ля. не 8 утверждает, что когда библиоте- чинает обслуживание, он берет сразу рех листков даже в том случае, если другой свободный библиотекарь, вообще яций листков. Это условие также вы- :я естественным путем, поскольку имен- работает интерпретатор GPSS. Когда ^библиотекарь открывает клапан затем помещается в буфер, через этот пройдет столько транзактов-посетите- мько возможно (но не более четырех), ш после этого интерпретатор GPSS |ри просмотре перейдет к транзакту- екарю. Если имеется несколько сво- бнблиотекарей, то они в цепи текущих будут находиться позади «работа- библиотекаря. Они даже не будут риваться интерпретатором GPSS при ре ЦТС до тех пор, пока первый библио- не отправится в хранилище с листками ьзошние модели. Логические переклю- 1, 2, 3 и т. д. используются в качестве клапанов BOOK для библиотекарей, пронумерованных цифрами 1, 2, 3 и т.д. Номера этих переключателей везде в модели задаются косвенным путем с помощью первого параметра как библиотекарей, так и транзактов- посетителей. Таким образом, поскольку в модели должен быть логический переключатель с символическим именем SLIP, следует принять меры предосторожности, чтобы интерпретатор не присвоил символу SLIP числовое значение, равное единице. В модели эго обеспечивается путем задания эквивалентности (карта 5 на рис. 6В.2). Логическому переключателю с символическим именем SLIP присваивается числовое значение, равное 10, и тем самым устраняется возможность эквивалентности между SLIP и логическим переключателем, используемым первым библиотекарем для управления продвижением посетителей, которых он обслуживает. Распечатка результатов. (Общее время занятости процессора при моделировании на ЭВМ IBM 360/67 составнло 6,8 с.) На рис. 6В.З показана часть распечаток результатов, соответствующих случаю трех библиотекарей, работающих у стола выдачи. На рис. 6В.З, а приведен результат распределения времени, проводимого посетителями у стола выдачи. Среднее время для 100 посетителей составило примерно 1065 с, или 17 мин. Этот результат можно сравнить с минимальным средним временем выдачи, составляющим 6 мии. Минимум ожидаемого времени соответствует случаю немедленного обслуживания посетителя. Величина, равная 6 мин, складывается из 1 мин, необходимой для ухода библиотекаря в хранилище, 2 мин, необходимых для поиска книги, 1 мин, соответствующей возвращению библиотекаря, и 2 мин, требуемых для завершения процедуры выдачи. Заметим, что в соответствии с UPPER LIMIT (ВЕРХНИМ ПРЕДЕЛОМ), равным 360 (секунд) в таблице DELAY, два посетителя из 100 действительно провели у стола выдачи 6 мин (или менее). Кроме того, результат для UPPER LIMIT, равного 1500 (секунд), в этой таблице показывает, что 17% посетителей [CUMULATIVE REMAINDER (СУММАРНЫЙ ОСТАТОК) = = 17,0] провели у стола выдачи более 25 мин. Далее, в строке OVERFLOW (ПЕРЕПОЛНЕНИЕ) указано, что семь посетителей находились у стола выдачи более 30 мин. На рис. бВ.3,6 показано распределение числа листков, забираемых библиотекарем. Среднее число забираемых листков составило 1,94. Более чем в 60% случаев библиотекарь забрал только один листок. В 11 случаях он взял сразу четыре листка. В табл. 6В.2 приведены результаты для прогона всех трех случаев. Характер результатов
Таблица 6В.2. Сравнение результатов, полученных ■ примере моделирования 6В Число библиотекарей 3 4 5 Ьргчя, прове- деннос посетителем у стола выдачи, с 1065 667 532 Число аабираеных листков 1,94 1,32 1.14 Иагруяка библиотекаря 0,938 0,745 0,673 в этой таблице согласуется со здравым смыслом. Заметим, что увеличение числа библиотекарей на 66% (т. е. с трех до пяти) уменьшает среднее время ожидания посетителя на 50% (т. е. с 1065 до 532 с). В случае пяти библиотекарей посетители имеют существенно лучшее обслуживание. Они ждут всего 532 с, тогда как минимальное время ожидания при идеальных условиях равно 6 мин, или 360 с. 6.7. Упражнения 1. Все последующие вопросы относятся к упрощенной модели библиотеки, показанной на рис. 6.4. а). Какое положение в цепи текущих событий всегда занимает траизакт-библиотекарь? б). Предположим, что следующий посетитель приходит к столу выдачи в то же время, когда библиотекарь собирает листки у других посетителей. Возьмет ли библиотекарь листок у только что прибывшего посетителя перед тем, как уйти в хранилище? в). Детально разобрать, каким образом будет вести себя модель иа рис. 6.4, если библиотекарь и посетители будут иметь одинаковый уровень приоритета. г). Указать две различные возможности, при которых транзакты-посетители в 1-м сегменте модели могут быть заблокированы. Указать блок, где они будут помещаться в период возникновения как первого, так и второго блокирующего условия. д). Перечислить два различных набора обстоятельств, при которых транзакт-посетитель, проходящий через 1-й сегмент модели, попадает в заблокированное состояние и находится в нем в течение ненулевого отрезка модельного времени только один раз. е). В приведенных примерах посетители, как правило, выходят из очереди (т. е. проходят через блок DEPART) в момент времени, соответствующий началу их обслуживания. Однако в модели на рис. 6.4 посетители не выходят из очереди до тех пор, пока их обслуживание не завершится. Как следует интерпретировать статистику очереди, которая получилась бы при прогоне модели, приведенной на рис. 6.4? Как следовало бы переместить в модели блок DEPART, если бы посетителям следовало выходить из очереди в момент начала обслуживания? ж). Показать, каким образом можно было бы ввести во 2-й сегмент модели прибор для измерения степени занятости библиотекаря. Если быв модель был введен такой прибор, как следовало бы интерпретировать статистику прибора NUMBER ENTRIES (ЧИСЛО ВХОДОВ) и AVERAGE TIME/TRAN (СРЕДНЕЕ ВРЕМЯ/ТРАН)? з). Можно ли в первом сегменте модели занюнить блок «TEST G WIBLOKA.0» иа бл« «TEST G Q$DESK,0»? Ответ обосноватй Будет ли справедлива такая замена в случЦ двух и более библиотекарей, обслуживающих стол выдачи? * и). Предположим, что пользователь хоче| изменить модель на рис. 6.4 таким образок чтобы моделировать случай двух библиотеки рей, работающих у стола выдачи. Для тот чтобы это осуществить, он заменил блок GEJ NERATE во 2-м сегменте модели иа бл<Я «GENERATE ,,,2». Приведет ли это к желм мому результату? Детально обосновать отве к). Описать поведение модели на рис. б, в случае, если из 2-го участка будут нзып оба блока BUFFER. ; л). Показать, какие изменения следует Ц лать в модели на рис. 6.4, если предположи что библиотекарь никогда не забирает бол одного листка одновременно, даже если < служивания ожидает несколько посетитем 2. Все последующие вопросы относятся к пр меру 6В. а). В 1-м участке модели в качестве счетов используется пустой блок ADVANCE. Счет*] содержимого этого блока интерпретируется I число посетителей, ожидающих, чтобы у 1 _ забрали листки. Показать, как можно от! заться от этого блока путем введения в качес счетчика посетителей, ожидающих, чтобы у I взяли листки, сохраняемой величины. Опрв лить, является ли метод введения сохраняем величины более предпочтительным по сраЯ нию с методом пустого блока ADVAIp с точки зрения: 1) памяти машины и 2) вренГ работы процессора. Ц б). Описать поведение модели на рис. 6J в случае, если из ее 2-го сегмента будут изь| оба блока BUFFER. J в). Предположение о том, что библиота выдает книги посетителям в том поря] в котором они отдавали свои листки, не cot реально. Более вероятно, что обслужив! при этом производится случайно. Это О! чает, что библиотекарь случайным обра] выбирает одну из книг, находящихся у 1 для выдачи. Показать, как следует изыа модель на рис. 6В.2 в предположении,'
MP1 BUFFER X TRANSFER (BACK), екарь использует случайную дисципли- уживания при окончании процедуры Era после возвращения из хранилища. Показать, каким образом во 2-м участке и примера 5Е можно использовать блок jrER вместо одного из двух блоков ■ TEST. [Рассмотрим замкнутый сегмент модели, кхема которого приведена на рис. У4. (положим, что в модели, имеющей этот ток, все остальные транзакты имеют прио- Ш, равные 1 и выше. Объяснить, каким йом участок на рис. "У4 будет влиять на fly этой модели. .Как пример 2А (парикмахерская с одним рмахером), так и пример на рис. 6.4 (стол iP в библиотеке, обслуживаемый одним отекарем) представляют модели с одной 1ъю и одним обслуживающим прибором. & примера 2А является более простой, гаение в системе, моделируемой рис. 6.4, иается в том, что когда прибор начинает |':Иикл, он немедленно берет на обслужи- tjKex посетителей, ожидающих его услуг t;момент времени. Заметим, что для ими- посетителей в обеих моделях исполь- транзакты. Однако в примере 2А для обслуживающего устройства исполь- ^прибор, тогда как в модели на рис. 6.4 ваюшее устройство имитируется траншей,, каким образом можно построить GPSS-модель для системы, указанной 6.4, используя методику, при которой вции посетителей применяют транзакты, а для имитации обслуживающего прибора транзакт не используется. Модель должна собирать статистику для обслуживающего при* бора и статистику очереди для посетителей. В отношении статистики очереди показать, как построить модель для следующих двух случаев. а). В случае модели, приведенной на рис. 6.4, предположить, что посетители не уходят из очереди, пока не завершится их обслуживание. б). Предположить, что посетители покидают очередь в момент начала их обслуживания (см. упражнение 1, е). Обсудите статистику для прибора, получаемую в вашей модели. Опишите также поведение вашей модели (или моделей) при возникновении временных связей между событиями поступления и окончания обслуживания. 6.8. Расцепление транзактов. Блок SPLIT (РАСЩЕПИТЬ) Первым способом ввода транзактов в модель является использование одного или более блоков GENERATE. Существует также второй способ ввода транзактов. Этот метод требует использования блока SPLIT (РАСЩЕПИТЬ). Как только транзакт, уже находящийся в модели, входит в блок SPLIT, следствием вы~ полнения подпрограммы этого блока является ввод в модель нескольких дополнительных транзактов. Таким образом, транзакты имеют способность расщепляться. Блок SPLIT с операндами А и В показан на рис. 6.5. (Два дополнительных операнда блока SPLIT, являющиеся необязательными, будут рассмотрены в параграфе 6.17.) Транзакт, входящий в блок SPLIT, естественно называть «родителем». Дополнительные транзакты, вводимые в модель, называют «потомками». При входе родителя в блок SPLIT величина операнда А задает число вводимых в модель потомков в резуль- Рис. 6.5. Операнд А в Блох SPLIT с операндами А и В: Значение Число дополнительных транзактов, вводимых в модель Имя блока, куда будут направлены ати дополнительные транзакты Результат по умолчанию Ошибка » 335
тате отработки подпрограммы блока. По большинству своих свойств эти потомки идентичны своему родителю. 1. Они имеют тот же уровень приоритета. 2. Они имеют то же число параметров; тип параметров (т. е. полусловный или полнослов- ный) тот же, что и у родителя; значения параметров также идентичны значениям параметров родителя. 3. Отметка времени потомков совпадает с отметкой времени родителя. Тем не менее потомки — это самостоятельные транзакты. В частности, номер транзакта для каждого потомка отличен от номера тран- закта-родителя и номера любого другого потомка. После того, как родитель выходит из блока SPLIT, он безусловно проходит в следующий по порядку блок. Потомки же переходят в блок, имя которого указано в операнде В блока SPLIT. Обычно это блок, не следующий за блоком SPLIT. (В действительности, операнд В блока SPLIT подсчитывается для каждого потомка отдельно. Следовательно, имеется возможность сделать номер блока, куда направляется потомок, функцией этого потомка. Такая возможность будет рассмотрена в параграфе 6.17.) Можно, конечно, направить потомков и в следующий по порядку блок вместе с родителем. Для этого необходимо следующему блоку назначить символическое имя и задать это имя в качестве операнда В блока SPLIT. Рассмотрим работу блока SPLIT с точки зрения цепей. Прежде всего блок SPLIT не может дать трацзактам запрета на вход. Когда родитель входит в этот блок, его обработка временно прекращается до тех пор, пока все потомки не будут извлечены из пассивного буфера и введены в модель. Потомки извлекаются один за другим. Каждый следующий потомок немедленно помещается в цепь текущих событий в качестве последнего транзакта в своем классе приоритетов. Когда все потомки будут помещены в указанном порядке в ЦТС, возобновляется обработки родителя. Затем, по мере продолжения просмотра цепи текущих событий потомки обрабатываются интерпретатором. Берется по очереди каждый из потомков и обычным способом продвигается в модели настолько, насколько это возможно. Для блока SPLIT стандартные числовые атрибуты W/ (счетчик текущего содержимого блока] и N/ (счетчик входов блока) увеличиваются на 1 для родителя и для каждого потомка по мере исполнения подпрограммы блока. Текущий счетчик уменьшается на 1 всякий раз, когда какому-либо из этих транзактов удается выйти из блока SPLIT и перейти к другому блоку. Если родителю или любому потомку отказано во входе в следующий полагающийся им блок, они остаются в блоке SPLIT, где продолжают учитываться счетчиком текущего содержимого блока. Пример 6С иллюстрирует использование блока SPLIT. 6.9. Пример моделирования 6С. Задача о запасных деталях 1. Постановка задачи. В станке используют деталь, которая время от времени выходит из строя. Как только используемая деталь отказывает, станок необходимо выключить. Отказавшую деталь вынимают и на ее место ставят исправную запасную деталь сразу же или как., только это станет возможным, и станок вновь.; включают. Неисправные детали ремонтируют: и после ремонта снова используют. i Время работы детали распределено по нор-j мальному закону со средним 350 ч и стандарту ным отклонением 70 ч. Съем отказавшей дН тали со станка занимает 4 ч. Время, необходим] мое для того, чтобы установить заменяющую ее деталь, равно 6 ч. Время ремонта иеисправ*] ной детали распределено по нормальному зако$1 со средним и стандартным отклонением, coot<f ветственно равным 8 и 0,5 ч. -\ Оператор, следующий за этим станком,- щ вечает непосредственно за съем неиспра детали и установку на ее место замещал детали. Ремонтом отказавших деталей ъш{ мается механик. В обязанности механика вх| дит также ремонт некоторых деталей, поступ ющих к нему из другого источника. Эти друг детали поступают по- закону Пуассоиа со cpejj ним интервалом между поступлениями, р« ным 9 ч. Время, требуемое иа их ремонт, ставляет 8 + 4 ч. Они имеют более высок приоритет при ремонте, чем неисправные тали, используемые в рассматриваемом ста На рис. 6С.1 рассматриваемая система заиа схематически. Каждый пустой круг обозначает либо исправную деталь в состоя резерва, либо деталь, находящуюся в да момент в станке. Перечеркнутые кружки чают детали в состоянии отказа. Другие тали, конкурирующие с рассматриваемыми '|~ талями в пункте ремонта, изображены пф черкнутыми квадратами. Как указано вьи и как схематически показано стрелкой, npnojj тет этих деталей при ремонте выше, чем у I исправных деталей; они поступают в ачерй на ремонт раньше всех неисправных детям которые могут ожидать ремонта. * Построить GPSS-модель системы «станок, детали» и применить ее для нахождения Kd фициекта использования станка как фуни числа запасных деталей, имеющихся в сие 336
, iciraji» в станке , Исправные запасные детали Boitpum втремонти роданных деталей Неисправны' детали (8>J Другие детали, пвсту- *£•) пающие в ремонт \ Другие неисправные (Я детали V Механик Возврат других деталей Рис. 6С.1. Схематическое изображение примера моделирования 6С , Исследовать систему при следующих предпо> ложеннях о числе запасных деталей: ноль, одна н две. Для каждой модели выполнить прогон, соответствующий пяти годам, предполагая 40-часовую рабочую неделю. Для каждой конфигурации проследить за условиями эксперимента, для того чтобы продублировать во всех случаях поток поступления других деталей и условия их взаимодействия с неисправными деталями. 2. Метод построения модели, t-й сегмент модели: детали и станок. В гл. 2 было-указано, что в начале построения модели следует определить системные ограничения, а затем решить, какие элементы GPSS следует использовать для моделирования этих ограничений. В рассматриваемой задаче единственным ограничением (помимо одного механика) является число запасных деталей в системе. Поскольку они перемещаются в системе, как показано на рис. 6С.1, было бы естественно моделировать деталь транзактом. Предположим, что, используя блок GENERATE с ограничением на часло порождаемых им транзактов, в начале прогона в модель вводили бы необходимое число транзактов и т. д. Эта задача о запасных деталях была сформулирована ранее в упражнении 9 параграфа 5.24 и там было предложено строить модель, представляя деталь транзактом. В противоположность предложению, высказанному в упражнении 9 параграфа 5.24, в данном примере использован метод, при кото- рои транзакт интерпретируется как оператор станка. Для того чтобы следить за числом запасных деталей в системе, используется сохраняемая величина. Более точно сохраняемая величина будет использована в качестве счетчика, в котором записано число имеющихся в наличии запасных деталей. Таким образом, когда оператору требуется запасная деталь, он может проверить ее наличие с помощью счетчика. 22 т. Дж. ШраЯбер w' Поскольку проверка происходит в 'режиме от* каза, оператор будет вынужден ждать до тех пор, пока не появится запасная деталь. Взятие детали оператором соответствует уменьшению счетчика сохраняемой величины. Аналогично, при починке неисправной детали число исправных запасных деталей учитывается простым увеличением сохраняемой величины. Сам станок моделируется прибором. Траизакт-оператор включает станок, занимая прибор, и отключает посредством его освобождения. Таким образом, нагрузка прибора совпадает с нагрузкой станка. Использование прибора для моделирования станка обеспечивает удобный метод нахождения требуемой статистики о нагрузке. На первый взгляд может показаться, что в сегменте модели, моделирующем детали и станок, должен быть только один транзакт- оператор. Это было бы справедливо в случае, если бы в системе не было неисправных деталей. Однако после того, как используемая деталь отказала и была извлечена из станка, в системе возникают две независимые последовательности событий. Прежде всего иеиспран- ную деталь следует отправить в пункт ремонта. В то же самое время необходимо проверить наличие запасных деталей, чтобы определить, есть ли в наличии хотя бы одна; если есть, то ее следует установить, станок следует вновь включить и т. д. Поскольку эти независимые последовательности событий должны происходить одновременно, опи не могут выполняться одним транзактом-оператором. Как следствие, тут же после снятия со станка отказавшей детали, оператор входит в блок SPLIT, вызывая помощника (т. е. вводя в модель потомка). Помощник проверяет наличие исправной детали, ставит ее в станок и включает его, принимая на себя таким образом функции оператора станка. Тем временем перный оператор (т. е. родитель) относит неисправную деталь на пункт ремонта и т. д. После завершения ремонта первоначальный оператор отмечает этот факт, увеличивая счетчик—сохраняемую величину. Затем он уходит, передав своему помощнику функции оператора. 2-й сегмент модели: пункт ремонта. Механик моделируется прибором FIXER. В 1-м сегменте модели оператор отправляет неисправную деталь в ремонт посредством занятия этого прибора. Но он должен вступить в состязание за пользование прибором с другими деталями. Ситуация использования прибора другим источником имитируется отдельным сегментом модели (2-й сегмент). В этом сегменте транзакты, имитирующие другие детали, поступают в модель с высоким приоритетом, ждут ремонта и после ремонта уходят из модели. Таким образом, работа этого отдельного сегмента очень проста.
3. Таблица определений. Единица времени: 1,1 ч. Таблица 6С.1. Таблица определений для примера моделирования 6С Элемент QPSS Транзакты: 1-й сегмент модели 2-й сегмент модели 3-й сегмент модели Приборы: MAC FIXER Функции: SNORM XPDIS Сохраняемые величины: 1 Переменные: 1 FIX Интерпретация Оператор станка Другая деталь Транэакт-таймер Станок, нагрузку которого следует определить Механик Нормированная нормальная функция распределения Экспоненциальная функция распределения Счетчик, используемый для записи числа испрааных запасных деталей, имеющихся в наличии Переменная, описывающая нормально распределенное время работы детали, используемой в станке Переменная, описывающая нормально распределенное время ремонта деталей, используемых в станке 338
4. Блок-схема. GENERATE ^ ПРИБЫТИЕ ПЕРВОГО ОПЕРАТОРА (AGAIN) V SEIZE Л уМАСч ADVANCE VI включить СТАНОК ВРЕМЯ РАБОТЫ,, ДЕТАЛИ RELEASE Ч£АС \ ВЫКЛЮЧИТЬ V стднок ADVANCE 40 SPLIT ВЫНУТЬ ОТКАЗАВШУЮ ДЕТАЛЬ (FETCH) ПОСЛАТЬ ПОМОЩНИКА SEIZE ЗА ЗАПАСНОЙ ДЕТАЛЬЮ ЗАНЯТЬ МЕХАНИКА Л FIXER к \ ADVANCE VSFIX RELEASE F1XFR V ( SAVEVALUF Л 1*.l X TERMINATE (FETCH) XI /c \ 0 PEMOHY ОСВОБОДИТЬ МЕХАНИКА ИЗМЕНИТЬ ЧИСЛО ИСПРАВНЫХ-ЗАПАСНЫХ ДЕТА-ЕЙ УЙТИ: ДАЛЬШЕ ПРОДОЛЖАЕТ ПОМОЩНИК 1-Й СЕГМЕНТ МОДЕЛИ *1С 6С.2. Блок-схема примера моделирования 6С 22* 339 ЖДАТЬ (ЕСЛИ НЕОБХОДИМО) ИСПРАВНУЮ ЗАПАСНУЮ ДЕТАЛЬ ИЗМЕНИТЬ ЧИСЛО ЗАПАСНЫХ ДЕТАЛЕЙ ВСТАВИТЬ ДЕТАЛЬ ПОЙТИ НА ВКЛЮЧЕНИЕ СТАНКА
ДРУГИЕ ДЕТАЛИ ПРИХОДЯТ В РЕМОНТНЫЙ ЦЕХ ПУСТОЙ БЛОК ADVANCE (см.объясмнм) ЗАНЯТЬ МЕХАНИКА ИДЕТ РЕМОНТ ОСВОБОДИТЬ МЕХАНИКА УХОД ДРУГИХ ДЕТАЛЕЙ 2-Й СЕГМЕНТ МОДЕЛИ Ряс 6С.2. Продолжение GENERATE ^ 104000 X TERMINATE ^ ПРИХОД ТАЙМЕРА ПО ИСТЕЧЕНИИ 280 40-ЧАСОВЫХ НЕДЕЯЬ ЗАКОНЧИТЬ ПРОГОН 3-й СЕГМЕНТ МОДЕЛИ
Распечатка программы. BLOCK number OPERATION SIMULATE A.B,C,D,E,F.G COMMENTS гг 23 NON-STANOAHD RANDOM NUMBER SEQUENCE INITIALIZATIONS) SET RANDOM SEQUENCES FOR 1ST RUN FUNCTION DEFINITION<S) SNOnM HINCTJUN RN ,C25 STANOARP NORMAL DISTRIBUTION FUNCTION 0,-5/.0000 3.-*/.00136,-J/.00621,-2.S/.02275,-2 .06631,-l.S/. 1 t b'O 7,- 1.2/. 15866,-1/.2 1 lS6.-.8/«27425I-.6 .3«*58.-.*/.A20 74,-.?/»'S,0/.!>79a6,.2/.655u2».4 .72S7S. .<>/.7aai*, ,a/.a4i34. i/.ea4 93. i .2/.93319,1.5 .9772b,2/.99379,г.Ь/.94865,3/.99997.4/1,S XPDIS FUNCTION RN3»C?4 Ь XCDNEIMT IAL DISTRIBUTION FUNCTION 0,0/. 1,. 10 */.<?,. 222/.3, .3SS/«4,.50 9/.S,.69/.6, .91S/.7,1.2/«75.1.3« .8.1.6/.84, 1.аз/.88,2.1 J1/.9. 2.3/. 92, 2.52/. 9*,2.81/.95,2.99/.96 »3.? .9 7.3.а/.9а.3.9/.99.4.6/.99а,Ъ.З/.99в.6.2/.999.7/.999В гв 1 FIX VARIA8l„£ 0£FlNITION<S>) FVARIABLE 700*FN*SNQRM+3bOO LIFETIME FOR THE TYPE OF PART FVAR1ABLE 5*FN*SNQftH+aO MODEL SEGMENT I 1 2 3 4 5 & 7 в 9 10 !I 12 13 I» 15 10 17 10 19 £0 21 GENERATE again seize ADVANCE HELEA5E ADVANCE SPLIT seize ADVANCE RELEASE savevalue Terminate FETCH TEST С SAVEVALUE ADVANCE TRANSFER .,.1 MAC VI MAC 40 1 .FETCH FIXER VJtF IX FIXER ! + . 1 X] ,0 1-. 1 60 .AGAIN, * MODEL SEGMENT 2 GENERATE ADVANCE SEIZE ADVANCE RELEASE TERMINATE 90.FNSX FIXER ЪО «АО Fl XE* model segment 3 GENERATE TERMINATE 104000 1 REPAIR TIME FDR THE TYPE OP PART FIRST WORKER ARRIVES TURN THE MACHINE ON PART'S LIFETIME ELAPSES TURN THE MACHINE OFF REMOVE THE FAILED PART S£NO CO-WORKER TO FETCH A SPARE CAPTURE THE REPAIRMAN REPAIR PROCEEDS FREE THE REPAIRMAN UPDATE THE NUMBER OF GOOD SPARES <" L&AVEI CO-WORKER HILL CARRY- ON WAIT tIF NECEbSAR*) FOR A GDDD SPARE UPDATE THE "NUMBER OF GOOD SPARES INSTALL THE PART SO TURN ON THE MACHINE ( "OTHER ITEMS" ARRIVE AT REPAIR SHOP DUMMY ADVANCE BLOCK (SEE WRITE.UP) CAPTURE THE REPAIRMAN REPAIR PROCEEDS FREE THE REPAIRMAN "OTHER ITEM" LEAVES TIMER COMES AFTER ^60 40-HOUR WEEKS SHUT Of-'F THE RUM CONTROL CARDS AbD STORAGE CAPAC1TV RE-OEF IN IT1DNS START RMULT CLEAR INITIAL START RMULT CLEAR INITIAL START END 1 \i\%,1T XI, 1 1 121..17 XI,2 1 START 1ST RUN (0 SPARES PROVIDED) RESTORE RANDOM SEQUENCES FDR <2ND RUN CLEAR FOR THE 2ND RUN RE-CDNFlCURE FOR 2ND RUN START 2ND RUN (I SPARE PROVIDED) RESTORE RANDOM SEQUENCES FDR 3ND RUN CLEAR FOR THE 3R0 RUN RE-CONFIGURE FOR 3R0 RUN START 3RD RUN (2 SPARES PRDVIDED) RETURN CONTROL TO OPERATING SYSTEM CARD NUMBER 1 2 3 * 5 6 7 В 9 10 1 1 1? 13 1 л 15 !6 I 7 1 8 19 20 гг ?z 2} 24 25 26 ?7 гя 29 30 31 32 33 3* 3i> 36 j7 38 39 40 4] 42 *3 44 45 46 47 48 49 SO 51 Е-г L'.J Ь4 ЬЬ 56 SY 5в е. 9 л.-О (ч 62 ОЗ о' \4L» 66 67 69 №. 6C.S. Распечатка программы примера моделирования 6G
6." Выходные данные программы. Распечатка результатов не приведена. Результаты даиы ниже. 7. Обсуждение. Логика моделирования. С самого начала предполагали, что как только деталь установлена на станке, он готов к включению. Следовательно, как только транзакт- оператор входит в модель (через первый блок на рис. 6С.З), он тут же включает станок (занимая прибор MAC посредством входа в блок SEIZE, являющийся блоком 2 на рис. 6С.З). Заметим, далее, что общее число деталей в системе равно начальному значению первой сохраняемой величины плюс единица (деталь, находящаяся в станке с самого начала). При первой конфигурации модели общее число деталей в системе равно 1 (по умолчанию в этом случае первая сохраняемая величина имеет нулевое значение). Заметим, что в ]-м сегменте модели прибор MAC не создает ограничений. Это означает, что как только транзакт-оператор захочет занять этот прибор (путем входа в блок 2 на рис. 6С.З), такое занятие всегда возможно. Ограничения на запасные детали имитируются в модели в блоке TEST (блок 12 па рис. 6С.З), работающем в режиме отказа. Во 2-м сегменте модели блоком, следующим за блоком GENERATE, является блок ADVANCE, л котором нет операндов (блок 17 на рис. 6С.З). Поскольку предполагают, что время задержки равно нулю, этот пустой блок ADVANCE не задерживает другие детали, поступающие в модель из предшествующего блока GENERATE; с другой стороны, его наличие гарантирует, что как только другая деталь поступит, она сможет тут же выйти из блока GENERATE, поз ват я я интерпретатору планировать поступление следующей такой детали. Если бы пустой блок ADVANCE не был включен в модель, то время между соседними поступлениями других деталей могло бы нарушиться (см. гл. 2). Вспомним, что пустой блок ADVANCE использовали также в примере 6В почти при тех же обстоятельствах. В постановке задачи было отмечено, что условия эксперимента должны быть проконтролированы в смысле создания одинаковых условий взаимодействия между другими деталями и деталями в пункте ремонта. Это обеспечивается путем использования третьего и первого датчиков случайных чисел соответственно для времени между прибытием других деталей и временем ремонта. Карта RMULT для каждой различной конфигурации устанавливает оба этих датчика в данную начальную точку (см. карты 5, 60 и 64 на рис. 6С.З). Распечатка результатов. (Общее время занятости процессора при выполнении модели- Таблица 6С.2. Сводка результатов моделирования примера вС Число запасных деталей в станке 0 1 2 Нагрузка станка 0,705 0.912 0,958 Нагрузка механика III рования на ЭВМ IBM 360/67 составило 19,1 с.) В табл. 6С.2 приведены результаты моделирования. Если в системе находится только одна деталь (т. е. нет запасных), коэффициент использования станка составляет 70%. Он воз» растает до 91% при наличии одной запасной детали и почти до 96% при двух запасных деталях (см. упражнение 3, а параграфа 6.10). 6.10. Упражнения 1. Как только транзакт достигает в модели точки А, другой траизакт должен войти в модель позже него на 15 ^ 7 единиц времени, причем в момент своего прибытия он должен войти в блок с именем THERE. Показать как это может быть сделано. 2. В некоторой модели присутствует блок «GENERATE 10,3». Показать, каким образом этот блок может быть заменен в модели комби*; нацией блоков SPLIT и ADVANCE. i 3. Все последующие упражнения относятся; к примеру моделирования 6С. а). Вычислить максимальную нагрузку стан-s ка, которая может быть в рассматриваемом при*! мере системы «станок—детали» при следующих! обстоятельствах: 1) нет запасных деталей;! 2) одна запасная деталь; 3) две запасные детали, б). Все карты RMULT, использованные в «*> дели, имеют вид «RMULT 121,, 17». Являете! ли необходимым устанавливать первый н Tp«i тий датчики случайных чисел в различий начальные точки? Объяснить. в). При отсутствии запасных деталей в пр| мере 6С транзакт-помощник встречается с Ода кирующим условием в первый момент прихо] к блоку «TEST G X1.0». Транзакт остаек в цепи текущих событий. Тем временем перш начальный транзакт-оператор помещает! в цепь будущих событий, где остается в теи ние времени, имитирующего время ремовя отказавшей детали. Когда позже этот первой! чальный оператор вернется в цепь текушл событий, он будет помещен там после помов ника, который все еще ждет, пока деталь мол будет взять. При последовательном проемом цепи текущих событий деталь, таким образе все еще недоступна (т. е. первоначальный опер тор не выполняет блока «SAVEVALUE 1\ + I») до момента, который следует после тй 2 1
как помощник вновь неудачно попытается пройти через блок TEST. Следовательно, может оказаться, что модель ведет себя нелогично, поскольку помощник обнаружил, что в рассматриваемый момент времени нет доступных запасных частей. Можно ли из этого сделать заключение, что логика модели неверна? Ответ обосновать. г). Предположим, что когда отказавшие детали поступают на ремонт, их начинают ре- ■■Монтировать немедленно. Иными словами, предположим, что для любых практически необходимых случаев нет ограничения на число механиков. Показать, как следует изменить :0док-схему на рис. 6C.2, чтобы отразить в модели это предположение. ■■ д). Сохраняемая величина номер 1 в примере 'Используется в качестве счетчика, в который заносится число запасных деталей, доступных в данный момент. Блок TEST используют для лого, чтобы удостовериться, что имеется хотя бы одна запасная деталь перед тем, как начать 'Замену детали. Показать, каким образом блок «TEST и два блока SAVEVALUE могут быть кзъяты из модели путем соответствующего использования многоканального устройства. «(Указание: интерпретировать оставшуюся емкость многоканального устройства как число •югеющихся в наличии запасных деталей.) За- жетим, что статистика по многоканальному (устройству, получаемая в качестве результата, >0удет давать информацию о состоянии запасных дошей во время прогона. Сопоставить ее НЕ соответствующей информацией, получаемой (ври использовании сохраняемой величины, fee). В примере не собирается информация («^распределении случайной величины «число Шшасных деталей, имеющихся в наличии». {Указать, как можно изменить модель примера, (Юобы в распечатку результатов было включено распределение этой случайной величины. fc'4. В примере 2Е была рассмотрена система, Ч которой группа швейных машин работает параллельно, причем каждая машина может ириодически выходить из строя. Показать, (вк в примере 6С можно для построения Ьадели такой системы использовать блок рыт. fe-5. Если вам до сих пор не удалось получить ЬЁКЯие упражнения 9 из параграфа 5.24 для ■исаниой там интерпретации транзактов, сдерите это сейчас. Сравните свою модель с мо- ■йью, показанной на рис. 6C.I. \Ь. Условия эксперимента в примере 6С вы- Врают так, чтобы иметь возможность частично ■торять условия взаимодействия между отжавшими деталями и другими деталями, на- шящимися в ремонте. Постройте модель, ■которой полвостью повторяются зтн условия, •^•частности, последовательность времени работы деталей, находящихся в механизме, должна быть одинакова для всех конфигураций. Аналогично, последовательность времени ремонта отказавших деталей также пе должна меняться при различных конфигурациях. Постройте модель при различных предположениях, приведенных ниже, в пп. а и б. а). Детали являются неразличимыми. Например, если время работы второй устанавливаемой детали равно 354 ч, то это должно быть справедливо и для случая нулевого запаса (когда вторая вставляемая деталь является той, которая отказала в последний раз), и для случая одной запасной детали (когда вторая вставляемая деталь не является той, которая отказала последней). б). Следует различать детали. В этом смысле время работы (или время ремонта), отведенное для детали, зависит как от того, какой именно деталью она является, так и от того, в который раз используют данную деталь. в). Обсудить различия между подходами, описанными в пп. а и б, по отношению к моделируемой системе (а не по отношению к самому процессу моделирования). Какой подход является более верным с точки зрения реальности и почему? 7. Определить среднюю часовую стоимость системы, описанной в примере 6С, как сумму стоимости простоя станка и стоимости ожидания ремонта другими деталями. Принять, что стоимость простоя станка составляет 25 долларов в час, а стоимость ожидания ремонта другими деталями равна 5 долларам в час для каждой детали. Используя либо модель примера, 6С, либо какой-либо ее вариант, определить, какая из пижеследующих дисциплин обслуживания во время ремонта минимизирует среднюю часовую стоимость. а). Другие детали имеют более высокий приоритет, чем отказавшие детали. б). Различия в приоритетах нет. в). Приоритет отказавших деталей выше, чем у других деталей. 8. Предположим, что в примере 6С в системе находятся три станка, а не один. Все оии одинаковы; в частности, все они используют один тип деталей. Таким образом, эти станки осуществляют разделение запасных деталей в системе. В каждый момент времени определенная деталь может быть использована в одном из трех станкоа. Затем эта же деталь (после поломки и ремонта) может быть использована в другом стапке и т. д. На каждом станке есть свой оператор, и, следовательно, все станки не зависят друг от друга за исключением процесса распределения деталей. Показать блок-схему на GPSS для модели системы для каждой из следующих интерпретаций трапзактов.
а). Как и в примере 6С, транзакт имитирует оператора станка. б). Как и в упражнении 9 параграфа 5.24, транзакт имитирует деталь. Предусмотреть в каждой модели возможность нахождения степени нагрузки трех, станков, рассматриваемых как группа, в зависимости от числа запасных деталей в системе. 6.11. Косвенная адресация в GPSS До сих пор числовые значения во все GPSS- модели вводили либо путем прямого определения как константы, либо с помощью косвенного определения путем использования стандартных числовых атрибутов. Во всех случаях использования стандартных числовых атрибутов номер объекта, к которому они откосятся, задается константой. (Возможен случай, когда некоторый рассматриваемый объект задается символическим именем. В данном параграфе объекты с символическими именами не рассматриваем). Так Q5 — это содержимое очереди с номером 5; R20 — оставшаяся емкость многоканального устройства с номером 20 и т. д. Подобные ссылки на определенные величины не зависят от каких-либо свойств транзакта, обрабатываемого в данный момент. Например, когда транзакт входит в блок TEST, изображенный на рис. б.б, при проверке всегда используют содержимое очереди номер 5. Результат проверки никоим образом не зависит от того, какой именно транзакт производит эту проверку. Иногда при моделировании возникают ситуации, при которых в качестве исходного данного должен использоваться стандартный числовой атрибут, и желательно, чтобы номер используемого объекта зависел от свойств транзакта, производящего ссылку на это исходное данное. В частности, может быть полезным, чтобы номер объекта являлся величиной параметра траизакта. Тогда было бы, например, возможно использовать в GPSS-моделях блоки, обеспечивающие следующие логические варианты. I. Проверять в блоке TEST текущее содержимое очереди, номер которой равен величине шестого параметра проверяющего транзакта. оь/ Li \з Ряс. 6.6. Пример, в котором величины операндов блоков не зависят от свойств активного транзакта 2. При выборке из распределения использовать тот датчик случайных чисел, номер которого равен величине Р10 транзакта, обрабатываемого в данный момент. 3. При вычислении арифметической переменной использовать значение полнословной сохраняемой величины, номер которой равен значению РЗ транзакта, обрабатываемого в данный момент. В терминах алгоритмических языков программирования, таких как FORTRAN, BASIC или PL/1, описанные выше ссылки на исходные данные могут быть осуществлены путем использования соответственно Р6, Р10 и РЗ в качестве вычисляемого индекса. «Q(P6)>, таким образом, является величиной, равной содержимому очереди, номер которой равен величине шестого параметра; <RN(P10)» означает величину, вырабатываемую датчиком случайных чисел, номер которого содержится в РЮ; «Х(РЗ)» — значение полнословной сохраняемой величины, номер которой совпадает с величиной, записанной в третьем параметре. В каждом из этих случаев номер, указывающий на объект, задается косвенно посредством параметра транзакта. Заметим, что здесь используется двойной уровень косвенного задания: во-первых, для косвенного задания номера объекта используется параметр и, во- вторых, в качестве данного используется числовая характеристика объекта, имеющего вышеуказанный номер. Такой подход к вводу данных известен как косвенная адресация. В GPSS тоже имеется возможность использования косвенной адресации. Тем не менее запись, используемая для представления косвенной адресации, не имеет форму <Q(P6> н т. п. Круглые скобки не используют, и поскольку номер объекта косвенным образом можно задать только величиной параметра транзакта, то букву Р также не используют. Вместо этого косвенная адресация обозначается введением звездочки между обозначением используемого стандартного числового атрибута и номером соответствующего параметра. (В определенном смысле звездочку используют в качестве синонима буквы «Р», обозначающей параметр. Тем не менее было бы ошибкой писать, например, «QP6», «RNP10» или «ХРЗ». При косвенной адресации вместо «Р» нужно использовать звездочку. При косвенном заданна звездочку можно использовать наравне с <Р». Например, допустимой модификацией блока «SEIZE P4» является блок «SEIZE*4». В литературе, выпускаемой фирмой IBM no GPSS, для косвенного задания данных форму * / используют чаще, чем Р/, где / — любой допустимый номер параметра. Тем не менее в данной книге звездочку используют только либо для обозначения косвенной адресации, либо для 344
арифметической операции умножения, либо для булевского оператора И.) Таким образом, значением Q*6 является величина текущего содержимого очереди, номер которой содержится в шестом параметре; RN*1Q — величина, вырабатываемая датчиком случайных чисел, номер которого равен величине Р10; Х*3 — значение лолвословной сохраняемой величины, номер Которой записан в третьем параметре. На первый взгляд, из-за использования двойного уровня косвенного задания косвенная адресация может вызывать трудности. Это особенно проявляется в случае, когда номер параметра косвенно задается некоторым другим параметром. Например, Р*7 является величиной параметра, номер которого записан в параметре номер 7. Если Р7 равно 5, а Р5 равно 3, то величина Р*7 равна 3. В качестве простого примера, иллюстрирующего возможности косвенной адресации, предположим, что в таблицу ALPHA необходимо внести нагрузку того из приборов с номерами от 2 до 6 включительно, который использовался с наименьшей интенсивностью, На рис. . 6\7,а показана последовательность из даух блоков, реализующая заданное условие. Когда транзакт входит в блок SELECT, в его первый параметр заносится номер прибора с наименьшим коэффициентом нагрузки. Затем транзакт входит в блок TABULATE, вызывая ввод величины минимальной нагрузки в таб- лицу ALPHA. Как указано в операнде А карты определения таблицы, табулируемой величиной является FR*1, Но FR*1 является коэффициентом в&грузки прибора, номер которого Находится в первом параметре транзакта bo- tabulate ьогдгюч T]?|j|i*ii» А1.У.НА .•flRA'.OH KBX.D,l,f_ г i '.jiiiiiijo'ijid'ii i; .jf9!a^j?b!f4'2;:6|2.'lze|2».Jo:)ijjiM54Jjij'.i;j I TASJJi . - . ...lF.«.*lib.\Affl..J.ft.<b.i '> j T i ' . J I . * , L - -. £ J-_J_ l 1_ f J_1_L,J 1 J l_- i- i) Рис. 6.7. Первый пример косвенной адресации: в— сегнент блок-схемы; 6 — определение таблицы ALPHA ADVANCE FNSHOLD а) LOCATION JHOiLBl КхЛ&^Л в Ь lit)! iiitfFijfw'iilisi.r]- -t_i_ ^|io|;tji?>)j?«iJ5Jrbl/'[?s>j5cjii|«T»pf»l>6l -t- I .4—1 1.. 6) Рис. 6.8. Второй йример косвенной адресации: а — участок блок-схемы; б — определение функции HOLD шедшего в блок TABULATE. Таким образом, достигнут желаемый результат. В качестве другого примера косвенной адресации предположим, что время задержки транзакта в блоке ADVANCE должно быть равно величине, выбранной из равномерного распределения между 10 и 20 включительно. Номер датчика случайных чисел, используемого для выборки, должен зависеть от величины пятого параметра транзакта, входящего в блок ADVANCE. Если значение Р5 равно единице, то следует использовать RN1; если двум, то следует использовать RN2; если трем, то нужно брать RN3 и т. д. На рис. 6.8, а показан блок ADVANCE, в котором имитируется необходимое время задержки. На рис. 6.8, б показано определение функции HOLD, используемой в операнде А блока ADVANCE. Аргументом функции (операнд А в карте заголовка функции) является RN*5. Следовательно, когда транзакт входит в блок ADVANCE, время его задержки зависит от случайной величины, вырабатываемой RN/, где / — величина пятого параметра транзакта (см. упражнение 10 параграфа 6.12). Упражнения в следующем параграфе предназначены для приобретения навыков в использовании косвенной адресации. 6.12. Упражнения 1. а). Обсудить разницу между Q5 и Q*5. б). Обсудить разницу между Р20 и Р*20. 2. а). Величины шестого и 21-го параметров некоторого транзакта равны соответственно — 18 и 6. Чему будет равна величина Р*21? б). Предположим, что пятый параметр равен 5. Чему равна величина Р*5? 3. а). Транзакт должен записать в таблицу с именем BETA текущее содержимое очереди, номер которой является величиной седьмого 345
параметра траизакта. Показать определение блока TABULATE и карты определения таблицы. б). Повторить п. а в предположении, что номер очереди записан в полусловной сохраняемой величине номер 7, а не в седьмом параметре транзакта. 4. Почему RN/ имеет смысл для целых значений / от 1 до 8 включительно, тогда как RN*/ может иметь смысл для целых / от I до 100 включительно? 5. а). Транзакт проходит через блок «LEAVE P7,S*7». Какова будет величина оставшейся емкости указанного многоканального устройства после прохождения транзакта? б). Транзакт проходит через блок «ENTER P10.R * 10». Какова будет величина оставшейся емкости многоканального устройства после прохождения транзакта? €. а). Время задержки транзакта в блоке ADVANCE должно быть равно минимальной величине, записанной в полнословных сохраняемых величинах с 1 по 10. Показать после' довательность блоков SELECT—ADVANCE, решающих поставленную задачу. б). Величины параметров некоторого транзакта от 1 до 5 соответственно равны 0, о, 6, 2 и I. Когда транзакт входит в блок «SELECT МАХ РЗ,Р*2,Р*4„Р», какая величина будет назначена одному из его параметров и какому именно? в). Транзакт должен присоединиться к той очереди из диапазона от 1 до 10, текущее содержимое которой минимально. Показать последовательность блоков, через которые должен пройти транзакт для достижения желаемого результата. 7. Полнословные сохраняемые величины с i по 4 имеют значения, равные соответственно 3, 0, 7 и 1. Параметры с 1 по 4 некоторого транзакта соответственно равны 5, 1, 2 и 2. Установить, значения каких сохраняемых величин и (или) параметров будут меняться, когда транзакт будет проходить через последовательности блоков, показанные на рис. У7. Указать, какие именно значения будут получены после изменения. 8. Покажите другой способ достижения того же результата, после прохождения траизак- том последовательности блоков, показанных на рис. 6.7, не используя косвенной адресации. 9. Покажите другой способ достижения результата, который получается после прохождения транзактом блока, показанного на рис. 6.8, не используя косвенной адресации. 10. Как было указано в гл. 3, диапазон величин, получаемых в результате работы восьми датчиков случайных чисел в GPSS, зависит от того, как их используют. а). Если их используют в качестве аргументов функции, то случайные величины равномерно распределены в замкнутом интервале от 0,000000 до 0,999999. б). Если их используют в другом контексте, то случайные величины распределены равномерно в замкнутом интервале от 000 до 999. Это утверждение относительно зависимости от контекста справедливо как для случая, когда на датчик случайных чисел ссылаются посредством косвенного задания (в виде RN/, где / = 1, 2, 3, .... 7 или 8), так и для случая косвенной адресации (в виде RN*/, где / =» = 1, 2, 3, .... 98, 99 или 100). После проверки интерпретатора GPSS/360, проводившейся фирмой IBM в марте 1973 г., было обнаружено, что из-за ошибки в программе GPSS/360, косвенно адресуемые генераторы случайных чисел, используемые в качестве аргументов функции, принимают целые значения от 000 до 999 включительно. Таким образом, пря 1 4.XJ 3,Т>4 PX4.XI РХ2+.6 I Г ASSIGNЛ \ fASSJGN ~Л Г ASSIGN J t SAVEVALUE ") ( ASSIGN ") Г SAVEVALUE J С ASSIGN ~J С SAVEVALUE J PX4.XX1 PX-3.P4 4-.X*3 1 rSAVEVALUEj \ (^ SAVEVALUE J | P3.P4 T »> PK3.PX4 T A) Рис. У7 ола
освенной адресации аргумент функции почти всегда выходит за диапазон наибольшего значения, т. е. почти всегда равен единице и более. При наличии такой ошибки функция, следовательно, почти всегда принимает свое наибольшее возможное значение. Придумайте и выполните прогон GPSS-модели для определения, существует ли указанная ошибки в вашем интерпретаторе GPSS. Если ваш интерпретатор имеет ошибку, укажите на нее соответствующему лицу в вычислительном центре. 11. а). Строкам с 1 до 10 полнословноЙ матрицы номер 3 лужпо присвоить значения, вырабатываемые датчиками случайных чисел в GPSS при их использовании в первом смысле, как описано в упражнении 10. Величины, вырабатываемые RN/ при / = I, 2, 3, ... 8, должны быть занесены соответственно в столбцы 1, 2, 3, ..,, 8 этой матрицы. Показать сегмент блок-схемы, осуществляющий эту задачу. Сделать этот сегмент возможно более компактным, используя косвенную адресацию и цикл. Выполнить прогон этой модели и сравнить величину в матрице 3 с величинами, указанными в табл. 3.1 гл. 3 (указание: см. упражнение? параграфа 5.7). б). Повторить п. а в предположении, что датчики случайных чисел используют во втором смысле, как описано в упражнении 10. 12. В более раннкк версиях GPSS отсутствовали блоки SELECT. Предположив на прсмя, что блоков SELECT пока еще нет, показать сегмент блок-схемы, обеспечивающий тот же эффект, что и сегмент, приведенный на рис. У12. (Этот сегмент является повторением "сегмента, показанного на рис. 4.22.) Проделать это двумя различными способами, указанными ниже: а), не используя в своем сегменте блок LOOP; б), используя в своем сегменте блок LOOP. 6.13. Атрибутивно-значимые функции До настоящего момента были введены три типа фупкцпй в GPSS: дискретные, непрерывные и списковые. При определении этих функций в качестве величин, определяющих н первый и второй элементы набора упорядоченных пар точек, используют константы. Это означает, что любая величина, являющаяся значением такой функции, задается прямым способом в определении функции. (Конечно, значением непрерывных функций может быть линейная интерполяция величин, описанных в определении фупкции.) Имеется также возможность определить в GPSS атрибутивно-значимые функции. Как и в случае дискретных, непрерывных и списковых функций, первым элементом каждой упорядоченной пары точек, используемой для задания такой функции, является константа. Вторым же элементом каждой упорядоченной пары, в отличие от предыдущего, является стандартный числовой атрибут. Эго означает, что каждое значение функции задается косвенно при определении функции. При определении атрибутивно-значимое функции в качестве первого символа, стоящего в операнде В карты заголовка функции, используют букву Е. За исключением этого факта и того, что в определении пар точек используют стандартные числовые атрибуты, атрибутивно-значимые функции определяют и используют так же, как дискретные, непрерывные и списковые функции. На рис. 6.9 приведен пример атрибутивно- значимой функции. Функция с именем GETUT в качестве аргумента использует седьмой ггара- LOC*rrON Of£ RATION ТТфЫ^Г! 7 o|Hioi«l*Jiili4)«)i«H'« i i -ДЫЛД. EUNCTilrQW i — Рис. 6.9. Пернып пример атрибутивно-значимой функции
да LOCATION OPERATION IffirEpHEPE ».e.e,o,6.F >|20lil^i)|l4|29U|ll(n|2fUo|ll|>2!UH4|»|w| BMi.^t.ai i . , , . _l,_ —[_i i | ■iaaua.jN>jab/rAA7)tiEMi$ig.bTifi/1v.irH$|jit<t,. 1 ■ Рис. 6.10. Второй пример атрибутивно-значимой функции метр. Значением функции является коэффициент нагрузки некоторого прибора. Для значении седьмого параметра, равных 9, 10, 11 и 12, значение функции равно соответственно коэффициенту нагрузки прибора номер 5, 3, J 2 или 7. Для аргументов, выходящих за границы, интерпретатор GPSS обрабатывает атрибутивно-значимые функции так же, как дискретные. Например, для функции GETUT, если значение Р7 будет меньше 9, значением функции будет FR5; если величина Р7 превышает 12, в качестве значения функции будет взята величина FR7. На рис. 6.10 приведен второй пример атрибутивно-значимой функции. Аргументом функции является пятый датчик случайных чисел. Имя функции — SWICH. При обращении к функции ее величина равна величине некоторой другой функции. Эту другую функцию выбирают с равной вероятностью из трех функций, названных JOE, PETE и JIM. На рис. 6.11 показана атрибутивно-значимая функция, аргументом которой является сохраняемая величина. Если значение XSCAROL равно или меньше 21, функция принимает значение переменной с именем RED; если Х$СА- ROL равно 22, 23, 24 или 25, то значение функции равно ХН35 и т. д. Этот пример показывает, что вторые члены упорядоченных пар, определяющих функцию, необязательно должны быть однотипными стандартными числовыми атрибутами. Из него также явствует, что вторые элементы могут быть константами. В данном примере для величин XSCAROL, равных 26 или 27, значение функции равно 10. Рассмотрим теперь атрибутивно-значимые функции, у которых первые элементы упорядоченных пар, определяющих эти функции, образуют последовательность целых чисел 1, 2, 3 и т. д. В этом случае атрибутивно-значимые LOCATION 103! АШЕЛ J. OPERATION »l»lK>iiiJ>!|ii i«le|i» ii]i FiUKC.riliOM и Ь**-Ы£. «jfflb'i bjjih»liip*fiH»ji»)»iJijHjMJ3»bui| фиЛЩфЕ0/IS ,p.H*l./J№.rJj&&j\*i.atiOU,I.CIti. Рис 6.11. Третий пример атрибутивно-значимой функции LOCATION 0»ERAT|0S A.S.C.O.fc.» ■ -*■ ||)|>!«!г|| t el»"tojnji7^з'«■■%'ч!|т|,в ij!jc|ii|»p!li«1n|!<.l/.,!:«'.4,»l)i[»i|iS|i«b'J!«| -]£АШ1_ЬШ4С111£Ы . • M,. MS. !.■.: LJ , .\ , ,., ._ a) LOCATTON OPERATION [7|>jVjV7 7 i|«ji«{iiJ7{j|M|'ij|«|i;ji| inlffl^&H Jfai<MLI_bitHC,TjliQK i .. EJb.MSi '.u^, ,_i u _ , 6) Рис. 6.12. Пример атрибутионо-зпачимой функции (а) и эквивалентное ее списковой функции (б) функции могут быть заданы списковым тилом. Списковые атрибутивно-значимые функции определяются путем использования в операнде В карты заголовка функции в качестве начального символа буквы М. В смысловой части при определении атрибутивно-значимой функции списковым типом ничего нового не происходит, но это приводит к увеличению скорости вычисления функции. Так же как и в случае введенных ранее списковых функции, при выходе аргумента такой функции за указанные \ границы происходит ошибка выполнения. j На рис. 6.12, а показан пример атрибутивно- значимой функции, у которой первые члены в упорядоченных парах равны 1, 2, 3, 4 и 5. На рис. 6.12, б приведена та же функция, определенная так, чтобы она была спискового типа. Единственная разница между этими двумя определениями состоит в том, что в качестве первого символа в операнде В на рис. 6.J2, б использована буква М вместо Е. В рассматриваемом ниже примере 6D показано конкретное использование атрибутивно- значимой функции. 6.14. Пример моделирования 6D. Второе обращение к примеру 60 I 1. Постановка задачи. В примере моделиро*] вания 6С был рассмотрен станок, ислользу» ющий деталь, подверженную периодическим! поломкам. Обозначим эту деталь через Л.| Предположим теперь, что в этом же сташ используют еще одну деталь, которую буд«| обозначать через В. Как и деталь А, деталь Г подвержена периодическим поломкам. Как: ко детали А или В, используемые в craHWjj отказывают, станок отключают. Затем отка завшую деталь вынимают, вместо нее ставя 348
исправную запасную (если она имеется или как только она появится) и станок вновь включают. Как и деталь А, деталь В можно отремонтировать и вновь использовать. Во время работы станка время работы, оставшееся до выхода из строя каждой установленной детали, уменьшается. Предположим, например, что станок включен в момент, когда установленным деталям Л и В осталось до выхода из строя соответственно 330 и 415 ч работы. Тогда, после того как механизм по истечении 330 ч будет выключен из-за отказа детали А, детали В останется проработать только 85 ч до ее выхода из строя. Время работы деталей В распределено по нормальному закону со средним и стандартным отклонениями, равными соответственно 450 и 90 ч. Съем отказавшей детали В со станка занимает 4 ч, а установка заменяющей ее детали этого же типа требует 6 ч. Время, необходимое для ремонта детали В, подчиняется распределению, указанному в табл. 6D.1. Таблица 6D. 1. Распределение временя ремонта деталей В а примере моделирования 6D Время ремонта, ч Менее 5 6 7 Суммарная чистота Время ремонта, ч 0,00 0,22 0,57 Суммарная частотн 0,83 1.0 За исключением добавленных свойств деталей В, условия, при которых работает станок, идентичны условиям, описанным в примере 6С, в частности, 1) детали А имеют свойства, Деталь типа А в станке, уже описанные в примере бС, и 2) имеется только один механик. Механик ремонтирует детали Л и В в порядке их поступления. Кроме того, он продолжает ремонтировать другие детали, имеющие при ремонте более высокий приоритет, чем детали А я В. Все условия задачи отражены на рис. 6D.1, где кружочками обозначены детали, а буквы А к В внутри этих кружочков указывают, какая это деталь — А или В. Перечеркнутый кружочек означает, что соответствующая деталь находится в неисправном состоянии. Построить GPSS-модель для системы «станок—детали» и затем использовать полученную модель дли нахождения коэффициента нагрузки станка как функции числа запасных деталей А и В в системе. Рассмотреть систему для комбинаций, при которых в ней имеется 0,1 или 2 запасные детали каждого вида (А или В). Выполнить для каждой конфигурации прогон, моделирующий работу системы в течение 5 лет, в предположении, что рабочая неделя состоит из 40 ч. Проследить для каждого случая за условиями эксперимента так, чтобы продублировать взаимодействие в пункте ремонта между отказавшими и другими деталями. 2. Метод построения модели. 1-й сегмент модели: детали и станок. Как и в примере 6С, оператор станка имитируется транзактом. В начальный момент предполагается, что детали А и В уже вставлены, к станок можно включать. Когда оператор входит в модель, он делает выборки из распределений времени работы деталей А и В, записывая полученные величины соответственно в первый и второй параметры. Затем в блоке «SELECT MIN 3,1,2„Р» номер \,Деталь типа В встан не Станок ИопраЯные запасные детали ® ® Неисправные . детали. Другие детали, / надлежащие кя ременту L } В Вез Врат етрементироВйнных деталей А Механик Ввздрат других деталей ■ Рнс. 6D.1. Схематическое изображение примера моделирования 6D 349
параметра с минимальным значением заносится в 3-й параметр. (Величина РЗ равна 1, если следующей выйдет из строя деталь типа А, или 2, если следующий отказ произойдет из-за выхода из строя детали типа В.) После занятия прибора MAC (что имитирует включение станка) транзакт-оператор входит в блок «ADVANCE Р*3». Если величина РЗ равна 1, то время задержки в блоке ADVANCE равно Р1, а если РЗ равно 2, то время задержки равно Р2. Таким образом, посредством косвенной адресации транзакт-оператор задерживается в блоке ADVANCE до тех пор, пока не выйдет из строя деталь с более коротким временем работы. После выхода из блока ADVANCE оператор выключает станок (освобождая прибор) и подсчитывает время работы исправной детали, оставшееся до ее выхода из строя (путем вычитания из параметра, номер которого ие находится в третьем параметре, величины того параметра, номер которого записан в третьем параметре). Затем отказавшую деталь снимают (заметим, что время съема для деталей А и В одинаково). Затем оператор вызывает помощника, посылая его за нужной запасной деталью. Для записи информации о числе имеющихся в наличии запасных деталей А и В используют соответственно сохраняемые величины I и 2. Помощник с помощью значения своего третьего параметра (которое совпадает со значением третьего параметра транзакта-родителя) знает, какой тип детали требуется. Он может прове* рить наличие нужной детали с помощью косвенной адресации в блоке «TEST G Х*3,0». После того, как он, наконец, вставит заменяющую деталь, ему нужно произвести выборку из нужного распределения времени работы, для того чтобы определить время до выхода из строя детали. Если первая и вторая переменные описывают распределение времени работы соотвегсгвеино деталей А и В, то это может быть сделано в блоке «ASSIGN P3,V*3». (Номер параметра, получающего значение, равное времени работы, задается косвенно посредством РЗ, а номер переменной, описывающей соответствующее распределение времени работы, косвенно адресуется посредством V*3.) Как и в примере 6С, помощник продолжает процесс, беря иа себя роль оператора станка. Тем временем первоначальный оператор (траизакт-родитель) отправляет отказавшую деталь иа пункт ремонта. Распределение времени ремонта подчиняется или нормальному закону (если отказала деталь А), или эмпирическому (если отказала деталь В). Следовательно, для имитации времени ремонта в зависимости от того, является ли величина, записанная в РЗ транзакта-оператора 1 (для деталей А) или 2 (для деталей В), должна вычисляться соответственно либо переменная, либо функция. Таким образом, определяя атрибутивно-значимую функцию, аргументом которой является РЗ, можно легко получать ссылку на соответствующее распределение времени ремонта. По окончании ремонта первоначальный транзакт-оператор увеличивает сохраняемую величину, номер которой находится в его третьем параметре, на единицу и покидает модель, передав своему помощнику роль оператора станка. 2-й а 3-й сегменты модели: пункт ремонта и сегмент таймера. 2-й и 3-й сегменты модели примера 6С могут быть использованы в примере 6D без изменений. 3. Таблица определений. Единица времени: 0,1 ч. Таблица 6D.Z. Таблица определений примера моделирования BD Элемент OPSS Транзакты: J -й сегмент модели 2-й сегмент модели 3-й сегмент модели Приборы: FIXER Функции: BFIX FLIP POINT SNORM XPDIS Сохраняемые величины; 1,2 * Переменные: 1.2 AFIX Интерпретация Олератор станка: Р1 — оставшееся время работы вставленной детали А; Р2 — оставшееся время работ вставленной детали В; РЗ — помер того параметра из первого и второго, который имеет наименьшую величину Другая деталь Трапзакт-таймср Станок, нагрузка которого подлежит определению Механик Описывающая распределение времени ремонта детали В Функция, значением которой является номер того параметра (первого или второго), номер которого не записан в третьем параметре Атрибутивио-знзчимая функций, значением которой является выборка из распределения временя ремонта детали Л или В в зависимости от значения аргумента функиаи Нормиропанная нормальная функция распределения Экспоненциальная функция распределения Счетчикя, используемые для записи числа запасных деталей со- отпетствеано А и В, имеющегося в налн'шн Переменные, описывающие нор» мал;,«о распределенное время роботы деталей А н В соответственно Переменная, списывающая нормально распределенное врем ремонта детали А 350
4. Блок-схема. GENERATE L ^ Ш. t <y ASSIGN J ПРИБЫТИЕ ПЕРВОГО ОПЕРАТОРА ПОЛОЖИТЬ PI РАВНЫМ ВРЕМЕНИ РД60ГЫ ВСТАВЛЕННОЙ ДЕТАЛИ ТИПА А С 2.V2 ASSIGN (AGAIN) Е } ПОЛОЖИТЬ Р2 РАВНЫМ ВРЕМЕНИ РАБОТЫ ВСТАВЛЕННОЙ ДЕТАЛИ ТИПА В /"*N SELECT \ ^1 3,1,2)>Р ]/ SEIZE I Л MAC к ь ПОЛОЖИТЬ РЗ РАВНЫМ НОМЕРУ ПАРАМЕТРА. СОДЕРЖАЩЕГО МЕНЬШЕЕ ВРЕМЯ РАБОТЫ ВКЛЮЧИТЬ СТАНОК ADVANCE РХЗ ПРОХОЖДЕНИЕ МЕНЬШЕГО ВРЕМЕНИ РАБОТЫ RELEASE ГМАс' V выключить СТАНОК |FN$FLIP-,P»3 СASSIGN J ADVANCE 40 ИЗМЕНИТЬ ОСТАВШЕЕСЯ ВРЕМЯ РА50ГЫДДЛ НЕВЫШЕДШЕЙ ИЗ СТРОЯ ДЕТАЛИ ВЫНУТЬ ОТКАЗАВШУЮ ДЕТАЛЬ SPLIT ПОСЛАТЬ ПОМОЩНИКА ЗА ЗАПАСНОЙ ДЕТАЛЬЮ ^FETCH} SEIZE Л FIXER 1С Ь ЗАНЯТЬ МЕХАНИКА ADVANCE FN$ POINT RELEASE FIXER V ^SAVEVAIUE Л P3*,l X TERMINATE РЕМОНТ ' ОСВОБОДИТЬ МЕХАНИКА ИЗМЕНИТЬ час по ЗАПАСНЫХ ДЕТАЛЕЙ УЙТИ; ДАЛЬШЕ ПРОДОЛЖАЕТ ПОМОЩНИК РЗ-. I ADVANCE 60 P3.VH3 Г ASSIGN J TRANSFFER < ЖДАТЬ (ЕСЛИ НЕОБХОДИМО) ИСПРАВНУЮ ЗАПАСНУЮ ДЕТАЛЬ ИЗМЕНИТЬ ЧИСЛО ИСПРАВНЫХ ЗАПАСНЫХ ДЕТАЛЕЙ ВСТАВИТЬ ДЕТАЛЬ ЗАНЕСТИ ВРЕМЯ РАБОТЫ АПАЯ» В PI ИЛИ Р2 ПОСРЕДСТВОМ ВЕЛИЧИНЫ РЗ ПОЙТИ НА ВКЛЮЧЕНИЕ СТАНКА 1-Й СЕГМЕНТ МОДЕЛИ Рве 6D.2. Блок-схема примера моделирования 6D
GENERATE V I , 9flFN$XPDIS „jj I ADVANCE ПОСТУПЛЕНИЕ НА РЕМОНТ ДРУГИХ ДЕТАЛЕЙ- ПУСТОЙ БЛОК ADVANCE (М.ОБЬЯСНЕНИЕ) SEIZE I А FIXER : ь ADVANCE 80.40 I RELEASE FIXER V IRMINA _ TERMINATE ЗАНЯТЬ МЕХАНИКА PEWOHT ОСВОБОДИТЬ МЕХАНИКА УХОД ДРУГИХ ДЕТАЛЕЙ 2-Й СЕГМЕНТ МОДЕЛИ GENERATE L 104000 TERMINATE ПРИХОД ТАЙМЕРА ПОСЛЕ 260 40-ЧАС08ЫХ НЕДЕЛЬ ЗАКОНЧИТЬ ПРОТОК 3-Й СЕГМЕНТ МОДЕЛИ Рис. 6D.2. Продолжение
5. Распечатка программы. BLOCK NUMBER «LOC OPERATION SIMULATE A.B.C.O.E.F.e COMMENTS • RANDOM NUMBER SEQUENCE INLTIALI2ATION<S> * RMULT 121i,17 S6T RANDOM SEOUENCES FO« 1ST RUN * * FUNCTION DEFINITIONS) BFIX FUNCTION RN2.C5 REPAIR TIME FOR A "TYPE B" PART о.бо/.гг,ъо/.ь7,то/.вэ,йо/1.9о FLIP FUNCTION P3.L2 NUMBER OF "LA»eEST-L IFETI ME" PARAMETER 1.2/2,| POINT FUNCTION РЭ.М2 POINTER FOR REPAIR TIMt DISTRIBUTION I.V*AF U/2.FN»SH» SNDRM FUNCTION UN .C2S STANDARD NORMAL DISTRIBUTION FUNCTION 0.-5/,OOOO 3.-»/.0t) 135.-3/.00 62l,-2.5/.0?275.-2 .06Л61.-Д.Ь/.1150 7,-|.;/. ISMOt.. -l/'. К I 1в6.-.8/.27425.-«6 .34-u5t>.-.4/'.4 20 7a.-.2<'.9.0/.S792b, . 2/.6SS4 2. ,4 • 725 7Ь. .6/-.76SI». .S/.34I 3*. I/. 68a93, I .2/.933 19. I ,5 .9 7''2э.2/.99 3 79.2.Э/'.99в<>!>.3/.999<>7.4/ 1 ,Ь XP0I6 FUNCTION RN3.C24 E X,-1 NENT I AL DISTRIBUTION (-UNCTION OiO/. I, . I0 4/-.2, .Z22/.J. .Jt>b/.4..'j09/.S, .09/.t>. .SIlS>/.7 • I.2/.7S.I.38 .e.l.t//.6i,l.e3/'.aa,2. I2/.V.2.3/.92.2.S2/.9*,2.»I/.9S,2.99/.96,3.2 .•>7,3»S/.ye. 3.9/.'/9,4.6/.49S,S.3/.998.fc.2/.999 .7/.999B .8 * * VARIABLE l:LF IN1TIQN15) I 2 af ix FVARI AHLt FVAR [AULE FVARI AM.E 700 *(■ NSSNURM+3500 900 «FNSSNURM+4500 S»FN»SNORM+U0 LIFETlMt OF A «TYPE A" PART LIFETIME OF A "TYPE B« PART REPAIR TIMC FOR A "TYPE A" PART MUDeL. SEGMENT 1 1 2 3 4. ;■ ь 7 «. 10 11 12- 13 1* IS 16 IT « AGAIN ■> FETCH GENERATE ASSIGN ASSIGN SELECT «IN St IZE ADVANCE RELEASE ASSIGN AOVANCE SPLIT SE [ ZE ADVANCE RELEASE SAVEVALUE TERMINATE. TEST 6 SAVEVALUE ... 1 I.V1 2.V2 3. 1.2.,P MAC K»3 MAC FNSFLIP-.Pvi «0 1 .FETCH F IXFH FN*PUINT hi ХЕК еЗ+,1 x*3«0 P3-. 1 FIRST WORKEH ARRIVES SET PI = Lll-E OF installeo "type a" part set p2 = life of installeo "туре u" hart set p3 = no. of parameter containing smallest lifetime. turn the machine on smallest lifetime elapses turn the «achinf off update remaining life of non-failed рант remove the failed part send со-"ояке« ти ketch a spare capture the repairman REPAIR PrtUCLhOS FREE THE RLPAIRMAN UPDATE THE NUMBER OF GOOD SPARES LEAVE; GO-WORKER HILL CARRY ON WAIT (IF NECESSARY) FOR A GOOD SPARE UPOATE THE NUMBER OF OOOD SPARES CARD NUMBER 1 2 3 4 5> 6 T a 9 10 11 I 2 13 1 4 \Ъ lb 17 Id 19 20 .'1 22 23 2 4 2з <Ь 27 211 2'J 3 0 31 зг Зо з» Ээ зь 37 зе 39 «о «г *з 44 *\j 4t> 47 «Я 4V ьо ы ■->3 54 Рис 6D.3. Распечатка программы примЕра моделирования 6D 23 Т. Дж. ШраЯбср 353
dLDCK NOMBtR >e 19 го 21 22 23 гэ 26 OPtRATION ADVANCE ASSIGN TRANSFER A.H.C.D.H.F.G 60 •AGAIN MODEL SEGMfcNT 2 <>0 .FNIXUDIS. . . ; GENERATE ADVANCE: SEIZC ADVANCt RELEASE TERMINATE F IXErf FIXfcK MUDEL SEGMENT 3 27 28 GENERATE TkRMINATE 104000 1 COMMENTS INSTALL THE PART GO MAKE READY TO TURN ON THE MACHINE «OTHER ITEMS" ARRIVt AT REPAIR SHOP DUMMY ADVANCE BLOCK CAPTURE THE REPAIRMAN RCPAIR PROCEEDS FREE THE REPAIRMAN ••OTHER ITEM" LEAVES TIMER COMES AFTER 260 40-HOUR WEEKS SHUT OFF THt RUN CONTROL CARDS AND STORAGE С АРАС 1ТУ. RE-UEF INI T IONS START HHULT CLEAR INITIAL START rmult CLEAR INITIAL .SIAHT RMULT CLEAR INITIAL START RMuLT CLEAR INITIAL SIART RMULT CLEAR INITIAL START 9»ULT С Lb AH INITIAL START RMULT CLEAR INITIAL START RMULT CLEAR INITIAL START ■EHO I i.; I, ■ 17 X2, 1 1 121., .17 хг.г 1 i г l.. 17 X I. I 1 17 X■•1/X2.I 1 12l.il7 xi. i/x2,a 1 12!..17 X 1.2 I 121..17 X I.2/X2, 1 1 121.,17 X I.2/X2.2 1 START 1ST RUN (0 "A", 0 »B" SPARES) RESTORE RANDOM SEOUtNCES FOR 2ND RUN CLEAR FUR 2ND RUN RL-CUNFIGURfc FDR 2NO RUN START 2ND HUN (0 "A". I "B" SPARLS) HtSTORE RANOOM SEOUtNCES FOR 3RD RUN CLEAR FOR 3RO RUN RE-CONF1GURE FOR 3RO RUN START 3R0 RUN (0 "A", 2 "B" SPARES I RESTORE RANOOM SEQUENCES FOR «TH RUN CLEAR FOR «TH RUN RE-CONFIGURE FOR 4TH RUN START 4TH PUN (1 "A", 0 "B" SPARES) RuSTGRE RANDOM SEQUtNCLS FOR 'STM RUN CLEAR FOR UTH RUN RE-CONFIGURE FOR 5ТП RUN START STH RUN (1 "Л", I »B» SPARES) RESTORE RANOUM SEQUENCES f-OR 6ТЦ RUN CLEAR FOR 6TH RUM RE-CONFIGUKE FOR 6Th RUN START 6TH RUN (I "AM, 2 "в" SPARES) RESTORE RANDOM SEOUENCES FOR 7TH RUN CLEAR FOR 7TH RUN RE-CONFIGURE FOR 7TH RUN START 7TH RUN (2 "A", О "в" SPARES) RESTORE RANDOM StOULNC'ES FOR STH RUN CLEAR FOR BTH RUN RE-CONFIGURE FOR STH RUN ST^RT BTH RUN (2 "A", 1 "в" SPARES) RESTORE RANOOM SEQUENCES FOR 9TH RuN CLEAR FOR 9TH RUN RE-CONFIGURE FOR 9TH RUN START 9TH RUN (2 "A", 2 "B" SPARES) RETURN CONTRDL TO OPERATING SYSTEM Рис. 6D.3. Продолжение CARD . NUMBER 55 56 57 58 S>9 CO 61 ьг 63 o« 6t- 66 67 66 69 70 71 72 73 7« 7b 76 77 78 7» 80 81 82 83 84 65 86 87 Kb 49 90 91 92 93 9* 9S 90 9V 90 9 V I 00 101 102 юз 1 0<. .10b I 06 107 I 06 6. Выходные данные программы. Распечатка результатов непосредственно не приводится. Результаты подведены ниже. 7. Обсуждение. Логика моделирования. Замечания относительно логики модели примера 6С непосредственно применены к примеру 6D, и поэтому их следует вновь посмотреть. Особенное внимание следует обратить на условия, накладываемые на систему вначале; на точку модели, где моделируется ограничение на детали, и на метод, используемый для частичного управления условиями эксперимента. Использование модели. Комбинации запасных деталей (тип А, тип В) рассматривали в последовательности (0,0), (0,1), (0,2), (1,0), (1,1) (1,2), (2,0), (2,1) (2,2). Конечно, комбинация (0,0) не требует использования карты INITIAL для сохраняемых величин, поскольку первая и вторая сохраняемые величины имеют нулевые начальные значения по умолчанию. Для последующих комбинаций после очистки модели в целях установки числа запасных деталей на уровень, необходимый для каждого следующего прогона, используют карты INITIAL для сохраняемых величин. В разделе управляющих карт последовательность «RMULT—CLEAR—INITIAL—START» очевидна (см. карты с 76 по 107 на рис. 6D.3). В результате действия каждой карты CLEAR первая и вторая сохраняемые величины обну- 354
ляются. Для комбинаций, в которых одна из сохраняемых величин должна иметь нулевое значение, соответствующая карта INITIAL, таким образом, должна устанавливать значение только другой сохраняемой величины. Распечатка результатов. (Общее время занятости процессора при моделировании на ЭВМ IBM 360/67 составило 55,9 с.) В табл. 6D.3 подведен общий итог распечатки результатов. Первая строка таблицы, соответствующая нулю запасных деталей типа А, показывает, как растет нагрузка станка по мере возрастания числа запасных деталей В в последовательности 0, 1,2. Интересно отметить, что при отсутствии запасных деталей А и двух запасных деталях В нагрузка, равная 74,2%, превышает нагрузку в 70,5%, полученную в примере 6С (табл. 6С.2) при отсутствий запасных деталей А (и, по сути, без ограничения на детали 5). Полученные относительные величины 74,2% и 70,5% противоречат ожидаемому результату. Таблица 6D.3. Сводка коэффициентов нагрузки станка, полученных пря прогоне примера 6D Число запасных деталей Л в Системе 0 \ 2 Число Авпасных деталей 0 0.609 0.755 0.714 1 III В в системе 2 0,742 0.908 0.945 Вторая и третья строки табл. 6D.3 показывают, как и ожидалось, тенденцию к увеличению нагрузки. Нагрузка в 90,8% для одной запасной детали А и двух запасных деталей В меньше 91,2%, полученных в примере 6С для одной запасной детали Л; аналогично, нагрузка, равная 94,5% для двух запасных деталей А к двух запасных деталей В, меньше, чем нагрузка, равная 95,8%, полученных в примере 6С для двух запасных деталей А. В противоположность первой строке, относительное различие в нагрузке, таким образом, подчиняется соответствующей ожидаемой тенденции. В первом столбце табл. 6D.3 показано неожиданное уменьшение нагрузки стайка при переходе от одной к двум запасным деталям А. Это уменьшение не согласуется с ожидаемым результатом, который должен был бы иметь I место. Если бы при моделировании все условия эксперимента были повторены, то указанные несоответствия между полученными и ожидаемыми величинами не возникли бы при используемом в данном примере большом объеме числа испытаний (см. упражнение 6 параграфа 6.15). 23* 6.15. Упражнения 1. а). Пользователю требуется, чтобы время задержки в блоке ADVANCE равнялось минимальной из величин, находящихся в параметрах с 1-го по 5-й того транзакта, который входит в этот блок. Показать, как это может быть осуществлено для каждого из описанных ниже двух случаев. 1. Использовать косвенную адресацию. 2. Использовать атрибутивно-значимую функцию. Какой из этих случаев более предпочтителен, по вашему мнению, для использования и почему? б). Повторить п. а в предположении, что время задержки в блоке ADVANCE должно быть равно минимальной величине, содержащейся в полусловных сохраняемых величинах с 1-й по 5-ю. 2. Эти упражнения относятся к примеру моделирования 6D. а). Показать, каким образом можно определить переменную, чтобы ее можно было использовать вместо функции FLIP (см. карты 11 и 12 на рис. 6.3). б). В примере предполагается, что для изъятия вышедшей из строя детали требуется 4 ч вне зависимости от того, является ли она деталью А или В. Вместо этого предположим, что время изъятия детали А и В равно соответственно 4 и 7 ч. Показать, как следует модифицировать пример, чтобы отразить такое предположение. в). Предположим теперь, что время изъятия отказавших деталей А и В равномерно распре-1 делено в диапазоне 4±2 ч для типа А и 7*3 ч для типа В. Показать, как следует модифицировать пример, для того чтобы осуществить это предположение. г). Описать, как будет вести себя модель, если работающие детали А и В выйдут из строя одновременно. Как вы считаете, является ли логика модели верной при таком обстоятельстве? Подробно обоснуйте свой ответ. д). Всегда ли имеет смысл ремонтировать неисправные детали А и В в порядке поступления? Если нет, объясните, почему. 3. Составье блок-схему, моделирующую систему «станок — детали», описанную в примере 6D, без использования косвенной адресации и атрибутивно-значимых функций. Пусть транзакт моделирует оператора станка, а в первой и второй сохраняемых величинах будет записано число имеющихся запасных деталей соответственно А а В. Сколько блоков потребуется для такой модели? (Заметим, что в примере 6D было использовано 28 блоков.) 4. Для примера 6D можно построить другую модель, если принять, что одни транзакты будут моделировать детали А, а другие — детали В.
Составить блок-схему для такой модели. .Сопоставить полученную модель с моделью, показанной в примере, с точки зрения числа требуемых блоков и простоты построения модели. 5. Расширить описанную в примере 6D систему «станок — детали», предположив, что станок использует еще и третий тип деталей, обозначаемый через С. Пусть время изъятия и установки детали типа С будет равно соответственно 4 и 6 ч, а время, необходимое для ее ремонта, составляет 8 rt 4 ч. Составить блок-схему на GPSS для модели такой системы, всякий раз используя следующие интерпретации. а). Пусть транзакт, как в примере 6D, имитирует оператора станка. б). Как и в упражнении 4, приведенном выше, пусть одни транзакты имитируют детали А, другие — детали В и третьи — детали С. Какой, но вашему мнению, подход является более простым для построения модели? 6. Примеры 6С и 6Ц являются схожими в том смысле, что в них частично повторяются условия эксперимента при различных конфигурациях. Как и в упражнении 6 параграфа 6.10, показать, каким образом сделать так, чтобы условия эксперимента при моделировании примера 6D повторялись полностью. Сначала сделать это без придания каждой запасной детали индивидуальности (конечно, за исключением различия между деталями А и В). Затем построить другую модель, в которой каждой запасной дегали будет придана индивидуальность в большей степепи, чем просто тип. Провести моделирование и получить таблицу в форме табл. 6D.3. Пропадают ли при полном воспроизведении условий эксперимента несоответствия, имеющиеся в результатах, указанных в табл. 6D.3 (см. «распечатка результатов» примера 6Т>)? 7. Директор большого таксомоторного парка собрал данные о частоте и причинах поломок автомашин. Поломкой называется возникновение неисправности в одной из четырех частей автомашины, имеющих названия «мотор», «ходовая часть», «электрооборудование» и «остальное». Средний пробег между отказами этих четырех частей равномерно распределен соответственно в следующих диапазонах: 20 000 и + 8000 миль, 12 000 =!= 6000 миль; 25 000 jz =t 10 000 миль и 15 000 =£ 5000 миль. Стоимость полной диагностики автомашины и восстановления всех четырех частей в их первоначальное состояние составляет 100 долларов; стоимость устранения неисправности (включая потерю в прибыли из-за внепланового снятия машины с эксплуатации) составляет 200 долларов и стоимость устранения неисправности и восстановления всех систем одновременно в первоначальное состояние равна 275 долларам. Использовать моделирование для определения наименьших затрат при следующих вариантах содержания автомашин. а). Эксплуатировать каждую машину до тех пор, пока она не сломается, а затем восстанавливать только отказавшую систему. б). Эксплуатировать каждую машину до тех пор, пока она не сломается, а затем восстанавливать все системы до нх первоначального состояния. в). Каждую машину ставить на профилактику через 10 000 миль пробега. В период профилактики восстанавливать каждую систему до ее первоначального состояния. Если поломка произойдет перед запланированным временем профилактики, ремонтировать отказавшую систему и восстановить другие до нх первоначального состояния. Затем начать эксплуатацию машины, установив следующее время ее профилактики через 10 000 миль (если поломка не произойдет раньше). г). Следуя тактике, описанной в п. в, провести i эксперимент с моделью для нахождения опти- j малыши частоты профилактики. Это означает, ; что вместо использования в качестве критерия пробега в 10 000 миль следует установить пробег, равный 12 000 миль, или 8000 миль, или любой другой пробег, приводящий к наименьшим затратам в этом случае. 6Л6. Функции, значения которых являются именами блоков В ряде блоков GPSS определенные операнды интерпретируются как имена других блоков, находящихся в модели. Например, если транз- акт входит в блок TRANSFER, работающий в режиме безусловной передачи, операнд 6 этого блока означает имя другого блока, в который этот транзакт должен войти. Аналогично, операнд С блока TEST (если его используют^, операнд В блока GATE (если его используют), операнд F блока SELECT (если его используют), операнд В блока LOOP и операнды В и С блока TRANSFER, работающего в режиме BOTH и в режиме статистической передачи, предназначены для записи информации об именах блоков. \ Во всех разобранных до сих пор примера* J в операндах ставились символические имена. | Тем не менее в этих полях можно использовать Ш любой стандартный числовой атрибут GPSS.* Например, в модели можно было бы использо- Ж вать блок TRANSFER, работающий в режиме к безусловной передачи: «TRANSFER,» V$POINT». Когда транзакт войдет в пЫщ блок, будет вычислена переменная РОШТ,в и транзакт перейдет к блоку, номер которого Я равен величине переменпой. Конечно, в обязан-Я
LOCUTION I } 1 « 9 « J OPERATION •»'•(»« ■»'♦<»«<"• I _i«oa.Tii|, iHiwfcijiQK * ^лллм ft /1,41^/4,,!) ftiiiftii^i;.ifi,!iifift| ААСА*/ itjalti Ь?{г)Ын|к|гЛм Ji MJii м к 5 js|»l Pil . Ii4i !'•■■■ J ■ X Рис 6.13. Дискретная функция, значениями которой являются нисна блоков ности программиста входит обеспечение того, чтобы акой переход имел логический смысл. Если, например, не существует блока, номер которою равен величине переменной, то произойдет ошибка выполнения. На первый взгляд, возможность использования стандартных числовых атрибутов в качестве определения имен блоков может показаться бесполезной. Тем не менее случается, что символические имена используют в качестве второго элемента в упорядоченных парах, определяющих дискретную GPSS-функиию. Как следствие, соответствующим образом определенные функции могут использоваться в операндах, где ставятся имена блоков. Предположим, например что в некоторой модели имеются блоки с именами ALPHA, BETA, GAMMA и DELTA. Предположим также, что функция ROUTE определена так, как показано на рис. 6.13. Заметим, что в качестве аргумента функции взят Р1. Предположим, что транзакты, приходящие в точку А модели, должны перейти в блок ALPHA, BETA, GAMMA или DELTA в зависимости от того, равно ли значение их первого параметра соответственно 2, 3, 4 или 5. На рис. 6.14 показано, каким образом в точке А модели может быть использован работающий в режиме безусловной передачи блок TRANSFER, обеспечивающий описанный переход. Когда транзакт входит в блок TRANSFER, вычисляется функция ROUTE, и ее значение интерпретируется в качестве номера блока, в который перейдет этот транзакт. При обработке интерпретатором GPSS-функ- ций, аналогичных показанной на рис. 6.13, предполагается, что символические имена, используемые при определении такой функции, являются именами блоков а модели. Это служит гарантией того, что при использовании в модели одинаковых символов, но в различных смыслах, путаницы не произойдет. Например, 1 TRANSFER tFfttaouTf). Рис 6.14. Пример использования функции в операнде» В блока TRANSFER, работающего н режиме безусловной лередача пусть ALPHA будет символическим именем прибора и одновременно символическим именем блока. Предположим, что ALPHA имеет значение, равное 3, в качестве прибора, и значение, равное 37, в качестве имени блока. Вследствие интерпретации значения ALPHA функции ROUTE (см. рис. 6.13) только как имени блока оно взято равным 37, а не 3. Если значениями функции являются вели- чины, понимаемые как имена блоков, аргументом ее необязательно должен быть параметр транзакта. В этом случае в качестве аргумента функции может быть использован любой стандартный числовой атрибут. В этом смысле такие функции полиостью аналогичны любой другой дискретной GPSS-функции. Далее, если первые элементы упорядоченных пар, определяющих такую функцию, образуют последовательность целых чисел 1, 2, 3 и т. д., то она может быть определена как списковая, а не как дискретная. В следующем параграфе будет рассмотрена возможность использования функции типа изображенной на 6.13 с блоком SPLIT. 6.17. Возможность упорядочения в блоке SPLIT Когда транзакт входит в блок SPLIT, or расщепляется посредством ввода в модель транзак- тов-потомков. Число потомков указывается в операнде А блока SPLIT. Операнд В является именем блока, куда направляются потомки, тогда как родитель переходит в следующий по порядку блок. Дли блока SPLIT в том виде, в каком ои был введен в параграфе 6.8, родитель и его потомки идентичны в смысле их отметки времени (т. е. времени входа в модель), уровня приоритета, типа параметров (полусловных или полнослов- ных) и значения параметров (значение параметров родителя заяосятся в параметры всех потомков). Родитель и потомки отличаются различными номерами траизактов. Но поскольку номер транзакта не может быть явно использован в логике моделирования, пользователь не имеет возможности различать родителя и (или) его потомков. Иногда необходимо, чтобы между транзактом- родитслем и его потомками было различие. Для этого в блоке SPLIT предусмотрена возможность упорядочения. Эта возможность достигается использованием операнда С блока SPLIT. При использовании операнда С его значение понимается как номер параметра, в котором родитель и его потомки будут упорядочены по номерам. Для того чтобы пояснить это, предположим, что при входе транзакта- родителя в блок SPLIT значением операнда С L 357
Табл. ца 6.5. Величины параметра упорядочения родителя и потомков при использовании операнда С блоха SPLIT Транзакт Родитель Первый потомок Второй потомок Третий потомок п т. д. Величина Р в-т- 1 о+2 о+ 3 (,4-4 будет у, а величиной его у'-ro параметра будет v. Тогда по выходе из такого блока SPLIT родитель и его потомки будут иметь в качестве Р/ величины, приведенные в табл. 6.5. У транз- акта-родителя величина Ру будет увеличена на 1. Величина Р/ первого транзакта-потомка будет равна измененной величине Р/ родителя плюс 1. Величина Р/ второго потомка будет равна измененной величине Р/ родителя плюс 2 и т. д. Предположим для числового примера, что транзакт с величиной Р7, равной 0. входит в блок «SPLIT 3,RUTE9,7». В результате в модель будут введены три потомка, которые перейдут в блок с именем RUTE9. Родитель' и его потомки будут иметь упорядоченные номера н седьмом параметре. Это значит, что родитель выйдет из блока SPLIT с Р7, равным 1 (0 + 1), а у первого, второго и третьего потомков величина Р7 будет равна соответственно 2, 3 и 4. С точки зрения расположения в цепи первый, второй и третий потомки отличаются друг от друга тем, что после вывода их из пассивного буфера транзактов и ввода в модель они будут помещены один за другим в цепь текущих событий именно в таком порядке. Рассмотрим теперь возможность выхода транзактов-потомков из блока SPLIT в раэлич- 1 SPLIT 5 } а ■ <FN$SWICH) . LOCATION 1 ?|J « Л!» (SUM CM VLUQJCI OPCRlTrJK j'4'i» .i.ini>!«n»|i6|'.-ln риметiam k/.З „BL.QKB.M,, *М1> iw н,14-Ылчыьгыо i ?ft»T i ■Л.ОКС. ,.,,,,, 1 1 1 1 1 1 6) Рис. 6.15. Пример, показывающий, каким образом трап- закты-потомки можно пересылать из блока SPLIT в различные следующие блоки: a — блок SPLIT; б — функция переключатель ные блоки, находящиеся в модели. В операнде-В блока SPLIT помещается информация об имени блока для этих потомков. При выполнении блока SPLIT операнд В вычисляется не один раз, а несколько, потомок за потомком. Следовательно, имя блока, куда должен поступать следующий потомок, можно сделать зависимым от свойств самого транзакта-потомка. Конечно, свойства потомков идентичны, если не использовать возможность упорядочения в блоке SPLIT. В случае упорядочения потомки имеют различные значения параметра упорядочения. Этот факт можно использовать при пересылке потомков в различные блоки модели. Предположим, например, что транзакт, у которого пятый параметр равен 0, входит в блок SPLIT, показанный на рис. 6.15, а. Тогда у трех потомков, вводимых в модель, величины пятого параметра будут соответственно 2, 3 и 4. Они один за другим переходят в блок, номер которого является значением функции с именем SWICH. У этой функции, определение которой дано на рис. 6.15, б, в качестве аргумента используется пятый параметр. Следовательно, первый, второй и третий потомки пойдут соответственно в блоки с именами BLOKA, BLOKB и BLOKC В блоке SPLIT имеется еще один необязательный операнд — D. Если он используется, то в нем указано число параметров, которое должно быть у каждого потомка. Если потомок имеет большее число параметров, чем его родитель, то дополнительным параметрам присваивается начальное нулевое значение. Если же у потомка меньше параметров, чем у родителя, то величины параметров родителя заносятся в параметры потомка только до определенного уровня. В заключение на рис. 6.16 подытожена вся информация о блоке SPLIT и его свойствах. J Spi с ' -% А ' (В) ^ Рис С. 1С. Блок SPLIT и его операнды А, В, Си D: Операнд А в С D Значение Число тракзантов-потом- кои, входи мых о модель Мня блока, куда будут «в- ирявлекы потомки Номгр параметра упорядочения Число параметров, которое должен иметь каждый потомок Результат по умолчанию Ошибка » Упорядочении не происходит К«-кдый потомок имеет такое же число параметров, что и родитель 358
6.18. Параллельное моделирование различных конфигураций системы До сих пор для изучения различных конфигураций системы использовали способ последовательного прогона вариантов. Типичным примером такого подхода являлся пример 5D (задача о заправочной станции). Моделирование проводилось для случая одного служащего на заправочной станции; затем, после операции очистки модели и переопределения емкости многоканального устройства, имитирующего служащих, выполнялся прогон, моделирующий двух, а затем трех служащих. Условия эксперимента в этом примере дублировались путем использования карты RMULT. Таким образом, различные варианты сравнивали .самым точным способом. В противоположность последовательному подходу можно исследовать различные конфигурации системы и параллельно. Для задачи о заправочной станции при параллельном подходе можно было бы составить модель, в которой в N мостах одновременно работали бы iV заправочных станций. В интересах дублирования условий эксперимента все N мест должны быть идентичны. Это означает, что в каждом месте должна быть одинаковая последовательность времени между поступлениями посетителей и одинаковая последовательность времени обслуживания -посетителей. Например, если машины поступают на станцию с одним служащим в 8 ч 03 мин, 8 ч 08 мин и 8 ч 10 мин утра с временем обслуживания соответственно 10, 7 и 13 мин, то такой же поток машин должен поступать и на станцию с двумя и тремя служащими, если параллельно исследуется конфигурация с одним, двумя и тремя служащими. Параллельное моделирование различных конфигураций системы сравнительно просто осуществить, используя блок SPLIT и косвенную адресацию. Для иллюстрации этого в терминах примера заправочной станции транзакт- аэтомобиль, поступающий на параллельные станции, следует рассматривать как главный автомобиль. В блоке ASSIGN его параметру будет присвоено значение, равное случайной выборке из распределения времени обслуживания. Затем он расщепится, добавив в модель ровно столько дополнительных транзактов, чтобы на каждую параллельную заправочную станцию приходился один автомобиль. Эги машины идентичны как в смысле времени их прибытия, так и в смысле времени, необходимого для их обслуживания, поскольку оно уже занесено в параметр. Далее, если использовать возможность упорядочения в блоке SPLIT, то величина параметра упорядочения может быть использована в качестве числового кода, означающего станцию, для которой каждый транзакт представляет собой автомобиль. При использовании этого параметра для косвенного определения и косвенной адресации единая последовательность GPSS-блоков может одновременно моделировать все параллельные станции. Комбинация косвенного определения, косвенной адресации и компактной блок-схемы может поначалу показаться сложной для обозрения параллельного моделирования вариантов. Действительно, для очень сложных моделей пользователь может предпочесть использовать последовательное изучение конфигураций. Как правило, нрн последовательном подходе нужно учитывать меньшее число различных деталей. Это, в свою очередь, уменьшает вероятность построения ошибочной модели. С другой стороны, по соображениям, которые станут ясными из следующего параграфа, машинное время, требуемое для экспериментирования с параллельными альтернативами, зачастую меньше, чем при таком же экспериментировании, осуществляемом последовательно. Этот факт компенсирует сложности, возникающие при построении модели с параллельным подходом. Общий характер и методология параллельного моделирования подробно рассмотрены в следующем параграфе, где в качестве примера разобрано параллельное моделирование задачи о заправочной станции. 6.19. Пример моделирования 6Е. Второе обращение к примеру 5D 1. Постановка задачи. В примере 5D требовалось определить, сколько служащих необходимо взять на заправочную станцию, чтобы обеспечить максимальную дневную прибыль. Были изучены варианты одного, двух и трех служащих, работающих на заправочной станции, причем эти варианты были рассмотрены последовательно при идентичных прочих условиях эксперимента. Моделирование показало, что средняя дневная прибыль на заправочной станции максимальна при наличии двух служащих. Составить другую модель для задачи прн- Mepa5D, имитируя различные варианты параллельным, а не последовательным образом. Сделать это как можно более компактно, полностью используя возможности косвенного определения и косвенной адресации. Различные варианты нужно изучать при условиях эксперимента, идентичных условиям, использованным в примере 5D.
Сравнить число пройденных транзактами блоков при параллельном моделировании с числом пройденных блоков при последовательном подходе. Сколько времени процессора экономится при параллельном подходе? 2. Метод построения модели. Подход, используемый при построении параллельной модели, был в общих чертах уже описан в параграфе 6.18. Ниже подытожены основные черты этого подхода. 1. Использовать один блок GENERATE для ввода транзактов-автомобилей на все заправочные станции, работающие параллельно. Рассматривать каждый транзакт, вводимый в модель посредством этого блока GENERATE, в качестве главного автомобиля. 2. Дать возможность каждому главному автомобилю в блоке ASSIGN произвести выборку нз распределения времени обслуживания и занести полученный результат в параметр. 3. После этого продвинуть каждый транзакт- главный автомобиль через блок SPLIT, вводя тем самым два транзакта-лотомка в модель. Теперь в модели будут находиться три автомобиля, по одному на каждую из трех заправочных станций, представляющих три различных варианта конфигурации системы-. Эти автомобили идентичны друг другу в смысле: а) их времени прибытия и б) времени, требуемого иа их обслуживание, поскольку оно было занесено в параметр главного автомобиля (и соответственно сохранено для каждого потомка в блоке SPLIT). В этом смысле условия, налагаемые на каждый автомобиль на каждой заправочной станции, одинаковы. 4. Наконец, использовать в блоке SPLIT возможность упорядочения. Это означает, что в параметре упорядочения у автомобиля-родителя и двух его автомобилей-потомков будут находиться величины, равные соответственно 1, 2 и 3 (в предположении, что параметр упорядочения у родителя имел начальное значение, равное 0). Пусть родитель будет автомобилем, приходящим на станцию с одним служащим, а два его потомка будут автомобилями, приходящими на станцию с двумя и тремя служащими. Пусть после блока SPLIT группа нз трех автомобилей проходит через общую последовательность блоков. Учитывая, что у этих транзактов в параметре упорядочения находятся различные величины, использовать косвенное задание и косвенную адресацию так, чтобы эта последовательность блоков моделировала все три варианта заправочной станции. 3. Таблица определении. Единица времени: 1 с. Таблица 6Е.1. Таблица определений примера моделировании 6Е Элемент Интерпретация Транзакты: 1-й сегмент модели 2-й сегмент модели Функции: IAT ST1ME Логические переключатели: LOCK Очереди: 1, 2, 3 Сохраняемые величины: I, 2, 3 Многоканальные устройства: 1,2,3 Переменные: .NET Аптомобиль: Р1 — время, требуемое на обслуживание этого автомобиля; Р2 — величина, указывающая, какую нз конфигураций заправочной станции использует даипый автомобиль: с одним, двумя или тремя служащими; величины Р2, равные 1, 2 и 3, как раз соответствуют этим случаям Таймер Функция, описывающая распределение между временами прибытия Функция, описывающая распределение времени обслуживания Логический переключатель, имитирующий состояние «открыто—закрыто» на заправочной станции Очереди, в которых автомобили ожидают обслуживания иа станциях соответственно с одним, двумя и тремя служащими Сохраняемые величины, в которые заносится дневная прибыль соответственно для случаев одного, двух и трех служащих Многоканальные устройства, емкость которых равна 1, 2 н 3, что соответствует случаям с одним, двумя н тремя служащими на заиравочной станции Переменная, величина которой равна дневной прибыли после вычета затрат; с помощью косвенной адресации одна неременная используется дли каждой из трех конфигураций 360
4, Блок-схема. ucnc 43200 L06IC NSGOIN / E \ NJDONE LOCK SPLIT (AHEAD) '' -(AHEAD) С SAVEVALUE J P1,V$NET X RMINA TERMINATE ПРИБЫТИЕ ГЛАВНЫХ АВТОМОБИЛЕЙ СТАНЦИЯ ОТКРЫТА ПРИНЯТЬ PI РАВНЫМ ВРЕМЕНИ ОБСЛУЖИВАНИЯ ВЛАДЕЛЕЦ ПРИХОДИТ В МОМЕНТ ЗАКРЫТИЯ УСТАНОВИТЬ ЗНАК'ЗАКРЫТО" ПОДОЖДАТЬ КОНЦА ОБСЛУЖИВАНИЯ ПОСЛЕДНЕЙ МАШИНЫ НА КАЖДОЙ СТАНЦИИ ВВЕСТИ ДВЕ КОПИИ ВЛАДЕЛЫ1Л.УП0РЯД0ЧИТЬ В ОДНОМ ПАРАМЕТРЕ ЗАПИСАТЬ ПРИБЫЛЬ ДЛЯ КАЖДОЙ СТАНЦИИ УЙТИ ДОМОЙ (GOIN) QUEUE "' ENTER " DEPART " * 1 PRIORITY " ADVANCE PI 0 <7t\ Э (DONE! (BYBY&lT* TERMINATE u=> ВВЕСТИ ДВЕ КОПИИ ГИАВНОГО АВТОМОБИЛЯ. УПОРЯДОЧИТЬ ВО ВТОРОМ ПАРАМЕТРЕ КАЖДЫЙ АВТОМОБИЛЬ ПРОВЕРЯЕТ УСЛОВИЯ НА СВОЕЙ СТАНЦИИ И ЛИБО ОСТАЕТСЯ. ЛИБО УЕЗЖАЕТ ВСТАТЬ В ОЧЕРЕДЬ ЗАНЯТЬ СЛУЖАЩЕГО ВЫЙТИ ИЗ ОЧЕРЕДИ УВЕЛИЧИТЬ ПРИОРИТЕТ ДЛЯ РАЗВЯЗКИ ВОЗМОЖНОГО ВРЕМЕННОГО УЗЛА МЕЖДУ ПРИБЫТИЕМ И УХОДОМ ОБСЛУЖИВАНИЕ ОСВОБОДИТЬ СЛУЖАЩЕГО ПОКИНУТЬ СТАНЦИЮ 2-Й СЕГМЕНТ МОДЕЛИ 1-Й СЕГМЕНТ МОДЕЛИ. Рис. 6Е.1. Блок-схема првмера моделирования 6Е
5. Распечатка программы. ЦИКК САШ> NUMBER *LUC LlPhRATIDN A, fl, CO • t • f .0 COMMtNIb NUMBhH SlMULAU I * z » 3 <■ HANDOft NUMBER SEQUENCE INI T 1AL I 7 A T U)N( S ) 4 * Ь HMULT III SitT RANOU'M NUMBER SEOUENCE FOR IbT RUM О * 7 * FUNCTION OLFlNl TIUN(S I H * ■* IAT FUNCHON HN1.C7 iNTtR-ARRlVAL Пне OlbTRIUUTION 10 О .U/.2S. 100/»«8«200/.6'Ji 30O/.M I ■400/.9.SO0/1 .600 I I S1IML FUNCTION RNI.C7 SERVICE TIME DISTRIBUTION IZ С.10О/.Ob.200/♦?1.3O0/.O8.UOO/.77.SOO/.43.COO/1.70O 13 г I A i STORAGt CAPACITY Oti- IN11 I UM| SI H> * 16 MIlHAGt Ы . 1/S2.2/S3.3 С ОШ- I GURE FOR PARALLEL CASES UF 17 » I, 7, AND J ATTENDANTS 18 » 19 * VARIABLE '.ILUMTIONISI 20 » 21 NIT VARIAHLE SC* l-7S-30*H» 1 DAY'S PROFIT AFTER COi-TS 77 * гз * MClOrL SFf.Nf.NT I _>A * ->S I GENERATE f-N*IAT, . ., 1 MASTER CARS APPROACH 7b 7. OATF LH LOCK STATIONS TIPtN? ?7 3 ASSIGN UFN.MUM; StT PI = LATtNl SF.RVICF TIMF 28 4 SPLIT i:.NEXT,2 CREATI 7. COPIfS (>F THE MASTER AR: /9 * StHlALIZb IN PARAMETER 7. JO 5 N'XT TFST LF D*«.S»?.BV»Yt tACM CAR TESTS CQNUITU)NS AT |Тъ -1 » STATION. THfcN STAYS OR <HM-S K»BYt 3/ ti OOIN Out LIE P2 GET IN LINE 31 7 ENThK P2 CAPTURE AN ATTENDANT 3«. в DEPART P2' GET UUT c»: LlNL . IS 9 PRIORITY 2 RAISE PRIORITY TO RE'-OLVI 3h E PDTIWTIAI AURI VAI /DLPARTlj»? T I t 37 Ю ADVANCE Kl StNVlCINd PHOOfDS .!« II l»A^ 1.1 .Wf P> I-He l THI- ЛГП-NDANI •"< 12 bYHVr IbRVlNATt LLAVt THE MAI ION A'l * a [ » MUDEL SfGMtNT 2 A,' » «.< I .« t.t'NFRATf *3?0O CLU'.tUP TIMtJ 4ASTI R DWNLR ARR|Vt> ' ** I a LOGIC S LOCK StT "NOT OPtN" SIGNAL «b IS TEST E NkfeUIN, NiOOKlh WAI1 'TIL LAST CAR IS AA » MRVIf-O AT LAST STATION A/ lb SPLIT 2iAMtAD.l c'REATC 7 CUPIIS OF THE MASTFR OWNF.Rl 4fc 4 SERIAlliT IN PARAMLTtR I tv 17 «i-H »0 SAVtVALUt l'I.V*IMTT X| CI)R|> N1.1 PROFIT FUR EACH STATION *>U 18 Tt-HHINATE 1 <;tl HtlMg ^1 -. s? » LKNTROL LAKbS . ^ I « S>* START 1ST HUN DAY I ! SS :iET RANDOM NUMBER St OUt MCE FOR ? NL RUN S6 < LlAR for 2nd Run &7 start 2nd run cay я i ья set ranoom number seoubnch for 3rd run 54 clear .for 3rd run 00 bTART 3RO RUN OAY 3 1 £■ ЬЬТ RANDOM MUMBEH SVOUENCE FOR ATH RUN *«• CLEAR FOR чТН RUN «3 START ATH RUN (OAY A\ 64 SET RANDOM NUMBER SEOuENCE FDR BTH RUN Ob LtAR FOR STH RUN ЬЬ bTARI STH RUN (DAY Ь ) f7 RETURN CCIHTHOL Ю OPERATING <iVSTl"M 6» START HMUL.T CLtAR START HMULT LEAR bTART umiilT V.LEAR SI A«T RMULT CLEAR START t-.NO 3 333 3 •ъЪ-Ч 3 777 3 999 Л Рис- 6Е.2. Распечатка программы примера молслиропапия СЕ
6. Выходные данные программы. Распечатка результатов непосредственно не приведена. Результаты представлены ниже. 7. Обсуждение. Логика моделирования. 1-й сегмент модели на рис. 6Е.1 следует изучать в свете замечаний, сделанных выше (Метод построения модели). Для сравнения следует также заново посмотреть 1-й сегмент модели примера 50 (задача о заправочной станции). В обоих примерах в 1-м сегменте используется одинаковая последовательность блоков за исключением добавления блока SPLIT. Главное различие между этими участками заключается в способе представления величин в полях блоков TEST — QUEUE — ENTER — DEPART — LEAVE. В примере 5D в блоках QUEVE — ENTER — DEPART — LEAVE все величины задаются непосредственно, а в примере 6Е соответствующие величины представлены путем косвенного определения. В примере 5D поля А и В блока TEST заданы косвенным определением, а в примере 6Е эти же поля заданы посредством косвенной адресации. Полезно также сравнить сегменты, содержащие транзакт-таймер (2-й сегмент модели), в примерах 5D и 6Е. При последовательном подходе в примере 5D каждый транзакт-таймер вычисляет только одну величину прибыли. В примере 6Е при параллельном моделировании каждый транзакт-таймер должен вычислять три величины прибыли (по одной для каждой конфигурации). После установления факта, что ни на одной из параллельных заправочных станций нет необсауженных автомобилей, один транзакт-таймер в примере 6Е нуждается в помощи при вычислении трех величин прибыли. Поэтому таймер расщепляется и вводит двух, потомков в модель (блок 16 на рис. 6Е.2). С помощью упорядочения первоначальный таймер и два его потомка пронумерованы в первом параметре величинами I, 2 и 3. Затем каждый из этих трех транзактов проходит через общий блок SAVEVALUE (блок 17 на рис. 6Е.12), в котором родитель вычисляет прибыль для первого случая, а два его потомка вычисляют прибыль соответственно для второго и третьего случаев. Переменная NET, в которой подсчитывается прибыль (карта 22 на рис. 6Е.2), косвенно адресует данные носредством первого параметра транзакта, вошедшего в блок SAVEVALUE; таким образом, вычисление прибыли происходит последовательно по мере вхождения транзактов (т. е. последовательно для каждой конфигурации). Управление условиями моделирования. В постановке задачи требуется двойной контроль условий моделирова- ; ния. Прежде всего в каждой конфигурации г должны быть осуществлены одни и те же обстоятельства в течение пяти дней в смысле интервалов между прибытиями автомобилей и требуемого времени их обслуживания. Кроме того, эти обстоятельства, наблюдаемые в течение пяти дней, должны быть идентичны обстоятельствам пяти дней примера 5D. Осуществление каждого из этих требований не составляет труда. Посредством использования таких понятий, как «главная машина», «заранее определяемое время обслуживания» и (расщепление для получения точной копии», все конфигурации ставятся в равные условия, причем, возможно, даже более наглядно, чем в примере 5D. Затем, используя карту RMULT, в примере 6Е устанавливают начальную точку отсчета для RN1 для каждого дня, так же как и в примере 5D. Следовательно, в обоих примерах «RMULT 111» устанавливает начальную точку для первого дня, «RMULT 333» — для второго дня и т. д. В примере 5D было использовано 93 перфокарты, а в примере 6Е понадобилось всего 68 перфокарт. Это является прямым следствием того, что использовали параллельное, а не последовательное изучение различных конфигураций. При параллельном моделировании понадобилось всего лишь пять карт RMULT, пять карт CLEAR и пять карт START, тогда как в последовательной модели использовалось 15 карт RMULT, 15 карт CLEAR и 15 карт START. Распечатка результатов (Общее время занятости процессора при моделировании на ЭВМ IBM 360/67 составило 14,8 с.) В табл. 6Е.2 подведены итоги дневной прибыли в долларах для различных прогонов. Величины в таблице полностью совпадают с величинами такой же таблицы в примере 5D (см. табл. 5D.4). Так конечно, и должно быть. Условия экспериментов, проведенных с двумя этими примерами, идентичны. Таблица 6Е.2. Общий результат моделирования для примера 6Е Деяь 1 2 3 4 5 Число служащих 1 1 2 3 — 1 о 2 36 60 46 21 52 3 15 24 25 —0 29 В постановке задачи требовалось сравнить число прохождений блоков для обоих примеров. При суммировании счетчиков общего числа вхождений в блоки, здесь не указанных, было выяснено, что в примерах 6Е и 5D было осуществлено соответственно 24 889 и 27 728 вхождений. Таким образом, при исследовании задачи
с. использованием параллельного подхода потребовалось всего около 90% от прежнего числа исполнений блоков. Этот результат можно интерпретировать так, что в примере 6Е время занятости процессора составляет около 90% от времени, требуемого для примера 5D. (На самом деле время занятости процессора для примеров 6Б и 5D составило соответственно 14,8 и 17,6 с, т. е. время занятости процессора при параллельном подходе приблизительно равно 85% от времени занятости процессора при последовательном подходе (см. упражнение 2 параграфа 6.20). Тот факт, что при параллельном подходе требуется меньшее число прохождений блоков, объясняется вполне понятными причинами. Рассмотрим, например, первый автомобиль в первый день для каждой возможной конфигурации. При последовательном подходе время прибытия этого автомобиля должно вычисляться три раза (один раз для каждой конфигурации); аналогично, время, требуемое для его обслуживания, также вычисляется три раза. В противоположность этому при параллельном подходе время прибытия автомобиля вычислялось только один раз, и время, необходимое для его обслуживания, также вычислялось только один раз. С помощью расщепления были получены «точные копии», в которых были записаны результаты одноразовых вычислений, причем эти результаты полностью отвечают требованиям, необходимым для изучения каждой конфигурации. Таким образом, ясно, что чем больше исследуемых случаев, тем больше времени процессора экономится при проведении параллельного, а не последовательного эксперимента с моделью. 6.20. Упражнения 1. Транзакт, величина четвертого параметра которого равна 5, входит в блок SPLIT (рис. У1, а). Затем родитель и его единственный потомок переходят а следующий блок ASSIGN. Какое воздействие окажет блок ASSIGN; а) на родителя и б) на потомка, если соответствующие функции определены так, как показано на рис. У1, б. 2. Число выполнений блоков, требуемое при моделировании, является грубой оценкой общего времени, затрачиваемого процессором. Другими важными факторами, определяющими затраты времени процессора, являются: а) число значений, принимаемых модельным временем, и б) число заблокированных трапзактов, находящихся в цепи текущих событий и тем самым требующих обработки при каждом показании модельного времени. Сравнить примеры 5D и 6Е по этим двум факторам. Постарайтесь провести сравнение как можно более точно. Например, насколько чаще интерпретатор S?UT (NEXT) i (NEXT) P4,FN*4 С ASSIGN J a) ?y>i< J, I --L. 9.-ЛЛ./А -I 1 I I • Ifl-OHlflHujuilS * ^C» I IiUNCULOHj i яЫв 1н|11|1«|иЛ^|!«-л»|Ум[»ИюЬ *./3.r.S{ -i2i/,7„|-il, Р,имст'|дм UJiZjUL ■J L I » B.COXf FA,JL3.-l-i_i. Ы^ЛЛ- йЯиЛЛ. i ' * i t i i 1 61 Рис. У1 GPSS менял показания -модельного времени в примере 5D, чем в примере 6Е? С другой стороны, на сколько в среднем большее число заблокированных транзактов в цени текущих событий обрабатывает интерпретатор в примере 6Е на каждой фазе просмотра? 3. Путем использования косвенного определения и косвенной адресации модель в примере 6Е была сделана чрезвычайно компактной по числу использованных блоков. Однако такая компактность не является необходимым атрибутом моделей, в которых возможные конфигурации исследуются параллельно. Например, в одной модели может быть 1-й сегмент, в котором моделируется только конфигурация с одним служащим, 2-й сегмент, в котором моделируется только конфигурация с двумя служащими, и 3-й сегмент, моделирующий только конфигурацию с тремя служащими. Вычисление прибыли и завершение прогона осуществлялись бы в 4-м сегменте модели. Подобный подход характеризовался бы: а) частым использованием непосредственного определения, б) сравнительно большим количеством блоков и в) использованием сравнительно большого числа датчиков случайных чисел, если бы требовалось управлять условиями эксперимента. 364
Составить блок-схему для модели, полностью эквивалентной модели примера 6Е, но использующей грубый подход, описанный выше. Сравнить полученную модель с моделью примера 6Е в отношении: а) числа блоков и б) числа необходимых датчиков случайных чисел. Как вы считаете, будет ли общее число выполнений блоков в этой модели ближе к примеру 5D или к примеру 6Е? 4. Рассмотрим пример 2D (задача о производстве детялей). В этом примере, последовательно были изучены три различные конфигурации. Показать блок-схемы (со всеми подробностями) для моделей, изучающих те же конфигурации, но параллельно используя два подхода: а) грубый, описанный в упражнении 3; б) подход с компактной моделью, описанный в примере 6Е. В обеих моделях осуществить управление условиями эксперимента. Это означает, что сборка /-и детали должна требовать одинакового времени в каждой возможной конфигурации; аналогично, использование печн для /-й детали должно занимать одинаковое время вне зависимости от рассматриваемой конфигурации. Транзакт-таймер в каждой модели должен вычислять прибыль для каждой конфигурации, причем величина прибыли должна быть помещена в сохраняемые величины. 5. Рассмотрим пример 2Е (задача о швейной фабрике). В этом примере были последовательно изучены девять различных конфигураций. Показать блок-схему (со всеми подробностями) для модели, имитирующей все эти девять случаев параллельно. Введите в модель следующие особенности. а). Вместо того, чтобы начинать моделирование с пустой системой, организуйте его так, чтобы начальные условия были как можно более реальными (см. упражнение 3 параграфа .2.41). Это означает, что не нужно будет использовать карту RESET при достижении процессом устойчивого состояния. б). Предусмотрите управление условиями эксперимента. Это означает, что /-я используемая швейная машина будет иметь хотя и случайно определяемое, но независимое от конфигурации время работы. Аналогично, время ремонта у'-й отказавшей швейной машины также ле должно зависеть от конфигурации. в). Транзакт-таймер должен вычислять для каждой конфигурации расход, причем его величина должна быть помещена в сохраняемые .величины. После того, как модель будет готова, разработайте с ее помощью план, позволяющий найти оптимальные условия работы этой системы. "Сравните качество ваших заключений и время лроцессора, которое вам понадобилось, с результатами, полученными в примере 2Е, с результатами, полученными для модели RESET- карты, показанной на рис. 2.48. 6. Следует определить, какое число газетных кип следует каждый день брать газетному киоску. Газеты поставляют только в кипах по 25 штук. Каждая газета стоит 10 центов. Киоск платит семь центов за каждую проданную газету и четыре цента за каждую непроданную. (Непроданные газеты имеют определенную ценность, поскольку их можно вернуть на бумажную фабрику.) Считается, что запрос на газеты возникает из двух источников. Первый источник — это постоянные посетители; их потребность в газетах распределена равномерно от 150 до 200 штук в день. Другой источник — это случайные покупатели, чья потребность в газетах определяется наличием особых событий, происшедших за день. Запрос от случайных покупателей распределен так, как показано в табл. У6, и является функцией типа особых событий. Предполагая, что вышеизложенная информация — это все, что учитывает владелец киоска, определите, сколько газетных кип ему следует брать ежедневно, если он хочет иметь максимальный доход. Вначале проведите предварительный численный анализ и установите три различные линии поведения при закупке, которые, по вашему мнению, являются наиболее действенными. Затем нужно параллельно промоделировать эти возможности. Осуществите управление условиями эксперимента так, чтобы запросы, возникающие ежедневно, были идентичны для каждого рассматриваемого случая. Таблица У6 Частота возникновения Распределение добавочных требований Особые собйстни дня Не никают 0,29 0 Тнн I 0.34 50±25 Тип 2 0,26 100±50 Гип 3 0,12 150±60 7. Следующая задача предназначена для того, чтобы приобрести навыки в использовании многих концепций GPSS, введенных в данной книге. В зависимости от подхода к построению модели в задаче есть возможности использовать блоки TEST и GATE и блок SPLIT (включая возможность упорядочения). Можно также использовать логические переключатели, время прохождения, булевские переменные, арифметические переменные, сохраняемые величины,
параметры транзактоз и оператор деления по модулю. Другой особенностью этой задачи является то, что она использует концепцию детерминированного моделирования как полезный инструмент в исследовании модели. При построении модели было интересно задаться целью сделать се так, чтобы она требовала относительно малых затрат машинного времени. Если эту задачу будут моделировать независимо несколько человек или несколько групп, они впоследствии смогут сравнить свои модели в плане выбранного подхода к моделированию, числа потребовавшихся блоков для разных подходов и времени процессора, затраченного на моделирование. Постановка задачи. Фирма, осуществляющая перевозки, имеет контракт с восемью различными складами, по которому она развозит принадлежащие им контейнеры внутри небольшой городской территории. На каждом складе контейнеры подают иа грузовую платформу ежедневно в 8 ч и еще раз в 13 ч. Одновременно каждый сообщает диспетчеру фирмы данные о числе новых контейнеров, предназначенных для перевозки. (В связи с этим отметим, что в любое время, либо в 8 ч, либо в 13 ч, на грузовой платформе могут еще находиться старые контейнеры, которые фирма не успела забрать). Таким образом, диспетчер в любое время точно знает, сколько контейнеров на каждом из восьми складов ожидают погрузки. Водители грузовиков работают по 8 ч в день. Первая половина рабочего дня начинается в 8 ч утра и кончается в 12 ч. После этого следует часовой перерыв. Вторая половина рабочего дня начинается в 13 ч и заканчивается в 17 ч. Если некоторый грузовик пуст к началу какой- либо половины рабочего дня, то диспетчер посылает его на тот склад, на котором скопилось максимальное число контейнеров. По прибытии на этот склад водитель забирает все контейнеры с грузовой платформы и тут же начинает их перевозку. Перевозка продолжается до тех пор, пока а) либо время не станет большим, чем 11 ч 30 мин или 16 ч 30 мин, б) либо все контейнеры, находившиеся в грузовике, не будут развезены. Если первым происходит событие а, водитель возвращается на диспетчерский пункт и прекращает работу до начала следующей половины дпя. Если же вначале происходит событие б, то водитель возвращается на диспетчерский пункт, докладывает об этом, получает следующее назначение, направляется на соответствующий склад (если только в этот момент время не стало больше 13 ч 30 мин или 16 ч 30 мин) и т. д. Если некоторый грузовик в начале новой половины дня не пуст, водитель начинает эту половину дня с того, что просто продолжает выполнение той перевозки, которую он не успел завершить за предыдущую половину рабочего дня. Когда наступают условия а или б, описанные выше, водитель поступает соответствующим образом. Независимые случайные переменные в системе перечислены в табл. У7, а. Представляющие интерес зависимые случайные переменные приведены в табл. У7, б. Построить GPSS-модель для изучения свойств описанной системы сбора и развоза груза. Интересующей пас переменной в модели должно быть число грузовиков, которое фирма должна использовать для максимизации ожидаемой дневной прибыли. В модели следует предусмотреть вычисление значений зависимых случайных переменных, перечисленных в табл. У7, б, куда включена информация о дневной прибыли. Ниже приведена соответствующая информация о затратах. Что касается независимых случай- Таблица У7, а Номер независимой случайной переменной Описание Время, затрачиваемое на поездку от диспетчерского пункта до склада Число новых контейнеров, выставленных на грузовой платформе склада / в момент времени А доя / = 1, 2, 3,4, 5, 6, 7 и 8, н к = 8 и 13 ч. Заметим, что в системе имеется 16 таких случайных переменных Время, требуемое для перевозки одного контейнера, т. е. время, необходимое грузовику для поездки либо от склада, либо от места последней доставки до следующего пункта доставки с последующей выгрузкой контейнера Время, необходимое для возврата иа диспетчерский пункт после того, как грузовиком доставлен последний контейнер Время, необходимое складу для оповещения диспетчера о числе контейнеров, находящихся на грузовой платформе в начале дня Время, необходимое диспетчеру для указания водителю следующего пункта назначения Время, необходимое водителю для погрузки контейнеров с грузовой платформы в кузов Время, затрачиваемое водителем на рапорт в диспетчерском пункте после его возвращения либо после освобождения грузовика, либо в случае прекращения работы до начала следующей половины дня 366
Таблица У7, б Зависимые случайные величины Описание в (или) комментарии Использование грузовика Время перепозкв контейнера для /-го склада при /= 1, 2. 3, 4, 5, 6, 7 и 8 Дневная прибыль Грузовик используют, если он находится в пути К складу, занят перевозкой или находится в пути к диспетчерскому пункту Время перевозки контейнера определяется как промежуток времени, отсчитываемый с момента помещения контейнера на грузовую 'платформу до моменте его доставки грузовиком в пункт назначения. Заметим, что в системе имеются восемь таких случайных переменных. Следует определить распределения каждой таков случайной переменной (вполне вероятно, что эти случайные величины распределены неодинаково) Следует определить распределение случайной ерличшш «дпевпая прибыль в долларах» (информации о доходах и расходах приведена нкже в постановке задачи) ных переменных, то можно предположить, что величины, имеющие в табл. У7, а номера 5, 6, 7 и 8, пренебрежимо малы. Значения других независимых случайных переменных описаны ниже при двух различных наборах условий. В первом случае предполагается, что эти случайные переменные принимают только фиксированные значения. В другом случае они принимают значения, определяемые посредством выборки из законов распределения с заданным описанием. Информация о расходах. Затраты на грузовик составляют 70 долларов в рабочий день, включая затраты на эксплуатацию и обслуживание, начальные капитальные затраты, распределенные на протяжении всего времени службы грузовика, и заработок водителя. Фирма взимает плату со складов в размере 5 долларов за каждые полные или неполные 15 мин использования грузовика. (Например, счет за 63 мин работы составит 25 долларов.) По этим соображениям счет за использованное время начинает идти с момента выхода грузовика с диспетчерского пункта по направлению к складу. Отсчет оплачиваемого времени прекращается как только либо будет перевезен последний контейнер, либо закончится соответствующая половина рабочего дня, в зависимости от того, что произойдет раньше. В частности, склады не платят за время, которое требуется грузовику для возвращения на диспетчерский пункт после только что завершившейся перевозки. Как только грузовик возвращается на диспетчерский пункт, происходит подсчет денежной суммы (для практических нужд) за проделанную им работу. Для определения общего времени его занятости по доставке всякий раз, когда он возвращается на диспетчерский пункт, происходит округление времени до ближайших 15 мин. Вообще говоря, это означает, что округление может происходить более одного раза в день для каждого обслуживаемого склада. Для того чтобы стимулировать высокое каче~ ство обслуживания со стороны фирмы, занимающейся грузовыми перевозками (которая может умышленно обслуживзть плохо для того, чтобы повысить время использования грузовика), в контракте оговаривается уменьшение платы, если контейнеры доставляют с опозданием. Считается, что контейнер доставлен с опоз- зданием, если доставка не осуществлена в тот же день, когда контейнер был взят с грузовой платформы. Уменьшение платы за опоздание происходит в размере 1 доллара за контейнер в день. Например, если контейнер был взят с грузовой платформы на седьмой день и не был доставлен до десятого дня, то склад, которому принадлежит этот контейнер, уменьшает плату па 3 доллара. Уменьшение платы за опоздание не учитывается при составлении на складе счета за услуги до тех пор, пока не наступит день, в который произойдет запоздавшая (или запоздавшие) перевозка. Задание для детерминированного моделирования. Одним из способов частичной проверки модели является ее прогон в постоянном режиме (т. е. без учета случайностей в тех переменных, которые в обычных условиях являются их источниками). Полученный результат можно затем сравнить с известными правильными результатами, подсчитанными независимым образом вручную. Для этого после построения модели следует выполпить ее прогон для каждого из восьми различных наборов данных, заданных постоянными и приведенных в табл. У7, в. Для каждого набора данных в табл. У7, в выполнить моделирование в течение трех полных дней работы, распечатывая интересующие величины в конце каждого дня. Затем сравнить ежедневную прибыль или потерю с заранее известными правильными результатами, полученными посредством вычисления вручную. Правильные результаты для всех восьми случаев в детерминированном режиме приведены р табл. У7, г. Результаты, приведен- ные в табл. У7, г, следует проверить, произведя 367
Таблица У7, s Номер набора данных 1 2 3 4 5 6 7 8 Знамени» Независимых случайных переменных ] . | 3 •• 15 15 15 15 15 15 15 15 0 2 6 7 0 2 14 15 э * 15 1д 15 15 15 15 to 15 4 * 14 15 15 15 15 15 15 15 III шт. 4 4 4 4 а 8 8 8 * Значения независимых, случайных переменных 1, .1 н 4 укамкы и минутах. ** :1начскн» вторил иезааисичой случайной переменной указаны о контейнерах пи половину дня. Строго гопоря. дли этоп случаПноп иели'ишы дли каждого нобора данных следовало бы укя-кггь (<f различных янамениЛ (но одному значению Дли каждого m нпсьми складов в 8 ч н но одному значению для каждого ич восьми склпдов и 13 ч). Для всех приведенных здесь посто> мх знпченнй предполагается, что «Дня величина относится ко всем складим как в 8 ч, так н и 13 ч. Таблица У7, г Номер набор» данных 1 2 3 4 5 6 7 День 1-Я —280 —40 280 260 —500 —320 640 600 2-й —280 —40 280 260 —560 —320 620 536 я-й —280 -40 280 292 —560 —320 640 504 II р и» п ц и » с. Величина дневной выручки приведена в долларах. вычисления вручную самостоятельно. (Все результаты, за исключением результатов для четвертого и восьмого наборов данных, являются достаточно очевидными.) Заметим, что наборы данных 2, 3 и 4 относятся соответственно к случаям малой, полной и чрезмерной интенсивности для варианта с четырьмя грузовиками. Аналогично, наборы.6, 7 и 8 относятся соответственно к тем же случаям для варианта с восемью грузовиками. Малая интенсивность означает, что ежедневно можно было бы перевозить большое число контейнеров и не подвергаться при этом штрафу за опоздание; случай полной интенсивности озпачает, что хотя все контейнеры, попавшие на грузовую платформу в некоторый день, будут в этот же день перевезены, это не будет справедливо, если увеличить число контейнеров; чрезмерная интенсивность означает, что фирма не в состоянии перевезти контейнеры а тог же день, в который они поступили на грузовую платформу. Задание для моделирования в случайном режиме. Для моделирования со случайными величинами предположим, что независимые случайные переменные 1 и 4 принимают значения, равномерно распределенные в интервале J5 — — 5 мин. Предположим также, что независимая случайная переменная 2 распределена по нормальному закону со средними и дисперсиями, приведенными в табл. У7, д. Таблица У7, д Склад 1 2 3 4 5 6 7 8 Первая половина дни Сродное 5 9 11 7 12 6 8 10 Дисперсия 1 1 2 1 2 1 1 2 Вторая половинл днч Среднее 7 5 8 7 6 6 9 7 Дисперсия Что касается независимой случайной переменной, то предположим, что среднее премя, необходимое для перевозки контейнера, зависит от времени дня, как показано на рнс. У7. Координатными точками графика являются следующие пары: (8, 20), (9, 20), (10, 15), (11, 12), (12, 18), (13, 22). (14, 19), (15, 15), (16, 18) и (17, 35). Истинное время любой доставки равномерно распределено в интервале его среднего времени =t4 мин. При работе с моделью в случайном режиме нужно прежде всего определить, как долго следует проводить моделирование для достижения достаточно устойчивых значений случайной переменной «дневная прибыль». Затем провести моделирование с различными значениями переменной «число грузовиков» для определения той ее величины, которая максимизирует ожидаемую дневную выручку. Указания к эффективной отладке. При прогонах модели в постоянном режиме рассмотреть появление транзакта-таймера дважды каждый день (например, в моменты модельного времени, равные 12 ч 30 мин и 18 ч). Если это будет сделано и в качестве карты START будет использована карга «START 6,1,1», то вывод на печать будет содержать счетчик числа вхождений в блоки и распечатку цепей текущих п « /* время дня Рис. У7 368
и будущих событий в момент, когда моделирование приостанавливается в конце каждой половины дня. Счетчики блоков н информация о цепях могут быть использованы для определения того, где находятся грузовики и все не- перевезенные в эти моменты времени контейнеры. Поскольку данные постоянны, путем рассуждений можно установить, где в это время • должны быть грузовики и контейнеры. Это дает возможность установить, правильно ли работает модель; если же она работает неверно, то счетчики блоков и информация о цепях могут послужить отправной точкой для проверки логики модели для выявления источников ошибок. Дальнейшие вопросы Эля обсуждения, а). Ограничились ли вы при прогонке модели в постоянном режиме только восемью наборами данных, приведенными в табл. У7, в? Эти данные не компенсируют все возможные обстоятельства, которым должна, по всей видимости, отвечать ваша модель, в случайном режиме. Составьте дополнительные постоянные наборы данных, компенсирующие как можно больше различных обстоятельств, которые вы можете придумать, н выполните прогон модели с этими данными. (Например, будет ли работать ваша модель для набора данпых, при котором два или более грузовиков одновременно заняты перевозкой контейнеров для одного и того же склада?) б). Вопрос о том, что происходит, если число грузовиков превышает число складов, в постановке задачи не рассматривается. Действительно, число контейнеров, устанавливаемых на грузовые платформы каждые полдня, таково, что из соображений оптимальности фирме требуется меньше восьми грузовиков. Предположим, что скорость появления новых контейнеров поднялась до такого уровня, что оптимальное число грузовиков превышает число обслуживаемых складов. Тогда может оказаться, что больше не имеет смысла всегда назначать только один грузовик на данный склад для того, чтобы забрать все контейнеры, находящиеся на грузовой платформе этого склада. Следует найтн лучший критерий диспетчеризации во избежание ситуаций, при которых одни грузовики везут большое число контейнеров, а другие, будучи пустыми, ожидают на диспетчерском пункте. Обсудить, какой критерий диспетчеризации следует выбрать для таких ситуаций. Обсудить также, каким образом следовало бы изменить модель для того, чтобы ввести в нее предложенный вами критерий диспетчеризации. в). Как вы составили модель для изучения различных конфигураций — последовательно или параллельно? Рекомендуется последовательный подход, хотя бы на начальном этапе. После того, как задача будет правильно смоделирована при последовательном подходе, внимательно изучите ее для проведения параллельных исследований различных конфигураций. Как вы полагаете, будет ли эта замена простой или сложной? г). Обсудите различные варианты более реальной постановки задачи. Например, поставленные условия предполагают, что диспетчеру не требуется времени для назначения грузовикам маршрутов в начале каждой половины дня. Даже если на каждого водителя грузовика приходилось бы по одному диспетчеру, это предложение было бы не совсем реальным. Если же имеется только один диспетчер и несколько водителей, такое предположение становится еще более нереальным. Как вы считаете, насколько важен отказ от этого предположения в смысле степени приближения к реальной модели? При обсуждении этого вопроса следует иметь в виду такие обстоятельства, как цель моделирования, дополнительные усложнения, требуемые для построения модели, другие неточности модели, возникающие из-за таких вещей, как ошибки, присущие используемым данным, и т. д. 24 Т. Дж. ШраЙбер
ЧАСТЬ II 7.1. Введение В гл. 2 были перечислены следующие пять типов цепей в GPSS: 1) текущих событий; 2) будущих событий; 3) пользователя; 4) прерываний; 5) парности. На цепи текущих и будущих событий неоднократно были сделаны ссылки для того, чтобы облегчить понимание функционирования интерпретатора GPSS. Однако до сих пор не были рассмотрены цепи пользователя, прерываний и парности. Ни одну из этих цепей пока еще не использовали в разобранных ^анее примерах моделирования на GPSS. этой главе будут рассмотрены вопросы моделирования, связанные с тремя последними типами цепей. Цепи пользователя, прерываний и парности будут подробно разобраны как составные части процесса моделирования и использованы для изучения конкретных ситуаций. Вначале косвенным образом вводится цепь пользователя. Перед ее: вводом мотивируется идея использования этой цепи как инструмента, обеспечивающего экономию времени процессора при работе с GPSS и, кроме того, использующегося для моделирования различных дисциплин обслуживания. Затем, после объяснения идей применимости цепей пользователя и некоторых деталей, связанных с их использованием, приведены четыре примера без подробного анализа для иллюстрации их применения. Эти примеры даны для того, чтобы подчеркнуть важность проблемы «одновременности событий» для цепи пользователя. С помощью этих примеров изучаются цепи поль^ зователя. Наконец, приведены дополнительные сведения об использовании цепи пользователя и рассмотрен еще один пример (без подробного обсуждения) ее применения. Затем косвенно введено понятие цепи прерываний посредством- рассмотрения понятия Дальнейшее развитие концепций моделирования на gpss захвата прибора. Прибор считается захваченным, если приходит некоторый транзакт и забирает его у другого транзакта. Показано, что цепь прерываний — это место, где транзакт {или транзакты), снятый при некоторых обстоятельствах с -обслуживания, ожидает окончания обслуживания на данном приборе. После рассмотрения двух примеров разобрана взаимосвязь между захватом прибора и цепью прерываний. Затем описаны некоторые дополнительные детали, связанные с понятием захвата. В данной книге не затронуты все возможные варианты понятия захвата и его модификаций, однако вводимого материала вполне достаточно для того, чтобы пользователь в дальнейшем мог осуществлять моделирование различных сложных ситуаций с использованием (5PSS. В конце главы введено понятие цепи парности. Как и в случаях цепи пользователя и цепи прерываний, понятие цепи парности вводится косвенно. Наличие цепи парности вытекает из рассмотрения возможности синхронизации движения различных транзактов, находящихся в произвольных местах GPSS-модели. В GPSS имеются три блока, способных обеспечить возможность синхронизации. Идея под-
держания транзактов в определенном состоянии синхронизации заключается в том, что один (или более) транзакт в модели должен «ждать», пока другой (или другие) транзакт достигнет определенной, заранее заданной точки в модели. Транзакты, ожидающие наступления момента синхронизации, помещаются в так называемые цепи парности. Грубо говоря, этим и объясняется необходимость наличия цепи парности. После того, как высказаны предварительные соображения, подробно разобран один пример и приведено несколько примеров без подробного обсуждения для иллюстрации использования трех синхронизирующих блоков. 7,2. Дополнительные сведения о просмотре цепи текущих событий Ранее были рассмотрены блоки, в которые транзакт не может войти при наличии некоторых условий. К ним относятся блоки SEIZE и ENTER, а также блоки TEST и GATE, работающие в режиме отказа. Если транзакт пытается войти в такой блок и получает отказ на вход, то он помещается в цепь текущих событий в качестве заблокированного. При всяком просмотре цепи текущих событий интерпретатор будет сталкиваться с заблокированными транзактами. Во время просмотра неизбежно будет затрачиваться часть времени для проверки наличия или отсутствия блокирующего условия для каждого из этих траизактов; Когда таких транзактов много, требуется сравнительно много времени на моделирование. В некоторых случаях блокировки интерпретатор может упростить процедуру проверки наличия или отсутствия блокирующего условия для транзакта. Это упрощение возможно для блокировки, возникающей при использовании блока GATE, работающего в режиме отказа, и блоков SEIZE и ENTER. Если транзакту впервые отказано войти в один из этих блоков, можно определить, что разрешения на вход не будет получено до тех пор, пока не отработает некоторый другой блок модели. Например, если транзакт задержан на входе в блок «SEIZE CPU», блокировка сохранится до тех пор, пока не отработает блок «RELEASE CPU». Аналогично, транзакт, задержанный на входе блока «GATE SE DRUMS», будет заблокирован до тех пор, пока не отработает блок «LEAVE DRUMS», что приведет к освобождению многоканального устройства; если задержку вызвал блок «GATE LR SYGNL», то она будет продолжаться до момента, когда транзакт войдет в блок «LOGIC R SYGNL». Как показывают эти примеры, существует единственный метод 24» Таблица 7.1. Список однозиачяых блокирующих условий я средств их устранения Номер блокирующего услооии I 2 3 4 5 6 7 8 9 Блок (блоки). создающий блокирующее условие GATE LR GATE LS /SEIZE 1 Igate nu/ GATE U GATE SNF GATE SE ENTER GATE SNE GATE SF Блок, выполнений которого сминает блокирующее условие * LOGIC R LOGIC S RELEASE SEIZE LEAVE LEAVE (если результатом будет полное освобождение многоканального устройства) LEAVE ENTER ENTER (если результатом будет залолнеяяе многоканального устройства целиком) 1 В предположении, что только данный логический переключатель, прибор или многоканальное устройство вызвало блокировку. снятия подобных блокирующих условий- Поэтому такие условия называют однозначными. В табл. 7.1 перечислены девять однозначных блокирующих условий, связанных с блоками SEIZE, ENTER и GATE. (В дополнение к указанным девяти условиям могут возникнуть еще два однозначных блокирующих условия. Они описаны ниже в этой главе.) В противоположность обстоятельствам, перечисленным в табл. 7.1, при возникновении блокировки в блоке TEST, работающем в режиме отказа, или в блоке TRANSFER, работающем в режиме BOTH, связь между причиной задержки и способом ее устранения, как правило, не так проста. Условия, которые вызывают блокировку при входе в какой-либо из этих блоков, называют неоднозначными. В целях экономии времени интерпретатор GPSS различает транзакты, задержанные однозначными или неоднозначными блокирующими условиями. Различие достигается путем снабжения каждого транзакта индикатором просмотра (ИП). Индикатор просмотра представляет собой переключатель с двумя состояниями; он может быть либо в состоянии «выключено», либо в состоянии «включено». Индикатор просмотра каждого транзакта первоначально выключен. Затем, когда транзакт впервые сталкивается с однозначным блокирующим условием, интерпретатор выполняет следующие действия. 1. Индикатор просмотра транзакта устанавливается в положение «включено». 2. Для транзакта отмечается: а) тип блокирующего условия, с которым он столкнулся; 371
б) конкретный прибор, многоканальное устройство или логический переключатель, вызвавший задержку. 3. Транзакт оставляется в этом состоянии в цепи текущих событий. (В литературе фирмы IBM про однозначно заблокированный транзакт говорится, что он помещается в цепь задержки, связанную с данным прибором, многоканальным устройством или логическим переключателем. В этом смысле цепь задержки — просто список транзактов. Вообще говоря, в модели может существовать столько цепей задержки, сколько существует приборов, многоканальных устройств и логических переключателей. Важно понять, что если транзакт попал в цепь задержки, то он также находится в цепи текущих событий. Транзакт, помещенный в цепь задержки, не выводится из цепи текущих событий.) В результате этих действий индикатор просмотра гранзакта, задержанного однозначным блокирующим условием, находится в состоянии «включено». Такой транзакт называют пассивным. Во время просмотра цепи текущих событий интерпретатор в первую очередь проверяет положение, в котором находится ИП транзакта. Если ИП включен, интерпретатор просто оставляет пассивпый транзакт в цепи текущих событий и немедленно переходит к следующему транзакту в этой цепи (если такой имеется). Проверка индикатора просмотра требует меньше времени, чем попытка продвинуть транзакт в блок. Таким образом, введение индикатора просмотра приводит к экономии времени в GPSS. Рассмотрим теперь, как пассивный транзакт вновь становится активным. Как только выполняется какой-либо из блоков, помещенных в третьей колонке табл. 7.1, интерпретатор производит следующие действия. 1. Индикатор просмотра каждого транзакта, заблокированного из-за условия, изменившегося в данный момент, устанавливается в положение «выключено». 2. Затем интерпретатор продвигает текущий активный транзакт дальше по модели до тех пор, пока это возможно. 3. Наконец, интерпретатор вновь начинает просмотр цепи текущих событий. Во время нового просмотра цепи текущих событий те транзакты, у которых только что выключился ИП, будут пытаться войти в блок, бывший для них недоступным. В зависимости от изменения блокирующего условия эта попытка может быть успешной либо для всех транзактов, либо для некоторых, либо ни для одного. Например, только один транзакт сможет войти в блок SEIZE, затем другие транзакты, ждущие обслуживания на данном приборе, снова встретят однозначное блокирующее условие, после чего их ИП вновь будут включены. Если несколько транзактов были задержаны блоком «GATE LR» и движение через этот блок не приводит к немедленному включению данного логического переключателя, все транзакты смогут успешно продвинуться дальше. И, наконец, нн одни транзакт не сможет продвинуться, если какой-либо транзакт с более высоким приоритетом, задержанный ранее каким-либо неоднозначным блокирующим условием, способен в настоящий момент продвинуться вперед таким образом, что будет восстановлено старое блокирующее условие. В любом случае, у транзактов, встретивших восстановленное однозначное блокирующее условие, включается ИП. В распечатке цепи текущих событий содержится информация о состоянии каждого транзакта, находящегося в цепи. На рис. 7.1 (см. рис. 2.30) показана цепь текущих событий, приведенная в конце моделирования примера 2А. Статус двух транзактов, помещенных в цепь, указывается в столбце с именем SI. Единица в столбце SI означает, что индикатор просмотра находится в состоянии «включено», т. е. соответствующий транзакт пассивен. Отметим, что транзакт 4 на рис. 7.1 пассивен (транзакт 4, см. пример 2А, должен войти в блок 3; блок 3 — это блок SEIZE; транзакт 4 — это клиент, ожидающий парикмахера). Пробел в столбце SI означает, что индикатор просмотра выключен, т. е. соответствующий транзакт активен. Заметим, что транзакт 3 на рис. 7.1 активен. (В описании примера 2А транзакт 3 — это клиент, который должен вот- вот выйти от парикмахера. Следующий блок, куда он должен войти, — блок RELEASE.) Столбец S1 присутствует также в распечатке цепи будущих событий. (Все названия столбцов одинаковы и для цепи текущих событий и для цепи будущих событий.) Однако индикатор просмотра на самом деле имеет смысл только для CURRENT EVENTS CHAIN TRANS BDT BLOCK PR SF NBA SET MARK—TIME PI 4 472 2 3 4 472 0 0 0 3 480 5 6 3 453 0 0 0 P2 РЗ Р4 SI TI DI CI MC PC PF О 0 0 0 О О 0 0 0 0 0 о о о о о о о I I Рис. 7.1. Повторение цепи текущих событий (см. рис. 2.30): SI —информация об иядикаторе просмотра 372
транзактов в цепи текущих событий. Индикатор просмотра для траизактов, находящихся в цепи будущих событий, всегда выключен. Ранее, в гл. 2, было отмечено, что при некоторых условиях иа этапе просмотра интерпретатор GPSS начинает просмотр цепи текущих событий заново. Здесь мы немного осветили природу этих условий. Рассмотрим теперь, каким образом интерпретатор на этапе просмотра определяет, нужно ли начинать просмотр заново. Это достигается путем использования индикатора, называемого флагом изменения состояния (ФИС). Флаг изменения состояния представляет собой переключатель с двумя позициями. Он находится либо в состоянии «включен», либо в состоянии «выключен». В отличие от индикатора просмотра, которым снабжен каждый транзакт, во всей модели существует лишь один флаг изменения состояния. В начале моделирования флаг изменения состояния установлен в положение «выключен». Интерпретатор переводит его в положение «включен», когда отрабатывает какой- либо блок, помещенный в третьем столбце табл. 7.1. Во время просмотра, когда данный транзакт продвинут иа столько, на сколько возможно, интерпретатор в качестве своего следующего шага проверяет положение ФИС. Если он включен, интерпретатор выключает его и начинает новый просмотр цепи текущих событий. Если же ФИС выключен, интерпретатор продолжает работать со следующим транз- актом в цепи текущих событий. Когда был введен блок PRIORITY, было сказано, что как только этот блок отрабатывает, просмотр цепи текущих событий начинается заново после того, как активный транзакт будет продвинут насколько возможно. Это означает, что отработка блока PRIORITY также влечет за собой установку флага изменения состояния в положение «включено». За исключением отработки блока PRIORITY и блоков, перечисленных в правом столбце табл. 7.1, никакие обстоятельства из описанных до сих пор ке могут вызвать установку флага изменения состояния в положение «включен». Все изложенное в этом параграфе относительно логики работы интерпретатора изобра- Выключить флаг изменения состояния: следующий транзакт находится В начале цепа, тонущих событий. Выключен ли. ^индикатор просмотри ьэтого транзакта ?' Да. Продвинуть транзакт на столько блоков, на сколько Возможно. (Включить индикатор просмотра smote транзакта в. случае, если Ветретится однозначное блокирующее условие; Включить ■ Of лаг изменения состояния модели В случае, если Выполнится один или Шее блоков, Вызвавших зту процедуру) ^ Включен ли *й ^ флаг изменения состояния? Нет Перейти К\ новому времени рис. 7.2. Алгоритм работы фазы просмотра и интерпретатора 0P5S 373
жено на рис. 7.2 в виде блок-схемы. Этот рисунок можно в некотором роде считать усовершенствованным вариантом блок-схемы, изображенной иа рис. 2.23, где впервые была введена логика интерпретатора на этапе просмотра. Рис. 7.2 следует изучать до тех пор, пока роли индикатора просмотра и флага изменения состояния не станут совершенно ясными. Следует помнить, что введение и использование этих индикаторов в GPSS преследуют цель максимального уменьшения времени моделирования. 7.3 Замечания об экономии процессорного времени Было бы естественно выяснить, какова экономия времени выполнения при использовании в GPSS индикатора просмотра. Соответствующую экономию можно получить, рассматривая программу самого интерпретатора. Интерпретатор GPSS/360 написан на языке ассемблера системы/360. Вопрос об экономии времени может быть сформулирован следующим образом: какова экономия машинных команд в системе/360, если транзакт задержан вследствие однозначного блокирующего условия, интерпретатор обрабатывает его во время просмотра цепи текущих событий и индикатор просмотра транзакта находится в положении «включен». Ответ на этот вопрос, как и следует ожидать, зависит от типа блока, вызвавшего задержку транзакта, способа представления величин в полях этого блока и других обстоятельств. Тем не менее из рассмотрения специального примера можно сделать некоторые выводы. Предположим, что транзакт только что вошел в модель из блока GENERATE, показанного на рис, 7.3, продвинулся в блок QUEUE и пытается войти в блок SEIZE. Пусть прибор 5 находится в состояния занятости. Тогда попытка двигаться дальше требует 73 команд. (Число различных выполняемых команд, приводимых в этом параграфе, относится к GPSS/360, версия 1, модификация 4. Возможно, более поздний вариант GPSS запрограммирован более эффективно.) Среди этих 73 команд 16 команд используются для включения ИП (SI) транзакта и выполнения других действий, связанных с индикатором просмотра. Когда интерпретатор впоследствии будет встречаться с данным однозначно заблокированным транзактом в цепи текущих событий, потребуется лишь девять команд для определения, что"его ИП (SI) включен. Таким образом, при наличии ИП цена того, что интерпретатор сталкивается с однозначно заблокированным транз- Рис. 7.3. Сегмент GPSS-модели, в]котором может возникнуть блокировка актом в цепи текущих событий;, составляет девять машинных команд. Теперь предположим, что в GPSS не используется идея ИП. В примере, приведенном на рис. 7.3, для транзакта, пытающегося впервые войти в блок SEIZE, потребуется всего 57 команд (57 равно 73 минус 16, требуемых для включения SI (ИП) я выполнения других действий, связанных с индикатором просмотра). Затем всякий раз, когда интерпретатор последовательно встречает транзакт в цепи текущих событий, выполняются 76 команд для того, чтобы определить, что транзакт задержан на входе в блок SEIZE *. Число машинных команд с использованием и без использования концепции индикатора просмотра приведено в табл. 7.2. Из таблицы видно, что в идее индикатора просмотра заложена значительная потенциальная возможность экономии времени исполнения. Хотя результаты, приведенные в табл. 7.2, относятся лишь к специальному * Когда иптрепретатор сталкивается с транзактом иа этапе просмотра, он должен выполнить следующие действия: 1) проверить индикатор просмотра {9 команд); 2) если индикатор просмотра выключен, активизировать транзактдля дальнейшего его продвижения в модели (19 команд); 3) далее, попытаться продвинуть транзакт в следующий для него блок и т. д. Заметим теперь, что на этапе 2 требуется излишек в 19 команд для активизации транзакта. Этот излишек не был включен в число команд дли первой попытки входа в блок SEIZE, так как он был учтен в момент приведения транзакта в движения блоком GENERATE. При последующих попытках войти в блок SEIZE излишек для активизации не требуется, если индикатор просмотра транзакта включен. Однако без учета наличия индикатора просмотра, излишек необходима учитывать всякий, раз, когда транзакт делает попытку войти в блок SEIZE, таким образом, число команд, равное 76, получается после добавления этик 19 команд к 57 командам, необходимым для первого входа в блок SEIZE. 374
Таблица 7.2. Общее число выполняемых команд при попытке травзакта войта в блок SEIZE (см. рис. 7.3) Попытки войте в блок SEIZE Первая Последующие С использованием понятая индикатора просмотра 73 9 Без исподьюваиия понятия индикатора просмотра 57 76 примеру, они достаточно типичны и позволяют составить общее впечатление. Продолжая рассмотрение вопроса о времени моделирования, обратимся к параграфу 5.21, где говорилось, что пользователь иногда может выбирать либо блок TEST, либо блок GATE для имитации определенных логических ситуаций. В параграфе 5.21 в качестве практической рекомендации было указано, что при наличии такой альтернативы следует отдать предпочтение блоку GATE перед блоком TEST. Теперь выбор GATE вместо TEST может быть проиллюстрирован количественно. Например, рассмотрим блок «GATE NU CPU» и его эквивалент «TEST E F$CPU,0». Во время просмотра ЦТС требуется выполнение только девяти команд для определения того, что у транзакта, ждущего входа в блок GATE, включен индикатор просмотра. Для транзакта, ждущего входа в блок «TEST E F$CPU,0», выполняется 129 команд (девять для определения того, что индикатор просмотра выключен, 19 для активизации транзакта и еще 101 непосредственно для попытки продвинуться). Таким образом, в данном примере блок TEST требует времени выполнения почти в 14 раз больше, чем блок GATE. Наконец, рассмотрим использование блоков TEST в режиме передачи в случае, когда вместо них можно использовать блоки GATE в режиме передачи. Конечно, при работе в режиме передачи невозможно возникновение задержки в самих блоках TEST и GATE; это означает, что индикатор просмотра непосредственно не используется. Однако даже при использовании режима передачи затрата времени для блока GATE меньше, чем для блока TEST. Например, при входе-транзакта в блок «TEST Е F$CPU,0,BYPAS» интерпретатор требует выполнения 125 или 130 команд, направляя транзакт соответственно в следующий или альтернативный блок. Когда транзакт входит в эквивалентный блок «GATE NU CPU.BYPAS», для перемещения транзакта в следующий блок требуется 93 команды, а для альтернативного Люка — 101 команда. Какой бы вариант (следующий или альтернативный) ни был избран, в этом примере время выполнения для блока GATE составляет всего лишь около 80% времени выполнения для блока TEST. 7.4. Цепи пользователя Если транзакты в модели заблокированы, то при помещении их в цепь текущих событий могут возникнуть два неудобства. 1. Время, требуемое интерпретатору для прогона модели, может стать слишком большим. Независимо от того, пассивны или активны заблокированные транзакты, каждый из них обрабатывается хотя бы один раз в каждый момент модельного времени. Действительно, при обработке пассивных транзактов время требуется только для проверки их индикаторов состояния. Однако при длительном просчете это время может стать значительным. Более того, если заблокированные транзакты активны, интерпретатор пытается продвинуть их в следующий блок всякий раз, встречая при просмотре, даже когда очевидно (пользователю, а не интерпретатору), что блокирующее условие еще не снято. Ясно, что если заблокированные транзакты можно было бы делать полностью пассивными, не помещая их в цепь текущих событий, была бы достигнута экономия времени моделирования. 2. Второе возможное неудобство касается дисциплины обслуживания. Порядок заблокированных транзактов в цепи текущих событий определяется только нх уровнем приоритета и хронологической последовательностью поступления в цепь. Вот почему в GPSS реализована только дисциплина обслуживания «первым пришел — первым обслужен в своем приоритетном классе». Если требуется организовать другую дисциплину обслуживания, необходимо выполнить следующие действия. а). Вместо того, чтобы оставлять ожидающий транзакт в цепи текущих событий, следует убрать его из этой цепи и поместить где-то в другом месте. б). Затем, когда наступает время какому-то из таких транзактов продвинуться дальше в модели (например, занять только что освободившийся прибор), транзакт необходимо взять из этого другого места и вновь поместить в цепь текущих событий. При этом он может быть выбран по какому-либо иному критерию, отличному от принципа «первым пришел — первым обслужен в своем приоритетном классе». Таким образом, если заблокированные транзакты могут быть временно выведены из цепи текущих событий, достигается по крайней мере двойная, выгода. Время, необходимое для прогона модели, уменьшается и может быть организована произвольная дисциплина обслуживания. 375'
В связи с зтнм в язык GPSS включен элемент, известный под названием цепь пользователя. Цепь пользователя есть то самое «другое место», где могут находиться транзакты, присутствующие в модели, но не находящиеся ни в цепи текущих, ни в цепи будущих событий. Подобно цепям текущих и будущих событий, цепь пользователя имеет начало и конец. Но иа этом сходство кончается. При наличии цепей текущих ТРАНЗАКТ ПРИХОДИТ, К СЕГМЕНТУ ЫОДЕЛИ.'ГДЕ ВОЗМОЖНА БЛОКИРОВКА и будущих событий интерпретатор GPSS авто» матически вводит и выводит транзакты из них, поддерживая для транзактов в этих цепях определенный ранее порядок расположения. При наличии цепи пользователя транзакты размещаются в ней только согласно логике, определенной пользователем. Кроме того, пользователь может различными способами определять положение, которое транзакт дол- В1 ДА ВЫЙТИ ИЗ ЦЕТШ ТЕКУЩИХ СОБЫТИЙ, ПОЙТИ В ЦЕПЬ ПОЛЬЗОВАТЕЛЯ (С) БЛОК СПОСОБНЫЙ ЗДПРЕГИГЬ ВИД ПУТЬ СЛЕДОВАНИЯ ТРАНЗАКТД ВЫВОДИМОГО ИЗ ЦЕПИ ШДЛ0 ПЕГГИ КОНЕЦ ЦЕЛИ (О) ТРАНЗАКТЫ В СООТВЕТСТВУЮЩЕЙ ЦЕЛИ ПОЛЬЗОВАТЕЛЯ БЛОКИ.ИМИТИРУЮЩИЕ ИСПОЛЬЗОВАНИЕ ОГРАНИЧЕННЫХ РЕСУРСОВ (EJ БЛВК. ВЫПОЛНЕНИЕ КОТОРОГО УСТРАНЯЕТ «ЛОКИРУЮЩЕЕ УСЛОВИЕ / 0 */ (?) ВЫВЕСТИ ТРАНЗАКТ ИЗ цепи пользам геля, НАПРАВИТЬ ЕГО ДЛЯ ИСПОЛЬЗОВАНИЯ РЕСУРСА ТРАИЗАКТ. ВЫЗВАВШИЙ ВЫВОД ИЗ ЦЕЛИ ПОЛЬЗОВАТЕЛЯ. ПРОДОЛЖАЕТ ДАЛЬНЕЙШИЙ ПУТЬ В МОДЕЛЬ Рис. 7.4. Схематическое описание логики применения цепи пользователя 376
жен занять в цепи пользователя. Точно так же транзакты выводятся из цепи пользователя и вновь приобретают активный статус только согласно логике, заданной пользователем. У пользователя также имеется несколько альтернатив в выборе одного или более транзактов, которые следует вывести из цепи пользователя и вновь поместить в цепь текущих событий. Рассмотрим, при каких условиях имеет смысл помещать траизакт в цепь пользователя. Предположим, что траизакт пробует пройти в следующий блок SEIZE или ENTER. Если он пытается непосредственно войти в блок и получает отказ, траизакт вынужден оставаться в цепи текущих событий до тех пор, пока продвижение не станет возможным. Во избежание лишних попыток входящий траизакт должен «смотреть вперед», чтобы увидеть, существует ли в настоящий момент блокирующее условие в блоке SEIZE или ENTER. Если такое условие имеется, траизакт должен сразу же попасть в цепь пользователя, даже не пытаясь войти в блок SEIZE или ENTER. Далее рассмотрим, при каких обстоятельствах траизакт может быть выведен из цепи пользователя и направлен в блок SEIZE или ENTER. Все транзакты, находящиеся в цепи пользователя, пассивны. Таким образом, сами они не могут проверить факт отмены блокирующего условия. Только посредством воздействия другого траизакта, не находящегося в цепи пользователя, траизакт может быть вновь переведен из цепи пользователя в цепь текущих событий. Лучше всего, если этим другим транзактом будет тот, который вызвал блокирующее условие, поскольку он определенно «знает» об отмене блокирующего условия. Для случая блокировки прибора или многоканального устройства это означает, что траиз- акту, только что вошедшему в соответствующий блок RELEASE или LEAVE, необходимо предпринять действия для того, чтобы перевести ждущий транзакт из цепи пользователя в цепь текущих событий, с тем чтобы он мог занять только что освободившийся прибор или войти в многоканальное устройство, в котором появилась свободная емкость. Логика применения цепи пользователя схематически изображена на рис. 7.4. Буквами А, В, С, D, Е и F на рисунке обозначены блоки. Блоки С, D и Е представляют собой последовательность, применяемую для моделирования ограниченных ресурсов (например, прибора или многоканального устройства), С, D и Е могут быть, например, комбинацией блоков SEIZE — ADVANCE — RELEASE или ENTER — ADVANCE — LEAVE. Блок А имитирует свойство «смотреть вперед», заложенное в логике цепи пользователя, а блок В указывает, что необходимо делать, когда при использовании свойства «смотреть вперед» обнаруживается существование блокирующего устройства. Блок F показывает, что активный транзакт, только что отменивший блокирующее условие, делает возможным вывод траизакта из цепи пользователя и перевод в цепь текущих событий, давая ему тем самым возможность использовать освободившиеся ресурсы. Для обеспечения логики цепи пользователя, изображенной на рис. 7.4, в GPSS применяют два дополнительных блока. Один из этих блоков соответствует «логике включения», показанной на рисунке блоками А и В. Другой представляет «логику вывода», изображенную блоком F. Использование этих двух блоков будет описано и проиллюстрировано в следующих параграфах. Цепи пользователя имеют много общего с другими элементами GPSS. В модели может быть несколько цепей пользователя. Каждая цепь может быть проименована либо численно, либо символически согласно общему правилу. Допустимое число различных цепей пользователя зависит от объема машинной памяти, отведенной интерпретатору. Подобно приборам, многоканальным устройствам, очередям, таблицам и блокам, с цепями пользователя связан набор стандартных числовых атрибутов. В конце моделирования стандартным образом распечатывается ряд статистик по цепям пользователя, схожих со статистиками по очередям. Подобно цепям текущих и будущих событий, непустые цепи пользователя распечатываются интерпретатором в конце моделирования только в том случае, когда в операнде D карты START указана единица. Для распечатки цепи пользователя можно также использовать блок PRINT. Для этого в операндах А и В блока проставляют соответственно наименьший и наибольший номер цепей пользователя, которые должны быть распечатаны. В операнде С указывают мнемоническое обозначение СНА (СЧА — стандартный числовой атрибут). Когда траизакт входит в блок «PRINT 2,5,CHA», распечатываются цепи пользователя со второй по пятую. 7.5. Вход и выход транзактов из цепи пользователя. Блоки LINK (ВВЕСТИ В ЦЕПЬ) и UNLINK (ВЫВЕСТИ ИЗ ЦЕПИ) Возможность поместить транзакт в цепь пользователя обеспечивается блоком LINK. Блок LINK может быть использован в двух режимах: условном н безусловном. При работе в условном режиме блок LINK играет роль блоков А и В на рис. 7.4; он осуществляет операцию 377
Рис. 7.5. Блок LINK с операндами А, В и С: Операнд А в С Значение Имя цепи пользователя (числовое или символическое) Определяет, в какое место цепи пользователя следует поместить транзакт; существуют три возможности Операнд В FIFO UFO PI Укрэанне Встать в конец цепи Встать в начало цепи Войти в цепь непосредственно перед транзак- той с большей величиной /-го параметра Необязателен; имя блока, куда переходят трааэакт в случае, если он не присоединяется к кепи пользователя Результат по умолчанию Ошибка Транзакт безусловным образом прнсоедн-|, нхется к цепи пользователя - «смотреть вперед», а затем имеет возможность либо отправить транзакт занять доступный прибор, либо, если нет доступного прибора, поместить транзакт в цепь пользователя. Напротив, безусловный режим блока LINK ue имеет возможности заглянуть вперед; таким образом, он выполняет роль только блока В на рис. 7.4. Транзакты, входящие в блок LINK, работающий в безусловном режиме, всегда помещаются в цепь пользователя. Вначале рассмотрим использование блока LINK в безусловном режиме, поскольку этот случаи легче для понимания. На рис. 7.5 подробно рассмотрены особенности, связанные с блоком LINK. Если в блоке LINK нет операнда С, блок используется в режиме безусловного присоединения транзакта к цепи. (Фактически, если операнд С в блоке LINK иа рис. 7.5 отсутствует, стрелка, выходящая из блока LINK, также должна отсутствовать.) Когда транзакт входит в такой блок LINK, он помещается в цепь пользователя, имя которой указано в операнде А блока. Место, которое входящий транзакт занимает в цепи пользователя, задается операндом В. Четырехбуквенные обозначения в операнде FIFO (First-In, Firat-Out, первым пришел — первым обслужен) и LIFO (Last-In, First-Out, последним пришел — первым обслужен) указывают соответ- помещен параметр Р/, где / — целое число из интервала от 1 до 100, транзакты помещаются в цепь пользователя в порядке возрастания величины Р/ *. Каждый входящий транзакт помещается вперед уже стоящих в цепи транзактов с большей величиной Р/, ио позади транзактов с меньшей величиной Р/. При совпадении входящий транзакт помещается после всех других транзактов, стоящих в цепи и имеющих ту же величину Р/. Например, предположим, что у транзактов А, В и С величины параметра РЗ равны соответственно 4, 21 и 32, и они входят в блок «LINK HOLD, РЗ». Тогда после вхождения, транзакт А будет находиться в начале цепи пользователя с именем HOLD, за ним будет стоять транзакт B, а транзакт С будет находиться в конце цепи. Если теперь в этот блок LINK войдет транзакт D с величиной РЗ, равной 21, он будет помещен в цепь пользователя между транзитами В и С. Присоединение к цепи будет условным, если в блоке LINK используется операнд С. Транзакт, входящий в блок LINK, работающий в условном режиме, будет либо присоединяться к цепи пользователя, либо направляться в блок C, т. е. в блок, чье имя определено в операнде С. На практике очень часто бывает так, что блоком С является блок, следующий в модели за блоком LINK- Но даже в этом случае пользователь, работающий с блоком LINK в условном режиме, дол-жен использовать операнд С и присваивать соответствующее имя следующему блоку. Конечно, совершенно необязательно, чтобы блок С непосредственно следовал за блоком LINK. Вот почему на рис. 7.5 показана горизонтальная стрелка, выходящая из блока LINK, а не вертикальная. Пока что ничего не говорилось о том, как определить, будет ли транзакт, вошедший в блок LINK, работающий в условном режиме, присоединен к соответствующей цепи пользователя или пойдет в блок С. Для того чтобы сделать выбор между этими двумя возможностями, интерпретатор GPSS определяет положение так называемого индикатора связи цепи пользователя. Каждая цепь пользователя имеет свой индикатор связи. Индикатор либо «включен». * Здесь требуется некоторая осторожность. В GPSS/360, когда в операнде В блока LINK стоит Р/, Р указывает интерпретатору, что критерием помещения в цепь является «порядок согласно величине параметра*. Номер параметра указывается непосредственно. Если лаипый блок LINK имеет в операнде В Р10, то критерием расположения в цепи будет «порядок согласно величине параметра 10», а не «согласно величине параметра, чей номер указан в параметре 10». В GPSS V это сделано иначе. В GPSS V за исключением случаев, когда в операнде В стоит FTPO или I 1РП вйляийня. гтпянтйй и опйпйнп»
либо «выключен». Если при входе транзакта в блок LINK, работающий в условном режиме, индикатор связи выключен, интерпретатор делает две операции. 1. Включает индикатор связи. 2. Не присоединяет транзакт к цепи пользователя, а направляет его в блок С. Если при входе требования в блок LINK с условным режимом работы индикатор связи включен, интерпретатор помещает.этот транзакт в цепь пользователя и оставляет индикатор связи включенным. Как указывалось ранее, блок LINK с безусловным режимом соответствует блоку В на рис. 7.4. Присоединение к цепи в таком блоке не зависит от положения упомянутого индикатора связи цепи пользователя. Напротив, блок LINK с условным режимом берет на себя роль блоков А и В на рис. 7.4. Указанный индикатор связи цепи пользователя играет роль впередсмотрящего и имеет очень много общего со светофором. Когда индикатор связи выключен, горит зеленый свет. Если транзакт входит в блок LINK с условным режимом работы и обнаруживает, что горит зеленый свет, это понимается как сигнал об отсутствии блокировки. Транзакт продвигается в модели дальше, но предварительно переключает свет на красный, включая индикатор связи, как сигнал для транзактов, поступающих в блок LINK позднее. Наоборот, если транзакт поступает в блок LINK и застает красный свет светофора (включенный индикатор связи), то это интерпретируется как наличие блокировки, и транзакт поступает в цепь пользователя вместо дальнейшего продвижения в модели. Роль индикатора связи как впередсмотрящего ие может быть полностью раскрыта до тех пор, пока не описан блок, дополнительный к блоку LINK, и не показано, как он влияет на положение индикатора связи. Однако уже сейчас можно отметить, что использование индикатора связи в качестве впередсмотрящего довольно ограничено. Действительно, он по-настоящему полезен как средство для евзгляда вперед» только тогда, когда ограниченный ресурс, который может вызвать блокировку, моделируется прибором. В большинстве случаев пользователь сам обеспечивает логику «взгляда вперед» с помощью блоков TEST или GATE в точке А па рис. 7.4 и направляет транзакт в блок LINK с безусловным режимом, когда уже выяснено, что имеется блокирующее условие. Блоком, дополнительным х LINK, является UNLINK. На рис. 7.4 в точке F используется енио блок UNLINK- Целью блока UNLINK, твенно, является вывод одного или не-' жольких транзактов из цепи пользователя и юцение их обратно в цепь текущих событий, так чтобы интерпретатор смог вновь последовательно продвигать их дальше. Путем использования соответствующих полей блока UNLINK пользователь может определить, какой транзакт (или транзакты) из цепи пользователя подлежит выводу. Здесь имеются две возможности. 1. Транзакты могут быть взяты из начала или из конца цепи пользователя. В этом случае транзакты подготовляются к выводу только в зависимости от их положения в цепи пользователя. 2. Транзакты могут быть выведены из любого места цепи пользователя, в зависимости от того, удовлетворяют ли они условиям, заданным пользователем. В этом параграфе будут описаны лишь возможности, указанные в п. 1. Возможности, указанные в п. 2, будут рассмотрены в параграфе 7.12. На рис. 7.6 показан блок UNLINK со своими операндами. При рассмотрении этого блока важно различать выводящий транзакт (т. е. транзакт, входящий в блок UNLINK и тем самым инициирующий процесс вывода) и выводимые транзакты (т. е. такие, которые подлежат выводу). Когда транзакт входит в блок UNLINK, интерпретатор выводит из соответствующей цепн пользователя столько Рис. 7.6. Блок UNLINK с Операнд Л В С D И Е Р операндами А, В, С, D, Е и F: Значена» Имя цепи пользователя (числовое или символическое) Имя блока, в который переходит выведенный из цепн транзакт (ялн транзакты) Чясло выводи пых транзактов (счетчяк вывода); может быть константой, стандартным числовым атрибутом нлн символом ALL Определяет, с какого края цепн пользователи берутся транзакты, по следующей схеме: Операнд Не используется БАСК Операнд Е Не используется То же Указатель края Начало целя Конец цепи Необязателен; имя блока, куда переходит транэакт-ныяциатор вывода, если нэ цели ке выводится ня один транзакт Результат по умолчанию Ошибка » Транзакты выводятся с начала цепн пользователя Траязвкт-ннкциатор вывода безусловным образом переходят в следующий блок 379
траизактов, сколько указано в операнде С (в предположении, что такое число траизактов имеется в цепи пользователя и все они удовлетворяют условию вывода). Величина в операнде С может быть константой, стандартным числовым атрибутом или символом ALL (ВСЕ). Ее называют «счетчиком вывода». Если в операнде С стоит ALL, то все транзакты, принадлежащие соответствующей цепи пользователя, будут выведены. Операнд В блока UNLINK указывает имя блока, в который должны быть направлены выведенные транзакты. Операнды D и Е используются для того, чтобы определить, с какого края цепи пользователя следует брать выводимые транзакты. Если оба операнда пусты, транзакты выбираются из начала цепи пользователя. Если в операпде D стоит BACK (СЗАДИ), а операнд Е ие использовал, транзакты выводятся из конца цепи пользователя. Операнд F блока UNLINK можно не использовать. Если он пуст, то транзакт, инициирующий вывод из цепи, всегда переходит из блока UNLINK в следующий блок. Если же операнд F используется, то в нем ставится имя блока, куда пойдет транзакт-инициатор вывода из цепи, если при попытке вывести транзакты из цепи пользователя вывода не произошло 1. Теперь рассмотрим воздействие блока UNLINK на упоминавшийся ранее индикатор связи цепи пользователя. Если цепь пользователя пуста в момент входа транзакта в блок UNLINK, интерпретатор выключает индикатор связи цепи пользователя. Если использовать аналогию со светофором, то это эквивалентно переключению красного света на зеленый. Для транзакта-инициатора вывода эта операция вполне разумна, поскольку он снял блокировку в данной точке модели и тут же обнаружил (поскольку цепь пользователя пуста), что ни один транзакт не ждет отмены блокировки. Затем, если следующий транзакт войдет в соответствующий блок LINK, зеленый светофор послужит ему сигналом того, что нет необходимости присоединяться к цепи пользователя. Вместо этого транзакт переключит свет на красный и без задержки продвинется вперед. Итак, управление состоянием индикатора связи цепи пользователя производится следующим образом. 1 Для двух комбинаций операндов D—Е блока UNLINK , изображенных на рнс; 7.6, условие «ни один транзакт не выведен» может возникнуть тогда и только тогда, когда соответствующая цепь пользователя является пустой непосредственно перед моментом попытки вывода. Для другой комбинации операндов D—Е блока UNLINK, которая будет рассмотрена в параграфе 7.12, событие «ни один транзакт не выведет может произойти даже при наличии траизактов в цепи пользователя в момент попытки вывода. 1. Индикатор связи может быть включен (ио не может быть выключен) в блоке LINK. 2. Индикатор связи может быть выключен (ио не может быть включен) в блоке UNLINK. Теперь рассмотрим работу блока UNLINK с точки зрения цепей. Когда транзакт входит в блок UNLINK, интерпретатор один за другим выводит транзакты нз соответствующей цепи пользователя, помещая каждый транзакт последним по порядку в своем классе приоритета в цепь текущих событий. Интерпретатор выбирает транзакты с начала цепи пользователя за исключением случая, когда в операндах D — Е стоит комбинация «BACK, пусто», при этом выбор происходит с конца цепи пользователя. Выполнение блока UNLINK влечет за собой перевод флага изменения состояния в положение «включено», если хотя бы один транзакт выведен из цепи пользователя. После завершения операции блоком UNLINK транзакт, производивший вывод, продолжает свое дальнейшее движение в модели. Это означает, что трапзакты, выведенные из цепи (если таковые имеются), пока еще не обрабатываются. Когда транзакт, производивший вывод, наконец остановится в своем движении, интерпретатор проверит флаг изменения состояния (см. рис. 7.2) и, если он включен, переведет его в состояние «выключено» и вновь начнет просматривать цепь текущих событий. При этом достигается гарантия того, что все транзакты, выведенные из цепи пользователя, будут просмотрены в данный момент модельного времени независимо от уровня их приоритета. Наконец, пеобходимо тщательно проследить связь между цепями пользователя и счетчиками блоков. Если транзакт находится в цепи пользователя, он не помещен ни в один блок модели. В частности, он не находится в блоке LINKi посредством которого он был направлен в цепь пользователя. Таким образом, транзакты, находящиеся в цепи пользователя, не вносят никакого вклада в счетчики текущего содержимого блоков. Если транзакт только что выведен из цепи пользователя и помещен в цепь текущих событий, может создаться впечатление, что он также еще не принадлежит никакому блоку. Можно сказать, что транзакт, только что выведенный из цепи пользователя, имеет много общего с транзактами, находящимися на пути в модель из блока GENERATE, откуда они еще не вышли. Однако, с точки зрения счетчика текущего содержимого, интерпретатор рассматривает выведенные транзакты так, как будто они находятся в блоке UNLINK, выполнение которого привело к их перемещению в цепь текущих событий из цепи пользователя. При анализе счетчиков блоков это обстоятельство пеобходимо учитывать. Тем самым также объясняется, почему на рис. 7.6 у стрелки, ведущей
из блока UNLINK, показано значение операнда В этого блока (т. е. имя блока, куда направляются выведенные транзакты). Это сделано для того, чтобы графически показать, что транзакты, выходя из цепи пользователя, проходят через блок UNLINK. Другие же две стрелки, выходящие из блока UNLINK, относятся к транзакту — инициатору вывода; одна из них ведет в следующий по порядку блок, вторая — в некоторый другой блок, который указывается в случае использования операнда F. 7.6. Применение цепи пользователя с приборами и многоканальными устройствами В этом параграфе основные способы применения цепей пользователя совместно с приборами и многоканальными устройствами проиллюстрированы несколькими примерами. В первом примере показано использование цепи вместе с одним прибором. В этом случае индикатор связи цепи пользователя эквивалентен логике просмотра вперед. Затем показано использование цепи совместно с многоканальным устройством. Такое использование требует, чтобы логика просмотра вперед была обеспечена пользователем, а это, в свою очередь, требует определенной осторожности из-за возможного возникновения проблемы одновременности событий. В параграфах 7.8 и 7.12 будут дамы дополнительные примеры работы с цепями пользователя. 7.6.1. Цепь пользователя и прибор На рис. 7.7 повторена блок-схема системы, о промоделированной в примере 2А (парикмахер- ""* екая с одним креслом), с введением в нее цепи пользователя. Эта система является однока- нальной системой массового обслуживания с одним обслужиаающим прибором и очередью. Когда посетитель приходит в парикмахерскую, он входит в блок QUEUE, внося тем самым изменения в статистику среднего времени пребывания в очереди. Затем он попадает в блок LINK, работающий в условном режиме. Если индикатор связи включен (красный свет), транз- акт-посетнтель ставится в конец (FIFO) цепи пользователя с именем HOLD, а индикатор связи остается включенным. Если же индикатор связи был выключен (зеленый свет), он переводится в положение «включено», а транз- акт-посетитель продвигается в блок с именем GETEM, т. е. входит в блок SEIZE. Затем следует сочетание блоков DEPART — ADVANCE — RELEASE. После выхода нз Яблока RELEASE транзакт-посетитель пытает- х ш {GETEMI } гл HOLD 1 и SEIZE 1' DEPART V ADVANCE 1,6.4 1 RELEASE t UNLINK 1 /joe\ «m) w ПРИБЫТИЕ ПОСЕТИТЕЛЕЙ встать а ОЧЕРЕДЬ если возможно. тут же попасть на обслуживание; в противном случае встать в конец цепи пользователя ЗАНЯТЬ ПАРИКМАХЕРА. ВЫЙТИ ИЗ ОЧЕРЕДИ. обслуживание; у парикмахера. ЗАКОНЧИТЬ ОБСЛУЖИВАНИЕ. У ПАРИКМАХЕРА. ПОСЛАТЬ СЛЕДУЮЩЕГО ОЖИДАЮЩЕГО ПОСЕТИТЕЛЯ (ЕСЛИ ТАКОЙ ИМЕЕТСЯ) НА0БСЛУЖН8АНИЕ уДхн иа шикмахйшй В МОМЕНТ ВРЕМЕНИ, РАВНЫЙ 480, ПОСТУПАЕТ ТРАНЗАКТ ТАЙМЕР ЗАКОНЧИТЬ ПРОГОН Рис 7.7. Первый пример применения цепи пользователя 381
ся вывести один транзакт из начала цепи пользователя HOLD (оба операнда D и Е блока UNLINK пусты) и направить его в блок с именем GETEM для занятия освободившегося прибора. Если вывода из цепи пользователя не произошло вследствие того, что в ней не было траизактов, индикатор связи переключается из положения «включено» в положение «выключено» (зеленый свет), и следующий поступивший транзакт, вместо того чтобы направиться в цепь пользователя, сможет непосредственно попасть в блок SEIZE. Заметим, что если при входе в блок LINK горит красный свет, приходящие транзакты помещаются в конец цепи пользователя (идут в конец очереди). Затем, при воздействии транзакта-инициатора, вошедшего в блок UNLINK, они выйодятся с начала цепи пользователя. Тем самым в результате обеспечивается дисциплина очереди «первым пришел — первым обслужен» *. Этапы работы индикатора связи в модели на рис. 7.7 показывают, каким образом он выступает в роли впередсмотрящего в случае совместного использования с " прибором. В начале он выключен. Первый транзакт- посетитель включает его, затем занимает прибор. Пока прибор используется этим первым посетителем, индикатор связи остается включенным. Предположим, что второй транзакт- посетитель приходит тогда, когда прибор еще не освободился. Обнаружив, что прибор занят, второй посетитель направляется в цепь пользователя. Первый посетитель, освободившись, выводит второго из цепи пользователя и направляет его к парикмахеру. В этом случае, поскольку цепь пользователя, к которой обра- 1 Иногда возникает ошибочное мнение: если в операнде В блока LINK находится FIFO (это означает, что входящие транзакты становятся в конец цепи пользователя), то в соответствующем блоке UNLINK должно быть определено, что транзакты выводятся обязательно с начала цепи пользователя; или, если в операнде В блока LINK стоит LIFO (т. е. входящие транзакты помещаются в начало цепи пользователя), соответствующий блок UNLINK обязан задавать вывод траизактов с конца нужной цепи. Это неверно. Блоии LINK н UNLINK в значительной мере независимы друг от друга. Ответственность за то, чтобы критерии ввода и вывода из цели пользователя были непротиворечивыми и их реализация в целом имела смысл, целиком ложится на пользователя. Например, в операнде В блока LINK может быть FIFO, а в соответствующем блоке UNLINK можно задать вывод траизактов с конца нужной цепи. В результате дисциплина очереди будет «последним пришел — первым обслужен». Это в точности та же дисциплина, которая возникает в случае использовании в операнде В блока LINK символа LIFO и вывода траизактов из начала соответствующей цепи пользователя. Таким образом, в GPSS существует два различных пути обеспечения дисциплины очереди «последним пришел — первым обслужен». (В улрвжнении 2 параграфа 7.1-1 предложен другой путь для обеспечения дисциплины очереди «первым прншел — первым обслужев», показанной на рис. 7.7). щался блок UNLINK, была непуста, индикаЛ связи остается включенным. Фактичесп ои включен всегда, когда какой-либо поем тель сиднт в кресле у парикмахера, если эт посетитель 1) застал индикатор выключи ным и непосредственно занял прибор или 2) а стал индикатор включенным и какое-то вре* ждал в цепи пользователя перед тем, как el направили на обслуживание. Единственю способ выключить индикатор связи — это а служиться у парикмахера в момент, кой нет посетителей, ожидающих обслуживали (цепь пользователя пуста). В этом случа] выключение индикатора связи гарантирует слй дующему прибывшему посетителю немедлея ное обслуживание у парикмахера. j Для модели на рис. 7.7 был выполнен аре гон, моделировавший один день. Для тог чтобы получить распечатку цепей в кош процесса моделирования, использовали он ранд D карты START. На рис. 7.8 показе! часть этой распечатки. В цени текущих собыи (рис. 7.8, а) находится только один транзакт! он должен освободить прибор. Два транзакт в цепи будущих событий (рис. 7.8, б) должй впоследствии выйти из двух блохе GENERATE, имеющихся в модели. Цепь пользователя (рис. 7.8, в) назван «цепью пользователя 1». Символическое щ цепн HOLD было заменено интерпретатор! на число I, и в распечатке для обозначения на был использован этот числовой эквивалея В цепи пользователя находится один транзакт Заметим, что названия столбцов цепи польз вателя идентичны именам столбцов цепей тек щих и будущих событий. Транзакт в цепи пользователя — это след ющий посетитель, ожидающий парикмахер Мы знаем это из условия задачи, но интерпр татор GPSS этого не знает. Фактически, й терпретатор ие знает «предназначения» трап акта в цепи пользователя до тех пор, пока' не будет выведен из цепи. Только тогда инте претатор использует значение операнда В бло UNLINK и определит, в какой блок след$ направить выведенный транзакт. В связи с эт обратим внимание на то, что столбец N1 (NEXT BLOCK ATTEMPTED — следующ блок) па рис. 7.8, в пуст. Заметим, что стол<] BLOCK тоже пуст. Столбец BLOCK указыва ■ в каком блоке в данный момент находится три акт. Но, как говорилось ранее, когда транЦ помещен в цепь пользователя, он не находи ни в каком блоке модели. 1 В столбце BDT (BLOCK DEPARTtff ТЬМЕ — время выхода из блока) на рис. 7л стоит величина 472. Вспомним, что время | хода из блока для транзакта является время начала его дальнейшего продвижения, т.| регламентированным временем, когда
CURRENT EVENTS CHAIN TRAMS BDT BLOCK 3 460 6 PR SF NBA 7 SET 3 ИАЯК-Т1МЕ 453 P4 SI II 01 Ci NC PC PF о г о о FUTURE EVENTS CHAJN TRANS BDT BLOCK 1 4в9 960 PR SF NBA 1 10 SET 1 MARK-TIME -27 -1 О 0 0 о о о Р« St II Di CI MC PC PP О 4 О О О 4 О О USER CHAIW TRANS 4 BDT 4 72 BLOCK PR SF SET 4 MARK-TIME 472 Pi 0 0 0 P2 0 0 o- P3 0 0 0 PA 0 . 0 0 SI 7 1 DI CI MC PC PF •) USER CHAIN HOLD TOTAL ENTRIES 18 AVERAGE TIME/TRANS 4. 27"» CURRENT CONTENTS I AVERAGE CONTENTS .160 HA XI MUM CONTENTS 1 QUEUE *ioeo «AVERAGE TIME/TRANS = AVERAGE TIME/TRANS EXCLUDING ZERO ENTRIES MAXIMUM CONTENTS 1 AVERAGE CONTENTS • 160 TOTAL ENTRIES 27 ZERO ENTRIES 12 PERCENT ZEROS 44.4 AVERAGE TIME/TRANS 2.851 «AVERAGE 71ME/TRANS 5.133 TABLE NUMBER CURRENT CONTENTS 1 Д) Рис. 7.8. Часть распечатки результатов, полученных в конце просчета модели, показанной на рис. 7.7; а — цепь текущих событий; 6 — цепь будущих событий; в — цепь пользователя; г — статистика ueng пользователя; д — статистика очереди
должен попробовать перейти к следующему блоку. Поскольку для транзакта, находящегося в цепи'пользователя, будущее продвижение не является независимым, фиксация ВОТ бессмысленна. Величину BDT, показанную в распечатке цепи пользователя, можно интерпретировать как момент времени, в который транзакт был направлен в цепь пользователя. Вспомним, что в гл. 2, после того, как были введены цепи текущих и будущих событий, был вторично выполнен прогон модели, разобранной в примере 2А, и в конце прогона были выведены все цепи. Получившиеся цепи текущих и будущих событий были показаны соответственно на рис. 2.30 и 2.31. Теперь можно сравнить ту распечатку цепей с цепями, показанными ва рис. 7.8, а—в. Цепи будущих событий, естественно, совпадают. Цепи текущих событий, как и следовало ожидать, различаются. На рис. 2.30 транзакт 4 находится в цепи текущих событий, и иа него действует однозначное блокирующее условие. (В столбце индикатора просмотра на рис. 2.30 для четвертого трапзакта стоит значение, равное единице, что указывает на пассивность транзакта). На рис. 7.8 транзакт 4 попадает в цель пользователя, а не в цепь текущих событий. Это связано с тем, что когда «взгляд вперед» обнаружил наличие блокировки, транзакт был выведен из цепи текущих событий. Статистические данные для цени пользователя HOLD, приводимые в стандартной распечатке, показаны на рис. 7.8, г. На рис. 7.8, д показан набор статистик для очереди JOEQ. При сравнении этих двух наборов можно убедиться в их схожести. В статистических данных об очереди содержится больше информации, чем в данных о цепи пользователя, так, в данных об очереди указывается число нулевых входов (ZERO ENTRIES — нулевые входы), процентное отношение нулевых входов к общему числу входов (PERCENT ZEROS — процент нулевых) и среднее время пребывания в очереди с учетом нулевых входов (AVERAGE TIME/TRANS — среднее время/транз.). На первый взгляд может показаться, что нулевых входов в цепь пользователя не бывает, так как если блокировка отсутствует, транз- акты минуют цепь и движутся дальше. Однако в цепи пользователя допускаются нулевые входы. Это значит, что для некоторых транзактов время пребывания в цепи пользователя будет нулевым. Например, в модели, представленной на рис. 7.7, это может произойти при выполнении следующих условий. 1. Прибор занят. 2. Ни один транзакт не ждет занятия прибора. 3. Существует временной узел между событиями окончания обслуживания и прибытия следующего посетителя. 4. Последовательность событий такова,. ч окончание обслуживания следует за приб« тием, *--» При просмотре цепи текущих событий np'i бывающий траизакт-посетитель просматр] вается первым, в соответствии с п. 4. Интерпр татор| убедившись в том, что индикатор свяэ цепи пользователя включен, помещает эта транзакт в цепь пользователя. Затем просматр! вается транзакт, освобождающий прибор. Поел прохода через блок RELEASE, ои выводи только что пришедший транзакт из цепи полы зователя и направляет его на занятие прибора] Таким образом хотя прибывший транзакт и бьиг присоединен к цепи пользователя, время его! пребывания в цепи равно нулю. Тем не мене$ ои вносит вклад в статистику общего числа! входов • (ТОТ AL ENTRIES) в цепь пользова-j теля. С точки же зрения очереди он bhochij вклад в статистику числа нулевых вхож* дений. Только что описанное явление объясняет,] почему на рис. 7.8, г число входов в цепь поль-i зователя равно 18, а число ненулевых входов! в очередь на рис. 7.8, д равно только 15. ОчЫ видно, три входа в цепь пользователя имели нулевое время пребывания. Заметим, что эта особенность цепи пользователя несколько занижает статистическую величину AVERAGE TIME/TRANS (среднее время/транз) дл! цепи. Изучая модель на рис. 7.7, лдо ко убедиться, что характеристика очереди ^AVERAGE TIME/TRANS не совпа- дает с характеристикой цепи AVERAGE' TIME/TRANS. $AVE RAGE TIME/TRANS указывает время ожидания только для тех транзактов, которые должны были ждать; на« против, величина AVERAGE TIME/TRANS для цепи пользователя, вообще говоря, может включать транзакты, которые иа самом деле не ждали. Три входа в цепь пользователя с ну-1 левым временем пребывания объясняют, пек чему AVERAGE TIME/TRANS составляет; только 4,277 временных единиц (рис. 7.8, г); тогда как $AVERAGE TIME/TRANS (рис. 7.8, д) равно 5,1333 временным единицам. Таким образом, статистики цепи пользовф теля и статистики очереди хотя и схожи, но отличаются друг от друга главным образоц следующим. 1 L. Для очередей предусмотрен сбор информ* ции о нулевых входах. 2. Работа со статистической величиной для цепи пользователя AVERAGE TIME/TRANS требует осторожности. я 3. Распределение времени пребывания вочм реди легко получить с помощью карти QTABLE; для цепи пользователя аналогичной карты не существует. 384
7.6.2. Индикатор связи Рассмотрим использование пары блоков LINK — UNLINK, находящейся в любой частя блок-схемы GPSS. На рис. 7.9 показана модель, где конкретные блоки сегмента блок-схемы не показаны, а изображены только поля блоков LINK — UNLINK. Предположим, что транз- актам разрешен вход в этот сегмент только после прохода через блок LINK, работающий в условном режиме, и что они могут покинуть сегмент, только пройдя через блок UNLINK. Таким образом, в очередном сегменте блок-схемы никогда не будет одновременно находиться более одного транзакта. Это утверждение является прямым следствием свойств индикатора связи цепи пользователя. Это можно показать, например, так. В начале моделирования очерченный сегмент пуст, а индикатор связи выключен. При поступлении первого транзакта в блок LINK, он немедленно продвигается в блок с именем MOVIN и входит в этот сегмент. (Предполагается, что имя MOVIN относится к первому блоку очерченного сегмента.) Пока первый транзакт находится в этом сегменте, все другие транзакты, поступающие в блок LINK, помещаются в цепь пользователя. После того, как первый транзакт покинет сегмент, пройдя через блок UNLINK, он выведет ровно один транзакт нз цепи пользователя и направит его в сегмент. Таким образом, транзакт, ушедший из этого сегмента блок-схемы, замещается там другим. ЕДИНСТВЕННАЯ ТОЧКА ВХОДА 8 СЕГМЕНТ (ПО ПРЕДПОЛОЖЕНИЮ) ЕДИНСТВЕННАЯ ТОЧКА ВЫХОДА ИЗ СЕГМЕНТА (ПО ПРЕДПОЛОЖЕНИЮ) Рис. 7.9. Применевне цепи пользователя с произвольным сегментом блок-схемы Такой механизм замещения действует до тех пор, пока в цепи пользователя при выполнении блока UNLINK есть хотя бы один транзакт. Если при выполнении блока UNLINK цепь пользователя будет пустой, индикатор связи будет выключен. Это означает, что когда другой транзакт поступит в блок LINK, он немедленно продвигается в сегмент, переключив индикатор связи вновь в положение «включен», и т. д. Все сказанное на самом деле повторяет то, что мы говорили об индикаторе связи в параграфе 7.5. Тем не менее, при рассмотрении примера, приведенного на рис. 7.9, эти рассуждения приводят к двум следующим выводам. Вывод 1. При применении цепи пользователя совместно с прибором нет необходимости вводить пару блоков SEIZE — RELEASE, если пользователю не требуется набор статистик, связанных с прибором как с объектом. Использование блоков SEIZE — RELEASE имеет две особенности. 1. Гарантируется, что невозможно одновременное нахождение более одного трапзакта между этой парой блоков (конечно, в предположении, что в модели не используют другие способы перемещения транзакта в промежуток между рассматриваемой парой). 2. Их наличие дает указание интерпретатору GPSS на сбор определенных статистических данных, связанных с использованием прибора. Но свойство 1 в точности совпадает со свойством индикатора связи при использовании блока LINK B условном режиме. Таким образом, если не требуется свойство 2, пара SEIZE— RELEASE может быть опущена (рис. 7.10). Предполагая, что набор статистик для цепи пользователя является достаточным для исследования поведения времени ожидания обслуживания, пара блоков QUEUE — DEPART также может быть опущена. Последовательность блоков LINK — ADVANCE — UNLINK, приведенная на рис. 7.10, на первый взгляд может показаться несколько странной, но она тем не менее полностью моделирует один прибор при сформулированных здесь условиях. Вывод 2. Применение индикатора связи цепи пользователя для обеспечения логики просмотра вперед чрезвычайно ограничено. Действительно, поскольку в результате его использования в сегменте модели между блоками LINK и UNLINK разрешено находиться только одному транэакту, он представляет ценность лишь тогда, когда ограниченным ресурсом, моделируемым между блоками LINK " UNLINK, является прибор (или любой ограниченный ресурс с единичной емкостью). Предположим, например, что ограниченный ресурс моделируется многоканальным устройством с емкостью, равной двум. Это означает, что между парой блоков LINK — UNLINK разрешено 25 Т. Дж. Шрайбер 385
IGETEM) | w ADVANCE 16.4 HOLD 1 -UNLINK rERMlNATE Рис. 7.10. Сегмент модели, имитирующий один обслуживающий прибор без использования пары блоков SEIZE— RELEASE находиться одновременно двум транзактам. Поскольку это свойство ие может быть обеспечено использованием индикатора связи, пользователь должен обеспечить собственную логику просмотра вперед, чтобы определить, может ли поступившие транзакт быть продвинут в данный сегмент модели или его следует поместить в цепь пользователя. Ниже разобрано более подробно применение цепи пользователя совместно с многоканальным устройством. 7.6.3. Цепь пользователя н многоканальное устройство Предположим, что в парикмахерской (см. рис. 7.7) время между поступлением посетителей сократилось до 6 ct 2 мин и для компенсации этого более напряженного режима наняты еще два парикмахера. На рис. 7.11 показана блок-схема модели парикмахерской при этих условиях. Обсуждение модели будет разбито на две части. Вначале рассмотрим комбинацию блоков GATE — ENTER — LINK, а затем объясним, почему между блоками GENERATE и GATE помещен блок PRIORITY. Как было указано выше, в выводе 2, при совместном использовании многоканального устройства и цепи пользователя разработчик должен обеспечить собственную логику просмотра вперед. На рис. 7.11 требуемый просмотр вперед обеспечивается блоком GATE. При входе транзакта-посетителя в блок «GATE SNF 1» происходит проверка, свободен ли в данный момент хотя бы один парикмахер, т. е. определяется, не заполнено ли многоканальное устройство, имитирующее трех парикмахеров. Если условие «многоканальное устройство не заполнено (SNF)» справедливо, транзакт- посетитель проходит через блок GATE к следующему блоку и может занять кресло у парикмахера. Если же это условие не выполнено, транзакт-посетнтель не идет в следующий блок, а попадает в блок LINK. В этом блоке отсутствует операнд С, т. е. транзакты, вошедшие в него, безусловно помещаются в цепь пользователя. Однако транзакты могут попасть в блок LINK только тогда, когда многоканальное устройство заполнено целиком. Таким образом, при использовании блока GATE «безусловное» помещение транзактов в цепь является все же условным. Конечно, даже при применении блока LINK в безусловном режиме у соответствующей цепи пользователя все равно есть индикатор связи. Если он не был включен, то переводится в состояние «включен», как только транзакт помещается в цепь пользователя. Он выключается, когда при выполнении блока UNLINK выясняется, что цепь пользователя пуста. Такая поддержка состояния индикатора связи делает возможным обращение к данной цепи пользователя как в безусловном, так и в условном режиме работы блока LINK в некоторой модели. Теперь рассмотрим, зачем между блоками GENERATE и GATE на рис. 7.11 помещен блок «PRIORITY 1». Как и следовало ожидать, блок PRIORITY используют для исключения ошибок, которые могут появиться при возникновении временных узлов. Предположим, что в некоторый момент модельного времени выполнены следующие условия. 1. Заняты все три парикмахера. 2. В цепи пользователя хотя бы один транзакт ожидает обслуживания. 3. Один из обслуживаемых посетителей готовится уйти. 4. Только что прибыл следующий посетитель. 5. Уходящий транзакт стоит впереди поступающего па обслуживание в цепи текущих событий. При обработке уходящего транзакга, он вначале входит в блок LEAVE, изменяя тем самым условие «многоканальное устройство не заполнено» с ложного на истинное. Затем этот транзакт поступает в блок UNLINK и вызывает перемещение транзакта из начала цепи пользователя в цель текущих событий. Поскольку ранее транзакт, выводимый из цепи пользователя, проходил через блок PR10PITY, он имеет приоритет, равный единице. Таким образом, 386
GENERATE Рве. 7.11. Второй пример примененвя цепи пользователи I L V ' 1 PRIORITY \ IOKNOW) (FULUP) 3 О z it. о /lin^ 1 ENTER \ ' ADVANCE 16.4 ' ' , L^AVE ' l UNLINK ^Л ^J v_y X RMINA1 LP TERMINATE в цепи текущих, событий этот транзакт помещается впереди вновь прибывшего транзакта- посетителя, имеющего нулевой приоритет. После того, как уходящий транзакт будет выведен нз модели, интерпретатор возобновит просмотр ЦТС. Первым он обработает только что выведенного транзакта-посетителя и продвинет его в последовательность блоков ENTER — ADVANCE. Обработка блока ENTER приведет к тому, что условие «многоканальное устройство не заполнено» снова станет ложным. Когда в дальнейшем будет обрабатываться прибывший транзакт-посетктель, ои будет помещен в цепь пользователя, пройдя в блок LINK из блока GATE. К парикмахеру, как и должно быть, попадет тот посетитель, который ждет дольше. Легко представить, как изменилась бы ло- тика модели при отсутствии блока PRIORITY IFULUP) " W и при возникновении описанных выше условий. В этом случае транзакт, выведенный из цепи пользователя, был бы помещен в цепь текущих событий после поступившего транзакта-посетителя. При подходе поступившего транзакта к блоку GATE условие «многоканальное устройство не заполнено» было бы истинным. Таким образом, «новинок» попал бы к парикмахеру. Когда, наконец, выведенный из цепи транзакт попытается войти в блок ENTER, он не сможет этого сделать. Этот уже ожидавший транзакт будет продолжать ожидание. Более того, в дальнейшем он будет ждать в цепи текущих событий, а не в цепи пользователя. Заметим, что от проблемы возникновения временных узлов не было необходимости оберегаться, когда индикатор связи обеспечивал просмотр вперед (см. рис. 7.7). Объяснение этого факта оставлено для упражнения. К сожалению, проблема временных узлов может возникнуть в любой модели, где пользователь работает с цепями пользователя и обеспечивает собственную логику просмотра вперед. В этой книге во всех случаях, когда такая проблема может возникнуть, для ее решения будет применен блок PRIORITY. В подобных случаях наличке блока PRIORITY не будет заново объяснено за исключением достаточно сложных, ситуаций, требующих дополнительных пояс- пений. 7.6.4. Альтернативный подход к проблеме временных узлов В модели, показанной па рис. 7.11, оказалось достаточным поместить блок PRIORITY между блоками GENERATE и GATE. Но такой под- 25* 387
ход можно было осуществить потому, что модель, использованная в примере, является замкнутой. Как правило, транзакт поступает в многоканальное устройство не из блока GENERATE. Гораздо чаще он приходит из некоторой предшествующей достаточно сложной части модели. Возникает вопрос, как в этом случае быть с проблемой временных узлов? Ниже рассмотрен вариант, который может быть использован при более сложных обстоятельствах, На рис. 7.12 показан предлагаемый вариант в виде сегмента блок-схемы, соответствующей использованию многоканального устройства в таком же режиме, как и на рис. 7.11. Предполагаем, что вес транзакты входят в этот сегмент с одинакозым уровнем приоритета, каким бы он ни был. Решением проблемы временных узлов в этом случае является последователь- PR PRIORITY 8UFFER LEAVE к& /line^ UNLINK Рис. 7.12. Альтернативный метод решения проблемы временного узла в модели на рис. 7.11 ность блоков PRIORITY— BUFFER, помещенных между блоками ADVANCE и LEAVE. Рассмотрим, каким образом комбинация блоков PRIORITY — BUFFER помогает снять проблему одновременности. Предположим, что имеются следующие условия, при которых возникает проблема временных узлов. 1. Заняты все три парикмахера. 2. В цепи пользователя хотя бы один транзакт ожидает начала обслуживания. 3. Один из обслуживаемых посетителей готовится уйти. 4. Только что прибыл следующий посетитель. 5. Уходящий транзакт в цепи текущих событий находится впереди пришедшего тран- закта. Теперь при обработке уходящего транзакта интерпретатор помещает его в блок PRIORITY, где его «старый» приоритет назначается ему в качестве «нового». Уровень приоритета при этом не изменяется, но зато интерпретатор помещает транзакт в цепи текущих событий последним в его «новом» классе приоритета. Это означает, что уходящий транзакт находится теперь позади прибившего (т. е. изменяет указанное ранее условие 5 на противоположное). Затем уходящий транзакт входит в блок BUFFER, заставляя тем самым интерпретатор начать заново просмотр ЦТС. Во время нового просмотра при обработке пришедшего транзакта выясняется, что условие «многоканальное устройство не заполнено» является ложным (поскольку уходящий транзакт еще не вошел в блок LEAVE), и, таким образом, он присоединяется к цепи пользователя. Продолжая просмотр, интерпретатор вновь доходит до уходящего транзакта и продвигает его в блок UNLINK, предварительно проведя его через блок LEAVE. После этого транзакт из начала цепи пользователя переводится в цепь текущих событий и при повторном просмотре входит в многоканальное устройство (выполнение блока LEAVE устанавливает флаг изменения состояния в положение «включен», а выполнение затем блока UNLINK снова его включает; здесь имеет место определенная избыточность). Проанализируем, что было бы, если бы при сформулированных выше условиях в модели отсутствовали блоки PRIORITY — BUFFER. Сначала обрабатывался бы уходящий транзакт, и условие «многоканальное устройство не заполнено» стало бы истинным. Транзакт, выведенный из цепи пользователя, попал бы в цепь текущих событий после прибывшего транзакта, поскольку по условию у них одинаковый уровень приоритета. Прибывший транзакт вошел бы затем в многоканальное устройство, заняв место, предназначенное для транзакта, выведенное из цепи пользователя. Во время обработки выведенного 388
транзакта выяснилось бы, что для него нет места в многоканальном устройстве. Ясно, что логика модели была бы неверной. 7.7. Блок PRIORITY (НАЗНАЧИТЬ ПРИОРИТЕТ) в режиме BUFFER В модели на рис. 7.12 показана ситуация, при которой возникает последовательность блоков PRIORITY — BUFFER. В общем случае эта последовательность показана на рис. 7.13, где операнд А блока PRIORITY обозначен через А. При продвижении транзакта через эту последовательность интерпретатор переставляет транзакт в цепи текущих событий так, PRI03ITV BUFFER PRIORITY PUFFER Рис. 7.13. Последовательность блоков PRIOR lTY^BUFFER Рис 7.14. Блок PRIORITY, использующий символ BUFFER что он оказывается в конце своего нового приоритетного класса, и заново начинает просмотр цепи текущих событий. Представляется возможным достичь того же эффекта, что и в последовательности блоков на рис. 7.13, путем использования так называемого режима BUFFER блока PRIORITY. Использование этого режима обеспечивается тем, что в операнде В блока PRIORITY помещается слово BUFFER. На рис. 7.14 показан блок PRIORITY, работающий в режиме BUFFER. Таким образом, один блок, показанный на рис. 7.14, полностью эквивалентен последовательности из двух блоков, показанной на рис. 7.13. 7.8. Дополнительные примеры применения цепей пользователя В этом параграфе даны еще два примера применения цепи пользователя совместно с приборами. Первый пример показывает применение цепей пользователя с двумя приборами, работающими параллельно. Второй пример показывает, каким образом, применяя блок LINK в режиме ввода в цепь по значению параметра, можно реализовать дисциплину обслуживания по динамическому приоритету (т. е. по принципу «требующий кратчайшего обслуживания пропускается первым»). 7.8.1. Применение цепи пользователя с двумя параллельными приборами Предположим, что в парикмахерской работают два мастера. Среднее время обслуживания составляет соответственно 13 ± 3 и 15 it 4 мин для каждого из них. Посетители приходят в парикмахерскую каждые 7 =t 3 мин. На рис. 7.15, а показано, каким образом можно включить цепь пользователя в модель парикмахерской. Придя в парикмахерскую, транзакт- посетитель продвигается в блок TEST {через блок PRIORITY). В этом блоке проверяется значение булевской переменпой CHECK (рис. 7.15, б), для того чтобы выяснить, свободен ли хотя бы один парикмахер. Если парикмахер свободен, транзакт-посститель входит в блок TRANSFER, работающий в режиме BOTH, откуда направляется затем в блок SEIZE, не дающий в данный момент запрета на вход. Если же оба парикмахера заняты, транзакт из блока TEST, работающего в режиме передачи, поступает в блок LINK с безусловным режимом. Там он присоединяется в конец цепи пользователя с именем LONG. Как только транзакт-посститель освобождает парикмахера, он вызывает выведение ждущего посетителя из цепи пользователя и направляет его непосредственно в соответствующий блок SEIZE. Поскольку после блока GENERATE находится блок «PRIORITY 1», выведенный из цепи транзакт при любых обстоятельствах займет кресло у только что освободившегося парикмахера. В этом примере экономия времени выполнения как следствие применения цепи пользователя является значительной. В противоположность рис. 7.7 и 7.11, где возможны только однозначные блокирующие условия, блок TRANSFER на рис. 7.15 представляет неоднозначную блокировку. Если бы не применяли цепь пользователя, каждый транзакт, задержанный в цепи текущих событий, пытался бы продвинуться через блок TRANSFER при каждом просмотре ЦТС, что потребовало бы значительного времени. Для приведенной модели блок TRANSFER отрабатывает для каждого прибывающего посетителя только один раз, а именно тогда, когда он обнаруживает свободного парикмахера. Других попыток выполнить этот блок не предпринимается. 389
КУ TERMINATE CENEBATE GENE p- -r-j PRIORITY BV$CH£CK>/ E Nj (BUSY) (MAN 1) i ГЛ LONG 1 ' SEIZE ' ' ADVANCE 13,3 \ ' RELEASE 1 ' UNLINK /l \ w TRANSFER (MAJSMI/ \ (MAN 2) BOTH ? (MAN 2( I cJ ГЛ LONG 1 О ' SEIZE ' ' ADVANCE 15,4 4 ' RELEASE ' 1 ' UNLINK X TERMINATE A V (BUSYi li LOCATION ■ I? si41 ale |CM,E.C.K 1 7 OPERATION ■ j)jiojii|iz[ij!HJiS|it|i7Jia 1 1 i i » j 1 i, . i i i A1e,C,0,£,F -. k- i9Jzi[2i!22'2i|z4|»|z6Jzr|2s!?9|sojii|»j»|;«|3sji« 1 1 FMU,l^kFNU,9, , -_i | . , , , 1 1 _i—L Л J—I—j I * J J---L 1 ' ' ■ * ' 6) Рас. 7.15. Третий пример примепеиия цепи пользователя; а — Слок-схема; б — определение булевской переменной CHECK
7.8.2. Применение цепи пользователя для реализации дисциплины обслуживания по динамическому приоритету Рассмотрим следующую задачу. Пусть для прибора с именем MAC реализована дисциплина обслуживания по динамическому приоритету- Это означает, что транзакту с' наименьшим ожидаемым временем использования прибора разрешается занять его первым. В случае совпадения минимальных времен пользования у нескольких транзактов, они обслуживаются в порядке поступления. После того, как транзакт занял прибор, его истинное время обслуживания распределено по экспоненте. На рис. 7.16 изображена часть блок-схемы, реализующей эту дисциплину обслуживания. Предполагается, что время, в течение которого транзакт собирается, занимать прибор, записано в его втором параметре. Транзакты ожидающие обслуживания, помещаются в цепь пользователя QUE в порядке возрастания величины Р2. Это означает, что они помещены ITIEUP) ITIEUP) | SEIZE ADVANCE P2.FNSXPD1S РЯ PRIORITY BUFFER RELEASE /oue\ UNLINK Рис. 7.16. Четвертый пример применения цепи пользователя в цепь в порядке минимального времени задержки с возрастанием предполагаемого времени занятия от начала цепи пользователя к ее концу. Далее, при совпадении этого времени каждый прибывший позже помещается сзади прибывших ранее и имеющих то же значение параметра Р2. Короче говоря, помещение в цепь по значению параметра приводит непосредственно к обеспечению дисциплины обслуживания по динамическому приоритету (конечно, в предположении, что затем транзакты выводятся из начала цепи пользователя). На сегменте блок-схемы, представленном на рис. 7.16, транзакт непосредственно перед освобождением прибора входит в блок «PRIORITY PR, BUFFER». Таким образом, интерпретатор перемещает этот транзакт в конец его приоритетного класса и возобновляет просмотр заново. Это является гарантией того, что при совпадении времени возникновения событий «прибытие следующей детали» и «освободить прибор», прибывший транзакт-дсталь помещается в цепь пользователя, перед тем, как из нее будет выведен транзакт, для того, чтобы занять прибор. (Предполагается, что все транзакты, использующие прибор, имеют одинаковый уровень приоритета.) В результате получается, что прибывший транзакт-деталь включается в соревнование по определению наиболее короткого времени выполнения. Если бы такая ситуация одновременности событий возникла при отсутствии блока PPJORITY, дисциплина обслуживания по динамическому приоритету была бы нарушена (см. упражнение 5 параграфа 7.11). 7.9. Стандартные числовые атрибуты цепей пользователя С каждой цепью пользователя связано пять стандартных числовых атрибутов. Названия этих атрибутов и значения соответствующих величин приведены в табл. 7.3. Таблица 7.3. Стандартные числовые атрибуты для целен пользователя Условлое обозначение СА/ ил» СА$вмя СС/ или СС$имя СН/ или СН$имя СМ/ или СМ$имя СТ/ или СТ$имя иеличкна Целая часть среднего числа трапзактоп в цепи Общее ч:сло транзактов, помещенных в цель в период всего процесса моделирования Число транзактов, находящихся в цепи в данный момент .Максимальное число транзактов, одновременна находившихся в цепи л период моделирования Целая часть среднего времени пребывания транзакта в цепи 391
При обнаружении интерпретатором карты CLEAR значения этих стандартных числовых атрибутов становятся равными нулю, а все, что находится в цепи пользователя, выводится и помещается в пассивный буфер. В результате действия карты RESET обнуляются величины СА/, СС/ и СТ/, величина СН/ остается прежней, а СМ/ полагается равной текущей величине СН/. При действии карты RESET, естественно, все члены цепи пользователя остаются на месте. 7.10. Пример моделирования 7А. Второе обращение к примеру 4D 1. Постановка задачи. Показать, как можно модифицировать пример моделирования 4D (сравнение различных способов обслуживания в банке) таким образом, чтобы все транзакты- клиенты, ожидающие кассира, находились в цепи (или в цепях) пользователя. Выполнить прогон модифицированной модели при тех же условиях, в которых функционировала модель 4D. Сравнить затраты времени работы процессора с использованием и без использования цепей пользователя. 2. Метод построения модели. Модель с одной очередью. В модели с одной очередью кассиры имитируются с помощью многоканального устройства. Это означает, что для требуемой модификации модели с одной очередью можно непосредственно применить логику, показанную на рис. 7.11. Для этого к модели, изображенной на рис. 4D.3, а, нужно добавить четыре блока (PRIORITY, GATE, LINK и UNLINK). Модель с несколькими очередями. В модели с несколькими очередями кассиры имитируются с помощью параллельно работающих приборов, причем клиенты становятся в очереди, возникающие у каждого из приборов в отдельности. Алгоритм выбора кассира при разборе примера модели с несколькими очередями 4 сводился к следующему. 1. Если какой-либо кассир свободен, идти к нему. 2. В противном случае, встать в самую короткую очередь. Пункт 1 обеспечивался испатьзованием блока SELECT, который выбирал прибор с нулевым значением величины F/, п. 2 выполнялся посредством работы блока SELECT в режиме MIN для определения очереди с минимальным текущим содержанием. Перед приборами-кассирами с 1-го по 8-й организовывались очереди с номерами 1—8, так что величины Q/ обеспечивали работу блока SELECT в режиме MIN. В модифицированной модели первая часть алгоритма не изменяется, однако вторая часть подвергается существенной переработке. Прежде всего из модели могут быть убраны очереди с первой по восьмую. Их роль будут играть вводимые в модель цепи пользователя с номерами I—8, соответствующие приборам-кгесирам с теми же номерами. Для обеспечения работы блока SELECT в режиме MIN можно использовать стандартный числовой атрибут цепи пользователя СН/ (текущее содержимое /-й цепи пользователя). Этим объясняется, почему теперь отпадаег необходимость в величинах Q/. Конечно, очередь, которая использовалась в модели с несколькими очередями для сбора общей информации о времени ожидания (очередь 10), следует оставить и в модифицированной модели; в противном случае, в распечатке не будет содержаться необходимой информации о среднем времени ожидания. 392
3. Таблица определений. Единица времени: 0,1 с. Таблииа 7А.1. Таблице определений для примера:7А а — модель с одной очередью Элемент GPSS Траизакты: 1-й сегмент модели 2-Й сегмент модели Функции: 5 MEAN Очереди: ONE Многоканальные устройства: TELRS Цепи пользователя: LINE 'Интерпретация Посетители: Pi — время, необходимое для обслуживания посетителя Таймер Функция для выборки из экспопеициального распределения со средним, равным единице Функция, описывающая среднее время обслуживания. необходимое для различных операций Очередь, используемая для сбора статистики при ожидании начала обслуживания Многоквнальное устройство, имитирующее восемь банковских кассиров Цепь пользователя, в которой транзакты-посетители ожидают освобождения кассира б — модель с несколькими очередями Элемент GPSS Траизакты: 1-й участок модели Приборы: 1.2,3.4, 5. 6. 7и8 Очереди 10 Цепи пользователя: 1,2. 3.4,5,6, 7 и 8 Интерпретация Посетители: Р1 — время, необходимое для обслуживания посетителя; Р2 — номер цепи пользователя, в которую посетитель может быть временно помещен, и номер кассира, к которому попадает посетитель Приборы, используемые для имитации восьми кассиров в банке Очередь, используемая для сбора общей статистики ожидания всех посетителей, пришедших в банк Цепи пользователя, в которых содержатся транзакты- посетители, ожидающие освобождения кассиров соответственно с 1-го по 8-й 393
4. Блок-схема. GENERATE I 1- I.FN$MEAN,6 /—s f ASSIGN \ PRIORITY (GRAB) ENTER I TELfcs DEPART ONE] ADVANCE PI LEAVE Velrs fQV—E UNLINK ^x TERMINATE Ц3 ПРИБЫТИЕ ПОСЕТИТЕЛЕЙ НАЗНАЧИТЬ »l РАВНЫМ ВРЕМЕНИ ОБСЛУЖИВАНИЯ '".ENERATI V, I8000O НАЗНАЧИТЬ ВЫСШИЙ ПРИОРИТЕТ СЛЕДУЮЩЕМУ СОБЫТИЮ ОКОНЧАНИЯ ОБСЛУЖИВАНИЯ ВСТАТЬ В ОЧЕРЕДЬ TERMINATE 2-Й СЕГМЕНТ МОДЕЛИ / N (OUEUP) ЕСТЬ ЛИ СВОБОДНЫЙ КАССИР9 (OUEUP) Г ДА: ЗАНЯТЬ КАССИРА ВЫЙТИ ИЗ ОЧЕРЕДИ LINE LINK FIFO \J ОБСЛУЖИВАНИЕ ОСВОБОДИТЬ КАССИРА ПОСЛАТЬ СЛЕДУЮЩЕГО ПОСЕТИТЕЛЯ НА ОБСЛУЖИВАНИЕ (ЕСЛИ ТАКОВОЙ ИМЕЕТСЯ) ПОКИНУТЬ БАНК НЕТ ВСТАТЬ В КОМ ЦЕПИ ПОЛЬЗОВАТЕЛЯ 1-Й СЕГМЕНТ МОДЕЛИ Рис. 7А.1. Блок-схемы для примера моделирования 7А: а — модель с одной очередью; б — модель с весяольвнми очередями а)
GENERATE ^ 180,FN6„„2 \ 1.FNSMEAN.5 С ASSIGN J PRIORITY QUEUE E> ПРИБЫТИЕ ПОСЕТИТЕЛЕЙ НАЗНАЧИТЬ PI РАВНЫМ ВРЕМЕНИ ОБСЛУЖИВАНИЯ НАЗНАЧИТЬ ВЫСШИЙ ПРИОРИТЕТ СЛЕДУЮЩЕМУ С06ЫТИЮ ОКОНЧАНИЯ' ОБСЛУЖИВАНИЯ СБОР ДАННЫХ ОБ ОБЩЕЙ ОЧЕРЕДИ GENERATE I > 1 \iBOoqo 1 ...RMINA % О3 TERMINATE а-ЛСЕ11АЕ«Т«ОАИЛ 0 (GRAB) jfc SELECT 2.I.8.0.F JQUEUPI ЕСТЬ ЛИ СВОБОДНЫЙ КАССИР? IQUEUP) (Я} 1 и SEIZE " DEPART '' ADVANCE PI 'г RELEASE " UNLINK 1 A Э V ДА; ЗАНЯТЬ KKCWA СБОР ДАННЫХ ОБ ОБЩЕЙ.ОЧЕРЕДИ ОБСЛУЖИВАНИЕ Ч_У TERMINATE ^Я ОСВОБОДИТЬ КАССИРА ДОСЛАТЬ СЛЕДУЮЩЕГО ПОСЕТИТЕЛЯ (ЕСЛИ ТАКОВОЙ ИМЕЕТСЯ) ДОКИНУТЬ БАНК НЕТ: НАЙТИ САМУЮ КОИПХУЮ ОЧЕРЕДЬ ВСТАТЬ В КОНЕЦ САМОЙ КОРОТКОЙ tNtr-ЕДИ 1-Й СЕГМЕНТ МОДЕЛИ 4
5. Распечатка программы. BLOCK NUMBER; •LUC ОРЕХ ATI ON SIMULATE A.B.C.D.fc.P.G С DEMENTS * FUNCTION DEFINITIDN1S) * a function ям).сг« exponential distribution function о ,o/« »». ю«/^.<;..ггг/.з».з5ь/,«. ,t>09/.\>. .69/.6,.9i;»/.''»i ,?/.7&. i.-f« ,В. l.tV.B*, 1.вЗУ.»И,У. )г/.9.2. J/.02,2.b^/'.S1,<>.ei/.<)l>.2»44/'.96,3. > * 9Т, 2U"i'.9e-3.«/.99,4.6/.94 5. S..3/.998.0.2/.<J<J9.7/.9°9e,S MEAN FUNCTION KN1.05 01STRIWUTION OF MfiAN »5Ч->У1<"Е TIME . l.»SO/«2V,7SO/.bl, 11)00/.SS» I SO 0/1, tOOO « * STORAGt CAPACITY OH» I Nl T IUN( S 1 STORAGE SSTIXRS,* MOOei SEGMENT 1 PRUVIDfl К TiiLLEHS 1 г 3 * i/i *> T и 9 10 IX 1? * GRAB * oueup GENERATE ASSIGN PRIORITY QUEUE GATE SNF ENTER DEPART ДО VANCE' LEAVE UNLINK TERMINATE LINK iao.KNs.,.. l 1,FN»M£AN,$ I ONE TELRS.OUEUP T6LRS. ONE PI TELRS LINE.GRAb,| LINE,FIFO CUSTOMERS ARKIVfc SET PI = SERVICE TIMfc SET HIG-1 PRIORITY CI* LAItR- Service-completion tvgNT ENTER THE LINE IS A TELLER AVAlL*l»Lt-7 yes: capture a tllllr LbAVb THE LINE TRANSACT nuSINtSS FRLE THE TELLER SEND NEXT WAITING CvAIOME* <IF ANY» TO CAPTURE LEAVE THE BANK NO; GO QNTD HACK 01- USER CHAIN MDDEL SEGMENT 2 13 14 GENERATE 180000 TERMINATE I '• IMER ARRIVES AFTER Ь HUUHS SHUT Ot-'F TMS PUN CONTROL CARDS START CLEAR START CLEAR START CLEAR START Clear START END 1 I 1 i 1 START THE RUN FOR DAY I CLEAR FOR DAY 2 START THE RUN FOR DAY 2 CLEAR FOR DAY 3 START THE RUN FOR DAY 3 CLEAR FOR OAY « START THE RUN FDR PAY 4 CLEAR FOR DAY S START THE RUN FOR DAY Ъ RETURN CONTROL TO OPERATING SYSTEM •0 Рве. 7А.2. Распечатки программ для примера моделирования 7А: а — модель с одвож очередью; б — модель с несколышми очередяка
wtUC OPERATION SIMULATE A.B.CO.E.F ,G COMMENT? * FUNCTION OfcFIN1TIUN<Ь> * b FUNCT1DN RNI.C24 EXWUNtNTIAL DISTRI BUT I UN JUNCTION 0.0/. ».. 104/.2, .222/.3. •ЗЬЬ/.4.<Ь09/«5? .69/ .6 . .9 1 S/ .7 . 1 .?/«75 • l .38 .в.I.6/.B4.1.83/.Ьв■2.12/.V.2,3/.92.2.52/.94,2 «US/.95 .2.99/.96,3.2 .<*7,3.&/.«>Ч.3.9/.'<9,4.Ь/.99Ь tЪ.З/.9Q8,6.?/.9«9 i 7/.9998 <8 M«AN fWICTIUN RM.tft OlSTRIBUltDN OP MEAN SERVICF TIME . (.450/.29, 750/.6 I , lOOO/.Sb, lbOO/ 1,3000 * MODEL SEGMENT 1 L INF 6RAU SUEUP GfcNtRATE ASbIGN PRIOR ITY (H'fUF SELECT E St IZE QfcPART АОVANCE RELEASE UNLINK TERMINATE SELTCT M!h| LINK IBO »F NS. . i I .FNbMEAN, I 10 2, 1.«iD .F, P2 10 PI P2 P2,GftAB,t z. i,a, ,си P2.F1F0 i .2 i5 i queup CUSTOMERS AHRIVE SET Ml = SEKVICE TIME SET HIGH PRIORITY FDR LATER scnvice-completion event UPDATE AGCREGATE LINE DATA 15 A TELLER AVAILAHLE7 YES; CAPTURE A TELLER UPDATE AOuRcOATE LINE DAI» TRANSACT BUS INC. S3 FREE THE TELLER SEND NEXT WAITING CUSTOMER tIF ANY) TO CAPTURE leave the bank no; fino the shortest line go to back of the shortfst line OOOfcL bFGMENT 2 GENERATE TERMINATE 160000 1 TIMtU ARRIVES AFTER 5 HOURS SHUT OFF TliE HUN С UN TOOL CAPDi START CLEAR START CLEAR START CLEAR START CLEAR START ENO » 1 1 1 1 START THE HUN F0« UAY I CLEAR FOR DAY 2 START THE RUN FOR DAY 2 CLEAR FOR DAY 3 START THE RUN FOR DAY 3 CLEAR FOR OA" 4 START THE RUN FOR DAY 4 CLEAR FOR DAY 5 START THE RUN FOR DAY S RETURN CONTROL TO OPERATING SYSTEM 6)
6. Выходные данные программы. СЛ*»АС»Т* а » Venice CONTENTS 7.SIS> AVERAGE UTll_Ii»TjO« .93? ENTRIES 1001 AVERAGE TJME/TRAN 1341*ЗБ& CUR«EWT CONTENTS L MAX Г MUM CONTENTS 9 suede waximuh contents ONI 51 1AVERAGC. TIWE'TttANS AVERAGE/ TOTAL 2ЕЯО PERCfcNT CONTENT!» ENTRIES ENTRIES 2EROS i«*L3a tool tei t2.o - AVERAGE TIME/TRAMS. UCLUOCS IEBO ENTRIES AVfc'BAGE Tlme^TBANS 254 If.459 iAVERAStS TIMEVTHANS 2892.047 TABLfc NUMflER CURRENT CONTENTS USER CHAIN LINE TOTAL ENTRIES eso AVERAGE TIME/TRANS 284?.047 CURRENT CONTENTS AVERAGE CONTENTS 14. 13в MAXIMUM Co «Tents. ы FACILITY 1 ? Л « Ъ- в 7 в AVEffAGC UTILISATION ..««в -V66 .456 .4*3 ,4iS .*2S .-eos .«13 NUMBER ENTRItS 1;.3 116 11» 9ft 13» io? 134 1*1 AVERAGE T 1ME/TRAN J 1 3<7. 1 7* мчэ.ооа isi<?.2ao 17зг.1*г 1агя.53* ib57-551 laie.soo 1 16b.58X S6IZIN6 TRANS. NO* 50 AS >Ъ 3h PREEMPTING TftAN'y. NO. ttl/EUF MAXIMUM AVERAGE TOTAL ZCRO PERCENT CONTENTS CONTENTS gNTRIfcS fcNTRIES JERUS U» AS. 15.15« ЧОО. 71В.Ч 1Й.В *AVt<CtAC,F TIME/TRAMS = AVERAGE ГГМЕ/TfiANS EXCLUOTNG ZF»0 gNTKrES AVERAGE T imevtrans 77МЛ56 SAVERASt TIMEiTBANS 3358.вЬЬ TABLE NUMBER- CURRENT CONTENTS A) USER C«AIN I г 3 A s « 7 A TOTAL. 1JN TRIES 126 41 45 73 116 06 108 ЦТ AVER*«€ TIME/IHANS 313 56.963 43 5 7-.656 3433.010 520 5.875 270] ..551 jais.9ie г*«г.4от г;п.чи слиида»* contents' «.че a>,GE CONTENTS г. 1зч г.гоз г.075 г. ui 1.740 1.«г» 1.615 ..А») HAfclHUW CONTENTS 6 ь ь ь ь 5 5 S Рис 7А.З. Распечатка некоторых результатов примера моделирования: а — статистика многоканального устройства (модель с одной очередью» первый день}; б — статистика очереди (модель с одиой очередью, первый день); в — статистика цепи пользователя (модель с одкой очередью, первый день); г — статистика приборов (модель с несколькими очередями, первый день); Я — статистика очереди (модель с несколькими очередями, первый депь); е — статистика цепей пользователя (модель с несколькими очередями, первый день) 7. Обсуждение. Использование модели. Ранее было высказано следующее утверждение: применение индикатора связи цепи пользователя в целях просмотра вперед чрезвычайно ограничено. Фактически, он по-настоящему полезен в качестве средства, обеспечивающего просмотр вперед лишь тогда, когда ограниченный ресурс, в котором возможно возникновение задержки, моделируется прибором. Несмотря на то, что в модели с несколькими очередями кассиры моделируются приборами, наличия только индикатора связи оказывается недостаточно для правильной имитации работы кассиров в модели. Как следствие, для определения того, следует ли помещать транзакта-хлиента в цепь пользователя или нет, используют блок SELECT 398
(блок 5 на рис. 7А.2, б). В модели, показанной на рис. 7.15, а, параллельно работающие парикмахеры также моделировались приборами, и от пользователя также требовалось создание собственного алгоритма просмотра вперед. Распечатка результатов. (При просчете на ЭВМ IBM 360/67 общее время процессора для моделирования системы с одной очередью составило 34,9 с. Для моделирования системы с несколькими очередями оно было равно 43,2 с.) На рис. 7А.З приведены некоторые результаты моделирования работы банка в течение первого дня. На рис. 7А.З, а — в показаны соответственно статистики многоканального устройства, очереди и цепи пользователя для модели с одной очередью. Как и следовало ожидать, статистика многоканального устройства и очереди на рис. 7А.З, а к б идентичны статистике в примере 4D (см. рис. 4D.4, а и б). Заметим, что статистика очереди «среднее время/транз» на рис. 7А.З, б совпадает со статистикой цепи пользователя «среднее. время/транз» на рис. 7А.З, в. Причина заключается в том, что в модели с одной очередью не было ни одного вхождения в цепь пользователя с нулевым временем пребывания, так как событие, заключающееся в окончании обслуживания, всегда имеет более высокий приоритет, чем событие, заключающееся в поступлении нового тран- закта. (Сравните эту ситуацию с обсуждавшейся в параграфе 7.6 при распечатке результатов прогона модели, показанной на рис, 7.7; см. также упражнение 10, п параграфе 7.11.) На рис. 7А.З, г—е приведены соответственно статистические данные о приборе, очереди и цепи пользователя для моделирования обслуживания с несколькими очередями в течение первого дня. Статистики прибора и очереди на рис. 7А.З, г и д совпадают со статистиками примера 4D (см. рис. 4D.4, в и г). Заметим также, что все величины «среднее время/транз» в данных об очередях на рис. 7А.З, д идентичны величинам «среднее время/транз» соответствующих цепей пользователя на рис. 7А.З, е. Так же как и в модели с одной очередью, это объясняется тем, что при наличии одновременных событий окончание обслуживания имеет приоритет над поступлением; как следствие, в модели с несколькими очередями нет нулевых входов в цепь пользователя. Другие существенные результаты двух моделирований не приводятся. Конечно, все данные идентичны результатам, приведенным в итоговой табл. 4D.4 примера 4D. Время работы процессора для модифицированной модели с одной и несколькими очередями приведено в табл. 7А.2. Для сравнения, в таблице также приведено время работы процессора для моделей примера 4D. Введение цепей пользователя привело к небольшой эко- Таблица 7А.2. Сводка времени занятости процессора дли примеров 7А и 4D Пример 7А 4D Модель с одной очередью 34,9 35,3 Модель с несколькими очередями 43,2 48,7 номии процессорного времени. Хотя заблокированные транзакты в примере 7А и не попадают в цепь текущих событий, за этот выигрыш нужно платить. В модели с одной очередью плата заключена в том, что каждый транзакт-клиент проходит через блоки PRIORITY, GATE и UNLINK. (Ни один из этих блоков не требовался в примере 4D.) Кроме того, многие клиенты (все ожидавшие в очереди) требовали выполнения блока LINK. В результате увеличение общего числа выполняемых блоков практически скомпенсировало более эффективный просмотр цепи текущих событий, возможный из-за размещения задержанных транзактов в цепи пользователя. В модели с несколькими очередями платой за ввод цепей пользователя является то, что каждый транзакт-клиент проходит через блок UNLINK; далее, каждый транзакт при невозможности тут же попасть к кассиру проходит блок LINK. (Обратите внимание на то, что в примере 7А модели с несколькими очередями блок PRIORITY не является дополнительным, он присутствовал также в примере 4D для контроля последовательности событий при возникновении временной связи между окончанием обслуживания и прибытием нового транз- акта.) С другой стороны, как уже отмечалось в данном примере, введение цепей пользователя позволило ие включать в модель с несколькими очередями блоки QUEUE—DEPART. Таким образом, в итоге, для модели с несколькими очередями примера 7А требуется несколько меньше исполняемых блоков, чем для соответствующей модели примера 4D. Совместный эффект наличия меньшего числа блоков и вывода задержанных транзактов из цепи текущих событий приводит к экономии времени процессора примерно на 10% в примере 7А по сравнению с примером 4D, что и показано в табл. 7А.2. После всего сказанного в адрес цепей пользователя читателя может разочаровать столь скромная разница во времени работы процессора. Цени пользователя не дают возможности усложнять модели, они не дают возможности проникать » сущность модели глубже, нежели это было сделано в соответствующих примерах 4D. Однако следует отметить следующие моменты. 399
1. С помощью цепей пользователя возможно построение более сложной модели с несколькими очередями, а именно, модели, в которой разрешен переход из одной очереди в другую (см. упражнения 19 и 20 параграфа 7.11). Без цепей пользователя это невозможно. 2. В примерах 4D и 7А все задержанные тран- закты заблокированы однозначно. Это означает, что в моделях примера 4D существенно используется концепция индикатора просмотра; поэтому потенциальная экономия процессорного времени, получаемая при введении цепей пользователя, не так уж велика. При возникновении неоднозначных блокирующих условий потенциальная экономия процессорного времени значительно больше (см. упражнение 21 параграфа 7.11), 7.11. Упражнения 1.а). Изменится ли логика модели на рис. 7.7, если именем GETEM обозначить не блок SEIZE, а блок DEPART, и поставить блок DEPART впереди блока SEIZE? б). Изменится ли логика модели на рис. 7.7, если поменять мастами блоки RELEASE и UNLINK? 2. На рис 7.7 транзакты вводятся в конец, цепи пользователя, а выводятся из начала цепи. Этим обеспечивается дисциплина обслуживания «первым пришел — первым обслужен». Та же дисциплина обслуживания достигается при вводе транзактов в начало цепи пользователя и последующем их выводе с конца цепи. Выяснить, что следует изменить на рис. 7.7 для осуществления этого второго подхода. 3. Укажите, где следует поместить пары блоков QUEUE—DEPART, если необходимо получить статистику очереди для моделей на рис. 7.9 и 7.11. 4. Следующие вопросы касаются модели на рис. 7.11. а). Одним из факторов, приводящих к нарушению дисциплины обсуждения «первым пришел — первым обслужен» (при отсутствии блока PRIORITY), является следующее условие: уходящий транзакт в цепи текущих событий стоит впереди прибывающего. Объяснить, каким образом в цепи текущих событий может возникнуть такое взаимное расположение двух транзактов. б). Предположим, что блоки PRIORITY, GATE, LINK и UNLINK исключены из модели на рис. 7.11, а блок ENTER окружен парой блоков QUEUE—DEPART. Может ли в такой измененной модели быть нарушена дисциплина обслуживания «первым пришел — первым обслужен» при возникновении временных узлов. Ответ обосновать подробно. 5. а). На сегменте модели на рис, 7.16 показано, как с помощью цепи пользователя можно обеспечить дисциплину обслуживания по динамическому приоритету. Во время обсуждения этой модели утверждалось, что при возникновении временных узлов в случае отсутствия блока «PRIORITY PR, BUFFER» возможно нарушение этой дисциплины обслуживания. Подробно описать ситуацию, которая должна для этого возникнуть. б). В сегменте модели на рис. 7.16 предполагается, что все транзакты, использующие прибор, имеют одинаковый уровень приоритета. Описать ситуацию, при которой в случае невыполнения этого предположения логика модели была бы неверной. 6. Когда транзакт освобождает прибор 21, он должен послать другой транзакт из начала цепи пользователя 3 на занятие этого прибора. Если в цепи пользователя 3 нет транзактов, прибор должен быть занят транззктом, находящимся в конце цепи пользователя 5. Нарисовать сегмент блок-схемы, обеспечивающий это условие. Предположить, что блок «SEIZE 21» имеет имя ТАКЕМ. 7. У пяти транзактов в группе величины первого параметра равны соответственно I, 2, 3, 4 и 5, а величины второго — 8, 7, 10, 8 я 10. Эти пять транзактов последовательно, в порядке возрастания величины первого параметра, входят в блок «LINK PAUSE,P2». Каковы будут величины первого параметра в начале, середине и в конце цепи пользователя, после того как транзакты попадут в цепь? Предположить, что других транзактов в цепи пользователя нет. 8.а). Определить, какая дисциплина обслуживания принята на приборе SURVR, показанном на рис. У8. (Предположить, что в модели нет других обращений к прибору.) б). Показать, как следует изменить рис, У8 для обеспечения дисциплины обслуживания «первым пришел — первым обслужен» на приборе SURVR в своем классе приоритета. 9, Пусть на рнс. 7.11 отсутствуют блоки GENERATE и PRIORITY. Предположим, что транзакты, поступающие в блок GATE для использования многоканального устройства, имеют уровни приоритета 1, 2 и 3. Дисциплина обслуживания у многоканального устройства должна быть «первым пришел — первым обслужен» в своем классе приоритета. Показать, какие изменения в модели иа рис. 7.11 следует сделать для обеспечения этого условия. 10.а). В предположении, что в цепи пользователя HOLD было три входа с нулевым временем пребывания, используя информацию рис. 7.8, а, вычислить величину «среднее 400
V 15,Э„П I (GRAB) (GRAB)_W SEIZE I . Л ISURVR и_1л ADVANCE 16.3 T iv / Рис, У8 время/транз» для транзактов, действительно ожидавших в цепи пользователя. Сравнить полуценный результат с величиной «$ среднее время/транз» на рис. 7.8, б. Совпадают ли, как следовало ожидать, эти две величины? б). Могут ли в моделях на рис. 7.11 и 7.15 быть транзакты с нулевым временем пребывания в цепях пользователя? Ответ обосновать. в). Показать, каким образом можно изменить модель на рис. 7.7 так, чтобы не помещать транзакты в цепь пользователя, если их время пребывания там окажется равным нулю. 11. Показать, каким образом можно использовать цепь пользователя для обеспечения на приборе JOE случайной дисциплины обслуживания. Это означает, что прибор выбирает следующего посетителя из числа ждущих обслуживания. (Указание. Определить некоторое случайное целое число в интервале от нуля до числа, на единицу меньшего, чем число транзактов в цепи пользователя. Вывести это количество траизактов из начала цепи пользователя, помещая их в конец цепи. После этого транэакт, вставший в начало цепи, послать на занятие прибора.) 12. Если у прибора ODD ожидают обслуживания нечетное число транзактов, следующим иа обслуживание попадает транзакт, стоящий в середине очереди. Если в очереди находится четное число транзактов, следующим обслуживается тот, который стоит в начале очереди. Транзакты, поступающие к прибору, имеют одинаковый уровень приоритета и помещаются в конец цепи пользователя. Составить сегмент блок-схемы, реализующий эту дисциплину обслуживания. Предположить, что за исключением выгода транзактов на обслуживание порядок расположения в цепи пользователя сохраняется. 13.а). Показать, как следует изменить блок- схему для примера 2С (различные дисциплины обслуживания в системе с одной очередью и одним обслуживающим прибором) таким образом, чтобы в модели использовалась только одна пара блоков SEIZE—RELEASE, а все транзакты-операторы содержались в одной цепи пользователя. б). Показать то же, что в п. а, но так, чтобы первая и вторая категории операторов помещались в разные цепи пользователя. 14. В примере 4В (модель магазина) на контроле находится только одна касса. Показать, как следует модифицировать блок-схему модели, чтобы обеспечить следующие изменения. а). Добавляется экспресс-касса. Посетители с тремя и меньшим числом покупок (не считая возможной дополнительной покупки) пользуются экспресс-кассой. Все другие посетители проходят через обычную кассу. б). Если у контролера экспресс-кассы нет работы, то посетителю из начала очереди у обычной кассы разрешается перейти к экспресс- кассе. 15. Показать, каким образом можно модифицировать блок-схему примера 5С (имитация процесса производства) так, чтобы все детали, ожидающие освобождения механизма в данной группе механизмов, помещались в цепь пользователя, относящуюся к этой группе. 26 Т. Дж. Щр&Обер 401
16. Изменить модель примера 5Е (модель автобусной остановки) таким образом, чтобы транзакты, имитирующие людей, ждущих прихода автобуса или пытающихся в него сесть, находились в цепи пользователя. 17. Какие изменения следует сделать в блок- схеме примера 6А (задача о танкерах в порту), чтобы транзакты-суда, ожидающие захода в порт, находились в цепи пользователя. 18. Дисциплиной обслуживания на приборе ТОМ является «наибольшее время в системе». При этой дисциплине прибор следующим обслуживает посетителя, который пробыл в системе (т. е. транзакт, находящийся в модели) наибольшее время. Предложить метод организации этой дисциплины обслуживания в GPSS. Подробно объяснить предложенный метод. 19. Модель банка с многими очередями в примере 7А, как и аналогичная модель в примере 4D, имеет недостаток — не разрешен переход из очереди в очередь. Это означает, что даже если один кассир освобождается, а другие клиенты ожидают других кассиров, никто из них не подходит к свободному кассиру. Пред* л ожить метод по исправлению этой ситуации в модели 7А. Показать все детали GPSS-mo- дели, соответствующей предложенному методу. Как будет вести себя ваша модель, если клиент покидает свою очередь и подходит к свобод- ному кассиру одновременно с другим клиентом, приходящим в банк? 20. Вообще говоря, клиенты могут переходить из очереди в очередь не только при условиях, описанных в упражнении 19. Например, можно предположить, что если клиент, стоящий в конце своей очереди, из трех человек и более (включая его самого), видит другую очередь, в которой стоит только один человек, то он уходит из своей очереди и встает в конец самой короткой. Покажите, какие изменения следует сделать в вашем решении к упражнению 19, для того чтобы описанный выше критерий перехода в другую очередь также мог осуществляться. Как будет вести себя ваша модель, если клиент решает перейти в другую очередь одновременно с прибытием в банк другого клиента? 21. Если у вас есть время и интерес, попробуйте провести следующий эксперимент, осуществляемый с цепями пользователя при некоторых обстоятельствах. Цель эксперимента — на грубом примере лучше почувствовать возможную экономию времени процессора. В модели, представленной на рис. 7.15, в блоке GENERATE заменить «GENERATE 7,3» на «GENERATE ,„100,,0», в операнде А обоих блоков TERMINATE поставить единицу и промоделировать полученную модель, используя в качестве карты START «START 100». Затем изъять из этой модифицированной модели цепь пользователя и выполнить еще один прогон. Какова разница во времени, требуемом для прогона этих двух моделей? (При изъятой цепи пользователя последние 98 транзактов, вводимые в модель в момент модельного времени, равный единице, встречают неоднозначное блокирующее условие в блоке TEST. При просмотре интерпретатором цепи текущих событий в момент времени, следующий за временем, равным единице, он будет обрабатывать эти 98 заблокированных транзактов до тех пор, пока не доберется до «освобождающего» транзакта в конце текущей цепи. Затем, вследствие выполнения блока RELEASE, просмотр начнется заново, причем на этот раз будут обрабатываться 97 заблокированных транзактов и т. д.). 22. В примере 5С рассматривается модель, в которой имитируется производственный цех. В цехе, состоящем из шести различных групп механизмов, проходят три различных вида деталей. В каждой группе механизмов принята дисциплина очереди «первым пришел — первым обслужен». Рассмотрим следующий вариант этого примера. Для каждого типа детали определим необходимый срок, равный некоторому множителю его ожидаемого общего времени выполнения. Например, у деталей типа 1, ожидаемое общее время выполнения равно 240 мин. Если для приведения этой величины к «необходимому сроку» используется множитель 3, то деталь типа 1 будет готова покинуть цех через 720 мин после поступления. Если задание выполнено быстрее, чем за 720 мин, то это рано; если же после истечения 720 мин, то это поздно. Изменить модель примера 5С так, чтобы оценить распределение случайной величины «время запаздывания детали», которая должна измеряться вне зависимости от типа детали. (Предположим, что время запаздывания детали равно времени выхода из цеха минус время необходимого выхода иэ цеха. Таким образом, эта случайная величина принимает отрицательные значения для заданий, уходящих из цеха раньше времени.) Затем проведите эксперименты с моделью для определения, какой множитель для ожидаемого общего времени выполнения обнулит среднюю величину времени запаздывания детали. Предположите, что для каждого типа детали используется одинаковый множитель. Теперь, используя найденный вами множитель, попробуйте найти такую дисциплину обслуживания, при введении которой в цех распределение времени запаздывания детали изменится так, чтобы его средняя величина стала отрицательной, или так, чтобы его стандартное отклонение уменьшилось, или и то и другое. За исключением одного или двух случаев, почти любая дисциплина обслуживания, поддающаяся исследованию, требует для своего осу-
ществлсния введения цепей пользователя. Можно рассмотреть следующие дисциплины обслуживания. а). Простой детали. Простой детали определяется как необходимое время минус текущее время и минус ожидаемое общее время выполнения, оставшееся для детали. Дисциплина обслуживания но простою детали заключается в том, что следующей берегся на обслуживание та деталь из числа ожидающих, у которой величина простоя наибольшая. б). Простой детали на операцию. Простоем детали на операцию является простой детали, деленный на число оставшихся операций для данной детали. При этой дисциплине обслуживания следующей на станок поступает та деталь, которая имеет наихудшую величину простоя на операцию. в). Относительный простой детали. Относительным простоем детали называется простой детали, деленный на оставшееся необходимое время для данной детали. Деталь, ожидающая обслуживания и имеющая наименьший относительный простой, поступает на обслуживание следующей. г). Минимальное время пребывания. Эта дисциплина обслуживания уже несколько раз уиоминалась в данной книге. Впервые она встретилась в примере 2С. Затем эта дисциплина была использована в примере ЗС. Там цепи пользователя не нужны; путем соответствующего изменения приоритетных уровней транзактов-деталей по мере их продвижения в модели можно получить эффект минимального времени пребывания. При применении цепей пользователя зта операция упрощается. Выше в этой главе было показано, как осуществить такую дисциплину обслуживания с помощью цепей пользователя. Рассмотреть влияние перечисленных выше и других дисциплин обслуживания на среднее Таблица 7.4. Дополнительные возможные комбинации операндов D и Е для блока UNLINK значение и стандартное отклонение случайной величины времени запаздывания детали. Если вы сравните и увидите разницу при различных дисциплинах, то следует во всех моделях условия эксперимента сделать одинаковыми. Это особенно верно для примера 5С, где часто используется экспоненциальное распределение. 23. Рассмотрим упражнение 7 параграфа 6.20, в котором моделируется агентство, занимающееся перевозками на грузовиках. Оно забирает контейнеры с грузовых платформ и перевозит на грузовиках потребителю. Если для имитации контейнеров использовать тран- закты, то в цепи текущих событий очень возможно наличие большого числа заблокированных транзактов. Предположив, что для задачи применяют именно такой подход, показать, как включить цепи пользователя в решение для минимизации числа транзактов, находящихся в цепи текущих событий. Если возможно, сравнить процессорное время для двух решений, полученных разными способами: одно с применением цепей пользователя, а другое без их применения. Какова разница во времени работы процессора для этих случаев? 7.12. Условный вывод транзактов из цепей пользователя В параграфе 7.5 было показано, как вывести траизакты из начала и нз конца цепи пользователя, используя операнды D и Е блока UNLINK. Ни в одном из этих случаев для тран- закта, готового, к выводу из цепи, не учитываются никакие условия, кроме его относительного положения в цени. Существуют еще три комбинации операндов D и Е, которые могут быть использованы для того, чтобы инициировать вывод потенциально готовых к этому транзактов по некоторому условию, удовлст- Ноыер комбинации Операнд D Операнд Е Условие, необходимой для вывода из цепи Любой стандартный числовой атрибут * Любой стандартный числовой атрибут * BV/ или BVS имя Не используется Любой стандартный числовой атрибут * Не используется Пусть в операнде D находится величина /; транзакт удовлетворяет условию вывода из цепи, если величина его /-го параметра равна величине /-го параметра транзакта, инициирующего вывод Пусть в операнде Т) находится величина /; транзакт удовлетворяет условию вывода из цепи, если величина его /го параметра равна величине, находящейся в операнде Е Транзакт удовлетворяет условию вывода из цепи, если булевская переменная с номером / (или имеющая символическое имя) принимает значение «истина» при ее подсчете с использованием приоритета и величин параметров этого траичакта Следует поынить, что положительные че-'/ые константы также являются стандартными числовыми атрибутами. 26* 403
г ■ ■■ ,_s MARK ' ' LINK (TIEUP) [ QUe\ P2 w (Т!ГЦР) | SEIZE ADVANCE FNSHOLQ ' ' PR рр'отту sIJ)=FbR " RELEASE /que\ 1 SMAC' V 7 UNLINK BVSCHJCB u- л./- ЛОЛОЖИТЬ РЗ РАВНЫМ ВРЕМЕНИ ПОСТУПЛЕНИЯ К ПРИБОРУ ЗАНЯТЬ ПРИБОР ИЛИ ПРИСОЕДИНИТЬСЯ К ЦЕПИ в СООТВЕТСТВИИ С КРАТЧАЙШИМ ВРЕМЕНЕМ ВЫПОЛНЕНИЯ ЗАНЯТЬ ИСПОЛЬЗОВАТЬ СТАТЬ ПОЗАДИ ВНОВЬ ПРИБЫВШЕГО {ЕСЛИ ТАКОВОЙ ИМЕЕТСЯ) И ВНОВЬ ВОЗОБНОВИТЬ ПРОСМОТР ОСВОБОДИТЬ ПРОСМОТРЕТЬ ЦЕПЬ ПОЛЬЗОВАТЕЛЯ В ПОИСКАХ КРИТИЧЕСКОЙ ДЕТАЛИ С КРАТЧАЙШИМ ВРЕМЕНЕМ ВЫПОЛНЕНИЯ (NONE) (TIEUP) (NONEI QUE 1 UNLINK X (BAKjN) TRANSFER КРИТИЧЕСКОЙ ДЕТАЛИ HE НАЙДЕНО; ПОСЛАТЬ НЕКРИТИЧЕСКИЙ ДЕТАЛЬ НА ЗАНЯТИЕ ПРИБОРА ВЕРНУТЬСЯ К ОСНОВНОЙ ПОСЛЕДОВАТЕЛЬНОСТИ БЛОКОВ ») LOCATION JCJJAI • »lioi ii \ч h In hi « i7 lii a.VA«.IAMi8i A B.C О Е F ■ jajli кй |г>|н |гтЫга|пЫэ||я|и|м|я|я I I Рис. 7.17. Пятый пример применения цспн пользователя: а — сегмент блок-схемы; 6 — определение булевской переменной CRJOB
Юряющему какой-либо ситуации. Эти три комбинации показаны в табл. 7.4. - Для всех указанных в табл. 7.4 комбинаций хеш» пользователя просматривается интерпретатором с начала до конца до тех пор, пока либо не будет выведено столько транзактов, сколько .задано в счетчике блока UNLINK, либо не -Судет достигнут конец цепи. В комбинации 1 величина некоторого параметра выводимого транзакта должна равняться величине того же вараметра у транзакта-инициатора вывода. Операнд D блока UNLINK указывает номер ■ужного параметра, а операнд Е не использу- ■ется, В комбинации 2 величина определенного параметра у выводимого транзакта должна равняться другой произвольно определенной вели* xat. Операнд D блока UNLINK опять же укапывает номер нужного параметра у выводимого транзакта, а операнд Е является «соответствую- Квы аргументом», представляющим величину, ДОторой должна равняться величина параметра вводимого транзакта. В комбинации 3 one- дед D ссылается на булевскую переменную, рсдн для некоторого транзакта ее значение «СТЬ «истина», то ему разрешен выход из цепи пользователя. Естественно, возникает вопрос: Ци можно сделать величину булевской переменной, зависящей от свойств транзакта в цепи пользователя? Ответ на этот вопрос таков: если булевская переменная ссылается на величины, Шиочающие приоритет и (или) величины параметров, то эти величины берутся у того тран- |Ш(та, который находится в цепи пользователя к рассматривается в настоящий момент, а не [у траазакта, вошедшего в блок UNLINK. * Для иллюстрации использования булевской ^временной в блоке UNLINK приведем следующий пример. Предположим, что дисциплиной Обслуживания является динамический приори- |ет(см. рис. 7.16). Недостатком этой дисцнпли- Кобслуживания является то, что детали с боль* и временем обслуживания могут быть задержаны на очень длительное время в ожидании фибора. Это может случиться, если детали * более коротким временем обслуживания постоянно поступают на прибор, не давая воз- Южности деталям с большим временем обслу- Шания занять его. Это затруднение можно (бойти, разделив все ждущие детали на две пуппы, определяемые по длительности ожиданья обслуживания. Тем деталям, которые про- Шали более некоторого заранее определенного Времени, называемого пороговым, дается выспи приоритет. Детали в этой группе называются критическими. Внутри группы критических деталей дисциплиной обслуживания является дисциплина по динамическому приоритету. Шля некритических деталей дисциплиной Икже остается обслуживание по динамиче- Вюму приоритету. Таким образом, общая дисциплина обслуживания такова: «вначале об- . служить критические детали, затем — некритические; в каждой из этих двух групп детали на обслуживание выбирать согласно динамическому приоритету». Блок-схема этой общей дисциплины обслуживания показана на рис. 7.17, а. При поступлении транзакта-детали в указанный сегмент время его прибытия записывается в параметре 3. Если возможно, транзакт немедленно занимает прибор MAC, в противном случае поступает в цепь пользователя в порядке возрастания времени обслуживания, записанного в параметре 2. По окончании использования прибора транзакт-деталь входит в блок UNLINK, требующий просмотра цели пользователя в булевском режиме. Цепь пользователя просматривается с начала до конца в поисках первого транзакта-детали (если такой найдется), для которого значение булевской переменной CRJOB (определенной на рис. 7.17,6) есть «истина», т. е. для которого время нахождения в цепи пользователя превышает пороговое значение, представленное в сохраняемой величине CRTYM. Если такой транзакт найден, он выводится из цепи и посылается на занятие прибора, а теш временем транзакт-инициатор вывода проходит в следующий блок. Если же критических деталей иет, то инициатор из первого блока UNLINK проходит не в следующий по порядку блок, а поступает во второй блок UNLINK, выводя тем самым первый транзакт . из цепи пользователя и посылая его на занятие прибора. В сегмент модели на рис. 7.17 включен блок «PRIORITY PR.BUFFER» по тем же соображениям, что и в сегменте модели на рис. 7.16. Как и в случае, показанном на рис. 7.16, в сегменте модели на рис. 7.17 предполагается, что все транзакты, проходящие через данный сегмент, имеют одинаковый уровень приоритета. 7.13. Упражнения 1. На рис. 7.17 дисциплиной обслуживания как для критических, так и для некритических деталей является обслуживание по динамическому приоритету. Показать, какие изменения в модели необходимо сделать для того, чтобы для критических заданий обеспечить дисциплину обслуживания «первым пришел — первым обслужен». Как и прежде, для некритических заданий порядок обслуживания должен осуществляться по динамическому приоритету. 2. Показать, каким образом можно использовать цепи пользователя для решения упражнения 7 параграфа 6.4. 3. На приборе CHECK обслуживаются вначале те клиенты-транзакты, у которых значение
пятого параметра больше или равно 10. Затем обслуживаются другие транзакты. Дисциплина обслуживания в обеих этих группах — «первым пришел — первым обслужен». Показать, как с помощью одной цепи пользователя обеспечить такую обобщенную дисциплину обслуживания. 4. На приборе FLIP вначале обслуживаются те клиенты-транзакты, у которых значение седьмого параметра меньше или равно 8. Затем обслуживаются другие транзакты. В обеих этих группах дисциплиной обслуживания является обслуживание в порядке поступления. Показать, как с помощью одной цепи пользователя можно обеспечить такую обобщенную дисциплину обслуживания. 5. Показать, как следует изменить модель примера 6В (стол выдачи в библиотеке) таким образом, чтобы при наличии ждущих читателей (или ожидающих того, чтобы отыскали их контрольный листок, или ожидающих получения, заказанной книги) соответствующие транзакты находились в цепи (или цепях) пользователя. 6. Рассмотрим использование многоканального устройства для моделирования параллельно работающих каналов при следующих условиях. Число необходимых транзакту каналов записано во втором параметре транзакта и в общем случае меняется от одного транзакта к другому. Один транзакт может нуждаться в одном канале, другой — в двух, третьему может понадобиться три канала и т. д. Как правило, в многоканальном устройстве принята дисциплина обслуживания в порядке поступления. Однако, при некоторых обстоятельствах эта дисциплина обслуживания может нарушаться. Например, предположим, что справедливы следующие условия. 1). Многоканальное устройство заполнено. 2). В цепи пользователя несколько транзак- тов ожидают входа в многоканальное устройство. 3). Считая от качала цепи пользователя, первые три транзакта запрашивают соответственно третий, первый и первый каналы. Предположим теперь, что транзакт покидает миогоканальное устройство, освобождая тем самым один из каналов. Транзакт, стоящий в начале цепи пользователя, не может войтн в многоканальное устройство, поскольку его запросы не могут быть удовлетворены. Таким образом, цепь пользователя просматривается с начала до конца в поисках того транзакта, чей запрос можно удовлетворить. Первому такому транзакту (если он найдется) разрешается немедленно войти в многоканальное устройство. Таким образом, в данном примере второй транзакт будет выведен из цепи пользователя и направлен в многоканальное устройство. Очевидно, в этом случае нарушается дисциплин! обслуживания в порядке поступления. Вновь предположим, что выполняются ук* занные выше условия 1—3, но представим Ц перь, что транзакт, покинувший многоканалн ное устройство, освободил два канала. Утвер) ждение, что запросы транзакта, стоящего в w чале цепи пользователя, не удовлетворяются! остается верным. После того, как второй трай закт выведен из цепи и направлен в многой» нальное устройство, там имеется еще один сто бодный канал. Следовательно, из цепи мовд быть выведен и послан в многоканально* устройство третий транзакт. Таким образом, в данной задаче существуя большое число различных обстоятельств, пр| которых один или несколько транзактов могу! быть выведены из цепи пользователя и напр* влены в многоканальное устройство. Тем не менее существует простой способ реализовал заданную дисциплину обслуживания с помощью цепей пользователя. Показать, как это можно сделать. 7. Предположим, что транзакты, ждущие! входа в многоканальное устройство в примере 6; не помещаются в цепь пользователя, а просто остаются в цепи текущих событий в заблокп рованном состоянии. Подробно объяснить, т кова в этом случае дисциплина обслуживание в многоканальном устройстве. ■) 8. Для поддержания определенного общей запаса крови больничное хранилище кров! использует систему возобновления уровня зя паса. Как только уровень запаса крови падвя до числа ROP и в этот момент не ожидаете! прибытия заказанной ранее крови от поста» щика, выдается запрос на получение R0Q единиц. Время между подобными запросам! распределено по нормальному закону со сщ ним и стандартным отклонениями соответствен»! 30 и 3 ч. i Время между последовательными запросам! на кровь распределено экспоненциально, при чем за 24 ч в среднем приходит 15 таких запро| сов. Распределение числа необходимых чело! веку единиц крови (т. е. числа единиц на трё бование) приведено в табл. У8 (единицей кров! является 450 см3). Если требуется крови больше, чем в насто* щий момент имеется в хранилище, возникав] Таблица У8 Число требуемых единиц 1 2 3 Относительная частоты 45 25 15 Число требуемых единиц 4 5 Отяося- тельник частота 10 05
аварийная ситуация. В этом случае вся имею* щаяся в наличии кровь идет на удовлетворение запроса, и вдобавок для обеспечения необходимого остатка используют специальную процедуру, не рассматриваемую здесь. Хотя аварийная ситуация вызывает падение наличного запаса до нуля (если он до того уже не был нулевым), она не влияет иа работу больницы в плане заказа на новое поступление. Это означает, что при возникновении аварии больница потом не требует восстановления разницы из некоторого внешнего источника. В добавление к получению крови путем обычного заказа больница получает кровь от доноров. Число таких ежедневных сдач крови распределено но нормальному закону со средним и стандартным отклонениями соответственно 5 и I единица. Можно предположить, что сданная кровь поступает в хранилище в 17 ч того дня, в который она была сдана, и недоступна до этого времени. К сожалению, в период хранения кровь портится. Это означает, что кровь имеет ограничение на время нахождения в хранилище. Если кровь не использована до истечения своего срока хранения, она должна быть списана. Кровь, сданная непосредственно в больницу, имеет срок хранения 25 дней. Кровь, поступающая посредством выполнения заказов на пополнение, имеет срок хранения 18 дней, считая с дня прибытия. Из-за ограничений на срок хранения при возникновении запроса на кровь из хранилища берется годный запас, имеющий кратчайший срок годности. Составить GPSS-модель для моделирования такого хранилища. Включить в модель возможность подсчета распределения следующих двух случайных величин: 1) число аварийных ситуаций, возникающих в 30-дневный период; 2) число единиц крови, подлежащих списанию в 30-дневный срок. Предположим (это реально), что в больнице оперируют 24 ч в день, 7 дней в неделю. Предположим (что нереально), что заказанные поставки крови могут поступать в любое время (не только между 8 и 17 ч, с понедельника до пятницы), что доноры сдают кровь 7 дней в неделю (а ке по определенным дням) и что требования на кровь поступают независимо от времени дня. Пусть вначале хранилище имеет ROP -г ROQ/2 единиц крови и каждой единице остается до срока хранения 15 дней. После построения модели использовать ее для оценки времени моделироаания, необходимого для достижения стабильности средних величин интересующих нас двух случайных переменных. Затем проделать дополнительные эксперименты для того, чтобы определить влияние величин ROP и ROQ на эти средние величины. 9. Для упражнения 8 ввести временные условия, которые позволили бы сделать его более реальным. В частности, должны существовать следующие зависящие от времени условия. 1). Вероятное время поступления крови при использовании нормальной процедуры запроса. 2). Время между последовательными требованиями на кровь. 3). Время, когда кровь сдается в больницу донорами. Затем введите эти условия в модель для упражнения 8 и повторите все предложенные там эксперименты. 7.14. Понятие о захвате прибора Транзакты, желающие воспользоваться прибором, должны, как правило, ждать своей очереди, если прибор занят. Однако иногда системы строятся таким образом, чтобы разрешить вновь прибывающему транзакту заместить транзакт на занятом приборе. Это замещение заключается в том, что прибор отбирается у еще не обслуженного до конца транзакта и вновь пришедшему транзакту разрешается не* медленное его занятие. В это время замещенный транзакт либо может ждать до тех пор, пока прибор не освободится вновь, либо может пойти куда-либо.с намерением или без намерения вернуться впоследствии к прибору, с которого его сняли. (Синонимами термина «заместить» являются «прервать» и «захватить». Термины «прервать» и «захватить» наиболее часто употребляются в GPSS.) Если разрешена возможность захвата при- бора, немедленно возникает множество вопросов 1. Вот некоторые из них. 1. При каких условиях разрешается захват? 2. Какова судьба захваченного транзакта? (На самом деле захватывается не транзакт, а прибор, который был занят транзактом. Для простоты изложения, однако, будем использовать такие обороты, как. «захваченный транзакт». Следует помнить, что под этим подразумевается «транзакт, который занимал прибор в момент, когда прибор был захвачен».) 3. Когда захваченный транзакт подвергается воздействию? Происходит ли это во время возникновения захвата иди позже, в зависимости от положения и состояния транзакта, подвергшегося захвату? 1 Возможность захвата одного или нескольких приборов, имитируемых многоканальным устройством, невозможна ы GPSS. Следовательно, как уже отмечалось ранее в гл. 2, одно из различий между прибором и многоканальным устройством емкостью единица заключается в том, что прибор может быть захвачен, а многоканальное устройство нет. 407
Ниже на некоторые из этих вопросов даны ответы на концептуальном уровне. Затем, в параграфах 7.15 и 7.16 рассмотрены некоторые дополнительные особенности. Наконец, после примера описаны дополнительные особенности захвата, и тот же пример приведен в более общем виде. В этой книге не будут рассмотрены все аспекты проблемы захвата прибора, однако читатель, чьи интересы лежат за пределами описанных здесь проблем, может почерпнуть дополнительные сведения из руководства пользователя для интерпретатора GPSS. 7.14.1. Необходимые условия для возникновения захвата Захват может произойти при следующих условиях. 1. Захват происходит только тогда, когда транзакт, занимающий прибор, сам не является «захватчиком». Заметим, что уровень приоритета транзакта не играет в данном случае роли. Заметим также, что эта возможность позволяет осуществлять захват только на «одной уровне». Захват на одном уровне означает, что только один замещенный транзакт может ожидать повторного занятия данного прибора. 2. Захват происходит тогда, когда уровень яриоритета возможного «захватчика» превышает уровень приоритета текущего транзакта. В роли захватчика может выступать и-сам захваченный транзакт. Так как в GPSS существует 128 приоритетных уровней, то в этом случае может быть до 127 уровней захвата. Это означает, что прн соответствующих обстоятельствах может существовать целых 127 транзактов, ожидающих повторного занятия прибора. Каждая из этих возможностей может быть применена к одному и тому же прибору в данной модели. Например, в точке А модели транз- акту может быть разрешено захватить пятый прибор только в случае, если текущий пользователь сам не является захватчиком, а в точке В транзакт способен захватить пятый прибор лишь тогда, когда его приоритет выше, чем у текущего транзакта. 7.14.2. Различные возможности для захваченных транзактов Для захваченных транзактов существуют три возможности. 1. Он может просто ждать, пока прибор вновь не станет для него доступным. 2. Может пойти в какую-либо точку модели, не повторяя попытки занять прибор, с которого его сняли. 3. Может пойтн в какую-либо точку модели, претендуя на пользование прибором, с которого его сняли. Возможности 2 и 3 коротко рассмотрены в параграфе 7.21. Первая возможность, являющаяся иаименее сложной из трех, будет рассмотрена сейчас. При рассмотрении возможности 1 предположим сначала, что разрешен только один уровень захвата. Предположим, что некоторый транзакт занял прибор и в процессе его использования был снят с этого прибора другим транз- актом. Предположим, что во время захвата транзакт находится либо 1) в цепи будущих событий, чему соответствует его нахождение в блоке ADVANCE, где имитируется время пребывания на приборе, либо 2) в цепи текущих событий, готовый в этот момент модельного времени освободить прибор. Если транзакт находится в цепи будущих событий, интерпретатор выводит его оттуда и помещает в специальную цепь, называемую цепью прерывания, где он находится в пассивном состоянии. Перед этим интерпретатор вычисляет и запоминает «оставшееся время обслуживания» прерванного транзакта, т. е. определяет, сколько времени транзакту осталось занимать прибор перед его освобождением. Как только транзакт, захвативший прибор, закончит обслуживаться на нем, интерпретатор автоматически переводит прерванный транзакт на повторное занятие прибора. Это требует вывода захваченного транзакта из цепи прерывания и помещения его обратно в цепь будущих событий, где он будет находиться, пока не истечет ранее подсчитанное «оставшееся время обслуживания». Если данный транзакт был прерван, а затем вновь восстановлен на приборе, то он в принципе может быть прерван вновь. Фактически, иет ограничения на число прерываний некоторого транзакта на данном приборе. Это означает, следовательно, что общее время занятия прибора для транзакта может складываться из прерывающихся отрезков времени. Теперь представим, что транзакт, подлежащий прерыванию, находится в цепи текущих событий и готов освободить прибор, на котором возникает захват. Это означает, что событие захвата и событие освобождения в системе происходят одновременно. При этом, если транзакт занимает в цепи текущих событий такое положение, что событие освобождения происходит первым, то в этом случае не требуется замещения текущего транзакта. Даже если последовательность событий другая, замещения произойти не должно, так как транзакт-канди- дат на замещение так или иначе закончил обслуживаться на приборе. В этом случае интерпретатор выполняет единственную наиболее разумную операцию. Во время просмотра цепи текущих событий он позволяет кандидату на замещение освободить прибор и просто продвигает его далее в модели. Соответственно, в этом 4f>8
случае кандидат не помещается в цепь прерывания. При дальнейшем рассмотрении захвата следует помнить о таком поведении интерпретатора в случае появления одновременных событий захвата и освобождения. Предположим теперь, что возможны несколько уровней захвата, и что каждый прерванный транзакт просто ждет до тех пор, пока прибор не станет для него вновь доступным. Как и прежде, прерванные транзакты ждут в пассивном состоянии в цепи прерывания. В цепи прерывания порядок расположения принят следующим: «первым пришел — последним ушел». Иными словами, каждый вновь помещенный транзакт ставится в начало цепи. Затем, когда условия позволяют прерванному транзакту вновь занять прибор, интерпретатор выводит этот транзакт из начала цепи прерывания. Вспомним, что многоуровневые прерывания разрешены лишь тогда, когда каждый следующий «захватчик» имеет более высокий уровень приоритета, нежели прерываемый транзакт. Таким образом, метод помещения транзакта в начало цепи прерывания гарантирует, что уровни приоритета располагаются в строго убывающем порядке с начала до конца цепи, за возможным исключением самого последнего транзакта. (Как указывалось ранее, при условии захвата 1 для транзакта-незахватчика возможен захват безотносительно к уровню приоритета. Далее, возможно, что в различных частях модели для данного прибора действуют условия 1 и 2. Таким образом, транзакт в конце цепи прерывания (т. е. транзакт, помещенный в цепь прерывания первым) может иметь приоритет, равный приоритету другого транзакта в цепи или, возможно, даже более высокий, чем у любых других траизактов в цепи.) При последующем выводе транзактов от начала цени прерывания первым в очереди на повторное занятие прибора будет транзакт с высшим уровнем приоритета. Цепи прерывания — четвертый тип цепей, используемых интерпретатором GPSS. У каждого прибора имеется цепь прерывания, связанная с ним. Ввод транзакта в цепь прерывания и вывод его оттуда обеспечиваются интерпретатором автоматически. Транзакт может попасть в эту цепь только одним путем — если его прерывают в период использования им некоторого прибора. Пока транзакт находится в цепи прерывания, он не вносит никакого вклада в счетчик текущего содержимого любого блока GPSS-модели. Аналогично цепям текущих и будущих событий и в отличие от цепей пользователя для целей прерывания не существует стандартных числовых атрибутов. Подобпо цепям текущих ».будущих событий, непустые цепн прерывания распечатываются интерпретатором в конце моделирования, если в операнде D карты START используется единица. (В распечатке цепей прерывания выводится только одна такая цепь. Однако транзакты в этой «одной» цепи обычно разбиты на группы, одна группа для каждого захваченного прибора. В примерах 7В и 7С будет показана распечатка цепи прерывания и объяснена ее структура.) Для распечатки целей прерывания может быть также использован блок PRINT. Для этого операнды А и В блока не используются, а в операнде С ставится единственный мнемонический указатель I. При входе транзакта в блок «PRINT „Ь распечатываются цепи прерываний. Два других возможных варианта для захваченных транзактов не связаны с помещением их в пассивное состояние в цель прерывания в момент захвата; вместо этого они остаются в модели в активном состоянии. Обсуждение этих двух возможностей, как указывалось выше, отложено до параграфа 7.21. 7.14.3. Роль местоположения и состояния транзакта в момент его захвата Выше предполагали, что в момент захвате транзакт находится либо в цепи будущих, дяб» в цепи текущих событий. Далее предполагал я, что при нахождении транзакта в цепи текущих событий он готов освободить прибор. В обоих этих случаях судьба захваченного транзакта решается в тот же момент модельного времени, в который происходит захват. На самом деле, в цепи текущих событий не происходит «решения судьбы»; транзакт просто освобождает прибор и продолжает дальнейший иуть. Могут возникнуть более сложные случаи. Например, траизакт в цепи текущих событий может находиться в заблокированном состоянии в момент захвата занимаемого им прибора. Транзакт может также находиться в цепи пользователя во время захвата. Возможен даже случай, когда захваченный транзакт прн возникновении захвата находится в цепи прерывания. В последнем случае предполагается, что транзакт занял сразу два (или более) прибора и что он уже находится в состоянии захвата на одном приборе в момент возникновения захвата на другом приборе. Подобная возможность «мультизахвата» разрешена в GPSS. Фактически, нет ограничения ка число приборов, которые транзакт может занимать параллельно; это влечет за собой то, что не существует ограничения на число приборов, на которых транзакт может быть сразу захвачен. В таких более сложных случаях вводится в действие понятие неизбежных захватов. 409
Именно, если транзакт не находится в цепи будущих событий в то время, когда его захватывают, интерпретатор GPSS просто «устанавливает флаг» этому транзакту, отмечая тем самым, что он подлежит захвату. Неизбежный захват, таким образом, обеспечивается только в случае продвижения транзакта в блок ADVANCE, где вычисляется положительное время задержки. (При некоторых условиях неизбежный захват обеспечивается при продвижении транзакта в блоки ASSEMBLE, GATHER или MATCH. Эти три блока рассмотрены в конце главы.) Между тем захватчику разрешается воспользоваться прибором при возникновении захвата; ему не нужно ждать, когда произойдет неизбежный захват только что ушедшего транзакта. За исключением этого краткого обсуждения в данной книге не будут рассмотрены более сложные случаи, связанные с положением и состоянием захваченных транзактов. 7.15. Захват прибора. Блоки PREEMPT (ЗАХВАТИТЬ) и RETURN (ВЕРНУТЬ) Транзакт может захватить прибор, только войдя в блок PREEMPT (ЗАХВАТИТЬ). Этот блок с операндами А и В показан на рис. 7.18. (Блок PREEMPT имеет также необязательные для использования операнды С, D н Е. Они введены в параграфе 7.21, где ска- PREEMPT \А Рис 7.18. Блок PREEMPT с операндам» Операнд Л в Значение Ими прибора (числовое или символическое), подлежащего захвату Необичательиый операнд, используемый для указания условий, при которых разрешен яахват; существуют две возможности: Операнд Не используется (пробел) PR Условие захвата Захват возникает, если обслуживаемый транзакт сам не является захватчиком Захват возникает, если возможный захватчик имеет приоритет выше, чем приоритет обслуживаемого транзакта А и В: Результат по умолчанию Ошибка Объяснено а графе «Значение» зано о других возможных размещениях захваченного транзакта.) Операнд А указывает прибор, подлежащий возможному захвату. В операнде В указывается условие, при котором разрешается захват. Если операнд В не используется, захват происходит, когда обслуживаемый транзакт сам не является захватчиком. При использовании операнда В в нем должна стоять двухбуквеиная последовательность PR. В этом случае захват разрешен только тогда, когда возможный захватчик имеет более высокий уровень приоритета, чем текущий пользователь. Возможен вариант, когда транзакт пытается войти в блок PREEMPT при свободном приборе. В этом случае транзакт вводит в блок PREEMPT, занимая тем самым прибор. Хотя при этом с прибора никакой транзакт не снимается, интерпретатор тем не менее1-, регистрирует транзакт, занявший прибор, в\ качестве его захватчика. Другими словами, любой транзакт, занявший прибор путем входа в блок PREEMPT, является по определению захватчиком этого прибора. Когда происходит захват в блоке PREEMPT (рис. 7.18), прерванный транзакт (если такой существует) переводится интерпретатором из цепи будущих событий в цепь прерываний этого прибора. Это справедливо вне зависимости от использования операнда В блока PREEMPT. Транзакт-захватчик продолжает затем свое дальнейшее продвижение в модели. Транзакт, захвативший прибор, может освободить его (т. е. «возвратить» прибор ранее прерванному транзакту) только при дальнейшем вхождении в блок RETURN (ВЕРНУТЬ). Этот блок с операндом А показан на рис. 7.19. В операнде А указывается номер захваченного прибора, который следует возвратить смещенному транзакту (если такой есть). Аналогично, паре блоков SEIZE—RELEASE вернуть прибор может лишь тот транзакт, который его захватил. Если в блок RETURN пытается RETURN W Рис. 7.19. Операнд А Блок RETURN с операндом А: Значение Имя нрибира (числовое или символическое), подлежащего освобождению Результат по умолчанию Ошибка 410
войти какой-либо другой транзакт, выводится сообщение об ошибке. При выполнении блока RETURN интерпретатор выводит ранее смещенный транзакт (если такой есть) из начала соответствующей цепи прерываний и вновь ставит его на прибор. Это влечет включение транзакта в цепь будущих событий с временем освобождения (или возврата) прибора, равным предварительно вычисленному «оставшемуся времени занятия». После того, как процесс восстановления завойте», интерпретатор продолжает дальнейшее продвижение траизакта, вошедшего в блок RETURN. Блокировка,возникающая в блоке PREEMPT, является однозначной. Это означает (см. параграф 7.2), что интерпретатор включает индикатор просмотра транзакта, если он заблокирован при попытке войти в блок PREEMPT. Тем самым транзакт становится пассивным. Позднее, когда для данного прибора отрабатывает блок RETURN, интерпретатор 1) выключает индикатор просмотра у всех ранее заблокированных транзактов вследствие изменения блокирующего условия и 2) устанавливает флаг изменения состояния в положение «ключей». (Интерпретатор GPSS всегда включает также флаг изменения состояния при выполнении блока PREEMPT. Причина этого явления будет объяснена в параграфе 7.19.) Затем, когда транзакт, вошедший в блок RETURN, остановится в своем движении, интерпретатор вновь начинает просмотр цепи текущих событий. Даже заблокированным тран- зактом дается возможность продолжить свое дальнейшее'движеиие в модели. 7.16. Методы использования приборов Теперь в распоряжении пользователя имеются два типа взаимно дополняющих пар блоков, с помощью которых можно моделировать прибор: SEIZE—RELEASE и PREEMPT— RETURN. Вполне возможно, что в некоторой модели для обращения к одному прибору одновременно будут использованы несколько пар блоков первого типа и несколько пар блоков второго типа. Требуется соблюдать определенную осторожность в точном выборе одного вз доступных решений. Лучшим способом достичь решения задачи моделирования прибора является решить в первую очередь следующие два вопроса. 1. Сколько различных приоритетных классов вводит пользователь? 2. Сколько уровней захвата (если они будут) можно разрешить? Некоторые простые комбинации «класс приоритета» — «уровень захвата», представляю- Таблица 7.5. Некоторые возможные и невозможные комбинации «класс приоритета».—«уровень захвата» Максимально разрещенния величина уровня эахвпта 0 I 2 3 4 Номер класса приоритета , в который попадает польяоьатсль прибором ' 1 » А F В G К я С Н L О 4 D I .4 Р R s Е J N Q S щие возможный интерес, приведены в табл.7.5. Возможные варианты в таблице обозначены буквами А, В, С, D и т. д. Пустые клетки означают невозможные варианты; в GPSS невозможно превышение числа уровней захвата прибора над числом различных приоритетных классов, к которым принадлежат пользователи этого прибора. Для удобства обсуждения возможные комбинации в табл. 7.5 разделены на пять категорий. Некоторые комбинации попадают более чем в одну категорию. Вот эти комбинации категорий: 1) в нулевой строке; 2) в первой строке; 3) по диагонали А—G —L—Р—S; 4) по диагонали F—К—О—R; 5) над диагональю А—G—L—Р—S, но не попадающие в нулевую строку. Теперь будут указаны возможные пути моделирования комбинаций в каждое из этих категорий. Категория 1 (комбинации в нулевой строке). Комбинации в нулевой строке соответствуют просто использованию прибора без захватов. Для такого использования прибора в режиме «первым пришел — первым обслужен внутри своего класса приоритетов» рекомендуется известная пара блоков SEIZE—RELEASE. Другим вариантом является замена всех блоков SEIZE—RELEASE в этих случаях на блоки PREEMPT—RETURN в предположении, что операнд В блока PREEMPT не используется. Таким образом, может быть занят только тот прибор, который не находится в пользовании, т. е. захват не разрешается. Категория 2 (комбинации в первой строке). Для того чтобы разрешить один уровень захвата (вне зависимости от уровня приоритета) в модели для нужного прибора следует использовать одну или несколько пар блоков SEIZE—RELEASE и для того же прибора необходимо использовать одну или несколько пар блоков PREEMPT—RETURN. Операнд В блока PREEMPT следует оставлять пустым. (Что произойдет в противном случае?) Категория 3 (комбинации по диагонали А—G—L—Р—S). В этих комбинациях число дозволенных уровней захвата на единицу меньше 411
числа приоритетных классов, к которым может принадлежать пользователь прибором. Соответствующей дисциплиной обслуживания является «первым пришел — первым обслужен внутри своего класса приоритетов за исключением возможных захватов, если только возможный захватчик имеет более высокий приоритет, чем обслуживаемый транзакт». Смоделировать такую дисциплину обслуживания в GPSS очень просто. Для этого все обращения к прибору осуществляются блоками PREEMPT—RETURN, причем в операнде В блока PREEMPT используется символ PR. Заметим, что комбинация А попадает как в категорию 1, так и в категорию 3. Рассмотрение категории 3 дает еще одну возможность для комбинации А. Таким образом, всего для комбинации А существует три возможности. 1. Выполнять все обращения блоками SEIZE—RELEASE. 2. Выполнять все обращения блоками PREEMPT—RETURN, опуская операнд В блока PREEMPT. 3. Выполнять все обращения блоками PREEMPT—RETURN, используя б операнде В блока PREEMPT символ PR. Категория 4 (комбинации по диагонали F—К—О—R). Для всех комбинаций этой категории число уровней захватов совпадает с числом классов приоритета, к которым могут относиться пользователи прибором. Такие комбинации можно промоделировать, если ссылки иа прибор делаются одной или несколькими парами блоков SEIZE—RELEASE и двумя или несколькими парами блоков PREEMPT— RETURN, хотя бы в одной из которых опущен операнд В блока PREEMPT, а в другой в операнде В блока PREEMPT стоит PR. Для того чтобы обеспечить заданный уровень захватов, должны произойти в указанной последовательности следующие события. 1. Транзакт, имеющий самый низкий дозволенный уровень приоритета, занимает прибор первым в блоке SEIZE. 2. Затем другой транзакт, также имеющий самый низкий' дозволенный приоритет, захватывает предыдущий транзакт, войдя в блок PREEMPT с пустым операндом В. 3. Наконец, транзакты с возрастающими приоритетными уровнями по очереди захватывают текущего захватчика, входя в блок PREEMPT с символом PR в операнде В. Следует признать, что комбинации категории 4 не представляют большого интереса. Тем не менее для иллюстрации одновременного использования блоков SEIZE, PREEMPT без PR и PREEMPT с PR в простой модели в примере 7.В (представленном в следующем параграфе) используется комбинация К нз табл. 7.5. Более того, эта комбинация возникает в примере вполне естественно. Категория 5 (комбинации над диагональю А—G—L—Р—S, но не находящиеся в нулевой строке). Для каждой из этих комбинаций число уровней захвата меньше на единицу, чем число дозволенных приоритетных уровней. Перед тем, как может быть разрешен захват при моделировании какой-либо из этих комбинаций, должны быть выполнены следующие условия. 1. Число уровней захвата в данный момент- должно быть меньше максимального числа разрешенных уровней. 2. Приоритет захватчика должен превышать приоритет обслуживающего трапзакта. При использовании в блоке PREEMPT символа PR захват не разрешается, если не вып№ нено указанное выше условие 2. В блоке PREEMPT, к сожалению, в общем случае не предусмотрена возможность сделать захват зависимым от числа существующих в данный момент уровней захвата. Если блок PREEMPT используется без PR, то захват происходит лишь при отсутствии захватов в данный момент. Однако для моделирования комбинации категории 5 требуется большая общности Следствием этого является тот факт, что ноль-1 зователь должен сам следить за выполнение* условия 1. Предлагаемый для обеспечение этого условия метод приведен на рис. 7.90 в виде участка блок-схемы, где для удобства имя интересующего иас прибора обозначен» буквой А. Этот метод пригоден для всех ком-' VSPLNOW/ L \ХВМ.МАХ (G01N) PREEMPT PR ' ' ADVANCE FNSHOLO UT) < ' RETURN A W Рис 7.20. Сегмент блок-схемы, показывающий логику я» бннаций категории 5 «класс приоритета» — «уровень м> хвата» l
бинаций категории 5 в предположении, что все занятия данного прибора происходят в указанной части блок-схемы (это ограничение можно легко обойти, см. упражнение 8 параграфа 7.18). В решении предполагается также, что для использования прибора применяют простую последовательность PREEMPT—ADVANCE—RETURN (это ограничение также может быть снято). Посмотрим, каким образом условие I обеспечивается сегментом блок-схемы, приведенном на рнс. 7.20. Блоки PREEMPT и RETURN в этом сегменте имеют, соответственно, символические имена GOIN и GOOUT. Численно разность между числом входов в этн два блока на единицу больше, чем число транзактов, захвативших прибор в данный момент. (Если текущий транзакт не захватывал другой транзакт, разность в числе входов равна единице; е&ти текущий транзакт прервал .некоторый транзакт, который сам не прерывал какой-либо другой транзакт, то разность в числе входов равна двум и т. д.). Предположим, что переменная с именем PLNOW (текущее число уровней захвата) определена как N$GOIN— NJGOOUT—1. Тогда величина этой переменной равна числу уровней захвата в рассматриваемый, момент. Предположим также, что максимальное число разрешенных уровней захвата записано в сохраняемой величине PLMAX (максимальное число уровней захвата). Тогда для выполнения условия 1 должно быть справедливо следующее соотношение: V$GPLNOW меньше, чем XJPLMAX. Этим объясняется наличие на рис. 7.20 блока «TEST L V$PLNOW, X$PLMAX», работающего в режиме отказа. Перед тем, как очередной входящий транзакт попытается войти в блок PREEMPT, блок TEST даст ему на это разрешение, т. е. будет выполнено условие 1. Конечно, продвижение через блок TEST еще не означает, что транзакт обязательно захватит прибор. Для того чтобы захват произошел, транзакт должен также войти и в блок PREEMPT, т. е. необходимо выполнение условия 2. Следовательно, для того чтобы в сегменте блок-схемы произошел захват, необходимо выполнение двух ранее указанных условий. Если захват в блок-схеме на рис. 7.20 не разрешается, заблокированные претенденты на захват помещаются в один из двух блоков. Если выполнено условие 1, а условие 2 не выполнено, претенденты находятся в блоке TEST. (Заметим, что хотя они находятся в блоке TEST, следующий блок, в который они пытаются войти, есть блок PREEMPT; в этом смысле заблокированные транзакты продвинулись «через» блок TEST.) При невыполненном условии 1 претенденты на захват стоят в блоке, предшествующем блоку TEST (следующий блок, в который они будут пытаться войти, есть сам блок TEST). При наличии заблокированных транзактов в обоих случаях вполне возможно, что у некоторых транзактов в блоке TEST приоритет ниже, чем у транзактов, находящихся в блоке, предшествующем блоку TEST. В смысле тех блоков, в которых они находятся, это означает, что на рис. 7.20 транзакты с более низким приоритетом могут быть впереди транзактов с более высоким приоритетом. Это. может иметь место, например, если транзакты с низким приоритетом приходят к этому сегменту модели, когда выполнено условие 1 н не выполнено условие 2, а транзакты с высоким приоритетом приходят позже, когда уже не выполняется условие 1. Тем не менее, несмотря на эту возможную «борьбу» приоритетов, все транзакты в цепи текущих событий расположены, конечно, в порядке «первым пришел — первым обслужен в своем классе приоритета». Это является гарантией того, что когда произойдет следующее занятие прибора, займет его наиболее подходящий претендент на захват среди всех ждущих транзактов. Это справедливо вне зависимости от места, в котором наиболее подходящий транзакт находится в ожидании. Отметим, что за исключением комбинаций F и G все остальные элементы первой строки попадают и в комбинацию 5. Это означает, что сегмент модели на рис. 7.20 можно применить к комбинациям Н, I и J первой строки. Но, как отмечалось выше, комбинации первой строки образуют так называемую вторую категорию. Таким образом, существуют два различных способа моделировать комбинации Н, I и J. Если используется подход категории 2, то разрешен только один уровень захвата независимо от величины приоритета. Если же применяется подход категории б, то разрешается один уровень захвата, но только в случае, когда уровень приоритета претендента на захват выше уровня приоритета текущего пользователя. Таким образом, существует значительная разница в этих двух подходах к моделированию комбинаций Н, I и J. Наконец, в заключение обсуждения комбинаций категории 5 отметим, что элементы нулевой строки в табл. 7.5 из нее исключены. В этом нет логической необходимости, так как сегмент модели на рис. 7.20 будет работать для комбинаций нулевой строки, если сохраняемую величину PLMAX положить равной нулю. Тем не менее ясно, что не имеет никакого смысла использовать довольно сложную методику (рис. 7.20) для комбинаций нулевой строки, поскольку для этих простых комбинаций «без захватов» можно просто использовать пару блоков SEIZE—RELEASE. 413
7.17. Пример моделирования 7В. Модель гаража 1. Постановка задачи. В городе имеется гараж, в котором производят работы но уходу и ремонту за транспортными средствами, принадлежащими городу. В транспортные средства включают легковые автомобили, тяжелые грузовики и т. п. Город небольшой, поэтому гараж оборудован только одной смотровой ямой и в нем работает только один механик. Это означает, что одновременно можно выполнять обслуживание только одной машины. Все городские транспортные средства обязаны регулярно прибывать в гараж для профилактического осмотра. Число автомобилей, прибывающих каждый день по графику осмотра, распределено равномерно от 2 до 4. Время, необходимое для обслуживания каждой машипы, равномерно распределено в интервале от 1,5 до 2,5 ч. Мзшялы, предназначенные для осмотра в данный день, оставляют в гараже до начала каждого рабочего дня. Рабочий день длится 8 ч. При некоторых условиях регулярная работа по осмотру может быть прервана, и яму используют для более важных целей. В частности, город пытается поддерживать полный парк полицейских машин, работающих в любое время. Требуется, чтобы полицейские машипы можно было использовать 24 ч в сутки. Как только с какой-либо машиной что-то случается, ее немедленно доставляют в гараж для ремонта вне графика. Даже если па профилактическом осмотре в это время стоит другая машина, вновь прибывшей полицейской машипе разрешается занять смотровую яму, и се ремонт начинается без задержки. Тем не менее полицейская машина, нуждающаяся во внеплановом ремонте, ие может вытеснить другую полицейскую машину, стоящую на внеплановом ремонте. Распределение времени между поступлением полицейских машин на внеплановый ремонт является пуассоновским со средним интервалом, равным 48 ч. Если гараж закрыт в момент их поступления, машины должны ждать до в ч утра, пока не начнется работа. Время их обслуживания распределено по экспоненте со средним 2,5 ч. Построить GPSS-модель для имитации деятельности гаража. По полученной модели оценить распределение случайной переменной «число полицейских машин, находящихся на внеплановом ремонте». Выполнить прогон модели, имитирующей работу в течение 25 дней, выводя промежуточную распечатку всей информации, включая цепи текущих и будущих событий и цепи прерывания по окончании каждых пяти дней. Для простоты предположить, что механик работает 8 ч в день без перерыва, и не учитывать выходные. Это аналогично предположению, что гараж открыт 7 дней в неделю (см. упражнение 3 параграфа 7.18). 2. Метод построения модели. Сегмент планового осмотра. Машины-тран- закты, прибывающие в гараж для планового осмотра, являются пользователями прибора- ямы, которым ие разрешен захват. Эти машикы- трапзакты проходят через первый сегмент модели. Каждый день вЯчутраглавныйтранзакт- машипа входит в этот сегмент. Затем он входит в блок SPLIT, порождая необходимое число транзактов, представляющих собой машины, запланированные на этот день для осмотра. Эти машины-транзакты Проходят затем через простую последовательность блоков SEIZE— ADVANCE—RELEASE и покидают модель. Участок внепланового ремонта. Полицейские машины, нуждающиеся во внеплановом ремонте, двигаются в модели в своем собственном сегменте. Использование ими ямы-прибора имитируется простой последовательностью блоков PREEMPT—ADVANCE- RETURN. В операнде В блока PREEMPT не требуется PR; просто при попытке занять смотровую яму посредством входа в блок PREEMPT этим транзактам разрешается вытеснить любой тран- закт, которому захват не разрешен. Поскольку вариант с использованием PR в блоке PREEMPT не применяется, им не позволяется замещать на обслуживании того пользователя, которому разрешен захват смотровой ямы. В параграфе 5.11 было объяснено использование взвешенной таблицы для оценки распределения длины очереди. В данной модели можно использовать приведенный там для этой цели сегмент для оценки требуемого распределения числа неработающих полицейских машин. Для этого требуется только, чтобы полицейские машины-транзакты входили в блок QUEUE в момент их прибытия в гараж и чтобы они проходили через блок DEPART непосредственно перед их выходом из гаража. Таким образом, состояние «вне работы» равносильно пребыванию в очереди. Затем, как было объяснено в гл. 5, для наблюдения за числом транзактов в очереди и для занесения соответствующих результатов во взвешенную таблицу может быть использован отдельный сегмент. Открытие и закрытие гаража. Для того чтобы организовать закрытие гаража по истечении каждого восьмичасового рабочего дия и открытие его снова в 8 ч утра, используют специальный сегмент. Транзакт-хозяии входит в этот сегмент каждые 24 ч (начиная с конца первого рабочего дня). Этот траизакт, имеющий в модели высший приоритет, затем немедленно поступает в блок PREEMPT, имеющий в операнде В символ PR. Хозяину, таким образом, разрешено захватить яму-прибор вне зависимости оттого, кем является текущий поль- 414
зователь (если он есть). Затем, спустя 16 ч, хозяин освобождает смотровую яму-прибор, позволяя закончить ранее прерванную работу (при наличии таковой). Сбор данных для неработающих полицейских машин. Для сбора данных, позволяющих оценить распределение числа неработающих полицейских машин, используется свой сегмент модели. Алгоритм работы этого участка был разобран в параграфе 5.11. Промежуточная выдача. Для требуемой промежуточной выдачи и окончания моделирования в конце 25-го дня используют последовательность блоков GENERATE—TERMINATE. Вопросы приоритетов. В модели есть вопросы, касающиеся уровней приоритетов, которые заслуживают внимания. Они будут обсуждены при разборе логики модели в конце примера. Перед тем, как перейти к этому, следует рассмотреть приводимую ниже блок- схему, составленную согласно изложенным соображениям. 3. Таблица определений. Единица времени: 1 мин. Таблица 7В.1. Таблица определении примера моделирования 7В Элемент QP5S Транзахты: 1-й сегмент модели 2-й сегмент модели 3-й сегмент модели 4-й сегмент модели 5-й сегмент модели Приборы: Функции: JOBS XPDIS Очереди: TRUBL Таблицы: LENTH Интерпретация Машина, предназначенная для планового профилактического осмотра Полицейская машина, нуждающаяся во внеплановом ремонте Хозяин, открывающий гараж каждое утро и закрывающий его спустя 8 ч Наблюдатель, следящий за содержимым очереди для опенки распределения числа неиспрашгых полицейских машил: PI — параметр, в который заносятся отметки врс- мепи; Р2 — параметр, и который заносится длина очереди Траизакт, обеспечивающий промежуточную выдачу Смотровая яма, на которой производится осмотр и ремонт Описывает равномерное распределение от 1 до 3; получаемую величину можно интерпретировать как число, на единицу меньшее числа автомобилей, прибывающих ежедневно на плановый осмотр Экспоненциальная функция распределения Очередь, в которой стоят неисправные полицейские машины Таблица, в которую наносят наблюдения за числом неисправных полицейских машин 415
4. Блох схема. GENERATE V444Q,.I,;2 | (NEXT1) < > FN$JOBS ^(NEXTI) SEIZE Л ADVANCE 120,30 ПРИХЗД ГЛАВНОЙ МАШИНЫ ЕЖЕДНЕВНО В 8 Ч УТРА ВВОД ВСЕХ ДНЕВНЫХ мдиш ЗАНЯТЬ ЯМУ ОБСЛУЖИВАНИЕ НА ЯМЕ RELEASE TERMINATE V ОСВОБОДИТЬ ЯМУ МАШИНА ПОКИДАЕТ МОДЕЛЬ 1-Й СЕГМЕНТ МОДЕЛИ j GENERATE I к я QUEUE TRUBL PREEMPT BAY^ ПРИХОД ВНЕПЛАНОВОЙ ПОЛИЦЕЙСКОЙ МАШИНЫ ВСТАТЬ В ОЧЕРЕДЬ НЕРАБОТАЮЩИХ ЗАХВАТИТЬ ЯМУ У ПОЛЬЗОВАТЕЛЯ. НЕ ИМЕЮЩЕГО ПРАВА ЗАХВАТА ADVANCE I50,FN$XPD1S ОБСЛУЖИВАНИЕ НА ЯМЕ PETURN К^т7 rz DEPART TRUBL TERM1NATE__^ ВЕРНУТЬ ЯМУ ВЫЙТИ ИЗ ОЧЕРЕДИ "НЕРАБОТАЮЩИГ ЛОЛИЦЕЙСКАЯ МАШИНА ПОКИДАЕТ МОДЕЛЬ 2-Й СЕГМЕНТ МОДЕЛИ
GENERATE w ,4B1„3 | PREEMPT PR 2*£ ЕЖЕДНЕВНЫЙ ПРИХОД ХОЗЯИНА В КОНЦЕ ВОСЬМОГО ЧАСА ЗАХВАТИТЬ ЯМУ ДО ОКОНЧАНИЯ РАБОТЫ ADVANCE 960 RETURN w TERMINATE ^J3 ПРОЖДАТЬ 16 Ч ВЕРНУТЬ ЯМУ ДЛЯ НАЧАЛА НОВОГО РАБОЧЕГО ДНЯ РАБОТА ПО ОТКРЫТИЮ- ЗАКРЫТИЮ ЗАВЕРШЕНА 3-Й СЕГМЕНТ МОДЕЛИ GENERATE I ,7200..в241 1 TERMINATE GENERATE ( ( MP) ^ \ I .1.1.2.F 1 ' MARK " 2,Q$TRUBt XO ASSIGN J Л^ <Y TABULATE MP1 Л tRANSPER 0 lenth) (WATCH) 5-Й СЕГМЕНТ МОДЕЛИ (СЕГМЕНТ ТАЙМЕРА) Рве. ТВЛ. Блок-схеыа для примера 76 ВОЙТИ В СЕГМЕНТ ПОЛОЖИТЬ РГ РАВНЫМ АБСОЛЮТНОМУ ОТМЕНИ ПОЛОЖИТЬ П РАВНЫМ ЧИСЛУ-НЕРАБОТАЮЩИХ- В ДАННЫЙ МОМЕНТ ЖДАТЬ ИЗМЕНЕНИЯ ВРЕМЕНИ ЗАПИСАТЬ РЕЗУЛЬТАТ НАБЛЮДЕНИЯ ПЕРЕЙТИ К СЛЕДУЮЩЕМУ НАБЛЮДЕНИЮ 4-Й СЕГМЕНТ МВДЕЛИ 27 Т. Дж Шрайбер 417
5. Распечатка программы. 1 2 3 ♦ 5 6 GENERATE SPLIT NEXT! SEIZE ADVANCE RELEASE TERMINATE 1440..1..2 FNSJ0BS.NEXT1 BAY у го ,эо BAY BLDCK NUMBER *LOC OPERATION А,В,С,D,E,F,G COMMENTS SIMULATE ft » FUNCTION DEFINITIDN(S) * XPOIS FUNCTION RN1.C24 EXPONENTIAL DISTRIBUTION FUNCTION D.O/. 1,.104/.2,.222/.3,.355/.ft..509/.S,.69/.6,.915/ .7, I. 2/.75. I .36 .8,1.6/.BS, 1.63/.86, 2. 12/.9^.2.3/. 92, 2.52/.94 .2.81/,9b.2.99/.96 .3.2 .97.3.6/.98.3.9/.99.4.6/.995,5.3/.998.6.2/,999.7/.9996,8 • NO. OF VEHICLES, «MINUS I», ARRIVING JD6S FUNCTION RN1.C2 EACH DAY FDR SCHEDULED MAINTENANCE 0,1/1,4 « • TABLE DEFINITION( S) * LENTH TABLE PZ.O,I,Wb . DISTRIBUTION OF PDL1CE CARS OUT • OF SERVICE FOR UNSCHEOULED REPAIR * * MODEL SEGMENT I (SCHEDULED MAINTENANCE SEGMENT) * MASTER VEHICLE ARRIVES EACH В A.M. BRING IN ALL THE DAY'S VEHICLES CAPTURE THE BAY AS A "SEIZER" USE Twt" BAY RELEASE THE BAY THIS VEHICLE IS SET TD GO * • mocel segment 2 (unscheduled repair of police cars) * 7 GENERATE 28BCFN&XPDIS,,.2 UNSCHEDULED POLICE CARS ARRIVE 8 OUEUF Tku8L GET IN "UltT DF SERVICE" OUEUL 9 PREEMPT BAY TAKE BAY FROM NON-PREEfePT1VE USER 10 ADVANCE 150 «FNSXPD1 Ь USE THE BAY 11 RETJRN BAY RET-JRN THE BAY 12 DEPART TRUBL LEAVE "OUT DF SERVICE" OUEUE 1.4 TERMINATE THIS PDLICE CAK IS SET TD GC * » MDDEL SEOMENT 3 (CLDSt-UP AND DPEN-UP SEGMENT! * 14 GENERATE lA40,,4BI,« 3 BOSS CDMES OAILY AT ENO DF ЦТ И HDUR 15 PREEMPT BAY,PR PRE-EMPT BAY TD STOP WORK 16 ADVANCE 960 LET 16 HUURS GO BY J 7 RETURN BAY RETURN BAY TO START NE* DAY'S »DRK IB TERMINATE CLOSE-ANO-DPEN TASK IS CDMPLtTE * * MDDEL SEGMENT 4 I DATA GATHERING FOR "DUT OF SERVICE" POLICE CARS) * SEED lHt SEGMENT SET PI = ABSOLUTE CLDCK SET P2 = NO. NDW "DUT OF SERVICE" WAIT FOR THE CLDCK TD CHANGE RECDRD THIS OBSERVATION GD SET UP FDR THC NEXT OBSERVATION * * MODEL SEGMENT 5 (TIMER SEGMENT) V 25 GENERATE 7200,. 62*1 TIMER CDMES AT ENO OF EACH STH DAY 26 TERMINATE I PRODUCE "SNAP" OR SHUT OFF TNC RUN * * CONTROL CARD(S) 19 20 21 22 23 24 WATCH GENERATE MAHK ASSIGN TEST N£ TABULATE TRANSFER , ., I, 1 .2.F 1 2.01TRUBL MP 1 ,0 LENTH,MP1 •ШАТСН START S,,1.1 ENO Рис. 7B.2. Распечатка программы примера моделирования 7В
CURRENT EVENTS CHAIN TRANS BDT BLOCK ПЯ St- MBA Ъ: Т MARK-TIME 12 2 г з io b76i PI о о о 62» 1 РЗ Р* SI Т| О» С| МС PC Pf 0 1 12 О о I 2 ОТ Е X S а е а а Е л 3 FUTUtlE EVENTS CHAIN TRANS ВОТ BLOCK PR М- MBA Ы T MARK-TIML 2 720 1 2 12 -S 720 I 11 89 12 13»«1 «4 T I .11 CI » «) INTERRUPT CHAIN TRANS BDT BLOCK PR SF MB» St Г MARK-TIME 6 52 2 6 6230 О О О О О О С I 1 PC 1 Рис. 7В.З. Распечатка некоторых результатов примера моделирования 7В: о — цсш. текущгч соСь.т> Л (koih-j пятою дин): б — цепь будущих событий (конец пятого дня); в — цепь нрерывлжй (конец пятого дня)
FAClL П* 8AV average UT ILI2AT10N .949 NUMBER ENTRIES 23 AVERAGE I[Mfc'/TRAN 257.52! SEIZING TRANS. NO. II) PREEMPTING TRANS. NO. [0 queue max[мим CONTENTS TRUBL 4 «AVERAGE TIlnE/TKANS AVERAGE TOTAL ZERO PERCENT CONTENTS ENTRtES ENTRIES ZEROS .221 13 «O = AVERAGE TIMC/TRANS EXCLUDING Z£KG ENTRIES AVEWAOF TIMF/TfiANS Ъ9Ь* Тьч SAVEBAGE TIMt/THANS i><Jb.764 TABLE NUMBER CURRENT CONTENTS Д) TABLE L6NTN ENTRIES IN TABLE ISO 3604C UPPER LIMIT 0 1 2 3 A REMAINING FREOUtNClES MfAN □ BSbK VEO frequency 29163 *;>74 I41S> 183 ?! ARbUMtNT ahe All zero .гьз .a.'i HfcR UF CfcNT ГОГАС B3. 17 12. 19 4 4 04 ,ьг .05 STANDAWO DEVIATION CuMULAT1VE Р£«СЬМГА<>Е a j. i <)b.3 99.4 ЧЧ.9 100.0 .646 .'540 t ими. at lvn Wf HJINiJER 16.В 4.6 • b .0 .0 Sum OF ARGUMENTS ЗЯ.0О0 7 7 4^.000 MULTJULb Oh MfcAJV -.000 j.«»r 7. в 94 1 I.84,; 1Ь.7в<» NON-w£ IGHTfcO WE ГйИТЬО DEVIATION FROM MEAN '.363 1 .0?! г-s оь 3.9*1 t>.377 Рнс. 7В.З. Продолжение: г — статистика приборов (конец 25-го дня); д — статистика очередей (конец 25-го дня); е — таблица (конец 25-го дня)
7. Обсуждение. Логика моделирования. В модам предполагается, что показание времени, равное единице, соответствует 8 ч утра первого дня моделирования. Заметим, что главная машина входит в модель для планового осмотра 1 момент времени I, выйдя из блока «GENERATE 1440,,1„2» (блок I, рис. 7В.2). Затем шокдая следующая главная машина поступает через 24 ч (операнд А блока GENERATE равен J440, т. е. числу минут в 24 ч). Первое появление траизакта-хозяина происходит в момент времени, равный 481, через блок «GENERATE 1440„481„3» (блок 14). Это соответствует окончанию восьмого часа первого дня. После этого другой транзакт- хоэяин поступает через 24 ч. Транзакт, обеспечивающий промежуточную выдачу, впервые появляется во время, равное 6241, выходя из блока «GENERATE 7200„6241» (блок 25 на рис. 7В.2). Момент временя 6241 соответствует концу восьмого часа пятого дня моделирования. После появления первого транзакта, обеспечивающего промежуточную выдачу, следующий транзакт появляется через каждые пять дней. TttXRW 7B.2. Величины приоритетов, югопэуемые в примере 7В Огнелт «дели 3 1 2 4 5 Интерпретация тратантов Хозяин Машины, прибывающие на плановый осмотр Полицейские машины, поступающие на внеплановый ремонт Транзакт, наблюдающий за очередью Транзакты, обеспечивающие выдачу на печать Уровень приоритета 3 2 2 1 0 Заметим, что для транзакта-иаблюдателя в 4-и сегменте модели параметры определены полными словами (см. блок 19 на рис. 7В.2). Если по умолчанию там были бы использованы дня параметров полуслова, вполне вероятно, что могла бы возникнуть ошибка переполнения. Дело в том, что процесс моделирования ве закончится до времени 35041 (что соответствует 25 дням плюс 8 ч, выраженным в минутах). Это означает, что временные величины, помещаемые в первый параметр транзакта-на- влюдателя, могут превысить значение 32767, что является наибольшей величиной, которую можно поместить в полуслово. Теперь рассмотрим приоритетную схему модели. Различные используемые приоритетные уровни помещены в табл. 7В.2. Чтение таблицы сверху вниз эквивалентно просмотру цепи текущих событий с начала до конца. Если в цепи текущих событий имеется транзакт-хозяин, то он стоит в начале цели; за ним следуют транзакты планового осмотра (при их наличии) и транзактм внепланового ремонта (если таковые имеются). Эти транзакты с приоритетом, равным 2, будут в общем случае перемешаны в смысле их расположения в цепи по отношению друг к другу. Наконец, идет наблюдатель за числом транзактов в очереди (который всегда находится в цепи текущих событий) и транзакт, обеспечивающий промежуточную выдачу (который появляется в цепи только ь конце каждого пятого дня). Хозяин имеет высший приоритет, потому что ему всегда должно удаваться закончить рабочий день путем захвата смотровой ямы. Что касается транзактов, связанных с текущим осмотром и внеплановым ремонтом, то при рассмотрении их приоритета требуется: J) чтобы он был ниже приоритета хозяина и 2) чтобы он был выше, чем приоритет транзактов промежуточной выдачи. Это последнее условие гарантирует, что все движение машин в модели перед каждой промежуточной выдачей будет полностью учтено. На транзакты внепланового ремонта существует дополнительное ограничение. Их приоритет- должен быть выше, чем приоритет наблюдателя за длиной очереди. Такой порядок гарантирует, что длина очереди перед тем, как производится наблюдение, полностью учтена. Это объясняет, почему приоритет наблюдателя за очередью меньше 2. Следующее соображение относительно наблюдателя заключается в том, что он должен стоять впереди транзакта, обеспечивающего промежуточную выдачу, с тем чтобы результат последнего наблюдения перед выдачей был включен в таблицу. Тем самым последовательно объяснена позиция наблюдателя позади полицейских машин и впереди тракзакта-выдачи. В действительности, как только транзакт- выдача появляется в цепи текущих событий, наблюдатель уже находится там (поскольку он всегда там). Это означает, что наблюдатель мог бы иметь такой же приоритет, как и тран- эакт-выдача, и их относительное расположение было бы всегда таким, какое требуется. Такое различие приоритетов в модели было сделано специально для того, чтобы подчеркнуть необходимое относительное расположение этих транзактов. Как показано выше, транзакт, обеспечивающий выдачу, имеет самый низкий приоритет для того, чтобы гарантировать, что выдача не произойдет до тех пор, пока состояние системы в данный момент модельного времени не будет полностью учтено. Распечатка программы. (Общее время работы процессора при моделировании на ЭВМ 421
IBM 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 — в конце. Однако, вообще говоря, порядок транзактов в распечатке цепи прерывания не будет совпадать с внутренним порядком в цепи. Это обясняется тем, что распечатка цепи прерывания всегда располагает информацию по возрастанию номеров транзактов. Вероятность того, что этот порядок совпадает с порядком внутренней организации цепи, весьма мала. В распечатке цепи меткой CI обозначен четвертый справа столбец. (CI означает «индикатор цепи»). Пробел или 1 в столбце CI соответственно означают, что транзакт находится либо в цепи пользователя, либо в цели прерывания. Значения 2 или 4 соответственно означают нахождение транзакта в цепи либо текущих, либо будущих событий. За исключением цепей пользователя, можно проверить эти утверждения по рис. 7В.З, а—в. Величины CI важны только для внутренних цепей. Пользователь не может обращаться к ним непосредственно. Наличие величин CI, по сути дела, излишне, так как различные цепи н так имеют свои назвавня. Два самых правых столбца в распечатке цепи обозначены PC (число захватов) и PF (флаг захвата). PC является счетчиком числа различных приборов, с которых в данный момент снят соответствующий транзакт. На рис. 7В.З, в в столбце PC стоят единицы, а на рис. 7В.З, а и б для цепей текущих и будущих событий в столбце PC стоят пробелы (что означает нуль). Единица в колонке PF означает, что соответствующий транзакт подлежит захвату. Если флаг захвата транзакта находится в положении «включен» (т. е. имеет величину 1), готовя-
' щннся захват произойдет в ближайший момент •. времени, когда транзакт войдет в блок >. ADVANCE с ненулевым временем задержки (см. !' также параграф 7.14). Если транзакт во время Захвата уже находится в блоке ADVANCE (подразумевается, что он помещен в цепь будущих событий), то концепция «неизбежного» мхвата не применяется; в этом случае транзакт немедленно выводится яз цепи будущих событий, и его дальнейшая судьба зависит от пользователя. На рис. 7В.З, а выведена статистика для прибора BAY в конце пятого дня моделирования. Заметим, что в распечатке статистики в столбцах «SEIZEING TRANS. NO» (ЗАНИМАЕТ ТРАНЗ. Щ и «PREEMPTING TRANS. N0» (ЗАХВАТЫВАЕТ ТРАНЗ. Щ стоят соответственно величины 9 и 10. Это совпадает с информацией о транзактах, приводимой в распечатках цепи прерывания и цепи будущих событий. Цепь прерывания показывает, что транзакт 10 является замещенным пользователем без права захвата прибора, как отмечалось выше; цепь будущих событий указывает на то, что транзакт 9 является в настоящий момент пользователем прибора на основании захвата. (Напомним, что в информации о цепях «следующий блок вхождения» NBA следует понимать как номер блока для того, чтобы определить, разрешен соответствующему транзакту захват прибора или нет.) На рис. 7В.З, дне показана статистика оче- ?еди и таблица в конце 25-го моделируемого дня. татистика очереди показывает, что среднее время ожидания обслуживания для полицейской машины, требующей внепланового ремонта, составляет 595 временных единиц, или около 10 ч. Рассмотрение статистики очереди также показывает, что в среднем 0,221 полицейских машин ожидают обслуживания, и одновременно самое большее четыре машины находятся в ожидании. За время, равное 25 дням, на внеплановый ремонт поступило 13 полицейских машин. В таблице LENTH на рис. 7В.З, е приведена более подробная информация об ожидающих обслуживания полицейских машинах, чем в статистике очереди. Средневзвешенное значение в таблице составляет 0,221. Эту величину следует понимать как среднее число ждущих в очереди полицейских машин, что совпадает с соответствующей величиной в статистике очереди. Табличная информация указывает также, что 83% времени не было полицейских машин, ожидающих внепланового ремонта, 12% времени в ожидании находилась одна машина, 4% — две машины и только 0,52% и 0,05% времени одновременно в ожидании были соответственно три и четыре машины. 7.18. Упражнения l.a). Какую дисциплину обслуживания применяет парикмахер на рнс. 2А.1 (блок-схема для примера 2А), если «SEIZE JOE» заменить на «PREEMPT JOE», a «RELEASE JOE» заменить на «RETURN JOE?» б). Тот же вопрос, что и в п. а. но предположить, что «SEIZE JOE» надо заменить на «PREEMPT JOE,PR». в). Показать четыре различных способа замены блоков SEIZE и RELEASE на рис. 2В.2 (блок-схема примера 2В) блоками PREEMPT и RETURN без изменения дисциплины обслуживания «первым пришел — первым обслужен», применяемой парикмахером. г). На рис. 2С.З (блок-схема для примера 2С) дисциплиной обслуживания, используемой кладовщиком в кладовой является «первым пришел — первым обслужен внутри своего приоритетного класса». Какой будет дисциплина обслуживания, применяемая кладовщиком, при следующих изменениях в модели: 1) заменить оба блока «SEIZE CLERK» на блоки «PREEMPT CLERK» и оба блока «RELEASE CLERK» на блоки «RETURN CLERK», 2) в 1-м сегменте модели заменить блоки «SEIZE CLERK» и «RELEASE CLERK» соответственно на блоки «PREEMPT CLERK» и «RETURN CLERK», не внося других изменений; 3) в 1-м сегменте модели заменить блоки «SEIZE CLERK» и «RELEASE CLERK» соответственно на блоки «PREEMPT CLERK.PR» и «RETURN CLERK», не внося других изменений; 4) заменить оба блока «SEIZE CLERK» на блоки «PREEMPT CLERK.PR» и оба блока «RELEASE CLERK» на блоки «RETURN CLERK»; 5) во 2-м сегменте модели заменить блоки «SEIZE CLERK» и «RELEASE CLERK» соот- венно на блоки «PREEMPT CRELK» л «RETURN CLERK», не внося других изменений; 6) во 2-м сегменте модели заменить блоки «SEIZE CLERK» и «RELEASE CLERK» соответственно на блоки «PREEMPT CLERK.PR», и «RETURN CLERK», не внося других изменений . 2. Следующие вопросы относятся к.примеру 7В. а). Показать, как заменить очередь с именем TRUBL сохраняемой величиной. Выяснить, какие различия появятся в выходной информации в этом случае. б). Изменится ли логика модели, если в операнде В блока PREEMPT с номером 9 поместить PR (см. рнс. 7В.2)?
в). Показать, как следует изменить модель, чтобы не было необходимости использовать пару блоков SEIZE—RELEASE. г). Остается ли верной логика модели, если транзактам, моделирующим машины на плановом ремонте, назначить приоритет, равный единице? д). Предположим, что имеет место следующая последовательность событий. В конце некоторого дня смотровая яма занята машиной, поставленной на плановый осмотр. Ночью на внеплановый ремонт поступает полицейская машина. Описать, что произойдет в модели, когда гараж откроется в 8 ч утра следующего дня. е). Показать, какие изменения следует сделать в модели для того, чтобы можно было оценить распределение случайной величины «число машин иа плановом осмотре, не обслуженных к концу дня». 3. Модель в постановке примера 7В ведет себя так: гараж открыт 8 ч в день все семь дней в неделю. Было бы более реально, если бы гараж был открыт только с понедельника по пятницу. В этом случае в субботу и воскресенье не было бы плановых осмотров. Нужда во внеплановых ремонтах полицейских машин существует, конечно, все семь дней в неделю; действительно, они могут ломаться по субботам н воскресеньям так же, как и в другие дни недели. Все машины, сломавшиеся в выходные дни, будут накапливаться для обслуживания утром в понедельник. Далее, все необслуженные полицейские машины в гараже нз-за его закрытия в пятницу в ныходные дни не работают. Показать, каким образом следует изменить модель примера 7В, чтобы гараж был закрыт по субботам и воскресеньям. Предположить, что моделирование начинается в понедельник утром. 4. В примере 7В неясен размер выигрыша, получаемый от того, что полицейским машинам, поступающим на внеплановый ремонт, разрешено захватывать пользователя (при его наличии) смотровой ямы. Изменить модель так, чтобы поступающие полицейские машины ждали своей очереди на обслуживание по принципу «первым пришел — первым обслужен». Провести затем моделирование новой системы, сравнить и сопоставить результаты с результатами в случае разрешения захвата. Для того чтобы сделать сравнение как можно более достоверным, промоделировать обе альтернативы при идентичных условиях. Это означает, что модель примера 7В должна быть модифицирована так, чтобы было возможным управление условиями эксперимента. 6. Рассмотрим следующий вариант примера 7В. Как и ранее, полицейские машины поступают на внеплановый ремонт по закону Пуассона в среднем через каждые 48 ч. Однако машины разделяют на две категории в зависимости от сложности предстоящего ремонта. Время ремонта для машин категории 1 распределено экспоненциально со средним, равным 2 ч. В этой категории находится половина машин. Остальные машины принадлежат категории 2, и их время ремонта также распределено экспоненциально со средним, равным 4 ч. Если машина категории 2 занимает смотровую яму в момент поступления машины категории 1, то последней разрешено захватить яму. Как и ранее, машинам, поступающим на внеплановый ремонт, вне зависимости от их категории разрешено захватывать яму в случае, если она занята машиной планового осмотра. Показать, как следует изменить модель примера 7В, чтобы отразить эти изменения. 6. В упражнении 6 параграфа 3.17 описано, как распределяются клиенты в цехе в центре координации работ. Через центр координации работ проходят три различных типа клиентов. Представляет интерес промоделировать центр для того, чтобы оценить предполагаемое время ожидания (включая обслуживание) для каждого из трех типов клиентов, когда дисциплина обслуживания а) «первым пришел — первым обслужен» и б) «первым пришел — первым обслужен внутри своего класса приоритетов». Построить модели для указанного упражнения, расширив их таким образом, чтобы можно было оценить время ожидания (включая обслуживание), и рассмотрев следующие две дополнительные дисциплины обслуживания: 1) разрешен один уровень захвата в зависимости от относительной важности клиента; 2) разрешены два уровня захвата в зависимости от относительной важности клиента. Осуществить управление условиями эксперимента таким образом, чтобы можно было сравнивать различные дисциплины обслуживания при одинаковых временных характеристиках систем. 7. Рассматривая сегмент блок-схемы на рис. 7.20, предположим, что программист присвоил блоку ADVANCE символическое имя «USERS» и трактует величину W$USERS— 1 как число уровней захвата, имеющихся в данный момент. Почему это утверждение ошибочно? 8. В модели на приборе 5 принятая дисциплина обслуживания соответствует комбинации М в табл. 7.5. Пары блоков PREEMPT— RETURN должны быть использованы в двух различных участках модели. Показать, какие изменения следует внести в рис. 7.20, ограничившись комбинацией М, так чтобы получить правильное решение при заданных условиях. 9. В табл. 7.5 комбинация J попадает в категории 2 и 5. Есть ли при моделировании комбинации J существенная разница, зависящая
от того, методика какой категории используется? Объяснить. 10. Как указано в параграфе 7.2, блокировка, возникающая у блока TEST, работающего в режиме отказа, является неоднозначной. Это означает, что если в среднем у блока TEST на рис. 7.20 задерживается много транзактов, то это может привести к сравнительно большому времени выполнения. Показать сегмент блок- схемы, выполняющий те же действия, что и на рис. 7.20, и помещающий все ждущие тран- закты в цепь пользователя. 7.19. Проверка логического состояния приборов, подлежащих захвату В гл. 2 был введен блок SEIZE и было указано, что транзакт может проверить логическое состояние прибора непосредственно, просто пытаясь войти в блок SEIZE. Затем, в гл. 5 был введен блок GATE, посредством которого тран- закты могут косвенно проверять логическое состояние приборов. Проверка, осуществляемая блоком GATE, является косвенной, потому что она сама по себе не является реальной попыткой занять прибор. Затем, после ввода в гл. 5 блока SELECT, появился другой метод косвенной проверки логического состояния приборов. Наконец, при введении в гл. 6 булевских переменных был обеспечен еще один метод косвенного определения логического состояния прибора. Все указанное выше относится к возможности проверить, находится ли прибор в пользовании- Теперь, после ввода понятия захвата, вопрос, находится ли прибор в пользовании, может быть неполным; существует дополнительный вопрос, используется оя захватчиком или иег. Это означает, что теперь важным становится тип пользователя. В GPSS разработчику дана возможность различать, какой прибор занимает пользователь. Это обеспечивается введением дополнительных логических мнемонических указателей, которые можно использовать для проверки состояния приборов в блоках GATE и SELECT. Предусмотрены также дополнительные логические операнды для расширения сферы условий, которые можно представить с помощью булевских переменных. Ниже обсуждены указанные мнемонические указатели и логические операторы. 7.19.1. Дополнительные логические мнемонические указатели для блоков GATE и SELECT 6 параграфах 5.21 и 5.22 были введены логические указатели U и NU, являющиеся вспомогательными операторами, использующимися с блоками GATE и SELECT для проверки логического состояния приборов. Указатели U и NU соответственно означают «используется» и «не используется». Если прибор используется, то условие «используется» истинно независимо от того, является пользователь захватчиком или нет. Иногда важно знать не только то, что прибор используется, но и то, является ли пользователь захватчиком или «занимателем», т. е. произошло ли включение прибора в блоке PREEMPT или в блоке SEIZE. Для этой дели предназначены два дополнительных логических указателя, показанные в табл. 7.6, которые используют в блоках GATE и SELECT. Логический указатель I означает «захвачено», аналогично, N1 означает «не захвачено». Таблица 7.6. Дополнительные логические указатели для блоков GATE и SELECT Логический указатель I N1 Значение Проверка прибора на использование захватчиком Проверка прибора на неиспользование захватчиком К логическим указателям в табл. 7.6 следует подходить с осторожностью. Так, утверждение, что прибор ие используется захватчиком, вовсе не означает, что он вообще не используется. «Не используется захватчиком» может быть истинно, а в то же время «не используется» — ложно. Аналогично, «используется захватчиком» может быть ложно, а в то же время «используется» — истинно. На рис. 7.21 приведены несколько примеров использования логических указателей, записанных в табл. 7.6. Когда транзакт поступает в блок GATE на рис. 7.21, а, он продвигается в последующий блок в случае, если прибор ALINE используется захватчиком; в противном случае он поступает в другой блок с именем DTOUR. При поступлении транзакта в блок SELECT (рис. 7.21, б) интерпретатор просматривает приборы с I -го по 5-й в поисках первого (если найдется), который в настоящий момент ие используется захватчиком. Если такой прибор найден, его номер помещается в первый параметр транзакта, вошедшего в блок SELECT, который затем продвинется в следующий по порядку блок. Если же такого прибора не обнаружится, этот транзакт поступит в блок с именем WAIT. Теперь рассмотрим обстоятельства, при которых один или несколько транзактов могут быть заблокированы блоком «GATE I» или «GATE NI», работающим в режиме отказа. Эти обстоятельства относятся к простой кате- 425
*) л Рис. 7.21. Примеры использования логических указателей из табл. 7.6: а — блок GATE: б — блок SELECT гории «причина и средство ее устранения» и, таким образом, определяются как однозначные блокирующие условия (см. параграф 7.2). Далее, как уже указывалось в параграфе 7.13, транзакт, заблокированный блоком PREEMPT, также подпадает под однозначное блокирующее условие. Эти блокирующие условия сведены в табл. 7.7, представленную как дополнение табл. 7.1. Заметим, что для снятия блокирующих условий, возникающих у блоков PREEMPT и «GATE NI», требуется одно и то же средство — выполнение соответствующего блока RETURN. В результате, вместе они составляют только одну категорию блокирующего условия. Таблица 7.7. Два дополнительных однозначных блокирующих условия и методы нх устранения Номер блокирующего условия "ч> Блок (блоки), создающий блокирующее условие 10 11 /PREEMPT! \QATE NI / GATE I Блок, выполнение которого снимает блокирующее условно ' RETURN- PREEMPT 1 В предположении, что блокировка возникнет только из-за данного прибора. Как объяснялось выше, когда транзакт встречает однозначное блокирующее условие, включается его индикатор просмотра. Таким образом, транзакт становится пассивным в смысле просмотра, н происходит экономия времени выполнения операции во время последовательного просмотра цепи текущих событий. Затем, когда выполняется соответствующий освобождающий блок, интерпретатор выключает индикатор просмотра у всех необходимых заблокированных транзактов, превращая их тем самым вновь в активные, и включает флаг изменения состояния. При возобновлении последовательного просмотра цепи текущих событий делается попытка продвинуть дальше в модели ранее заблокированные транзакты. Из табл. 7.7 ясно, почему при выполнении блока PREEMPT включается флаг изменения состояния. Дело в том, что могут существовать транзакты, заблокированные блоком GATE, который работает в режиме отказа, и ожидающие, когда прибор будет находиться в состоянии захвата. Чтобы учесть эту возможность, интерпретатор возобновляет просмотр цепи текущих событий всякий раз после захвата прибора. 7.19.2. Дополнительные логические операции для булевских переменных В табл. 6.1 из параграфа 6.2 приведен список логических операторов, которые могут быть использованы в булевских выражениях для ссылок яа логические состояния приборов, многоканальных устройств и логических переключателей. Представленные там логические операторы для приборов — это FU (или F) и FNU соответственно для «использующегося прибора» и «неиспользующегося прибора». Аналогично случаю с блоками GATE и SELECT эти операторы не различают приборов, использующихся «захватчиком» и «занимателен». В связи с этим для построения булевских выражений используются два дополнительных логических онера- тора, показанных в табл. 7.8. Обычно при использовании этих операторов необходимо указывать номер или символическое имя рассматриваемого прибора. Например, предположим, что булевская переменная должна принимать значение «истина» только тогда, когда прибор LARRY используется «занимателем». На рис. 7.22 показана булевская переменная, отве- Таблнца 7.8. Дополнительные логические операторы для приборов Логически а оператор FI FNI Состояние, и котором находится рассматриваемый объект Прибор используется захватчиком Прибор не используется захватчиком 426
L0C*1 04 rf*MoTi)«Kj»|asp/ ^■^nff^ffl^^^^iirYto j.«.сел/ JDOOll »уа».1,*.11.к , liU,mitYJUn^LMgr ,„ _,_■ . •-....- Рис. 7.22. Пример использования логического оператора из табл. 7.8 в булевской переменной чающая этому требованию. Заметим, что не существует логического оператора, который один мог бы заменить переменную на рис. 7.22. 7.20. Пример моделирования 7С. Второе обращение н примеру 7В 1. Постановка задачи. В примере 7В рассматривали моделирование авторемонтного гаража. Поскольку город мал, в гараже была только одна смотровая яма и один механик. Машины, принадлежащие городу, использовали гараж только для планового осмотра. Однако, как только полицейская машина требовала внепланового ремонта, ей было разрешено захватывать яму, если текущим пользователем была машина, поставленная на плановый осмотр. Поводом для такой дисциплины обслуживания, позволяющей захваты, являлось желание минимизировать число полицейских машин, не работающих из-за потребности во внеплановом ремонте. Промоделируем теперь ту же систему на более высоком уровне, предположив, что город достаточно велик для того, чтобы иметь пять смотровых ям и пять механиков в авторемонтном гараже. Пусть число машии, прибывающих ежедневно на плановый осмотр, распределено равномерно между 12 и 18 вместо распределения между 2 и 4. Пусть полицейские машины поступают на внеплановый ремонт также по закону Пуассона, но с интенсивностью пять машин каждые 2 дня вместо одной каждые 2 дня. Используем ту же дисциплину обслуживания с захватами, что и в примере 7В, и сделаем те же предположения, что и там. А именно, предположим, что механики работают 8 ч в день без перерыва, и пренебрежем вопросом «суббот и воскресений». Выполним прогон модели для 25 дней и затем сравним распределение числа неработающих машии с их числом в примере 7В. Произведем также распечатку статистик в конце каждого пятого дня, включая распечатку всех цепей, используемых в модели. 2. Метод построения модели. Подход к построению модели повторяет подход, примененный в примере 7В, в том смысле, что используются пять сегментов модели. В сегментах 1, 2 и 3 по сравнению с примером 7В потребуются некоторые модификации, которые будут обсуждены ниже. Перед тем, как обсуждать отдельные сегменты, заметим, что из постановки задачи следует однородность комбинаций «яма—механик». Это означает отсутствие у них индивидуальных характеристик, в противном случае было бы необходимым моделировать каждую комбинацию в отдельности. Несмотря на это, нельзя использовать для моделирования этих пяти комбинаций многоканальное устройство, поскольку захват многоканального устройства не допускается. Поэтому, несмотря на однородность, все пять комбинаций «яма—механик» должны быть смоделированы пятью приборами, работающими параллельно. Теперь, после объяснения причины использования пяти параллельных приборов, можно перейти к обсуждению сегментов модели. 1-й сегмент модели (сегмент планового ос- мотра). Вспомним, что в примере 4D (система с несколькими очередями в банке) используются приборы, работающие параллельно. Клиент, прибывающий в банк, либо подходит к свободному в данный момент кассиру, либо становится в конец самой короткой очереди. Таким образом, в модели банка перед каждым прибором была организована самостоятельная очередь. В рассматриваемой системе предполагается наличие в гараже только одной очереди, состоящей из машин, поступающих на плановый осмотр. В начале рабочего дня, в 8 ч, машины, поступившие на плановый, осмотр, не назначают на конкретные смотровые ямы, если они вынуждены ждать. Они просто выстраиваются одна за другой в единственную очередь. Когда машины доходят до начала очереди, они поступают на любую яму, освобождающуюся первой. Таким образом, дисциплина обслуживания для машин, поступающих на плановый ремонт, может быть охарактеризована как «система с одной очередью и несколькими приборами». В описанной системе необходимо принять два решения. 1. Каким образом машина, поступившая на плановый осмотр, в начале рабочего дня узнает, что есть для нее свободная смотровая яма, которую она можег занять, или что она должна встать в очередь? 2. Когда подходит время для ожидающей машины занять яму, каким образом она узнает, какая из ям свободна? Как и в случае модели банка с несколькими очередями, для ответа на эти вопросы используется блок SELECT. Фактически, транзакт, подлежащий плановому осмотру, может ответить на указанные вопросы iidocto путем входа в блок «SELECT NU 1,1,5,„WAIT». Но в этом 427
случае возникает дополнительный вопрос: что будут делать транзакты, подлежащие плановому осмотру, если они направляются не в следующий по порядку блок? В модели банка с несколькими очередями в аналогичной ситуации транзакты направлялись в другой блок SELECT, где искали самую короткую очередь, а затем ожидали в цепи текущих событий, будучи заблокированными однозначным блокирующим условием. В нашем же случае системы с одной очередью и индивидуальными приборами транзакты, подлежащие плановому осмотру, которые должны ожидать, не могут встать в очередь к определенной яме. Для них, таким образом, нет возможности продолжать ожидание ни в однозначном, ни в неоднозначном блокированном состоянии в цепи текущих событий. Где же они могут ждать? Существует только одна возможность. Они должны ожидать в цели пользователя. А именно, когда транзакты планового осмотра выходят из блока «SELECT 1,1,5,,,WAIT» и поступают не в еле- дующий по порядку блок, они должны поступить в блок LINK, работающий в безусловном режиме. Тем самым такие транзакты будут ожидать, находясь в модели в пассивном состоянии. Затем, когда транзакт планового осмотра освободит смотровую яму, он может вывести одну из ожидающих транзактов цепи пользователя и направить его обратно в блок «SELECT NU 1,1,5, „WAIT». Вернувшись в блок SELECT, транзакт, подлежащий плановому осмотру, будет иметь возможность выбрать определенную смотровую яму; затем, поступив в следующий после блока SELECT блок, он попадет в блок SEIZE, став тем самым пользователем ямы путем ее занятия. 2-й сегмент модели {внеплановый ремонт полицейских машин). Схема, только что описанная для 1-го сегмента модели, может быть также применена ко 2-му сегменту. Полицейские машины внепланового ремонта также подвержены дисциплине обслуживания «с одной очередью и несколькими приборами индивидуального пользования». Вначале может показаться, что в системе никогда не возникнет очередь из машин, подлежащих внеплановому ремонту, так как для возникновения этой очереди все пять смотровых ям должны быть заняты обслуживанием машин внепланового ремонта. Но это не так. У всех машин, поступающих в гараж на внеплановый ремонт во внерабочее время, нет другого выбора, кроме ожидания. Следовательно, в описываемой системе время от времени будет возникать очередь из полицейских машин, поступивших на внеплановый ремонт. Тем не менее у 2-го сегмента есть два существенных отличия от 1-го. Прежде всего транзакты, проходящие через 2-й сегмент, имеют право захватывать смотровую яму. Эти транзакты проходят последовательно один или оба указанных ниже шага принятия решения. 1. Имеется ли свободная яма? Если да, занять ее. В противном случае перейти к следующему шагу. 2. Имеется ли яма, которая занята, но не захвачена? Если да, захватить ее. В противном случае стать в конец цепи пользователя, где ожидать момента освобождения какой-либо ямы, используемой одним из захватчиков. Блоками, соответствующими шагам 1 и 2, могут быть соответственно блоки «SELECT NU 1,1,5,„SCAN3» и «SCAN3 SELECT N1 l,l,5,„NOLUK». Первый из блоков SELECT аналогичен такому же блоку в 1-м сегменте модели. Существенной чертой второго блока SELECT является использование логического указателя N1 (вместо NU). Таким образом, вначале полицейские машины ищут незанятый прибор, а в случае необходимости переходят к поиску незахва- чениого прибора. Если же из второго блока SELECT онн переходят не к следующему по порядку блоку, то этим блоком является блок с меткой NOLUK, где они поступают в цепь пользователя посредством блока LINK, работающего в безусловном режиме. Другим отличием от 1-го сегмента модели является то, как ведет себя транзакт, поступивший на внеплановый ремонт после того, как он будет обслужен после захвата смотровой ямы. Зная, что в настоящий момент существует яма, доступная для захвата, и определив ее номер, этот транзакт вначале попытается вывести транзакт нз цепи пользователя, составленной из транзактов, ожидающих внепланового ремонта, и послать его на захват этой ямы. Но существует возможность того, что цепь пользователя, содержащая эти «специальные» (т. е. внеплановые) транзакты, пуста. В этом случае должна быть сделана попытка вывести транзакт из «обычной» цепи пользователя (т. е, из цепн пользователя, содержащей транзакты, предназначенные для планового осмотра) и послать его на занятие освободившегося прибора. Фактически, если специальная цепь пользователя пуста, транзакт внепланового ремонта просто выбирает альтернативный выход из блока UNLINK во 2-м сегменте модели и поступает в блок UNLINK, находящийся в 1-м сегменте и имеющий отношение к обычной цепи пользователя. 3-й сегмент модели {сегмент открытия и закрытия). Транзакт-хозянн, проходящий через 3-й сегмент модели, должен выполнять несколько более сложные функции, чем аналогичный транзакт-хозяин в примере 7В. Это осуществляется двумя способами. Прежде всего, вместо захвата единственного прибора 428
в конце дня, хозяин должен захватить все пять приборов в модели. Это удобно сделать в цикле. Аналогично, в начале каждого рабочего дня хозяин должен вернуть все пять приборов, двигаясь 5 раз по циклу. В примере 7В хозяин заканчивал выполнение своих функций после возврата пользователям единственного прибора в начале дня. В данном примере его функции не исчерпываются возвратом всех приборов, и вот почему. В примере 7В все машины, поступившие в течение ночи на внеплановый ремонт, ожидали в цепн текущих событий. Таким образом, поскольку в начале дня просматривалась цепь текущих событий, соответствующим транзак- там была дана возможность захватить смотровую яму, если позволяли условия. В противоположность этому, в настоящем примере все машины, поступившие на внеплановый ремонт во внерабочее время, ожидают в цепи пользователя, а не в цепи текущих событий. Хозяин должен вывести их оттуда и поместить в цепь текущих событий: в противном случае, интерпретатор GPSS не обнаружит их при просмотре цепн текущих событии во время открытия. Если же интерпретатор не обнаружит их в момент открытия, им не будет дана их законная возможность захвата смотровой ямы, и логика модели нарушится. Существует еще одна особенность 3-го сегмента модели в данном примере, отличающая его от примера 7В. Она связана с уровнями приоритета. Однако сейчас мы не будем обсуждать общую схему уровней приоритетов, использованную в модели, отложив это на буду- щее. Вместо этого целесообразно в качестве следующего этапа изучить блок-схему в свете приведенного ее описания, не вникая в соображения приоритетных уровней. 4-й и 5-й сегменты модели соответствуют сегменту сбора результатов и сегменту таймера. Оба они могут быть использованы в данном примере в том же виде, что и в примере 7В. 3. Таблица определений. Единица времени: 1 мин. Таблица 7С.1. Таблица определений примера моделирования 7С Элемент GPSS Транзакты: 1-й сегмент ли 2-й сегмент ли 3-й сегмент ли 4-й сегмент ли 5-й сегмент ли Приборы: 1, 2, 3, 4 в 6 Функции: JOBS XPDIS Очереди: TRUBL Таблицы: LENTH моде- моде- моде- моде- моде- Цепи пользователя: REG (для них) SPEC (для циальных) обыч- еяе- Интерпретация Машина, предназначенная для планового ремонта Полицейская машина, нуждающаяся во внеплановом ремонте Хозяин, открывающий каждое утро гараж и закрывающий его спустя 8 ч Наблюдатель, следящий за содержимым очереди TRUBL для оценки распределения неработающих полицейских машин: Р1 — параметр, в который заносятся показания времени; Р2 — параметр, в который заносится величина очереди Гранзакт, осуществляющий выдачу на печать Пять ремонтных ям, на которых производят осмотр и ремонт Описывает равномерное распределение от К до 17; полученная величина интерпретируется как число, на единицу меньшее числа машин, ежедневно прибывающих для планового осмотра Экспоненциальная функция распределения Очередь, в которой находятся полицейские машины в период бездействия Таблица, в которую заносится наблюдения за числом неработающих полицейских машин Место, где машины, поступившие на плановый осмотр, ожидают своей очереди попасть иа смотровую яму Место, где полицейские машины, поступившие на внеплановый ремонт, ожидают своей очереди попасть на смотровую яму 429
4. Блок-схема. GENERATE ! L. 576,FN$XPD!S„,3| HH PRIOR ITY ЕГ= 1)РСБЫТЯЕ ВКЕГ ЛАНОВЫХ ПОЛИЦЕЙСКИХ МАШИ К НАЗНАЧИТЬ ВЫСШИЙ ПРЧОРЙТЕТ СЛЕДУЮЩЕМУ СОБЫТИЮ ЗАВЕРШЕНИЯ ОБСЛУЖИВАНИЯ QUEUE "Ь^,_ GENERATE I L I440.,l„ 5 i SPLIT ! fN$JOBS (SCAN! J (SCANI) ,, ^yl" " ^"""Si SELECT NU 4_^ 1.1,3... SEIZE i/p' AOi/AMGF 120,SO IT. HELEASE ПРИБЫТИЕ ГЛАоИОЙУАЫЯИЫ СЖГДНЕ8Н0 В S Ч УТРА ВВОД ВСЕХ ЬНЕВНЫХ МАШИН ЕСГЬ.'Г. ч'еипз/^уемая 5АНЯ1ЬЯЧУ ОКДУЖКВАИЧЕ НА ИМ* ССВ2БОДЙ5Ь ЯМУ I UNLi.s'K 1 Hnu.N) м REG 1 (NUN)' > f$4_ I'd l <■ Г -..■«"' ' '— V,<! * .(V i i ■ft v ^...^' UNLItA u j ПЗПЛ4Т , ''.-".A-'inm/W I (ECi.4 cC" !>) ! IJA С'ЕСЛУАПВАМЕ *r fGOAN;;j Л TERMINATE., J I fMitivM,', ПОКИДАВ I l.'ty=ill s* —i J N4 !. ...■ B Is 0 (iAPEP С »> \ •■cu p" 1 1 1 L_ Л JC!" ".» , -■ *. _I\|K i л' ./ »"' "\ "r-""i 1 I jf.FCJ i s -o BCTAlb 5 ОЧЕРЕДЬ НЕИСПРАВНЫГ ЕСТь ЛИ 'НЕИСПОЛЬЗУЕМАЯ ЯМА? ЕСЛИ ДА" ВОСПОЛЬЗОВАТЬСЯ ЕЮ. ЕСЛИ НЕТ .ПРОВЕРИТЬ ВОЗМОЖНОСТЬ ЗАХВАТА ЗАХВЙТИЬЯМУ СЕСЛУМРЕАНйЕ НА ГМЕ ЬЕРйУТЬ ЯМУ u-.EJEAli WCflFABHi IX" rtcwiir:vy СЛЕДУЮЩЕЙ ыищшьной-. 1:лишэйнет. .■тйтч '!А Лг'Ч.тг.:у TrbWti3ft- ПОЛИЦЕЙСКАЯ 1,№ДАЕТ МОДЕЛЬ EC'fc Ml ^ЗАХВАЧЕННАЯ ЯМА' ( '*; ■'.'.'...'ЛиЦ, ЕЕ ГСТ'.Г!. Ч ".">ГцКЧГЫЮЙГ 1-Й СЕГМЕНТ МОДЕЛИ 2.?.СХЖ'.\ ^пд: ..j-i / Й |У е.н 1 м,--т 'V •' • ■ , i!"iirj'l JI.I /."* U с «V V » •"''V ф-■'■•!: ' "Г '• ЦП'', f'tl' НС ир| I""■" '' ГЯ
GENERATE I440„48l„2 m PRIORITY I 1.5 ASSIGN «CLOSE) 1 } PREEMPT PR LOOP ADVANCE 980 Q ASSIGN J (OPEN) RETURN W LOOP (SCAN3) SPEC \\X Vj UNLINK TERMINATE ЕЖЕДНЕВНЫЙ ПРИХОД ХОЗЯИНА 8 КОНЦЕ ВОСЬМОГО ЧАСА УСТАНОВИТЬ ПРИОРИТЕТ ТАК, ЧТОБЫ ХОЗЯИН ИМЕЛ ВОЗМОЖНОСТЬ ЗАХВАТА УСТАНОВИТЬ ПАРАМЕТР ДЛЯ СЧЕТЧИКА ЦИКЛОВ ЗАХВАТИТЬ ЯМУ С НОМЕРОМ Р1 ДЛЯ ПРЕКРАЩЕНИЯ РАБОТЫ ИДТИ НА ЗДХЕАТ ' СЛЕДУЮЩЕЙ ЯЙ1Ы (Если :сгы ПРОЖДАТЬ IS ЧАСОВ УСТАНОВИТЬ ПАРАМЕТР ДЛЯ СЧЕТЧИКА ЦИКЛОВ ВЕРНУТЬ ЯМУ ДЛЯ НАЧАЛА НОВОГО РАБОЧЕГО ДНЯ ИДТИ НА ВОЗВРАТ СЛЕДУЮЩЕЙ ЯМЫ ■ЕСЛИ ЕСТЬ) ПОЗВОЛИТЬ ЕСЕМ НАХОДЯЩИМСЯ В ЦЕПИ СПЕЦИАЛЬНЫМ" ПОПЫ- ТДТоСЯ ЗАНЯТЬ ЯМУ РАБОТА ПО ОТКРЫТИЮ-ЗАКРЫТИЮ" ЗАЗЕРШСНА 3-Й СЕГМЕНТ МОДЕЛИ »"„;,.!!:,!» &,ок-схема пР»ы<:ра моделирования ТС: 4-й и 5-й сегменты модели аналогичны 4-.му и 5-му сегментам модели в примере /В н поэтому здесь не повторены
5. Распечатка программы. BLOCK NUMBER OPERATION SIMULATE А.в.С. O.E.F.C COMMENTS FUNCTION DEFINITJONIS) CARD NUMBER I г э XPDIS FUNCTION RNI.C24 EXPONENTIAL DISTRIBUTION FUNCTION O.O/. 1, .10*/.2..222/.3,.3S5/. 4..509/.S»-69/.6..9 IS/.7, I.2/.75. 1.3B .в.1.6/.а4, t.e3/»ee,2.12/.9.2.3/.92.2.S2/..94,2.81/.95»2.99/.96.3.2 .9 7.3.5/.98,3.9/.99.4.6/.995.5.3/.998.6.2/.999,7/.9998,в ЛО. OF VEHICt.ES. *MIHUS I». ARH)YIH& EACH DAY FOR SCHEDULE» MAINTENANCE JOSS FUNCTION 0.11/1.IB RN1>C2 TABLE DEFINITION»*) LEN7W ГАв(_е рг.в, i.vio otsreiecrroN of police cabs four Of! SERVICE FOR UNSCHEDULED REPAIR MODEL SEGMENT 1 (SCHEDULED MAINTENANCE SEGMENT» 1 z 3 4 5 6 7 a 9 SCAN1 NUN WAIT GENERATE SPLIT SELECT NU SEIZE АО VANCE RELEASE UNLINK TERMINATE LINK 1*40,. I..5 FN*JOSS.SCANI 1.l.S.,.WAIT PI 120,30 PI HEG.SCANl.l^ REG.FIFO MASTER VEHICLE ARRIVES EACH в A.M. BRING IN ALL THE DAY'S VEHICLES IS THERE A "NOT IN USE" BAY? YES; CAPTURE A BAT USE THE BAV RELEASE THE BAY SEND NEXT «REGULAR» VEHICLE (IF ANY! TO CAPTURE THIS VEHICLE IS SET TO 60 NOi GO To SACK OF "REGULAR" CHAIN MDOEL SEGMENT 2 (UNSCHEDULED REPAIR OF POLICE CAP.S1 10 11 12 13 M / 15 lb 17 IB 19 20 21 22 * * 2APEM • SCAN3 NOLUK GENERATE PRIORITY QUEUE SELECT NU PREEMPT ADVANCE RETURN DEPART UNLINK TERMINATE SELECT N1 TRANSFER LINK 576,FN«XPP1&,. 4 TRUBL 1.1»5*,»,SCAN3 PI 150.FNSXP01S PI TRUBL SPEC. S С AN 3. 1. . 1,1,5,,.NOLUK ,2АРЕН SPEC,FIFO .3 .NUN UNSCHEDULED POLICE CARS APR I vg. SET HIGH PRIORITY FOR LATER SERVICE-COMPLETION EVENT GET IN '"OUT OF SERVICE™ QUEUE IS THERE A BAY NOT IN. USE7 IF "YES", CAPTURE IT; IF "NO", LOOK FOft pRg-gMPT POSSIBILITIES capture a bay use the bay return The bay LEAVE "Out OF SERVICE» QUEUE give bay to the next «special»; if none, go check for a "regular" THIS PDLICE CAR IS SET TO do i;s there a non-preempteo. bay? yes» go pre-empt it no: go to back of «special'" chain MODEL SEGMENT 3 (CLOSE-UP AND OPEN-UP SfcGMENT) 23 2* 25 26 27. 28 29 3o 31 32 33 3« 36 36 37 3B 39 CLOSE OPEN * * WATCH GENERATE PRIORITY ASSIGN preempt' LOOP ADVANCE ASSIGN RETURN LOOP UNLINK TERMINATE I4A0..48 1. 6 l.S PI.PR 1,CLOSE 960 1,5 PI l.OPEN SPEC.bCAN3 MODEL SEGMENT * (DATA GENERATE MARK ASSIGN TEST NE TABULATE TRANSFER ... 1,1.2.F 1 S,0*TRU8L MP1.D LENTH.MP1 .WATCH ,2 B05S COMES DAILY AT END OF BTH HOUR SET PRIORITY SO BOSS CAN PUE-EMPT INITIALIZE LOOPING PARAMETER PRE-EMPT ВЛГ »*►!" ГО STDP *0(?K GO PRE-EMPT NEXT BAY I IF ANY J LET 16 HOURS GO BY INITIALIZE LOOPING PARAMETER RETURN BAY TO START NE« DAY'S «ORK GO RETURN NEXT BAY (IF ANY) ,ALL LET ALL CHAINED "SPECIALS" I IF ANY) TRY TO CAPTURE BAYS ClDSE-AND-OPEN TASK IS COMPLETE GATHERING f=OR "OUT OF. SERVICE" POLICE CARS) SEED THE SEGMENT SET PI = ABSOLUTS CLOCK SET P2 = NO, NO» «OUT OF SERVICE" «AIT FOR THE CLOCK TO CHANGE RECORD THIS OBSERVATION GO SET UP FOR THE NEXT OBSERVATION MODEL SEGMENT 5 I TIMER SEGMENT> 40 41 GENERATE TERMINATE 7200 . , 6241 1 TIMER COMES AT END OF EACH STH DAY PRODUCE "SNAP" Oft SHUT OFF THE RUN CONTROL CARD15) START S.,1.1 END 5 6 7 в 9 10 II 12 13 14 16 16 17 IB 19 20 21 22 23 24 25 26 гт гв 29 эо 31 32 эз 34 35 36 37 за 39 »0 41 42 43 44 4Ь 46 47 Ав 49 50 St 52 S3 54 55 5* 57 58 59 ЬО 61 62 63 64 65 66 67 6В 69 70 71 72 73 74 7Ь 76 77 78 79 SO 81 82 ез Рис, 7С.2. Расяечатка программы примера моделирования 7С
6. Выходные данные программы. interrupt trans я СКА IN вот 132 SET IS NARK-TINS R* SI II 0 о о о в о в • о • 9 о а DI С1 МС I *> USER CHAIN REG S6EC TOTAL ENTRIES 331 36, AVERAGE TIME/TRANS 283.184 SI 1*916 CURRENT CONTENTS S AVERAGE CONTENTS 2.6TA .525 MAXIMUM CONTENTS 25 6 FACILITY 1 2 3 A » AVERAGE UTILIZATION .ese .456 .«S3 .946 .ЧАО NUMBER Entries 105 1вв 1*9 110 104 AVERAGE TIME/TRAM эго.озв ло.звв 30&.6S7 301 *ЛОД Л05»г*г SEIZING TRANS. Id 8 IS It гз HO. PREEMPT INC Trams, no. 27 27 гт Z7 гт TABLE LENTM ENTRIES IN TABLE ♦99 35040 (/(WCft LIMIT 0 1 '2 3 * 5 6 T MEAN OBSGRVE& FRHQUCNCV 17юг 11314 »|0<i 1376 269 99 631 1*0 ARGUMENT .679 • 95b РЕЯ OF CENT TOTAL «8.SO J?.30 11. Ti 3.92 .'(> • го I.HO .39 StANOASO OEVIA.TIDN SUM CUMULATIVE PERCENTAGE 48.в SI. 1 92 .S 96.7 97.S 97.7 99.6 ioo.o 1.012 i-гоз C</«VJ.*7ri№ REMAINDER 5k. 1 IS.в 7.1 s.* 2.4 2.2 .3 .0 OF ARGUMtNTS Si9.000 2999P.000 HVLTIPLS OF MEAN -.000 1.4Я 2.943 4.415 5.8в7 7.3S9 6-Й31 10.303 NON-rtj:iGHTfcE> не [ант t» Ptvisriow ' prom мелы ~.6'31 .307 t.?b6 £.£zS 3.1 83 ».i«e b.IOI «.06» REMAINING FREQUENCIES ARE ALL ZERO Рис. 7С.З. Некоторые результатн программы, полученные в конце 25-го дня в примере 7С: а — цепь (цепи) прерывания; б — статистика цепа пользователя; « — статистика приборов: г — таблица 7. Обсуждение. Логика моделирования. Предполагается, что блок-схема модели к этому моменту изучена и усвоена на достаточно высоком уровне. Исходя из этого факта, рассмотрим вопрос приоритетных уровней в модели. Прежде чем начать рассмотрение каждого сегмента в отдельности, заметим, что приоритеты, с которыми транзакты поступают в модель в различных сегментах, образовывают убывающую последовательность от 1-го до 5-го. Транзакты поступают в I—5-й сегменты с приоритетами соответственно 5, 3, 2, 1 и 0. Прежде всего разберем приоритеты на внутрисегментном уровне для каждого сегмента. Затем рассмотрим, каким образом взаимное влияние между сегментами связано с выбором относительных уровней приоритета. 1-й сегмент модели. Транзакты, подлежащие плановому осмотру, входят в этот сегмент с приоритетом, равным пяти, и сохраняют это значение на протяжении всего времени моделирования. Это может показаться странным в смысле потенциальной «одновременности событий», разобранной ранее в связи с цепями пользователя. Что произойдет, если прибытие и освобождение совпадут по времени, причем освобождение будет предшествовать прибытию? Транзакт, выведенный из цепи после 28 Т. Дж. Шрайбер 433
события «освобождение», должен быть помещен в цепь текущих событий после только что прибывшего, поскольку известно, что у них одинаковые приоритеты. Затем вновь прибывший транзакт должен занять освободившийся прибор, а транзакт, выведенный из цепи, будет вынужден вновь пойти в цепь пользователя. Он выйдет из начала цепи пользователя, а вернется затем в конец цепи пользователя, нарушая тем самым порядок «первым пришел — первым обслужен» для транзактов, нуждающихся в плановом осмотре. Что неверно в этом описании 1-го сегмента модели? Описание того, что произойдет в случае возникновения указанного узла времени, является справедливым. Но такие узлы в 1-м сегменте не возникают. Все транзакты, поступающие на плановый осмотр, приходят в 8 ч утра каждый день. Для машины, проходящей плановый осмотр, невозможно освободить занимаемую ею смотровую яму в 8 ч утра. Если в предыдущий день в 17 ч ей осталась хотя бы 1 мин до окончания обслуживания, то освобождение прибора произойдет в 8 ч 01 мин утра, а не в 8 ч. Вот почему в 1-м сегменте нет необходимости решать вопрос одновременности событий в отношении цепи пользователя. 2-й сегмент модели. Транзакты, поступающие во 2-й сегмент на внеплановый ремонт, имеют приоритет, равный 3, а затем тут же их приоритет повышается до 4. Это сделано для того, чтобы избежать проблемы временных узлов, которая не может возникнуть в 1-м сегменте. Во 2-м сегменте эта проблема может возникнуть нз-за того, что при случайных временах между поступлениями транзактов в этот сегмент могут появиться временные узлы между только что прибывшими тр а нз актами и тран- зактамн, собирающимися вернуть смотровую яму предыдущему пользователю. 3-й сегмент модели. Транзакт-хо- зяин поступает в модель с приоритетом, равным 2. Затем его приоритет тут же вырастает до 6, что дает ему возможность выполнить свои функции по захвату смотровых ям. Причина того, что его приоритет с самого начала не равен 6, указана ниже. 4-й сегмент модели. Транзакт, собирающий результаты, имеет приоритет, равный 1. Тем самым гарантируется, что в случае окончания наблюдения за длиной очереди в некоторый момент времени в модели произойдут все события, связанные с полицейскими машинами. Для этой цели подошел бы любой приоритетный уровень ниже 3; этот транзакт мог бы иметь приоритет, равный 2, и модель была бы верна. Если бы его приоритет был равен 2, то в 17 ч он стоял бы в цепи текущих событий впереди транзакта-хозяина. Однако это не важно, поскольку хозяин никоим образом не влияет иа размер очереди TRUBL. 5-й сегмент моде ли. Транзакт, обеспечивающий промежуточную выдачу, имеет самый низкий приоритет, равный 0. В результате этого выдача будет произведена только после того, как все данные о модели к 17 ч каждого пятого дня будут полностью собраны. Взаимодействия приоритетов разных сегментов модели. Взаимодействие между 1-м и 2-м сегментами. У транзактов, поступающих па плановый осмотр, уровень приоритета выше, чем у транзактов, поступающих на внеплановый ремонт. Этим достигается защита от проблемы одновременности, которая могла бы возникнуть при выполнении следующих условий. 1. Транзакт, находящийся на плановом осмотре, готовится освободить смотровую яму. 2. Только что поступил транзакт на внеплановый ремонт. 3. В цепи пользователя REG в состоянии ожидания находится хотя бы один транзакт, предназначенный для планового осмотра (помимо прочего, это означает, что все ямы заняты). 4. Событие «освобождение» предшествует событию «прибытие». Тогда при равенстве приоритетов в 1-м и 2-м сегментах транзакт планового осмотра, выведенный из цепи пользователя- после события «освобождение», был бы помещен в цепь текущих событий позади прибывшего на внеплановый ремонт. Затем транзакт внепланового ремонта попытается завладеть прибором. После этого только что выведенный транзакт, обнаружив, что все смотровые ямы используются, вновь будет помещен в цепь пользователя REG. К сожалению, транзакт будет выведен из начала цепи пользователя, а возвратится в ее конец. Это будет нарушением дисциплины обслуживания «первый пришел — первым обслужен» для транзактов планового осмотра. Каким образом различие в уровнях приоритетов разрешает эту проблему? Транзакт планового ремонта, выведенный из цепи пользователя и имеющий более высокий приоритет, становится в цепи текущих событий впереди только что прибывшего транзакта. Таким образом, он занимает смотровую яму, перед тем, как обрабатывается вновь прибывший транзакт. Разумеется, когда обрабатывается прибывший транзакт, ему разрешается захват имы, и тем самым текущий пользователь переводится в цепь прерывания. Заметим, что захваченная смотровая яма необязательно та самая, которая была только что освобождена н занята. (Если прибор, имеющий меньший номер, используется транзактом, не захватившим его, то транзахт, поступивший на внеплановый ремонт, захватит
именно этот прибор. Так работает блок SELECT, просматривающий приборы в порядке возрастания их номеров.) Но это но страшно. Главное, что более высокий приоритет транзактов в 1-м сегменте по сравнению со 2-м сегментом сохраняет для транзактов, поступивших на плановый ремонт, дисциплину обслуживания «первым пришел — первым обслужен». Взаимодействие между 2-м и 3-м сегментами. Отношения между хозяином и траизактами внепланового ремонта аналогичны отношениям между транзактами планового осмотра и транзактами внепланового ремонта. Эти взаимоотношения обсуждены в упражнениях (см. упражнение 1 параграфа 7.22). Взаимодействие между 3-м сегментом и 1-ми 2-м сегментами. Трапзакт-хозяин поступает в модель с приоритетом меньшим, чем приоритеты транзактов, поступающих в 1-й и 2-й сегменты, а затем его приоритет тут же поднимается до 6. Ясно, что приоритет хозяина должен быть выше 5 для того, чтобы он имел возможность захватить смотровые ямы; таким образом, причина повышения его приоритета до 6 очевидна. Неясным остается причина того, что хозяин не поступает в модель сразу с приоритетом, равным 6. Вероятно, есть причина, вследствие которой хозяин должен вначале находиться в цепи текущих событий позади транзактоп из 1-го и 2-го сегментов (если они есть). Что это за причина? Как обычно, рассматривается проблема одновременности событий. Предположим, что одновременно произошло появление хозяина и либо освобождение, либо возврат смотровой ямы (либо и то и другое). Если хозяин сразу имеет приоритет, равный 6, то, обрабатываясь в первую очередь в момент закрытия гаража, он в результате захватит все смотровые ямы. Затем, когда будет обрабатываться событие освобождения или (и) возврата прибора, оно (или они) повлечет за собой попытку вывода транзакта из цепи пользователя, который заместит уходящий тран- закт на смотроаой яме. Если произойдет вывод из цепи, то выведенный транзакт обнаружит, что яма, которую он собирался использовать, недоступна из-за захвата ямы хозяином, и вновь вернется в цепь пользователя. Это повлечет за собой нарушение дисциплины обслуживания «первым пришел — первым обслужен». Выведенный транзакт уйдет из начала цепи пользователя, а возвратится в ее конец. Конечно, этот вопрос решается помещением хозяина в конец до тех пор, пока в системе не произойдут все события, которые должны иметь место в момент закрытия. После этого хозяин выполнит свою работу. Если возникнут только что описанные условия, транзакт (или транзакты), направляющийся к смотровой яме, немедленно будет помещен в цепыгрерывания. •28* Это вполне допустимо, и требуемая дисциплина обслуживания сохраняется. Распечатка результатов. (Общее время процессора при моделировании на IBM 360/67 составило 7,4 с.) На рис. 7СЗ выборочно показана распечатка результатов, полученных в конце 25-го модельного дня. На рис. 7С.З, а показана цепь прерывания. Заметим, что на самом деле в модели имеется пять цепей прерывания, каждая для одного из пяти приборов. Транзакты, находящиеся в этих цепях, выведены, тем не менее, в порядке возрастания их номеров так, как будто они находятся в одной цепи. Все транзакты, указанные в цепи (цепях) прерывания, пользовались смотровыми ямами без захватов в момент прихода хозяина. (Следующим для входа блоком для них является блок 6, т. е. блок RELEASE в 1-м сегменте модели.) При рассмотрении их первого параметра можно определить, какой транзакт на каком приборе находится. Транзакт 8 был на втором приборе, транзакт 11 — на четвертом и т. д. Статистика для цепи пользователя, приведенная на рис. 7С.З, б, показывает, что одновременно в очереди к смотровой яме было самое большее 25 машин, назначенных на плановый осмотр (максимальное содержимое равно 25). Аналогично, самое большее шесть полицейских машин одновременно ожидали внепланового ремонта в очереди. Приведенная на рис. 7С.З, в статистика приборов показывает, что в конце 25-го дня каждая яма в момент прихода хозяина была занята [в столбце SEIZING TRANS. NO (ЗАНИМАЕТ ТРАНЗ. №) у каждого прибора стоит некоторая величина]. Информация о приборах показывает также, что хозяином является транзакт № 27. Заметим, что информация о транзактах, занимающих приборы, согласуется с информацией о цепи прерывания, рассмотренной выше. Следует также отметить, что, используя только информацию о приборах, невозможно сказать, какой именно транзакт снят хозяином с обслуживания (занимавший прибор или захватывавший его). Эти сведения, однако, можно получить из рассмотрения цепи прерывания. В таблице на рис. 7С.З, г показано, что в среднем 0,855 полицейских машин требовали внепланового ремонта (средневзвешенное значение равно 0,855). Менее чем половину всего времени все полицейские машины были исправны (PERCENT OF TOTAL (ПРОЦЕНТ ОТ ОБЩЕГО ЧИСЛА) равен 48,8%, в графе UPPER LIMIT (ВЕРХНИЙ ПРЕДЕЛ) стоит 0]. Одновременно самое большее семь машин были неисправны, но недолго (процент от общего числа равен 0,39% в графе таблицы верхний предел 7). Среднее число неисправных полицейских машин, равпое 0,855, меньше среднего числа неисправных машин в примере 7В (равное 0,221),
умноженного на пять. В информации об очередях, ие показанной в этом примере, указано, что в модели с пятью ремонтными ямами было всего 52 внеплановых ремонта. В модели с одной ямой было 13 внеплановых ремонтов. Таким образом, число ремонтов при наличии пяти ям меньше числа ремонтов, умноженного на пять, при наличии одной ямы. Фактически, при длительном моделировании за 25 дней будет 62,5 внеплановых ремонтов, так что в пашем случае это число занижено. 7.21. Поведение захваченных транзактов Если транзакту удается войти в блок PREEMPT, когда соответствующий прибор используется, он прерывает текущего пользователя. Когда в блоке PREEMPT используется только операнд А или операнды А и В, прерванный транзакт помещается в начало цепи прерывания \ Затем он находится там на основании правила «последним пришел — первым обслужен», до тех пор, пока данный прибор не станет для него вновь доступным. В этот момент он восстанавливается на приборе, и интерпретатор помещает его в цепь будущих событий, где он остается до тех пор, пока не истечет время, оставшееся до конца его обслуживания. Указанное выше поведение прерванного тран- закта было описано в параграфе 7.14. На эту частную возможность мы будем здесь ссылаться как на возможность 1. Как указано в параграфе 7.14, для захваченного транзакта могут существовать еще две возможности. Эти возможности моделируются при использовании операндов С, D и Е блока PREEMPT. Ниже приведены эти две возможности, названные возможностями 2 и 3. Возможность 2. Прерванный транзакт переводится в некоторый другой блок модели н не претендует более на право пользоваться прибором. Это значит, что он не будет восстановлен интерпретатором на приборе. Возможность 3. Прерванный транзакт переводится в некоторый другой блок модели, но не теряет права дальнейшего автоматического восстановления в качестве пользователя прибора. В табл. 7.9 показана роль операндов С, D и Е при моделировании этих двух возможностей. Таблица 7.9. Роль операндов С, D и Е блока PREEMPT 1 Вспомним, что захваченный траиааит немедленно помещается в цепь прерывания, если он находился в пепн будущих событий; если ои находился в цели текущих событий, готовый освободить прибор, ои вовсе не помещается в цепь прерывания; при других обстоятельствах он идет в цепь прерывания при следующей попытке интерпретатора продвинуть его в блох ADVANCE с ненулевой временной задержкой (см. параграф 7.14). Операнд С D Значение Указывает имя блока, в который будет послан прерванный транзакт Интерпретируется как номер одного нз па* раметров прерванного транзакта. В этот параметр интернретатор помешает значение времена, оставшееся транзакту до окончания обслуживания на приборе Указывает, должен ли прерванный транзакт претендовать на автоматическое восстановление на приборе. Если в операнде Е стоит двухбуквенная последовательность RE, транзакт теряет право на пользование прибором. Если операнд Е пуст, транзакт сохраняет это право Блок PREEMPT с операндами А, В, С, D и Е показан на рнс. 7.23. Как показано в табл. 7.9, операнд С блока PREEMPT указывает имя блока, куда попытается войти прерванный транзакт. Операнд D блока PREEMPT интерпретируется как номер одного из параметров прерванного транзакта. При использовании операнда D интерпретатор помещает в указанный параметр величину времени, которое осталось транзакту до окончания обслуживания на приборе. Это позволяет разработчику модели учитывать это время при формировании модельной логики. Операнд Е блока PREEMPT используется для того, чтобы определить, будет ли прерванный транзакт продолжать участвовать в соревновании за дальнейшее восстановление на приборе. Если в этом операнде стоят буквы RE (от слова remove — снять), прерванный транзакт выводится из соревнования за прибор; это означает, что осуществляется возможность 2. (Конечно, будучи выведенным из соревнования за прибор, транзакт не лишается права более поздней попытки повторного -использования этого прибора обычным образом, путем вхождения в блоки SEIZE или PREEMPT.) Если операнд Е остается пустым, прерванный транзакт не выбывает из соревнования за устройство, т. е. осуществляется возможность 3. Важно отметить следующие трн ограничения на использование полей С, D и Е блока PREEMPT. PRGEMPT B.C.D.E т \А Рис. 7.23. Блок PREEMPT с операндами А, В, С, D, Е 436
Если не использован операнд В блока PREEMPT, то интерпретатор игнорирует операнды С, D и Е. 2. Если не использован операнд С, то интерпретатор не воспринимает операнды D и Е. 3. Если транзакт, использующий в данный момент прибор, не находится в цепи будущих событий, то ие воспринимаются операнды С, D и Е. Если интерпретатор не воспринимает поля С, D и Е, даже если они использованы, судьба прерванного транзакта определяется возможностью 1. Ниже разобраны детали возможностей 2 н 3; эти возможности будут проиллюстрированы небольшими примерами. 7.21.1. Возможность 2: прерванный транзакт выбывает из соревнования Когда происходит прерывание, определяющееся возможностью 2, интерпретатор выводит прерванный транзакт из цели будущих событий и помещает его в цепь текущих событий последним в его классе приоритета. Поскольку этот транзакт выведен из соревнования за прибор, его флаг захвата не переводится в положение «включен»; это значит, что для этого транзакта не ожидается захвата. Тем не менее, в результате выполнения блока PREEMPT включается флаг изменения состояния, что означает, что как только транзакт-захватчик будет продвинут насколько возможно, просмотр будет возобновлен. Когда при возобновлении просмотра будет обрабатываться прерванный транзакт, интерпретатор попытается продвинуть его в тот блок, который для него является следующим в модели, и т. д. Другими словами, хотя транзакт и был прерван, тот факт, что он исключен из соревнования, означает, что он впоследствии ведет себя так же, как и любой другой обыкновенный транзакт в модели. Теперь рассмотрим возможность 2 с точки зрения счетчиков блоков. Перед тем, как транзакт был прерван, он внес вклад в счетчик содержимого своего блока ADVANCE. Даже в момент прерывания, когда транзакт переводится из цепи будущих в цепь текущих событий, с точки зрения счетчика содержимого транзакт продолжает оставаться в блоке ADVANCE. Только после того, как транзакт успешно войдет в следующий полагающийся ему блок, он прекратит вносить вклад в счетчнк своего предыдущего блока ADVANCE. (NEXT!) f* ADVANCE 960.200 PREEMPT PR,WAIT..«t )A ADVANCE 20,10 RETURN W I TRANSFFER V INEXT1) ВОЙТИ 8 СЕГМЕНТ НАЛАДКИ ОЖИДАНИЕ СЛЕДУЮЩЕЙ ПОТРЕБНОСТИ В НАЛАДКЕ ВОЗНИКЛА ПОТРЕБНОСТЬ в НАЛАДКЕ- ВЫВЕСТИ ОБРАБАТЫВАЕМУЮ ДЕТАЛЬ И ПОСТАВИТЬ ЕЕ В КОНЕЦ ОЧЕРЕДИ НАЛАДКА СТАНКА СТАНОК МОЖЕТ ПРОДОЛЖАТЬ РАБОТУ РАЗРЕШИТЬ ИСПОЛЬЗОВАНИЕ СТАНКА ДО ТЕХ ПОР. ПОКА НЕ ПОТРЕБУЕТСЯ СЛЕДУЮЩАЯ НАЛАДКА (WAIT) ПОСТУПЛЕНИЕ ДЕТАЛЕЙ С РАБОЧЕГО МЕСТА QUEUE SEIZE DEPART ADVANCE 6.1 RELEASE 3 \A Э w ВСТАТЬ В ОЧЕРЕДЬ ЗАНЯТЬ СТАНОК выйти ИЗ ОЧЕРЕДИ ОБСЛУЖИВАНИЕ НА СТАНКЕ ОСВОБОДИТЬ СТАНОК » ДЕТАЛИ ПОСТУПАЮТ НА СЛЕДУЮЩЕЕ РАБОЧЕЕ МЕСТО Рис 7.24. Первый пример использования расширенного блока PREEMPT 437
В качестве небольшого примера, и котором используется возможность 2, рассмотрим простой случай рабочего места па поточной линии. Предположим, что одновременно на рабочем месте может обрабатываться одна деталь. Станок, выполняющий работу, выходит из строя случайно; это означает, что определенная ситуация в работе станка требует восстановления. Интерзалы времени между последовательными потребностями в восстановлении меняются случайно. В случае необходимости восстановление должно быть проведено немедленно; это означает, что оно должно быть выполнено не только перед тем, как начнется обработка следующей детали, но даже перед тем, как закончится обработка текущей детали. Пусть, далее, восстановление требует снятия текущей детали со станка. Вместо того, чтобы сохранить право на последующее использование станком, она просто переводится в конец очереди, состоящей из деталей, ожидающих обслуживания на станке. Тот факт, что обработка детали частично завершена, не имеет значения; когда вновь придет ее очередь на станок, эта деталь начнет обрабатываться заново, как будто она еще не была в обработке. На рис. 7.24 показаны части блок-схемы GPSS-модели, которая может быть использована для имитации рабочего места. В первом сегменте имитируется замкнутый участок восстановления. Через этот сегмент постоянно проходит единственный транзакт. Транзакты, проходящие через второй сегмент, имитируют детали, обрабатываемые на рабочем месте. Сделаны следующие предположения. 1. Единица модельного времепи равна 1 .мин. 2. Если станок только что восстановлен, новое восстановление потребуется через 9G0 з= =t 200 мин. 3. Время, необходимое для обработки детали на рабочем месте, равняется 5 ± 1 мин. 4. Транзакты, проходящие через 2-й сегмент модели, имеют нулевой уровень приоритета. Комментарии, помещенные рядом с блоками на рис. 7.24, в основном объясняют логику, используемую в модели. Не объяснен факт использования символа PR в операнде В блока PREEMPT в 1-м сегменте модели. Напомним, что если этого не было бы сделано, интерпретатор не обратил бы внимания на операнды С и Е. С другой стороны, при использовании символа PR захваты разрешаются только в случае, если у захватчика более высокий уровень приоритета, чем у текущего пользователя прибором, этим объясняется, почему у транзактов из 1-го сегмента модели приоритет равен единице, а трапзактам из 2-го сегмента присвоен нулевой приоритет. Обратите также внимание на линию обратной связи во 2-м сегменте модели между блоками ADVANCE и QUEUE. Эта линия введена для наглядной иллюстрации того, пути, по которому движутся захваченные транзакты. 7.21.2. Возможность 3: прерванный транзакт не выбывает из соревнования Если судьба преванноготранзакта определяется возможностью 3, транзакт переходит в другой блок модели, но не выбывает из соревнования за прибор. Как указывалось ранее, возможности 2 и 3 могут быть осуществлены только в том случае, когда прерванный транзакт находится в цепи будущих событий, т. е. находится в блоке ADVANCE. При возникновении прерывания интерпретатор переводит транзакт из цепи будущих событии в цепь текущих событий, где он становится последним в своем классе приоритета. Вдобавок, его флаг прерывания включен, означая, что транзакт находится в состоянии захвата. Затем, когда прерванный транзакт обрабатывается в период повторного просмотра цепи текущих событий, ин- терпрератор продвигает его до тех пор, пока он не встретит блок ADVANCE с положительным временем задержки. (Вполне вероятно, что прерванный транзакт на своем пути к блоку ADVANCE встретит одно или несколько блокирующих условий. В этом случае окончательное вхождение в блок ADVANCE может произойти в более поздний момент модельного времени.) Когда это произойдет, тоанзакт помещается в пассивное состояние в начале цепи прерывания. Пусть, наконец, условия позволяют прерванному транзакту вновь вернуться к прибору. При выполнении этих условий интерпретатор снова помещает транзакт в блок ADVANCE, из которого он был изъят для перевода в цепь прерывания. Затем транзакт остается в этом блоке ADVANCE на время, которое было вычислено в момент входа в блок. (Заметим, что при помещении транзакта в цепь прерывания это время задержки не уменьшилось.) Выйдя из блока ADVANCE, транзакт перейдет в следующий за ним по порядку блок. В результате транзакт попадет в блок RELEASE или RETURN (в зависимости от того, как он использовал прибор вначале), перестав тем самым оказывать влияние на этот прибор. Важно понять, что в предыдущем обсуждении участвовали два потенциально различных блока ADVANCE. 1. Блок ADVANCE в котором прерванный транзакт находился во время прерывания. Назовем его первичным блоком ADVANCE. 2. Блок ADVANCE, в который транзакт попал в то время, когда он был помещен в цепь прерывания. Назовем его вторичным блоком ADVANCE. 438
Первичный и вторичный блоки ADVANCE могут совпадать, но не обязательно. Если они различны, то, естественно, возникает вопрос: что происходит с первичным блоком и оставшимся временем задержки в этом блоке при возникновении захвата? Ответ на этот вопрос следующий. Интерпретатор просто забывает (сознательно), что прерванный транзакт находился в первичном блоке ADVANCE и что планировалось его пребывание там в течение одной или нескольких дополнительных временных единиц. Даже если первичный и вторичный блоки ADVANCE совпадают, интерпретатор забывает про оставшееся время задержки в этом блоке для прерванного транзакта. Когда транзакт вновь попадает в этот блок, используется время задержки, вычисленное для транзакта во время его вторичного входа в блок ADVANCE. Теперь рассмотрим небольшой пример для иллюстрации захвата с использованием возможности 3. В этом примере прибор используют для имитации профессора, дающего консультации. Студенты приходят на консультацию к профессору в его приемные часы, подчиняясь дисциплине «первым пришел — первым обслужен». Если звонит телефон, то звонок прерывает разговор профессора со студентом. Профессор возобновляет беседу со студентом только после окончания разговора по телефону. С этим прерыванием связана некоторая задержка во времени. Когда вновь возобновляется беседа со студентом, некоторое время неизбежно уходит па то, чтобы восстановить тот момент, с которого разговор был прерван. Этот временной излишек необходимо добавить к величине времени пребывания студента у профессора. На рис. 7.25 изображены части блок-схемы для GPSS-модели, которую можно использовать для имитации описанной выше ситуации. Первый модельный участок имитирует замкнутый сегмент входящих телефонных звонков. Транзакты, проходящие через второй участок модели, имитируют студептов, приходящих в приемные часы. Сделаны следующие предположения. 1. Единицей времени в модели является 0,01 мин. 2. Телефон звонит каждые 20—5 мин. 3. Длительность телефонного разговора распределена экспоненциально со средним 2 мин. 4. Длительность разговора со студентом также распределена экспоненциально со средним 10 мин. 5. Функция 3 является 24-точечной функцией, используемой для выборки из экспоненциального распределения. 6. При прерывании беседы возникает минутный излишек во времени, равный 3 мин. Рис. 7.25 несколько сложнее, чем рис. 7.24. В 1-м сегменте, при возникновении транзакта — телефонного звонка, вначале проверяется, занята ли уже телефонная линия. Если это так, то звонок просто выводится из модели. (Было бы более точным заставить такого телефонного або- теита перезвонить позднее, но для простоты в модели на рис. 7.25 это не предусмотрено). В противном случае возникает прерывание и т. д. Отметим необходимость использования символа PR в блоке PREEMPT 1-го сегмента и в связи с этим заметим, что транзакты, проходящие через 2-й сегмент, имеют нулевой приоритет. Во 2-м сегменте после захода к профессору транзакт-студент предварительно вычисляет свое время разговора в блоке ASSIGN, помещая результат в пятый параметр. Затем студент переходит в блок ADVANCE, в котором в качестве времени задержки определена величина Р5. Предположим теперь, что возникает прерывание из-за телефонного звонка. По условиям, указанным в блоке PREEMPT в 1-м сегменте, прерванный транзакт-студент переводится из цепи будущих событий и помещается в цепь текущих событий, направляясь в блок с именем ADD. В то же время, используя операнд D блока PREEMPT, вычисляется время, оставшееся студенту до конца беседы, и помещается в пятый параметр транзакта-студента. Таким образом, предварительное общее время беседы замещается в этом параметре оставшимся временем беседы. Затем, в период повторного просмотра, прервашшй транзакт входит в блок ASSIGN с именем ADD, работающий в режиме приращения. Там к пятому параметру добавляется 300 единиц времени (т. е. 3 мин). Тем самым учитывается излишек времени, связанный с прерыванием. Затем транзакт-студент направляется в блок ADVANCE, в котором он уже был. Конечно, в блоке ADVANCE его величина Р5 интерпретируется как время задержки. Когда транзакт поступает в блок ADVANCE, интерпретатор переводит его из цепи текущих событии в цепь задержки. Позднее, когда закончится разговор по телефону, интерпретатор выведет транзакт-студента из цепи задержки и позволит ему заняться тем же, что он делал непосредственно перед тем, как был помещен в цепь задержки. Это означает, что транзакт вновь помещается в блок ADVANCE, где пробудет до тех пор, пока не истекут Р5 временных единиц. Затем, покинув блок ADVANCE, транзакт-студент освободит профессора-прибор и пойдет дальше. В примере иа рис. 7.25 первичный и вторичный блоки ADVANCE совпадают. Легко изменить модель таким образом, чтобы первичный и вторичный блоки ADVANCE были различными. На рис. 7.26 повторяется 2-й сегмент 439
GENERATE i . gQOO.500,., 1) PREEMPT PR,ADD,5 A PROF V/ \\ ADVANCE 2O0.FN3 RETURN in—n PROF (busyjJT terminate U3 1-Й СЕГМЕНТ МОДЕЛИ ПОСТУПЛЕНИЕ ТЕЛЕФОННОГО ЗВОНКА ЗАНЯТА ЛИ ЛИНИЯ? ЕСЛИ 'ДА-, ТО ПРЕРЫВАНИЯ ИЕ ПРОИСХОДИТ НЕТ: ОТВЛЕЧЬ ПРОФЕССОРА ОТ СТУДЕНТА ИДЕТ ТЕЛЕФОННЫЙ РАЗГОВОР ПРОФЕССОР МОЖЕТ ВНОВЬ ЗАНИМАТЬСЯ СО СТУДЕНТОМ ОКОНЧАНИЕ ПРЕРЫВАНИЯ (ВОЗМОЖНОГО) ДОБАВИТЬ к ОСТАВШЕМУСЯ ВРЕМЕНИ БЕСЕДЫ ИЗЛИШЕК ВЫЙТИ ИЗ ЦЕЛИ ПРЕРЫВАНИЯ ПРИБЫТИЕ СТУДЕНТОВ в приемные часы встать line) в очередь ЗАНЯТЬ профессора DEPART К...Л ВЫЙТИ ИЗ ОЧЕРЕДИ ПОЛОЖИТЬ Р5 РАВНЫМ ВРЕМЕНИ БЕСЕДЫ ИДЕТ БЕСЕДА РАЗРЕШИТЬ ВОЙТИ СЛЕДУЮЩЕМУ СТУДЕНТУ СТУДЕНТЫ УХОДЯТ В ВЫЧИСЛИТЕЛЬНЫЙ ЦЕНТР V Й СЕГМЕНТ МПДШ Ряс 7.25. Второй пример использования расширенного блока PREEMPT Рис.7.26. Другая форма 2-го сегмента модели, приведенного на ряс 7.26 (ADD) ' \ 5+.300 1 ASSIGN !' ADVANCE P5 TRANSFER ) (LETGOl 4 i 1 QUEUE \ ' SEIZE " DEPART '' AOVANCE 1000.FN3 (LETGO) "> f RELEASE 1 В Л @ Vrof' V ^y
модели, приведенный на рис. 7.25, но на йен показано, как можно ввести в модель вторичный блок ADVANCE. Как и в предыдущем случае, оставшееся время задержки прерванного транзакта помещается в пятый параметр в момент прерывания. Затем пятый параметр увеличивается в блоке ASSIGN, и транзакт продвигается в блок ADVANCE, где время задержки представлено величиной Р5. Затем, когда студент закончит разговор, он покидает вторичный блок ADVANCE, пересылается на блок освобождения профессора и т. д. Сравнивая модели, приведенные на рис. 7.25 и 7.26, легко увидеть, что при различных первичных н вторичных блоках ADVANCE возможно более простое определение данных. В частности, на рис. 7.26 нет необходимости в предварительном вычислении времени разговора студента. В самом первичном блоке ADVANCE вполне можно не производить этого вычисления. В модели же на рис. 7.25 указанное время задержки в блоке ADVANCE должно зависеть от того, использует ли входящий транзакт этот блок в первый или во второй раз. Поэтому определение времени задержки в этом блоке ADVANCE должно быть достаточно гибким, с тем чтобы быть приспособленным к обеим этим возможностям. Тем самым объясняется, почему в этом случае время задержки было представлено посредством величины, помещенной в пятый параметр. 7.22. Упражнения 1. При некоторых условиях модель примера 7С не сможет обеспечить дисциплину обслуживания «первым пришел — первым обслужен» для машин, подлежащих плановому осмотру. (Однако это небольшое упущение в модели не влияет на конечный результат.) Объяснить, как это может произойти, и предложить метод по устранению данной ситуации. (Указание: эта ошибка не связана ни с уровнями приоритета, нн с временными узлами.) 2. Как бы вы ответили на следующее критическое замечание по поводу модели примера 7С. Из блока UNLINK во 2-м сегменте модели (блок 18 на рис. 7С.2) транзакт, осуществивший вывод из цепи, должен быть сначала направлен в блок 13 (SELECT NU 1,1,5,,,, SCAN3) для поиска неисполъзующегося прибора, вместо того, чтобы непосредственно идти в блок 20 (SCAN3NI 1,1,5 .„NOLUK) для поиска прибора, на котором не произошло прерывания. 3. В модели примера 7С применяют комбинации цепей пользователя и блоков SELECT для управления доступом транзактов к приборам. Показать, как можно построить для этой задачи другую модель без использования цепей пользователя. (Указание: Как видно на рис. 7С.2, появлению в модели цепей пользователя способствует введение необязательного операнда F в некоторых блоках SELECT.) 4. В упражнении 5 параграфа 7.18 сделано различие между двумя категориями полицейских машин, поступающих на внеплановый ремонт. Предположим, что при определенных условиях машины одной категории могут захватывать машины другой категории. Показать, какие изменения следует сделать в модели примера 7С, чтобы ввести в нее эти условия. 5. В примере 7В предполагали, что замена машины, поставленной на смотровую яму для планового осмотра, полицейской машиной, пришедшей для внепланового ремонта, не требует дополнительного времени. Предполагали также, что не требуется начального времени при повторном возобновлении работы с машиной, предназначенной для планового осмотра. Эти предположения нереальны. Показать, каким образом следует модифицировать модель в примере 7В так, чтобы в момент возникновения захвата тратилось 10 ;£ 5 мин и при возврате машины па смотровую яму для завершения ранее прерванного планового осмотра также уходило бы 10 ^ 5 мин. Затем, используя это предположение, повторить сравнение с управляемыми условиями для вариантов, указанных в упражнении 4 параграфа 7.18. 6. Повторить упражнение 5 для примера 7С. 7. Выполнить упражпегше 4 в предположении, что существуют излишки времени, описанные в упражнении 5. Предполагается, что излишки времени есть при захвате и возврате вне зависимости от того, какой тип машин в них участвует. 7.23. Понятие об ансамблях Все траиэахты в модели принадлежат группам, называемым ансамблями. Как правило, в модели существует много различных ансамблей. Тем не менее каждый транзакт является членом только одного такого ансамбля. Когда транзакт входит в модель, его принадлежность к ансамблю назначается автоматически. Принадлежность транзакта к определенному ансамблю сохраняется до тех пор, пока ои не будет выведен из модели и возвращен в начало пассивного буфера. Если впоследствии этот траизакт снова войдет в модель, он вновь станет членом ансамбля (хотя и не обязательно того, к которому он принадлежал ранее). Таким образом, в течение определенного времени «жизни» принадлежность транзакта к ансамблю не меняется; с другой стороны, в различные периоды «жизни» транзакт может быть членам разных ансамблей. 441
Ансамбль, к которому принадлежит тран- закт, зависит от того, каким образом транзакт поступил в модель — через блок GENERATE или через блок SPLIT. Каждый транзакт, введенный в модель блоком GENERATE, становится первым членом нового ансамбля. Если этот транзакт никогда не пройдет через блок SPLIT, то его ансамбль никогда не будет содержать более одного, а именно этого, транзакта. (Подобные одночленные ансамбли практически не представляют интереса.) Если транзакт входит в блок SPLIT, становясь тем самим родителем, то все его потомки становятся членами его ансамбля. Если кто-либо из этих потомков затем войдет в блок SPLIT, тоже став тем самым родителем, каждый транзакт из второго поколения также станет членом того ансамбля, к которому принадлежит первоначальный родитель, поскольку эта принадлежность будет передана через первое поколение, и т. д. В итоге, единственным способом для получения более одного члена в ансамбле является расцепление первого члена этого ансамбля путем прохода через блок SPLIT. Отметим, что транзакты, входящие в модель через один и тот же блок GENERATE, не будут являться членами одного ансамбля. Хотя различные ансамбли и отличаются друг 'от друга, у них нет имен, к которым пользователь может обращаться как к части логики модели. Существуют несколько блоков, выполнение которых зависит от свойств принадлежности к ансамблю: ASSEMBLE (СОЕДИНИТЬ), GATHER (СОБРАТЬ) и MATCH (СИНХРОНИЗИРОВАТЬ), а также блок GATE, используемый с соответствующими логическими указателями. Эти блоки дают возможность управлять движением траизактов, являющихся членами одного и того же ансамбля. Подробное описание этих блоков, а также примеры их конкретного использования рассматриваются в следующих параграфах. 7.24. Вывод членов ансамбля из модели. Блок ASSEMBLE (СОЕДИНИТЬ) Целью блока ASSEMBLE является вывод из модели одного или более членов ансамбля. На рис. 7.27 показан этот блок со своим операндом А. В операнде А этого блока представлено число, которое на единицу превышает число траизактов, которое блок должен убрать из модели. Величина операнда А называется счетчиком соединения. Блок ASSEMBLE работает следующим образом. Первый член ансамбля, войдя в этот блок, задерживается там до тех пор, пока число других членов этого ансамбля, определенное ASSEMBLE "Г Рис. 7.27. Блок ASSEMBLE с операндом А: Операнд А Значение Счетчик соединения, указывающий, сколько членов ансамбля должны быть объединены о одик транзакт Результат по умолчанию Ошибка пользователем, также не поступит в этот блок. Как только поступят остальные члены, онн будут выведены из модели и возвращены в начало пассивпого буфера. Когда число вошедших членов ансамбля сравняется со значением счетчика соединения, транзакту, прибывшему первым в блок ASSEMBLE, разрешается продолжить движение в модели. Таким образом, блок ASSEMBLE является сопряженным с блоком SPLIT. Если блок SPLIT увеличивает число членов в ансамбле, то блок ASSEMBLE уменьшает их. (Конечно членство может быть уменьшено и блоком TERMINATE.) В сущности счетчик соединения показывает, сколько членов ансамбля должно «объединиться» в один транзакт. На самом деле, конечно, объединения траизактов ае происходит. Оставшийся транзакт имеет точно те же свойства.что и до входа в блок ASSEMBLE. Ниже приведены некоторые дополнительные черты блока ASSEMBLE и ансамблей. 1. Для каждого ансамбля в данном блоке ASSEMBLE одновременно может выполняться только одна операция соединения. 2. В данном блоке ASSEMBLE может параллельно выполняться операция соединения для двух и более ансамблей. 3. Для каждого ансамбля операции соединения могут выполняться параллельно в двух и более блоках ASSEMBLE. 4. После завершения операции соединения для данного ансамбля в блоке ASSEMBLE в этом же блоке может начаться другая операция соединения для того же ансамбля. Что касается счетчиков блоков, то только остающийся член ансамбля вносит вклад в счетчик текущего содержимого блока ASSEMBLE в период выполнения операции соединения (i после, пока ему не удастся продвинуться в at. дующий блок). Остающийся член вносит также вклад в счетчик входов в блок ASSEMBLE 442
Выводимые транзакты не влияют ни на счетчик текущего содержимого, ни на счетчик входов. С точки зрения цепей, остающийся член ансамбля при входе п блок ASSEMBLE выводится из цепи текущих событий и помещается в цепь парности. Цепь парности можно трактовать как единственную для данного ансамбля и данного блока ASSEMBLE. В конечном итоге, при достижении заданного значения счетчика соединения, остающийся транзакт выводится из цепи парности и возвращается в цепь текущих событий в качестве последнего члена в своем классе приоритета. Интерпретатор тут же начинает заново просматривать цепь текущих событий, обеспечивая тем самым обработку оставшегося транзакта в текущий момент модельного времени. В качестве простого примера применения блока ASSEMBLE рассмотрим часть производственного процесса на небольшом винном заводе в Калифорнии. Производство открылось недавно, и объем продукции пока еще не оправдывает цриобретспие машины для автоматической наклейки этикеток на бутылки. В результате эту операцию проделывает вручную один рабочий. Смочить этикетку, приложить ее к бутылке, разгладить ее и затем поставить бутылку в ящик можно за 16 2= 3 с (бутылки предварительно залиты вином и закупорены). В каждый ящик уменьшается 12 бутылок. В блок-схеме на рис. 7.28 показано, каким образом может быть промоделирована операция наклейки этикеток для оценки интервалов времени между передвижением полных ящиков из помещения для наклейки в хранилище. (Понятно, что GPSS-таблица, названная TATYM, имеет в качестве аргумента запись 1А.) Сама модель ясна. Следует обратить внимание на то. как использован блок SPLIT для обеспечения неограниченного источника бутылок, нуждающихся в этикетках, и осуществления необходимого условия принадлежности всех входящих тран- зактов одному ансамблю (см. упражнение 7 параграфа 7.30). Для модели, представленной на рис. 7.28, выполнялся прогон для I ч модельного времени. Некоторые результаты прогона показаны на рис. 7.29. Обратим внимание на следующие особенности результата. I. Счетчики числа входов в блоки (рис. 7.29, ах из которого исключены счетчики сегмента таймера) ясно показывают, что только оставшийся член объединяемой группы вносит вклад в число входов в блок ASSEMBLE. Число входов в пятый блок (блок RELEASE) равно 221, тогда как число входов в шестой блок (блок ASSEMBLE) равно только 19. Разница на единицу в общем числе входов в блок ASSEMBLE и последующий за пим блок означает, что операция соединения в момент окончания модели- GENERATE seize А IWORKR SPLIT (BACK) ADVANCE 16,3 RELEASE rtTORKR V IATYM TERMINATE LP ВОЙТИ 8 СЕГМЕНТ РАБОЧИЙ SEPET СЛЕДУЮЩУЮ БУТЫЛКУ БЕЗ ЭТИКЕТКИ ОБЕСПЕЧЕНИЕ ЕЩЕ ОДНОЙ БУТЫЛКИ БЕЗ ЭТИКЕТКИ НАШИМ ЭТИКЕТКИ НА БУТЫЛКУ БУТЫЛКА ОБРАБОТАНА БУТЫЛКА СТАВИТСЯ В ЯЩИК Г8СЕГ0 В ЯЩИКЕ ИХ 12) ЗАПИСЬ ВРЕМЕНИ МЕЖДУ ПОСТУПЛЕНИЯМИ ПОЛНЫХ ЯЩИКОВ ЯЩИК НАПРАВЛЯЕТСЯ В ХРАНИЛИЩЕ Рис. 7.28. Пример использовании блока ASSEMBLE рования продолжалась. Значение счетчика текущего содержимого в блоке ASSEMBLE, равное 1, означает, что только остающийся член ансамбля вносит вклад в этот счетчик при наличии операции соединения. 2. Цепь текущих событий (рис. 7.29, б) указывает на то, что четвертый транзакт находится в настоящий момент в блоке SPLIT (блок 3), ожидая возможности занять рабочего в блоке SEIZE (блок 2). 3. Цепь будущих событий (рис. 7.29, в) показывает, что третий транзакт находится в блоке ADVANCE (блок 4), имитируя винную бутылку, к которой в настоящий момент приклеивают этикетку. (В блоке GENERATE сегмента таймера было использовано ограничительное число, равное 1. Этим объясняется отсутствие в цепи будущих событий транзакта-таймера). 4. Из анализа цепи парности (рис, 7.29, г) следует, что остающимся членом текущей операции соединения является первый транзакт. 443
RELATIVE BLOCK BLOCK 1 2 3 4 5 6 "t a 9 10 CLOCK COUNTS CURRENT a 0 i i 0 1 0 0 0 0 TOTAL 1 223 4*o zz z 231 19 ie 18 1 1 360D ABSOLUTE CLOCK 3600 SLOCK CURRENT TOTAL BLOCK CURRENT TOTAL CURRENT EVENTS CHAIN •TRANS 6PT BLOCK PR SF * 3 NBA 2 SET t MARK-TIME 1 Pi 0 0 0 яг 0 0 0 P3 0 0 0 p* 0 0 0 SI Г1 CI CI № PC PF 1 1 2 FUTURE EVENTS CHAIN TRANS ВОТ BLOCK PR SF NBA SET MARK-TIME p, Рг p3 P« SI T1 DI СI ИС PC PF 3 3601 * 0 0 0 0 0 0 0 0 0 0 0 0 *) T 3 MARK-TIME I PI 0 0 0 РЭ a 0 0 P3 0 0 f* P* 51 TI 01 CI ИС 0 1 0 0 TftANSACUONS IN MATCHING STATUS TRANS BUT BLOCK PR SF I 3517 6 Г) Рис. 7.29. Некоторые результаты, полученные при прогоне модели, прнпедошоп на рис. 7.28 (модельное время равно 3600 с): а — счетчики числа входов в блоки: 6 — цепь текущих событий; в — цель будущих соОытий; >. — цегф парности PC PF
Заметим, что столбец NBA (следующий блок для входа) в цепи парности пуст, несмотря на то, что оставшийся после операции соединения транзакт перейдет в следующий по порядку блок. (Пробел в столбце NBA в цепи парности, тем не менее, не имеет специального объясне- дия.) Заметим, что в столбце МС (условие парности) в цепи парности (третий столбец справа) стоит 1. Это означает, что соответствующий транзакт находится в состоянии парности. В параграфе 7.28 описано использование блока GATE для проверки нахождения транзакта в состоянии парности в блоке, определенном пользователем. Для того чтобы транзакт был в состоянии парности, необходимо и достаточно, чтобы он находился в цепи парности. Обратите внимание на пробелы в столбцах МС для цепей текущих и будущих событий на рис. 7.29, бив. Эти пробелы означают, что соответствующие траизакты не находятся в состоянии парности. Рассмотрим теперь значение столбца в цепи, обозначенного SET (седьмой столбец слева в распечатке цепи). Величина, стоящая в этом столбце, является номером следующего тран- зактв в соответствующем ансамбле. Другими словами, каждый член ансамбля указывает точно на одного другого члена этого же ансамбля, образуя тем самым единым образом связанный список. Например, если ансамбль содержит три транзакта, то первый указывает ва второй, второй на третий, а третий вновь на первый. Обратим теперь внимание, что в приведенных на рис. 7.29 цепях транзакт 4 в цепи текущих событий указывает на транзакт 1; транзакт 1, в свою очередь, оказался в цепи л арности и своим столбцом SET указывает на .транзакт 3; наконец, транзакт 3, находясь в цепи будущих событий, вновь указывает на транзакт 4, завершая тем самым связанный список. Если число членов ансамбля увеличивается в блоке SPLIT, то первый потомок помещается 8 список между родителем и тем членом ансамбля, на который указывал родитель. Затем второй потомок помещается в список между родителем и первым потомком, и т. д., пока последний потомок не попадет в список между родителем и предпоследним потомком. Потомки один за другим выводятся из начала пассивного буфера (см. гл. 6), и, конечно, они не обязательно должны быть расположены о порядке своих номеров. Внутри списков ансамблей, очевидно, также не предполагается упорядочивания по номерам траизактов. В случае одночленного ансамбля величины, ■стоящие в столбцах TRANS и SET, совпадают. Другими словами, единственный член такого -ансамбля указывает в качестве следующего 'члена себя. В следующем параграфе приведен пример использования блока ASSEMBLE. 7.25. Примере моделирований 7D. Влияние численности рабочей силы на время выполнения работ по сетевым графикам. 1. Постановка задачи. Сеть на рис. 7D.I представляет собой последовательность проектов, которые необходимо выполнить для завершения всего комплекса работ. Для обозначения каждого конкретного проекта использована пара кружков (узлов), соединенных стрелкой. Например, узел 1 соединен с узлом 2, обозначая так называемый проект 1—2. У каждой стрелки дана надпись, означающая, сколько людей и какое число временных единиц требуется для выполнения соответствующего проекта. Так, для завершения проекта 1—2 требуется четыре человека и 14 ;*= 6 единиц времени. Сеть на рис 7D.1 представляет также ограничения, связанные с порядком следования различных проектов, показывая, какие проекты должны быть завершены перед тем, как Другие проекты могут быть начаты. Например, проекты 2—4 и 3—4 обязаны быть завершены перед тем, как может быть начат проект 4—7. Аналогично, проект 5—7 не может быть начат, пока не закончится проект 2—5 и пока не завершатся проекты, входящие в узел 4. (Заметим, что пунктирная линия, идущая из узла 4 и узел 5, представляет собой фиктивный проект, не требующий ни людей, ни времени. Фиктивность просто подчеркивает временное ограничение по отношению к началу проекта 5—7). В проектах, подобных представленному на рис. 7D.I, важно выяснить, сколько времени потребуется для завершения всего комплекса работ; а именно, следует оценить распределение случайной переменной «время выполнения ком- !. 7D.1. Структура предшествования для примера 7D
плекса работ».1 Ясно, что это распределение зависит от распределения времеп завершения проектов и от заданных отношений предшествования. Предположим, что в работе под всем комплексом принимает участие фиксированное число рабочих, тогда время завершения комплекса зависит также от имеющейся рабочей силы. Если рассматривать экономический аспект задачи, то может существовать стоимостная зависимость между временем выполнения комплекса работ и степенью использования всей рабочей силы. Построить GPSS-модель комплекса работ, показанного на рис. 7D.1 Использовать модель для исследования поведения случайной переменной «время выполнения» как функции числа рабочих, назначенных для исполнения всего комплекса работ. Оценить также распределение случайной величины—«число запятых рабочих» для каждого уровня наличия рабочей силы. 2. Метод построения модели. Транзакт интерпретируется как бригадир проекта. У каждого проекта имеется собственный бригадир. Бригадир не поступает в модель до тех пор, пока условия предшествования не позволят начаться соответствующему проекту. {В некоторых случаях бригадир может оставаться в модели для управления двумя или более проектами). Конечно, даже когда выполнены условия предшествования, бригадир может ждать необходимой рабочей силы перед тем, как начать выполнение проекта. Для представления различных узлов з сети приняты следующие правила. 1. Когда узел является конечной точкой для двух и более проектов, в этом узле используется блок ASSEMBLE. Это дает гарантию того, что все проекты, приходящие в узел, будут завершены перед тем, как будет сделана попытка начать проекты, выходящие из этого узла. 2. Если узел является начальной точкой для двух или более проектов, в нем используется блок SPLIT. Это обеспечивает соответствующее число бригадиров для управления проектами, начинающимися в данном узле. Теперь, используя эти простые соображения, в узле 1 на рис. 7D.1 можно поставить блок 1 Для оценки распределения времени выполнения проекта в сетях типа рис. 7D.1 разработаны аналитические методы. Однако, часто эти методы пе принимают во внимание ограниченность рабочей силы. Наиболее известными среди этих методов являются МК.П (метод критического пути) и ПЕРТ. Для краткого знакомства с этими методами см. гл. 13 в книге «Management Planning Models», ссылка А6 в разделе 1.7 в книге Н- Van Slyke «Mnnte-Carlo Methods and the PERT Problem», том. II, № 5 (сентябрь—октябрь 1963, стр. 839—860), G. PONCE—Campos and T. J. Shriber, «Determination of Critically .Indices in the PERT Problem», «Труды третьей конференция по применению методов моделирования (AFIPS Press,, Monlvale, New Jercey; December 1969, p. 339—349). SPLIT. Аналогично, блоки SPIT (а не блоки ASSEMBLE) могут быть использованы в узлах 2 и 3. В узле 4 используется последовательность блоков ASSEMBLE—SPLIT. В узлах 5 и 7 необходимы блоки ASSEMBLE (а не SPLIT). Наконец, в узле 6 не требуются ни блок ASSEMBLE, ни блок SPLIT. (Заметим, что для выполнения проекта 3—6 требуется только один рабочий, тогда как для выполнения проекта 6~ 7 требуются четыре человека.) Что касается ограничения на рабочую силу, то каждый бригадир проекта может обращаться к общему резерву рабочей силы из соответствующим образом размещенных блоков ENTER — LEAVE, имеющих нужные величины в операн- дах В. При просчетах модели распределение времени завершения может быть вначале оценено при емкости многоканального устройства, равной 5 (максимальное число рабочих, требуемых для проекта 2—5, равно 5). Затем можно провести дополнительные просчеты, последовательно увеличивая емкость многоканального устройства. Наконец, можно определить емкость многоканального устройства, соответствующую практически неограниченному объему рабочей силы. Распределение случайпой величины числа занятых рабочих требует использования взвешенной таблицы, как указывалось в параграфе 5.11. Однако, вместо того, чтобы иметь соответствующий транзакт-наблюдатель в конце цепи текущих событий, он будет помещеп в начало этой цепи (см. упражнение 4 в параграфе 5.12). Недостатком такого подхода является то, что транзакт- наблюдатель по сути дела обязательно обрабатывается интерпретатором более одного раза во время каждого периода просмотра, что увеличивает время работы процессора. В данном случае существует причина, компенсирующая этот недостаток (см. упражнение 3 в параграфе 7.30). 3. Таблица определений. Единица времени: единица времени подразумевается в постановке задачи. Таблица 7D.1. Таблица определений примера моделирования 7D Элемент GPSS Транзакты: 1-й сегмент модели 2-й сегмент модели Логические переключатели: NEXT1 Интерпретация Бригадир проекта Транзакт-наблюдатель: Р1 — время, в которое произошла последняя запись наблюдения в таблицу INUSE Логический переключатель, не позволяющий начаться новому прогону полного комплекса работ до тех пор, пока не завершится текущая итерация 446
Продолжение табл. 7D.1 Элемент QPSS Многоканальные устройства: MEN Таблицы: INUSE RTIME Интерпретация Многоканальное устройство, используемое для имитации ограничен поста рабочей силы Взвешенная таблица, в которую заносят число запятых рабочих Таблица, в которую заносят полное время выполнения комплекса работ 4. Блок-схема. ($UB12) ENT6R 'menN ADVANCE 14.8 LEAVE \ШЮ IN0DE2I SPLIT ISUB25I <, ISUB24) ENTER ''men^ ' ADVANCE 18.4 Ф 1SUB24) ENTER ,<mJn\ ADVANCE 10,3 V I NODE!) i (SUB13) ISUB34I i r ISUB13) ENTER MENV AOVANCE 20.9 LEAVE ^MEN/ (SUB34) INOOE3) j SPLIT 'menX Ряс. 7D.2. Блок-схема примера ыоделврованвя 7D
LEAVE ^ШЮ IN0DE5) '' LEAVE ^men/ ASSEMBLE (SUB57) ' ' ENTER tN0DE4) '' LEAVE 4MEN// ASSEMBLE (NODES) 'МЕгЛ ADVANCE «.3 LEAVE MEN/ TRANSf-tR . (NODE7) Рис. 7D.2. Продолжение X wore* < TRANSFER SPLIT 1 (SUB47) У ENTER __£MEN^ ADVANCE 15.5 LEAVE INODE7) LOGIC TERMINATE NEXT! J •Й СЕГМЕНТ МОДЕЛИ. LEAVE "SMEN/ WODE6I '' ENTER fMEN', ADVANCE 10.3 LEAVE -^1n7 (N0DE7) ANSFE TRANSFER
5. Распечатка программы. BLOCK 1 2 3 4 S 6 ?' 8 9 10 11 12 13 14 15 16 17 ia 19 го 21 22 гз 25 г* 27 гз 29 3-J 31 эг зз з* 35 36 37 Зв 39 «О 41 *г 43 * * * « * * INUSE «TIME » * OPERATION A.B.C,D,E.F«G SIMULATE .OMMENTS STORAGE CAPACITY DEEINITtON£S) STORAGE SIMEN.5 SUPPLY S MEN INITIALLY TABLE OEFINITIONIS» TABLS TA8L6 S*M6N.O,1.W20 DISTRIBUTION OF MEN-IN-USE N1.85.25.20 TABLE FOR PROJECT COMPLETION TIMES MODEL SEGMENT 1 NODE I SUB 12 N0DE2 SUD2& NODES 5UB5T SU624 N0DE4 sua<!7 NDOE7 S'^a i з NODE3 SUB 36 NODE 6 GENERATE GATE LR LOGIC S SPLIT ENTER ADVANCE LEAVE SPLIT FNTER ADVANCE LEAVE ASSEMBLF ENTER ADVANCE LEAVE TRANSFER ENTER ADVANCE LEAVE ASSEMBLE SPLIT ENTER ADVANCE LEAVE ASSEMBLE TABULATE LOGIC R TERMINATE Е.ЧТЕО ADVANCE LEAVE SPLIT ENTER ADVANCE LEAVE EtJTER ADVANCE LEAVE TRANSFER NEXT I NEXT! 1»SUB 13 MEN «4 14,6 MEN ,4 1,SUB24 MEN.5 18.4 MEN,5 г «FN,2 8.3 MSN, 2 ,NOD£7 MEN«3 10,3 MEN.3 2 1.NODES MEN, 4 lb.5 MEN, 4 3 RTIME NEXT! 1 MEN.3 ?0»9 MEN.3 l«SuB34 MEM 25,7 MEN MEN, 4 100 MFN.A .N0DE7 ENTER MEN,2 ADVANCE 2.2.16 LEAVE MEN,2 TRAMST'liR ,NQDi--'. MODEL SEGMENT 2 44 45 4ft 47 48 GENERATE GRINO MARK TEST NE TABULATE TRANSFER v,»l,l»»F 1 MP 1, 0 IN'JSE,MP1 »Gt;IKI> PROVIDE A TRANSACTION WHENEVER NEEDED WAIT UNTIL PRECEDING ITERATION IS FINISHED SHUT GATE ON FOLLOWING TRANSACTION SEND OFFSPRING TD HANDLE SUBPROJfiCT 1-T0-3 GET MEN FOR 5U9PR0JECT l-TO-2 DO THE SUBPROJECT FREE THE MEN SEND OFFSPRING TO HANDLE SUBPR0J6CT Z-TO-4 GET MEN FOR SUBPROJECT 2-T0-5 DO THE SUBPROJECT FREE THE MEN TO-S ANO 4-T0-5 TO-7 WAIT FOR COMPLETION OF 2 GET MEN FOR SUBPROJECT S OO THE SUBPROJECT F»£E THE MEN GO SIGNAL COMPLETION OF 5-TD-7 GET MEN FOR SUBPROJECT г-ТО-4 DO THE SUBPROJECT FREE THE MEN WAIT FOR COMPLETION OF 2-T0-* AND 3-TO-A SEND OFFSPRING TO SIGNAL NODE 4 COMPLETION GET MEN FOR SUBPROJECT 4-T0-7 DO THE SUBPROJECT FREE THE MEN WAIT FQR COMPLETION OF FINAL SUBPROJECT^ RECORD PROJECT TIME IN TABLE OPEN GATE FOR THE NEXT ITERATION CURRENT ITERATION IS FINISHED GET MEN FOR SUBPROJECT l- DO THE SUBPROJECT FREE THE MEN TO-3 SEND OFFSPRING TO HANDLE SUBPROJECT 3-TO- GET A MAN FOR SUBPROJECT 3-TO-6 DO THE SUBPROJECT FK££ THE MAN GET MEN FOR SUBPROJECT 6-TQ-7 DO THE SUBPROJECT FREE THE MEN GO SIGNAL COMPLETION OF G-TO-7 SET MEN FOR SUBPROJECT 3-TO-4 DO THE SUBPROJECT FREE THE MEN GO 5IGNAL COMPLETION OF 3-TD-4 B4ING IN ONE HIGH-PRIORITY OBSERVER S5T PI = ABSOLUTE CLOCK TIME WAIT UNTIL THE CLOCK CHANGES «&COKD CURRENT NUMBER OP MEN-IN-USE CO SET UP FOR ТНП NEXT CI-К К UPDATE CARD NUMBER 1 2 3 4 5 6 7 8 9 10 11 12 1 J I* lb 16 1 7 IS :■> г л 21 22 2 3 2« 2b 26 27 28 29 30 31 33 3* 35 36 37 за JV лс 41 42 43 41 45 46 47 4S 44 50 51 52 S3 S4 55 56 57 SB 59 60 61 62 63 64 6-i 6b 67 *« 69 70 71 72 7J 74 75 Рис. 7D.3. Распечатка программы для примера моделирования 7D 29 Т. Дж. Шрайбср 449
CONTROL CAROS AND STORAGE CAPACITY RE"-OEF I N I T IONS SIMULATE FOR A MANPOWER LEVEL OF 5 RECONFIGURE THE MANPOWFR LEVEL CLEAR FOR THE NEW CONFIGURATION SIMUlATF FOR A MANPOWER LEVfcL OF 6 RECONFIGUKE THE MANPOWl P IFVEL CLFAR FOR THE NEW CONFIfc,UK»riON SIMULATE FOR A MANPO* 4 LtVfL OF T RECONFIGURE THE MANPOWER LFVtL CLEAR FOR THE NEW СONfIGUHAT[ON SIMULATE FOR A MANPOWER Lt' VEL П(- В KECONFIGURE THE MANPDKF.H LFVE L CLFAR FOR THE NEW CONK t <»UH AT IIIN SIMULATE FOR A MANPOWTR LfcVEL OF ■? RECONFIGURE THE MANPOWER LFVEL CLFAR FOR THE NEW CONf I GU4AT I ON SIMULATE FOR A MANPOWER LF VEL OF" 10 RECONFIGURE THE MANPOWER LEVEL CLEAR FOR THE NEW CONF Г GUHAT I ON SIMULATE FOR A MANPOWER LEVEL OF 11 RECONFIGURE THE MANPOWER LEVEL CLEAR FOR THE NEW CONFIGU4ATION SIMULATE FOR A MANPOWER LEVEL OF 12 RETUR+I CONTROL TO THE OPERATING SYSTEM START STORAGE CLI=AR START STORAGE CLEAR START STORAGE CLEAR START STORAGE CLEAR START STORAGE CLEAR START STORAGE CL^AR START STORAGE CLEAR START ENO 250 SSMEN<« £50 S*M£NtT £50 bsMEN.a 250 SSMEN.9 aso SSMEN.10 250 SSMEN.11 250 SSKEN» 13. 250 76 77 7в 7» ao 81 32 83 «* e*i at. 87 a» ЙЧ 90 •>1 92 43 94 ЧЬ 96 97 98 9» 100 Рис. 7D.3. Продолжение 6. Выходные данные. STORAGE MEN CAPAC1 TY 11 AVERAGE CONTENTS 7,13* AVERAGE HI H.IZAT10N .fj4» ENTRIES 7000 AVERAGE TtKE/tDw 15i067 CURRENT CONTENTS MAXIMUM CONTENTS 11 TABLE IMJSE ENTRIES IN TAfiLt глы 14 77V UPPER LIMIT 0 1 г 3 « 5 6 7 8 9 10 11 MFAN OOStfiVEO FREQUENCY О 10 2 2425 1156 142 381 4317 гвоЧ гь 9^6 £52 1 AHCUHfcNT 7. 7, ► 33S . 136 PEW OF CEVT TOTAL .00 ,U6 .0) 16.40 7.»г • 4S г.ч7 29.;'i 10.97 .16- t>. 73 17.05 STANOARO DEVIATION SUM CUMULATIVE PERCENTAGE .0 • 0 .0 16.* г«-.з 25.г г».о ■ьт.о 76.» 76.2 иг.« to».о г-599 *? • ■ бзг cumulative REMAJ HpEH 100.0 99.9 99.в «4.Ъ T6.fr 74.7 тг.1 *г.9 гэ.9 аз.7 17 .0 .0 OF ARGUMENTS 1&а53.ооо ЮЪ476.000 MULTIPLE DP MFAN -.000 .136 .271! .408 • SOS .681 .0 17 .95* ..090 1.226 1. »63 1.49» NON-WEIGHTtO MbIbnTbO JEV1AT [ON FROM K£r>!4 -г.елг -г.*«* -г.обо -1.674 -1. 2 во -.vol —. 515 -.12» .256 .6*2 1.02» 1.*|4 REMAINING FREQUENCIES ARE ALL ZERO TABLE RTIMF ENTRIES IN TABLE 250 UPPER LIMIT 25 50 75 MEAN 085ERVED FREQUENCY о 26 гг* ARGUMENT 59. .115 Pfc'R CENT OF TOTAL .00 10.39 S9.S9 STANDARD DEVIATION CUMULATIVE PERCENTAGE .0 10.3 100.0 6 .871 CUMULATIVE 1 4FMAIN0ER :oo.o 89.5 .0 SUM OF ARGUMENTS 14779.000 MULTIPLE OF MEAN .422 .645 I.268 NUN-HEIGHTCD DEVI AT ION FROM MEAN -4.9ЪЪ -(.эгъ 2.311 REMAINING FREQUENCIES ARE ALL ZEflO Рис. 7D.4. Некоторые результаты для примера моделирования 7D, соответствующие уровню рабочей силы, равному II: а — статистика многоканального устройства; 6 — табулирование числа занятых рабочих; в — гзбулирование времени завершения комплекса работ
7. Обсуждение. Логика моделирования. В распечатке программы, приведенной на рис. 7D.3, некоторые блоки имеют метки, несмотря на то, что они не нужны. Это сделано для того, чтобы распечатка соответствовала блок-схеме на рис. 7D.2. (Эти избыточные имена присвоены ключевым блокам для того, чтобы установить соответствие между различными узлами сети и проектами. Во избежание затрудненного понимания блок-схемы на рис. 7D.2 на ней ие сделаны пояснительные надписи.) Обратите внимание, каким образом в начале 1-го сегмента модели использованы блок GATE и логический переключатель для предотвращения начала следующего прогона полного комплекса до окончания текущей итерации. Тран- закт-иниииатор не выходит из блока GENERATE до тех нор, пока не наступит время начала следующего просчета. Вспомпим, что в гл. 4 было указано, что транзакту не назначается отметка времени до тех пор, пока он не выйдет из блока GENERATE. Вспомним также (см. гл. 6), что все потомки, вышедшие из блока SPLIT, имеют такую же отметку времени, что и их родитель. Эти два факта объясняют, почему величина Ml у транзакта, выходящего из последнего блока ASSEMBLE (блок 25 па рис. 7D.3), равна полному времени завершения комплекса для текущего просчета. (Заметьте, что Ml является аргументом для таблицы RTIME, см. карту 10 на рис. 7D.3). Второй сегмент модели состоит из замкнутой блок-схемы, предназначенной для оценки распределения случайной величины — числа занятых рабочих. Алгоритм работы этого сегмента очевиден. Обратите внимание на то, что приоритет транзакта-иаблюдателя равен 1 (для того, чтобы он всегда находился в начале цепи текущих событий) и что его параметры заданы полными словами (для того, чтобы не возникло переполнения блока MARK при работе). Использование модели. Как видно из управляющих карт на рис. 7D.3, последовательные просчеты были сделаны для случаев 5, 6, 7 .... 10, 11 и 12 рабочих в одной общей группе (предварительно можно сказать, что для указанной работы никогда не потребуется более 11 рабочих одновременно). Каждый просчет времени завершения проекта основан на 250 завершениях (250 прогонов проекта при каждом уровне рабочей силы). Распечатка результатов (время моделирования на ЭВМ IBM 360/67 составило 57,6 с. На рис. 7D.4 показана часть распечатки результатов, соответствующих уровню рабочей силы, равному 11. На рис. 7D.4, а—в показаны соответственно статистика многоканального устройства, распечатка таблицы INUSE и таблица RTIME. Заметим, что AVERAGE CONTENTS Таблица 7D.2. Сводка результатов моделирования для примера 7D Число рабочих 5 6 7 8 9 10 11 12 В рем к завершения комплекса работ Средпес 118,1 98.4 81.4 63,6 66.0 65,4 59,1 59,2 Стандартное отклонение 9,1 8,8 6.9 4,9 6,1 6.13 6.9 6,2 Коэффициент использовании рабочей силы 0.719 0.715 0.745 0,835 0,704 0.646 0,618 0,592 Максимальное число рабочих. используемых одновременно 5 6 7 8 9 10 11 11 среднее содержимое) многоканального устройства и взвешенное MEAN AVERAGE (среднее значение) таблицы INUSE, как и следовало ожидать, совпадают. В табл. 7D.2 помещен итог просчета модели, приведенной на ряс. 7D.3. В таблице показаны средние значения и стандартные отклонения времени завершения. В ней также приведены результаты использования рабочей силы на каждом ее уровне и указано максимальное число рабочих, используемых одновременно (в качестве этой величины берегся величина последнего UPPER LIMIT (верхнего предела) в статистике таблицы INUSE). При различных временах во время одного или более прогонов все рабочие из резерва рабочей силы были заняты, при условии, что резерв содержит 11 или меньше рабочих. Как видно из последней строки табл. 7D.2, И рабочих соответствуют «неограниченной рабочей силе». Ни разу не использовали одновременно 12 рабочих. Несмотря на это, результаты для 12 рабочих не совпадают точно с результатами для 11 рабочих. В упражнении 6 параграфа 7.30 читателю будет предложено объяснить это. Что касается использования рабочей силы, то оно достигает максимума при уровне рабочей силы, равном 8, но последовательно не возрастает до этого уровня и последовательно не убывает после этого уровня. Тенденцию к уменьшению среднего времени завершения и его стандартного отклонения, заметную в первых четырех строках табл. 7D.2, можно было ожидать. С девятью и более рабочими в резерве рабочей силы эта тенденция нарушается. На первый взгляд, это кажется противоестественным. Может ли среднее время завершения возрастать с возрастанием рабочей силы? Ответ таков: да, при некоторых обстоятельствах. В зависимости от конкретной сети не всегда лучше начинать каждый новый проект, • 29* 451
Таблица 7D.3. Результат, полученный для сети, доказанной на рве 7D.1, с постоянный временем завершения проектов Чясло рабочих 5 6 7 8 9 10 11 12 Время завершения комплекса работ JJ7 99 85 60 67 67 58 58 Коэффициент использованыя рабочей силы 0,719 0,708 0,707 0,876 0.697 0,628 0.670 0,615 Максималь» ное число рабочих. используемых одновременно 5 6 7 8 9 10 11 11 как только это становится возможным. Поступая таким образом, можно задержать начало выполнения некоторого другого проекта на большее время, чем в другом варианте. В зависимости от того, что следует за другим проектом, результатом этой задержки может быть увеличение продолжительности всего комплекса работ. Для численного обоснования этого положения времена задержек в различных блоках ADVANCE в модели на рис. 7D.3 были заменены нх математическими ожиданиями и был выполнен прогон этой детерминированной модели. (Каждая карта «START 250» была также заменена для этого прогона картой «START I».) Результаты помещены в табл. 7D.3. Тенденция нерегулярности во времени завершения проекта сохранилась даже при этих детерминированных условиях. (В упражнении 4 параграфа 7.30 требуется найти такой проект, преждевременное начинание которого действительно увеличивает время выполнения комплекса работ при увеличении рабочей силы с 8 до 9 человек при детерминированных условиях.) 7.26 Накопление членов ансамбля. Блок GATHER (СОБИРАТЬ) Целью блока GATHER (рис. 7.30) является накопление двух или более членов одного ансамбля в одном месте до тех лор, пока в нем одновременно не окажется заданное число членов этого ансамбля. Заданное число называемое счетчиком сборки, указывается в операнде А блока GATHER. Когда число накопленных членов ансамбля сравняется со значением счетчика сборки, всем накопленным члепам разрешается покинуть блок GATHER н продолжить дальнейшее движение в модели. Как и блок ASSEMBLE, блок GATHER имеет следующие особенности. Рнс. 7.30. Операнд А Блок GATHER с операндом А: Значение Счетчик сборки; указывает, сколько членов ансамбля должно быть накоплено в блоке Резуиь- тат по умолчанию Ошибка 1. В блоке GATHER для данного ансамбля возможно проведение только одной операции сборки одновременно. 2. В блоке GATHER может параллельно идти операция сборки для двух и более ансамблей. 3. Для данного ансамбля операция сборки может происходить в двух и более блоках GATHER параллельно. 4. Новая операция сборки для данного ансамбля и блока GATHER может начаться после завершения операции сборки в этом блоке для того же ансамбля. Что касается счетчиков блоков, то каждый транзакт, входящий в блок GATHER, вносит вклад и в общий счетчик входов и, по мере его продвижения в следующий блок, в счетчик текущего содержимого. С точки зрения цепей, каждый транзакт, вызывающий процесс сборки, переводится из цепи текущих событий в цепь парности, когда он входит в блок GATHER. Как и ранее, цепь парности можно рассматривать в качестве индивидуальной как для каждого ансамбля, так и для каткдого блока GATHER. Всякий раз при входе следующего транзакта из определенного ансамбля в блок GATHER, он выводится из цепи текущих событий и помещается в конец соответствующей цепи парности. В конце концов приходит транзакт, который делает равным число поступлений в этот блок величине счетчика сборки. Этот транзакт тоже переводится в цепь парности и помещается п ее конец. Затем интерпретатор переводит все транзакты из цепи парности в цепь текущих событий, причем эта операция проводится с начала цепи парности до ее конца. Естественно, поскольку транзакты переводятся в цепь текущих событий, оии помещаются в нее последними в своем классе приоритета. Это означает, что при возникновении узлов приоритетных уровней собранные транзакты в цепи текущих событий будут организованы по принципу «первым пришел — первым обслужен». Закон- ARO
чив операцию перевода, интерпретатор тут же начинает новый просмотр цепи текущих событий, обеспечивая тем самым обработку собранных трапзактов в текущий момент модельного времени. В качестве примера использования блока GATHER рассмотрим простую модификацию модели винного завода, приведенной иа рис. 7.28. Пусть перед тем, как наклеить этикетку, рабочему необходимо закрыть пробкой наполненную бутылку. Одновременно можно закрыть одну бутылку. Технология этого процесса требует, чтобы рабочий поместил бутылку в соответствующее приспособление, которое автоматически направляет пробку в горлышко бутылки. Операция по закрыванию бутылки с использованием описанного полуавтоматического метода занимает 8± 3 с. Задачей рабочего является вначале закрыть две дюжины бутылок, затем наклеить на них этикетки к поставить в ящики, затем закрыть другие две дюжины бутылок и т. д. На рис. 7.31 представлена модель процесса закупоривания и иаклейки этикеток. Указанная модель не требует дополнительных пояснений. Как и в модели на рис. 7.28, целью моделирования является оценка интервалов времени между поступлениями в хранилище полных ящиков по мере того, как они поступают из помещения для закупорки и наклейки. Обратите внимание на использование блока PRIORITY, который гарантирует, что после закупорки 24 бутылок рабочий сначала наклеит этикетки, а только потом вновь займется закупоркой. Для модели, представленной на рис. 7.31, выполнялся прогон в течение 30 мин модельного времени. На рис. 7.32 приведены фрагменты распечатки результатов прогона. Отметим следующие особенности распечатки. I. Счетчики блоков (исключая счетчики сегмента-таймера) указывают, что собираемые транзакты вносят вклад как в счетчик текущего содержимого, так и в счетчик входов в соответствующем блоке GATHER. В блоке 7 (блоке GENERATE L (BACK) ВОЙТИВСЕГМШ РАБОЧИЙ БЕРЕТ СЛЕДУЮЩУЮ ИЕЗАКУПОРЕННУЮ БУТЫЛКУ ЗАКУПОРИТЬ БУТЫЛКУ ПРИГОТОВИТЬ ЕЩЕ ОДНУ НЕЗАКУПОРЕННУЮ БУТЫЛКУ БУТЫЛКА ЗАКРЫТА УВЕЛИЧИТЬ ПРИОРИТЕТ ДЛЯ ПОСЛЕДУЮЩЕЙ ОПЕРАЦИИ НАКЛЕИВАНИЯ НАКЛЕИВАНИЕ НЕ НАЧИНАЕТСЯ. ПОКА НЕ ЗАКУПОРЕНЫ 2« БУТЫЛКИ * SEIZE \ ADVANCE 16.3 \ RELEASE . J . ASSEMBLE i TABULATE Л WORKR t ■ . work'r V k ATUM] X RMINA1 TERMINATE РАБОЧИЙ БЕРЕТ СЛЕДУЮЩУЮ БУТЫЛКУ БЕЗ НАКЛЕЙКИ НАКЛЕИТЬ ЭТИКЕТКУ НА БУТЫЛКУ БУТЫЛКА ПОЛУЧИЛА ЭТИКЕТКУ БУТЫЛКА СТАВИТСЯ в ЯЩИК (12 В ЯЩИКЕ) ЗАПИСЬ ВРЕМЕНИ МЕЖДУ ПОСТУМЕНИЯМИ ПОЛНЫХ ЯЩИКОВ ящик НАПРАВЛЯЕТСЯ В ХРАНИЛИЩЕ Рис. 1.Ь\. Пример использования блока GATHER 453
RELATIVE BLOCK BLOCK 1 2 3 « 5 6 T 8 9 10 CLOCK COUNTS CURRENT 0 0 1 0 0 0 « 0 0 0 TOTAL 1 79 79 1S6 78 78 78 72 72 72 1800 ABSOLUTE CLOCK BLOCK CURRENT 11 0 12 0 13 0 TOTAL 6 6 в 1800 BLOCK CURHENT TOTAL FUTURE EVENTS CHAIM TRANS ВОТ BLOCK PR SF K1SA SET MARK-ПИЁ PI P2 P3 PA SI TI DI CI MC 21 1804 3 a 1< 1 О О О О А 0 0 0 0 0 0 0 0 TRANSACTIONS IN MATCHING STATUS TRANS ВОТ RLDCK PR SF NBA SET MARK-TIME PI P2 P3 P« SJ Tl 01 CI MC PC PF »* 175S 7 11 I О О О О I SET 1 MARK-TIME t PI 0 0 0 P2 0 0 0 P3 0 0 0 P« 0 0 0 Рис. 7.32. Некоторые результаты, полученные при прогоне модели, Показанной на рис. 7.31 {продолжительность модельного времени — 1800 с): а -• счетчики блоков; б — цепь будущих событий; в — цепь париостп
GATHER) величина счетчика текущего содержимого равна 6, а величина счетчика входов равна 78; счетчик входов предыдущего блока имеет также величину 78, а в последующем блоке он равен только 72. 2. Цепь будущих событий (рис. 7.32, б] показывает, что транзакт 21 находится в настоящее время в блоке ADVANCE (блок 3), имитируя бутылку, которую в данный моментзакупорива- вают. (Цепь текущих событий пуста. В момент прекращения прогона модели в ней не было ни блокировок, пи новых событий.) 3. Цепь парности (рис. 7.32, в) содержит единственный транзакт. Этот транзакт, имеющий номер 14, находится в блоке GATHER. Из рассмотрения счетчиков блоков известно, что в блоке GATHER находятся шесть транзактов. Из логики моделирования известно также, что каждый из этих транзактов находится в одной и той же цепи парности. Почему же тогда шесть транзактов не указаны в распечатке цепи парности? К сожалению, оказывается, что интерпретатор GPSS распечатывает только тот транзакт, который стоит в начале каждой цепи парности. Этим объясняется, почему в цепи парности указан только один транзакт. Как и следовало ожидать, 14-й транзакт находится в состоянии парности, т. е. для пего в столбце МС стоит 1. Заметим также, исходя из значепий столбца SET, что транзакт 21 указывает на транзакт 14 как на следующий член своего ансамбля. 7.27 Синхронизация движения транзактов. Блок MATCH (СИНХРОНИЗИРОВАТЬ) Подобно блокам ASSEMBLE и GATHER, блок MATCH (рис. 7.33) имеет только операнд А. В операнде А ставится некоторое ими, присутствующее в модели и указывающее на конкретный блок. Указанный блок называют сопряженным. Работу блока MATCH лучше всего объяснить с помощью этого сопряженного блока. Когда транзакт входит в блок MATCH, интерпретатор выполняет одну из следующих двух процедур. Процедура 1. Если сопряженный блок содержит транзакт, являющийся членом ансамбля, к которому принадлежит первый транзакт, и если этот член ансамбля находится в состоянии аариоеги (т. с. находится в цепи парности), то пара найдена. Когда пара найдена, интерпретатор а) переводит транзакт, находящийся в состоянии парности, нз его цепи парности в цепь текущих событий; б) ставит флаг изменения состояния в положение «включен» и в) начинает продвигать первый транзакт дальше в модели. MATCH Рис. 7.33. Блок MATCH с операндом А: Операнд Значение Л 1 Укааывярт местоположение сопряжен- 1 ного блока Результат но ■умолчанию Ошибка Процедура 2. Если в сопряженном блоке пара не найдена, интерпретатор выводит первый транзакт из цепи текущих событий и помещает его в цепь парности. Цепь парности единственна для данного ансамбля и данного блока MATCH. При выполнении процедуры 1 интересно выяснить, какие блоки в GPSS позволяют тран- закту находиться в состоянии парности. В параграфах 7.24 и 7.26 мы видели, что транзакты попадают в состояние парности соответственно в блоках ASSEMBLE (цока длится операция соединения) н GATHER (пока проходит операция сборки). При выполнении процедуры 2 транзакты могут попасть в состояние парности в блоках MATCH. Только в блоках ASSEMBLE, GATHER и MATCH транзакты могут находиться в состоянии парности. Тем не менее блок MATCH не обязательно должен иметь одни из этих трех блоков в качестве сопряженного. Например, блок MATCH может ссылаться на блок ADVANCE, или на блок SEIZE, или на любой другой. Если это так, то всегда будет выполняться процедура 2 для транзактов, входящих в рассматриваемый блок MATCH, так как для них не будет найдено пары. Что происходит при выполнении процедуры 1, если сопряженным блоком является блок ASSEMBLE (или GATHER) и пара найдена даже в случае, когда операция соединения (или сборки) еще не закончена? Как отмечалось, интерпретатор выводит парный транзакт из его цепи парности (и, таким образом, из состояния парности), помещает его в цепь текущих событий и т. д. Хотя это может и не иметь смысла (поскольку, по предположению, операция соединения или сборки не завершена), но интерпретатор GPSS проделывает именно эту процедуру. .Практически это не представляет интереса, поскольку очень редко блок ASSEMBLE (или GATHER) является сопряженным с блоком MATCH. Предположим теперь, что транзакт входит в блок MATCH, пары в сопряженном блоке не имеется, и транзакт переводится в состояние
парности, помещаясь в цепь парности. При каких условиях этот траизакт будет взят из цепи парности и приведен в дальнейшее движение? Прежде всего обратим внимание на то, что пока транзакт находится в цепи парности, он полностью пассивен в модели. Интерпретатор ради этого транзакта не будет проверять наличие пары каждый раз при просмотре цепи текущих событий. Таким образом, для этого транзакта нет возможности самостоятельно выйти и продолжать дальнейшее движение. Этот транзакт сможет продолжить движение только тогда, когда блок MATCH, в котором- он находится, будет являться сопряженным некоторым другим блоком MATCH, называемым сопряженным блоком MATCH. Затем, когда член его ансамбля войдет в этот другой блок MATCH, интер- прератор выполнит процедуру 1, заключающуюся в том, что задержанному транзакту будет разрешено дальнейшее движение. Наиболее часто блок MATCH используется так, что он указывает на другой блок MATCH, который, в свою очередь, указывает на первый блок MATCH. Для примера такого использования блока MATCH предположим, что блоки MATCH имеют в модели имена LOCA и LOCB (рис. 7.34), и каждый из них в качестве своего сопряженного имеет Другой блок. Предположим, что траизакт поступает в блок LOCA MATCH и не находит пары. Тогда он помещается в цепь парности, поскольку срабатывает процедура 2. Затем, когда член того же ансамбля входит в блок LOCB MATCH, этот транзакт находит себе пару. Выполняется процедура I, причем оба члена ансамбля выходят из своих блоков MATCH одновременно (термин «одновременно» употребляется в своем обычном смысле). Целью использования блока MATCH и является обеспечение такого координированного выхода членов одного ансамбля из двух различных мест модели. Для блока MATCH допустимо использование самого себя в качестве сопряженного. Примером подобного блока может служить блок «IAMIT MATCH IAMIT». Этот блок ведет себя точно также, как блок «GATHER 2». Более сложный пример использования блока MATCH показан в модели, представленной на рис. 7.35. Требования приходят на обслуживание каждые 300 + 200 временных единиц. Каждое требование разделено на две части, причем (ЮСА) | (LQC8) J MATCH /\ К match <(.осв loca> Рис. 7.34. Первый пример использования блока MATCH обслуживание этих частей производится параллельно двумя рабочими. Первому рабочему (MAN!) для обработки первого этапа для части 1 требуется 100 =£ 20 единиц времени. Второму рабочему для выполнения первого этапа для части 2 нужно ПО + 25 единиц времени. Ни один из рабочих ие может начать выполнение второго этапа, пока другой не закончит первый этап, поскольку части 1 и 2 необходимо сравнить друг с другом на данном этапе обработки для того, чтобы установить, соблюдены ли требования точности. (В модели на рис. 7.35 предполагается, что время проверки на точность пренебрежимо мало. В упражнении 8 параграфа 7.30 требуется отказаться от этого предположения.) Затем, после того, как закончится второй этап для каждой части, первый рабочий собирает обе части вместе, причем это является третьим этапом. В завершение измеряется интервал времени между последовательными приходами готовых требований в конец модели. Вновь обращаясь к рис. 7.34, предположим, что два (или более) члена ансамбля входят в блок LOCA MATCH, не находят пары и соответственно помещаются в цепь парности. Предположим теперь, что другой член этого ансамбля входит в блок LOCB MATCH. Будут ли в результате оба (или все) транзакта из блока LOCA MATCH возвращены в цепь текущих событий или только один? Ответ таков: из блока LOCA из состояния парности будет выведен только один транзакт. Будет ли этот транзакт первым из двух (или более транзактов), поступивших в блок LOCA ,MATCH? Нет; это возможно только при случайном совпадении. Интерпретатор при описанных условиях не устанавливает порядок «первым пришел — первым ушел». Когда транзакт входит в блок LOCB MATCH, интерпретатор начинает поиск в этом ансамбле в последовательности, соответствующей основному списку единым образом определенных связей, отыскивая другой член этого ансамбля, находящийся в состоянии парности в сопряженном блоке. Первым проверяемым членом ансамбля является тот, на который указывает транзакт из блока LOCB своим значением SET; вторым проверяемым членом будет тот, на который указывает первый проверяемый, и т. д. Ясно, что эта процедура не обеспечивает в блоке LOCA MATCH порядок «первым пришел — первым ушел». Как и в блоках ASSEMBLE и GATHER, транзакт, находящийся в состоянии парности в блоке MATCH, участвует в формировании значения счетчика текущего содержимого блока. Даже после того, как транзакт будет выведен из состояния парности, он продолжает вносить вклад в этот счетчик до тех пор, пока ему не удается продвинуться в следующий по порядку блок.
GENERATE <V 300.200 I ПРИБЫТИЕ ТРЕБОВАНИЙ SPL!T ( (RUTE3) рдС1Ц6ДИТЬ КАЖДОЕ SEIZE Л MAN t ' / -> ADVANCE 100,20 (BLOKl|J MATCH /\ (BLOK2>- ГРСБОВАНИЕ HA ME ЧАСТИ ЗАНЯТЬ ПЕРВОГО РАБОЧЕГО ВЫПОЛНЕНИЕ ПЕРВОГО ЭТАПА ДЛЯ ПЕРВОЙ ЧАСТИ КООРДИНАЦИЯ ДЛЯ ПРОВЕРКИ ТОЧНОСТИ" ADVANCE 50.5 (MERGE) Е ВЫПОЛНЕНИЕ ВТОРОГО ЭТАПА ДЛЯ ПЕРВОЙ ЧАСТИ ASSEMBLE ADVANCE 25,5 RELEASE MAN I V TABULATE x TERMINATE. IATUM ТРЕТИЙ ЭТАП НЕЛЬЗЯ НАЧАТЬ.ПОКА Н£ ЗАКОНЧЕНЫ ОБА ЭТАПА ВЫПОЛНЕНИЕ ТРЕТЬЕГО ЭТАПА ОСВОБОДИТЬ ПЕРВОГО РАБОЧЕГО ЗАПИСАТЬ ВРЕМЯ МЕЖДУ СОСЕДНИМИ ПОСТУПЛЕНИЯМИ Рис. 7.35. Второй пример использования блока MATCH ТРЕБОВАНИЕ ПОКИДАЕТ МОДЕЛЬ ЗАНЯТЬ ВТОРОГО РАБОЧЕГО ВЫПОЛНЕНИЕ ПЕРВОГО ЭТАПА ДЛЯ ВТОРОЙ ЧАСТИ ВЫПОЛНЕНИЕ ВТОРОГО ЭТАПА ДЛЯ ВТОРОЙ ЧАСТИ ОСВОБОДИТЬ ВТОРОГО РАБОЧЕГО ВТОРАЯ ЧАСТЬ ПЕРЕХОДИТ К ТРЕТЬЕМУ ЭТАПУ
7.28. Проверка состояния парности Блок GATE Транзакт может использовать блок MATCH для того, чтобы задать вопрос: существует ли член того же ансамбля в состоянии парности где-нибудь в другом месте, т. е. в сопряженном блоке? В зависимости от того, найдена ли пара, запрашивающий транзакт либо переводится в полностью пассивное состояние в цепи парности, либо парный транзакт выводится из цепи парности и помещается в цепь текущих событий. В некоторых моделях может оказаться важным заставить транзакт проверить наличие пары где-либо в модели без выполнения вышеуказанных действий. Для этой цели (табл. 7.10) можно использовать логические указатели М и NM в блоке GATE. На рис. 7.36 показаны примеры использования блока GATE с этими логическими указателями (обратите внимание на форму изображения части, прилегающей к блоку). На рис. 7.36, а показано использование блока GATE в режиме отказа с логическим указателем М (для парности). Когда транзакт пытается войти в блок GATE, интерпретатор проверяет, находится ли другой член того же ансамбля, к которому принадлежит вошедший транзакт, в состоянии парности в блоке с именем THATI. Если это так, то проверяющему транзакту разрешается войти в блок GATE (и затем немедленно попытаться пройти в следующий блок). Если же пары нет, то проверяющий траизакт остается в заблокированном состоянии в своем блоке и в цепи текущих событий. Заблокированный транзакт повторит проверку всякий раз, когда будет просматриваться цепь текущих событий. Как только пара найдена, на другой транзакт никак не влияет то, что происходит в блоке GATE. На рис. 7.36, б показано использование блока GATE в режиме условной передачи с логическим указателем NM (для непарности). Когда транзакт поступает в блок GATE, он проверяет, находится ли член его ансамбля в состоянии парности в блоке THERE. Если нет, то проверяющий транзакт переходит в следующий по порядку блок модели; в противном случае он направляется в блок с именем SWICH. Таблица 7.10. Дополнительные логические указатели для блока GATE Логическая указатель м Значение Проверка, находится ли какой-либо член ансамбля п состоянии парности в «А-блоке» Проверка отсутствия в «А-блокеэ члена ансамбля, находящегося в состоянии пар- нос ги а) 5) Рис. 7.36. Примеры использования блока GATE с логическими указателями At u NM: о — режим отказа; б — режим условной передачи Указатели М и NM являются 11-ми 12-м логическими указателями, введенными для использования с блоком GATE. (Полный набор всех 12 логических указателей, используемых в блоке GATE, приведен в приложении J). При использовании остальных 10 логических указателей с блоком GATE в режиме отказа и возникновения блокировки условия блокировки однозначные. Это значит (см. параграф 7.2), что индикатор просмотра каждого заблокированного транзакта включен, что приводит к экономии процессорного времени. Напротив, если в блоке GATE, работающем в режиме отказа, используются М или NM и возникает блокировка, блокирующее условие является неоднозначным. Индикатор просмотра такого транзакта остается в состоянии «выключен», и интерпретатор при каждом просмотре цепи текущих событий пытается заново продвинуть эти заблокированные транзакты в блок «GATE М» или «GATE NM». Таким образом, использование указателей М или NM с блоком GATE неэффективно в смысле затрат времени работы процессора. 7.29. Заключительные замечания об ансамблях 7.29.1. Цепь (цепи) парности: одна или несколько? В параграфах 7.24, 7.26 и 7.27 указано, что у каждого ансамбля имеется своя цепь парности в каждом блоке ASSEMBLE, GATHER и MATCH. Тем не менее в распечатке цени парности интерпретатор не дечает различия между различными цепями. Распечатка цепи парпости представляет собой просто список транзактов, расположенный в порядке возрастания нх номеров. Эти транзакты вовсе ие объединены по принципу принадлежности к цени парности. (Такая ситуация аналогична принципу расположения транзактов в цепи прерывания.) В этом списке присутствуют транзакты, находящиеся в состоянии парности в блоках ASSEMBLE. Для всякой производимой в модели операции сборки в этом списке присут- 458
ствует один транзакт. (Вспомним, см. параграф 7.26, что распечатка цепи парности для транзактов, участвующих в сборке, является неполной.) Цепь парности включает каждый транзакт, находящийся в состоянии парности в том или ином блоке MATCH. В частности, даже, когда два или более члена данного ансамбля находятся в состоянии парности в одном блоке MATCH, их всех включают в распечатку цени парности. Как и для цепей текущих и будущих событий и цепи прерывания, распечатка цепи парности производится интерпретатором в конце моделирования только в том случае, когда в операнде D карты START ставится единица. Для выдачи на печать цени парности можно также использовать блок PR ШТ. Для этого операнды А и В этого блока не заполняются, а в операнде С ставится символ МАТ. Таким образом, распечатка цепи парности происходит при входе транзакта в блок «PRINT „MAT». 7.29.2. Прохождение захваченных транзактов через блоки ASSEMBLE, GATHER и MATCH Что происходит, если флаг захвата транзакта находится в положении «включен» (означая, что данный транзакт захвачен) и этот транзакт попадает в блок ASSEMBLE, GATHER или MATCH? Если этот транзакт будет завершать операцию сборки в блоке GATHER или если он находит пару в сопряженном блоке MATCH, то он продолжает движение, и захват для него остается в силе. В противном случае транзакт оказывается в состоянии парности, попадая, как обычно, в цепь парности. (Предполагается, что пользователь будет избегать выводить транзакт из модели блоком ASSEMBLE, если этот транзакт в данный момент использует прибор.) Заметим, что теперь транзакт задержан по двум различным причинам: а) он либо ожидает завершения или операции соединения, или операции сборки, либо ожидает синхронизации с другим членом своего ансамбля, и б) он ожидает возврата прибора, с которого его сместили. Задержка транзакта будет продолжаться до тех пор, пока не прекратится действие обеих этих причин. Тогда этот транзакт будет возвращен в цепь текущих событий, и блоком, куда он попытается сойти, будет блок, следующий за блоком ASSEMBLE, GATHER или MATCH, в котором появилась задержка. 7.30. Упражнения 1. На рис. 7D.4 (пример 7D) максимальное содержимое. (MAXIMUM CONTENTS) многоканального устройства MEN и наибольшая величина верхнего предела (UPPER LIMIT) в таблице INUSE совпадают. Это не всегда должно быть так. Объяснить, каким образом при определенном типе временного узла максимальное содержимое будет больше, чем истинное число рабочих, используемых одновременно. 2. Предположим, что для сети на рис. 7D.1 (пример 7D) проект 1—2 завершен в момент нремени, когда свободен ровно один рабочий. Завершение проекта 1—2 освобождает еще четырех человек, и общее число незанятых рабочих равно пяти. Какой проект, 2—о или 2—4, в примере 7D будет реализован следующим? Ответ обоснуйте. Указание: предположить, что в рассматриваемый момент модельного времени никакой другой проект ие ожидает своего начала. 3. Покажите, каким образом следует изменить 2-й сегмент модели в примере 7D (следуя схеме на рис. 5.21) таким образом, чтобы тран- закт-наблюдатель был последним, а не первым в цепи текущих событий. Существует причина, по которой это решение не используют в примере 7D. Можете ли вы определить эту причину? 4. Пусть в сети, показанной на рис. 7D.1, времена завершения проектов совпадают с их средними значениями. Проделать вручную моделирование для определения времени выполнения всего комплекса работ для случая с восемью рабочими. Затем повторить эту работу для случая с девятью рабочими. Основываясь на полученных результатах, объяснить, почему время выполнения всего проекта увеличивается, когда Число рабочих изменяется от восьми до девяти (см. табл. 7D.3). 5. Показать, как можно изменить модель примера 7D таким образом, чтобы различные уровни рабочей силы исследовались при прочих равных экспериментальных условиях. Выполнить прогон полученной модели и сравнить среднее время завершения с временем указанным в табл. 7D.2. Получилась ли у вас такая же немонотонная картина, как и в табл. 7D2? 6. Объяснить, каким образом могло получиться, что величипы в последней строке табл. 7D2 отличаются от величин в предпоследней строке. 7. Если блок SPLIT на рис. 7.28 поместить либо между блоками ADVANCE и RELEASE, либо между блоками RELEASE и ASSEMBLE, то в результате была бы получена небольшая экономия времени работы процессора. Объяснить, почему. (Заметьте, что в аналогичной ситуации на рис. 7.31 блок SPLIT находится между блоками ADVANCE и RELEASE.) 8. На рис. 7.35 предполагается, что время, необходимое для проверки соответствия между двумя рабочими, пренебрежимо мало. Покажите, как следует модифицировать модель, если время проверки соответствия равно 10 i 4 единицам времени. 459
9. На рис. 7.35 может возникнуть ошибка, если транзакт-потомок войдет в блок «ASSEMBLE 2» раньше своего родителя. Это объясняется тем, что после завершения операции соединения потомок будет продвигаться в блок «RELEASE MANb, пытаясь таким образом освободить прибор, который он не использовал. Это вызовет ошибку выполнения 415: «Прибор освобождается транзактом, не занимавшим его». а) Объяснить, почему эта ошибка не может возникнуть в модели на рис. 7.35. б). Предположим, что блок ADVANCE в части 2 на втором этапе заменен: вместо блока «ADVANCE 70,10» поставлен блок «ADVANCE 60,10». При такой измененной модели во время прогона может возникнуть указанная ошибка. Показать, как изменить модель, чтобы исключить возможность появления этой ошибки. 10. В некоторой модели члены ансамбля время от времени поступают в точки А, В и С. Как только члены ансамбля поступили в какие- либо две из этих трех точек, два рассматриваемых транзакта должны продолжать свое движение в модели. Показать, как можно использовать блоки MATCH для моделирования такой ситуации. (Указание; можно также использовать один или более блоков GATE.) 11. Некоторый производимый продукт получается в результате соединения двух, пяти и трех частей типов А, В и С. Время между поступлениями этих частей в место соединения даны в табл. У11. Операция соединения включает следующие этапы. Таблица У11 Тип части А Б С Время между соседними поступлениями, мнй 15±Б 6±2 10 ±3 1. Объединить 1А и 2В. Назовем результат D. Требуемое время 15 ^ 3 мин. 2. Объединить 1А, 1В и 1С. Назовем результат Е. Требуемое время 18 :2= 3 мин. 3. Проверить D и Е на соответствие. Требуемое время 5i2 мнн. 4. Объединить D из этапа 1 с В. Назовем результат F. Требуемое время 10 ^ 2 мин (этап 4 не может начаться, пока не завершен этап 3). 5. Объединить F из этапа 4 с Е из этапа 2. Назовем результат G. Требуемое время 15 :£ sfc 4 мни. 6. Объединить G из этапа 5 с одним В и двумя С. Соединение завершено. Требуемое время 8±3 мин. Предположить, что каждый из этих этапов может быть выполнен одним рабочим и что рабочие достаточно квалифицированы, чтобы легко переключаться с этапа на этап. Промоделировать производство продукта и определить минимальное число рабочих, необходимое для того, чтобы избежать излишнего накопления частей А, В и (или) С в месте их. соединения.
8.1. Введение Словарь блоков в GPSS/360 состоит более чем из 40 наименований. Более 35 из них были детально рассмотрены в этой книге. Точное число блоков зависит от их истолкования; например, можно рассматривать один блок GATE или четыре блока GATE (для приборов, многоканальных устройств, логических переключа' телей и транзактов) и т. п. В этой главе вкратце описаны блоки, не упоминавшиеся в книге, но содержащиеся в дзыковом наборе. Кратко указаны некоторые другие особенности языка. Для более подробного ознакомления с использованием этих блоков н особенностей следует обратиться к соответствующему руководству пользователя (User's MamiaJ). 8.2. Блок HELP (ПОМОЧЬ) Когда транзакт входит в блок HELP, управление от GPSS-модсли переходит к подпрограмме, заданной пользователем; имя этой подпрограммы задается в операнде А блока HELP. В GPSS/360, версия 1, пользователь может задавать только подпрограммы, написанные на языке Ассемблер системы/360. В GPSS/360, версия 2, GPSS-модели могут также сочетаться с независимыми фортрановскими подпрограммами. В GPSS V возможности блока HELP расширены, и наряду с языками Fortran и Ассемблер для написания подпрограмм можно использовать PL/1. Транзакт, вошедший в блок HELP, остается там до тех пор, пока не закончится выполнение указанной подпрограммы. Предусмотрена возможность записи величин параметров тран- закта, находящегося в блоке HELP, а также записи обычных и матричных пол условных или полнословных сохраняемых величин в подпрограмму н наоборот. Когда управление из подпрограммы возвращается к GPSS-моделн, интерпретатор GPSS вновь обретает свою ак- Некоторые дополнительные возможности GPSS/360 тивиость в фазе просмотра, продвигая ранее задержанный транзакт из блока HELP в последующий и т. д. 8.3. Блоки, обеспечивающие группировку Наличие групп дает возможность заставлять транзахты становиться членами объединений (групп). Каждый транзакт может одновременно принадлежать любому числу различных объединений. Транзакт становится членом объединения, проходя через блок JOIN (ПРИСОЕДИНИТЬ). Затем он может выйти из объединения (илн, по желанию, выборочно зывести из объединения другие транзакты), проходя через блок REMOVE (УДАЛИТЬ). Использование блока EXAMINE (исследовать) позволяет сделать следующий блок, куда должен войти транзакт, зависящим от принадлежности этого транзакта к некоторому объединению. Члены объединения могут иметь доступ к другим членам своего объединения (а именно, исследовать уровень приоритета и значения параметров других членов объединения) для поиска первого тракзакта, удовлетворяющего условию равенства, наложенному либо на приоритет, дибо на величину одного из параметров. Для
этой цели используют блок SCAN (ПРОСМОТРЕТЬ). В одном из вариантов использования блока SCAN транзакт, вошедший в этот блок, попадет в следующий блок, зависящий от того, да идете я ли в объединения транзакт, удовлетворяющий указанному условию равенства. В условном режиме транзакт, производящий просмотр, берет значение уровня приоритета или значение параметра первого найденного члена объединения, удовлетворяющего сформулированному условию равенства. Взятое значение записывается в один из параметров транзакта, производящего просмотр. Наконец, члены объединения могут модифицировать характеристики остальных членов этого объединения (т. е. менять их приоритеты или величину одного из параметров). Это выполняется блоком ALTER (ПОМЕНЯТЬ). Меняющий транзакт (т. с. транзакт, вошедший в блок ALTER) может безусловным образом поменять приоритеты всех членов данного объединения, присвоив и.м определенные значения, или может безусловным образом изменить некоторый параметр всех членов объединения на заданную величину. В условном режиме эти изменения можно проделать с подмножеством объединения. Пусть размерность подмножества, заданная пользователем, будет п. Тогда подмножество может состоять из последних членов объединения или из п первых членов, чей уровень приоритета удовлетворяет сформулированному условию равенства или имеющих определенный параметр, величина которого удовлетворяет сформулированному условию равенства. Как указывалось выше, блоки REMOVE, SCAN и ALTER можно использовать в альтернативных режимах, что повышает ценность понятия группы в.моделировании HaGPSS. Кроме того, подразумевалось, что действия, касающиеся членов объединения, л с зависят от того, где они расположены в модели. Транзакты — члены объединения могут находиться в цепи текущих или будущих событий, в кепи пользователя, в цепи прерывания или парности и тем не мепес быть активизированы блоками REMOVE, SCAN и ALTER. В группе не предусмотрена возможность, с помощью которой один член объединения мог бы непосредственно указывать другому члену объединения путь следоваггия в модели. Например, в блоке SCAN член объединения не может выполнить следующую операцию: найти любой член объединения, у которого величина Р5 равна 21; вывести Этот транзакт из цепи, в которой он находится, а поместить его в цепь текущих событий, причем так, чтобы следующим блоком, куда он бы пошел, был блок с именем TRUBL. Все указанное выше относится к объединениям, членами которых являются транзакты. В группах рассмотрены также объединения, членами которых являются просто числа. Естественно, числам не присущи такие понятия, как уровень приоритета и величины параметров. Поэтому блоки SCA>i и ALTER не применимы к объединениям, членами которых являются числа. Тем не менее блоки JOIN, REMOVE и EXAMINE применимы к числовым объединениям и к объединениям, состоящим из тран- зактов. 8.4. Блок COUNT (ПОДСЧИТАТЬ) Блок COUNT похож на блок SELECT (ВЫБРАТЬ), за исключением следующих положений. 1. Вспомним, что блок SELECT просматривает заданный ряд объектов для отыскания котя бы одного, удовлетворяющего в данный момент определенному условию. Блок COUNT подсчитывает число элементов заданного множества, которые в данный момент удовлетворяют указанному условию. 2. Если просмотр в блоке SELECT окажется успешным, то в параметр выбирающего транзакта заносится номер элемента, удовлетворяющего требуемому условию. В блоке COUNT вопрос об успешности просмотра не стоит. Результат подсчета после просмотра заносится в параметр подсчитывающего транзакта. 3. По причине, изложенной в п 2, блок COUNT не имеет альтернативного выхода. 4. Вспомогательным оператором в блоке SELECT может быть оператор отношения, или логический указатель, или MIN или МАХ. Дополнительным оператором « блоке COUNT может быть оператор отношения или логический указатель, по ни MIN и ни МАХ. Операнды А—Е в блоке COUNT выполняют те же функции, что и в блоке SELECT. 8.5. Блоки TRACE (НАЧАТЬ ТРАССИРОВКУ) и UNTRACE (ЗАВЕРШИТЬ ТРАССИРОВКУ) У каждого транзакта имеется индикатор трассировки. Он находится либо в состоянии «включен», либо в состоянии «выключен». Обычно индикатор трассировки выключен. Когда транзакт входит в блок TRACE, его индикатор трассировки включается. Затем, но мере того как транзакт последовательно входит в какой-либо блок, интерпретатор печатает его номер, текущий блок, следующий блок, куда он попытается войти, значение относительного времени и величину счетчика числа завершений. Вдобавок для транзакта производится стандартная распечатка цепей. Такая печать будет продолжаться при входе в каждый блок до тех пор, пока транзакт в конце концов не войдет в блок 4Я9
UNTRACE, но при этом расходуется много бумаги. Положение индикатора трассировки (включен или выключен) отражено в распечатке цепи для транзакта в столбце Т1 (см. приложение D). 8.6. Блок INDEX (ИНДЕКСИРОВАТЬ) Когда транзакт входит в блок INDEX, прежнее значение его параметра PI замещается новым. Операнд А блока представляет собой номер параметра (любого). Операнд В содержит число. Величины операндов А и В могут задаваться непосредственно, косвенно или с помощью косвенной адресации. Новое значение Р1 вычисляется путем добавления к числу, стоящему о операнде В, величины, находящейся в параметре, номер которого задан в операнде А. Пусть, например, транзакт вошел в блок «INDEX 1,1»; тогда величина Р1 увеличится на 1. Если первый параметр используется как счетчик, то это удобный способ добавить к счетчику единицу. Конечно, для этой цепи можно было бы использовать блок ASSIGN, работающий в режиме накопления. Преимуществом блока INDEX является то, что он требует для своего выполнения меньше времени процессора, чем блок ASSIGN. 8.7. Дополнительные режимы работы блока TRANSFER В GPSS блок TRANSFER может быть использован в девяти разных режимах. Три режима (безусловная передача, статистическая передача и передача в режиме BOTH) были рассмотрены в книге. Ниже будут коротко описаны остальные шесть режимов. 8.7.1. Режим ALL (ВСЕ) Режим ALL блока TRANSFER является обобщением режима BOTH. Когда транзакт входит в блок TRANSFER, работающий в режиме ALL, интерпретатор последовательно проверяет все блоки в определенном ряду в поисках первого, способного принять этот транзакт. Как только первый такой блок найден, транзакт входит в этот блок и продолжает оттуда свое дальнейшее движение. Если же такого блока нет, транзакт остается в блоке TRANSFER и в цепи текущих событий. Всякий раз, когда транзакт обрабатыпается во время просмотра цепи текущих событий, интерпретатор пытается продвинуть его в один из блоков, принадлежащих определенному ряду. Пели все блоки часто отказывают транзакту во входе, блок TRANSFER в режиме ALL требует значительных расходов времени. 8.7.2. Режим PICK (выборочный) Когда транзакт входит в блок TRANSFER, работающий в режиме PICK, интерпретатор выбирает наудачу блок из заданного ряда. Выбранный блок становится для этого транзакта следующим блоком для входа (вне зависимости от того, может ли этот транзакт немедленно войти в данный блок). Каждый блок в заданном ряду может стать следующим входным блоком для транзактов с равной вероятностью. 8.7.3. Режим FN (функциональный) Если транзакт входит в блок TRANSFER, работающий в режиме FN, то номер следующего блока, куда он войдет, должен быть равен величине функции, номер которой указан в операнде В. Если используется операнд С (что необязательно), то помер следующего блока определяется как сумма величины функции и числа, стоящего п операнде С. 8.7.4. Режим Р (параметрический) Если транзакт входит в блок TRANSFER, работающий в режиме Р, то номер следующего блока, куда ои направится должен быть равен величине параметра, номер которого задан в операнде В. Если используется операнд С (что необязательно), то номер следующего блока равен сумме величины параметра и числа, стоящего в операнде С. 8.7.5. Режим SBR (подпрограммный) При входе транзакта в блок TRANSFER, работающий в режиме SBR, номер следующего блока, куда он будет направлен, должен быть равен величине, стоящей в операнде В. Перед тем, как произойдет передача транзакта, номер самого блока TRANSFER помещается в в параметр, номер которого указан в операнде С. Следовательно, перед тем, как транзакт переходит к подпрограмме, в нем запоминается местоположение того блока, откуда будет совершен переход. (Под подпрограммой здесь понимается просто некоторая последовательность блоков где-либо в другом месте модели.) Последним блоком в подпрограмме может, таким образом, быть блок TRANSFER, работающий в Р-режнме, который возвратит транзакт обратно в ту точку модели, откуда был произве- ден переход. (На практике пользователю следует задать единицу в операнде С блока TRANSFER, работающего в режиме Р. В результате транзакт возвратится в блок, непосредственно следующий за блоком TRANSFER с режимом SBR, откуда был произведен переход.)
8.7.6. Режим SIM (одновременный) Путем использования блока TRANSFER, работающего в режиме SIM, дальнейшее движение транзакта в модели может быть приостановлено (хотя и относительно неудобно) до тех пор, пока не будет одновременно выполнен ряд условий). Такой способ использования блока TRANSFER остался от системы GPSSIII, когда в языке не было булевских переменных. Этот блок оставлен в языке в целях совместимости, несмотря на то, что его использование теперь изжило себя. Для обеспечения работы блока TRANSFER в режиме SIM каждый тран- закт имеет индикатор задержки. Положение этого индикатора (включен» или выключен» отражено в распечатке цепи в столбце Ш (см. приложение D). 8.8 Блок CHANGE (ЗАМЕНИТЬ) С помощью блока CHANGE некоторый блок, занимающий в модели определенное место, может быть замещен другим блоком. Этот другой блок должен присутствовать в модели. В операнде А блока CHANGE ставится номер блока, который должен быть замещен другим блоком. В операнде В стоит номер блока, который должен стать новым блоком. Назовем блок, подлежащий замене, блоком А, а блок, осуществляющий эту замену, блоком В. Когда транзакт входит в блок CHANGE, блок В замещает блок А. С самим блоком В ничего не происходит. Затем транзакт из блока CHANGE переходит к следующему блоку и т. д. Таким образом, блок CHANGE обеспечивает дипамическую возможность модификации блоков, занимающих выбранное пользователем местоположение. В данной книге в некоторых примерах использовали статическую возможность проведения подобной модификации. В статическом случае определение нового блока-заменителя помещается между картами START. 8.9. Блок EXECUTE (ВЫПОЛНИТЬ) В операнде А блока EXECUTE помещается номер блока, стоящего в каком-либо другом месте. Когда транзакт входит в блок EXECUTE, отрабатывает блок, стоящий на указанном месте так, как будто бы транзакт вошел в этот блок. Однако транзакт остается в блоке EXECUTE до тех пор, пока ие отработает тот другой блок. Затем транзакт переходит в блок, следующий по порядку за блоком EXECUTE. 8.10 Блок WRITE (ЗАПИСАТЬ) Когда транзакт входит в блок WRITE, на одну из трех магнитных лент, определенных пользователем, записывается следующая информация. 1. Время между поступлениями, т. е. величина модельного времени, прошедшего с того момента, когда предшествующий транзакт вошел в блок WRITE. (Для транзакта, впервые вошедшего в блок WRITE, в качестве времени между поступлениями принимается величина, равная нулю). 2. Время пребывания транзакта в модели (т. е. величина Ml). 3. Уровень приоритета транзакта. 4. Параметры транзакта (номера параметров и соответствующие нм величины). После того, как эта информация записана на ленту, транзакт переходит к следующему блоку. Использование блока WRITE дает возможность точно записать прохождение потока тран- зактов через указанную точку. Эта запись может быть вновь проиграна, т. е. вновь создана, при последующих прогонах модели. Подобные повторы могут, очевидно, быть полезны при осуществлении уравнения условиями эксперимента или при воспроизведении последовательности событий, которые имели место при наблюдении поведения реальной системы. (Подобная запись может быть также получена с помощью программ, написанных не на GPSS и не зависящих от использования блока WRITE.) 8.11 Карты STARTMACRO (НАЧАЛО МАКРО), ENDMACRO (КОНЕЦ МАКРО) и MACRO (МАКРО) Иногда некоторую последовательность блоков используют в двух и более местах в модели. Если определить э-гу последовательность блоков как макро, то можно достичь некоторой экономии при набивке карт. Интерпретатор будет затем подставлять эти блоки в различные места \'одели по желанию пользователя. Во всех этих местах для указания того, что туда должна быть вставлена последовательность блоков, определенная как макро, используется единственная карта. Карты STARTMACRO и ENDMACRO являются управляющими, обозначающими соответственно начальную и конечную точку в определении макро. После того, как сделано определение макро, используется карта MACRO, требующая, чтобы в данную точку были вставлены блоки, входящие в макро. Макро, естественно, не является подпрограммой. Транзакты не переходят к первому блоку макро и затем не возвращаются к точке, следующей за той, откуда был сделан переход. Вместо этого последовательность блоков, объединенных в макро, один за другим вставляют в то место модели, где стоит карта MACRO. Таким образом, понятие «макро» нельзя исполь-
зовать для экономии числа блоков, присутствующих в оттранслированной модели; оно может быть использовано лишь для упрощения кодирования и перфорации повторяющихся последовательностей блоков. Пользователь может точно установить, какую последовательность блоков он выбирает при определении макро (например, SEIZE— DEPART—ADVANCE—RELEASE). После этого блоки в макро зафиксированы (для данной макро и в данной модели). Однако величины полей в этих блоках фиксировать необязательно. После того, как макро определена, в различные поля могут быть поставлены фиктивные величины. Когда затем макро подставляется на место карты MACRO, эти фиктивные величины будут заменены фактическими (а именно, стандартными числовыми атрибутами), как определено в карте MACRO. 8.12 Редактор вывода На редактор вывода в GPSS была сделана краткая ссылка в параграфе 4.23.3, где отмечалась возможность его использования для получения гистограммы. Вообще редактор вывода может быть использовал для следующих целей. 1. Выбирать и печатать только те выходные статистики, которые представляют интерес. 2. Делать заготовки и комментарии в различных местах выводимого результата. 3. Печатать избранные результаты как в обычном формате, так и в виде, определенном пользователем. 4. Управлять печатающим устройством. 5. Выводить значения различных стандартных числовых атрибутов в графической форме. Для выполнения пп. 1—4 редактор вывода обеспечивают девятью различными управляющими картами (REPORT, TITLE, INCLUDE, FORMAT, TEXT, COMMENT, EJECT, SPACE и OUTPUT). Для представления информации в графическом виде имеется шесть различных управляющих карт (GRAPH, ORIGIN, X, Y, STATEMENT и ENDGRAPH). 8.13 Заключение Если вы дошли до этого места, поздравляю вас. Если при этом вы внимательно прочли все подряд, поздравляю вас стократно! Желаю успехов в использовании GPSS! 30 т. Дж. ШраЯбер
ПРИЛОЖЕНИЯ Приложение А СРАВНЕНИЕ GPSS/360 с GPSS V Универсальная система моделирования V (GPSS V) создана фирмой IBM и представляет собой дальнейшее развитие версий 1 и 2 GPSS/360. Модели, выполненные с помощью системы GPSS/360, за сравнительно небольшими исключениями (которые будут обсуждены ниже) могут быть без изменений просчитаны с помощью GPSS V. GPSSV имеет все свойства версий 1 и 2 GPSS/360 и, дополнительно, следующие возможности. I. Моделирование периодов недоступности многоканальных устройств и приборов. Для некоторых единиц оборудования или группы, содержащей несколько единиц оборудования, моделируемых в GPSS элементами «многоканальные устройства» и «приборы», может быть свойственна недоступность в отдельные промежутки времени по таким причинам, как механическая поломка пли отсутствие обслуживающего персонала. Для моделировании такой ситуации с помощью GPSS/360 необходимо, чтобы управляющий транзакт входил в блок PREEMPT или ENTER и занимал многоканальное устройство или прпбор на время, равное периоду недоступности. Такой метод не позволяет другим трапзактам использовать этот элемент в течение периода недоступности; тем не менее такое «искусственное» использование отражается в статистике по нагрузке. Для того чтобы скорректировать результаты по нагрузке и обеспечить некоторые другие возможности, предусмотрены следующие блоки, позволяющие делать доступными или недоступными одно (или более) многоканальное устройство или прибор: Элемент Прибор Многоканальное устройство Недоступно FUNAVAIL SUNAVAIL Доступно FAVAIL SAVAIL Статус доступности этих объектов можетбыть определен посредством блока GATE: «GATE SNV POOL» «GATE FV MAN» Распечатка результатов включает статистику и времени доступности и времени недоступности, что позволяет непосредственно определять прямое использование многоканального устройства или прибора. 2. Возможность связи между GPSS и программами пользователя, написанными на PL/J. Эта возможность достигается посредством введения полых форм блока HELP, а именно. HELPAPL1, HELPBPL1 и HELPCPL1, обеспечивающих различные режимы односторонних н двусторонних связей между программами на PL/1 и GPSS. Возможность связп с PL71 похожа на существующую в версии 2 GPSS/360 возможность связи с FORTRAN. Это свойство обеспечивает работу с компилятором F-уровня PL/I, а также с оптимизирующим и отладочным компиляторами. 3. Возможность использования до 255 пол условных, 255 пол пословных, 255 байтовых параметров и до 255 параметров транзакта с плавающей запятой в любой комбинации. Всего каждый транзакт может иметь до 1020 параметров. Полусловные, полнословные и байтовые параметры могут содержать целые значения соответственно в диапазонах ±215—1, ±2»—1 и ±27—J. В параметрах с плавающей запятой могут находиться целые и дробные величины в диапазоне ±2М—1 без потери точности. 4. Возможность использования байтовых сохраняемых величин и матриц и сохраняемых величин и матриц с плавающей запятой. В каждом из этих типов сохраняемых величин и матриц могут находиться величины в таких же диапазонах, что и в соответствующем типе параметра. о. Новые стандартные числовые атрибуты (СЧА), с помощью которых можно обращаться к содержимому новых объектов. Полнословные Полусловные Байтовые С плавающей запятой Параметры PF РН РВ PL Сохраняемые хеличииы XF или X хн ХВ XL Матрицы AiX МН MB ML 1 Это приложение было написано Мэри Джейн Сортет из фирмы IBM. Часть материала для этого приложения взята из «Системы моделирования общего назначения V, описание и руководство к применению», форма номер GH20—0825. с.9—11 [©1970), фирма IBM] и из «Системы моделирования общего назначения. Руководство пользователю», форма номер SH 20—0851, с. 335—336 |© (1970, 1977), фирма IBM]. Эти материалы представлены здесь с разрешения фирмы IBM. Полнословные Полусловные Байтовые С плавающей запятой PF РН РВ PL XF или ХН ХВ XL AiX МН MB ML 6. Диапазоны блоков ASSIGN, SAVEVALUE и MSAVEVALUE. С помощью одного блока можно внести одну и ту же величину в несколько последовательных параметров или сохраняемых величии в зависимости от 466
типа блока. Например, чтобы внести величину 25 в байтовые параметры с 1 по 9 включительно и в полусловные сохраняемые величины с 31 по 34 включительно, можно выполнить следующие операции: «ASSIGN 1—9.25.РВ» «SAVEVALUE 31—34.25.ХН» В блоке MSAVEVALUE в операндах А, В н С можно использовать диапазоны, например: «MSAVEVALUE 1,1—2,4—Б,26,МН» «.MSAVEVALUE 1—7,2,6,Б28,МН» «MSAVEVALUE 1—4,3.7—8.473.МН» В GPSS/360 для изменения каждого параметра или сохраняемой величины требуется отдельный блок. 7. Расширение косвенной адресации. В обеих версиях GPSS/360 для обозначения операнда или элемента, а кото» ром разрешено использование косвенной адресации, применяют запись СЧА*/, где / — всегда номер параметра, принадлежащего траазакту, у которого этот параметр подлежит вычислению. Записью косвенной адресации в GPSS V является СЧА* СЧА/, это означает, что второй СЧА (справа от звездочки) может быть любым СЧА. При этом отпадает необходимость в занесении значения, которое может уже находиться, например, в сохраняемой величине, в параметр только для того, чтобы обеспечить косвенную адресацию. Например, в GPSS V возможно следующее: «ASSIGN XH*FN $ ADVTM». Для того чтобы осуществить вышеуказанное действие в GPSS/360, потребовалось бы два блока: «ASSIGN 1,FN$ADVTM» «ADVANCE ХН*Ь 8. Свободная форма записи Операторов, позволяющая избежать необходимости начинать запись полей операции И операндов соответственно с 8 и 19 позиции. При свободной форме записи имя блока или символ элемента (п карте определения} всегда должны начинаться с первой позиции. Поля операции и операндов должны отделяться друг от друга одной пустой позицией. Лоле операндов на распечатке фазы ввода (вторая распечатка программы), получаемое при работе с GPSS V, не разделено на столбцы по шесть позиций в каждом, как это было в GPSS/360. Поля имели, операции и операндов всех операторов просто записаны в строчку. Операнды на этой распечатке разделены запятыми. Одним из следствий этого изменения является отмена ограничения на то, что константы должны иметь не более шести разрядов. 9. При желании можно получить распечатку перекрестных ссылок всех символически адресуемых объектов. 10. Возможность использования дополнительной памяти, которая позволяет пользователю помещать некоторые ели почти все элементы во внешнее запоминающее устройство для минимизации использования оперативной намята, повышая тем самым возможности прогона больших моделей. Новый оператор AUXILIARY является средством, с помощью которого пользователь может распределить элементы моделируемой системы между оперативной памятью И запоминающим устройством прямого доступа. Для каждого типа элементов во внешнем запоминающем устройстве может находиться только один пабор данных. Прн использовании этого свойства рекомендуется планирование. Например, если записывать на диск блоки, было бы нецелесообразно помещать во внешнюю память те нз них, которые находятся в наиболее часто используемых ветвях модельной логики, оставляя в оперативной памяти машины блоки, которые используются сравни* тельно редко. В таком случае число обращений к запоминающему устройству прямого доступа, необходимое для протона модели, неоправданно увеличит времн моделирования. 11. Сообщения об ошибках включают не только номер ошибки, но и ее описание. Во многих случаях номера ошибок в GPSS V при одинаковых ошибочных услопиях пе соответствуют тем сообщениям об ошибках, к которым привыкли пользователи GPSS/360. Природа этих изменений чисто формальная и не имеет отношения к описаниям ошибочных ситуаций. 12. Порядковый номер в позициях 73—80 в каждой карте. Этот номер печатается на этапе ассемблерной (первой) распечатки. Порядковый номер не обрабатывается; это означает, что пользователь может записывать там любую имеющую для него смысл комбинацию символов. 13. Выбор транэакта в блоках UNLINK, REMOVE. SCAN и ALTER no условиям «больше» (G), «больше или равно» (GE), «меньше» (L), «меньше или равно» (LE), «равно» (Ё) или «ме равно» (NE). 14. Возможность хранения или считывания отдельных наборов данных посредством свойства «Чтение/Хранение». В GPSS/360 хранимые или считываемые модели записываются или счигываются с одного и того же набора даипых. Пользователи GPSS/360, желающие рзботать с этим свойством GPSS V, могут счесть необходимым пересмотреть операторы READ/SAVE, относящиеся к тем моделям, которые не являются первыми в наборе дан пых. В добавление к ранее упоминавшейся аипн с Fortran, основными чертами GPSS/360 версии 2, включенными в GPSSV, являются следующие. 1. Свойство ограничения продолжительности, моделирования. Эта возможность не позволяет модели, содержащей ошибку (обычно зацикливапие), работать неопределенно долго до момевта вмешательства оператора. После истечения указанного времени прогон прекращается; при этом (как н при вмешательстве оператора) па печать выдаются все статистики, накопленные к моменту прерывания. В GPSS/3GQ версии 1 при окончании моделирования оператором все статистики пропадают. 2. Свойство ввода. Это свойство позволяет пользователю определить наиболее часто используемые в GPSS модули, а именно, DAG06 (модуль выаода на печать), а также модули вспомогательных программ, написанные пользователем так, чтобы они постоянно находились в памяти машины в течение всего периода моделирования. Причиной для овода DAG06 может, например, являться частое использование блоков PRINT или TRACE. Введение таких модулей позволит избежать дополнительных затрат времени, необходимых для восстановления новых копий Этих модулей из библиотеки программ всякий раз, когда па них происходит ссылка. Различия между GPSS/300 и GPSS V. Для определения иовых типов параметров блок GENERATE имеет новый формат и новые операнды. Следует, однако, заметить, что модели с блоками GENERATE, записанными по правилам GPSS/360, не требуют изменении при их просчете на GPSS V. Блок GENERATE В GPSS V, служащий для порождения тран- зактов с 10 байтовыми и 25 полносдоввымн параметрами, может быть записан следующими двумя способами: «GENERATE 1„,„25PF,I0PB» или «GENERATE 1 10PB.25PF» Заметим, что при необходимости определения параметров, они должны начинаться в операнде F и записываться в любой последовательности вплоть до операнда I, если необходимо. Определения параметров не могут быть записаны как РР2б и РВ10, потому что такая запись означает, что должен быть вычислен СЧА, чего здесь не требуется. Если пользователь не сделает специального определения, каждый траизакт будет иметь 12 полусловиых параметров, как и n GPSS/360. Из-за появления новых типов параметров в GPSS V имеются дополнительные особенности. 1. Блоки ASSIGN следует кодировать с дополнительным операндом для обозначения тина параметра. Для 30* 467
того чтобы завести значение 25 в полусловныи восьмой параметр, возможны следующие вяды записей при условии, что в операнде С не стоит модификатор функции: nASSiGH 8,25, РН» или «ASSIGN 8.25„РН» Пользователям GPSS/360 ке требуется изменять'вид блока ASSIGN в старых моделях при их просчете иа GPS5 V. Однако при написании новых моделей рекомендуется следовать новому формату. Старый формат приемлем до тех пор, пока транэакты, входящие в блок ASSIGN, имеют только один тип параметра. Принципиальная причина перехода на новый формат заключается в том, что если тип параметра не определен, GPSS V в первую очередь проверяет входящий транзакт для определения типа его параметров. Если п процессе проверки было определено, что параметры транзакта имеют различные типы, моделирование прекращается из-за ошибки выполнения. Дело в том, что сам ннтериретатор GPSS не в состоянии определить, какой именно параметр пользователь захотел изменить, и принцип умолчания здесь не работает; это означает, что GPSS не воспринимает тип параметра в случае, если он специально ие оговорен. Например: «GENERATE 1,„„10РВ,10РН,16РВ» «ASSIGN 2,4» Какой параметр 2? Указанная последовательность блоков приведет х ошибке исполнения из-за отсутствия уквзаняя типа параметра. Если s результате проверки тела параметра выяснится, что входящие транзакт имеет только один тип параметров, то может быть выполнена соответствующая программа занесения величины в параметр этого типа. Если бы тип параметра был определен, соответствующая программа занесения величины выполнялась бы непосредственно без предварительной указанной выше проверки. При длительном прогоне модели с большим числом блоков ASSIGN такие многочисленные проверки могут непроизводительно увеличивать время счета. 2. В GPSS V в соединении с операндами, относящимися к параметрам, употребляются дополнения. Например, операнд А блока LOOP определяет номер параметра. В GPSS/360 можно записать следующим образом: GENERATE I ASSIGN 1,10 для выполнения цикла 10 раз NEXT . LOOP 1.NEXT выполнять до PI = 0 В GPSS V такую последовательность рекомендуется записывать следующим образом: GENERATE 1 ASSIGN 1Д0,РН пол условный параметр 10. LOOP 1PH.NEXT Причиной записи такого дополнения является определение типа параметра и, таким образом, экономия времени выполнения, поскольку в этом случае процедура проверки типа параметра, подобная той, которая была описана для блока ASSIGN, не требуется. Заметим, что «LOOP PH1,NEXT> существенно отличается от «LOOP 1PH.NEXT» поскольку РШ — это СЧА, определяющий эяачение полусловного параметра 1. При прохождении через указанную ниже последовательность блоков в первый раз значение РН1 будет равно 10; величина, находящаяся в десятом полусловиом параметре в блоке LOOP, будет последовательно уменьшаться на единицу и сравниваться с нулем, чтобы определить, какой блок будет следующим — SAVEVALUE или TEST. GENERATE I ASSIGN MO.PH SAVEVALUE LOOP PHI.NEXT вначале PHI = 10 TEST Пользователям GPSS/360 перед прогоном старых моделей на GPSS V нет необходимости вставлять дополнения в соответствующие места; однако при написании новых моделей рекомендуется в целях экономии машинного времени использовать такие дополнения аие зависимости от числа типов параметров. При наличии у транзакта нескольких типов параметров использование добавок обязательно. 3. Из-за наличия дополнительных типов и количеств параметров, ленточные задания, выполненные либо непосредственно, либо с помощью GPSS/360, должны быть сделаны в формате GPSSV при их использовании для ввода и счета на GPSS V. Пользователи, желающие просчитывать GPSS/360- модели на GPSS V должны знать, что запись Р/, исгюль» зуемая для ссылки иа значение /-го параметра входящего транзакта, разрешена в GPSS V, ио исключительно из соображений совместимости с GPSS/360. По мере написания новых моделей для экономии времени их выполнения следует принять новую форму записи: РН/, PF/, PBj и PL/. Только в случае записи Р/ происходит проверка типа параметра, описанная в связи с блоком ASSIGN. Пользователям GPSS/360 следует также знать, что запись Р/ сознательно исключена из документации по GPSS V. Закись косвенной адресации */ таким исключена. Такую запись воспримут в GPSS V пралильно, ио она также приведет к дополнительной проверке типа, уже описанное для случая, когда тип параметра не указан. Прежним пользователям GPSS/360 следует использовать при разработке новых моделей запись Рх/ (где х — или Н, или F, или В. или L, соответственно пол условный, полно- словный, байтовый типы параметров и тип с плавающей запятой) вместо записи */. Модели, записанные с помощью GPSS V, принципиально ие могут быть считаны и выполнены на GPSS/360 из-за изменении размеров основных областей как для таблиц, так и для многоканальных устройств иприборов. Возможность использования дополнительной памяти также является частью несовместимости, даже если это свойство и не использовалось в записанной модели. При кодировании операторов в режиме ABS для пвода в GJPSSV, вместо тс.о чтобы разделять операнды иа поля, состоящие из шести позиций, как требуется в GPSS/360, все операнды следует начинать с 19-й позиции и разделять запятыми. Операторы в режиме ABS должны записываться в фиксированном формате с полем имени, начинающимся во второй позиции, и полем операции, начинающимся в восьмой позиции. Пользователи GPSS V, работавшие с GPSS/360 версии 1, при прогоне па GPSS V моделей, работавших ранее па GPSS/360 версия 1, увидят различия в результатах моделирования. Эти различия являются результатом изменения, внесенного в качельный множитель каждого из восьми датчиков случайных чисел в GPSS/360 версии 2. Ранее начальный множитель для каждого датчика был равен I, теперь ои равен 37. При необходимости, прежние после-
довательностн можно получать посредством оператора RMULT. Некоторые СЧА, округлявшиеся ранее до целых значений, могут быть в форме с плавающей запятой вследствие появления новых элементов с плавающей запятой. Результат вычисления этих СЧА может быть различным в зависимости от того, как их используют: как Y-величину функции, как часть переменной с плавающей запятой или как величину, которую следует поместить в элемент с плавающей запятой. Пользователям, имеющим программы на языке Ассемблер в блоке HELP, может потребоваться несколько пересмотреть их для того, чтобы отразить изменения в записи величии, применяемых во вспомогательной программе. Как результат новых свойств, в обычном формате выдачи результатов имеются небольшие изменении. Наибольшие изменения произошли в распечатке цепей транзактов. Матрицы, независимо от типа, имеют одинаковый формат, и в одной строке^может помещаться до десяти элементов. Последовательные строки, сплошь со тоящие нз нулевых величин, обозначают соответствующим указанием в целях сокращения объема распечаток. В GPSS V-OS версии 1 третьей модификации и в GPSS V-DOC версии 1 второй модификации сделано небольшое усовершенствование, связанное с процессом округления в некоторых программах сбора статистических данных, относящихся к многоканальным устройствам и приборам. Смысл этого изменения состоит в увеличении точности при предоставлении данных. Оно проявляется в основном в тысячных разрядах дробных величин. Стало возможным управление прогоном модели по значениям коэффициента использования прибора или многоканального устройства соответственно FR/ и SR/), лежащего в диапазоне от 0 до 1000. Документация по GPSS V была полностью переписана для представления материала в более логичном порядке. Новые пособия, как и пособия по GPSS/360, прежде всего предназначены как справочные, а не учебные. Существенным дополнением к документации no GPSS V являются две справочные таблицы, содержащие GPSS-бло- ки с нх операндами, СЧА и относящуюся к ним информацию, стандартное распределение памяти под элементы и управляющие карты с их содержимым. \
Приложение В МАТЕРИАЛЫ ФИРМЫ IBM ПО GPSS Название публикации ' Моделирование: имитация реальности Изучение проблемы капиталовложений с использованием GPSS Введение в моделирование с помощью ЭВМ — важный инструмент в принятии решений Руководство по применению 360 GPSS Вводное руководство пользователю 360 GPSS Руководство оператору 360 GPSS Руководство пользователю 360 GPSS Руководство ло применению 360 OS GPSS Руководство оператору 360 OS GPSS Вводное руководство пользователю 360 OS GPSS Руководство пользователю 360 OS GPSS, версия 2 Руководство по эксплуатации 360 DOS GPSS, версия 2 Руководство по применению GPSS V OS Руководство по применению GPSS V DOS Вводное руководство пользователю GPSS V Руководство пользователю GPSS V OS/DOC Руководство ло эксплуатация GPSS V OS Руководство по эксплуатации GPSS V DOS Определение результатов программы GPSS V OS Определение результатов программы GPSS V DOS Таблица ссылок (формат операторов блоков) GPSS V Таблица ссылок (формат управляющих операторов; стандартных числовых атрибутов; системных необязательных средств) GPSS V Номер Формы G520-1542 GE20-03J3 GE20-0272 GH20-0186 GH20-0W4 GH20-0311 GH20-0326 GH20-0327 GH20-0691 SH200692 SH20-0693 SH20-0694 GH20-0825 GH20-0826 SH20-0866 SH20-0851 SH20-0867 SH 20-0868 GH20-4035 GH20-4O40 GX20-1828 GX20-1829 1 В марте 1973 г. фирма IBM исключила GPSS/360 версий I н 2 нэ библиотеки программ. Это означает, что фирма IBM более не принимает заказов па руководства или другую документации по этим версиям QPSS. Геи не менее библиотеки ао многих вычислительных центрах имеют в своем распоряжении ионии этнх руководств no GPSS/360. В этих материалах дано все, что поможет отыскать руководства в библиотеках. Вообще копии нздиющнхся публикаций фирмы IBM можно получить в представительствах фирмы. Если эти публикации имеют номер формы, начинающийся с GH. то один экземпляр можно получить бесплатно.
СООБЩЕНИЯ ОБ ОШИБКАХ В GPSS имеются пять категорий сообщений об ошибках. Эти категории приведены в табл. С.1; в вей даны также диапазоны номеров ошибок, соответствующие каждой категории. Таблица С. I Категория 1 2 3 4 5 Плавание Ошибки программы-ассемблера Ошибки ввода Ошибки выполнении Ошибки вывода Предупредительные сообщения Диапазон номеров ошибок 1-81 201—302 401—699 702—769 850—863 Ошибки программы-ассемблера возникают при первом просмотре модели интерпретатором, но перед началом этапа ввода. Как правило, соответствующие типы ошибок относятся просто К нарушению синтаксиса GPSS или к нарушению ограничений на диапазоны элементов. Например, ошибка 43 «недопустимый символ (слишком длинный)» возникает, если символическое имя блока будет содержать более пяти букв. Аналогично, ошибка 32 «недопустимый номер прибора» возникнет, если в модели, просчитываемой на уровне памяти 64К, программист использует в качестве номера прибора величину 36 или более и не переопределит максимальное число доступных приборов. (Максимальное число приборов при указанных условиях равно 35. Наибольший допустимый номер прибора равен максимальному числу различных приборов, разрешенных в модели.) Ошибки виода могут возникать во время этапа ввода, когда интерпретатор, помимо прочего, планирует первые поступления транзактов в блоках GENERATE.THnH4HbiM ошибочным условием, которое может возникать в этой категории, является ошибка 216: «Модификатор превышает среднее». Это означает, что модификатор размаха в блоке GENERATE больше, чем среднее время между прибытиями, что может повлечь вычисление отрицательного значения. В период выполнения прогона ошибки могут возникнуть перед тем, как счетчик числа завершений уменьшится до нуля. Типичным в этой категории сообщением является номер 406: «Неверный приоритет, вычисленный для транза- кта, созданного в блоке GENERATE». Это условие может возникнуть, если операнд Е блока GENERATE был определен косвенно и величина стала меньше нуля или Приложение С больше 127 (разрешенными уровнями приоритета являются 0, 1, 2, 3 125, 126 и 127). После завершения прогона могут возникать ошибки вывода в период распечатки интерпретатором результатов, полученных за время прогона. Такая ошибка может, например, возникнуть, если интерпретатор будет пытаться выдать статистику для элемента с неверным номером, т. е. находящимся вне разрешенного диапазона. Наконец, предупредительные сообщения печатаются, если возникают не очень серьезные погрешности (т. е. такие, которые ие приводят к аварийному завершению прогона), но которые, тем ие менее, должны быть доведены до сведения пользователя. Примером является сообщение 850: «Попытка занести целое величины, большей чем 32767, в полусловный параметр». Наибольшая величина, которую можно поместить в полусловный параметр, является 32767. Если делается попытка занести в такой параметр величину большую, чем это число, то на самом деле будет записана величина, равная содержимому по модулю 2". А именно, заносимая величина равна остатку, получаемому при делении этой избыточной величины иа 2м (т. е. при делении на 32768). Это означает, например, что если выполняется блок «ASSIGN 3,Х $ BIG» и величина X$BIG равна 43562, то величина, которая будет помещена в третий параметр, будет равна 10794, в предположении, что параметры транзакта являются параметрами, полусловного типа. (Сообщения об ошибках, приводимые в этом приложении, относятся к GPSS/360. Пользователям GPSS V следует иметь в виду, что для некоторых ошибочных ситуаций номер сообщения, выдаваемый интерпретатором GPSS V, может отличаться от того, который выдается интерпретатором GPSS/360. Это отмечено в приложении А.) Ошибки программы-ассемблера 1. Недопустимый способ выбора в операнде А блока TRANSFER 2. Недопустимое поле операции 3. Номер элемента, резервируемого картой EQU, был зарезервирован более ранней картой EQU 4. В карте EQU использовано символическое имя блока 5. Недопустимый аргумент в таблице 6. При статическом выборе использовано число с количеством разрядов, превышающим три 7. Синтаксическая ошибка в картах MATRIX или EQU 8. Недопустимый указатель элемента 9. Значение в операнде А блока ASSIGN больше 100 10. Первый операнд в поле А карты MATRIX ие является символом X или Н 11. Не определено символическое имя блока 12. Неверно определена рабочая лента 13. Число строк и (или) столбцов, заданное в карте MATRIX, не является постоянным 471
14. Недопустимый операнд Е в блоке MSAVEVALUE 15. В блоке TRANSFER с режимом выбора ALL илн PICK аеличнна операнда С меньше величины операнда В 16. В блоке TRANSFER с режимом выбора ALL разность между величинами операндов В и С ие делится нацело иа величину операнда D 17. Карта, обязанная иметь информацию в поле имени, ее не имеет 18. Недопустимая полусловная матричная сохраняемая величина 19. Недопустимый мнемонический указатель в поле операции блоков GATE, LOGIC, TEST, COUNT или SELECT 20. Недопустимый операнд В в блоке PRIORITY 21. Имя, использованное в функции, было зарезервировано в карте EQU, или использовалось как имя блока, или использовалось для предшествующей функции 22. Недопустимый номер булевской переменной 23. НевериыА тип сообщения, определенный в карте REPORT 24. В карте REPORT не разрешен указанный тип сообщения 25. Определенный объем памяти превышает максимально допустимую величину 26. Таблице должна быть аадана числовым номером 27. Недопустимый сив мол 28. Недопустимый тип функции 29. Модификатор в блоке GENERATE нли ADVANCE превышает среднее значение 30. Опущен операнд А там, где он должен быть задан 31. Опущен операнд В там, где он должен быть задан 32. Недопустимый номер прибора 33. Недопустимый номер многоканального устройства 34. Недопустимый номер очереди 35. Недопустимый номер логического переключателя 36. Недопустимый номер цепн 37. Недопустимый номер таблицы 38. Недопустимый номер переменной 39. Недопустимый номер сохраняемой величины 40. Недопустимый номер функции 41. Недопустимое символическое имя в поле имени илн отсутствие такового там, где оно необходимо 42. Недопустимый номер группы 43. Недопустимый символ (слишком длинный) 44. Синтаксическая ошибка в карте 45. Недопустимый СЧА 46. Опущен операнд С там, где он должен быть определен 47. Недопустимый номер матрицы сохраняемой величины 48. Опущен операнд D там, где он должен быть определен 49. Максимальный номер MACRO превышает допустимый 50. Неопределеио MACRO 61. Недопустимый аргумент в MACRO *- аргумент должен быть буквой от А до J 52. Размер карты MACRO выходит за 72 колонку 53. Внутри MACRO помещено более двух других MACRO 54. В приведенной выше карте MACRO определено более 10 аргументов 55. Недопустимый операнд С в блоке SAVEVALUE 56. Недопустимей полусловная сохраняемая величина 57. Не оставлено допустимого номера элемента для присвоения символическому имени 56. Поле операции выходит за 72 колонку 59. В карте VARIABLE открывающих скобок больше, чем закрывающих 60- В карте VARIABLE закрывающих скобок больше, чем открывающих 61. В карте VARIABLE указано недопустимое деление по модулю 62. Опущен операнд Е (или недопустимый операнд Е) там, где он должен быть определен 63- Карта EQU илн функция указывает иа резервирование недопустимого номера элемента 64. Неверный порядок расположения карт графического вывода 65. Недопустимый операнд А в карте STATEMENT 66. В карте STATEMENT запрашивается недопустимая строка 67. Недопустимый операнд В в карте STATEMENT 68. В карте STATEMENT запрашивается слишком много столбцов 69. В карте STATEMENT запрашиваются убывающие номера строк 70. Недопустимый начальный столбец в карте STATEMENT 71. В карте GRAPH запрашивается недопустимый СЧА 72. Недопустимый диапазон элементов в карте GRAPH 73. Недопустимый запрос в карте ORIGIN 74. В карте TITLE запрашивается недопустимый элемент 75. Недопустимый операнд в карте X 76. Недопустимый числовой операнд в карте X илн Y 77. Недопустимый запрос в карте Y 78. Число точек функции ие соответствует числу, указанному в карте заголовка функции 79. Коистаита, состоящая более чем из шести цифр, указана, когда это запрещено 81. Константа находится в недозволенном операнде Ошибки ввода 201. Число транзактов превышает допустимое 202. Ссылка иа пассивный траизакт 203. Значение приоритета превышает 127 205. Число параметров превышает 100 206. Блок GENERATE: в операнде F должно быть F, Н илн пусто 207. Блок PREEMPT: в операнде В должно быть PR 208. Блок PREEMPT: в операнде Е должно быть RE 209. Блок PREEMPT: операнд С ие определен вместе с операндами D и (илн) Е 210. Недопустимый мнемонический указатель в поле операции 211. Недопустимый номер многоканального устройства 212. При указании режима МАХ или MIN ие требуется операнд D 213. Недопустимый мнемонический указатель в операнде С блока PRINT 214. Недопустимый формат в карте инициализации логического переключателя 215. Требуемый размер области COMMON в GPSS/360 превышает допустимый (см. параграф 4.16) 216. Модификатор больше среднего значения 217. Время действия меньше нуля 218. Недопустимый номер полнословной матрицы 219. Недопустимый номер полусловиой матрицы 220. Недопустимый формат карты TRANSFER ALL 221. Недопустимый номер таблицы 222. Недопустимый номер функции 223. Значения X функции не располагаются в порядке возрастания 224. Блок UNLINK: если указан режим BACK, операнд Е должен быть пуст 226. Недопустимый номер полнословной сохраняемой величины 226. Недопустимый номер полусловиой сохраняемой величины 227. Недопустимый формат и карте INITIAL для сохраняемой величины 228. В карте INITIAL для сохраняемой величины использованы мнемонические указатели, отличные от X или Н 229. При задании множества начальных значений первый индекс больше второго 230. Недопустимый номер логического переключателя 231. Карта определения VARIABLE: 18-я колонка не пуста 232. Карта определения VARIABLE: недопустимый номер переменной 233. Карта определения VARIABLE: номер указан неверно 234. Карта определении VARIABLE: неверное число скобок
235. Карта определения VARIABLE: избыточное число пар скобок 236. Карта определения VARIABLE: недопустимое деление по модулю 237. Карта определения VARIABLE: недопустимый номер булевской переменной 238. Карта определения VARIABLE: деление по модулю в переменной с плавающей запятой 239. Отсутствие запятых в карте MATRIX 240. Недопустимый булевский оператор 241. Недопустимое определен не операции в переменной 242. Недопустимый СЧА в определении переменной 243. Недопустимое число строк в матрице 244. Недопустимое число столбцов в матрице 245. Недопустимый мнемонический указатель в матрице сохраняемых величин 246. Недопустимый формат в карте INITIAL для матрицы 247. Недопустимый формат в карте INITIAL для сохраняемой величины 248. Недопустимая полусловная сохраняемая величина 249. Избыточное число цифр в константе 250. Недопустимое мнемоническое обозначение СЧА. 251. Пропущен оператор в переменной 252. Операнд Е должен быть пустым при использовании в блоке UNLINK режима BV 253. Недопустимый мнемонический указатель в операнде А блока TRANSFER 254. Дробь в операнде А блока TRANSFER не является трехразрядным числом 255. Карта INITIAL для матрицы: недопустимый индекс для строк 256. Карта INITIAL для матрицы: недопустимый индекс для столбцов 257. Недопустимый номер очереди 258. Недопустимый номер рабочей ленты 259. Переменная определена рекурсивно (циклически) 260. Переменная не определена 261. Недопустимый номер переменной 262. Функция определена рекурсивно (циклически) 263. Недопустимый номер функции 264. Функция ие определена 265. Недопустимый тип функции 266. Функция должна иметь более одной точки 267. В операнде В карты FUNCTION указан недопустимый тип функции 270. В блоке EXAMINE отсутствует операнд С 271. Недопустимый номер элемента в карте RESET 272. В карте RESET запрашивается недопустимый тип элемента 273. Ошибка в порядке следования в карте RESET 274. Недопустимый запрос в избирательной карте CLEAR 275. Недопустимые номер сохраняемой величины в карте CLEAR 276. Недопустимый диапазон сохраняемых величии в карте CLEAR 277. Недопустимая пол условна и сохраняемая величина в карте CLEAR 278. Недопустимый диапазон полусловных сохраняемых величии в карте CLEAR 279. На заданном устройстве чтения ие найден идентификатор READ/SAVE 280. Недопустимое расположение элементов на устройстве чтения 282. Ошибка при переопределении блока 283. Недопустимый номер блока 284. Ссылка на недопустимый траизакт в подпрограмме для цепи (возможна системная ошибка) 285. Недопустимое определение интервала частот в карте определения таблицы 290. Недопустимая ссылка на область COMMON GPSS/360 (возможна системная ошибка) 291. Ссылка на недопустимый СЧА (возможна системная ошибка) 293. Ссылка на недопустимый СЧА (возможна системная ошибка) 297. Ссылка иа недопустимый генератор случайных чисел 298. Попытка считывания за меткой «конец файла» на устройстве READ/SAVE 299. Недопустимое определение карты RMULT 301. Значения Y функции ие являются постоянными 302. Недопустимый табличный аргумент Ошибки выполнения 401. Отсутствие нового события п системе 402. Недопустимый траизакт в цепи будущих событий (возможна системная ошибка) 403. Недопустимый транзакт в цели будущих событий Йозможна системная ошибка) едопустимый траизакт в цепи будущих событий (возможна системная ошибка) 405. Число параметров превышает допустимое. Транзакт ие может иметь более 100 параметров 406. Для транзакта, созданного в блоке GENERATE, вычислено недопустимое значение приоритета. Приоритеты должны быть неотрицательными и ие превышать 127 413. Недопустимый вход в блок GENERATE 415. Прибор освобождается транзактом, ие занимавшим его 416. Прибор освобождается транзактом, не занимавшим его 417. Отрицательное значение счетчика прерываний (возможна системная ошибка) 421. Прибор возвращается транзактом, не захватывавшим его 425. Транзакт в блоке LEAVE уменьшает содержимое многоканального устройства до отрицательного значения 428. Траизакт в блоке DEPART уменьшает содержимое очереди до отрицательного значения 429. В момент входа транзакта в блок LOOP параметр, определенный в операнде А блока, рввеи нулю 432. Недопустимый номер полусловной сохраняемой величины 433. Недопустимый номер полнословной сохраняемой величины 434. В операнде D карты определения таблицы, на которую делается ссылка в данном блоке, ие указан весовой коэффициент 435. Недопустимый номер таблицы 436. Таблица не определена картой TABLE 437. Недопустимая ссылка иа заблокированный транзакт (возможна системная ошибка) 438. Попытка поместить траизакт в цепь задержки, когда он уже находится в цепи задержки (возможна системная ошибка) 442. У транзакта, возвращенного из состоянии захвата, отсутствует счетчик прерываний (возможна системная ошибка) 443. Количество транзактов превышает допустимое (см. параграф 4.16) 453. Попытка вывести транзакт из недопустимой цепи (возможна системная ошибка) 463. Попытка вывести транзакт из недопустимой цепи (возможна системная ошибка) 466. То же 467. » 468. Число транзактов превышает допустимое 469. То же (см. параграф 4.16) 470. Ссылка на недопустимый номер транзакта (возможна системна и ошибка) 471. То же 472. » 474. Значение счетчика прерываний превышает 127 475. Ссылка на недопустимый номер транзакта (возможна системная ошибка) 476. Попытка вывести из состояния прерывания транзакт, который не был захвачен (возможна системная ошибка) 477. То же 473
478. 479. 480. 492. 497. 498. 499. 500. 601. 505. 506. 507. 508. 509. sii. 514. 515. 516. 518. 530. 560. 561. 562. 699. 601. 603. 604. 607. 609. 610. 611. 612. 613. 614. 615. 616. 617. 618. 619. 620. 621. 622. 623. 624. 626. 627 В данном блоке имеется ссылка на прибор, занятый или захваченный ранее уничтоженным транзактом То же Ссылка на недопустимый генератор случайных чисел Недопустимый номер параметра транэакта Ссылка на недопустимую цепь пользователя Ссылка на недопустимый номер прибора Ссылка ие недопустимый номер многоканального устройства Ссылка на недопустимый номер очереди Ссылка на недопустимый номер логического переключателя Отрицательное время задержки (блок GENERATE или ADVANCE) Рекурсивное (циклическое) определение функции Недопустимый номер функции Функция не определена картой FUNCTION Вычислен недопустимый индекс для функции спискового типа Вход в неопределенный блок Недопустимый номер переменной Арифметическая переменная ие определена картой VARIABLE Рекурсивное (циклическое) определение арифметической переменной Слишком большое число уровней прерывания При вычислении времени задержки модификатор превышает среднее значение (блок ADVANCE или GENERATE) Недопустимая матрнчнал сохраняемая величина Недопустимая строка в блоке MSAVEVALUE Недопустимый столбец в блоке MSAVEVALUE Превышен допустимый размер области COMMON Sm. параграф 4.16) едопустимый номер следующего по порядку блока Недопустимый номер блока Недопустимый табличный аргумент В операнде А блока ASSEMBLE или GATHER значение счетчика соединении или сборки равно нулю В блоке MATCH. ASSEMBLE, GATHER, GATE M или GATE NM находится транзакт, являющийся единственным членом своего ансамбля В блоке COUNT или SELECT верхняя граница меньше нижней Ссылка на недопустимый номер параметра траизакта Ссылка иа недопустимый номер блока в блоке TRANSFER BOTH или TRANSFER ALL Ссылка на недопустимую цепь пользователи Значение приоритета превышает максимально допустимое (127) Ошибка в выделении оперативной памяти (возможна системная ошибка) Ссылка на нулевой параметр траизакта Ссылка на недопустимый номер матрицы Рекурсивное (циклическое) определение матрицы Матрица не определена картой MATRIX Недопустимый номер столбца в матрице Недопустимый номер строки в матрице Недопустимый номер булевской переменной Булевская переменная не определена картой BVARIABLE Рекурсивное (циклическое) определение булевской переменной Недопустимый номер группы В блоке TRANSFER PICK значение операнда С меньше значения операнда В 644. Ошибка в блоке WRITE 669. Неверное назначение очереди (возможна системная ошибка) 670. То же 698. Недопустимая замена в блоке CHANGE 699. Недопустимый аргумент в блоке EXECUTE Ошибки вывода 702. Недопустимый номер прибора 704. Недопустимый номер цепи пользователя 708. Недопустимый номер логического переключателя 712. Недопустимый номер полнословной сохраняемой величины 713. Недопустимый номер полусловной сохраняемой величины 714. Недопустимый номер прибора 715. Недопустимый номер многоканального устройстаа 716. Недопустимый номер очереди 717. Недопустимый номер группы 718. Недопустимый номер цепи пользователя 722. Недопустимый номер многоканального устройства 723. Недопустимый номер очереди 724. Недопустимый номер таблицы 726. Ошибка при вычислении квадратного корня 727. Недопустимый номер полусловной матрицы сохраняемых величин 728. Недопустимый номер полнословной матрицы сохраняемых величин 729. Недопустимый вход в подпрограмму вывода (раздел DAG07) (возможна системная ошибка) 769. Недопустимая карта TITLE Предупредительные сообщения 850. Попытка завести в полусловиый параметр целое превышающее по модулю 32767. Содержимым будет результат от деления по модулю 2"—1 851. Попытка занести в полусловную сохраняемую величину целое, превышающее по модулю 32767. Содержимым будет результат от деления по модулю 21*—1 852. Попытке завести а полусловную матрицу сохраняемых величин значение, превышающее по модулю 32767. Содержимым будет результат от деления по модулю на 2W—1 853. Транзакт, пытающийся войтн в блок QUEUE, уже является членом пяти очередей. Длина очереди, указанной в операнде А, будет увеличена на число, указанное в операнде В. Будет произведена проверка ва максимальное содержимое и сделано соответствующее изменение. Статистики по среднему времени иа транзакт, числу нулевых входов, процентному отношению нулевых входов и среднему времени иа транзакт, исключай нулевые входы, будут ошибочны 854. Траизакт в блоке DEPART не принадлежит очереди, определенной в операнде А. Содержимое очереди уменьшается иа число, указанное в операнде В, и транзакт проходит в следующий по порядку блок 861. На ленте JOBTAPE 1 (логическое устройство 1) достигнут конец файла. Все транзакты текущего файла попали в модель 862. На ленте JOBTAPE 2 достигнут конец файла. Й|йла попали в модель а ленте JOBTAPE 3 (логическое устройство 3) достигнут коней файла, файла попали в модель (логическое устройство 2) Все транзакты текущего Все транзакты текущего
Приложение D НАЗВАНИЕ СТОЛБЦОВ В РАСПЕЧАТКЕ ЦЕПЕЙ TRANS @ BDT BLOCK PR SF NBA SET MARK-TIME ,, i А А А А л ® <Ь ®(b © © ® SI Tl Dl CI MC PC PF A A A A A ,i ,. 0®©@@@® Phc. D На рис. D приведена строка, состоящая из названий столбцов, используемых интерпретатором GPSS при выдаче на печать цепей текущих и будущих событий, а также цепей пользователя, прерывании н парности. Ниже нкратце описано содержание информации, заключенной в этих столбцах. Столбец Информация А' В' С* D' Е» F* G Н I J К м TRANS — номер траизакта BDT — время ухода из блока BLOCK — номер блока, в котором данный транзакт находится в текущий момент, если траизакт не находится нн в одном блоке, то в столбце BLOCK стоит пробел PR — уровень приоритета транзакта; пробел означает, что приоритет транзакта равен О SF ставится для фактора выбора; если в SF стоит В, то траизакт находится в блоке TRANSFER с режимом BOTH; символ А означает, что траизакт ивходится в блоке TRANSFER с режимом ALL; все другие возможные значения в столбце (кроме В н А) — пробелы; этот столбец не представляет, как правило, большого интереса NBA — следующий блок, куда траизакт пытается войти SET указывает на номер следующего траизакта в ансамбле, членом которого является данный транзакт; для ансамблей с одним членом величины в столбцах SET и TRANS MARK-TIME — время, в которое транзакт вышел из своего блока GENERATE и попал н модель; если транзакт вошел в модель как потомок из блока SPLIT, его значение совпадает со значением MARK-TIME его родителя; если транзакт находится в цепи будущих событий, готовясь войти в модель через блок GENERATE, то для него величина MARK-TIME равняется —1, умноженной на число транзактов, уже поступивших в модель через этот блок GENERATE Эти четыре столбца указывают на величины параметров транзакта; столбец PI показывает величины первого параметра в первой строке, пятого параметра во второй строке, девятого параметра в третьей строке и т. п. для других строк н столбцов SI означает индикатор просмотра; если значение SI есть I, то траизакт не просматривается, это означает, что он подвергнут однозначной блокировке в цепи текущих событий; пробел в этом столбце означает, что данный транзакт не подвергнут однозначной блокировке TI указывает иа наличие индикатора трассировки. Когда транзакт входит в блок TRACE, включается его индикатор трассировки, т. е. устанавливается равным 1, и всякий раз, когда этот транзакт будет последовательно входить в какой-либо блок, будет выдаваться распечатка о его местонахождении; индикатор трассировки можно выключить (т. е. положить его равным нулю, что проявляется в том что столбец TI остается пустым), ааставив транзакт пройти через блок UNTRACE D1 — индикатор задержки; этот индикатор использован в ранних версиях GPSS, в которых не было аппарата булевских переменных. В целях совместимости индикатор задержки и блок TRANSFER, работающий в режнме SIM и использующий этот индикатор, оставлены в более поздних версиях GPSS. Использование индикатора задержки не имеет большого смысла для пользователей, имеющих в своем распоряжении булевские переменные CI — индикатор цепн; значение в столбце CI указывает на цепь, в которой находится транзакт. Ниже показаны используемые коды. * Для более детального ознакомления с понлтпимп номера транчакта. времени продвижения (т. е. времени ухода из блока), текущего блока, уровня приоритета и следующего блока, куда тримэнкт пытается войтн. си. параграфы 2.20—2.24. 475
Продолжение табл. Столбец N О Р Информация Знлчснне CI «Пусто» 1 2 4 Цепь Пользователя или парности Прерывания Текущих событий Будущих событий МС — условие парности; единица в столбце МС указывает иа то, что транзакт находится в состоянии парности; это означает, что ои находится в цепи парности в блоке ASSEMBLE, GATHER или MATCH (в противном случае столбец пуст) PC — счетчик числа прерываний; указывает на число приборов, с которых данный траизакт был снит другими траизактами и иа которые он претендует PF — флаг прерывания; когда флаг прерывании включен (т. е. величина в столбце PF равна 1), соответствующий транзакт должен быть прерван. Это означает, что этот транзакт снят с прибора, но еще не попал в уготовлеииое ему состояние. Ои попадает в него тогда, когда войдет в блок ADVANCE с ненулевым временем задержки нли в блок ASSEMBLE, GATHER илн MATCH при соответствующих условиях
Приложение Е МНЕМОНИЧЕСКИЕ УКАЗАТЕЛИ БЛОКА PRINT Ниже приведены мнемонические указатели блока PRINT (см. параграф 2.42) для различных элементов GPSS, рассмотренных в книге. Информация, которую необходимо роспечлтать Счетчики блоков г: текущего содержимого входов текущего содержимого и входов Цепи: текущих событий будущих событий прерывания парности пользователя Бремене (абсолютное и относительное) * Логические переключатели (включенные)' Мнемоническое обозначение W N В MOV FUT I МАТ СНА С LG Информации, которую необходимо распечатать Матричные сохраняемые величины *: полусловные полнословные Сохраняемые величины э: полусловные полнословные Статистики *: приборы очереди многоканальные устройства таблицы цепи пользователя Мнемоническое обозначение MX мн хн X (илк пробел) F Q S т и 1 Для подученвя этой инфориацни операнды А я В блока PRINT должны быть оставлены пустыни. ' Операнды А н В блока PRINT определяют соответственно нижнюю н верхнюю границы диапазона номеров элементов включительно, для которых должна быть распечатана инфориацни. Если зтк операнды не заданы, будет распечатана информация для всего Диапазона данного типа элемента.
Приложение F ИНФОРМАЦИЯ, ОТНОСЯЩАЯСЯ К КАРТЕ REALLOCATE Тип элемента Стандартное число элементов > зависимости от объема памяти 64 К 128К 256К Фиксированные требования к памяти на одни элемент, байт Мнемоническое обозначение при перераспределении Транзакты Блоки Приборы Функции Логические переключатели Матрицы сохраняемых величин (полусловные) Матрицы сохраняемых величин (полнослонные) Очереди Многоканальные устройства Сохраняемые величины (полиословные) Сохраняемые величины (полуслониые) Таблицы Цепи пользователя Переменные {арифметические) Переменные (булевские) Область COMMON (байты)' 1 200 120 35 20 200 5 5 70 35 100 50 15 20 20 5 5600 600 500 150 50 400 10 10 150 150 400 200 30 40 50 10 14 400 1200 1000 1000 200 1000 25 25 300 300 1000 500 100 100 200 25 25 600 1б« 126 28 32с 6 24<* 24« 32 40 4 2, 48' 24* 48/, 32" ХАС BLO РАС FUN LOG FMS HMS QUE STO FSV HSV TAB СНА VAR BVR COM Для ознакомления со значением н использованием информации, приводимой н приложении F, и с численными примерами см. параграф 4.16. В это приложение включены только те объекты GPSS, которые были рассмотрены в книге. "Добанить 20 байтов из COMMON на каждый активный транзакт плюс дополнительные байты для параметров (2 байта на полуслонный параметр и 4 байта на полиослов- иый). ьДобавить 4 байта из COMMON иа каждый блок, в котором используется более одного операнда. Дополнительно добанить 12 байтов из COMMON иа каждый используемый операнд, если один или несколько операндов блока косвенно определены посредством матрицы сохраняемых величин. 'Добавить 4 байта из COMMON на каждую точку L- или М-функцин. Добанить 8 байтов из COMMON для каждой координатной пары функции типа D илн Е. Добанить 12 байтов из COMMON для каждой координатной пары функции типа С. ''Добавить 4 байта нз COMMON иа каждый элемент матрицы. 'Добавить 2 байта из COMMON на каждый элемент матрицы. 8Добавить 4 байта из COMMON на каждый интервал таблицы. 'Добавить 12 байтов из COMMON на каждый стандартный чнелоной атрибут в определяющем выражении. Добавить 20 байтов из COMMON на каждую используемую пару круглых скобок. Добавить 2 байта из COMMON иа каждый используемый арифметический оператор (приблизительно). ''Добавить 12 байтов из COMMON на каждый используемый логический оператор. Добавить 24 байта из COMMON на каждую используемую пару круглых скобок (приблизительно). Добавить 8 байтов из COMMON иа перный используемый булевский оператор. Добавить 4 байта из COMMON на каждый последующий (после первого) используемый булевский оператор. Добанить 16 байтов из COMMON иа каждый используемый оператор отношения. Добавить 4 байта из COMMON иа каждую используемую константу. Добавить 12 байтов из COMMON на каждый используемый стандартный числовой атрибут, не являющийся константой. Добавить 4 дополнительных байта нз COMMON. 'Областью COMMON является свободный участок памяти машины, части которого могут быть использованы для таких целей, как запоминание пар точек, используемых для определения функции, обеспечение памяти, необходимой для параметрон транзакта и т. п. 478
Приложение G СПИСОК ОПРЕДЕЛИТЕЛЬНЫХ КОНТЕКСТОВ ДЛЯ ЭЛЕМЕНТОВ GPSS Важно знать (см. параграф 4.18), н каком случае контекст является определительным для элементен GPSS, если они задаются номерами. (Использование символических имен элементен нсегда позволяет определить их, н каком бы контексте они ни появлялись.) В приведенной ниже таблице перечислены те блоки, в которых операнд А обеспечивает определение по контексту, и те карты определения, поле имени которых также обеспечивает явное определение по контексту для элементов GPSS, рассмотренных в книге. Тнп элементов Приборы Функции Логические переключатели Матрицы сохраняемых величин Очереди Блоки (если имеются)'-* SEJZE RELEASE PREEMPT PETURN GATE» — LOGIC GATE4 MSAVEVALUE QUEUE DEPAPT Карты определения (если имеются Ч FUNCTION — MATRIX — Тип элементов Сохраняемые неличины Многоканальные устройства Таблицы Цепи пользователя Переменные: буленские целые действительные Блоки (если имеются)'-^ SAVEVALUE ENTER LEAVE GATE» TABULATE LINK UNLINK — Карты определения (если имеются)' — STORAGE6 TABLE QTABLE BVAR1ABLE VABIABLE FVARIABLE 1 Внимание! Если для ссылки «а элемент, заданный номером, используется форма К/, где / — этот номер; интерпретатор по включает номер / в соответствующий поименный список номеров объектов. Старлйтесь избегать нспользовлть форму К/- В противном случае, если для рассматриваемых элементов используют символические нмеиа, то / может стать числовым эквивалентом символического лмеиы. : Операнд А карты EQU также обеспечивает определение по контексту для каждого элемента GPSS. • Пели дополнительны* оператором является U, NU. I ели, N1. ' если дополнительным оператором является LR или LS. • Карта определения емкостп многоканального устройства обеспечивает определение по контексту для многоканальных устройств, ааданных номерами, только тогда, когда номер многоканального устройства стоит в поле имени. Таким образом, карта «7 STORAGfc 3» приведет к тому, что 7 будет помещено в список номеров для многоканальных устройств, а клртв «STORAGE S7,3» к ьтому не приведет. • Если вспомогательный оператором является SF, SE, SNF или SNE.
Приложение Н МНЕМОНИЧЕСКИЕ ОБОЗНАЧЕНИЯ КАРТЫ EQU Ниже приведены мнемонические обозначения для карты экнивалентиости (см. параграф 4.18) для различных элемеи тон GPSS, рассмотренных в книге Тнл элементов Булевские переменные Приборы Функции Логические переключатели Матрицы сохраняемых величин: полнословные полуслонвые очереди Мнемоническое обеспечение В F Z L М Y Q Тип элементов Сохраняемые величины: полнословные полусловные Многоканальные устройства Таблицы Цепи пользователя Переменные Мнемоническое обозначение X н S т с V
Приложение I СПИСОК СТАНДАРТНЫХ ЧИСЛОВЫХ АТРИБУТОВ Ниже под соответствующим названием элементов перечне- перечислены в алфавитном порядке. Для каждого СЧА лены в алфанитном порядке все стандартные числовые дается краткое определение. Подробные определения и атрибуты, рассмотренные в книге. Все элементы также объяснения можно найти в книге. Элемент Блоки Время Генераторы случайных чисел Матрицы сохраняемых величин Многоканальные устройства Очереди Переменные Приборы СЧА N W CJo RN* МН (а, Ь)с MX (а, Ь)с R S SA SC SR SK ST Q QA ОС QM QT QX QZ BV V F FC FR FT Краткое определение Счетчик нходов Счетчик текущего содержимого Значение относительного нремеии При использоналии в качестве аргумента функции пред- ставляетси шестизначной дробью в диапазоне от 0,000000 и 0,999999 включительно; в любом другом случае — целым трехзначным числом от 000 до 999 включительно Величина элемента, стоящего в строке а, столбце Ь; матрица полусловная Величина элемента, стоящего н строке а, столбце Ь; матрица полпословная Остающаяся емкость Текущее содержимое Среднее содержимое (округленное до целого) Счетчик числа нходов Коэффициент использования (в долях тысячи) Максимальное содержимое Среднее время задержки на единицу емкости (в долях тысячи) Текущее содержимое Среднее содержимое (округленное до целого) Счетчик числа нходон (общее число) Максимальное содержимое Среднее время пребывания (на основании QQ (округленное) Среднее время пребывания (на основании QZ) (округленное) Счетчик числа входов (нулевые входы) Значение булевской переменной Значение арифметической переменной Состояние прибора (1 — занят, 0 — свободен) Счетчик числа занятий Коэффициент использования (в долих тысячи) Среднее время задержки на одно занятие (округленное) 31 Т. Дж. Шрайбер 481
Продолжение табл. Элемент Сохраняемые величины Таблицы** Транзакты Функции Цепи пользователи СЧА X ХН ТВ тс TD Р PRo MJo MP FN CA CC CH CM CT Краткое определение Значение полиословной сохраняемой величины Значение лолусловнои сохраняемой величины Средния величина невзвешеиных входов (округленно) Количество невзвешеиных входов Стандартное отклонение невзвешеиных входов (округленно) Величина параметра Уровень приоритета Время пребывания в модели' Время с момента входа и блок MARK Значение функции Среднее содержимое (округленное до целого) Общее число входон Текущее содержимое Максимальное содержимое Среднее нреми пребывания и цепи на один вход (округленное до целого) "За исключением CI, PR и Ml за каждым из этих СЧА, обозначающих имя семейства, должно следовать либо прямо или косвенно определенное числовое имя, либо непосредственно определенное символическое имя члена этого семейства (см. замечание"). Если члену семейства было дано символическое имя, то между именем семейства и символическим именем необходимо вставлять знак доллара. *3а RN должно следовать прямо или косвенно определенное числовое имя, которое, в свою очередь, должно быть целым числом из последовательности 1, 2, 3, 4, 5, 6, 7, 8. "Для матриц сохраняемых значений нмя'члена семейства должно быть помещено между МЫ (или MX) и левой круглой скобкой. ''Каждый из трех стандартных числовых атрибутов для таблиц вычисляется на освоне невзвешеиных входов в таблицу; это' остается в силе даже для взнешениых таблиц. 'Предполагается, что если используют блок MARK, то в нем предусмотрев операнд А.
Приложение J СПИСОК ОПЕРАТОРОВ ОТНОШЕНИЯ ЛОГИЧЕСКИХ УКАЗАТЕЛЕЙ И ЛОГИЧЕСКИХ ОПЕРАТОРОВ Операторы отношения Операторы отношения могут быть записаны в двух немного различных формах, и зависимости от контекста, в котором они употребляются. В принедеииой ниже таблице указаны эти формы и соответствующие контексты. Первая форма L LE Е NE GE G Вторая форме •и 'LE' 'Е' 'NE' 'GE' 'G' Значение Меньше Меньше или равно Равно Не равно Больше или равно Больше Прамечаннс. Первая форма употребляется тогда, когда оператор отношения используется в качестве вспомогательного оператора в блоках SELECT н TEST; объяснение блока SELECT см. а параграфе 4.Н. а блока TEST — в параграфе 5.8. Вторая форма употребляется тогда, когда оперетор отношения ясоолъвуется внутри выражений, определяющих булевские переменпМе (см. параграф 6.2.2). Логические указателя Логические указатели используют а качестве вспомогательных операторов в блоках GATE и SELECT, когда проверяют логическое состояние прибора (GATE) или приборов (SELECT), логического переключателя (GATE) или логических переключателей (SELECT), многоканального устройства (GATE) или многоканальных устройств (SELECT), илн транзакта (GATE). Ниже н таблице дана сводка различных состояний. Тяп элементов Приборы Логический указателе и NU 1 N1 Значение Прибор используется Прибор не используется На приборе произошло прерынакне На приборе ие произошло прерывания Тип элементов Логические переключатели Многоканальные устройства Транзакты Приборы Логические переключатели Многоканальные устройства Логический оператор LR LS SE SNE SF SNF М NM FU (или F) FNU F1 FN! LR LS SE SNE SF SNF Значение Логический переключатель сброшен Логический переключатель установлен Многоканальное устройство пусто Многоканальное устройство не пусто Многоквнальное устройство заполнено Многоканальное устройство не заполнено Наличие пары в А-блоке Отсутствие пары в А-блоке Прибор используется Прибор не испольэуетси Прибор находится & состоянии прерывания Прибор ие находится н состоянии прерывания Логический переключатель сброшен Логический переключатель установлен Миогокаиальное устройство пусто Многоканальное устройство ие пусто Миогокаиальное устройство заполнено Многоканальное устройство не заполнено Примечание. Мн NM можно употреблять в качестве вспомогательных операторов только в блоке О ATE. 31* 483
Для объяснения использования логических указателей с блоком GATE см. параграфы 5.20, 5.21, 7.19 н 7.28; их использование с блоком SELECT см. в параграфах 5.22 н 7.19. Логические операторы Логические операторы используют для построения высказываний, ссылающихся на логическое состояние или при* бора, или логического переключателя, или многоканального устройства. Эти логические высказывания, в сною очередь, могут быть частями выражений, используемых для определения булевских переменных. В приводимой ниже таблице указаны все имеющиеся логические операторы. Заметим, что для транзактов нет логических операторов. Заметим также, что логические операторы и логические указатели имеют одинаковый над для логических переключателей н многоканальных устройств. Вид логических операторов для приборов получается из логических указателей для приборов с прибавлением впереди буквы F. Для объяснении методов использонания логических операторов при составлении булевских переменных см. параграф 6.2.3.
Приложение К СПИСОК ОПЕРАТОРОВ GPSS, НЕ ЯВЛЯЮЩИХСЯ БЛОКАМИ Некоторые нз рассмотренных н книге операторов не соответствуют непосредственно блокам в языке. Попадают в эту категорию иеблочных операторон такие операторы, как BVARIABLE, CLEAR, RMULT н STORAGE. В книге было введено 19 таких операторов; 15 операторов из 19 включены в данное приложение. Четыре оператора END (ЗАКОНЧИТЬ), JOB (ПРОДОЛЖИТЬ), RESET (СБРОСИТЬ) Я SIMULATE (МОДЕЛИРОВАТЬ) не ношли в это приложение, потому что каждый из них состоит только из одного слова: или END, нлн JOB и т. д., помещаемого н поле операции на перфокарте. В этих операторах не используется ни поле имени, ни поле операндов. (Как отмечалось н книге, существует еще избирательная карта RESET. В этой карте требуется использование поля операндов. Но, поскольку избирательная карта RESET не была рассмотрена в книге подробно, оиа не включена в данное приложение.) Все 15 иеблочных операторов приведены в алфавитном порядке в соответствии с ях операцией. В столбцах приложения, соответствующих полям имени и операндов, содержится следующая информация. 1. Вкратце описывается роль поля. 2. Затем дается сводка возможностей, представляемых программисту для ваода требуемой информации. Диапазоны доступных возможностей для ввода имен объектов н числовых данных обозначены в данном приложении следующими записями: А, имя, СЧА/ и СЧА*/. Соответствующие определения смотрите в табл. L1 приложения L. Если информация обязана быть в данном месте, а программист имеет несколько возможностей для ее ннода, эти возможности перечислены н фигурных скобках. Если какая-либо информация может быть нведеиа по желанию программиста, то такая доступная программисту возможность (нлн возможности) указывается в квадратных скобках. Наконец, если информация должна присутствовать, и не имеется никаких иных форм ее записи, то ни фигурные, ви квадратные скобки ие используют. Примеры записей фигурных и квадратных скобок см. в приложении L на рнс. L.I и L2. Отметим, что замечания относительно записи фигурных скобок, квадратных скобок и ссылок/:, имя, СЧА,СЧА/ н СЧА*/, данные в приложении К, полиостью соответствуют записи, используемой в приложении L. Однако в приложении К возникает необходимость в трех дополнительных типах записи. Эти случаи используют специфические формы общего обозначения СЧА/ и СЧА $ имя. В частности, вместо любого применимого СЧА можно использовать только какой-либо один или несколько. Ниже указаны эти возможности. 1. По отношению к карте CLEAR специфическими формами являются X/, X $ имя, ХН/ и ХН $ имя. 2. По отношению к карте INITAL специфическими мамн являютси LS/, LS$mm, MX/, MX $ имя, MX/, $имя, X/, Х$имя, ХН/ и ХН$имя. 3. Наконец в карте STORAGE, используемой для определения емкости нескольких многоканальных устройств, специфическими формами являются S/ и S$ имя. Таким образом, для карт CLEAR, INITIAL и STORAGE в данном приложении использованы перечисленные специфические формы, а ие обычные общие формы СЧА/ и СЧА $ имя. В противоположность ситуации с операторами дли GPSS-блоков, неблочные операторы ие укладываются в единообразную схему общих свойств. За исключением общей идеи полей имени, операции н операндов, внутри категории неблочных операторов существуют значительные различия в их спецификации. Таким образом, это приложение предназначено для того, чтобы собрать все эти операторы вместе в качестве справочной таблицы для пользователя, которому может потребоваться срочная консультация по поводу правила составления некоторого неолочного оператора. 485
Пола к меня Имя булевской переменной {к, имя} Символическое имя элемента Имя функции [к, имя) Поле операцпн BVARIABLE (булевская переменная) CLEAR (очистить) EQU (определить эквивалентность) FUNCTION (функция) А в С D Е Комбинации определений числовых данных, операторов отношения, логических атрибутов и булевских операторов Определения числовых Операторы Логические атрн- Булевские данных отношения буты* операторы А. СЧА/, СЧА$имя, 'С 'GE' FU LS SE + (или) СЧА*/ 'L' 'LE' hjmF LR SNE * (и) 'Е' 'NE' FNU FI SF FNI SNF Сохраняемая величина (сохраняемые величины), не подлежащая обнулению Г X/. Х$кмя. 1 L ХН/. ХН$нмя J Числовой эквивалент символического имени к Аргумент функции (СЧА/, СЧА$имя, ) { СЧА*/ за исклю-} 1 ченнем MX, MH J Разделитель в случае нескольких входон [.] Мнемоническое обозначение для типа элемента (см. приложение Н) Тип И 41 фу !СЛО fCl D Е L lMJ нкции точек k Карта (карты), следующая за функцией Xi, Y./Xj, Yj/Xg, Y,/h т. д. (Xt должна начинаться в перном столбце; MX и МН ие разрешены в качестве величии Y в функциях Е- или М-типа) Имя матрицы _ I к, имя ) INITIAL (инициал нзи- ронать) MATRIX (задать матрицу) Устанавливаемые логические переключатели { LS/, LS$hmr } Матричные сохраняемые величины (MX/, МХ$имя] 1 МН/, МН$ими J Сохраняемые величины f X/, Х$нмя ) 1 ХН/, ХН$имя \ Тип матрицы {Х.Н} Разделитель в случае нескольких входов [/] Начальное значение 1-1А Начальное значение [-1А Число строк к Разделитель в случае нескольких нходов 1/1 Разделитель в случае нескольких входон [/1 Число столбцов к * Формируются посредствои добавления /, $вмя иди #/ к перечаслеявыи логическим операторвм. 486
Продолжение Поле нменн Имя таблицы \k, имя] — Имя многоканального устройства ( к. имя } — Имя таблицы ( к, имя ) Имя переменной | к, имя } Поле операции QTABLE (Q — таблица) REALLOCATE (перераспределитель) RMULT (установить значения генератора) START (начать) STORAGE (многоканальное устройство} STORAGE (многоканальное устройство) TABLE (таблица) VARIABLE FVARIABLE (перемевная; переменная с плавающей запятой) А Имя очереди ( имя, к} Мнемоническое обозначение переопределяемого элемента (см. приложение F) в Верхний предел левого частотного класса к Общее число единиц этого элемента после переопределения к С Ширина промежутка между частотными классами к Разделитель в случае нескольких входов [.) D Число частотных классов к Е Положительная нечетная целая константа, которая по желанию может вводиться в один или несколько операндов от А по Н для определения нестандартного начального множители для датчиков случайных чисел соответственно с 1-го по 8-й. По умолчанию текущее значение множители ие изменяется. В случае нескольких входов разделителем является запятая Начальное значение счетчика числа завершений к Емкость многоканального устройства к Ссылка на многоканальное устройство { S;°. S$hmh } Аргументы таблицы f *, СЧА;, СЧА$имя, \ 1СЧА*/ / Подавление печати [NP1 Емкость многоканального устройства k Верхний предел левого частотного класса к Начальное значение счетчика промежуточной выдачи [А1 Разделитель в случае нескольких входов [/1 Ширина промежутка между частотными классами к Комбинации числовых данных и арифметических опера- торон Чнслоные данные [*,СЧА/ ) { СЧА, 8имя,) 1СЧА*/ J Арифметические операторы + / * ©(только для VARIABLE) Признак распечатки цепей [1] Количество частотных классов [WJA Временной интервал ДЛЯ RT-таблнц \к\ 487
СПИСОК БЛОКОВ GPSS Это приложение содержит перечень всех рассмотренных в данной книге блоков GPSS, составленный в алфавитном порядке. Для каждого блока указывается следующая информация. 1. В столбце «Блок» дан рисунок блока с его полями, указанными в общем виде на своих обычных местах. 2. В столбце «Поле операции» — наименование операции, выполняемой блоком. Для блоков, использующих вспомогательный оператор, под операцией перечисляются возможные значения вспомогательных операторов. (В столбце «Блок» вспомогательные операторы обозначены символом X.) 3. В последующих семи столбцах указывается назначение каждого операнда блока. В этих столбцах также указано, где возможно их употребление по умолчанию, а где операнд должен быть обязательно употреблен. Наконец, дается сводка значений операнда в случае существования диапазона его выбора. Диапазон различных альтернатив в представлении значений в полях операндов обозначен в данном приложении сокращениями, показанными в табл. L1. Если значение операнда обязательно должно быть задано, все возможные альтернативы перечисляются внутри фигурных скобок. Например, запись, приведенная на рис. L1, относится к операнду А блока ASSIGN. Она означает, что операнд в этом поле может быть нли константой, илн данным типа СЧА/, СчА$имя нлн СЧА*/. Заметим, что символ «имя» внутри фигурных скобок не указывается, это означает, что в операнде А блока ASSIGN нельзя использовать символическое имя. Если операнд является необязательным, возможные альтернативы заключают в квадратные скобки. На рнс. L2 приведен сооветствующнй пример. Этот пример относится н операнду блока ADVANCE, который может быть совсем к. СЧА/, 1 СЧА $ имя, СЧА*/J Рис. Ы. Обозначения, используемые, когда операнд должен обязательно присутствовать Приложение L Таблица L.I. Сокращения, используемые в приложении L Сокращение k имя СЧА СЧА/ СЧА$нмя СЧА*/ Зпачение Неотрицательная целая константа Символическое имя Общее наименование стандартного числового атрибута Общее наименование стандартного числового атрибута, за которым следует числовое нмя Общее наименование стандартного числового атрибута, за которым следует зяис доллара ($) н символическое ния элемента Общее наименование стандартного числового атрибута, за которым следует звездочка (*) и номер параметра величина которого соответствует (числовому) имени элемента не указан, либо может содержать k, СЧА/, СЧА $ имя илн СЧА*/. Когда операнд необходимо указывать и не имеется выбора относительно формы его записи, не употребляют ни фигурные, нн квадратные скобки. Примером таюж ситуации может служить блок TRANSFER с режимом выбора BOTH, где слово BOTH должно быть обязательно помещено в операнде А этого блока. \k, СЧА/, ] 1сЧА$имя, C4A*/J Рнс. L2. Обозначения, используемые, когда операнд « является обязательным
Блок Операция ADVANCE (ЗАДЕРЖАТЬ) Среднее время Г*. СЧА/, - СЧА$имя, LC4A*/ Модификатор раз броса к, СЧА/, СЧА$имя, СЧА*/ кроме FN/, FN$iiMfl, LFN*/ или модификатор функций [FN/, FN$hmh, FN*/] ASSEMBLE (СОЕДИНИТЬ) Счетчик соединения ( k, СЧА/, { СЧА$имя, 1СЧА* А/. 1 имя, > Ч' J 4» 00 X ASSIGN (НАЗНАЧИТЬ) № параметра А, СЧА/, | СЧА$нмя [±] СЧА*/ J Назначаемая личина к, СЧА/, СЧА$имя, СЧА*/ ве- Л* модифицирующей функции Г ft, СЧА/. - СЧА$имя, LC4A*/ BUFFER (возобновить просмотр) .э DEPART (ПОКИНУТЬ ОЧЕРЕДЬ) Ими очереди (имя, к, СЧА/, 1 СЧА$нмя, СЧА*/ J Число единиц Г к, СЧА/, ] { СЧА$нмя, } I СЧА*/ J рои kzi ENTER (ВОЙТИ) Имя многоканального устройства / имя, к, СЧА/. ) СЧА$имя, I СЧА*/ ] Число единиц ГА. СЧА/, СЧА$имя, LC4A*/
Продолжен) БЛОК <ф>[1Н^ 1Уаа!\л и 1 ■ | фО^ <^>&^ i, •бдтж^ gmMTi 1 1 V ЧЛМАЫ.О п Операция GATE (ВПУСТИТЬ) GATE { NM } (ВПУСТИТЬ) GATE (■'I (ВПУСТИТЬ) GATE [SI 1 SNE 1 1 SNF; (ВПУСТИТЬ) GATHER (СОБРАТЬ) GENERATE (ГЕНЕРИРОВАТЬ) Л Имя логического переключателя ( имя, ft, СЧА/, ) СЧА$ныя, 1 1СЧА*/ J Имя блока ASSEMBLE, GATHER или MATCH ( имя, ft, СЧА/, ) СЧА$имя, 1СЧА*/ J Имя прибора [ имя, ft, СЧА/, ) { СЧА$нмя, } 1 СЧА*/ j Имя многоканального устройства ( имя, ft, СЧА/, ) СЧА$имя, 1 СЧА*/ j Счетчик сборки [ ft. СЧА/, ] СЧА$нмя, } 1СЧА*/ J Среднее время Г ft. СЧА/. 1 СЧА$нмя, 1СЧА*/ J В Следующий блок при яевыполиеннн условия Г имя, ft, СЧА/,1 СЧА$имя, [СЧА*/ J Следующий блок при невыполнении условия Гимн, ft, СЧА/, 1 СЧА$имя. 1.СЧА*/ J Следующий блок при невыполнении условия Г имя, ft, СЧА/, "1 СЧА$1шя, 1.СЧА*/ J Следующий блок при невыполнении условия Г имя, *, СЧА/.1 СЧА$имя, [СЧА*/ J Модификатор разброса \ СЧА/, I СЧА$имя, кроме FN/, I LFN$mM J или модификатор функции [FN/, FN$hmh] с Интервал смещения Г*. СЧА/, ] 1СЧА$нмя| D Ограничитель Г*. СЧА/, I [C4A$hmhJ Е Уровень приоритета [ft. СЧА/. I [СЧА$нмя] F G Число параметров [*. СЧА/, 1 [СЧА$нмя] Тип параметров [F] Замечание. Операнды и полях А—F блока GENERATE ограничены константами и следующими СЧА: FN, V, X, ХН, RN, N и С1. Элементы функций влн переменных, используемых и этих полях, ограничены, теми же СЧА
Продолжение Блок т Операция LEAVE (ВЫЙТИ) Имя многоканального устройства имя, А, СЧА/. СЧА$имя, СЧА*/ Число единый Г*. СЧА/, 1 СЧА$имя, LC4A*/ J \ LINK f?\ • Ly LINK (ВВЕСТИ В ЦЕПЬ) Имя цепи пользователя ( имя, А, СЧА/, \ СЧА$нмя, } СЧА*/ J Критерий единения LlFO\ FIFO } IP/ J прнсо- Альтсрнатнв- ный блок [имя, А, О . СЧА$имя СЧА* я, 1 СЧА/, [А$имя, 1А*/ J г-Ц- I ихвс 1 1 Li3 LOGIC I R . S . (ВОЗДЕЙСТВОВАТЬ НА ЛОГИЧЕСКИЙ ПЕРЕКЛЮЧАТЕЛЬ) Имя логического переключателя имя, А, СЧА/, СЧЛ$имя, СЧА*/ f имя, А. СЧА/, ) { СЧЛ$иыя, ) { СЧА*/ J LOOP (ОРГАНИЗОВАТЬ ЦИКЛ) № параметра А, СЧА/, СЧА$имя, СЧА*/ Следующий блок, если параметр не равен О имя, к, СЧА/, СЧА$нмя, СЧА*/ 1 MARK (ОТМЕТИТЬ) № параметра А, СЧА/. СЧА$нмя, СЧА*/ А/. * имя, | '/ i 1 MATCH (СИНХРОНИ- ЗИРОВАТЬ) Адрес сопряженного блока MATCH имя, А, СЧА/, СЧА$нмя, СЧА* / f имя, А, СЧА/, 1 { СЧА$нмя, } 1СЧА*/ J
Продолжат Блок Операция <§ _L ■■MvcvMut D MSAVEVALUE (СОХРАНИТЬ ЗНАЧЕНИЕ) L —*>. •*■ Имя матрицы имя, к, СЧА/, СЧА$нмя, }[±1| СЧА*/ № строки ft, СЧА/, СЧЛ$имя, СЧА*/ № столбца ft. СЧА/, СЧЛ$имя, СЧА*/ Величина, которую следует сохрапнть ft, СЧА/. СЧА$имя, [СЧА*/ Тип матрицы [Н] 14 PREEMPT (ЗАХВАТИТЬ) Имя прибора имя, ft, СЧА/, СЧА$имя, СЧА*/ Возможность захвата по приоритету [PR] Блок, в который переходит захваченный транзакт [имя, ft. СЧА/, СЧА$И| СЧА* Л/. I имя, № параметра у захваченного транзакта Г ft. СЧА/, СЧА$имя, 1счл*/ нзакia Л/. ] имя, Ч J Возможность снятия с обслуживания IRE) PRINT (НАПЕЧАТАТЬ) Нижний предел имя, *, СЧА/, СЧА$имя, СЧА*/ Верхний предел имя, ft, СЧА/, СЧЛ$имя, СЧА*/ Мнемоническое обозначен не элемента (см. приложение Е) Указатель разбивки по страницам [любая буква] пк ПЮПТУ ■ PRIORITY (НАЗНАЧИТЬ ПРИОРИТЕТ) Новое значение приоритета ft. СЧА/. СЧА$имя, СЧА*/ Возможность возобновлении просмотра [BUFFER] ]3 QUEUE (ВСТАТЬ В ОЧЕРЕДЬ) (имя, ft, СЧА/, \ СЧЛ$нмя. } СЧА*/ J Число единиц Г ft, СЧА/, СЧА$нмя, 1.СЧА*/ единиц Л/. I ИМЯ, I >/ J J? RELEASE (ОСВОБОДИТЬ) Имя прибора имя, ft, СЧА/, СЧА$нмя, СЧА*/ w RETURN (ВЕРНУТЬ) гнил ирпиира f имя, ft, СЧА/, ) СЧА$нмя, I СЧА*/ J
Продолжен не Блок Операция <£ SAVEVALUE (СОХРАНИТЬ ЗНАЧЕНИЕ) Имя сохраняемой величины вмя, к, СЧА/,1 СЧА$нмя, ) [± СЧА*/ Величина, которую следует сохранить А, СЧА/, СЧА$нм) СЧА* А/. ] ;нмя, } Тип сохраняемой величины [Н] \А SEIZE (ЗАНЯТЬ) Имя прибора имя, А, СЧА/, СЧА$нмя, СЧА*/ е ttuci SELECT (в логическом режиме) U, NU, I.NI, SE, SNE, SF, SNF, LR, LS (ВЫБРАТЬ) Параметр, в который заносят номер элемента [ к СЧА/. ) { СЧА$имя, I СЧА*/ J Нижней предел имя, к, СЧА/, СЧА$нмя, СЧА*/ Верхний предел имя, к, СЧА/, СЧА$имя, СЧА*/ Не используется Не используется Альтернативный выход имя, к, СЧА/, СЧА$нмя, СЧА*/ f имя, к, СЧА/, I | СЧА$нмя, | I СЧА*/ J 1 с «ист АЛС.ОЕ SELECT Й режиме АХ или MIN) / MIN \ \ МАХ / (ВЫБРАТЬ) SELECT (в режиме отпошелня) G GE Е NE LE L (ВЫБРАТЬ) Параметр, в который заносят номер элемента ( к СЧА/, ) СЧА$имя, IСЧА*/ J Пвраметр, в который заносят номер элемента А. СЧА/, СЧА$имя, СЧА*/ Нвжвий предел вмя, к, СЧА/, СЧА$нмя, СЧА*/ Верхней предел имя, А. СЧА/, СЧА$нмя, СЧА*/ Не используется Исследуемый атрибут (любой СЧА кроме MX, МН) ( имя, А, СЧА/. } СЧА$имя, } I СЧА*/ J Верхний предел имя, А, СЧА/, СЧА$нмя, СЧА*/ Велвчнна для сравнения *, СЧА/, СЧА$имя, СЧА* сравнении f *, СЧА/, ) { СЧА$имя, ) \ СЧА*/ J Исследуемый атрибут (любой СЧА, кроме MX, МН) Альтернативный Г имя, к. СЧА/,1 СЧА$иыя, LC4A*/ J выход SPLIT (РАСЩЕПИТЬ) 1нсло питомко f А, СЧА/, | { СЧА$нмя, 1 I СЧА*/ j Следующий блок для потомков имя, к, СЧА/, СЧА$нмя, СЧА*/ Параметр, в который заносят порядковый номер ■ к, СЧА/, 1 СЧА$вмя, \ СЧА*/ J ж { Число параметров у каждого потомка к, СЧА/, СЧА$нмя, СЧА*/
Продолжение Блок Оперяция Т иъ TABULATE (ТАБУЛИРОВАТЬ) *1ИЯ ТИОЛНДЫ ( нмя, *, СЧА/, ) { СЧА$имя, } I СЧА*/ J Весовой фактор *, СЧА/, СЧА$вмя, СЧА*/ X nmmiL_ .U3 TEPMINATE (ЗАВЕРШИТЬ) Счетчик числа за- вершенвй Г*. СЧА/. СЧА$я 1счл* яви ЧА/. I L*/ J TEST G GE Е NE LE L (ПРОВЕРИТЬ) Первая велнчнпа к, СЧА/, СЧА$нмя, СЧА*/ Вторая величина ' к, СЧА/, СЧА$нмя, СЧА*/ Следующий блок при невыполнении условия [нмя, *. СЧА/ СЧА$имя СЧА* 1МЯ, I / J to тмма TRANSFER (в условвом режиме) (ПЕРЕДАТЬ) Режим BOTH выбора Первый исследуемый блок нмя, к, СЧА/, СЧА$имя, СЧА*/ Второй исследуемый блок i нмя, к, СЧА/, СЧА$имя, I СЧА*/ ttfdc» TRANSFER (в статическом режиме) (ПЕРЕДАТЬ) 1-ежнм выоира ( *. СЧА/, ) { СЧА$нмя, } I СЧА*/ J Первый блок Г имя, к, СЧА/,1 СЧА$нмя, J СЧА*/ J Второй блок имя, *, СЧА/. СЧА$ммя. СЧА*/ TRANSFER (в безусловном режиме) (ПЕРЕДАТЬ) Режим выбора не используется Блок, в который переходит транзакт нмя, к, СЧА/, СЧА$нмя, СЧА*/ /7\ ^~Г UNLINK- (ВЫВЕСТИ ИЗ ЦЕПИ) Имя цепи пользователя ( имя. к, СЧА/, ( СЧА$имя, IСЧА*/ Блок, в который входят выведенные транзакты нмя, А, СЧА/, СЧА$нмя, СЧА*/ пас ipanjanin f имя, *, СЧА/, ) { СЧА$нмя, I СЧА*/ J Счетчик выводимых тракзактов *. СЧА/ СЧА$имя, СЧА*/ ALL № параметра Г*. СЧА/, 1 СЧА$имя, 1.СЧА*; J или [BACK] Аргумент парности 'к, СЧА/, СЧА$имя, СЧА*/ парности Г А, СЧА/, I СЧА$имя, |СЧА*/ J Альтернативный выход [имя, к, СЧА/,"I СЧА$имя, СЧА*/ J
КОММЕНТАРИИ К РАСПЕЧАТКАМ ПРОГРАММ ГЛАВА 2 Рис 2А.2 НОМЕР КАРТЫ 3 5 6 7 8 9 10 II 13 15 16 18 20 21 Рис. 2А.4 НОМЕР КАРТЫ 3 5 6 8 10 11 12 13 14 15 16 18 20 21 КОММЕНТАРИИ 1-Й СЕГМЕНТ МОДЕЛИ ПРИХОД КЛИЕНТОВ ПРИСОЕДИНЕНИЕ К ОЧЕРЕДИ ПЕРЕХОД В КРЕСЛО К ПАРИКМАХЕРУ УХОД ИЗ ОЧЕРЕДИ ОБСЛУЖИВАНИЕ У ПАРИКМАХЕРА ОСВОБОЖДЕНИЕ ПАРИКМАХЕРА УХОД ИЗ ПАРИКМАХЕРСКОЙ 2-Й СЕГМЕНТ МОДЕЛИ ТРАНЗАКТ-ТАЙМЕР ПРИХОДИТ В МОМЕНТ ВРЕМЕНИ, РАВНОЙ 480 ЗАВЕРШЕНИЕ ПРОГОНА УПРАВЛЯЮЩИЕ КАРТЫ НАЧАТЬ ПРОГОН ВЕРНУТЬ УПРАВЛЕНИЕ В ОПЕРАЦИОННУЮ СИСТЕМУ КОММЕНТАРИИ 2-Й СЕГМЕНТ МОДЕЛИ ТРАНЗАКТ-ТАЙМЕР ПРИХОДИТ1В (МОМЕНТ ВРЕМЕНИ, РАВНЫЙ 480 ЗАВЕРШЕНИЕ ПРОГОНА 1-Й СЕГМЕНТ МОДЕЛИ ПРИХОД КЛИЕНТОВ ПРИСОЕДИНЕНИЕ К ОЧЕРЕДИ ПЕРЕХОД В КРЕСЛО ПАРИКМАХЕРА УХОД ИЗ ОЧЕРЕДИ ОБСЛУЖИВАНИЕ У ПАРИКМАХЕРА ОСВОБОЖДЕНИЕ ПАРИКМАХЕРА УХОД ИЗ ПАРИКМАХЕРСКОЙ УПРАВЛЯЮЩИЕ КАРТЫ НАЧАТЬ ПРОГОН ВЕРНУТЬ УПРАВЛЕНИЕ В ОПЕРАЦИОННУЮ СИСТЕМУ Рис. 2В.З НОМЕР КАРТЫ 3 5 6 7 8 9 10 II 13 15 16 17 18 19 20 21 22 24 26 27 29 31 32 Рис 2С.4 НОМЕР КАРТЫ 3 5 7 8 9 10 II 13 Приложение М КОММЕНТАРИИ 1-й СЕГМЕНТ МОДЕЛИ ПРИХОД ТОЛЬКО СТРИГУЩИХСЯ КЛИЕНТОВ ПРИСОЕДИНЕНИЕ К ОЧЕРЕДИ ПЕРЕХОД В КРЕСЛО ПАРИКМАХЕРА УХОД ИЗ ОЧЕРЕДИ СТРИЖКА У ПАРИКМАХЕРА ОСВОБОЖДЕНИЕ ПАРИКМАХЕРА УХОД ИЗ ПАРИКМАХЕРСКОЙ 2-Й СЕГМЕНТ МОДЕЛИ ПРИХОД СТРИГУЩИХСЯ И БРЕЮЩИХСЯ КЛИЕНТОВ ПРИСОЕДИНЕНИЕ К ОЧЕРЕДИ ПЕРЕХОД В КРЕСЛО ПАРИКМАХЕРА УХОД ИЗ ОЧЕРЕДИ БРИТЬЕ У ПАРИКМАХЕРА СТРИЖКА У ПАРИКМАХЕРА ОСВОБОЖДЕНИЕ ПАРИКМАХЕРА УХОД ИЗ ПАРИКМАХЕРСКОЙ 3-Й СЕГМЕНТ МОДЕЛИ ТАЙМЕР ПРИХОДИТ В МОМЕНТ ВРЕМЕНИ, РАВНЫЙ 480 ЗАВЕРШЕНИЕ ПРОГОНА УПРАВЛЯЮЩИЕ КАРТЫ НАЧАТЬ ПРОГОН, В КОНЦЕ СДЕЛАТЬ РАСПЕЧАТКУ ЦЕПЕЙ ВЕРНУТЬ УПРАВЛЕНИЕ В ОПЕРАЦИОННУЮ СИСТЕМУ КОММЕНТАРИИ 1-й СЕГМЕНТ МОДЕЛИ ПРИХОД МЕХАНИКОВ ПЕРВОЙ КАТЕГОРИИ ПРИСОЕДИНЕНИЕ К ОЧЕРЕДИ «ДЛЯ ПЕРВОЙ КАТЕГОРИИ» ЗАНЯТИЕ КЛАДОВЩИКА УХОД ИЗ ОЧЕРЕДИ ОБСЛУЖИВАНИЕ КЛАДОВЩИКОМ ОСВОБОЖДЕНИЕ КЛАДОВЩИКА УХОД ИЗ КЛАДОВОЙ 2-Й СЕГМЕНТ МОДЕЛИ 495
Продолжение Продолжение' НОМЕР КАРТЫ 15 16 17 18 19 20 21 23 25 26 28 30 31 КОММЕНТАРИИ НОМЕР КАРТЫ ПРИХОД МЕХАНИКОВ ВТОРОЙ КАТЕГОРИИ ПРИСОЕДИНЕНИЕ К ОЧЕРЕДИ «ДЛЯ ВТОРОЙ КАТЕГОРИИ» ЗАНЯТИЕ КЛАДОВЩИКА УХОД ИЗ ОЧЕРЕДИ ОБСЛУЖИВАНИЕ КЛАДОВЩИКОМ ОСВОБОЖДЕНИЕ КЛАДОВЩИКА УХОД ИЗ КЛАДОВОЙ 3-Й СЕГМЕНТ МОДЕЛИ ТАЙМЕР ПРИХОДИТ ЧЕРЕЗ 8 Ч ЗАВЕРШЕНИЕ ПРОГОНА УПРАВЛЯЮЩИЕ КАРТЫ НАЧАТЬ ПРОГОН ВЕРНУТЬ УПРАВЛЕНИЕ В ОПЕРАЦИОННУЮ СИСТЕМУ Рис. 2D.2 НОМЕР КАРТЫ 3 б 6 7 8 9 10 12 14 15 П 19 20 КОММЕНТАРИИ 1-Й СЕГМЕНТ МОДЕЛИ ОПРЕДЕЛЕНИЕ ЧЕТЫРЕХ СБОРЩИКОВ СБОРКА СЛЕДУЮЩЕЙ ДЕТАЛИ ЗАНЯТИЕ ПЕЧИ ИСПОЛЬЗОВАНИЕ ПЕЧИ ОСВОБОЖДЕНИЕ ПЕЧИ ПЕРЕХОД К СЛЕДУЮЩЕЙ СБОРКЕ 2-Й СЕГМЕНТ МОДЕЛИ ТАЙМЕР ПРИХОДИТ ЧЕРЕЗ 5 ДНЕЙ ЗАВЕРШЕНИЕ ПРОГОНА УПРАВЛЯЮЩИЕ КАРТЫ НАЧАТЬ ПРОГОН ВЕРНУТЬ УПРАВЛЕНИЕ В ОПЕРАЦИОННУЮ СИСТЕМУ Ряс. 2.37, в НОМЕР КАРТЫ 3 5 6 7 8 9 10 12 14 15 17 19 20 21 22 23 24 КОММЕНТАРИИ 1-Й СЕГМЕНТ МОДЕЛИ ОПРЕДЕЛЯЕТ ЧЕТЫРЕХ СБОРЩИКОВ СБОРКА СЛЕДУЮЩЕЙ ДЕТАЛИ ЗАНЯТИЕ ПЕЧИ ИСПОЛЬЗОВАНИЕ ПЕЧИ ОСВОБОЖДЕНИЕ ПЕЧИ ПЕРЕЙТИ К СЛЕДУЮЩЕЙ СБОРКЕ 2-Й СЕГМЕНТ МОДЕЛИ ТАЙМЕР ПРИХОДИТ ЧЕРЕЗ 5 ДНЕЙ ЗАВЕРШИТЬ ПРОГОН УПРАВЛЯЮЩИЕ КАРТЫ И ПЕРЕОПРЕДЕЛЕНИЕ БЛОКОВ НАЧАТЬ ПЕРВЫЙ ПРОГОН РЕКОНФИГУРАЦИЯ ДЛЯ ВТОРОГО ПРОГОНА ОЧИСТКА ДЛЯ ВТОРОГО ПРОГОНА НАЧАТЬ ВТОРОЙ ПРОГОН РЕКОНФИГУРАЦИЯ ДЛЯ ТРЕТЬЕГО ПРОГОНА ОЧИСТКА ДЛЯ ТРЕТЬЕГО ПРОГОНА 25 26 КОММЕНТАРИИ Рис. 2Е.З НОМЕР КАРТЫ 7 9 10 11 12 13 14 15 16 18 20 21 23 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 НАЧАТЬ ТРЕТИЙ ПРОГОН ВОЗВРАТИТЬ УПРАВЛЕНИЕ В ОПЕРАЦИОННУЮ СИСТЕМУ КОММЕНТАРИИ ТРОЕ РАБОЧИХ; РАБОТАЕТ МАКСИМУМ 50 МАШИН 1-Й СЕГМЕНТ МОДЕЛИ ОПРЕДЕЛЯЮТСЯ 53 МАШИНЫ (50 СОБСТВЕННЫХ И ТРИ АРЕНДУЕМЫХ) МАШИНА ПОСТУПАЕТ В РАБОТУ РАБОТАЕТ ЛОМАЕТСЯ: МАШИНА МАШИНА РАБОТЫ ЗАНЯТИЕ МАШИНУ ВЫХОДИТ ИЗ РАБОЧЕГО РЕМОНТИРУЮТ ОСВОБОЖДЕНИЕ РАБОЧЕГО ВЕРНУТЬСЯ И НАЧАТЬ РАБОТУ, ЕСЛИ НЕОБХОДИМО 2-Й СЕГМЕНТ МОДЕЛИ ТАЙМЕР ПРИХОДИТ ЧЕРЕЗ 3 ГОДА (40-ЧАСОВЫЕ НЕДЕЛИ) ЗАВЕРШЕНИЕ ПРОГОНА УПРАВЛЯЮЩИЕ КАРТЫ; ПЕРЕОПРЕДЕЛЕНИЕ ОПЕРАНДОВ БЛОКОВ И ЕМКОСТИ УСТРОЙСТВ НАЧАТЬ ПЕРВЫЙ ПРОГОН УСТАНОВИТЬ ЧИСЛО АРЕНДУЕМЫХ - ЧЕТЫРЕ ДЛЯ ВТОРОГО ПРОГОНА ОЧИСТИТЬ ДЛЯ ВТОРОГО ПРОГОНА НАЧАТЬ ВТОРОЙ ПРОГОН УСТАНОВИТЬ ЧИСЛО АРЕНДУЕМЫХ - ПЯТЬ ДЛЯ ТРЕТЬЕГО ПРОГОНА ОЧИСТИТЬ ДЛЯ ТРЕТЬЕГО ПРОГОНА НАЧАТЬ ТРЕТИЙ ПРОГОН УСТАНОВИТЬ ЧИСЛО РАБОЧИХ —ЧЕТЫРЕ ДЛЯ ЧЕТВЕРТОГО ПРОГОНА УСТАНОВИТЬ ЧИСЛО АРЕНДУЕМЫХ - ТРИ ДЛЯ ЧЕТВЕРТОГО ПРОГОНА ОЧИСТИТЬ ДЛЯ ЧЕТВЕРТОГО ПРОГОНА НАЧАТЬ ЧЕТВЕРТЫЙ ПРОГОН УСТАНОВИТЬ ЧИСЛО АРЕНДУЕМЫХ - ЧЕТЫРЕ ДЛЯ ПЯТОГО ПРОГОНА ОЧИСТИТЬ ДЛЯ ПЯТОГО ПРОГОНА НАЧАТЬ ПЯТЫЙ ПРОГОН УСТАНОВИТЬ ЧИСЛО АРЕНДУЕМЫХ - ПЯТЬ ДЛЯ ШЕСТОГО ПРОГОНА ОЧИСТИТЬ ДЛЯ ШЕСТОГО ПРОГОНА НАЧАТЬ ШЕСТОЙ ПРОГОН УСТАНОВИТЬ ЧИСЛО РАБОЧИХ - ПЯТЬ ДЛЯ СЕДЬМОГО ПРОГОНА УСТАНОВИТЬ ЧИСЛО АРЕНДУЕМЫХ - ТРИ ДЛЯ СЕДЬМОГО ПРОГОНА ОЧИСТИТЬ ДЛЯ СЕДЬМОГО ПРОГОНА НАЧАТЬ СЕДЬМОЙ ПРОГОН УСТАНОВИТЬ ЧИСЛО АРЕНДУЕМЫХ - ЧЕТЫРЕ ДЛЯ ВОСЬМОГО ПРОГОНА ОЧИСТИТЬ ДЛЯ ВОСЬМОГО ПРОГОНА НАЧАТЬ ВОСЬМОЙ ПРОГОН УСТАНОВИТЬ ЧИСЛО АРЕНДУЕМЫХ - ПЯТЬ ДЛЯ ДЕВЯТОГО ПРОГОНА 496
Продолжение Продолжение НОМЕР КАРТЫ 50 51 52 КОММЕНТАРИИ НОМЕР КАРТЫ КОММЕНТАРИИ ОЧИСТИТЬ ДЛЯ ДЕВЯТОГО ПРОГОНА НАЧАТЬ ДЕВЯТЫЙ ПРОГОН ВЕРНУТЬ УПРАВЛЕНИЕ В ОПЕРАЦИОННУЮ СИСТЕМУ Рис 2.47 НОМЕР' КАРТЫ КОММЕНТАРИИ ОПРЕДЕЛЕНИЕ ЕМКОСТИ МНОГОКАНАЛЬНЫХ УСТРОЙСТВ ЧЕТВЕРО РАБОЧИХ, МАКСИМУМ 50 РАБОТАЮЩИХ МАШИН 1-Й СЕГМЕНТ МОДЕЛИ ОПРЕДЕЛЯЮТСЯ 54 МАШИНЫ МАШИНА ПОСТУПАЕТ В РАБОТУ МАШИНА РАБОТАЕТ МАШИНА ЛОМАЕТСЯ; ВЫХОДИТ ИЗ РАБОТЫ ЗАНЯТИЕ РАБОЧЕГО МАШИНУ РЕМОНТИРУЮТ ОСВОБОЖДЕНИЕ РАБОЧЕГО ВЕРНУТЬСЯ И НАЧАТЬ РАБОТУ, ЕСЛИ НЕОБХОДИМО 2-Й СЕГМЕНТ МОДЕЛИ ТАЙМЕР ПРИХОДИТ ЧЕРЕЗ КАЖДЫЕ 40 Ч ЗАКОНЧИТЬ ПРОГОН УПРАВЛЯЮЩИЕ КАРТЫ НАЧАТЬ ПРОГОН ДЛЯ ПЕРВОЙ НЕДЕЛИ ОСУЩЕСТВИТЬ СБРОС ДЛЯ ВТОРОЙ НЕДЕЛИ НАЧАТЬ ПРОГОН ДЛЯ ВТОРОЙ НЕДЕЛИ ОСУЩЕСТВИТЬ СБРОС ДЛЯ ТРЕТЬЕЙ НЕДЕЛИ НАЧАТЬ ПРОГОН ДЛЯ ТРЕТЬЕЙ НЕДЕЛИ ОСУЩЕСТВИТЬ СБРОС ДЛЯ ЧЕТВЕРТОЙ НЕДЕЛИ НАЧАТЬ ПРОГОН ДЛЯ ЧЕТВЕРТОЙ НЕДЕЛИ ОСУЩЕСТВИТЬ СБРОС ДЛЯ 24-Й НЕДЕЛИ НАЧАТЬ ПРОГОН ДЛЯ 24-Й НЕДЕЛИ ОСУЩЕСТВИТЬ СБРОС ДЛЯ 25-Й НЕДЕЛИ НАЧАТЬ ПРОГОН ДЛЯ 25-Й НЕДЕЛИ ВЕРНУТЬ УПРАВЛЕНИЕ В ОПЕРАЦИОННУЮ СИСТЕМУ КОММЕНТАРИИ ОПРЕДЕЛЕНИЕ ЕМКОСТИ МНОГОКАНАЛЬНЫХ УСТРОЙСТВ ТРОЕ РАБОЧИХ, МАКСИМУМ 50 РАБОТАЮЩИХ МАШИН 1-Й СЕГМЕНТ МОДЕЛИ 10 II 12 13 14 15 16 18 20 21 23 25 26 27 28 29 30 31 32 64 65 66 67 68 69 70 Рас У12 НОМЕР КАРТЫ 8 10 II 12 13 ОПРЕДЕЛЯЮТСЯ 53 МАШИНЫ '50 СОБСТВЕННЫХ, 3 АРЕНДУЕМЫЕ)' МАШИНА ПОСТУПАЕТ В РАБОТУ МАШИНА РАБОТАЕТ МАШИНА ЛОМАЕТСЯ; ВЫХОДИТ ИЗ РАБОТЫ ЗАНЯТИЕ РАБОЧЕГО МАШИНУ РЕМОНТИРУЮТ ОСВОБОЖДЕНИЕ РАБОЧЕГО ВЕРНУТЬСЯ И НАЧАТЬ РАБОТУ, ЕСЛИ НЕОБХОДИМО 2-Й СЕГМЕНТ МОДЕЛИ ТАЙМЕР ПРИХОДИТ ЧЕРЕЗ КАЖДЫЕ 10 НЕДЕЛЬ УМЕНЬШИТЬ ЗНАЧЕНИЕ СЧЕТЧИКА ЗАВЕРШЕНИЙ УПРАВЛЯЮЩИЕ КАРТЫ; ПЕРЕОПРЕДЕЛЕНИЕ БЛОКОВ И ЕМКОСТЕЙ МНОГОКАНАЛЬНЫХ УСТРОЙСТВ НАЧАТЬ ПОДГОТОВИТЕЛЬНУЮ ФАЗУ ПЕРВОГО ПРОГОНА СБРОС ДЛЯ ПЕРВОГО ПРОГОНА В УСТАНОВИВШЕМСЯ РЕЖИМЕ НАЧАТЬ ПЕРВЫЙ ПРОГОН В УСТАНОВИВШЕМСЯ РЕЖИМЕ УСТАНОВИТЬ ЧИСЛО АРЕНДУЕМЫХ — ЧЕТЫРЕ ДЛЯ ВТОРОГО ПРОГОНА ОЧИСТИТЬ ДЛЯ НАЧАЛЬНОЙ ФАЗЫ ВТОРОГО ПРОГОНА НАЧАТЬ НАЧАЛЬНУЮ ФАЗУ ВТОРОГО ПРОГОНА СБРОС ДЛЯ ВТОРОГО ПРОГОНА В УСТАНОВИВШЕМСЯ РЕЖИМЕ НАЧАТЬ ВТОРОЙ ПРОГОН В УСТАНОВИВШЕМСЯ РЕЖИМЕ НАЧАТЬ ВОСЬМОЙ ПРОГОН В УСТАНОВИВШЕМСЯ РЕЖИМЕ УСТАНОВИТЬ ЧИСЛО АРЕНДУЕМЫХ — ПЯТЬ ДЛЯ ДЕВЯТОГО ПРОГОНА ОЧИСТИТЬ ДЛЯ НАЧАЛЬНОЙ ФАЗЫ ДЕВЯТОГО ПРОГОНА НАЧАТЬ НАЧАЛЬНУЮ ФАЗУ ДЕВЯТОГО ПРОГОНА СБРОС ДЛЯ ДЕВЯТОГО ПРОГОНА В УСТАНОВИВШЕМСЯ РЕЖИМЕ НАЧАТЬ ДЕВЯТЫЙ ПРОГОН В УСТАНОВИВШЕМСЯ РЕЖИМЕ ВЕРНУТЬ УПРАВЛЕНИЕ В ОПЕРАЦИОННУЮ СИСТЕМУ КОММЕНТАРИИ ОПРЕДЕЛЕНИЕ ЕМКОСТИ МНОГОКАНАЛЬНЫХ УСТРОЙСТВ КОНФИГУРАЦИЯ ДЛЯ СЛУЧАЯ С ЧЕТЫРЬМЯ СБОРЩИКАМИ 1-Й СЕГМЕНТ МОДЕЛИ ОБЕСПЕЧЕНИЕ НЕОГРАНИЧЕННОГО КОЛИЧЕСТВА МАТЕРИАЛА ЗАНЯТИЕ СБОРЩИКА ИНТЕРВАЛ ВРЕМЕНИ СБОРКИ ЗАНЯТИЕ ПЕЧИ 32 Т. Дж. ШрайЙер 497
Продолжена* Продолжение КОММЕНТАРИИ НОМЕР КАРТЫ ИНТЕРВАЛ ВРЕМЕНИ ОБЖИГА ОСВОБОЖДЕНИЕ ПЕЧИ ОСВОБОЖДЕНИЕ СБОРЩИКА ДЕТАЛЬ ПОКИДАЕТ ЦЕХ 2-Й СЕГМЕНТ МОДЕЛИ ТАЙМЕР ПРИХОДИТ В КОНЦЕ КАЖДОГО ДНЯ УМЕНЬШИТЬ СЧЕТЧИК ЗАВЕРШЕНИЙ НА ЕДИНИЦУ УПРАВЛЯЮЩИЕ КАРТЫ И КАРТЫ ПЕРЕОПРЕДЕЛЕНИЯ ЕМКОСТИ НАЧАЛЬНАЯ ФАЗА ПЕРВОГО ПРОГОНА ОБНУЛЕНИЕ НАКОПЛЕННЫХ СТАТИСТИК НАЧАТЬ ПЕРВЫЙ ПРОГОН В СТАЦИОНАРНОМ РЕЖИМЕ РЕКОНФИГУРАЦИЯ ДЛЯ СЛЕДУЮЩЕГО ПРОГОНА ОЧИСТКА МОДЕЛИ ДЛЯ СЛЕДУЮЩЕГО ПРОГОНА НАЧАЛЬНАЯ ФАЗА ВТОРОГО ПРОГОНА ОБНУЛЕНИЕ НАКОПЛЕННЫХ СТАТИСТИК НАЧАТЬ ВТОРОЙ ПРОГОН В СТАЦИОНАРНОМ РЕЖИМЕ РЕКОНФИГУРАЦИЯ ДЛЯ СЛЕДУЮЩЕГО ПРОГОНА ОЧИСТКА МОДЕЛИ ДЛЯ СЛЕДУЮЩЕГО ПРОГОНА НАЧАЛЬНАЯ ФАЗА ТРЕТЬЕГО ПРОГОНА ОБНУЛЕНИЕ НАКОПЛЕННЫХ СТАТИСТИК НАЧАТЬ ТРЕТИЙ ПРОГОН В СТАЦИОНАРНОМ РЕЖИМЕ ВЕРНУТЬ УПРАВЛЕНИЕ В ОПЕРАЦИОННУЮ СИСТЕМУ КОММЕНТАРИИ ОПРЕДЕЛЕНИЕ ЕМКОСТИ МНОГОКАНАЛЬНЫХ УСТРОЙСТВ НА СТАНЦИИ КОНТРОЛЯ ДВОЕ]; РАБОЧИХ 1-Й СЕГМЕНТ МОДЕЛИ ТЕЛЕВИЗОРЫ, ПРИХОДЯЩИЕ ИЗ ДРУГОГО ЦЕХА ПРИХОД К МЕСТУ ОЖИДАНИЯ КОНТРОЛЯ ЗАНЯТИЕ КОНТРОЛЕРА УХОД С МЕСТА ОЖИДАНИЯ ТЕЛЕВИЗОР В ПРОЦЕССЕ КОНТРОЛЯ ОСВОБОЖДЕНИЕ КОНТРОЛЕРА ПЕРЕДАЧА НА УПАКОВКУ ИЛИ НАЛАДКУ ТЕЛЕВИЗОРЫ ПОСТУПАЮТ В УПАКОВКУ ПРИХОД К МЕСТУ ОЖИДАНИЯ НАЛАДКИ ЗАНЯТИЕ НАЛАДЧИКА 19 20 21 22 24 26 27 29 31 32 КОММЕНТАРИИ УХОД С МЕСТА ОЖИДАНИЯ ТЕЛЕВИЗОРЫ В ПРОЦЕССЕ НАЛАДКИ ОСВОБОЖДЕНИЕ НАЛАДЧИКА ВОЗВРАТ НА КОНТРОЛЬ 2-Й СЕГМЕНТ МОДЕЛИ ТАЙМЕР ПРИХОДИТ В КОНЦЕ КАЖДОГО ДНЯ ОБЕСПЕЧИВАЕТ РАСПЕЧАТКУ СНИМКА ИЛИ ЗАВЕРШЕНИЕ МОДЕЛИРОВАНИЯ УПРАВЛЯЮЩИЕ КАРТЫ НАЧАТЬ ПРОГОН ВЕРНУТЬ УПРАВЛЕНИЕ В ОПЕРАЦИОННУЮ СИСТЕМУ ГЛАВА 3 Рис ЗА.З НОМЕР КАРТЫ 3 5 8 II 13 14 15 16 17 18 20 22 23 25 27 28 29 30 31 32 33 34 Рис ЗВ.З ПОМЕР КАРТЫ 3 5 10 12 14 16 17 КОММЕНТАРИИ ОПРЕДЕЛЕНИЕ ФУНКЦИЙ РАСПРЕДЕЛЕНИЕ ВРЕМЕНИ СБОРКИ РАСПРЕДЕЛЕНИЕ ВРЕМЕНИ ОБЖИГА 1-Й СЕГМЕНТ МОДЕЛИ ОПРЕДЕЛЕНИЕ ЧЕТЫРЕХ СБОРЩИКОВ СБОРКА СЛЕДУЮЩЕЙ ДЕТАЛИ ЗАНЯТИЕ ПЕЧИ ИСПОЛЬЗОВАНИЕ ПЕЧИ ОСВОБОЖДЕНИЕ ПЕЧИ ПЕРЕХОД К СЛЕДУЮЩЕЙ СБОРКЕ 2-Й СЕГМЕНТ МОДЕЛИ ТАЙМЕР ПРИХОДИТ ЧЕРЕЗ 5 ДНЕЙ ЗАВЕРШЕНИЕ ПРОГОНА УПРАВЛЯЮЩИЕ КАРТЫ И ПЕРЕОПРЕДЕЛЕНИЕ ОПЕРАНДОВ БЛОКА НАЧАТЬ ПЕРВЫЙ ПРОГОН РЕКОНФИГУРАЦИЯ ДЛЯ ВТОРОГО ПРОГОНА ОЧИСТКА ДЛЯ ВТОРОГО ПРОГОНА НАЧАТЬ ВТОРОЙ ПРОГОН РЕКОНФИГУРАЦИЯ ДЛЯ ТРЕТЬЕГО ПРОГОНА ОЧИСТКА ДЛЯ ТРЕТЬЕГО ПРОГОНА НАЧАТЬ ТРЕТИЙ ПРОГОН ВЕРНУТЬ УПРАВЛЕНИЕ В ОПЕРАЦИОННУЮ СИСТЕМУ КОММЕНТАРИИ ОПРЕДЕЛЕНИЕ ФУНКЦИИ ФУНКЦИЯ ЭКСПОНЕНЦИАЛЬНОГО РАСПРЕДЕЛЕНИЯ ОПРЕДЕЛЕНИЕ ЕМКОСТИ МНОГОКАНАЛЬНОГО УСТРОЙСТВА ОДНОМЕСТНАЯ СТОЯНКА 1-Й СЕГМЕНТ МОДЕЛИ ПРИБЫТИЕ АВТОМОБИЛЕЙ УХОД, ЕСЛИ НА СТОЯНКЕ НЕТ МЕСТ 498
Продолжение Рис 3C.J КОММЕНТАРИИ НОМЕР КАРТЫ КОММЕНТАРИИ ВЪЕЗД НА СТОЯНКУ ЗАНЯТЬ МОЙКУ ВЫЕЗД СО СТОЯНКИ МЫТЬЕ АВТОМОБИЛЯ ОСВОБОДИТЬ МОЙКУ ПОКИНУТЬ СИСТЕМУ 2-Й СЕГМЕНТ МОДЕЛИ ТАЙМЕР ПРИХОДИТ В КОНЦЕ ДНЯ ЗАКОНЧИТЬ ПРОГОН УПРАВЛЯЮЩИЕ КАРТЫ И ПЕРЕОПРЕДЕЛЕНИЕ ЕМКОСТИ МНОГОКАНАЛЬНОГО УСТРОЙСТВА НАЧАТЬ ПЕРВЫЙ ПРОГОН ЧИСЛО МЕСТ НА СТОЯНКЕ РАВНО 2 ДЛЯ ВТОРОГО ПРОГОНА ОЧИСТКА ДЛЯ ВТОРОГО ПРОГОНА НАЧАТЬ ВТОРОЙ ПРОГОН ЧИСЛО МЕСТ НА СТОЯНКЕ РАВНО 3 ДЛЯ ТРЕТЬЕГО ПРОГОНА ОЧИСТКА ДЛЯ ТРЕТЬЕГО ПРОГОНА НАЧАТЬ ТРЕТИЙ ПРОГОН ВЕРНУТЬ УПРАВЛЕНИЕ В ОПЕРАЦИОННУЮ СИСТЕМУ КОММЕНТАРИИ ОПРЕДЕЛЕНИЕ НЕСТАНДАРТНЫХ ПОСЛЕДОВАТЕЛЬНОСТЕЙ СЛУЧАЙНЫХ ЧИСЕЛ ОПРЕДЕЛЕНИЕ ФУНКЦИЙ ИНТЕРВАЛЫ ВРЕМЕНИ ПРИХОДА МЕХАНИКОВ ПЕРВОЙ КАТЕГОРИИ ИНТЕРВАЛЫ ВРЕМЕНИ ПРИХОДА МЕХАНИКОВ ВТОРОЙ КАТЕГОРИИ ВРЕМЯ ОБСЛУЖИВАНИЯ МЕХАНИКОВ ПЕРВОЙ КАТЕГОРИИ ВРЕМЯ ОБСЛУЖИВАНИЯ МЕХАНИКОВ ВТОРОЙ КАТЕГОРИИ 1-Й СЕГМЕНТ МОДЕЛИ ПРИХОД МЕХАНИКОВ ПЕРВОЙ КАТЕГОРИИ ПРИСОЕДИНЕНИЕ К ОЧЕРЕДИ «ДЛЯ ПЕРВОЙ КАТЕГОРИИ» ЗАНЯТИЕ КЛАДОВЩИКА УХОД ИЗ ОЧЕРЕДИ ОБСЛУЖИВАНИЕ КЛАДОВЩИКОМ ОСВОБОЖДЕНИЕ КЛАДОВЩИКА УХОД ИЗ КЛАДОВОЙ 2-Й СЕГМЕНТ МОДЕЛИ ПРИХОД МЕХАНИКОВ ВТОРОЙ КАТЕГОРИИ ОБСЛУЖИВАНИЕ КЛАДОВЩИКОМ ЗАНЯТИЕ КЛАДОВЩИКА ПОКИНУТЬ ОЧЕРЕДЬ ОБСЛУЖИВАНИЕ КЛАДОВЩИКОМ ОСВОБОЖДЕНИЕ КЛАДОВЩИКА УХОД ИЗ КЛАДОВОЙ 3-Й СЕГМЕНТ МОДЕЛИ ТАЙМЕР ПРИХОДИТ ЧЕРЕЗ 8 Ч ЗАВЕРШИТЬ ПРОГОН УПРАВЛЯЮЩИЕ КАРТЫ НАЧАТЬ ПРОГОН ВЕРНУТЬ УПРАВЛЕНИЕ В ОПЕРАЦИ- ОННУЮ СИСТЕМУ 32' 499 7 9 11 13 IS 18 20 21 22 23 24 25 26 28 30 31 32 33 34 35 36 38 40 41 43 45 46 47 48 49 50 51 70 71 72 73 74 75 76 77 78 ОПРЕДЕЛЕНИЕ НЕСТАНДАРТНЫХ ПОСЛЕДОВАТЕЛЬНОСТЕЙ СЛУЧАЙНЫХ ЧИСЕЛ ДЛЯ ПЕРВОГО ПРОГОНА ОПРЕДЕЛЕНИЯ ФУНКЦИЙ ИНТЕРВАЛЫ ПРИХОДОВ МЕХАНИКОВ ПЕРВОЙ КАТЕГОРИИ ИНТЕРВАЛЫ ПРИХОДОВ МЕХАНИКОВ ВТОРОЙ КАТЕГОРИИ ВРЕМЯ ОБСЛУЖИВАНИЯ МЕХАНИКОВ ПЕРВОЙ КАТЕГОРИИ ВРЕМЯ ОБСЛУЖИВАНИЯ МЕХАНИКОВ ВТОРОЙ КАТЕГОРИИ 1-Й СЕГМЕНТ МОДЕЛИ ПРИХОД МЕХАНИКОВ ПЕРВОЙ КАТЕГОРИИ ПРИСОЕДИНЕНИЕ К ОЧЕРЕДИ «ДЛЯ ПЕРВОЙ КАТЕГОРИИ» ЗАНЯТИЕ КЛАДОВЩИКА УХОД ИЗ ОЧЕРЕДИ ОБСЛУЖИВАНИЕ КЛАДОВЩИКОМ ОСВОБОЖДЕНИЕ КЛАДОВЩИКА УХОД ИЗ КЛАДОВОЙ 2-Й СЕГМЕНТ МОДЕЛИ ПРИХОД МЕХАНИКОВ ВТОРОЙ КАТЕГОРИИ ПРИСОЕДИНЕНИЕ К ОЧЕРЕДИ «ДЛЯ ВТОРОЙ КАТЕГОРИИ» ЗАНЯТИЕ КЛАДОВЩИКА УХОД ИЗ ОЧЕРЕДИ ОБСЛУЖИВАНИЕ КЛАДОВЩИКОМ ОСВОБОЖДЕНИЕ КЛАДОВЩИКА УХОД ИЗ КЛАДОВОЙ 3-Й СЕГМЕНТ МОДЕЛИ ТАЙМЕР ПРИХОДИТ ЧЕРЕЗ 8 Ч ЗАВЕРШИТЬ ПРОГОН УПРАВЛЯЮЩИЕ КАРТЫ И ПЕРЕОПРЕДЕЛЕНИЯ БЛОКОВ НАЧАТЬ ПЕРВЫЙ ПРОГОН УСТАНОВЛЕНИЕ ПОСЛЕДОВАТЕЛЬНОСТИ СЛУЧАЙНЫХ ЧИСЕЛ ДЛЯ ВТОРОГО ПРОГОНА ОЧИСТКА ДЛЯ ВТОРОГО ПРОГОНА НАЧАТЬ ВТОРОЙ ПРОГОН УСТАНОВЛЕНИЕ ПОСЛЕДОВАТЕЛЬНОСТИ СЛУЧАЙНЫХ ЧИСЕЛ ДЛЯ ТРЕТЬЕГО ПРОГОНА ОЧИСТКА ДЛЯ ТРЕТЬЕГО ПРОГОНА НАЧАТЬ ТРЕТИЙ ПРОГОН УСТАНОВЛЕНИЕ ПОСЛЕДОВАТЕЛЬНОСТИ СЛУЧАЙНЫХ ЧИСЕЛ ДЛЯ ДЕСЯТОГО ПРОГОНА ОЧИСТКА ДЛЯ ДЕСЯТОГО ПРОГОНА НАЧАТЬ ДЕСЯТЫЙ ПРОГОН РЕКОНФИГУРАЦИЯ ДЛЯ ДИСЦИПЛИНЫ С ПРИОРИТЕТАМИ РЕКОНФИГУРАЦИЯ ДЛЯ ДИСЦИПЛИНЫ С ПРИОРИТЕТАМИ ВОССТАНОВЛЕНИЕ ПОСЛЕДОВАТЕЛЬНОСТИ СЛУЧАЙНЫХ ЧИСЕЛ ПЕРВОГО ПРОГОНА ОЧИСТКА ДЛЯ ОДИННАДЦАТОГО ПРОГОНА НАЧАТЬ ОДИННАДЦАТЫЙ ПРОГОН ВОССТАНОВЛЕНИЕ ПОСЛЕДОВАТЕЛЬНОСТИ СЛУЧАЙНЫХ ЧИСЕЛ ВТОРОГО ПРОГОНА
Продолжение Продолжение НОМЕР КАРТЫ 79 80 102 103 104 105 КОММЕНТАРИИ НОМЕР КАРТЫ КОММЕНТАРИИ ОЧИСТКА ДЛЯ 12-ГО ПРОГОНА НАЧАТЬ 12-Й ПРОГОН ВОССТАНОВЛЕНИЕ ПОСЛЕДОВАТЕЛЬНОСТИ СЛУЧАЙНЫХ ЧИСЕЛ ДЕСЯТОГО ПРОГОНА ОЧИСТКА ДЛЯ 20-ГО ПРОГОНА НАЧАТЬ 20-й ПРОГОН ВЕРНУТЬ УПРАВЛЕНИЕ В ОПЕРАЦИОННУЮ СИСТЕМУ ГЛАВА 4 Рис 4А.2 КОММЕНТАРИИ ОПРЕДЕЛЕНИЕ ФУНКЦИЙ РАСПРЕДЕЛЕНИЕ СРЕДНИХ ЗНАЧЕНИЙ ВРЕМЕНИ ОБСЛУЖИВАНИЯ ФУНКЦИЯ ЭКСПОНЕНЦИАЛЬНОГО РАСПРЕДЕЛЕНИЯ 1-Й СЕГМЕНТ МОДЕЛИ ПРИХОД ТРЕБОВАНИЙ ПРИСОЕДИНЕНИЕ К ОЧЕРЕДИ ЗАНЯТИЕ ОБСЛУЖИВАЮЩЕГО ПРИБОРА УХОД ИЗ ОЧЕРЕДИ ОБСЛУЖИВАНИЕ ПРИБОРОМ ОСВОБОЖДЕНИЕ ПРИБОРА УХОД ИЗ МОДЕЛИ УПРАВЛЯЮЩИЕ КАРТЫ НАЧАТЬ ПРОГОН ВЕРНУТЬ УПРАВЛЕНИЕ В ОПЕРАЦИОННУЮ СИСТЕМУ КОММЕНТАРИИ ОПРЕДЕЛЕНИЕ ФУНКЦИЙ РАСПРЕДЕЛЕНИЕ ЧИСЛА ПОКУПОК У ПРИЛАВКА I РАСПРЕДЕЛЕНИЕ ЧИСЛА ПОКУПОК У ПРИЛАВКА 2 РАСПРЕДЕЛЕНИЕ ЧИСЛА ПОКУПОК У ПРИЛАВКА 3 РАСПРЕДЕЛЕНИЕ ВРЕМЕНИ ОБСЛУЖИВАНИЯ У КАССЫ РАСПРЕДЕЛЕНИЕ ЧИСЛА ДОПОЛНИТЕЛЬНЫХ ПОКУПОК ФУНКЦИЯ ЭКСПОНЕНЦИАЛЬНОГО РАСПРЕДЕЛЕНИЯ 1-Й СЕГМЕНТ МОДЕЛИ ПРИХОД ПОКУПАТЕЛЕЙ ВЗЯТЬ КОРЗИНКУ БУДУТ ЛИ ПОКУПКИ У ПРИЛАВКА 1? ПРОВЕСТИ ВРЕМЯ У ПРИЛАВКА 1 УСТАНОВИТЬ Р1 РАВНЫМ ЧИСЛУ ПОКУПОК У ПРИЛАВКА 1 БУДУТ ЛИ ДЕЛАТЬ ПОКУПКИ У ПРИЛАВКА 2? 28 29 30 31 32 33 34 35 36 37 38 39 40 42 44 45 47 49 50 Рис 4С.З НОМЕР КАРТЫ 3 5 7 10 12 14 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 37 ПРОВЕСТИ ВРЕМЯ У ПРИЛАВКА 2 УСТАНОВИТЬ Р1 РАВНЫМ СУММЕ ЧИСЛА ПОКУПОК БУДУТ ЛИ ПОКУПКИ У ПРИЛАВКА 3? ПРОВЕСТИ ВРЕМЯ У ПРИЛАВКА 3 УСТАНОВИТЬ Р1 РАВНЫМ СУММЕ ЧИСЛА ПОКУПОК ОЧЕРЕДЬ К КАССЕ ДОБАВИТЬ К Р1 ЧИСЛО ДОПОЛНИТЕЛЬНЫХ ПОКУПОК ЗАНЯТЬ КАССИРА ПОКИНУТЬ ОЧЕРЕДЬ К КАССЕ ИНТЕРВАЛ ВРЕМЕНИ ПРОВЕРКИ ОСВОБОДИТЬ КАССИРА ВЕРНУТЬ КОРЗИНКУ ПОКИНУТЬ МАГАЗИН 2-Й СЕГМЕНТ МОДЕЛИ ТАЙМЕР ПРИХОДИТ В КОНЦЕ ВОСЬМИЧАСОВОГО ДНЯ ЗАВЕРШИТЬ ПРОГОН УПРАВЛЯЮЩИЕ КАРТЫ НАЧАТЬ ПРОГОН; РАСПЕЧАТЫВАТЬ ЦЕПИ ВЕРНУТЬ УПРАВЛЕНИЕ В ОПЕРАЦИОННУЮ СИСТЕМУ КОММЕНТАРИИ ОПРЕДЕЛЕНИЕ ФУНКЦИИ ВРЕМЯ ВЫПОЛНЕНИЯ ПРОЦЕДУРЫ 1 ВРЕМЯ ВЫПОЛНЕНИЯ ПРОЦЕДУРЫ 2 ОПРЕДЕЛЕНИЕ ЕМКОСТИ МНОГОКАНАЛЬНЫХ УСТРОЙСТВ ТРИ АГРЕГАТА, ОДИН КРАН 1-Й СЕГМЕНТ МОДЕЛИ ВВЕСТИ ОДНОГО ОПЕРАТОРА НА АГРЕГАТ ВОЙТИ В СОСТОЯНИЕ ЗАНЯТОСТИ ВЫПОЛНЕНИЕ ПРОЦЕДУРЫ I ПОКИНУТЬ СОСТОЯНИЕ ЗАНЯТОСТИ ПОЛУЧИТЬ КРАН ВОЙТИ В СОСТОЯНИЕ ЗАНЯТОСТИ ПРОМЕЖУТОЧНАЯ ОБРАБОТКА ОСВОБОДИТЬ КРАН УСТАНОВИТЬ НИЗКИЙ ПРИОРИТЕТ ДЛЯ СЛЕДУЮЩЕГО ИСПОЛЬЗОВАНИЯ КРАНА ВЫПОЛНЕНИЕ ПРОЦЕДУРЫ 2 ПОКИНУТЬ СОСТОЯНИЕ ЗАНЯТОСТИ ПОЛУЧИТЬ КРАН ВОЙТИ В СОСТОЯНИЕ ЗАНЯТОСТИ УСТАНОВИТЬ БОЛЕЕ ВЫСОКИЙ ПРИОРИТЕТ ДЛЯ СЛЕДУЮЩЕГО ИСПОЛЬЗОВАНИЯ КРАНА ВЫГРУЗКА, УКЛАДКА, ПОДНЯТИЕ, ЗАГРУЗКА ОСВОБОДИТЬ КРАН ПЕРЕЙТИ К ПРОЦЕДУРЕ 1 ДЛЯ СЛЕДУЮЩЕЙ ОТЛИВКИ ТАЙМЕР ПРИХОДИТ ЧЕРЕЗ ПЯТЬ СОРОКАЧАСОВЫХ НЕДЕЛЬ ЗАВЕРШИТЬ ПРОГОН УПРАВЛЯЮЩИЕ КАРТЫ 500
Продолжение Продолжение НОМЕР КАРТЫ КОММЕНТАРИИ 39 НАЧАТЬ ПЕРВЫЙ ПРОГОН 40 ОЧИСТКА ДЛЯ ВТОРОГО ПРОГОНА 41 РЕКОНФИГУРАЦИЯ НА ЧЕТЫРЕ ОПЕРАТОРА 42 ЧЕТЫРЕ АГРЕГАТА. ОДИН КРАН 43 НАЧАТЬ ВТОРОЙ ПРОГОН 44 ОЧИСТКА ДЛЯ ТРЕТЬЕГО ПРОГОНА 45 РЕКОНФИГУРАЦИЯ НА ПЯТЬ ОПЕРАТОРОВ 46 ПЯТЬ АГРЕГАТОВ, ОДИН КРАН 47 НАЧАТЬ ТРЕТИЙ ПРОГОН 48 ОЧИСТКА ДЛЯ ЧЕТВЕРТОГО ПРОГОНА 49 РЕКОНФИГУРАЦИЯ НА ШЕСТЬ ОПЕРАТОРОВ 60 ШЕСТЬ АГРЕГАТОВ, ОДИН КРАН 51 НАЧАТЬ ЧЕТВЕРТЫЙ ПРОГОН 52 ОЧИСТКА ДЛЯ ПЯТОГО ПРОГОНА 53 РЕКОНФИГУРАЦИЯ НА ДЕСЯТЬ ОПЕРАТОРОВ 54 ДЕСЯТЬ АГРЕГАТОВ, ДВА КРАНА 55 НАЧАТЬ ПЯТЫЙ ПРОГОН 56 ОЧИСТКА ДЛЯ ШЕСТОГО ПРОГОНА 57 РЕКОНФИГУРАЦИЯ НА 15 ОПЕРАТОРОВ 58 15 АГРЕГАТОВ, 3 КРАНА 59 НАЧАТЬ ШЕСТОЙ ПРОГОН 60 ВЕРНУТЬ УПРАВЛЕНИЕ В ОПЕРАЦИОННУЮ СИСТЕМУ Ряс 4D.3, О НОМЕР КАРТЫ 12 14 16 18 19 20 21 22 23 24 25 27 29 30 32 34 35 36 37 Зв 39 40 КОММЕНТАРИИ ОПРЕДЕЛЕНИЕ ФУНКЦИЙ ФУНКЦИЯ ЭКСПОНЕНЦИАЛЬНОГО РАСПРЕДЕЛЕНИЯ РАСПРЕДЕЛЕНИЕ СРЕДНЕГО ВРЕМЕНИ ОБСЛУЖИВАНИЯ ОПРЕДЕЛЕНИЕ ЕМКОСТЕЙ МНОГОКАНАЛЬНЫХ УСТРОЙСТВ ОБЕСПЕЧИТЬ ВОСЕМЬ КАССИРОВ 1-Й СЕГМЕНТ МОДЕЛИ ПРИХОД КЛИЕНТОВ УСТАНОВИТЬ Р1, РАВНЫМ ВРЕМЕНИ ОБСЛУЖИВАНИЯ ПРИСОЕДИНИТЬСЯ К ОЧЕРЕДИ ПОЙТИ К СВОБОДНОМУ КАССИРУ ПОКИНУТЬ ОЧЕРЕДЬ ВЫПОЛНЕНИЕ ОПЕРАЦИИ ОСВОБОЖДЕНИЕ КАССИРА ПОКИНУТЬ БАНК 2-Й СЕГМЕНТ МОДЕЛИ ТАЙМЕР ПРИХОДИТ ЧЕРЕЗ 5 Ч ЗАВЕРШИТЬ ПРОГОН УПРАВЛЯЮЩИЕ КАРТЫ НАЧАТЬ ПРОГОН ПЕРВОГО ДНЯ ОЧИСТКА ДЛЯ ВТОРОГО ДНЯ НАЧАТЬ ПРОГОН ВТОРОГО ДНЯ ОЧИСТКА ДЛЯ ТРЕТЬЕГО ДНЯ НАЧАТЬ ПРОГОН ДЛЯ ТРЕТЬЕГО ДНЯ ОЧИСТКА ДЛЯ ЧЕТВЕРТОГО ДНЯ НАЧАТЬ ПРОГОН ДЛЯ ЧЕТВЕРТОГО ДНЯ НОМЕР КАРТЫ 41 42 43 Рис 4D.3, НОМЕР КАРТЫ КОММЕНТАРИИ ОЧИСТКА ДЛЯ ПЯТОГО ДНЯ НАЧАТЬ ПРОГОН ДЛЯ ПЯТОГО ДНЯ ВЕРНУТЬ УПРАВЛЕНИЕ В ОПЕРАЦИОННУЮ СИСТЕМУ б КОММЕНТАРИИ 12 14 15 16 18 19 20 21 22 23 24 25 26 27 28 30 32 33 35 37 38 39 40 41 42 43 44 45 46 ОПРЕДЕЛЕНИЕ ФУНКЦИЙ ФУНКЦИЯ ЭКСПОНЕНЦИАЛЬНОГО РАСПРЕДЕЛЕНИЯ РАСПРЕДЕЛЕНИЕ СРЕДНЕГО ВРЕМЕНИ ОБСЛУЖИВАНИЯ 1-Й СЕГМЕНТ МОДЕЛИ ПРИХОД КЛИЕНТОВ УСТАНОВИТЬ Р1 РАВНЫМ ВРЕМЕНИ ОБСЛУЖИВАНИЯ УСТАНОВЛЕНИЕ БОЛЕЕ ВЫСОКОГО ПРИОРИТЕТА ДЛЯ ПОСЛЕДУЮЩЕГО СОБЫТИЯ ЗАВЕРШЕНИЯ ОБСЛУЖИВАНИЯ СВОБОДЕН ЛИ КАССИР? КОРРЕКТИРОВАНИЕ ДАННЫХ РАЗДЕЛЬНЫХ ОЧЕРЕДЕЙ КОРРЕКТИРОВАНИЕ ДАННЫХ АГРЕГИРОВАННОЙ ОЧЕРЕДИ ЗАНЯТЬ КАССИРА КОРРЕКТИРОВАНИЕ ДАННЫХ АГРЕГИРОВАННОЙ ОЧЕРЕДИ КОРРЕКТИРОВАНИЕ ДАННЫХ РАЗДЕЛЬНЫХ ОЧЕРЕДЕЙ ВЫПОЛНЕНИЕ ОПЕРАЦИИ ОСВОБОЖДЕНИЕ КАССИРА ПОКИНУТЬ БАНК УСТАНОВИТЬ Р2 РАВНЫМ НОМЕРУ КРАТЧАЙШЕЙ ОЧЕРЕДИ НАПРАВИТЬСЯ В ОЧЕРЕДЬ 2-Й СЕГМЕНТ МОДЕЛИ ТАЙМЕР ПРИХОДИТ ЧЕРЕЗ 5 Ч ЗАВЕРШИТЬ ПРОГОН УПРАВЛЯЮЩИЕ КАРТЫ НАЧАТЬ ПРОГОН ПЕРВОГО ДНЯ ОЧИСТКА ДЛЯ ВТОРОГО ДНЯ НАЧАТЬ ПРОГОН ВТОРОГО ДНЯ ОЧИСТКА ДЛЯ ТРЕТЬЕГО ДНЯ НАЧАТЬ ПРОГОН ДЛЯ ТРЕТЬЕГО ДНЯ ОЧИСТКА ДЛЯ ЧЕТВЕРТОГО ДНЯ НАЧАТЬ ПРОГОН ДЛЯ ЧЕТВЕРТОГО ДНЯ ОЧИСТКА ДЛЯ ПЯТОГО ДНЯ НАЧАТЬ ПРОГОН ДЛЯ ПЯТОГО ДНЯ ВЕРНУТЬ УПРАВЛЕНИЕ.В ОПЕРАЦИОННУЮ СИСТЕМУ 501
Рис 4.32 Продолжение КОММЕНТАРИИ ОПРЕДЕЛЕНИЕ ФУНКЦИЙ РАСПРЕДЕЛЕНИЕ ЧИСЛА ПОКУПОК У ПРИЛАВКА 1 РАСПРЕДЕЛЕНИЕ ЧИСЛА ПОКУПОК У ПРИЛАВКА 2 РАСПРЕДЕЛЕНИЕ ЧИСЛА ПОКУПОК У ПРИЛАВКА 3 РАСПРЕДЕЛЕНИЕ ВРЕМЕНИ ОБСЛУЖИВАНИЯ У КАССЫ РАСПРЕДЕЛЕНИЕ ЧИСЛА ДОПОЛНИТЕЛЬНЫХ ПОКУПОК ФУНКЦИЯ ЭКСПОНЕНЦИАЛЬНОГО РАСПРЕДЕЛЕНИЯ ОПРЕДЕЛЕНИЕ ТАБЛИЦЫ ТАБЛИЦА РАСПРЕДЕЛЕНИЯ ВРЕМЕНИ ПРЕБЫВАНИЯ В МАГАЗИНЕ 1-Й СЕГМЕНТ МОДЕЛИ ПРИХОД ПОКУПАТЕЛЕЙ ВЗЯТЬ КОРЗИНКУ БУДУТ ЛИ ПОКУПАТЕЛИ У ПРИЛАВКА 1? ПРОВЕСТИ ВРЕМЯ У ПРИЛАВКА I УСТАНОВИТЬ PI РАВНЫМ ЧИСЛУ ПОКУПОК У ПРИЛАВКА 1 БУДУТ ЛИ ПОКУПКИ У ПРИЛАВКА 2? ПРОВЕСТИ ВРЕМЯ У ПРИЛАВКА 2 УСТАНОВИТЬ PI РАВНЫМ СУММЕ ЧИСЛА ПОКУПОК БУДУТ ЛИ ПОКУПКИ У ПРИЛАВКА 3? ПРОВЕСТИ ВРЕМЯ У ПРИЛАВКА 3 УСТАНОВИТЬ PI РАВНЫМ СУММЕ ЧИСЛА ПОКУПОК ОЧЕРЕДЬ К КАССЕ ДОБАВИТЬ К PI ЧИСЛО ДОПОЛНИТЕЛЬНЫХ ПОКУПОК ЗАНЯТЬ КАССИРА ПОКИНУТЬ ОЧЕРЕДЬ К КАССЕ ИНТЕРВАЛ ВРЕМЕНИ ПРОВЕРКИ ОСВОБОДИТЬ КАССИРА ВЕРНУТЬ КОРЗИНКУ ПОМЕСТИТЬ ЗНАЧЕНИЕ РЕЗИДЕНТНОГО ВРЕМЕНИ В ТАБЛИЦУ ПОКИНУТЬ МАГАЗИН 2-Й СЕГМЕНТ МОДЕЛИ ТАЙМЕР ПРИХОДИТ В КОНЦЕ ВОСЬМИЧАСОВОГО ДНЯ ЗАВЕРШИТЬ ПРОГОН УПРАВЛЯЮЩИЕ КАРТЫ НАЧАТЬ ПРОГОН ВЕРНУТЬ УПРАВЛЕНИЕ В ОПЕРАЦИОННУЮ СИСТЕМУ КОММЕНТАРИИ ОПРЕДЕЛЕНИЕ ФУНКЦИЙ ФУНКЦИЯ ЭКСПОНЕНЦИАЛЬНОГО РАСПРЕДЕЛЕНИЯ РАСПРЕДЕЛЕНИЕ СРЕДНЕГО ВРЕМЕНИ ОБСЛУЖИВАНИЯ ОПРЕДЕЛЕНИЕ ЕМКОСТЕЙ МНОГОКАНАЛЬНЫХ УСТРОЙСТВ НОМЕР КАРТЫ 14 16 18 20 22 23 24 25 26 27 28 29 31 33 34 36 38 39 КОММЕНТАРИИ ОБЕСПЕЧИТЬ ВОСЕМЬ КАССИРОВ ОПРЕДЕЛЕНИЕ ТАБЛИЦЫ РЕЗИДЕНТНОЕ ВРЕМЯ ДЛЯ ОЧЕРЕДИ 1-Й СЕГМЕНТ МОДЕЛИ ПРИХОД КЛИЕНТОВ УСТАНОВИТЬ PI РАВНЫМ ВРЕМЕНИ ОБСЛУЖИВАНИЯ ПРИСОЕДИНИТЬСЯ К ОЧЕРЕДИ ПОЙТИ К СВОБОДНОМУ КАССИРУ ПОКИНУТЬ ОЧЕРЕДЬ ВЫПОЛНЕНИЕ ОПЕРАЦИИ ОСВОБОДИТЬ КАССИРА ПОКИНУТЬ БАНК 2-Й СЕГМЕНТ МОДЕЛИ ТАЙМЕР ПРИХОДИТ ЧЕРЕЗ 5 Ч ЗАВЕРШИТЬ ПРОГОН УПРАВЛЯЮЩИЕ КАРТЫ НАЧАТЬ ПРОГОН ДЛЯ ПЕРВОГО ДНЯ ВЕРНУТЬ УПРАВЛЕНИЕ В ОПЕРАЦИОННУЮ СИСТЕМУ ГЛАВА 5 Рис 5А.2 НОМЕР КАРТЫ 7 9 10 12 14 15 16 17 18 19 21 23 24 25 27 29 30 31 32 33 34 35 36 КОММЕНТАРИИ ЗАДАНИЕ НАЧАЛЬНЫХ ЗНАЧЕНИЙ СОХРАНЯЕМЫМ ВЕЛИЧИНАМ ЧЕТЫРЕ СБОРЩИКА; ТАЙМЕР НА 40-М ЧАСУ ОПРЕДЕЛЕНИЯ ПЕРЕМЕННЫХ МОДЕЛЬНОЕ ВРЕМЯ В ДНЯХ СРЕДНЯЯ ДНЕВНАЯ ПРИБЫЛЬ 1-Й СЕГМЕНТ МОДЕЛИ ОПРЕДЕЛЕНИЕ СБОРЩИКОВ СБОРКА СЛЕДУЮЩЕЙ ДЕТАЛИ ЗАНЯТИЕ ПЕЧИ ИСПОЛЬЗОВАНИЕ ПЕЧИ ОСВОБОЖДЕНИЕ ПЕЧИ ПЕРЕЙТИ К СЛЕДУЮЩЕЙ СБОРКЕ 2-Й СЕГМЕНТ МОДЕЛИ ПРИХОД ТАЙМЕРА ПОЛОЖИТЬ X$1NDEX РАВНЫМ СРЕДНЕЙ ДНЕВНОЙ ВЫРУЧКЕ ЗАКОНЧИТЬ ПРОГОН УПРАВЛЯЮЩИЕ КАРТЫ И ПЕРЕОПРЕДЕЛЕНИЕ СОХРАНЯЕМЫХ ВЕЛИЧИН НАЧАТЬ ПЕРВЫЙ ПРОГОН (ЧЕТЫРЕ СБОРЩИКА) ПЕРЕОПРЕДЕЛИТЬ ДЛЯ ВТОРОГО ПРОГОНА ИЗБИРАТЕЛЬНАЯ ОЧИСТКА ДЛЯ ВТО- ТОГО ПРОГОНА НАЧАТЬ ВТОРОЙ ПРОГОН (ПЯТЬ СБОРЩИКОВ) ПЕРЕОПРЕДЕЛИТЬ ДЛЯ ТРЕТЬЕГО ПРОГОНА ИЗБИРАТЕЛЬНАЯ ОЧИСТКА ДЛЯ ТРЕТЬЕГО ПРОГОНА НАЧАТЬ ТРЕТИЙ ПРОГОН ВЕРНУТЬ УПРАВЛЕНИЕ ОПЕРАЦИОННОЙ СИСТЕМЕ 502
Рис 5В.2 Ряс 5.22 КОММЕНТАРИИ НОМЕР IКАРТЫ КОММЕНТАРИИ НЕСТАНДАРТНАЯ ИНИЦИАЛИЗАЦИЯ ДАТЧИКОВ СЛУЧАЙНЫХ ЧИСЕЛ ОПРЕДЕЛЕНИЕ ФУНКЦИЙ РАСПРЕДЕЛЕНИЕ ПРИВЕДЕННОГО ВРЕМЕНИ ОЖИДАНИЯ ПОПОЛНЕНИЯ ФУНКЦИЯ НОРМИРОВАННОГО НОРМАЛЬНОГО РАСПРЕДЕЛЕНИЯ НАЧАЛЬНЫЕ ЗНАЧЕНИЯ СОХРАНЯЕМЫХ ВЕЛИЧИН ТОЧКА ВОССТАНОВЛЕНИЯ. РАВНАЯ 80 ДЛЯ ПЕРВОГО ПРОГОНА ЧИСЛО ВОССТАНОВЛЕНИЙ РАВНО 100 ДЛЯ ПЕРВОГО ПРОГОНА НАЧАЛЬНЫЙ НАЛИЧНЫЙ ЗАПАС РАВЕН 100 ЕДИНИЦАМ ОПРЕДЕЛЕНИЕ ТАБЛИЦ ТАБЛИЦА ДНЕВНЫХ ПОТЕРЬ ПОКУПОК ТАБЛИЦА ДНЕВНОГО УРОВНЯ ЗАПАСА ОПРЕДЕЛЕНИЯ ПЕРЕМЕННЫХ РАСПРЕДЕЛЕНИЕ ДНЕВНОГО ЗАПРОСА ДНЕВНЫЕ ПОТЕРИ ПОКУПОК 1-Й СЕГМЕНТ МОДЕЛИ ЕЖЕДНЕВНЫЙ ПРИХОД СЛУЖАЩЕГО НАЗНАЧИТЬ Р1 РАВНЫМ ДНЕВНОМУ ЗАПРОСУ МОЖНО ЛИ УДОВЛЕТВОРИТЬ ДНЕВНОЙ ЗАПРОС? ДА: УМЕНЬШИТЬ ЗАПАС НА ВЕЛИЧИНУ ДНЕВНОГО ЗАПРОСА ЗАПИСАТЬ УРОВЕНЬ ЗАПАСА НА КОНЕЦ ДНЯ ЗАПИСАТЬ ДНЕВНУЮ ПОТЕРЮ (ЕСЛИ ОНА ЕСТЬ) СЛУЖАЩИЙ УХОДИТ ДОМОЙ НЕТ: ПОЛОЖИТЬ Р2 РАВНЫМ ДНЕВНОЙ ПОТЕРЕ ВСЕ РАСПРОДАНО; ПОЛОЖИТЬ ЗАПАС РАВНЫМ НУЛЮ ПОЙТИ НА ЗАПИСЬ РЕЗУЛЬТАТА ДНЯ 2-Й СЕГМЕНТ МОДЕЛИ ВОЙТИ В СЕГМЕНТ ИНВЕНТАРИЗАЦИИ ПОРА ЛИ ПОДАВАТЬ ЗАЯВКУ НА ПОПОЛНЕНИЕ? ЗАЯВКА НАХОДИТСЯ В ПУТИ ПРИБЫТИЕ ЗАЯВКИ; УВЕЛИЧИТЬ ЗАПАС НА ROQ ПОЙТИ ОБРАТНО И НАБЛЮДАТЬ УПРАВЛЯЮЩИЕ КАРТЫ И ПЕРЕОПРЕДЕЛЕНИЕ СОХРАНЯЕМЫХ ВЕЛИЧИН НАЧАТЬ ПЕРВЫЙ ПРОГОН (ROP-80) ВОССТАНОВИТЬ ДАТЧИКИ СЛУЧАЙНЫХ ЧИСЕЛ ИЗБИРАТЕЛЬНАЯ ОЧИСТКА ДЛЯ ВТОРОГО ПРОГОНА ПЕРЕОПРЕДЕЛИТЬ; УСТАНОВИТЬ НАЧАЛЬНЫЙ ЗАПАС НАЧАТЬ ВТОРОЙ ПРОГОН (ROP-90) ВОССТАНОВИТЬ ДАТЧИКИ СЛУЧАЙНЫХ ЧИСЕЛ ИЗБИРАТЕЛЬНАЯ ОЧИСТКА ДЛЯ ТРЕТЬЕГО ПРОГОНА ПЕРЕОПРЕДЕЛИТЬ; УСТАНОВИТЬ НАЧАЛЬНЫЙ ЗАПАС НАЧАТЬ ТРЕТИЙ ПРОГОН (ROP-100) ПЕРЕДАТЬ УПРАВЛЕНИЕ ОПЕРАЦИОННОЙ СИСТЕМЕ 12 14 16 18 20 22 23 24 25 26 27 28 29 31 33 34 35 36 37—38 39 41 43 44 46 48 49 Рис 5С.2 НОМЕР КМ>ТЫ 7 9 14 16 22 28 ОПРЕДЕЛЕНИЕ ФУНКЦИЙ ФУНКЦИЯ ЭКСПОНЕНЦИАЛЬНОГО РАСПРЕДЕЛЕНИЯ РАСПРЕДЕЛЕНИЕ СРЕДНЕГО ВРЕМЕНИ ОБСЛУЖИВАНИЯ ОПРЕДЕЛЕНИЕ ЕМКОСТЕЙ МНОГОКАНАЛЬНЫХ УСТРОЙСТВ ОБЕСПЕЧИТЬ ВОСЕМЬ КАССИРОВ ОПРЕДЕЛЕНИЕ ТАБЛИЦ ВЗВЕШЕННАЯ ТАБЛИЦА ДЛЯ ДЛИНЫ ОЧЕРЕДИ 1-Й СЕГМЕНТ МОДЕЛИ ПРИХОД КЛИЕНТОВ УСТАНОВИТЬ Р1 РАВНЫМ ВРЕМЕНИ ОБСЛУЖИВАНИЯ ПРИСОЕДИНИТЬСЯ К ОЧЕРЕДИ ПОЙТИ К СВОБОДНОМУ КАССИРУ ПОКИНУТЬ ОЧЕРЕДЬ ВЫПОЛНЕНИЕ ОПЕРАЦИИ ОСВОБОДИТЬ КАССИРА ПОКИНУТЬ БАНК 2-Й СЕГМЕНТ МОДЕЛИ ВОЙТИ В СЕГМЕНТ НАБЛЮДЕНИЯ ЗА ДЛИНОЙ УСТАНОВИТЬ Р1 РАВНЫМ АБСОЛЮТНОМУ ВРЕМЕНИ УСТАНОВИТЬ Р2 РАВНЫМ ТЕКУЩЕЙ ДЛИНЕ ОЧЕРЕДИ ЖДАТЬ ИЗМЕНЕНИЯ ВРЕМЕНИ ЗАПИСАТЬ ДЛИНУ. НАБЛЮДАВШУЮСЯ В ПРЕДЫДУЩИЙ МОМЕНТ ВРЕМЕНИ, ВЗВЕШЕННУЮ ВРЕМЕННЫМ ПРИРАЩЕНИЕМ ПОЙТИ НА СЛЕДУЮЩЕЕ НАБЛЮДЕНИЕ 3-Й СЕГМЕНТ МОДЕЛИ ТАЙМЕР ПРИХОДИТ ЧЕРЕЗ 5 Ч ЗАВЕРШИТЬ ПРОГОН УПРАВЛЯЮЩИЕ КАРТЫ НАЧАТЬ ПРОГОН ДЛЯ ПЕРВОГО ДНЯ ВОЗВРАТИТЬ УПРАВЛЕНИЕ ОПЕРАЦИОННОЙ СИСТЕМЕ КОММЕНТАРИИ ОПРЕДЕЛЕНИЕ ФУНКЦИЙ ЧИСЛО ГРУПП МЕХАНИЗМОВ, ЧЕРЕЗ КОТОРЫЕ ПРОХОДИТ КАЖДЫЙ ТИП РАБОТЫ РАСПРЕДЕЛЕНИЕ ТИПОВ РАБОТ ЭКСПОНЕНЦИАЛЬНАЯ ФУНКЦИЯ РАСПРЕДЕЛЕНИЯ ОПРЕДЕЛЕНИЕ И ЗАДАНИЕ НАЧАЛЬНЫХ ЗНАЧЕНИЙ МАТРИЧНЫХ СОХРАНЯЕМЫХ ВЕЛИЧИН МАТРИЦА ПОСЛЕДОВАТЕЛЬНОСТИ ПРОХОЖДЕНИЯ МАТРИЦА СРЕДНИХ ВРЕМЕН ОБРАБОТКИ ОПРЕДЕЛЕНИЕ ЕМКОСТИ МНОГОКАНАЛЬНЫХ УСТРОЙСТВ 503
Продолжение Продолжение Комментарии номер КАРТЫ ЦЕХ ТИПУ РА- ОБЕСПЕЧЕНИЕ 14, 5 И 3 МЕХАНИЗМОВ СООТВЕТСТВЕННО В ГРУППАХ 1, 2 И 3 ОБЕСПЕЧЕНИЕ 8, 16 И 4 МЕХАНИЗМОВ СООТВЕТСТВЕННО В ГРУППАХ 4, 5 И 6 ОПРЕДЕЛЕНИЕ ТАБЛИЦ ВРЕМЯ ПРЕБЫВАНИЯ В ЦЕХЕ (ПЕРВЫЙ ТИП РАБОТ) ВРЕМЯ ПРЕБЫВАНИЯ В ЦЕХЕ (ВТОРОЙ ТИП РАБОТ) ВРЕМЯ ПРЕБЫВАНИЯ В ЦЕХЕ (ТРЕТИЙ ТИП РАБОТ) ОБЩЕЕ ЧИСЛО РАБОТ В ЦЕХЕ ОПРЕДЕЛЕНИЕ ПЕРЕМЕННЫХ ОБЩЕЕ ЧИСЛО РАБОТ В ЦЕХЕ 1-Й СЕГМЕНТ МОДЕЛИ ПОСТУПЛЕНИЕ РАБОТ В ПОЛОЖИТЬ Р1 РАВНЫМ БОТЫ ПОЛОЖИТЬ Р2 РАВНЫМ ЧИСЛУ ПРОХОДИМЫХ ГРУПП ЗАНЯТЬ МЕХАНИЗМ СЛЕДУЮЩЕЙ ГРУППЫ ПРОЦЕСС ОБРАБОТКИ ОСВОБОДИТЬ МЕХАНИЗМ ОПРЕДЕЛИТЬ ЧИСЛО ГРУПП, КОТОРОЕ ЕЩЕ НЕОБХОДИМО ПРОЙТИ » < РАБОТА ЗАКОНЧЕНА? ЕСЛИ НЕТ, ПЕРЕЙТИ К СЛЕДУЮЩЕЙ ГРУППЕ ДА: ЗАПИСАТЬ ВРЕМЯ. ПРОВЕДЕННОЕ В ЦЕХЕ ПОКИНУТЬ ЦЕХ 2-Й СЕГМЕНТ МОДЕЛИ ПОСТУПЛЕНИЕ ТАЙМЕРА В КОНЦЕ КАЖДОГО ДНЯ ЗАПИСАТЬ ЧИСЛО РАБОТ. НАХОДЯЩИХСЯ В ЦЕХЕ УМЕНЬШИТЬ СЧЕТЧИК ЧИСЛА ЗАВЕРШЕНИЙ УПРАВЛЯЮЩИЕ КАРТЫ НАЧАТЬ ПРОГОН ДЛЯ ПЕРВОЙ НЕ. ДЕЛИ ОБНУЛИТЬ НАБРАННУЮ СТАТИСТИКУ НАЧАТЬ ПРОГОН ДЛЯ ВТОРОЙ НЕ> ДЕЛИ ОБНУЛИТЬ НАБРАННУЮ СТАТИСТИКУ НАЧАТЬ ПРОГОН ДЛЯ ТРЕТЬЕЙ НЕДЕЛИ ОБНУЛИТЬ НАБРАННУЮ СТАТИСТИКУ НАЧАТЬ ПРОГОН ДЛЯ ЧЕТВЕРТОЙ НЕДЕЛИ ОБНУЛИТЬ НАБРАННУЮ СТАТИСТИКУ НАЧАТЬ ПРОГОН ДЛЯ ПЯТОЙ НЕДЕЛИ ВЕРНУТЬ УПРАВЛЕНИЕ ОПЕРАЦИОННОЙ СИСТЕМЕ КОММЕНТАРИЯ НЕСТАНДАРТНОЕ ЗАДАНИЕ ДАТЧИКА СЛУЧАЙНЫХ ЧИСЕЛ УСТАНОВКА ДАТЧИКА СЛУЧАЙНЫХ ЧИСЕЛ ДЛЯ ПЕРВОГО ПРОГОНА ОПРЕДЕЛЕНИЕ ФУНКЦИЙ И 14 16 18 20 22 24 25 26 27 28 29 30 31 32 34 35 36 38 40 41 42 43 44 46 48 49 50 51 52 53 54 55 56 57 58 59 GO 61 62 63 64 77 78 79 КОММЕНТАРИИ РАСПРЕДЕЛЕНИЕ ИНТЕРВАЛОВ МЕЖДУ ПРИБЫТИЯМИ РАСПРЕДЕЛЕНИЕ ВРЕМЕНИ ОБСЛУЖИВАНИЯ ОПРЕДЕЛЕНИЕ ЕМКОСТИ МНОГОКАНАЛЬНЫХ УСТРОЙСТВ СЛУЧАЙ ОДНОГО СЛУЖАЩЕГО ОПРЕДЕЛЕНИЕ ПЕРЕМЕННЫХ ДНЕВНОЙ ДОХОД С УЧЕТОМ РАСХОДОВ 1-Й СЕГМЕНТ МОДЕЛИ МАШИНЫ ПРИБЫВАЮТ НА СТАНЦИЮ СТАНЦИЯ ОТКРЫТА? ПРИНЯТЬ PI РАВНЫМ ВРЕМЕНИ ОБСЛУЖИВАНИЯ ЧИСЛО ОЖИДАЮЩИХ МЕНЬШЕ ИЛИ РАВНО ЧИСЛУ ОБСЛУЖИВАЕМЫХ ЕСЛИ НЕТ, ПЕРЕЙТИ К BYBYE ДА: ПРИСОЕДИНИТЬСЯ К ОЧЕРЕДИ ЗАНЯТЬ СЛУЖАЩЕГО ВЫЙТИ ИЗ ОЧЕРЕДИ УВЕЛИЧИТЬ ПРИОРИТЕТ ИДЕТ ОБСЛУЖИВАНИЕ ОСВОБОДИТЬ СЛУЖАЩЕГО ПОКИНУТЬ СТАНЦИЮ 2-Й СЕГМЕНТ МОДЕЛИ ВЛАДЕЛЕЦ ПРИХОДИТ В МОМЕНТ ЗАКРЫТИЯ УСТАНОВИТЬ ЗНАК «ЗАКРЫТО» ПОДОЖДАТЬ КОНЦА ОБСЛУЖИВАНИЯ ПОСЛЕДНЕЙ МАШИНЫ ЗАПИСАТЬ ДНЕВНУЮ ПРИБЫЛЬ УЙТИ ДОМОЙ УПРАВЛЯЮЩИЕ КАРТЫ И ПЕРЕОПРЕДЕЛЕНИЕ ЕМКОСТИ МНОГОКАНАЛЬНОГО УСТРОЙСТВА НАЧАТЬ ПЕРВЫЙ ПРОГОН УСТАНОВИТЬ ДАТЧИК СЛУЧАЙНЫХ ЧИСЕЛ ДЛЯ ВТОРОГО ПРОГОНА ОЧИСТИТЬ ДЛЯ ВТОРОГО ПРОГОНА НАЧАТЬ ВТОРОЙ ПРОГОН (ДЕНЬ ВТОРОЙ; ОДИН СЛУЖАЩИЙ) УСТАНОВИТЬ ДАТЧИК СЛУЧАЙНЫХ ЧИСЕЛ ДЛЯ ТРЕТЬЕГО ПРОГОНА ОЧИСТИТЬ ДЛЯ ТРЕТЬЕГО ПРОГОНА НАЧАТЬ ТРЕТИЙ ПРОГОН (ДЕНЬ ТРЕТИЙ; ОДИН СЛУЖАЩИЙ) УСТАНОВИТЬ ДАТЧИК СЛУЧАЙНЫХ ЧИСЕЛ ДЛЯ ЧЕТВЕРТОГО ПРОГОНА ОЧИСТИТЬ ДЛЯ ЧЕТВЕРТОГО ПРОГОНА НАЧАТЬ ЧЕТВЕРТЫЙ ПРОГОН (ДЕНЬ ЧЕТВЕРТЫЙ; ОДИН СЛУЖАЩИЙ) УСТАНОВИТЬ ДАТЧИК СЛУЧАЙНЫХ ЧИСЕЛ ДЛЯ ПЯТОГО ПРОГОНА ОЧИСТИТЬ ДЛЯ ПЯТОГО ПРОГОНА НАЧАТЬ ПЯТЫЙ ПРОГОН (ДЕНЬ ПЯТЫЙ; ОДИН СЛУЖАЩИЙ) УСТАНОВИТЬ ДАТЧИК СЛУЧАЙНЫХ ЧИСЕЛ ДЛЯ ШЕСТОГО ПРОГОНА ОЧИСТИТЬ ДЛЯ ШЕСТОГО ПРОГОНА ОПРЕДЕЛИТЬ ДВУХ СЛУЖАЩИХ НАЧАТЬ ШЕСТОЙ ПРОГОН (ДЕНЬ ПЕРВЫЙ; ДВОЕ СЛУЖАЩИХ) УСТАНОВИТЬ ДАТЧИК СЛУЧАЙНЫХ ЧИСЕЛ ДЛЯ П-ГО ПРОГОНА очистить для п-го прогона ОПРЕДЕЛИТЬ ТРЕХ СЛУЖАЩИХ 504
Продолжение Продолжение КОММЕНТАРИИ НАЧАТЬ 11-Й ПРОГОН (ДЕНЬ ПЕРВЫЙ; ТРОЕ СЛУЖАЩИХ) УСТАНОВИТЬ ДАТЧИК СЛУЧАЙНЫХ ЧИСЕЛ ДЛЯ 15-ГО ПРОГОНА ОЧИСТИТЬ ДЛЯ 15-ГО ПРОГОНА НАЧАТЬ 15-Й ПРОГОН (ДЕНЬ ПЯТЫЙ; ТРОЕ СЛУЖАЩИХ) ВЕРНУТЬ УПРАВЛЕНИЕ ОПЕРАЦИОННОЙ СИСТЕМЕ НОМЕР КАРТЫ 47—48 49 50 51 52 54 56 57 КОММЕНТАРИИ УБЕДИТЬСЯ. ЧТО ПОСЛЕДНИЙ ПАССАЖИР СОВЕРШИЛ ПОСАДКУ ЗАПИСАТЬ ЧИСЛО НЕОБСЛУЖЕННЫХ ОБНУЛИТЬ СЧЕТЧИК НЕОБСЛУЖЕННЫХ ЗАКРЫТЬ BUS АВТОБУС УЕЗЖАЕТ УПРАВЛЯЮЩИЕ КАРТЫ НАЧАТЬ ПРОГОН ВЕРНУТЬ УПРАВЛЕНИЕ ОПЕРАЦИОННОЙ СИСТЕМЕ КОММЕНТАРИИ ОПРЕДЕЛЕНИЕ ФУНКЦИЙ ЭКСПОНЕНЦИАЛЬНАЯ ФУНКЦИЯ РАСПРЕДЕЛЕНИЯ РАСПРЕДЕЛЕНИЕ ЧИСЛА ПАССАЖИРОВ В АВТОБУСЕ РАСПРЕДЕЛЕНИЕ ЧИСЛА ВЫХОДЯЩИХ ИЗ АВТОБУСА ОПРЕДЕЛЕНИЕ ТАБЛИЦ ВРЕМЯ. ПРОВЕДЕННОЕ В ОЖИДАНИИ АВТОБУСА ЛЮДИ. НЕ ОБСЛУЖЕННЫЕ АВТОБУСОМ 1-Й СЕГМЕНТ МОДЕЛИ ПРИХОД ЛЮДЕЙ НА АВТОБУСНУЮ ОСТАНОВКУ СТАТЬ В ОЧЕРЕДЬ ПОДОЖДАТЬ ОТКРЫТИЯ BUS ВЫЙТИ ИЗ ОЧЕРЕДИ ЕСТЬ ЛИ В АВТОБУСЕ МЕСТО? ЕСЛИ НЕТ. ПЕРЕЙТИ К MAD ДА: ЗАКРЫТЬ BUS ПЕРЕД СЛЕДУЮЩИМ ПАССАЖИРОМ НА НЕКОТОРОЕ ВРЕМЯ ВОЙТИ В АВТОБУС ПОДСЧИТАТЬ ЧИСЛО ЛЮДЕЙ В АВТОБУСЕ ОТКРЫТЬ BUS ДЛЯ СЛЕДУЮЩЕГО ЧЕЛОВЕКА РАССМАТРИВАЕМЫЙ ПАССАЖИР СЕЛ В АВТОБУС МОДИФИЦИРОВАТЬ СЧЕТЧИК ОТКАЗОВ НЕОБСЛУЖЕННЫЙ ЧЕЛОВЕК УХОДИТ 2-Й СЕГМЕНТ МОДЕЛИ ПРИБЫТИЕ АВТОБУСА КАЖДЫЕ 30 МИН ЗАДЕРЖКА ОЗНАЧАЕТ ОПОЗДАНИЕ АВТОБУСА УСТАНОВИТЬ X$NOWON РАВНЫМ ЧИСЛУ ПАССАЖИРОВ В АВТОБУСЕ УСТАНОВИТЬ Р1 РАВНЫМ ЧИСЛУ ЖЕЛАЮЩИХ ВОЙТИ ВЫХОДИТ СЛЕДУЮЩИЙ ПАССАЖИР ПОДСЧИТАТЬ ЧИСЛО ПАССАЖИРОВ В АВТОБУСЕ ВЫПУСТИТЬ СЛЕДУЮЩЕГО ПАССАЖИРА (ЕСЛИ ЕСТЬ) ИНАЧЕ ОТКРЫТЬ АВТОБУС ЖДЕТ. ПОКА ОЧЕРЕДЬ ОПУСТЕЕТ ГЛАВА 6 Рис 6А.2 НОМЕР КАРТЫ 3 5 7 9 11 16 18 20 22 23 24 25 27 29 30 33 35 36 37 38 39 40 42 44 45 46 47 КОММЕНТАРИИ ОПРЕДЕЛЕНИЕ ФУНКЦИЙ СРЕДНЕЕ ВРЕМЯ ОБСЛУЖИВАНИЯ ТАНКЕРА ТИПА Р1 ПОЛОВИНА РАЗМАХА ВРЕМЕНИ ОБСЛУЖИВАНИЯ ТАНКЕРА ТИПА Р1 РАСПРЕДЕЛЕНИЕ ТИПОВ ДРУГИХ ТАНКЕРОВ ЭКСПОНЕНЦИАЛЬНАЯ ФУНКЦИЯ РАСПРЕДЕЛЕНИЯ ОПРЕДЕЛЕНИЕ ЕМКОСТИ МНОГОКАНАЛЬНЫХ УСТРОЙСТВ ОБЕСПЕЧЕНИЕ ТРЕХ СТОЯНОК ОПРЕДЕЛЕНИЕ ТАБЛИЦ ВРЕМЯ ПРЕБЫВАНИЯ В ПОРТУ, ТАНКЕР ТИПА 1 ВРЕМЯ ПРЕБЫВАНИЯ В ПОРТУ, ТАНКЕР ТИПА 2 ВРЕМЯ ПРЕБЫВАНИЯ В ПОРТУ, ТАНКЕР ТИПА 3 ВРЕМЯ ПРЕБЫВАНИЯ В ПОРТУ, ДОПОЛНИТЕЛЬНЫЕ ТАНКЕРЫ ОПРЕДЕЛЕНИЕ ПЕРЕМЕННЫХ УСЛОВИЯ ПОДХОДА К СТОЯНКЕ УСЛОВИЯ ОТХОДА ОТ СТОЯНКИ 1-Й СЕГМЕНТ МОДЕЛИ (СЕГМЕНТ СОЗДАНИЯ ШТОРМА) ВОЙТИ В СЕГМЕНТ ШТОРМА НАДВИГАЕТСЯ ШТОРМ ШТОРМ НАЧАЛСЯ; УСТАНОВИТЬ СИГНАЛ ШТОРМА ШТОРМ ПРОДОЛЖАЕТСЯ ШТОРМ ЗАКОНЧИЛСЯ; ВКЛЮЧИТЬ СИГНАЛ ШТОРМА ПЕРЕЙТИ К ИМИТАЦИИ НОВОГО ШТОРМА 2-Й СЕГМЕНТ МОДЕЛИ СОЗДАНИЯ ДОПОЛНИТЕЛЬНЫХ ТАНКЕРОВ ВВЕСТИ ДОПОЛНИТЕЛЬНЫЕ ТАНКЕРЫ В МОДЕЛЬ ЗАКОДИРОВАТЬ ДОПОЛНИТЕЛЬНЫЙ ТАНКЕР ВЕЛИЧИНОЙ 4 В Р1 ЗАДЕРЖАТЬ ВРЕМЯ ПЕРВОГО ПРИБЫТИЯ В ПОРТ ПОЛОЖИТЬ РЗ РАВНЫМ ВРЕМЕНИ ПРЕБЫВАНИЯ В ПОРТ 505
Продолжение Продолжение КОММЕНТАРИИ НОМЕР КАРТЫ ВОЙТИ В ГЛАВНЫЙ СЕГМЕНТ МОДЕЛИ 3-Й СЕГМЕНТ МОДЕЛИ (РАБОТА ПОРТА; ВОЗВРАТ ДОПОЛНИТЕЛЬНЫХ ТАНКЕРОВ) ПРИБЫТИЕ В ПОРТ ДРУГИХ ТАНКЕРОВ ПОЛОЖИТЬ Р1 РАВНЫМ КОДУ ТИПА ТАНКЕРА ДОЖДАТЬСЯ ВОЗМОЖНОСТИ ПОДХОДА К СТОЯНКЕ УСТАНОВИТЬ СТАТУС БУКСИРА сЗА- НЯТО» УСТАНОВИТЬ СТАТУС СТОЯНКИ ТАНКЕР ЗАХОДИТ НА СТОЯНКУ БУКСИР БОЛЬШЕ НЕ НУЖЕН ПОЛОЖИТЬ Р2 РАВНЫМ ПОЛОВИНЕ РАЗМАХА ВРЕМЕНИ ОБСЛУЖИВАНИЯ ЗАЛИВКА ТАНКЕРА ДОЖДАТЬСЯ ВОЗМОЖНОСТИ УХОДА СО СТОЯНКИ УСТАНОВИТЬ СТАТУС БУКСИРА «ЗАНЯТО» ТАНКЕР ОТХОДИТ ОТ СТОЯНКИ БУКСИР БОЛЬШЕ НЕ НУЖЕН СТОЯНКА ДОСТУПНА ДРУГИМ ТАНКЕРАМ ЗАПИСАТЬ ВРЕМЯ ПРЕБЫВАНИЯ В ПОРТУ ОТДЕЛИТЬ ДОПОЛНИТЕЛЬНЫЕ ТАНКЕРЫ ДРУГИЕ ТАНКЕРЫ УХОДЯТ ДОПОЛНИТЕЛЬНЫЕ ТАНКЕРЫ ДЕЛАЮТ ПУТЬ ТУДА И ОБРАТНО * ПОЛОЖИТЬ РЗ РАВНЫМ ВРЕМЕНИ ВОЗВРАЩЕНИЯ В ПОРТ ТАНКЕР ВОЗВРАЩАЕТСЯ В ПОРТ 4-Й СЕГМЕНТ МОДЕЛИ (СЕГМЕНТ ТАЙМЕРА) ПРИХОД ТАЙМЕРА ЧЕРЕЗ ГОД ПРЕКРАТИТЬ ПРОГОН УПРАВЛЯЮЩИЕ КАРТЫ НАЧАТЬ ПРОГОН ПЕРЕДАТЬ УПРАВЛЕНИЕ ОПЕРАЦИОННОЙ СИСТЕМЕ КОММЦ МТАРИИ ОПРЕДЕЛЕНИЯ ЭКВИВАЛЕНТНОСТИ SLIP И 10 —ОДИН И ТОТ ЖЕ ЛОГИЧЕСКИЙ ПЕРЕКЛЮЧАТЕЛЬ ОПРЕДЕЛЕНИЕ ФУНКЦИЙ НОРМИРОВАННАЯ НОРМАЛЬНАЯ ФУНКЦИЯ РАСПРЕДЕЛЕНИЯ ЭКСПОНЕНЦИАЛЬНАЯ ФУНКЦИЯ РАСПРЕДЕЛЕНИЯ ОПРЕДЕЛЕНИЕ ЕМКОСТИ МНОГОКАНАЛЬНЫХ УСТРОЙСТВ УСТАНОВИТЬ ЕМКОСТЬ МНОГОКАНАЛЬНОГО УСТРОЙСТВА ДЛЯ ПРОГОНА С ТРЕМЯ БИБЛИОТЕКАРЯМИ ОПРЕДЕЛЕНИЕ ТАБЛИЦ ВРЕМЯ, ПРОВЕДЕННОЕ У СТОЛА ВЫДАЧИ 27 29 34 36 37 38—39 40 41 42 43 44 45—46 47 48 49 51 53 54 56 57 58-59 60 61-62 63 64 65 66 67 68 69 70—71 72—73 74 7Б 77 79 80 81 КОММЕНТАРИИ ЧИСЛО ЗАБИРАЕМЫХ ЛИСТКОВ ОПРЕДЕЛЕНИЕ ПЕРЕМЕННЫХ 1-Й СЕГМЕНТ МОДЕЛИ ПРИХОД ЛЮДЕЙ К СТОЛУ ВЫДАЧИ ПУСТОЙ БЛОК ADVANCE (СМ. ОПИСАНИЕ) ЖДАТЬ, ПОКА БИБЛИОТЕКАРЬ ОТКРОЕТ КЛАПАН SLIP ПОЛОЖИТЬ Р1 РАВНЫМ НОМЕРУ БИБЛИОТЕКАРЯ ПОДСЧИТАТЬ ЧИСЛО ЛИСТКОВ УБИБ- ЛЙОТЕКАРЯ ВЗЯЛ ЛИ БИБЛИОТЕКАРЬ ВСЕ ЛИСТКИ? ЕСЛИ НЕТ, ОБОЙТИ СЛЕДУЮЩИЙ БЛОК ДА: ЗАКРЫТЬ КЛАПАН SLIP ЖДАТЬ ОТКРЫТИЯ БИБЛИОТЕКАРЕМ КЛАПАНА «ОКОНЧАНИЕ ВЫДАЧИ» ЗАКРЫТЬ КЛАПАН «ОКОНЧАНИЕ ВЫДАЧИ» ЗАПИСАТЬ ВРЕМЯ, ПРОВЕДЕННОЕ У СТОЛА ВЫДАЧИ УЙТИ ОТ СТОЛА ВЫДАЧИ 2-Й СЕГМЕНТ МОДЕЛИ ВВЕСТИ ТРЕХ БИБЛИОТЕКАРЕЙ ПОЛОЖИТЬ Р1 РАВНЫМ НОМЕРУ БИБЛИОТЕКАРЯ ЕСТЬ ЛИ ПОСЕТИТЕЛИ С ЛИСТКАМИ? ДА; УСТАНОВИТЬ СТАТУС ЗАНЯТОСТИ ОБНУЛИТЬ СЧЕТЧИК ВЗЯТЫХ ЛИСТКОВ СВЯЗАТЬ НОМЕР БИБЛИОТЕКАРЯ С ТЕМИ, КТО БУДЕТ ОБСЛУЖЕН ОТКРЫТЬ КЛАПАН ВЗЯТИЯ ЛИСТКОВ ВОЗОБНОВИТЬ ПРОСМОТР ДЛЯ ТОГО, ЧТОБЫ ПРОПУСТИТЬ ПОСЕТИТЕЛЕЙ ЧЕРЕЗ ТОЛЬКО ЧТО ОТКРЫТЫЙ КЛАПАН ПОЛОЖИТЬ Р2 РАВНЫМ ЧИСЛУ ВЗЯТЫХ ЛИСТКОВ ЗАПИСАТЬ ЧИСЛО ВЗЯТЫХ ЛИСТКОВ ПОЙТИ В ХРАНИЛИЩЕ НАЙТИ КНИГИ ВЕРНУТЬСЯ ИЗ ХРАНИЛИЩА ЗАВЕРШИТЬ ВЫДАЧУ ДО СЛЕДУЮЩЕГО ПОСЕТИТЕЛЯ ОТКРЫТЬ КЛАПАН «ОКОНЧАНИЕ ВЫДАЧИ» ВОЗОБНОВИТЬ ПРОСМОТР ДЛЯ ТОГО, ЧТОБЫ ПРОПУСТИТЬ ЭТОГО ПОСЕТИТЕЛЯ ЧЕРЕЗ ОТКРЫВШИЙСЯ КЛАПАН ВЕРНУТЬСЯ ДЛЯ ЗАВЕРШЕНИЯ ВЫДАЧИ СЛЕДУЮЩЕМУ ПОСЕТИТЕЛЮ (ЕСЛИ ОН ЕСТЬ) БИБЛИОТЕКАРЬ ОСВОБОЖДАЕТСЯ ПОЙТИ НА НАЧАЛО СЛЕДУЮЩЕГО ЦИКЛА ОБСЛУЖИВАНИЯ УПРАВЛЯЮЩИЕ КАРТЫ, ПЕРЕОПРЕДЕЛЕНИЕ ОПЕРАНДОВ И ЕМКОСТЕЙ МНОГОКАНАЛЬНЫХ УСТРОЙСТВ НАЧАТЬ ПРОГОН ДЛЯ ТРЕХ БИБЛИОТЕКАРЕЙ ОЧИСТИТЬ ДЛЯ ПРОГОНА С ЧЕТЫРЬМЯ БИБЛИОТЕКАРЯМИ ПЕРЕОПРЕДЕЛИТЬ ДЛЯ ПРОГОНА С ЧЕТЫРЬМЯ БИБЛИОТЕКАРЯМИ 506
Продолжение Продол жени комментарии НОМЕ»» КАРТЫ УСТАНОВИТЬ ЕМКОСТЬ МНОГОКАНАЛЬНОГО УСТРОЙСТВА ДЛЯ ЧЕТЫРЕХ БИБЛИОТЕКАРЕЙ НАЧАТЬ ПРОГОН ДЛЯ ЧЕТЫРЕХ БИБЛИОТЕКАРЕЙ ОЧИСТИТЬ ДЛЯ ПРОГОНА С ПЯТЬЮ БИБЛИОТЕКАРЯМИ ПЕРЕОПРЕДЕЛИТЬ ДЛЯ ПРОГОНА С ПЯТЬЮ БИБЛИОТЕКАРЯМИ УСТАНОВИТЬ ЕМКОСТЬ МНОГОКАНАЛЬНОГО УСТРОЙСТВА ДЛЯ ПЯТИ БИБЛИОТЕКАРЕЙ НАЧАТЬ ПРОГОН ДЛЯ ПЯТИ БИБЛИОТЕКАРЕЙ ПЕРЕДАТЬ УПРАВЛЕНИЕ ОПЕРАЦИОННОЙ СИСТЕМЕ КОММЕНТАРИИ ИНИЦИАЛИЗАЦИЯ НЕСТАНДАРТНЫХ ДАТЧИКОВ СЛУЧАЙНЫХ ЧИСЕЛ УСТАНОВКА ДАТЧИКОВ ДЛЯ ПЕРВОГО ПРОГОНА ОПРЕДЕЛЕНИЕ ФУНКЦИЙ ФУНКЦИЯ НОРМИРОВАННОГО НОРМАЛЬНОГО РАСПРЕДЕЛЕНИЯ ЭКСПОНЕНЦИАЛЬНАЯ ФУНКЦИЯ РАСПРЕДЕЛЕНИЯ ОПРЕДЕЛЕНИЕ ПЕРЕМЕННЫХ ВРЕМЯ РАБОТЫ ДЕТАЛИ ВРЕМЯ ПОЧИНКИ ДЕТАЛИ 1-Й СЕГМЕНТ МОДЕЛИ ПРИБЫТИЕ ПЕРВОГО ОПЕРАТОРА ВКЛЮЧИТЬ СТАНОК ВРЕМЯ РАБОТЫ ДЕТАЛИ ВЫКЛЮЧИТЬ СТАНОК ВЫНУТЬ ОТКАЗАВШУЮ ДЕТАЛЬ ПОСЛАТЬ ПОМОЩНИКА ЗА ЗАПАСНОЙ ЗАНЯТЬ МЕХАНИКА РЕМОНТ ОСВОБОДИТЬ МЕХАНИКА ИЗМЕНИТЬ ЧИСЛО ИСПРАВНЫХ ЗАПАСНЫХ ДЕТАЛЕЙ УЙТИ; ДАЛЬШЕ ПРОДОЛЖАЕТ ПОМОЩНИК ЖДАТЬ (ЕСЛИ НЕОБХОДИМО) ИСПРАВНУЮ ДЕТАЛЬ ИЗМЕНИТЬ ЧИСЛО ЗАПАСНЫХ ДЕТАЛЕЙ ВСТАВИТЬ ДЕТАЛЬ ПОЙТИ НА ВКЛЮЧЕНИЕ СТАНКА 2-Й СЕГМЕНТ МОДЕЛИ ПОСТУПЛЕНИЕ НА РЕМОНТ ДРУГИХ ДЕТАЛЕЙ ПУСТОЙ БЛОК ADVANCE (СМ.. ОБЪЯСНЕНИЕ) ЗАНЯТЬ МЕХАНИКА РЕМОНТ ОСВОБОДИТЬ МЕХАНИКА УХОД ДРУГИХ ДЕТАЛЕЙ 3-Й СЕГМЕНТ МОДЕЛИ 54 55 57 59 60 61 62 63 64 65 66 67 68 КОММЕНТАРИИ Ряс. 6D.3 НОМЕР КАРТЫ 3 5 7 9 11 13 15 21 28 29 30 32 U 36—36 37—38 39—40 41 42 43 ПРИХОД ТАЙМЕРА ПОСЛЕ 260 40- ЧАСОВЫХ НЕДЕЛЬ ЗАКОНЧИТЬ ПРОГОН УПРАВЛЯЮЩИЕ КАРТЫ И ПЕРЕОПРЕДЕЛЕНИЕ ЕМКОСТИ МНОГОКАНАЛЬНЫХ УСТРОЙСТВ НАЧАТЬ ПЕРВЫЙ ПРОГОН (НЕТ ЗАПАСНЫХ ЧАСТЕЙ) ВОССТАНОВИТЬ ДАТЧИКИ СЛУЧАЙНЫХ ЧИСЕЛ ДЛЯ ВТОРОГО ПРОГОНА ОЧИСТИТЬ ДЛЯ ВТОРОГО ПРОГОНА ИЗМЕНИТЬ КОНФИГУРАЦИЮ ДЛЯ ВТОРОГО ПРОГОНА НАЧАТЬ ВТОРОЙ ПРОГОН (ОДНА ЗАПАСНАЯ ЧАСТЬ) ВОССТАНОВИТЬ ДАТЧИКИ СЛУЧАЙНЫХ ЧИСЕЛ ДЛЯ ТРЕТЬЕГО ПРОГОНА ОЧИСТИТЬ ДЛЯ ТРЕТЬЕГО ПРОГОНА ИЗМЕНИТЬ КОНФИГУРАЦИЮ ДЛЯ ТРЕТЬЕГО ПРОГОНА НАЧАТЬ ТРЕТИЙ ПРОГОН (ДВЕ ЗАПАСНЫЕ ЧАСТИ) ПЕРЕДАТЬ УПРАВЛЕНИЕ ОПЕРАЦИОННОЙ СИСТЕМЕ КОММГСНТЛРИИ ИНИЦИАЛИЗАЦИЯ НЕСТАНДАРТНЫХ ДАТЧИКОВ СЛУЧАЙНЫХ ЧИСЕЛ УСТАНОВКА ДАТЧИКОВ ДЛЯ ПЕРВОГО ПРОГОНА ОПРЕДЕЛЕНИЕ ФУНКЦИЙ ВРБЧЯ РЕМОНТА ДЛЯ ДЕТАЛИ ТИПА В НОМЕР ПАРАМЕТРА С БОЛЬШИМ ВРЕМЕНЕМ ЖИЗНИ УКАЗАТЕЛЬ ДЛЯ РАСПРЕДЕЛЕНИЯ ВРБЧЕНИ РЕМОНТА НОРМИРОВАННАЯ НОРМАЛЬНАЯ ФУНКЦИЯ РАСПРЕДЕЛЕНИЯ ЭКСПОНЕНЦИАЛЬНАЯ ФУНКЦИЯ РАСПРЕДЕЛЕНИЯ ОПРЕДЕЛЕНИЕ ПЕРЕМЕННЫХ ВРЕМЯ РАБОТЫ ДЕТАЛИ ТИПА А ВРЕМЯ РАБОТЫ ДЕТАЛИ ТИПА В ВРЕМЯ РЕМОНТА ДЕТАЛИ ТИПА А 1-Й СЕГМЕНТ МОДЕЛИ ПРИБЫТИЕ ПЕРВОГО ОПЕРАТОРА ПРИНЯТЬ Р1 РАВНЫМ ВРЕМЕНИ РАБОТЫ УСТАНОВЛЕННОЙ ДЕТАЛИ ТИПА А ПРИНЯТЬ Р2 РАВНЫМ ВРЕМЕНИ РАБОТЫ УСТАНОВЛЕННОЙ ДЕТАЛИ ТИПА В ПОЛОЖИТЬ РЗ РАВНЫМ НОМЕРУ ПАРАМЕТРА, СОДЕРЖАЩЕГО МЕНЬШЕЕ ВРЕМЯ РАБОТЫ ВКЛЮЧИТЬ СТАНОК ПРОХОЖДЕНИЕ МЕНЬШЕГО ВРЕМЕНИ РАБОТЫ ВЫКЛЮЧИТЬ СТАНОК 507
Продолжение Продолжение КОММЕНТАРИИ НОМЕР КАРТЫ 260 40- ПЕРЕ- МНОГО- ИЗМЕНИТЬ ВРЕМЯ. ОСТАВШЕЕСЯ ДО ВЫХОДА ИЗ СТРОЯ НЕ ОТКАЗАВШЕЙ ДЕТАЛИ ВЫНУТЬ ОТКАЗАВШУЮ ДЕТАЛЬ ПОСЛАТЬ ПОМОЩНИКА ЗА ЗАПАСНОЙ ДЕТАЛЬЮ ЗАНЯТЬ МЕХАНИКА РЕМОНТ ОСВОБОДИТЬ МЕХАНИКА ИЗМЕНИТЬ ЧИСЛО ЗАПАСНЫХ ДЕТАЛЕЙ УЙТИ; ДАЛЬШЕ ПРОДОЛЖАЕТ ПОМОЩНИК ЖДАТЬ (ЕСЛИ НЕОБХОДИМО) {ИСПРАВНУЮ ДЕТАЛЬ ИЗМЕНИТЬ ЧИСЛО ИСПРАВНЫХ ЗАПАСНЫХ ДЕТАЛЕЙ ВСТАВИТЬ ДЕТАЛЬ ПОЙТИ НА ВКЛЮЧЕНИЕ СТАНКА 2-Й СЕГМЕНТ МОДЕЛИ ПОСТУПЛЕНИЕ НА РЕМОНТ «ДРУГИХ ДЕТАЛЕЙ» ПУСТОЙ БЛОК ЗАНЯТЬ МЕХАНИКА РЕМОНТ ОСВОБОДИТЬ МЕХАНИКА УХОД ДРУГИХ ИЗДЕЛИЙ 3-Й СЕГМЕНТ МОДЕЛИ ПРИХОД ТАЙМЕРА ПОСЛЕ ЧАСОВЫХ НЕДЕЛЬ ЗАКОНЧИТЬ ПРОГОН УПРАВЛЯЮЩИЕ КАРТЫ И ОПРЕДЕЛЕНИЕ ЕМКОСТЕЙ КАНАЛЬНЫХ УСТРОЙСТВ НАЧАТЬ ПЕРВЫЙ ПРОГОН (НОЛЬ ДЕТАЛЕЙ А И В) ВОССТАНОВИТЬ ДАТЧИКИ ДЛЯ ВТОРОГО ПРОГОНА ОЧИСТИТЬ ДЛЯ ВТОРОГО ПРОГОНА ИЗМЕНИТЬ КОНФИГУРАЦИЮ ДЛЯ ВТОРОГО ПРОГОНА НАЧАТЬ ВТОРОЙ ПРОГОН (НОЛЬ ДЕТАЛЕЙ ТИПА А, ОДНА ДЕТАЛЬ В) ВОССТАНОВИТЬ ДАТЧИКИ ДЛЯ ТРЕТЬЕГО ПРОГОНА ОЧИСТИТЬ ДЛЯ ТРЕТЬЕГО ПРОГОНА ИЗМЕНИТЬ КОНФИГУРАЦИЮ ДЛЯ ТРЕТЬЕГО ПРОГОНА НАЧАТЬ ТРЕТИЙ ПРОГОН (НОЛЬ ДЕТАЛЕЙ А, ДВЕ ДЕТАЛИ В) ВОССТАНОВИТЬ ДАТЧИКИ ДЛЯ ЧЕТВЕРТОГО ПРОГОНА ОЧИСТИТЬ ДЛЯ ЧЕТВЕРТОГО ПРОГОНА ИЗМЕНИТЬ КОНФИГУРАЦИЮ ДЛЯ ЧЕТВЕРТОГО ПРОГОНА НАЧАТЬ ЧЕТВЕРТЫЙ ПРОГОН (ОДНА ДЕТАЛЬ А, НОЛЬ ДЕТАЛЕЙ В) ВОССТАНОВИТЬ ДАТЧИКИ ДЛЯ ПЯТОГО ПРОГОНА ОЧИСТИТЬ ДЛЯ ПЯТОГО ПРОГОНА ИЗМЕНИТЬ КОНФИГУРАЦИЮ ДЛЯ ПЯТОГО ПРОГОНА НАЧАТЬ ПЯТЫЙ ПРОГОН (ОДНА ДЕТАЛЬ А И ОДНА В) ВОССТАНОВИТЬ ДАТЧИКИ ДЛЯ ШЕСТОГО ПРОГОНА ОЧИСТИТЬ ДЛЯ ШЕСТОГО ПРОГОНА 94 95 % 97 99 99 100 101 102 103 104 105 10G 107 108 КОММЕНТАРИИ Ряс вЕ.2 НОМЕР КАРТЫ 3 6 8 10 12 15 17—18 20 22 24 26 27 28 29 30 31—32 33 34 35 ИЗМЕНИТЬ КОНФИГУРАЦИЮ ДЛЯ ШЕСТОГО ПРОГОНА НАЧАТЬ ШЕСТОЙ ПРОГОН (ОДНА ДЕТАЛЬ А И ДВЕ В) ВОССТАНОВИТЬ ДАТЧИКИ ДЛЯ СЕДЬМОГО ПРОГОНА ОЧИСТИТЬ ДЛЯ СЕДЬМОГО ПРОГОНА ИЗМЕНИТЬ КОНФИГУРАЦИЮ ДЛЯ СЕДЬМОГО ПРОГОНА НАЧАТЬ СЕДЬМОЙ ПРОГОН (ДВЕ ДЕТАЛИ А И НОЛЬ ДЕТАЛЕЙ В) ВОССТАНОВИТЬ ДАТЧИКИ ДЛЯ ВОСЬМОГО ПРОГОНА ОЧИСТИТЬ ДЛЯ ВОСЬМОГО ПРОГОНА ИЗМЕНИТЬ КОНФИГУРАЦИЮ ДЛЯ ВОСЬМОГО ПРОГОНА НАЧАТЬ ВОСЬМОЙ ПРОГОН (ДВЕ ДЕТАЛИ А И ОДНА В) ВОССТАНОВИТЬ ДАТЧИКИ ДЛЯ ДЕВЯТОГО ПРОГОНА ОЧИСТИТЬ ДЛЯ ДЕВЯТОГО ПРОГОНА ИЗМЕНИТЬ КОНФИГУРАЦИЮ ДЛЯ ДЕВЯТОГО ПРОГОНА НАЧАТЬ ДЕВЯТЫЙ ПРОГОН (ДВЕ ДЕТАЛИ А И ДВЕ В) ПЕРЕДАТЬ УПРАВЛЕНИЕ ОПЕРАЦИОННОЙ СИСТЕМЕ КОММЕНТАРИИ ИНИЦИАЛИЗАЦИЯ НЕСТАНДАРТНЫХ ДАТЧИКОВ СЛУЧАЙНЫХ ЧИСЕЛ УСТАНОВИТЬ ДАТЧИК ДЛЯ ПЕРВОГО ПРОГОНА ОПРЕДЕЛЕНИЕ ФУНКЦИЙ РАСПРЕДЕЛЕНИЕ ВРЕМЕНИ МЕЖДУ ПРИБЫТИЯМИ РАСПРЕДЕЛЕНИЕ ВРЕМЕНИ ОБСЛУЖИВАНИЯ ОПРЕДЕЛЕНИЕ ЕМКОСТИ МНОГОКАНАЛЬНЫХ УСТРОЙСТВ ЗАДАТЬ КОНФИГУРАЦИИ ДЛЯ ПАРАЛЛЕЛЬНЫХ СЛУЧАЕВ ОДНОГО, ДВУХ И ТРЕХ СЛУЖАЩИХ ОПРЕДЕЛЕНИЕ ПЕРЕМЕННЫХ ДНЕВНАЯ ПРИБЫЛЬ ПОСЛЕ ВЫЧЕТА ЗАТРАТ 1-Й СЕГМЕНТ МОДЕЛИ ПРИБЫТИЕ ГЛАВНЫХ АВТОМОБИЛЕЙ СТАНЦИЯ «ОТКРЫТА»? ПРИНЯТЬ Р1 РАВНЫМ ВРЕМЕНИ ОБСЛУЖИВАНИЯ ВВЕСТИ ДВЕ КОПИИ ГЛАВНОГО АВТОМОБИЛЯ УПОРЯДОЧИТЬ ВО ВТОРОМ ПАРАМЕТРЕ КАЖДЫЙ АВТОМОБИЛЬ ПРОВЕРЯЕТ УСЛОВИЯ НА СВОЕЙ СТАНЦИИ И ЛИБО ОСТАЕТСЯ, ЛИБО УЕЗЖАЕТ ВСТАТЬ В ОЧЕРЕДЬ ЗАНЯТЬ СЛУЖАЩЕГО ВЫЙТИ ИЗ ОЧЕРЕДИ 508
Продолжение Продолжение НОМЕР КАРТЫ 36—37 38 39 40 42 44 45 46—47 48 49 50 51 53 55 56 57 58 59 60 61 62 63 64 65 66 67 88 КОММЕНТАРИИ ПОДНЯТЬ ПРИОРИТЕТ ДЛЯ РАЗВЯЗКИ ВОЗМОЖНОГО УЗЛА «ПРИБЫТИЕ — УХОД» ОБСЛУЖИВАНИЕ ОСВОБОДИТЬ СЛУЖАЩЕГО ПОКИНУТЬ СТАНЦИЮ 2-Й СЕГМЕНТ МОДЕЛИ ВЛАДЕЛЕЦ ПРИХОДИТ В МОМЕНТ ЗАКРЫТИЯ УСТАНОВИТЬ ЗНАК «ЗАКРЫТО» ПОДОЖДАТЬ КОНЦА ОБСЛУЖИВАНИЯ ПОСЛЕДНЕЙ МАШИНЫ НА КАЖДОЙ СТАНЦИИ ВВЕСТИ ДВЕ КОПИИ ВЛАДЕЛЬЦА УПОРЯДОЧИТЬ В ОДНОМ ПАРАМЕТРЕ ЗАПИСАТЬ ПРИБЫЛЬ ДЛЯ КАЖДОЙ СТАНЦИИ УЙТИ ДОМОЙ УПРАВЛЯЮЩИЕ КАРТЫ НАЧАТЬ ПЕРВЫЙ ПРОГОН (ПЕРВЫЙ ДЯНЬ) УСТАНОВИТЬ ДАТЧИК СЛУЧАЙНЫХ ЧИСЕЛ ДЛЯ ВТОРОГО ПРОГОНА ОЧИСТИТЬ ДЛЯ ВТОРОГО ПРОГОНА НАЧАТЬ ВТОРОЙ ПРОГОН (ВТОРОЙ ДЕНЬ) УСТАНОВИТЬ ДАТЧИК СЛУЧАЙНЫХ ЧИСЕЛ ДЛЯ ТРЕТЬЕГО ПРОГОНА ОЧИСТИТЬ ДЛЯ ТРЕТЬЕГО ПРОГОНА НАЧАТЬ ТРЕТИЙ ПРОГОН УСТАНОВИТЬ ДАТЧИК СЛУЧАЙНЫХ ЧИСЕЛ ДЛЯ ЧЕТВЕРТОГО ПРОГОНА ОЧИСТИТЬ ДЛЯ ЧЕТВЕРТОГО ПРОГОНА НАЧАТЬ ЧЕТВЕРТЫЙ ПРОГОН (ЧЕТВЕРТЫЙ ДЕНЬ) УСТАНОВИТЬ ДАТЧИК СЛУЧАЙНЫХ ЧИСЕЛ ДЛЯ ПЯТОГО ПРОГОНА ОЧИСТИТЬ ДЛЯ ПЯТОГО ПРОГОНА НАЧАТЬ ПЯТЫЙ ПРОГОН ПЕРЕДАТЬ УПРАВЛЕНИЕ ОПЕРАЦИОННОЙ СИСТЕМЕ ГЛАВА 7 Рис. 7А.2, а НОМЕР КАРТЫ 3 5 12 14 16 18 19 20-21 22 23 КОММЕНТАРИИ ОПРЕДЕЛЕНИЕ ФУНКЦИИ ЭКСПОНЕНЦИАЛЬНАЯ ФУНКЦИЯ РАСПРЕДЕЛЕНИЯ РАСПРЕДЕЛЕНИЕ СРЕДНЕГО ВРЕМЕНИ ОБСЛУЖИВАНИЯ ОПРЕДЕЛЕНИЕ ЕМКОСТИ МНОГОКАНАЛЬНОГО УСТРОЙСТВА ОБЕСПЕЧИТЬ ВОСЕМЬ КАССИРОВ '1-Й СЕГМЕНТ МОДЕЛИ ПРИБЫТИЕ ПОСЕТИТЕЛЕЙ ПОЛОЖИТЬ Р1 РАВНЫМ ВРЕМЕНИ ОБСЛУЖИВАНИЯ НАЗНАЧИТЬ ВЫСШИЙ ПРИОРИТЕТ ДЛЯ СЛЕДУЮЩЕГО СОБЫТИЯ ОКОНЧАНИЯ ОБСЛУЖИВАНИЯ ВСТАТЬ В ОЧЕРЕДЬ ЕСТЬ ЛИ СВОБОДНЫЙ КАССИР? НОМЕР КАРТЫ 24 26 26 27 28—29 30 31 33 35 36 38 40 41 42 43 44 45 46 47 48 49 КОММЕНТАРИИ ДА: ЗАНЯТЬ КАССИРА ВЫЙТИ ИЗ ОЧЕРЕДИ ОБСЛУЖИВАНИЕ ОСВОБОДИТЬ КАССИРА ПОСЛАТЬ СЛЕДУЮЩЕГО ПОСЕТИТЕЛЯ (ЕСЛИ ТАКОВОЙ ИМЕЕТСЯ) НА ОБСЛУЖИВАНИЕ ПОКИНУТЬ БАНК НЕТ: ВСТАТЬ В КОНЕЦ ЦЕПИ ПОЛЬЗОВАНИЯ 2-Й СЕГМЕНТ МОДЕЛИ ПОЯВЛЕНИЕ ТАЙМЕРА ПОСЛЕ ПЯТОГО ЧАСА ЗАКОНЧИТЬ ПРОГОН УПРАВЛЯЮЩИЕ КАРТЫ НАЧАТЬ ПРОГОН ДЛЯ ПЕРВОГО ДНЯ ОЧИСТИТЬ НАЧАТЬ ПРОГОН ДЛЯ ВТОРОГО ДНЯ ОЧИСТИТЬ НАЧАТЬ ПРОГОН ДЛЯ ТРЕТЬЕГО ДНЯ ОЧИСТИТЬ НАЧАТЬ ПРОГОН ДЛЯ ЧЕТВЕРТОГО ДНЯ ОЧИСТИТЬ НАЧАТЬ ПРОГОН ДЛЯ ПЯТОГО ДНЯ ВЕРНУТЬ УПРАВЛЕНИЕ ОПЕРАЦИОННОЙ СИСТЕМЕ Рис 7А.2, б НОМЕР КАРТЫ 3 6 10 13 15 16 17—18 19 20 21 22—23 24 25—26 27 28 29 31 33 34 36 38 39 40 KOMMli НТЛРИИ ОПРЕДЕЛЕНИЕ ФУНКЦИИ ЭКСПОНЕНЦИАЛЬНАЯ ФУНКЦИЯ РАСПРЕДЕЛЕНИЯ РАСПРЕДЕЛЕНИЕ СРЕДНЕГО ВРЕ- МЕНИ ОБСЛУЖИВАНИЯ 1-й СЕГМЕНТ МОДЕЛИ ПРИБЫВАНИЕ ПОСЕТИТЕЛЕЙ ПОЛОЖИТЬ PI РАВНЫМ ВРЕМЕНИ ОБСЛУЖИВАНИЯ НАЗНАЧИТЬ ВЫСШИЙ ПРИОРИТЕТ ДЛЯ ПОСЛЕДУЮЩЕГО СОБЫТИЯ ОКОНЧАНИЯ ОБСЛУЖИВАНИЯ СБОР ДАННЫХ ОБ ОБЩЕЙ ОЧЕРЕДИ ЕСТЬ ЛИ СВОБОДНЫЙ КАССИР? ДА: ЗАНЯТЬ КАССИРА СБОР ДАННЫХ ОТ ОБЩЕЙ ОЧЕРЕДИ ОБСЛУЖИВАНИЯ ОСВОБОДИТЬ КАССИРА ПОСЛАТЬ СЛЕДУЮЩЕГО ПОСЕТИТЕЛЯ (ЕСЛИ ТАКОВОЙ ИМЕЕТСЯ) НА ОБ- СЛУЖИВАНИЕ ПОКИНУТЬ БАНК НЕТ: НАЙТИ КРАТЧАЙШУЮ ОЧЕРЕДЬ ВСТАТЬ В КОНЕЦ КРАТЧАЙШЕЙ ОЧЕРЕДИ 2-Й СЕГМЕНТ МОДЕЛИ ПОЯВЛЕНИЕ ТАЙМЕРА ПОСЛЕ ПЯТИ ЧАСОВ ЗАКОНЧИТЬ ПРОГОН УПРАВЛЯЮЩИЕ КАРТЫ НАЧАТЬ ПРОГОН ДЛЯ ПЕРВОГО ДНЯ ОЧИСТИТЬ НАЧАТЬ ПРОГОН ДЛЯ ВТОРОГО ДНЯ 509
Продолжение Продолжение НОМЕР КАРТЫ 41 42 43 44 45 46 47 КОММЕНТАРИИ ОЧИСТИТЬ НАЧАТЬ ПРОГОН ДЛЯ ТРЕТЬЕГО ДНЯ ОЧИСТИТЬ НАЧАТЬ ПРОГОН ДЛЯ ЧЕТВЕРТОГО ДНЯ ОЧИСТИТЬ НАЧАТЬ ПРОГОН ДЛЯ ПЯТОГО ДНЯ ВЕРНУТЬ УПРАВЛЕНИЕ ОПЕРАЦИОННОЙ СИСТЕМЕ HOMFP КАРТЫ КОММЕНТАРИИ ОПРЕДЕЛЕНИЕ ФУНКЦИИ ЭКСПОНЕНЦИАЛЬНАЯ ФУНКЦИЯ ОПРЕДЕЛЕНИЯ ЧИСЛО МАШИН «МИНУС I». ПРИБЫВАЮЩИХ ЕЖЕДНЕВНО НА ПЛАНОВЫЙ ОСМОТР ОПРЕДЕЛЕНИЕ ТАБЛИЦ РАСПРЕДЕЛЕНИЕ НЕРАБОТАЮЩИХ ПОЛИЦЕЙСКИХ МАШИН, ПОДЛЕЖАЩИХ ВНЕПЛАНОВОМУ РЕМОНТУ 1-Й СЕГМЕНТ МОДЕЛИ (СЕГМЕНТ ПЛАНОВОГО ОСМОТРА) ПРИХОД ГЛАВНОЙ МАШИНЫ ЕЖЕДНЕВНО В 8 Ч УТРА ВВОД ВСЕХ ДНЕВНЫХ МАШИН ЗАНЯТЬ ЯМУ ОБСЛУЖИВАНИЕ НА ЯМЕ ОСВОБОДИТЬ ЯМУ МАШИНА ПОКИДАЕТ МОДЕЛЬ 2-Й СЕГМЕНТ МОДЕЛИ (ВНЕПЛАНОВЫЙ РЕМОНТ ПОЛИЦЕЙСКИХ МАШИН) ПРИХОД ВНЕПЛАНОВОЙ ПОЛИЦЕЙСКОЙ МАШИНЫ ВСТАТЬ В ОЧЕРЕДЬ НЕРАБОТАЮЩИХ ЗАХВАТИТЬ ЯМУ У ПОЛЬЗОВАТЕЛЯ НЕ ИМЕЮЩЕГО ПРАВА ЗАХВАТА ОБСЛУЖИВАНИЕ НА ЯМЕ ВЕРНУТЬ ЯМУ ВЫЙТИ ИЗ ОЧЕРЕДИ НЕРАБОТАЮЩИХ ПОЛИЦЕЙСКАЯ МАШИНА ПОКИДАЕТ МОДЕЛЬ 3-Й СЕГМЕНТ МОДЕЛИ (СЕГМЕНТ ОТКРЫТИЯ И ЗАКРЫТИЯ) ЕЖЕДНЕВНЫЙ ПРИХОД ХОЗЯИНА В КОНЦЕ ВОСЬМОГО ЧАСА ЗАХВАТИТЬ ЯМУ ДЛЯ ОКОНЧАНИЯ РАБОТЫ ПРОЖДАТЬ 16 Ч ВЕРНУТЬ ЯМУ ДЛЯ НАЧАЛА НОВОГО РАБОЧЕГО ДНЯ РАБОТА ПО ОТКРЫТИЮ-ЗАКРЫТИЮ ЗАВЕРШЕНА 4-Й СЕГМЕНТ МОДЕЛИ (СБОР РЕЗУЛЬТАТОВ ДЛЯ НЕРАБОТАЮЩИХ ПОЛИЦЕЙСКИХ МАШИН) ВОЙТИ В СЕГМЕНТ ПОЛОЖИТЬ Р! РАВНЫМ АБСОЛЮТНОМУ ВРЕМЕНИ ПОЛОЖИТЬ Р2 РАВНЫМ ЧИСЛУ НЕРАБОТАЮЩИХ В ДАННЫЙ МОМЕНТ 50 51 52 54 56 57 59 КОММЕНТАРИИ Рис 7С2 НОМЕР КАРТЫ 3 5 10 13 15—10 18 20 21 22 23 24 25 26—27 28 29 31 33 34—35 36 37 38—39 40 41 42 43 44 45 46 ЖДАТЬ ИЗМЕНЕНИЯ ВРЕМЕНИ ЗАПИСАТЬ РЕЗУЛЬТАТ НАБЛЮДЕНИЯ ПЕРЕЙТИ К СЛЕДУЮЩЕМУ НАБЛЮДЕНИЮ Б-Й СЕГМЕНТ МОДЕЛИ (СЕГМЕНТ ТАЙМЕРА) ПРИБЫТИЕ ТАЙМЕРА В КОНЦЕ КАЖДОГО ПЯТОГО ДНЯ ВЫДАТЬ ПРОМЕЖУТОЧНЫЙ РЕЗУЛЬТАТ ИЛИ ЗАКОНЧИТЬ ПРОГОН УПРАВЛЯЮЩИЕ КАРТЫ КОММЕНТАРИИ ОПРЕДЕЛЕНИЕ ФУНКЦИЙ ЭКСПОНЕНЦИАЛЬНАЯ ФУНКЦИЯ РАСПРЕДЕЛЕНИЯ ЧИСЛО МАШИН «МИНУС 1> ПРИБЫВАЮЩИХ ЕЖЕДНЕВНО НА ПЛАНОВЫЙ ОСМОТР ОПРЕДЕЛЕНИЕ ТАБЛИЦ РАСПРЕДЕЛЕНИЕ НЕРАБОТАЮЩИХ ПОЛИЦЕЙСКИХ МАШИН НА ВНЕПЛАНОВОМ РЕМОНТЕ 1-Й СЕГМЕНТ МОДЕЛИ (СЕГМЕНТ ПЛАНОВОГО ОСМОТРА) ПРИБЫТИЕ ГЛАВНОЙ МАШИНЫ ЕЖЕДНЕВНО В 84 УТРА ВВОД ВСЕХ ДНЕВНЫХ МАШИН ЕСТЬ ЛИ НЕИСПОЛЬЗУЕМАЯ Я.МА) ДА: ЗАНЯТЬ ЯМУ ОБСЛУЖИВАНИЕ НА ЯМЕ ОСВОБОДИТЬ ЯМУ ПОСЛАТЬ СЛЕДУЮЩУЮ ОБЫЧНУЮ МАШИНУ (ЕСЛИ ЕСТЬ) НА ОБСЛУЖИВАНИЕ МАШИНА ПОКИДАЕТ МОДЕЛЬ НЕТ: ВСТАТЬ В КОНЕЦ ОБЫЧНОЙ ЦЕПИ 2-Й СЕГМЕНТ МОДЕЛИ (ВНЕПЛАНОВЫЙ РЕМОНТ ПОЛИЦЕЙСКИХ МАШИН) ПРИБЫТИЕ ВНЕПЛАНОВЫХ ПОЛИЦЕЙСКИХ МАШИН НАЗНАЧИТЬ ВЫСШИЙ ПРИОРИТЕТ СЛЕДУЮЩЕМУ СОБЫТИЮ ОКОНЧАНИЯ ОБСЛУЖИВАНИЯ ВСТАТЬ В ОЧЕРЕДЬ НЕИСПРАВНЫХ ЕСТЬ ЛИ НЕИСПОЛЬЗУЕМАЯ ЯМА? ЕСЛИ «ДА», ВОСПОЛЬЗОВАТЬСЯ ЕЮ; ЕСЛИ «НЕТ», ПРОВЕРИТЬ ВОЗМОЖНОСТЬ ЗАХВАТА ЗАХВАТИТЬ ЯМУ ОБСЛУЖИВАНИЕ НА ЯМЕ ВЕРНУТЬ ЯМУ ПОКИНУТЬ ОЧЕРЕДЬ «НЕИСПРАВНЫХ» ПЕРЕДАТЬ ЯМУ СЛЕДУЮЩЕЙ СПЕЦИАЛЬНОЙ» ЕСЛИ ТАКОЙ НЕТ, ПОЙТИ НА ПРОВЕРКУ «ОБЫЧНОЙ» ПОЛИЦЕЙСКАЯ МАШИНА ПОКИДАЕТ МОДЕЛЬ 510
Продолжение Продолжение КОММЕНТАРИИ НОМЕР КАРТЫ КОММЕНТАРИИ ЕСЛИ ЛИ НЕЗАХВАЧЕННАЯ ЯМА? ДА: ЗАХВАТИТЬ ЕЕ НЕТ: ВСТАТЬ В КОНЕЦ «СПЕЦИАЛЬНОЙ» ЦЕПИ 3-Й СЕГМЕНТ МОДЕЛИ (СЕГМЕНТ ОТКРЫТИЯ-ЗАКРЫТИЯ) ЕЖЕДНЕВНЫЙ ПРИХОД ХОЗЯИНА В КОНЦЕ ВОСЬМОГО ЧАСА УСТАНОВИТЬ ПРИОРИТЕТ ХОЗЯИНА ДЛЯ ЗАХВАТА УСТАНОВИТЬ ПАРАМЕТР ДЛЯ СЧЕТЧИКА ЦИКЛОВ ЗАХВАТИТЬ ЯМУ Р1 ДЛЯ ПРЕКРАЩЕНИЯ РАБОТЫ ИДТИ НА ЗАХВАТ СЛЕДУЮЩЕЙ ЯМЫ (ЕСЛИ ЕСТЬ) ПРОЖДАТЬ 16 Ч УСТАНОВИТЬ ПАРАМЕТР ДЛЯ СЧЕТЧИКА ЦИКЛОВ ВЕРНУТЬ ЯМУ ДЛЯ НАЧАЛА НОВОГО РАБОЧЕГО ДНЯ ИДТИ НА ВОЗВРАТ СЛЕДУЮЩЕЙ ЯМЫ (ЕСЛИ ЕСТЬ) ПОЗВОЛИТЬ ВСЕМ НАХОДЯЩИМСЯ В ЦЕПИ «СПЕЦИАЛЬНЫМ» (ЕСЛИ ОНИ ЕСТЬ) ПОПЫТАТЬСЯ ЗАНЯТЬ ЯМЫ РАБОТА ПО ОТКРЫТИЮ-ЗАКРЫТИЮ ЗАВЕРШЕНА 4-Й СЕГМЕНТМОДЕЛИ (СБОР ИНФОРМАЦИИ ДЛЯ НЕИСПРАВНЫХ ПОЛИЦЕЙСКИХ МАШИН) ВОЙТИ В СЕГМЕНТ ПОЛОЖИТЬ Р1 РАВНЫМ АБСОЛЮТНОМУ ВРЕМЕНИ ПОЛОЖИТЬ Р2 РАВНЫМ ЧИСЛУ МАШИН. НЕИСПРАВНЫХ В ДАННЫЙ МОМЕНТ ЖДАТЬ ИЗМЕНЕНИЯ ВРЕМЕНИ ЗАПИСАТЬ ЭТО НАБЛЮДЕНИЕ ПЕРЕЙТИ К СЛЕДУЮЩЕМУ НАБЛЮДЕНИЮ Б-Й СЕГМЕНТ МОДЕЛИ [СЕГМЕНТ ТАЙМЕРА) ПРИБЫТИЕ ТАЙМЕРА В КОНЦЕ КАЖДОГО ПЯТОГО ДНЯ ВЫДАТЬ ПРОМЕЖУТОЧНЫЙ РЕЗУЛЬТАТ ИЛИ ЗАКОНЧИТЬ ПРОГОН УПРАВЛЯЮЩИЕ КАРТЫ Рис. 7D.3 НОМЕР КЛР1Ы 3 5 7 9 10 12 КОММЕНТАРИИ ОПРЕДЕЛЕНИЕ ЕМКОСТИ МНОГОКАНАЛЬНЫХ УСТРОЙСТВ ОБЕСПЕЧИТЬ ВНАЧАЛЕ ПЯТЬ РАБОЧИХ ОПРЕДЕЛЕНИЕ ТАБЛИЦ РАСПРЕДЕЛЕНИЕ ЗАНЯТЫХ РАБОЧИХ ТАБЛИЦА ДЛЯ ВРЕМЕН ЗАВЕРШЕНИЯ КОМПЛЕКСА 1-Й СЕГМЕНТ МОДЕЛИ 14 15 16 18 19 20 21 23 24 25 26 28 29 30 31 32 34 35 36 38 39 40 41 42 44 45 46 47 49 50 51 53 54 55 50 58 59 60 61 СЗ 64 65 66 68 70 ОБЕСПЕЧИТЬ ПО МЕРЕ НЕОБХОДИ- АЮСТИ ПОДОЖДАТЬ ОКОНЧАНИЯ ПРЕДЫДУЩЕЙ ИТЕРАЦИИ ЗАКРЫТЬ ВХОД ДЛЯ СЛЕДУЮЩЕГО ТРАНЗАКТА ПОСЛАТЬ ПОТОМКА НА ВЫПОЛНЕНИЕ ПРОЕКТА 2—4 ОБЕСПЕЧИТЬ ПРОЕКТ 1—2 РАБОЧЕЙ СИЛОЙ ВЫПОЛНИТЬ ПРОЕКТ ОСВОБОДИТЬ РАБОЧИХ ПОСЛАТЬ ПОТОМКА НА ВЫПОЛНЕНИЕ ПРОЕКТА 2—4 ОБЕСПЕЧИТЬ ПРОЕКТ 2-5 РАБОЧЕЙ СИЛОЙ ВЫПОЛНИТЬ ПРОЕКТ ОСВОБОДИТЬ РАБОЧИХ ПОДОЖДАТЬ ЗАВЕРШЕНИЯ 2—5 И 4—5 ОБЕСПЕЧИТЬ ПРОЕКТ 5—7 РАБОЧЕЙ СИЛОЙ ВЫПОЛНИТЬ ПРОЕКТ ОСВОБОДИТЬ РАБОЧИХ ПЕРЕДАТЬ СИГНАЛ О ЗАВЕРШЕНИИ ПРОЕКТА 5—7 ОБЕСПЕЧИТЬ ПРОЕКТ 2—4 РАБОЧЕЙ СИЛОЙ ВЫПОЛНИТЬ ПРОЕКТ ОСВОБОДИТЬ РАБОЧИХ ПОДОЖДАТЬ ЗАВЕРШЕНИЯ 2—4 И 3—4 ПЕРЕДАТЬ С ПОТОМКОМ СИГНАЛ О ЗАВЕРШЕНИИ 4-ГО УЗЛА ОБЕСПЕЧИТЬ ПРОЕКТ 4—7 РАБОЧЕЙ СИЛОЙ ВЫПОЛНИТЬ ПРОЕКТ ОСВОБОДИТЬ РАБОЧИХ ПОДОЖДАТЬ ЗАВЕРШЕНИЯ КОНЕЧНЫХ ПРОЕКТОВ ЗАНЕСТИ В ТАБЛИЦУ ВРЕМЯ ВЫПОЛНЕНИЯ КОМПЛЕКСА РАБОТ ОТКРЫТЬ ПУТЬ СЛЕДУЮЩЕЙ ИТЕРАЦИИ ТЕКУЩАЯ ИТЕРАЦИЯ ЗАКОНЧЕНА ОБЕСПЕЧИТЬ ПРОЕКТ 1—3 РАБОЧЕЙ СИЛОЙ ВЫПОЛНИТЬ ПРОЕКТ ОСВОБОДИТЬ РАБОЧИХ ПОСЛАТЬ ПОТОМКА НА ВЫПОЛНЕНИЕ ПРОЕКТА 3—4 ОБЕСПЕЧИТЬ ПРОЕКТ 3--G РАБОЧИМ ВЫПОЛНИТЬ ПРОЕКТ ОСВОБОДИТЬ РАБОЧЕГО ОБЕСПЕЧИТЬ ПРОЕКТ 6-7 РАБОЧЕЙ СИЛОЙ ВЫПОЛНИТЬ ПРОЕКТ ОСВОБОДИТЬ РАБОЧИХ ПОСЛАТЬ СИГНАЛ О ЗАВЕРШЕНИИ 6—7 ОБЕСПЕЧИТЬ ПРОЕКТ 3-4 РАБОЧЕЙ СИЛОЙ ВЫПОЛНИТЬ ПРОЕКТ ОСВОБОДИТЬ РАБОЧИХ ПОСЛАТЬ СИГНАЛ О ЗАВЕРШЕНИИ 3—4 2-Й СЕГМЕНТ МОДЕЛИ ВВЕСТИ ОДНОГО НАБЛЮДАТЕЛЯ ВЫСШЕГО ПРИОРИТЕТА 511
Продолжение Продолжение! КОММЕНТАРИИ НОМЕР КАРТЫ КОММЕНТАРИИ ПОЛОЖИТЬ PI РАВНЫМ АБСОЛЮТНОМУ ВРЕМЕНИ ПОДОЖДАТЬ ИЗМЕНЕНИЯ ВРЕМЕНИ ЗАПИСАТЬ ТЕКУЩЕЕ ЧИСЛО ЗАНЯТЫХ РАБОЧИХ ПЕРЕЙТИ К НОВОЙ ОТМЕТКЕ ВРЕМЕНИ УПРАВЛЯЮЩИЕ КАРТЫ И КАРТЫ ПЕРЕОПРЕДЕЛЕНИЯ ЕМКОСТИ МНОГОКАНАЛЬНОГО УСТРОЙСТВА МОДЕЛИРОВАТЬ ДЛЯ УРОВНЯ РАБОЧЕЙ СИЛЫ б ИЗМЕНИТЬ УРОВЕНЬ РАБОЧЕЙ СИЛЫ СБРОСИТЬ РЕЗУЛЬТАТ ДЛЯ НОВОГО УРОВНЯ МОДЕЛИРОВАТЬ ДЛЯ УРОВНЯ РАБОЧЕЙ СИЛЫ 6 ИЗМЕНИТЬ УРОВЕНЬ РАБОЧЕЙ СИЛЫ СБРОСИТЬ РЕЗУЛЬТАТ ДЛЯ НОВОГО УРОВНЯ МОДЕЛИРОВАТЬ ДЛЯ УРОВНЯ РАБОЧЕЙ СИЛЫ 7 ИЗМЕНИТЬ УРОВЕНЬ РАБОЧЕЙ СИЛЫ СБРОСИТЬ РЕЗУЛЬТАТ ДЛЯ НОВОГО УРОВНЯ 87 88 89 90 91 92 93 94 9S 97 98 99 100 МОДЕЛИРОВАТЬ ДЛЯ УРОВНЯ РАБОЧЕЙ СИЛЫ 8 ИЗМЕНИТЬ УРОВЕНЬ РАБОЧЕЙ СИЛЫ СБРОСИТЬ РЕЗУЛЬТАТ ДЛЯ НОВОГО УРОВНЯ МОДЕЛИРОВАТЬ ДЛЯ УРОВНЯ РАБОЧЕЙ СИЛЫ 9 ИЗМЕНИТЬ УРОВЕНЬ РАБОЧЕЙ СИЛЫ СБРОСИТЬ РЕЗУЛЬТАТ ДЛЯ НОВОГО УРОВНЯ МОДЕЛИРОВАТЬ ДЛЯ УРОВНЯ РАБОЧЕЙ СИЛЫ 10 ИЗМЕНИТЬ УРОВЕНЬ РАБОЧЕЙ СИЛЫ СБРОСИТЬ РЕЗУЛЬТАТ ДЛЯ НОВОГО УРОВНЯ МОДЕЛИРОВАТЬ ДЛЯ УРОВНЯ РАБОЧЕЙ СИЛЫ 11 ИЗМЕНИТЬ УРОВЕНЬ РАБОЧЕЙ СИЛЫ СБРОСИТЬ РЕЗУЛЬТАТ ДЛЯ НОВОГО УРОВНЯ МОДЕЛИРОВАТЬ ДЛЯ УРОВНЯ РАБОЧЕЙ СИЛЫ 12 ВЕРНУТЬ УПРАВЛЕНИЕ ОПЕРАЦИОННОЙ СИСТЕМЕ
РЕШЕНИЕ ЗАДАЧ ПО МОДЕЛИРОВАНИЮ В приложении даны решения более 225 упражнений из 300, приведенных в книге. В большинстве случаев вместо приведения готовой программы дано расширенное пояснение с указанием тех мест, где решение не очевидно. Решения чаще всего сопровождаются иодробиой распечаткой текста модели на GPSS и результата моделирования. К главе 1 1.6. Упражнения 3. а). Случайные числа всегда будут равны О.ООхх, где символы хх представляют собой первые две цифры выбранного множителя. б). Как отмечалось в п. а, одним из способоп достижения этого является выбор значения ядра, равного 1,0. Комбинация множитель — ядро должна быть такой, чтобы значение множителя ие менялось от обращения к обращению. Кроме тривиального случая, когда ядро равно единице, можете ли вы найти еще какую-нибудь комбинацию множитель — ядро, при котором множитель не менялся бы от обращения к обращению? 6. а). Вовсе нет необходимости устанавливать таймер а нулевое значение. Нулевое значение таймера заменится при первом «е изменении значения таймера. Это случится еще до того, как значение таймера будет использовано для планирования событий прихода и событий завершения обслуживания. 8" а). Эффект от такой последовательности обработки событий будет таков, что максимальная длина очереди в статистике будет иа единицу больше, чем это будет иметь несто фактически. Например, предположим, что в процессе моделирования нн одна заявка но должна была ждать, а значит максимальная фактическая длина очереди равна нулю. Если же возник временной узел, а событие прихода обрабатывается первым, только что прибывшая заявка будет поставлена в очередь. Несмотря на то, что она будет оставаться в очереди пулевое время моделировании, максимальное значение длипы очереди будет иметь единичное значеняе. б). Предположим, что событие прихода возникает одновременно с событием завершения моделирования и что новый приход устанавливает новое значение максимальной длины очереди. Ноли моделирование завершается ранее обработки события прихода, то распечатываемое значение максимальной длины очереди не будет учитывать описанного выше события прихода. То же самое можно сказать о других видах статистических данных, которые собираются в процессе моделирования. 33 Т. Дж. ШраЛбер Приложение N в). Если событие прихода заявки обрабатывается первым, то прибывающая заявка пс останется на обслуживании. Если же сначала обрабатывать событве завершения обслуживания (что приводит к немедленной постановке ожидающей заявки на обслужвваннс и выводу ее из очереди), то пришедшая заявка останется иа обслуживание. К главе 2 2.7. Упражнения 1. «GENERATE 7,2»; если возникает событие прихода третьей заявки в момент времени 21, то приход четвертой заявки возникает в один из следующих моментов времени: 26, 27, 28, 29 или 30. Вероятность того, что четвертая заявка возникает па входе в момент времени 30, рапе» 0,2 (т. с. 1/5). Траизакт войдет в модель через блок GENERATE с уровпем приоритета, но умолчанию равным нулю. 2. a). «GENERATE 6»; б). «GENERATE 6.,I5»; »>. «GENERATE 6...10». 3. a). «GENERATE 15,5»; б). «GENERATE 15,5,„9» 4. a). «GENERATE 6,2». б). Когда операнды А и В блока GENERATE задают интервалы времени в виде целых чисел, то в результате может возникать только нечетное число различных интервалов времени. Для того, чтобы получить четное число различных интерналов при их равномерном распределении, необходимо определить соответствующую функцию GPSS (см. упражнение 5, а, параграф 3.14). 5. Так как операнд В больше, чем операпд А, при вычислении это приведет к отрицательной величине интервала времени. При возивкновении отрицательного значения иптервала времени во время интерпретации возникает ошибка 216 — «MODIFIER EXEEDS MEAN» (МОДИФИКАТОР ПРЕВЫШАЕТ ЗНАЧЕНИЕ СРЕДНЕГО). 6. Когда для определения значений операндов используются константы, последние должны быть неотрицательными целыми числами. Уровень приорстата (операнд Е), равный — 3, неверен. 7. Величина начального смещения (операнд С), равный — 10, невереи. 8. В случае б) возникает ошибка 216— «MODIFIER EXEEDS MEAN» (МОДИФИКАТОР ПРЕВЫШАЕТ ЗНАЧЕНИЕ СРЕДНЕГО).
{). В момент моделирования, равный 20, в модели находится шесть транзактов, уровень приоритете которых разе;; 7, к нет ни одного траяэакта, уровень приоритет которого был бы равен 13. 10. а). Если для определения значений операндов используются константы, они должны быть неотрицательными целыми числами. В большинстве случаев использование десятичной точки в QPSS/360 запрещается. Дробные зпачония велччин можно использовать только в двух случаях: 1) десятичную точку можно использовать в качестве первого символа в операнде А блока TRANSFER г<рн применении последнего в режиме статистической передачи, данный блок описан в параграфе 2.44; 2) дробные десятичные величины можно использовать при определении функций в картах следования функции. Описание функции даио в гл. 3. б). При этом допустимо 31 различите значение интервала прихода заявок. в). «GENERATE 270,90». теперь получается !«1 различное значение интервала. И. a). «GENERATE 6,2»; б). «GENERATE 3,1»; n). «GENERATE 48,16»; г). «GENERATE 144,48». 2.10. Упражнения 1. Моделирование завершится в момевт времени, равный 480. 2. Моделирование завершится в момент времени, равный 560. 3. Моделирование завершится в момент времени, равный 180. Как н в упражнениях I и 2 данного параграфа, счетчик завершений будет иметь своим окончательным значением число 0. 4. Моделирование завершится в момент времени, равный 175. До момента времени 175 в блоке «GENERATE 25» возникает шесть событии прихода заявки, что уменьшает счетчик завершений па 12 единиц; II событий прихода заякок возникают в блоке «GENERATE IS», что удтень- шает значение счетчика завершений еще на 11 единиц. Таким образом, перед тем, как таймер модельного времени примет значение 175, счетчик завершений будет равен двум. В этот момсят возникает событие прихода заявки в блок «GENERATE 25» и соответствующее ему завершение продвижения трапзакта с вычитанием из счетчика зввер- шений двойки, после чего в нем остается величина 0, и моделирование завершается. 2.19. Упражнения I. а). Обычным максимальным числом траизактов при предоставляемой памяти в ЭВМ, равной 64К, 128К и 256К, будет 200, 600 н 1200 траизактов соответствевно. Единственным параметром стагястикн об очереди, для которой необходимо зпать время присоединевия к ней, является ZERO ENTRIES. От него зависят такие параметры, как PERCENT ZEROS и $AVERAGE TIME/ TRANS. Таким образом, необходимо зпать, что траизакт, вошедший в блок DEPART в момент времени 70, не вошел также в соответствующий блок QUEUE в момент времени 70. 2. а). При обычном восьмичасовом рабочем дне в парикмахерскую может прийти 26 клиентов. Например, если интервал !.ри\-ода всегда равен 18 мин, то первый придет ь момент времени 18, а двадцать шестой — п момент времени 468. Диаапать седьмой клиент пришел бы а момент времени 486, т. е. через 6 мин после закрытия парикмахерской. б). Данный вопрос требует дополнительного разъяснения. Может показаться, что при продолжительном моделировании, если клиенты приходят каждые 18 мин, а на обслуживание у парикмахера уходит 16 мин, то в результате получится 16/18 нлн 88,9%. Но даиный расчет не учитывает условии, возникающих в начале восьмичасового рабочего дня (например, а модели примера моделирования 2А парикмахер остается незанятым первые 12 мни). Не учтепа также ситуация, возникающая в конце рабочего дня (уходит ли парикмахер сразу же после истечения восьмичасового рабочего дня, как это имеет место в примере моделвровання 2А, илн же он работает до тех пор, пока не обслужит всех клиентов). При работе с постоянными интервалами времени прихода и времени обслуживания по 18 и 16 мин соответственно загрузка парикмахера п течение восьмичасового рабочего дня равна 86,0%. (Всего првходит 26 клиентов. Это означает, что парикмахер занят 416 мин, а также, что он должен работать до момента времени 484, так как должен завершить обслуживание 26-го клиента, время появления которого приходится на момент времени 468. Тогда соответствующее значение загрузки будет равно 416/484 или около 86,0%.) в). AVERAGE UTILIZATION = (NUMBER ENTRIES) (AVERAGE TIME/TRAN)/480 ЗАГРУЗКА == - (ЧИСЛО ВХОЖДЕНИЙ) (СРЕДНЕЕ ВРЕМЯ/ ТРАНЗ)/480. г). Частота случаев, когда клиентам в модели примера 2А не пришлось ждать освобождения парикмахера, равна 0,444 (ПРОЦЕНТ НУЛЕВЫХ/100). Оценка вероятности того, что клиенту не придется ждать, таким образом, равна I — 0,444 = 0,556. л). СРЕДНЕЕ СОДЕРЖИМОЕ • - (OBIHUE ЧИСЛО ВХОДОВ) (СРЕДНЕЕ ВРЕМЯ/ТРАНЗ)/480. <?). «СРЕДНЕЕ ВРЕМЯ/ТРАНЗ = ... (СРЕДНЕЕ ВРЕМЯДРАНЗ) (ОБЩЕЕ ЧИСЛО ВХОДОВ) (ОБЩЕЕ ЧИСЛО ВХОДОВ— ЧИСЛО НУЛЕВЫХ ВХОДОВ) ж). Если в течение интервала моделирования есть какие-либо входы в заданную очередь, то максимальным значением параметра МАКСИМАЛЬНОЕ СОДЕРЖИМОЕ для этой очереди будет равно единице. Счетчик «МАКСИМАЛЬНОЕ СОДЕРЖИМОЕ» корректируется при обработке блока QUEUE, при этом не может быть выполнена проверка, является ли траизакт, установивший новое значение МАКСИМАЛЬНОГО СОДЕРЖИМОГО, нулевым вхождением нли нет. 6. б). Надо заменить значение операвда А блока TERMINATE в сегменте 1 модели на 1. Надо заменить значение операнда А блока TERMINATE сегмента модели 2 на 25. Надо также заменить значение операнда А карты START на 25. При этом моделирование завершится либо когда 25 клкентов-траизактов завершает свое пребывание в модели, либо когда завершит свое пребывание в модели траизакт-таймер. То, что произойдет раньше, завершит моделирование. Если моделирование завершится по инициативе траизакта-таймера, конечным значением счетчика завершений будет отрицательная величина (что вполне допустимо). в). AVERAGE CONTENTS (СРЕДНЕЕ СОДЕРЖИМОЕ) = 0,710 TOTAL ENTRIES (ЧИСЛО ВХОЖДЕНИЙ) = 3 ZERO ENTRIES {ЧИСЛО НУЛЕВЫХ) = 0 PERCENT ZEROS (ПРОЦЕНТ НУЛЕВЫХ) = 0 AVERAGE TIME/TRANS (СРЕДНЕЕ ВРЕМЯ/ТРЛНЗ) = 23,666 «AVERAGE TLWTRANS («СРЕДНЕЕ ВРЕМЯЯРАНЗ) = 23,666 CURRENT CONTENTS (ТЕКУЩЕЕ СОДЕРЖИМОЕ) = I 514
BLOC* NUMBЕЛ *LCC OPERATION A,3,C,D,E,f,G SIMULATE * MODEL SEGMENT 1 COMMENTS CARD NUMBER I 2 3 k 1 2 3 4 5 Б 7 » 8 9 * FAC 1 L 1 TY* CLERK QUEUE LINE FACILITY CLERK GENERATE 300,250 QUEUE LINE SEIZE CLERK DEPART LINE ADVANCE 280,150 RELEASE CLERK TERMINATE MODEL SEGMENT 2 GENERATE 28800 TERMiMATE 1 CONTROL CARO(S) START 1 END AVERAGE UTILIZATION .798 MAXIMUM AVERAGE CONTENTS CONTENTS 2 ,2-Sl AVERAGE UTILIZATION 1 .826 a) MECHANICS ARRIVE CHECK INTO THE QUEUE CAPTURE THE CLERK CHECK OUT OF THE QUEUE SERVICE TIME ELAPSES FREE TME CLERK LEAVE THE TOOL CRIB TIMER ARRIVES AFTER 8 HOURS SHUT OFF THE S1MUIA710H START THE SIMULATION RETURN CONTROL TO THE OPERATING SYSTEM NUMBER ENTRIES 85 TOTAL ENTRIES ь) 85 NUMBER ENTRIES 86 AVERAGE SEIZING TIME/TRAN TRANS. NO. 270.541 PREEMPTING TRANS. NO. ZERO PERCENT AVERAGE ENTRIES ZEROS TIME/TRANS 57 l»3.5 95.361» AVERAGE SEIZING TIME/TRAN TRANS. NO. 276.802 6 5 6 1 8 9 10 11 12 15 ltt 15 16 17 18 19 20 21 $AVERAGE TIME/TRANS 168.875 PREEMPTING TRANS. NO. QUEUE - LINE РИС. У7 MAX 1 MUM CONTENTS 3 AVERAGE CONTI-NTS .329 TOTAL ENTRIES 88 ZERO ENTRIES 38 PERCENT ZEROS «.1 AVERAGE TIME/TRANS 107.8I»0 «AVERAGE TIME/TRANS 189.799 B) 7. Модель данного упражнения легко построить по аналогии с моделью примера 2А. Можно заметить, что в соответствии с заданными величинами подразумеваемой единицей модельного времени является не 1 мин, ale, Моделирование в течение восьмичасового рабочего дня определяет, что значение времени, когда входит транзакт- таймер второго сегмента модели, принимается равным 28 800. На рис; У7, а представлен текст программы моделирования для восьмичасового рабочего дня, когда работает кладовщик с зарплатой 4 доллара в час *. Если поменять в блоке ADVANCE значение 150 операнда В на SO, то мы придем к модели с кладовщиком, получающим 4,5 доллара s час. Здесь можно заметить, что было бы удобно, чтобы с помощью одной колоды перфокарт можно было провести моделирование для двух вариантов. После того, как в параграфе 2.34 мы введем описание карты CI-EAR (ОЧИ- 1 Перевод комментариев в приложении. 33* в распечатках приведен СТИТЬ), станет ясно, как можно выполнять моделирование для альтернативных вариантов конфигурации моделей с помощью единственной колоды перфокарт за один прогон программы. На рнс. У7, б показаны значения статистических данных, полученные для случая работы кладовщика, получающего 4 доллара в час, посте выполнения исследования па модели, показанной па рис. У7, а. На рис. У7, в «оказаны значения статистических данпых, подученные для случая работы Кладовщика, получающего 4,5 доллара в час, после исследования модифицированной модели рис. У7, а. Ввиду нехватки места, параметры статистики NUMBER TABLE (НОМЕР ТАБЛИЦЫ) и CURRENT CONTENTS (ТЕКУЩЕЕ СОДЕРЖИМОЕ) опущены. (ТЕКУЩЕЕ СОДЕРЖИМОЕ) для варианта с кладовщиком с зарплатой 4 доллара в час было равно в конце моделирования нулю, а в варианте с кладовщиком с зарплатой 4,5 доллара в час оно было равно двум). Замечание. Результаты, представленные па рис. У7, б, е, получены при моделировании с использованием интерпретатора GPSS/360, версия I. Как было указано в гл. I, в результате по умолчанию в качестве начального зиа- 515
чеиия множителя в подпрограммах-генераторах случайных чисел была использовано величиаа 1. При модгли- роаании с использованием интерпретатора GPSS'360 версии 2 или интерпретатора GPSSV, а также других интерпретаторов результаты могут быть иными, но отличия будут незначительными. На рис. У7, С) показано, что среднее значение числа рабочих в очереди при моделировании варианта с клвдов- |дкком с зарплатой 4 доллара в час было равно 0,281. Умножая эту величину на стоимость издержек из-за простоя рабочих, 144 доллара за восьмичасовой рабочий деиь, получим величину 40,46 долларов. Прибавим сюда 32 доллара, заработанные кладовщиком, и получим суммарные издержки восьмичасового рабочего дня, равные 72,46 долларам. При аналогичном расчете с использованием дапымх, приведенных на рис. У7, я, получим, что издержки возросли до 83,38 долларов (простои рабочих дал издержки 47,38 долларов, а заработок кладовщика составил 36,00 долларов). Результат моделирования в течение восьмичасового рабочего дня показал, следовательно, что в целом использование варианта с кладовщиком, получающим 4 доллара в час, выгоднее иа 10,92 долларов в день. Полученный результат показыввет, что средняя длина очереди к кладовщику с зарплатой 4,5 доллара в час больше, чем к кладовщику с зарплатой 4 доллара в час. Размах в распределении времени обслуживания в варианте с кладоащиком, получающим 4,5 доллара в час, меньше, чем в варианте с кладовщиком, получающим 4 доллара в час. Это, в свою очередь, должно уменьшить неэффективность системы, получающейся из-за разброса времен обслуживания и значений интервалов прихода (заметим, что если бы интервалы прихода всегда были равны 300 с, а время обслуживания всегда было бы равно 250 с, то ин одному рабочему не пришлось бы ждать обслуживания). Таким образом, при длительном моделировании средняя величина длины очереди к кладовщику с зарплатой 4,5 доллара в час должна быть меньше, чем к кладовщику с зарплатой 4 доллара в час. При анализе «что же тут не так» заметим, во-впервых, что все восьмичасовые рабочие дни в нашей задаче не одинаковы для кладовщиков. Параметры статистики, приведенной на рис. У7, б, показывают, что в случае с кладовщиком с зарплатой 4 доллара в час за день пришло 85 рабочих в кладовую, а в случае с кладовщиком с зарплатой 4,5 доллара в час за день пришло 88 рабочих. Более того, кладовщик с зарплатой 4 доллара в час работал почти на 4% быстрее, чем должен был п среднем AVERAGE TIME/TRAN (СРЕДНЕЕ ВРЕМЯ/ТРАН) = 270.541, а предполагалось в среднем 280. Совсем не так обстоит дело с кладовщиком с зарплатой 4,5 доллара в час AVERAGE TIME/TRAN ■— 276,802, а предполагалось в среднем также 280. Следовательно, сравнение двух вариантов работы рабочих кладовой при таком простом подходе явно неудачно. Иначе говоря, работа двух кладовщиков сравнивалась при различных условиях эксперимента. При этом возникают два вопроса. Первый из них — почему же последовательности интервалов времени в двух случаях были различны? Ответ (как станет яспо из описания, приведенного в гл. 3) заключается в том, что в обеих моделях используется лишь один генератор случайных чисел интерпретатора GPSS для разыгрывания случайных значений интервалов времени в блоках GENERATE и ADVANCE. Оба варианта моделирования начинались при одних и тех же начальных, заданных по умолчанию, значениях параметрах этого генератора. Однако последовательность событий в одпой модели не совладает с последовательностью событий, развивающихся параллельно в другой модели. В некоторой точке моделирования елс- аук«1\«м событием в моделях с кладовщиком, получающим 4,5 доллара в час, явилось планирование завершепия моделирования (прн этом используется очередное значение случайного числа), в то время, как соответствующим следующим событием в модели с кладовщиком, получающий 4 доллара в час, явилось планирование времени прихода (что также происходит с использованием очередного значения случайного числа). Следовательно, одно я то же случайное число использовалось в этих моделях для различных целей. Поэтому последовальности интервалов прихода рабочих в кладовую и двух парнантах моделирования отличаются друг от друга. Подобное же замечание можно было бы сделать относительно статистики AVE- RAGE TIME/TRAN, относящейся к прибору-кладовщику. Второй возникающий здесь вопрос: каким же образом можно провести сравнительное изучение работы кладовщиков при одинаковых наборах параметров условий моделирования? В гл. 3 показано, как это реализуется. В упражнении 2 параграфа 3.21 описано, как надо построить модели на GPSS ири описании работы кладовой для того, чтобы два варианта работы кладовщиков можно было исследовать прн одинаковых множествах условий экспериментирования. Отклонение расчетного результата от интуитивно кажущегося объяснено в описания терминов генерирования случайных чисел. Конечно же модели дают лишь оценку ожидаемых значений случайной переменной «содержимое очереди». Прн моделировании на интервале восьмичасового рабочего дня распределение этой случайной величины имеет большое стандартное, отклонение (это следует из результатов дополнительного моделирования, не представленных здесь). Данные но оч.'реди дают опенку но малому числу значений каждого и.ч распределений для двух кладовщиков. Сравнение данных, касающихся оценки параметров очереди, показывают, что дапные п варианте с кладовщиком, получающим 4.5 доллара п час, превосходят данные моделирования в варианте с кладовщиком, получающим 4 доллара в час, что противоречит результату, полученному прн длительном моделировании. Каким же образом можно улучшить качество сопоставления вариантов? Одним ил путей может быть проведение экспериментов на модели прн одинаковых экспериментальных условиях. Другим путем (менее желательным) является значительное увеличение времени моделирования. Здесь мы будем опираться па идею о том, что при увеличении числа испытаний (т. с. при увеличении длительности моделирования) оценка величины содержимого очереди стремится к значению математического ожидания. Следуя этому последнему подходу, интервал, на котором проводится моделироваине, мы увеличили до десяти дней на каждый вариант модели. При этом получилось, что для вариантов работы кладовщиков с зарплатами 4 доллара л час и 4,5 доллара в час среднее значение длины очереди было 1,455 и 0,894 соответственно (общее число приходов рабочих к кладовщикам г зарплатами 4 доллара и 4,5 доллара в час получилось 93Б и 922 соответственно). Стоимостные расчеты, основанные на этих результатах, показали, что работа кладовщика, получающего 4,5 доллара в час ва интервале в 10 рабочих дней, выгоднее па 40.78 доллара (т. е. на 4,08 доллара в день). Этот результат является достаточно близким к результату, получен пому при моделировании, проведенном при одинаковых мпожествах условий экспериментирования (здесь они не показаны). Таким образом, можно заключить, что из двух кладовщиков выгоднее нанять того, у которого зарплата выше. 2.23. Упражнения 2. а). Все тратаакты имеют пулевой уровень приоритета. Это значение присвоено нм по умолчанию. б). Трапзакт с номером 2 не может войти в модель, символизируя собой клиента. Этот трапзакт будет оставаться в цепи будущих событий до момента модельного времени 480, после этого он войдет и модель и тот же час завершит ее работу. в). I —значение времени в строках 11 и 12 — 58; 2 — значение времени в строках 13 и 14 — 59; 3 — четвертого клиента представляет первый трапзакт; 516
Помер строки 1 2 з 4 5 (> 7 8 9 10 Значение модельного времени Перед фазой ввода После фалы овода 7 17 17 Цепь текущих событий «— . ■—— Пусто Пусто Ц.КМР.НЕТ.0,11 Пусто |З.КМР.ПЕТ.0,1] [З.КМР.2,0,3] 20 1 f3,KMP,2,0,3l |4,K«P.HET,0,IJ 20 [ [З.КМР.2,0.3] 14.КМР.2ДЗ] 20 26 З.КМР.2.0,31 14,КМР.2,0,8| 1,КМР.5,0,6] |5.КМР.НЕТ,0,|] 4.КМР .2,0.31 I5.KWP .2,0.31 Цепь будущих совытйв «-—— nvcro [1.7.HET.0.I] [2,480,НЕТ,0.81 I2.480.HET.0.8) [3,17,НЕТ,0.1] 11.20.5.0,6] F2,480.HET.0.8J Г 1,26,5,0,61 [2.480.НЕТ.0.8] f4,20,HET.0,U 11,26,5.0.61 f2,480.HET,0,8] Ц.26,5,0,6] [2.480.НЕТ.0.81 f 1.26.5.0.6] [5,26,НЕТ,0.Ц ]2.480,НЕТ.0.8] [2.480,!1ЕТ,0,{!1 13,41.5,0.61 ПД5.НЕТ.0.П |2,480,НЕТ,0,81 Рис. УЗ 4 — парикмахер свободен в точение I мин модельного врсмепи (от значения 58 до 59). 5 — пятого клиента представляет четвертый трак- закт; 6 — пятый клиент придет в момент модельного врсмеии, равный 75; 7 — пятый клиент должен будет подождать 1 мин (он придет в момент времени 75, а ближайшее завершение обслуживания произойдет в момент времени 76). 3. Ответы иа поставленные в этом упражнении вопросы можно найти в таблице (рис. УЗ), состоящей из десяти строк и показывающей состояния цепи. 4. В первом сегменте последовательность блоков такова, что в блоке GENERATE при определенных условиях транзакту будет отказано во входе. Этого нельзя сказать о сегменте 2. В случае, рассмотренном на рис. 2.29, это невозможно. Это означает, что распределение интервалов времени поступления требований, реализоваипое в первом сегменте, вероятнее всего будет не 10 ± 3. а X ± 3, где величина X больше десяти. 5. а). Как показано на рис. 2.27, второй траггаакт- клиент входит в блок GENERATE в момент врсмепи 27, по оп не может покинуть блок GENERATE до момента времени 32, пока первый клиент ие освободит прибор JOE. Это означает, что третий трапзакт-клнеит не может войти в блок GENERATE до момента времени 49(32+ 17). Второй транзакт-клиент должен будет освободить прибор п момент времени 44 (32 -I- 12), н тогда третий транзакт- клиент будет вглиуждеп задержаться в блоке GENERATE. Четвертый транзакт-клиент должен войти в блок GENERATE В момент времени 64 (49 ■+- 15). Но третий транзакт-клиент освободит прибор-парикмахера в момент 63 (49 + 14), поэтому четвертый транзакт-клиент также вынужден задержаться в блоке GENERATE. б). Надо просто вставить блок ADVANCE между блоками GENERATE и SEIZE, операнды А и В этого блока не записывать (т.е. определить их по умолчанию). Блок ADVANCE никогда не отказывает во входе транзакту, поэтому последний всегда будет выходить из блока GENERATE, что даст гарантию того, что не возникает нарушение процесса разыгрывания значений последовательности интервалов времени прихода. При входе транзакта ь этот блок ADVANCE интерпретатор тут же пытается переместить его в следующий за ним блок SEIZE (поскольку по умолчанию времи задержки в блоке ADVANCE равняется нулю). Если прибор оказывается занятым, транзакт остается в блоке ADVANCE и в цепи текущих событий, а блоком для последующего перехода этого транзакта является блок SEIZE. При этом дисциплиной обслуживания очереди к прибору является дисциплина «первым пришел — первым обслужен». 6. а). Момент времени 4. Момент временя 8. Момент временя 13. Момент временя 17. д). Момент временя 22. с). Начиная от момента времени 4, траизакты покидают блок GENERATE каждые 9 единиц времени, ж). Момент времени 40. 7. а). Траизакты входят в блок QUEUE n моменты времени 960, 1900 и 2850. б). Траизакты входят в блок QUEUE n моменты времени 950, 1850 и 2750. в). Наиболее ранними возможными временами (это вытекает из минимального значения иптервалз времени прихода, равного 900) являются 900, 1800 И 2700. Наиболее поздними возможными временами прихода (это вытекает из максимального значения интервала, равного 1000) являются 1000, 2000 и 3000. г). Наиболее ранними возможными временами (это вытекает из значения мннимальпой задержки, указанного в блоке ADVANCE, равного нулю) являются 900, 1800 и 2700. Наиболее поздними временами (это вытекает из значения максимальной задержки, равпого 100, указанного в блоке ADVANCE) являются 1000, 1900 и 2800. 8. Решение этой задачи приведено в упражнении 7.г данного параграфа. При этом блок «QUEUE 1» а сегменте 4 надо заменить на блок «QUEUE STACK». Ключом к решению данной задачи является невозможность выразить опоздание самолета с помощью операнда. В блока GENERATE. Любая попытка сделать это иемедлеиио приведет к тому, что задержка станет накапливаться, поскольку момент прибытия ^го транзакта будет сказываться на вшможпом значении времени прибытия <J J ■ 1)-го транзакта. По условию же задачи опоздание любого самолета лс должно влиять иа время ггрялета остальных самолетов. 9. а). Событие прихода пришлось иа момент времени 27. Событие завершения обслуживания пришлось на момент модельного времени 32. Следовательно, в терминах модельного и реального прсмеии возникновение событии прихода предшествовало возникновению события завершения обслуживания. Именно поэтому в цепи будущих событий транзакт, моделирующий завершение обслуживание, помещается следом за транзактом, моделирующим событие прихода (в цепи будущих событий при условии одновременного выхода транз'актов реализуется дисциплина «первым пришел — первым обслужен»). В момент времени 44, когда оба эти траязвкта переместились us 517
пели будущих событий в цель текущих событий, порядок их расположения остался прежним, поскольку уровепь приоритета у них одинаков. 6). В модели примера 2А три указанных условия не могут существовать одновременно. Если очередь пуста, то имело место планирование следующего прихода и момент, когда транзакт-клнент, находящийся сейчас на обслуживании, вышел из блока GENERATE. Это означает* что плавированиь прихода предшествует планированию значения интервала времени обслуживания. В свою очередь, при возникновения описанного в упражнении времелпого узла транзакт, представляющий событие прихода, располагается непременно перед транзактом, представляющим событие завершспия обслуживании в цепи текущих событий, в). Временные узлы с событиями «прихода требований» в общем случае могут возникать в двух (или обоих) случаях: 1) в блоке GENERATE могут возникать нулевые времена интервала перехода; 2) события приходов могут возникать одновременно ири использовании даух или более разлнчвых блоков GENERATE. Пример моделирования 2А не отвечает нн одному из перечисленных случаев. (Далее, в примере моделирования 2В, описана возможность прихода транзактов-клнентов через два разных блока GENERATE.) 2.25. Упражнения I. а). На рис. 2.30 в цели текущих событий показано, что событие завершения обслуживания запланировано на момент времени 480 (транзакт 3, находящийся в цепи текущих событий, должен перейти из блока 5 в блок 6, являющийся блоком RELEASE). Из описания логики моделирования мы знаем, что завершение моделирования также планируется на момент времени 480. Заметим, однако, что транзакт, моделирующий собой таймер, в цели текущих событии не находится, поскольку он уже вышел из модели в момент, когда произошла распечатка содержимого цепей. б). Событие завершения моделирования происходит ранее. Это объясняется тем, что транзакт 2 находится в цеп в текущих событий перед трапзактом 3 в тот момент времени (480). когда начинает работать фаза просмотра. в). Моделирование будет завершено до того, как интерпретатор начнет работать с третьим траазактом иа фазе просмотра в момент времени 480. Таким образом, событие завершения обслуживания пе успеет произойти до того, как распечатается содержимое цепей. г). Если в сегменте 1 модели задать уровень приоритета тралзактов, равный единице (или выше), задав соответствующее значение операнда £ блока GENERATE. а транзакт-таймер по умолчанию оставить с уровнем приоритета, равным нулю, то можно получить желаемый эффект. В «том случае транзакт- таймер будет располагаться позади всех остальвых транзактов в цени текущих событий в момент фазы просмотри (момент 480). д). Если бы последовательность событий была такой, как предполагается в п. г.), то цепь текущих событий в момент времени 480 (момент завершения моделировании) была бы пустой. Перед тем, хак началась бы фаза просмотра, в этот момент времени транзакт 4 находился бы в начале цени текущих событий, а транзакт 3 сразу следовал бы за ним. Транзакт 2 находился бы в конце цепи текущих событий. Тогда фаза просмотра протекала бы в следующем порядке: 1) рассматривая транзакт 4, интерпретатор отметил бы, что он все еще находился в заблокированном состоянии; 2) обрабатывая транзакт 3. интерпретатор переместил бы его ь блок RELEASE н далее в TERMINATE; 3) поскольку был бы обработан блок RELEASE. интерпретатор начел бы фазу просмотра цепи текущих событии от начала. Опять рассматривая транзакт 4, интерпретатор переместил бы его в блоки SEIZE, DEPART в ADVANCE и далее вывел бы иа цепи текущих событий, помещая в цепь будущих событий; 4) поскольку был бы обработан блок SEIZE, интерпретатор начал бы фразу просмотра цепи текущих событий от начала. В целя текущих событий теперь остался бы только транзакт 2 (транзакт-таймер). Его следовало бы поместить а соответствующий блок GENERATE; затем его надо было бы ломестнть в блок TERMINATE, пывести из модели и завершить моделирование. Таким образом, в конце фазы просмотра цепь текущих событий оказывается пустой. Когда интерпретатором GPSS осуществляется распечатка цепей, а цепь оказывается пустой, то печать всей внформацнн, касающейся этой цепк, подавляется. Указанием на то, что данная цепь оказалась пустой, как раз и является полное отсутствие информации об этой цепи в распечатке. (Даяиое высказывание предполагает, что для распечатки пепси предусмотрено использование пользователем операнда D карты START нли же блока PRINT, который описан далее в этой же главе в параграфе 2.24). 2. Транзакт номер 5 представляет собой событие последующего прихода в блок GENERATE (оператор 8). Как показано иа ркс. 2.29, интерпретатор запланировал этот последующий приход до того, как транзакт-таймер переместится и блок TERMINATE (оператор 9). 3. Ожидающего клиента моделирует транзакт номер 4. Его время выхода из блока (т. е. время перемещения в модели) равно 472. Из рисунка видно, что иптерпретатор не заменяет значение времени перемещения па КЛ1Р при переходе траизакта из цепи будущих в цепь текущих событий. Это значение времени остается без изменений. (Это означает, что время выхода из блоха транзактов в цепи текущих событий часто остается без указания конкретного времени для обработки. На логику функционирования GPSS это обстоятельство не оказывает отрицательного влияния.) Мы можем заключать, что транзакт номер 4 вошел в цепь текущих событий в момент модельного времени, раввый 472, и, следовательно, ему пришлось ждать 8 мин модельного времени. 2.28. Упражнения l.a). Из рассмотрения цепи текущих событий на рнс. 2В.4 видпо, что транзакт, текущее значение счетчика блока которого равно 2, имеет номер б. б). Из рассмотрения цепи будущих событий на рис. 2В.4 видно, что транзакт, текущее значение блока которого равно 13. имеет номер 1. в). В очереди находится транзакт номер 6. (Он уже прошел блок QUEUE, оператор 2, но еще не вошел в блок DEPART, оператор 4. Его значение времени выхода из блока равно 457. Значит в очереди он находится 23 единицы модельного времени.) г). Из рассмотрения целя будущих событий на рис. 2В.4 видно, что трапзакт 4 моделирует собой клиента, который только стрижется, он придет в парикмахерскую следующим. д). Счетчик входов а блок RELEASE, оператор 6, равен 12. Это означает, что 12 клиентов, которые приходили только стричься, полностью обслужены. Счетчик входов блока RELEASE, оператор 14, показывает значение 7. Это означает, что семь клиентов, которые приходили стричься н бриться, полностью обслужены. 2.а). Транзакт 2 моделирует собой клиента, который пришел стричься и бриться Завершение бритья системой запланировано на рассматриваемый момент времени. Стрижка начнется в тот же момент времени (момент времени 50). б). Транзакт 2 моделирует собой клиента, который пришел стричься и бриться, причем его только что начали
11омер 1 2 .3 4 5 6 7 8 9 10 Значение модельного временя Перед фазой ввода После фазы ввода .31 31 4G 46 51 51 60 60 Цепь текущих событий * Пусто Пусто П.КМР.НЕТ.О.Ц Пусто [1,КМР,5,0.6] Пусто [2.КМР.НЕТ.0.8] Пусто [2.КМР. 12,0,131 Пусто Цепь будущих события * Пусто [1,31,НЕТ,0,Ц [2,51,НЕТ.0,8] |3,480,НЕТ,0,1Г>] 2.51.НЕТ Д8] |3.480.HET,0.1fi| 1,46.5.0.6] 12,51,НЕТ.0.8] |4.69.НЕТ,0,1] 3,480,НЕТ,0,16] 12,51.НЕТA8J (4,64,НЕТ.0,1] [3,480,HFT,0,16] 12,51.HET,0,8J [4,69,НЕТ,0.1] 13,480.HET,0,16| Г4,09,НЕТ,0.1]![3,480.НЕТ.0,1(>1 [2.60,12,0.13] [4,fi9.HET,0,l] |1,83.НЕТ,0,8] [3,480,НЕТ.0,16] |4,69.НЕТ,0,1] [1,83,НЕТ,0,8] [3.480.НЕТД16] 12,64.13.0,14] [4,69.НЕТ.0,1] (1.83.НЕТ.0.81 [3,480,НЕТ,0.16| Ряс. У4 стричь (в конце фазы просмотра цени в момент времени 50). Стрижка закончится в момент времени 64. в). Первый транзакт, который моделирует клиевта, пришедшего только стричься, выйдет от парикмахера в момент времени 84. Это следует из зпачеиня элемента «время выхода» транзакта номер I п цепи будущих событий в строке 10. г). Следующий выход транзакта из пассивного буфера Произойдет в момент модельного времени 72. С его помощью будет запланирован очередной приход клиента, который будет только стричься. (Следующим за ним событием при моделировании, помимо строки 10 иа рис. 2.33, явится приход пятого транзакта в блок GENERATE, оператор 1.) В момент времени 72, таким образом, транзакт номер 2 будет выбрап из вершины пассивного буфера а помещен в цепь будущих событий для моделирования только стригущегося клиента, который должен прийти в парикмахерскую в момент времени 100 (72 -J- 28). З.а). Клиент, пришедший только стричься, попадет] иа обслуживание первым. В процессе выполнения фазы ввода интерпретатор обрабатывает сначала блок GENERATE, являющийся первым оператором, и планирует событие приходи в этот блок. Позднее, на фазе ввода, когда интерпретатор дойдет до блока GENERATE, являющегося восьмым итератором, ом запланирует приход в этот блок соответствующего транзакта, моделирующего клиента, претендующего на стрижку н бритье. Этот транзакт станет позади транзакта, моделирующего только стригущегося клиента {а цепи будущих событии в случае возникновения временного узла по значению параметра «время выхода» существует дисциплина обслуживания «первым пришел — первым обслужен»). б). Если сегменты модели поменять местами, то поменяется местами и обработка событий, попавших во времен-' ной узел. в). Ключом к решению данной задачи является выяснение вопроса о том, в каком относительном порядке на оси реального времени планируется возникновение событий прихода. Если сначала запланировано возникновение события прихода только стригущегося клиента, то он будет обслужен раньше (уровни приоритета одинаковы), н наоборот 4.а). Первому нз только стригущихся клиентов соответствует транзакт номер I. б). Первыми четырьмя устанавливаемыми значениями таймера являются 31, 46, 51 и 60. Это зпачнт, что значением таймера в строке 10 будет 60. в). Первый из только стригущихся клиентов (транзакт номер I) вышел нз модели в момент времени 46. (В момент времени 51 транзакт номер 1 вернулся в модель в качестве очередного клиента, претендующего на стрижку и бритье. Время его прихода запланировано па момент 83. Таким образом, п строке 10 транзакт номер 1 находится в цепи будущих событий, моделируя собой соответствующего бреющегося и стритущегосн клиента, который пока что находится «па пути» в парикмахерскую.) г). Транзакт 2 моделирует первого из клиентов, желающих стричься и бриться. д). В строке 10 транзакт 2 находится а цепи будущих событий, имея параметры (2, 64, 13, 0, 14]. Находясь в блоке 13, этот первый бреющийся в стригущийся клиент попадает на стрижку, причем время завершения стрижки планируется на момент времени 64. е). Т рана акт 4 моделирует собой второго нз только стригущихся клиентов. На рнс. У4 показано состояние цепей, из которых брал я информацию, указатгую в этом упражнении. 6. Любой транзакт всегда проходит оба блока QUEUE в один и тот же момент модельного времени. 'Аналогично любой транзакт проходит оба блока DEPART в один н тот же момент модельного времени. Поэтому порядок следования блоков в любой из этих пар ко играет роли и нет основании считать, что если и одной и:1 пар мы поменяли блоки местами, то также надо менять местами блоки в другой паре. 7. Так же, как и в сегменте 1 модели на рис. 2В.2, поставьте блок «SEIZE JOE1» следом за блоком «SEIZE JOE», а блок «RELEASE JOE1» либо перед, либо за блоком «RELEASE JOE». В сегменте 2 модели поставьте блок «SEIZE JOE2» следом за блоком «RELEASE JOE». Тогда прибор JOE1 собирает статистику об обслуживании отдельно для только стригущихся элементов, а прибор JOE 2 собирает статистику об обслуживании отдельно для стригущихся и бреющихся клиентов. Прибор JOE продолжает собирать статистику об обслуживании агрегированным образом клиентов обоих типов (А какой нежелательный эффект вызовет то, что блок «SEIZE JOE1» будет нахо- 519
литься перед блоком «SEIZE JOE» u сегменте I модели и (или) «SEIZE JOE2» будет находиться перед «SEIZE JOE» в сегменте 2 модели?) 2.31. Упражнения l.a). Цепь текущих событий пуста (ни один из механиков не ожидает кладовщика, а последний свободеп). б). В цепи будущих событий первым и вторым стоят транзакты с номерами 3 и 2 соответственно. Каждый нз пнх имеет параметр «время движения», равный 28 800. Транзакт 2 находится позади транзакта 3, поскольку, когда он был помещен в цепь будущих событий трапэакт 3 уже там находился. в). В процессе фазы корректировки н момент модельного времени 28 800 транзакт 2 располагается перед транзактом 3 в цепа текущих событий, поскольку у него уровев'. приоритета выше,' в противоположность тому, что имело чесго, когда эти же два транзакта находились в цепи будущих событий. Во время фазы просмотра в момент модельного времени 28 800 транзакт 2 уже будет занят прибором- кладовщиком, когда моделирование завершится. З.а). В модель необходимо внести самостоятельный отдельный сегмент следующего вида: GENERATE 210,.,1,1 SEIZE JOE ADVANCE 30 RELEASE JOE TERMINATE Также необходимо изменить операнд А блока GENERATE с 480 на 510, увеличив тем самым время моделирования на 30 мин. Ввиду включения а модель показанного выше сегмента транзакт с более высоким приоритетом будет занимать прибор-парикмахера либо в полдень (момент времени 210). либо как только прибор станет свободен после обслуживания. В этом случае прибор будет оставаться недоступным для трапзактов-клнентов до тех пор, пока ие истекут 30 мин молельного времени. Конечно эти 30 мни занятости отразятся на статистических данных о работе ирибора, которые появятся потом в распечатке. А это будет означать, что, к сожалению, к интерпретации результата надо подходить весьма осторожно. Система GPSS V предоставляет пользователю средства для устране» ная этого недостатка (см. приложение А.) Заметим, что в предлагаемом варианте модели клиенты будут продолжать приходить в парикмахерскую и ждать обслуживания, несмотря на то, что парикмахер отправляется на перерыв. Наличие перерыва вызывает введение 50% от общего времени отдыха парикмахера в течепне всего рабочего дня (он имеет примерно 2 мин отдыха на одного клиента при длительном моделировании и в течение 510 мин модельного времени он обслуживает 28 человек). В результате величина загрузки парикмахера увеличивается до 90%. 2.35. Упражнения l.a). Первым из четырех транзактов является транзакт с номером 1. Ои входят в модель в момент модель ного времени, равный 1. (Вспомните, глядя иа рис. 2.29, что, если интервал времени прихода устанавливается равным пулю на фазе ввода, интерпретатор его заменяет иа единицу). б). Вторым из четырех транзактов является транзакт с номером 3. Он входит в модель в момент модельного времени, равный 1. в). Первый из четырех травэактов будет находиться уже в блоке ADVANCE, оператор 2, и одновременно в цепи будущих событий, когда второй нз трапзактоп входит в блок ADVANCE. Объяснить данные ответы можно следующим образом: ]) после завершения фазы ввода цепь текущих событий пуста (как обычно), а цепь будущих событий содержит два транзакта [1,1, НЕТ, 0.11 и [2.2400, НЕТ. 1,1] и именно в таком порядке; 2) при первом выполнении фазы корректировки таймер продвигается на единицу и первый транзакт перемещается в цепь текущих событий, что выражается там записью [l.KMP.HET.O.l]: 3) в процессе первого выполнения фазы просмотра интерпретатор рассматривает транзакт 1, помещает его в блок GENERATE, оператор 1, и далее устанавливает, что блок, следующий за GENERATE, может принять транзакт; 4) интерпретатор временно приостанавливает продвижение перпого транзакта и планирует следующее событие прихода в блок GENERATE, оператор 1. Выбирая нз вершины пассивного буфера транзакт 3, интерпретатор помещает его непосредственно в цепь текущих событий (это происходит всегда, когда на фазе просмотра значением интервале времени прихода является ноль), размещая его и этой цепи позади первого транзакта (няачс говоря, в качестве последнего элемента в своем приоритетном классе). В этот момент вид цени текущих событий слева направо имеет вид: [1. КМР. 1, 0, 2] [3, КМР. НЕТ. 0, 1 ]; 5) после завершения этапа планирования интерпретатор возобновляет продвижение транзакта I, помещая его в блок ADVANCE, оператор 2, рассчитывает время его пребывания там, которое оказывается ненулевым, и перемещает этот транзакт из цепи текущих в цепь будущих событий; 6) после завершения обработки первого транзакта продолжается просмотр цепи текущих событий. Последовательно продолжая двигаться по цепи, интерпретатор обнаруживает транзакт 3 (который, конечно же. является последователем транзакта I а смысле события прихода). Теперь обрабатывается транзакт 3, и при этом транзакт 4 должен быть выбран из вершины пассивного буфера в цепь текущих событий и поставлен там вслед за транзактом 3 в качестве его последователя в смысле события прихода: 7) будем продолжать рассматривать пример; когдя просмотр доходит до транзакта 4, его обработка вызывает выборку транзакта 5 из вершины буфера, перемещение его в цепь текущих событий н расположение его там вслед за транзактом 4 в качестве его последователя; когда просмотр доходит до транзакта 5 и тот перемещается через блок GENERATE, оператор, 1, то пикакнх повых событий прихода больше не планируется (поскольку лямнт на вес четыре транзакта исчерпан). В заключение отметим, что, когда первый этан фазы просмотра заканчивается, четыре транзакта уже входят в модель в момент времени 1 через блок GENERATE, являющийся первым оператором. Все четыре транзакта находятся в цени будущих событий (вместе с транзактом 2, транзактом-таймером), а Цепь текущих событий пуста. 2.а). После того, как сегмент 1 модели (рис. 2D-2) будет изменен, он должен иметь внд, показанный на рис. У2, а. Здесь представлена распечатка программы (конечно, блоки 1 и 2 на рис. У2, а можно расположить н под блоком «TRANSFER, BACK»). б). Решение этой задачи показано на рнс. У2, б также в виде распечатки программы для сегмента 1 модели. Заметим, что то, что теперь выступает о качестве блоков 5 и 6 на рнс. У2, б, должно находиться ниже того уроння, пя котором находились блоки 1 и 2 на рис. 2D-2. В противном случае прибор-печь будет занят в момент времени, равный единице, травзактом, переходящим нз блока, который теперь является блоком GENERATE, а это может нарушить одно из условий задачи. 4. На рис. У4 показала распечатка программы для GPSS модели при реализации и исследовании дисциплины обслуживания очереди «нервым ирвше.ч «— первым обслужен». Единицей модельного времени является 1 мин. Предполагается, что при моделнропапни вначале выполняется перпый этап и т. д. (Заметим, что приведенная здесь модель в значительной мерс сходна с той, которая приведена в примере 4С. В этом
BLOCK NUMBER 1 2 3 К 5 Б 7 8 BLOCK NUMBER 1 2 3 4 5 Б 7 8 9 10 11 12 13 14 15 ♦ LOC * • BACK OVEN *LOC • BACK OVEN LETGO OPERATION SIMULATE A,8,C,I MDDEL SEGMENT 1 GENERATE TRANSFER GENERATE ADVANCE SEIZE ADVANCE RELEASE TRANSFER OPERATION SIMULATE ...\ .OVEN ,.,3 30,5 OVEN 8,2 OVEN .BACK A,B,C,I MODEL SEGMENT 1 GENERATE SEIZE ADVANCE TRANSFER GENERATE TRANSFER GEHERATE AOVANCE TRANSFER GENERATE ADVANCE SEIZE * ADVANCE RELEASE TRANSFER .,.1 OVEN 3 ,LETGO ,,,1 ,OVEN ,,,1 10 ,OVEN ,,Л 30.5 OVEN 8.2 OVEN .BACK *) COMMENTS PROVIDE THE INVTIAL OVEN-USER GO CAPTURE THE OVEN PROVIDE THE OTHER 3 ASSEMBLERS ASSEMBLE THE NEXT WIOGIT CAPTURE THE OVEN USE THE OVEN FREE THE OVEN GO 00 THE NEXT ASSEMBLV 5} COMMENTS PROVIOE ASSEMBLER 1 CAPTURE THE OVEN IMMEDIATELY REMAINING OVEN USE TIME IS 3 MINUTES PROCEED TO RELEASE THE OVEN, ETC. PROVIDE ASSEMBLER 2 GO TO CAPTURE THE OVEN PROVIDE ASSEMBLER 3 REMAINING ASSEMBLY TIME IS 10 MINUTES GO TO CAPTURE THE OVEN PROVIDE ASSEMBLER ч ASSEMBLE THE NEXT WIDGlT CAPTURE THE OVEN USE THE OVEN FREE THE OVEN GO DO THE NEXT ASSEMBLY CARD NUMBER 1 2 3 и ъ 6 7 8 9 10 11 12 CARO NUMBER 1 2 3 4 5 Б 7 8 9 10 11 12 13 14 15 16 17 18 19 Рис/ У2 примере допускается возможность использования более одного крана и более одпой полировальной машины в системе. Кроме того, уропепь приоритетов, которыми наделяется оператор машины в смысле старшинства использования кранов, зависит от вила использования крапа.) Если операнду Е блока GENERATE, являющегося первым оператором на рис. У4, дать значение 1, то модель легко переделать в такую, где оператор полировальной матипм «мест старший приоритет при использовании крэиа. Такое различие в уровне приоритетов будет иметь значение (при дисциплине «первым пришел—первым обслужен») только тогда, когда выполняются следующие условия: 1) кран занят; 2} оператор полировальной машины ждет освобождения крапа (это аиачнт. что тот, кто использует кран в данный момент, должен иметь возможность быть вызываемым «па другие виды обслуживания»); 3) один или более «других видов обслуживания» ожидают освобождения крана; 4) наконец один нз ожидающих «другого вида обслуживания» ждет дольше, чем оператор полировальной машины. Будут ли возникать такио условия моделирования достаточно часто? Дли получения ответа па данный вопрос, во-первых, заметим, что кран используют очень интенсивно. Данные пи его использованию, приведенные в задании, показывают, что «другие работы» должны запять 64% времени работы крана, а оператор полнропальной машины должен использовать 24% времени, что составит при длительном моделировании 88%. Такой высокий процент загрузки дает основание считать, что довольно часто приходится ждать оспобождення крана. Действительно, моделирование, выполненное по модели на рис. У-1, показало, что значение среднего содержимого очередей STEP 4 н STEP 6 раппо 0,047 и 0,029 соответственно. (Это значит, что оператор полировальной машины проводит в ожидании крана 7,6% своего времени.) Параметр «О СРЕДНЕЕ ВРЕМЯ/ТРАНЗЛКТ» для двух этих очередей составил 17,2 и 14,1 мин соответствеипо. Очередь, введепия для «др\гих видов обслуживания» (в модели иа рис. У4 не показана), имеет значение «СРЕДИ ЕГО СОДЕРЖИМОГО» 0,331, а «И СРЕДНЕЕ ВРЕМЯ/ТРАНЗАКТ» — 21.4 мин. Эти дапные приводят нас к мысли, что условия I—4, указанные выше, должны возникать довольно часто. Это обстоятельство было тщательно проверено на численном уровне на модели, полученной путем модификации модели, представленной на рис. У4, коснувшейся возможности анализа состояния очереди к крану. В процессе моделирования на интервале 24 000 мин уелопяя от 1—3 выполнялись 45 раз. В 18 из этих 45 случаев выполнялось также условие 4. Оператор полировальной машины занимал крав в процессе моделирования 176 раз. Следовательно, давая оператору полировальной машины старший приоритет, мы изменим ситуацию в 10% всех случаев, когда ему требовался край (18 случаев нз 176), и примерно в 40% случаев, когда не он один ждал кран В модели на рис. У4 для моделирования полировальной машины понятие прибор не используется. Было бы интересно, однако, ввести прибор в модель дли определения ее авгрузкн. Для этого можно поместить блоки «SEIZE РМАСН» после блоков 2 и 14 иа рис. У4. а блоки «RELEASE РМАСН» — после блоков 6 и 12. Прибор будет находиться в состоянии обслуживания всегда, когда one- 521
DLOCK NUMBER 1 2 i и 5 6 7 8 9 10 11 12 13 ID IS 16 17 18 19 20 21 22 25 2 it >LOC OPERATION SIMULATE A,8,C,D,E,F,G COMMENTS 25 2Б • MODEL SEGMFNT 1 к GENERATE ,,,1 SEIZfc CRANE FETCH ADVANCE 12, 5 ADVANCE 10,«i RELEASE CHANE ADVANCE 89,20 QUEUE STEPI» SEIZE CRANE DEPART STEPV ADVANCE 15,7 RELEASE CRANE AOVANCE 110,30 QUEUE STHP6 SEIZE CRANE DEPART STEPB ADVANCE 10,4 ADVANCE 12,3 TRANSFER ,FETCH Г ' M0.5EL SEGMENT 2 GENERATE 39,10 APVANCE SlflZE CRANE ACVANCF 25,10 RELEASE CRANE TERMINATE Г MCDEL SEGMENT 3 Г GENERATE 24000 TERMIKATE 1 COMTROt. CAP.D(S> START 1 END S PROVIDE 1 MACHINE OPERATOR GET THE CRANE FETCH THE NEXT RAM CASTING LOAD THE CASTING ONTO THE MACHINE FREE THE CRANE PHASE 1 POLISHING TIME ELAPSES CHECK INTO THE CRANE QUEUE GET THE CRANE CHECK OUT OF THE CRANE QUEUE REPOSITIONING TIME ELAPSES FREE THE CRANE PHASE 2 POLISHING TIME ELAPSES CHECK INTO THE CRANE QUEUE GET THE CRANE CHECK OUT OF THE CRANE QUEUE UNLOAD THE FINISHED CASTING STORE THE FINISHED CASTING GO FETCH THE NEXT RAW CASTING OTHER CRANE CALLS ARISE AVOID INTERARRIVAi. TIME DISTORTIONS GET THE CRANE USAGE TIME ELAPSES FREE THE CRANE PROCESSED CALL TERMINATES TIMER ARRIVES AFTER MOO HOURS SHUT OFF THE SIMULATION START THE SIMULATION RETURN CONTROL TO OPERATING SYSTEM CARD NUMBER 1 2 3 b 5 6 7 6 9 10 11 12 13 lit IS 16 17 IB 19 20 21 22 23 21» 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 <«1 Рис. У4 ратор машины не ждет освобождения крана, этой статистике но загрузке может быть дапа соответстпующая интерпретация. Заметим, что этот прибор будет «фнктнпиым» в том смысле, что пи один из блоков «SEIZE РМАСН» не откажет во входе тому единственному транзакту, который циркулирует и сегменте 1 модели. Наличие такого прибора в соответствии со сказаппым не изменит поведения модели. 5.а). Предположим, что нулевое значение времени соответствует полночи. Пусть единицей модельного времени будет 1 ч- Тогда ответом на поставленную задачу будет следующая последовательность блоков: б). Теперь необходимо единицей времени для модели установить 1 мин. Далее из ответа на упражнение 7 параграфа 2-23 следует, что задержка не может моделироваться посредством использования операнда В блоков GENE* RATE. Ее можно моделировать, используя блок ADVANCE. Для получения ответа па вопрос проделайте следующую работу с ответом иа вопрос а): 1) умножьте все значения операндов блоков GENERATE на 60; 2) замените блок с именем QUEUP иа cADVANCE 10,10», имя оставьте то же; GENERATE TRANSFER GENERATE TRANSFER GENERATE TRANSFER GENERATE QUEUP QUEUE 24,.1 .QUEUP 24„4 .QUEUP 24.,10 .QUEUP 24,.14 STACK ОПРЕДЕЛИТЬ ТРАНЗАКТЫ ЧАСА НОЧИ ПОМЕСТИТЬ ИХ В БЛОК QUEUE ОПРЕДЕЛИТЬ ТРАНЗЛКТЫ ЧЕТЫРЕХ ЧАСОВ УТРА ПОМЕСТИТЬ ИХ В БЛОК QUEUP ОПРЕДЕЛИТЬ ТРАНЗАКТЫ ДЕСЯТИ ЧАСОВ УТРА ПОМЕСТИТЬ ИХ В БЛОК QUEUP ОПРЕДЕЛИТЬ ТРАНЗАКТЫ ДВУХ ЧАСОВ ДНЯ ТРАНЗАКТЫ ОТМЕЧАЮТСЯ В ОЧЕРЕДИ 522
3) поставите блок «QUEUE STACK» вслед за блоком ADVANCE. в). Для получения решения необходимо изменить ответ иа вопрос б) следующим образом: V) уменьшить значение операнда С каждого блоха GENERATE на единицу; 2) заменить каждое значение операндов А н В блока ADVANCE иа число 15. 2.41. Упражнения 3. В сегменте I модели па рис. 2Е.З надо заменить блок GENERATE, оператор 1, на «CNTRL GENERATE „ 2.3». Дайте блоку «LEAVE N'OWON» символическое имя MAIN. После этого введите следующую последовательность блоков в сегмент 1 модели; GENERATE ENTER ADVANCE TRANSFER ...50 NOWON 91.91 „MAIN 4. Одним из решений задачи является решение задачи 3 (данного параграфа) с добавлением того, что блок «GEN Е- RATE ,,.50» падо заменить на «GENERATE .,,50.1». б.а). Первый, набор статистических данных собирается в течение первых 480 единиц модсльпого аремсии. В этом первом наборе выводимых данных таймеры как относительного, так и абсолютного времени покажут значение 480. Второй набор статистических данных собйрвется на интервале модельного времени 480 и 960. Но вместо того, чтобы начинать с нулевых данных, как в первый раз, второй этап моделирования начинается с тех значений, которые определены условиями работы в хонде первого этапа моделирования. Второй набор данных моделирования показывает значение таймера относительно времени 480, значение же таймера абсолютного времени будет равно 960. б). В обоих случаях при моделировании начальные условия нулевые. В обоих выдачах результата моделирования таймеры относительного н абсолютного времени булут показывать значение 480. Единственное различие о двух этапах моделирования будет заключаться п том, что упомянутые генераторы случайных чисел, использованные при моделировании (онн будут рассмотрены в гл. 3). начинают свою работу ие с тех значений, с которых онн начинали ее в первом этапе моделирования. в). Первый набор статистических данных собирается п первые 480 единиц модельного времени. И гаймер абсолютного, и таймер относительного времени будут показывать значение 480. Второй набор данных основывается иа тех статистиках, которые собирались в течение всех 960 единиц модельного времени. Оба таймера во втором наборе статистики будут показывать 960. б.а). Предположим, что «ТЕКУЩЕЕ СОДЕРЖИМОЕ» многоканального устройства CARE превышает величину 5 в момент первого аавершення моделирования. Попытка переопределить емкость многоканального устройства на меньшее число,-чем б. может привести к возникновению ошибки. Многоканальное устройство не может одновременно иметь емкость 5 и «ТЕКУЩЕЕ СОДЕРЖИМОЕ», большее пяти. б). Если модель очищена, то «ТЕКУЩЕЕ СОДЕРЖИМОЕ» многокаиальпого устройства CARE устанавливается п ноль. Когда емкость этого устройства переопределяется иа значение 5, никакая ошибка возникнуть не может. 12. Замечание: перед тем. как выполнить это упражнение, было бы очень полезным ознакомиться с деталями ответа на упражнение I параграфа 2-35. а). По умолчанию интервал времени прихода равен нулю. б). Первый траизакт входит в блок ENTER в момент модельного времени, равный 1. в). В момент модельного времени 1 в блок ENTER входят четыре транэакта. В этом случае оставляем свободной емкость GUYS. Пятый траизакт, внесенный в блок GENERATE в момент модельного времепи 1, встречает SLOCK NUMBER *L0C OPERATION A,B,C,D,E,F,G SIMULATE * STORAGE CAPACITY 0EFINITION(S) COMMENTS 1 г 3 i» s Б ? 8 9 10 11 12 15 1ч 15 16 SPACE STAl TRUUT « • STORAGE STORAGE STORAGE 1 1 3 1 3 ! MODEL SEGM.EHT 1 GENERATE QUEUE ENTER DEPART ENTER A0VANCE LEAVE ENTER LEAVE QUEUE SEIZE DEPART LEAVE ADVANCE RELEASE TERMINATE 115,30 LINE1 STAl LII1E1 TRUUT 335,60 TRUUT SPACE STAl LINE2 STA2 LINEZ SPACF 110,25 STA2 1 CONTROL CAR0S START END 100 PROVIDE 1 WAITING SPACE BETWEEN STATIONS PROVIDE 3 STATION 1 SERVERS SR$TRUUT - TRUE UTILIZATION OF STATION 1 SERVERS TRAFFIC ARRIVES CHECK INTO LINE 1 CAPTURE A STATIOM 1 SERVER CHECK OUT OF LINE 1 UPDATE STATION 1 UTILIZATION STATISTICS STATION 1 SERVICE TIME ELAPSES UPDATE STATIC» 1 UTILIZATION STATISTICS MOVE INTO STAGING SPACE WHEN POSSIBLE FREE THE STATION 1 SERVER CHECK INTO LINE 2 CAPTURE THE STATION 2 SERVER. CHECK OUT OF LINE 2 FREE THE STAGING SPACE STATION 2 SERVICE TIME ELAPSES RELEASE THE STATION 2 SERVER LEAVE THE SYSTEM START THE SIMULATION RETURN CONTROL TO OPERATING SYSTEM CARD NUMBER 1 2 3 i» 5 Б 7 8 9 10 11 12 13 1* 15 16 17 18 19 20 21 22 23 21* 25 26 27 28 29 30 3J. Рис. УН 523
BLOCK NUMBER *LOC OPERATION SIMULATE A,B,C,D,E,F,G COMMENTS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 STORAGE CAPACITY DEFINITIONS) BRTH1 STORAGE Б BRTH2 STORAGE 3 TUGS STORAGE 2 » MODEL SEGMENT 1 PROVIDE 6 BERTHS FOR TYPE 1 SHIPS PROVIDE 3 BERTHS FOR TYPE 2 SHIPS PROVIDE 2 TUGS GENERATE QUEUE ENTER ENTER ADVANCE LEAVE ADVANCE ENTER ADVANCE LEAVE LEAVE DEPART TERMINATE 130,30 TYPE1 BRTH1 TUGS 30,7 TUGS 720,120 TUGS 20,5 TUGS BRTH1 TVPE1 MODEL SEGMENT 2 GENERATE QUEUE ENTER ENTER ADVANCE LEAVE ADVANCE ENTER ADVANCE LEAVE LEAVE DEPART TERMINATE 390,60 TYPE 2 BRTH2 TUGS,2 45,12 TUGS,2 1080,240 TUGS,2 35,10 TUGS,2 BRTH2 TYPE2 SHIPS OF TYPE 1 ARRIVE CHECK INTO THE HARBOR GET A BERTH GET A TUG BERTHING TIME ELAPSES FREE THE TUG UNLOADING TIME ELAPSES GET A TUG DEBERTHING TIME ELAPSES FREE THE TUG FREE THE BERTH (ASSUMED TIED UP UNTIL THE DEBERTHING OPERATION IS COMPLETED) CHECK OUT OF THE HARBOR LEAVE SHIPS OF TYPE 2 ARRIVE CHECK INTO THE HARBOR GET A BERTH GET 2 TUGS BERTHING TIME ELAPSES FREE THE TUGS UNLOADING TIME ELAPSES GET 2 TUGS DEBERTHING TIME ELAPSES FREE THE TUGS FREE THE BERTH CHECK OUT OF THE HARBOR LEAVE CARD NUMBER 1 2 3 4 5 6 7 8 9 ID 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 3 39 40 Рис. У15 условие блокировки и остается в блоке GENERATE. (И, как видно нз рис. 2.29, планирование очередного прихода временно подавляется.) г). Тратакт должен пройти блок LEAVE прежде, чем другой траняакт, находящийся л блоке GENERATE, сможет войти о блок ENTER. Поскольку значение меж- интервалыюго промежутка равно нулю, следующий тран- закт будет помещен в блок GENERATE как только будет обработан блок LEAVE. (Надо теперь пояснить последовательность, в которой это все происходит). Этот следующий трапэакт проверит условия блокировки в блоке ENTER, пока какие-либо дпа (или более) транзакта не войдут в блок LEAVE в рассматриваемый момент времени, д). Логика модели была бы разрушена, если бы блок, следующий за блоком GENERATE, ие мог бы по условию запретить вход транзактам. Интерпретатор будет вводить тралзакты в блок QUEUE n течение модельного времени, равного 1, столько, сколько это пообще возможно. Механизм действий такого введении траппактои поясней в ответе на упражнение 1 параграфа 2.35. Фактически же невозможно бесконечное впедепие траизактов в модель без того, чтобы ие превысить ограпичепня. связанные с памятью ЭВМ. В этот момепт времени моделирование остановится и будет выдано сообщение об ошибке (номер ошибки 599 — ОГРАНИЧЕНИЯ GPSS/360 ПО ИСПОЛЬЗОВАНИЮ ОБЩЕЙ ОБЛАСТИ ПАМЯТИ НАРУШЕНЫ). Эти особенности работы системы описаны в кяите в параграфе 4.16. е). Надо просто перенести блок «LEAVE GUYS» на новое место вслед за блоком «ADVANCE 30,5» перед бликом «SEIZE OVEN'». ж). Будут промоделированы три различные конфигурации в соответствии с числом сборщиков 4. 5 и 6. а). Для каждой из конфигураций моделирование продолжается до момента времени 480, потом вступит в действие карта RESET. Частично каждый этап моделирования в 4fi0 единиц модельного времени служит цели вывести модель из промежуточных состояний и ввести ее и область устойчивого состояния. и). Поскольку счетчик завершений устанавливается равным значению 5, дли каждого выполнения п устойчивом состоянии, продолжительность выполнения в устойчивом состоянии равна 2400 единицам времени (5 раз по 480). к). Если из модели изъять карты CLEAR, то каждый следующий этап выполнения будет начинаться с устойчивого состояния, имеющего место в конце предыдущего этапа моделирования. В этом случае условия стационарного режима могут достигаться быстрее для каждой новой копфнгурацин. л). Ответ смотри в решении к упражнению 6 данпого параграфа. 14. На рис. У14 представлена распечатка программы модели GPSS, соответствующая условиям, описанным в п. в. этого упражнения! Если из модели на рис. У14 изъять блоки 5 и 7 (а также карту 7, хотя этого можно и не делать), то останется GPSS- модель, соответствующая условиям, описанным в п. б этого упражнения. 524
Нсли теперь модель, опиенлную в и. 6, модифицировать путем выведения из чес блоков 8 и 13 (i» карты 5), то останется GPSS-модель. отвечающая условиям, описанпым в л.а этого упражнения. Интересно отметить, что ограничение, связанное с размером очереди, введенное в п. в., имеет сравнительно небольшое влияние на фактическую загрузку каналов станции I. При выполнении моделирования по варианту п) загрузка устройства STAI выла 0,975, а загрузка устройства TRIJUT была 0,956. Таким образом, разница составляет всего 2%. Средняя загрузка устройстве SPACE равнялась 0,520, что можно считать значением его среднего содержимого (среднее содержимое устройства с одним капа- лом совпадает со значением средней загрузки). Это означает, что канал станции завершает обслуживание, вероятность того, что очереди не будет, равна 48 из 100. 15.а). На рис. У15 приведена распечатка программы GPSS-модели, на которой можно исследовать работу порта. Но прежде чем приступить к моделированию, необходимо определить, капие управляющие нарты необходимы для прогона модели. Заметим, что в сегментах ! н 2 модели корабли первого и второго типов отмечают свое прибытие В очередь при входе в порт в не отмечают выход из очереди до тех пор, пока по выходят из порта. Среднее время пребывания в очереди минус общее время, затраченное на ввод в порт и причаливание, разгрузку-погрузку, отчаливание и вывод ил порта (эту статистику легко получить из данных о многоканальных устройствах), позволяет затем получить среднее время ожидания по каждому из двух типов кораблей, прибывающих а порт. (Некоторые новые идея, вводимые в гл. 4, делают возможным непосредственное измерение обшей задержки, получающейся при последовательном использовании ресурса с ограничениями. Далее, в упражнении 8 параграфа 4.25 будет поставлена задача построить более сложную модель функционирования порта.) 2.47. Упражнения I. Заменить последовательность из 20 карт «START I» единственной картой «START 20,, 1». 2. a). «PRINT „MOV» б). «PRINT ,,FUT» a). «PRINT ,.S» г). «PRINT 3.7.F» д). «PRINT 5.6.Q». 4. Утверждение, приведенное в упражнении, могло бы быть справедливым, если бы возник временное узел, со следующими событиями. 1). На рассматриваемой станции запланирован приход двух требований. (Если должно возникнуть одновременно два прихода па станции контроля в этой модели, то один из них осуществляется через блок GENERATE, а второй— ввиду циклического обслуживания. Для того чтобы возник приход, вызываемый этой второй причиной, необходимо, чтобы транзакт завершил свое обслуживание на сташши паладки. Назовем этот транзакт именем SCA. Именем AG будем пользоваться для определения трзпзакта, прибывающего через блок GENERATE.) 2). Два завершения обслуживания запланированы на ста ни л и контроля. (Назовем соответствующие тран- aaKTbjSCIl и SCJ2, подразумевая при этом что SCI1 — первый из этих двух транзактов.) 3). До начала фазы просмотра в рассматриваемый иомент модельного времени четыре транзакта, вошедшие ьо временной узел, располагаются в цепи текущих событий в следующем порядке: ЦЕПЬ ТЕКУЩИХ СОБЫТИЙ * lSCAUAGHSCimsCI2| ' (ilpooepKa значений операндов А п В блоков GENE RATb и ADVANCE станции наладки показывает, что SCA должен предшествовать AG при возможном возникновении временного узла.) Проводя мысленный эксперимент с обработкой цени текущих событий на фазе просмотра, мы приходим к убеждению, что параметр «МАКСИМАЛЬНОЕ СОДЕРЖИМОЕ» статистических данных очереди AREA1 будет рявен двум, несмотря иа то, что н SCA н AG дадут пулевые вхождении в очередь. Теперь попробуем доказать, что приведенное выше расположенно транзактов в цепи текущих событий невозможно. Во-первых, заметим, что ни SCU ни SCI2 не могут войти на станцию ввиду наличия циклического обслуживания. (Максимальное значение времени контроля равно 120 единвца.м, минимальное время наладки равно 200 единицам. Следовательно, ын одни ил трянзактоа, предшествующих SCA ца станции наладки, не может оставаться на станции контроля, когда закончится «наладка» следующего транзактв.) В результате получается, что и SCI I и SCI2 входят на станцию через блок GENERATE. Это означает, что AG является последователем SC.12 п блоке GENERATE. Однако заметим, что планирование прихода AG имеет место тогда, когда SCI2 уже находится в модели, a SC11 уже находится к этому временя л цени будущих событий. Все w> изнлчаог, что AG не может находиться перед SCI t, и пиелсдователыюсп, расположения транзактов в дспн, предполагаема!! вначале, для дайной модели просто невозможна. 1В качестве интересного упражнения можно было бы теперь рассмотреть вопрос о том, может ли модель быть модифицирована таким образом (нутом изменения параметров времени или заданием двух или большего числа рабочих на станции паладки), чтобы кснь транзактов, показанная выше, могла бы иметь место.] 7. В модели в сегменте 1 (см. рис. 2F.3) необходимо убрать метку BACK из блока «QUEUE AREA 1», выбросить блок «TRANSFER . BACK» полностью, а сразу за блоком «RELEASE FIXER» поставить следующие блоки: QUEUE AREAI ENTER TEST DEPART AREA I ADVANCE 90,30 LF.AVE TEST TRANSFER .03..FIX TERM WAT С 8. Если только что вошедший транзакт расположется перед транзактом завершения обслуживания И цепи теку- iivUK событий, то вошедший трапзакт направится в BYBYR. Если же последовательность событий обратная, то вошедший транзакт направится на обслуживание. 9. Поставьте блоки QUEUE и DEPART соответственно перед и после блока «SEIZE BARBR». Было бы ошибкой поставить блок QUEUE между блоками TRANSFER и ENTER, поскольку все транзакты, пошедшие в блок TRANSFER, должны будут безусловно переходить в блок QUEUE. 11. Общее число входов в блок TRANSFER минус число входов в блок ENTER равно числу клиентов, которые ие остались на обслуживание. 12. На рис. У12, а показано решение этой задачи. На рисунке, однако, не показаны ни карты определении емкости многоканального устройства, ни карты управления моделированием. Заметим, что если оба иарикмахера свободны, то логика модели всегда приводит клиента к первому парикмахеру. Модель, представленная на N'12, О, показывает, как избежать этого. (Стрелки, показанные штриховой линией в пате комментариев, указывают на те блоки, которые являются либо новыми, либо замененными по сравнению с моделью иа рис. У12,п). 525
NUMBER *LOC OPERATION A,B,C,D,E,F,G COMMENTS 1 2 J U 5 С 7 8 9 10 11 12 IS 1* BLOCK NUMBER * BAR82 BYBYE • LOC MODEL SEGMENT 1 GENERATE TRANSFER ENTER TRANSFER SEIZE LEAVE ADVANCE RELEASE TERMINATE SEIZE LEAVE ADVANCE RELEASE TERMINATE OPERATION 7/3 BOTH,,BYBYE CHARS BOTH,,BARB2 BARB1 CHARS 15,3 BARB1 BAHB2 CHARS 15.Ц BARB2 e) A,B,C,D,E,F CUSTOMERS ARRIVE GO BYBYE IF NO WAITING CHAIR IS AVAILABLE ELSE, CLAIM A WAITING CHAIR TEST AS NECESSARY FOR AVAILABILITY OF EITHER BARBER 1 OR BARBER 2 CAPTURE BARBER 1 FREE A WAITING CHAIR HAIRCUT TIME ELAPSES FREE BARBER 1 LEAVE THE SHOP CAPTURE BARBER 2 FREE A WAITING CHAIR HAIRCUT TIME ELAPSES FREE BARBER 2 LEAVE THE SHOP COMMENTS MODEL SEGMENT 1 1 2 3 l| 5 Б 7 8 9 ID 11 12 13 11* 15 16 Рис. BARB1 FAVR2 BARB2 BYBYE У12 GENERATE TRANSFER ENTER TRANSFER TRANSFER SEIZE LEAVE ADVANCE RELEASE TERMINATE TRANSFER SEIZE LEAVE ADVANCE RELEASE TERMINATE 7,3 BOTH,,BYBYE CHARS .5,,FAVR2 B0TH,,BARB2 BARB1 CHARS 13,3 BARB1 B0TH,,BARB1 BAR В 2 CHARS 15,fc BAR В 2 6) CUSTOMERS ARRIVE GO BYBYE IF NO WAITING CHAIR IS AVAILABLE ELSE, CLAIM A WAITING CHAIR OBTEST AS NECESSARY FOR AVAILABILITY OF EITHER BARBER 1 OR BARBER 2 < (NOW HAS A LOCATION NAME) FREE A WAITING CHAIR HAIRCUT TIME ELAPSES FREE BARBER 1 LEAVE THE SHOP < - CAPTURE BARBER 2 FREE A WAITING CHAIR HAIRCUT TIME ELAPSES FREE BARBER 2 LEAVE THE SHOP BLOCK NUMBER 1 2 10 11 •IOC • • ф AGAIN BYBYE THINK OPERATION A.B,C,D,E,F,G MODEL SEGMENT 1 GENERATE TRANSFER ENTER SEIZE LEAVE ADVANCE RELEASE TERMINATE TRANSFER ADVANCE TRANSFER "/7 BOTH,,BYBYE CHARS BARBR CHARS 15.3 BARBR .6,,BYBYE »,5 BQTH,AGAIN,BYBYE COMMENTS CUSTOMERS ARRIVE GO TO THINK IF THERE IS NO WAITING CHAIR AVAILABLE ELSE, CLAIM A WAITING CHAIR CAPTURE THE BARBER FREE A WAITING CHAIR HAIRCUT TIME ELAPSES FREE THE BARBER LEAVE THE SHOP BO BYBYE FOR GOOO WITH PROBABILITY .6 ELSE, DO THINGS ELSEWHERE THEN CHECK FOR A WAITING CHAIR ONE LAST TIME Рис. У16 526
13. При использовании многоканального устройства нет возможности определить, к какому из двух парикмахеров пришел клиент, а следовательно, нет возможности определить, как долго задержится у парикмахера данный клиент: 13 ^ 3 или l5=t 4 мни. 16. На рис. У16 показано решение данной задачи. Ни карта определения емкости устройства, ли карта управления моделированием на рисунке не показаны. К главе 3 меньше, чем 0,023810, примерно л 2,29% случаев. Это означает, что именно с этой частотой будут появляться нулевые интервалы прихода. 4.а). Интерпалы поступления распределены равномерно для целых значений 2, 3, 4 и 5. б). То же, что и в п. а. в). Интервалы поступлепяя распределены равномерно для целых чисел от 4 до II включительно. г). Интервалы промели, которые могут быть получены, лежат между .значениями целых от 0 до 7 включительно. Ниже показана их относительная частота появления. 3.8. Упражнения ниД: 2. Определение ладанной фувкции имеет следующий DKAW FUNCTION RN7.D5 .1,-а'.15,0/.3,5/.6,9/1,14 Функция DRAW не может описывать распределение интервалов прихода трсбовавий. поскольку отрицательные значения интервалов времени прихода недопустимы. То же можно сказать и относительно времен обслуживания. 3.14. Упражнения 1.6). Когда интенсивность прихода требований распределена но закону Пуассона, то соответствующие приходам интервалы времени распределены по экспоненциальному закону. в). Между этими двумя величинами существует взаимная зависимость. Например, если карточки поступают в некоторое место со средней интенсивностью 12 карт за каждые 60 мин, то средний интервал времени между соседними поступлениями равен 5 мин. г). Пусть А и В будут Значениями операндов А и В соответственно. Если операнд В являстси модификатором-рая- махом, то величина интервалов поступления рассчитывается первоначально по выражению (А—В) -+- + RNI* (2В f 1), затем берется целая часть результата в качестве значения интервала времени поступления очередного требования. Если же операнд В является модификатором фупкцвей, то интервал времени поступления рассчитывается умножением А на В, затем берется целая часть произведения и используется в качестве нового значения интервала. д). Первыми двумя символами операнда В в этом случае должны быть символы FN. с). Если значение операнда А мало, то целая часть произведения, получаемвя после умножения значения операнда А на FNfXPDlS часто будет оказываться равной нулю, что само по себе противоречит предположениям о пуассоиовских потоках. 2.а). Использование обратной линейной интерполяции между точками «.6,.915» и «.7,1.2» на рис. 3.22 показывает, что целая часть произведения FNgXPDlS будет нулевой почти в 53% случаев. б). Лииейиая интерполяция между парой точек «0,0* и «Л,. 104* на рис. 3.22 показывает, что в 0,5% случаев значение, полученное из FN $XPDIS, будет меньше (или равно) 0.0052. В остальных 95,5% случаев значение, полученное от FN$XPD1S, будет больше или равно 0,005201. Таким образом, значение операнда. А должно быть по крайней мере равно 193 (величина, обратная 0,005201), чтобы можно было быть уверенным, что значение интервала времени поступления, равного нулю, не будет встречаться с вероятностью 0,5%. 3. «GENERATE 42, FN«XPDIS». Величиной, обратной 42, является 0,023810. Обратная линейная интерполяция между парой точек «0,0» и «.1,-104» на рис. 3.22 показывает, что число, получаемое от FN$XPDIS, будет Иитерпад времени Относительная частота Интервал времени Относительная частота 0 I 1/20 2/20 3/20 4/20 4 5 6 7 4/20 3/20 2/20 1/20 5.а). PARTA FUNCTION RN1, С2 0,4/1,10 б). PARTB FUNCTION RN1, С2 0,0/1,1001 в). PARTC FUNCTION RNI, C2 0,11/1,22 б.а). Будет полудою два случайных числа. б). Интервал времени прихода транзакта останется тем же самым при любом слсдопапии карт. В любом случае именно второе нэ двух случайных чисел будет использовано для определения следующего значения интервала времени. 3.17. Упражнения l.a). Предположим, что возник уаел времени с событиями «приход требования» и «завершение обслуживания», а все места в очереди заняты. Если событие прихода возникает раньше, то прибывающий транзакт-автомобиль перейдет по метке BYBYE. Если же возникновение событий будет обратным, то прибывающий автомобиль останется на обслуживание. б). Такая ситуация должна возникать с относительно небольшой вероятностью, поскольку в модели выбрана достаточная малая неличина единицы времени. в). Если единица времени будет сделана меньшей, то вероятность возникновения такой ситуации также становится меньшей. В предельном случае, если значепие единицы модельного времени стремится к нулю, вероятность возникновения временного узла также стремится к нулю. г). Может оказаться желательным, чтобы событие завершения обслуживания обрабатывалось первым, с тем, чтобы прибывающий автомобиль оставался на обслуживании. Это дает водителю прибывающего автомобиля некоторое преимущество в системе перед событием завершения обслуживания, вступающим в конкурентную борьбу с со- бытием прихода. 2. Будет получено одно случайное число для планирования прихода в блоке GENERATE, оператор 1. 4. Распечатка программы GPSS-модели, на которой можно промоделировать систему, показана на рис. У4. Перед использованием модели к пей необходимо добавить карты управления моделированием. 527
BLOCK NUMBER • LOC OPERATION A,B,C,D,E,F,< SIMULATE COMMENTS * FUNCTION DEFINITION(S) * XPDIS FUNCTION RNl,C2t» o,o/.i,.ioi»/.2,.222/.3,.35s/.4 .8,1.6/. 8"». 1.83/.88, 2.12/. 9, 2, .97, 3.5/. 98, 3.9/.99, I».6/.995,5 * * STORAGE CAPACITY DEFINITION(S) EXPONENTIAL DISTRIBUTION FUNCTION ,.509/.5,.69/.6,.915/.7,1.2/.75,I.38 3/. 92,2.52/.91», 2.81/. 95, 2.99/.96, 3.2 .3/.998,6.2/.999,7/.9998,8 NOWON STORAGE MODEL SEGMENT 1 1 2 3 <t 5 6 7 8 GENERATE BAKUP ENTER ADVANCE LEAVE SEIZE ADVANCE RELEASE TRANSFER ,,,3 NO WON U80,FN$XPDIS NdWON RMAN 120,FN$XPDIS RMAN ,BAKUP NOWON'S AVERAGE CONTENT • THE NUMBER OF MACHINES IN USE, ON AVERAGE PROVIDE 3 MACHINES TURN A MACHINE ON MACHINE LIFETIME ELAPSES TURN THE FAILED MACHINE OFF CAPTURE THE REPAIRMAN REPAIR TIME ELAPSES FREE THE REPAIRMAN MACHINE IS AGAIN READY FOR USE CARD NUMBER 1 2 3 4 5 6 7 8 9 10 11 12 13 11» 15 16 17 18 19 20 21 22 23 21» Рис. У4 3.21. Упражнения l.a). На рис. 3d множители генераторов RNl и RN2 определены как 511 и 7 соответственно (это следует из использования карты 5. карта RML'LT), и эти значения используют при планировании приходов на фазе ввода моделирования в первый день работы без приоритетов. Аналогичным образом множители RNI н RN3 снова задаются как 5 И и 7 соответствен во (это следует из использования карты 75, карта KiML'LT, и карты 76. карта CLEAR); при этом моделируется также первый день работы, но с учетом приоритетного обслуживании. Если карты 75 и 76 поменять местами, то соответствующими значениями генераторов RN1 и RN2 уже не будут значения 511 и 7 при моделировании в первый день работы при приоритетном обслуживании. В результате ие будет соблюдено соответствие условий экспериментирования для двух первых дпей моделирования. б). В этом случае карта CLEAR предшествует карте RMULT, как и в упражнении 1. а. Однако карты переопределения блоков GENERATE на этот раз располагаются за нартой RMULT. При такой последовательности карт переопределение блоков GENERATE влияет на планирование прихода в первый день работы с приоритетом. При переопределении блоков GENERATE соответствующими значениями множителей генераторов RN1 и RN3 будут 511 и 7, так же как и на фазе ввода для предыдущего первого дня моделирования. Следовательно, вид поступления требований для двух первых дней моделирования будет один и тот же. в). Если бы карты 46 (RMULT) и 47 (CLEAR) поменялись местами, то вид поступления требований при приоритетном обслуживании для второго дня не стал бы совпадать с тем, который бы имел место, если бы карты не меняли местами. Например, в первом случае для второго дня приход требовапий в блоке TAG1 GENERATE основывался бы на том значении множителя генератора RNI, который оставался бы от первого дня моделирования. При этом множитель RN1 был бы установлен в 741, что соответствовало бы большему значению при планировании события второго прихода в блоке TAG1, и т. д. Тем не менее может оказаться, что изменение порядка следования карт 46 и 47 не окажет отрицательного влияния. Если карты 78 и 79 также поменять местами, то вид последовательности поступления двух вторых дней моделирования будет одинаков. Но в этой замене есть один недостаток. Предположим, что один (или два) прихода запланированы на момент времени 28 800 (время завершения моделирования) нерпого дня моделирования. При работе без ириоритетов прибывающий транэакт (или трзнзакты) не будут обработаны до завершения, поскольку он (или они) располагаются позади транэакта-танмера в цепи текущих событий. При работе с приоритетами, наоборот, прибывающий транзакт (или траизакты) будет обработан до завершения моделирования. [Он (или они) будут стоять в цепи текущих событий перед трапзактом-танмером ввиду того, что его (их) приоритет выше,] Такая последовательность обработки приводит к тому, что будут получены еще два случайных числа от RN1 и (или) от RN3 (а также, возможно, и от RN2 и RN4). Значения множителей для RN1 и RN3 соответственно не могут быть обязательно те же, что и в копне соответствующих первых дней моделировании. В свою очередь, условия эксперимента для второго дня моделирования ие могут быть обязательно теми же, если множители, соответствующие концам первых дней, используются для планирования первых приходов требований второго дня. г)/При отсутствии времсниых узлов с событиями при- ходов'условия экспериментирования будут одними и теми же, если RN1 сделать аргументом обеих функций IAT1 и 1АТ2. Почему? Рассмотрим подмножество значений RN1, используемое для планирования событий в блоке TAG1 GENERATE в первый день для моделирования работы без приоритетов. Если временных узлов нет, то для первого дня при моделировании с приоритетами будет использовано то же подмножество, а это обеспечит одинаковость вида прихода для двух случаев. Пусть теперь могут возникать временные узлы. Если это произойдет, то траизакты блока TAG2 GENERATE обрабатываются первыми при моделировании с приоритетами. В то же время порядок работы может оказаться обратным при моделировании без приоритетов. Это означает, что значепия генератора RN1, используемые в блоке с именем TAG1, при моделировании без приоритетов могут ие совпадать со значениями при моделировании с приоритетами (то же касается и блока с именем TAG2). Результат — возможное несовпадение вида потока требований на входе. 528
BLOCK NUMBER >LOC •OPERATION A,B,C,D,E,F,G COMMENTS SIMULATE INITIALIZE MULTIPLIERS FOR RAHDOH HUMBER GENERATORS) RMULT ,37 FUNCTION DEFINITION(S) RN2,C2 SERVE FUNCTION 0,130/1,"»31 * MODEL SEGMENT 1 1 2 3 i» s 6 7 GENERATE QUEUE SEIZE OEPART ADVANCE RELEASE TERMINATE 300,250 LINE CLERK LINE FN*SERVE CLERK MODEL SEGMENT 2 GENERATE TERMINATE 28800 1 CDNTROL CARD(S) START CLEAR RMULT START CLEAR RMULT START CLEAR RMULT START CLEAR RMULT START END ,7ч1 1 ,963 1 ,951 1 ,753 1 SET NON-STANDARD MULTIPLIER FOR RN2 SERVICE TIME FOR $l»/HOUR CLERK MECHANICS ARRIVE CHECK INTO THE QUEUE CAPTURE THE CLERK CHECK OUT OF THE QUEUE SERVICE TIME ELAPSES FREE THE CLERK LEAVE THE TOOL CRIB TIMER ARRIVES AFTER > HOURS SHUT OFF THE SIMULATION SIMULATE FOR DAY 1 CLEAR FOR DAY 2 SET.RN2 MULTIPLIER FDR DAY 2 SIMULATE FOR DAY 2 CLEAR FOR DAY 3 SET RN2 MULTIPLIER FOR DAY 3 SIMULATE FOR DAY 3 CLEAR FOR DAY t» SET RN2 MULTIPLIER FOR DAY I» SIMULATE FOR DAY * CLEAR FOR DAY 5 SET mi MULTIPLIER FOR DAY S SIMULATE FOR DAY 5 RETURN CONTROL TO OPERATING SYSTEM CARP NUMBER 1 2 3 k 5 б 7 8 9 10 11 12 13 II» 15 16 17 IS" 19 20 21 22 23 IK 25 26 27 28 29 30 31 32 33 31» 35 ЗБ 37 38 39 40 t»l *2 Рис. У2 д). Если провести такое изменение в модели, то совпадения условии моделирования для двух моделей не будет. Подмножество значений RN1, используемое для расчета фувкции STYMI, стало бы зависеть от того, было или ие было сделано различие и приоритетах при моделировании. е). Как следует из ответа на упражнение I. в, значения модификаторов RN1 и RN2 зависят в общем случае в конце моделирования разных дней от того, сделано лн различие в приоритетах для двух классов транзактов-рабочих. Предположим, однако, что транзакту-таймеру присваивается приоритет 2 или выше. Тогда, если один (или два) события прихода запланированы на момепт завершения моделирования, моделирование завершится прежде, чем соответствующие события прихода будут обработаны. В свою очередь, значения множителей генераторов RNI и RN3 в конце дня ие будут зависеть от наличия разницы в приоритете для двух классов траизактов-рабочих. Это дает нам основание задавать операнды Л и С всех карт RMULT ло умолчанию (кроме карт с номерами 5 и 73, в которых падо задавать значения операндов для того, чтобы избежать возможной неестественной корреляции значений случайных переменных) па рис. ЗС.1 при исследовании обеих дисциплин обслуживания, поскольку все равно исследование будет проведено при одинаковых условиях экспериментирования. ж, з). Рассмотрим блок-схему для случая работы четырех сборщиков, показанную на рис. ЗА.2. Первые четыре обращения к генератору RN1 происходят в блоке «ADVANCE FNgASSEM». Пятое обращение происходит в блоке «ADVANCE FN$FIRE». После этого седьмое, десятое, одиннадцатое, тринадцатое и т. д. обращения происходят н блоке «ADVANCE FNfFIRE», а остальные обращения идут через блок «ADVANCE FNgASSEM». и). Если сделать такие изменения в модели, то была бы она верной или нет зависело бы от того, используем лн мы карту RMULT для задания неодинаковых начальных значений множителей генераторов RNI и RN2. Весь вопрос здесь в том, будет лн иметь место неестественное совпадение значений, получаемых от RN1 и RN2? Например, будет ли первое значение от RNI совпадать с первым зва- чеиием от RN2, будет ли второе значение RNI совпадать со вторым значением от RN2 и т. д.? Если да, то одпо и то же случайное число используется для расчета /-го интервала сборки и для расчета /-го значения времеви обжига для /— 1, 2, 3, ..., что само по себе неестественно. Но именно таков будет результат, если начальные значения множителей будут заданы по умолчанию для RN1 и RN2. Этого можно избежать, если использовать карту RMULT для опредслення неодинаковых начальных значений множителей для этих двух генераторов случайных чисел. 2. На рис. У2 показана распечатка программы для одной из нескольких альтернативных возможных моделей, . 34 т. Дж. Шряабер 529
NUMB ЕЙ *LOC OPERATION A,B, C,D, E,F, 1 2 3 k 5 ь 7 t 9 10 11 12 13 Рис. У4 * MOOEL SEGMENT 1 GENERATE TRANSFER ENTER SEIZE LEAVE ADVANCE RELEASE TERMINATE PAUSE AOVANCE SEIZE ADVANCE RELEASE TERMINATE SOO,FN$XPDIS BOTH,,PAUSE SPACE MASHR SPACE tOO,FN$XPOIS WASHR WASHR ,FN$XPDIS WASHR в которой могут быть использованы повторные значения интервалов времен прихода и времен обслуживания в течение пяти последовательных дней моделировании для этой простой задачи о работе кладовщика. Данная модель составлена для случая работы кладовщика, получающего 4 доллара в час. Заменив карту следования фуикцни (карту 10) сО, 130/1,431» иа карту «0,230/1,331», мы перейдем к модели для случая работы кладовщика с зарплатой 4,5 доллара и час. (В этой модели, конечно, ист времен обслуживания как таковых, которые были бы повторены. Вместо этого существуют значения генераторов случайных чисел, исполь- ауемых для разыгрывания значений в соответствии с распределением времени обслуживания, которые повторяются). Когда проработали модель рнс. У2 я ее аналог для случая работы кладовщика с заработной платой 4,5 доллара в час, были получены следующие значения среднего содержимого очереди (см. таблицу). МоделяруешЯ деяь 1 2 3 4 5 Среднее содержимое очереди Кладовщик с аар- ii д атоЯ 4,0 доллара в час 1,555 0,712 0,568 1,406 0,533 Кладовщик с зарплатой 4,5 доллара! в час 1,048 0,585 0,545 0,858 0,568 Из таблицы следует, что кладовщик с зарплатой 4,5 доллара в час оказался производительнее, чем кладовщик с зарплатой 4 доллара в час в четырех яз пяти моделируемых дней. Соответственная этому выгода в долларах (ввиду уменьшении простоя рабочих) едва достаточна для покрытия расходов на прибавку заработной платы кладовщику, который получаст 4,5 доллара и час. Составление денежного сравнения по результатам, приведенным выше, достаточно просто. Для пяти промоделированных дней кладовщик, получающий 4,5 доллара в час, обслуживал рабочих, которые в среднем создавали очередь на 0,234 единицы короче, чем при работе кладовщика, получающего 4 доллара в час. Для покрытия расходов иа повышение своей зарплаты он должен был обеспечить уменьшение длины очереди на 0,222 единицы. Данных, полученных COMMENTS CARS ARRIVE GO PAUSE IF WAITING AREA IS FULL ELSE, ENTER WAITING AREA CAPTURE WASH FACILITY LEAVE WAITING AREA CAR IS BEING WASHED FREE THE WASH FACILITY LEAVE THE SYSTEM WAIT HERE FOR THE FACILITY IN STANDARD FIFO FASHION CAPTURE THE WASH FACILITY FETCH A VALUE FROM RN1; FACILITY HOLDING TIME IS ZERO FREE THE WASH FACILITY LEAVE THE SYSTEM на этом небольшом примере, недостаточно для того, чтобы сделать заключение о том, что кладовщик, получающий 4,5 доллара в час, экономически более выгоден. 4. Частично для решения этой задачи необходимо, чтобы независимо от того, остается или ие остается на обслуживание у-с требование, время обслуживания для него определялось одинаково для любой конфигурации модели. Это означает, что, даже если автомобиль не остается на обслуживание, он должен быть учтен с точки зрения наличия у него времени обслуживания генератором случайных чисел, более того, учет этот должен осуществляться в соответствующем хронологическом порядке. Это можно сделать так, как показано на рис. У4. Он демонстрирует, какие изменения необходимо сделать в модели рис. 3BJ2 для достижения желаемого эффекта. (Лучший вариант модели изложен в книге при рассмотрении примера моделирования 4D). Модель объясняет сама себя. Заметьте, что ие существует разрыва в потоке автомобилей, остающихся иа обслуживание. Заметьте, что блок, на который переходят траизакты-автомобили в случае отказа, является блоком ADVANCE с фиктивным временем задержки. Его задачей, копечпо, является безусловны* прием транзактов. что всегда обеспечивает выход по значению операнда С блока TRANSFER в режиме BOTH (ответьте иа вопрос, как поведет себя модель, если фиктивный блок ADVANCE нз нее исключить, а на его место е именем PAUSE поместить блок, являющийся оператором 10 на рис. У4'). К главе 4 4.5. Упражнения l.e).FRl5; FR$MYRNA; Q1. ж). Стандартный числовой атрибут FR выражаете» в виде целого значения как часть от тысячи. При распечатке значение загрузки дли прибора выражается в виде десятичной дроби. з). QX6 может быть больше, чем QT6- Это происходит, если в процессе моделирования было одно илн более нулевое вхождение в очередь 6. (При определеппых условиях, поскольку QX6 и QT6 целые, QX6 может совпадать с QT6, даже если очередь 6 имела одно или более нулевое вхо- . ждение.) ; к). Напрашивается мысль, что значение счетчика вхо* . дов в блок с имепем BYPAS (т. е. N$BYPAS) всегда будет •,
no крайней мере ие меньше, чем значение текущего содержимого для того же блока (т. с* WJBYPAS). Но это, однако, tie всегда nepuo. Вспомпим, что карта RESET устанавливает счетчик входов Для блоков в нулевое значение, но оставляет счетчнк текущего содержимого без изменений. Если W$BYPAS«£0, а в действие вступает карта RESET, то WSBYPAS будет больше, чем N$BYPAS, сразу после обработки карты RESET. л). Суммарное значение R(BUS и S$BUS совпадает с емкостью многоканального устройства BUS, заданной пользователем. (Заметим, что GPSS/360 ие обеспечивает стандартный числовой атрибут, значение которого было бы числом каналов устройства, заданным пользователем.) м). Транзакт, который входит в блок DEPART, вызывает операцию вычитания из значения текущего содержимого очереди величины, равной значению ее текущего содержимого. В результате новым значением текущего содержимого очереди будет нуль. н). С1 своим значением имеет значение таймера относительного премсии. В GPSS/360 не существует стандартного числового атрибута для значения таймера абсолютного времени. (В GPSS V д-чя этого существует атрибут АСА). П конце гл. 4 приведен косвенный способ определения значения таймера абсолютного врсмопи в GPSS/360 (см. упражнение 3D в параграфе 4.21 книги). 2.а), 1) столбец 3; 2) столбец 2; 3) столбец 4. б). FCSJOE =26. FRIJOE = 860; FT$JOE = 15. b)FSJOE=- 1 при завершепии моделирования, поскольку прибор JOE был в этот момент занят обслуживанием. З.б). Q$JOEQ- I; QA$JOEQ = 0; QC$JOEQ - 27; QM&JOEQ = 1; QT$JOEQ - 2; QX$JOEQ = 5; QZ$JOEQ = 12. 4.6). S$MEN = 0; SA$MEN = 2; SC$MEN = = 1924; SMJMEN = 3; SR$MEN = 728; ST$MEN " 7. в). RSMEN =- CAPACITY =-• S$MEN = 3—0^3. 5.a). 1) Fl = 0 в момент времени 4; равен 1 в момент времени 8; равен 0 в момент времени 12; 2) FRI = 375 в момелт времени 8; равен 500 в момент времени 10; равен 416 в момент времени 12; 3) FT1 = 3 в момент времени 8; равен 5 в момелт времени 10; равен 5 в момент времени 12. б). 1) SC4 = 1; 2) SM4 = I; 3) SA4 - 0 в момент времени 8; равен 0 в момент времени 12 (неусечеиными средними значениями содержимого в моменты времени 8 и 12 являются 0,125 и 0,138 -|- соответавеино. После отбрасывания они равны нулю.) 4) SR4 — 125 в момент времени 8; равен 138 в момент времени 12; 5) ST4 = 3 в момент времени 8; равен 5 в момент времени 12. в). 1) SC4 = 2; 2) SM4 = 2; 3) SA4 — 0 в момент времени 8; равен 0 в момент времени 12; 4) SR4 = 250 в момент времени 8; равен 276 н момент времени 12; 5)ST4= 3 в момент времени 8; равен 5 в момент времени 12. г). 1) QC$ALPHA = 5; 2) QZ*ALPHA = 2; 3) QT$AlPHA =г 3: 4) QX$ALPHA ■- 5; 5) QA»ALPHA= = 1;; 6)QM$BETA = 3. 6.6). FNfBOND = —5 при SR$SHELF " 150; равен —1 при SR$WH£LF = 450; равен 765 при SR$SHELF ■= = 451; равен 12 при SRJSHEl.F — «95. 7.6). Правильное значение функции (т. с. без отбрасы- взния) равно 0 при QM2 — 0; равно 3 при QM2 — I; равно 9 прн QM2 —■ 3; равно 13,5 при QM2 ■— 4; равно 18,66 •+- при QM2 = 6; равно 20 при QM2 — 10. 8. DRATS FUNCTION WSPATHQ. U5 0, 1/3. 4/5, 2/6, 4/4, 8/5, 10. 9.а). LONG FUNCTION Q$ALPHA,D6 0,0/1,2/2,4/3,6/4,8/5, 10. б). SHORT FUNCTION Q$ALPHA,C2 0, 0/5, 10. 10. В примере моделировании 4А, хотда транзакт находится в очереди, он находятся п блоке QUEUE. Это означает, что QJWAIT равно W$IIOLD, что, « свою очередь, означает, что W$HOLD может быть заменен па 34* ■ Q$WAIT в качестве аргумента функции. Поведение модели при этом не изменится. П.a). STYME FUNCTION CI, D4, 1200, 120/2400, 150/4200, 170/4800, 200. б). STYME FUNCTION CI. C5 0, 120/1200, 150/2400. 170/4200,200/2800.250 4.9. Упражнения ].в). —320 000 является допустнмымз иачением параметра, размещаемом в полном слове, но не может быть значением параметра, размером н полслова. (Минимальным допустимым значением такого параметра является число —32 768.) д). Утверждение неверно. Параметрам пельзя присваивать символические имела. з). Модель надо изменить таким образом, чтобы транзакт или транзакты, из-за которых возникает ошибка, имели параметры, размером в целое слово, а не в поп- слова. и). Надо блоку GENERATE дать символическое имя, например DOOR. За этим блоком надо поставить блок «ASSIGN I, N$DOOR». 2. Ответами па вопросы в пп. а—д являются соответственно 12, 2, 180, 28, 30. З.а). 2 единицы времени. б). 25 единиц времени. 4. Ответы помещены в следующей таблице: Вопрос а б в г д Номер изменяемого параметра 5 5 3 3 2 | Новое U _ значение 8 Вопрос 100 е —97 100 100 -7 ж t н Номер изменяемого параметра 3 3 1 4 Новое значение 6 3 532 0 5.а). Различие заключено а операнде С. В блоке «ASSIGN 5—, 100, 3» значение, полученное от функции 3, умножается на №0, а затем целая часть произведения вычитается из значения пятого параметра. В блоке «ASSIGN 5—, 100, FN 3» значение функции, номером которой является целая часть от значения функции 3, умножается на 100 и далее целая часть этого произведения вычитается из значения пятого параметра. б). 1) 195; 2) 246. в). Значение, присваиваемое параметру 7, будет одно н то же в любом случае. Блок, который использует операнд С. для расчете значения параметра, потребует несколько больше времени выполнения иа ЭВМ. б.а). 45. б). Максимальным допустимым числом элементов закупки является 18. Соответствующим ему временем задержки у кассы является 54 с, в). Заменить карту следования фупкции «1,3/18,54» иа «.1,5/18,90». г). Каждый покупатель сделает хотя бы одну покупку. д). Запись 1 -+- можно было бы использовать в качестве операнда А блока ASSIGN оператора 5, поскольку параметр 1 начальным значением имеет ноль. 7.а). Из 366 покупателей, вошедших в магазин, 280 (или 76,5%) сделали покупки у первого прилавка. При продолжительном моделировании получалось бы, что 75% покупателей сделали покупки у первого прилавка. в). В момент завершения моделирования у первого прилавка находилось два покупателя и один покупатель находился у третьего прилавка. 8.а). Для этого вадо включить в модель карту определения емкости многоканального устройства, чтобы огра-
иичить число корзинок для покупателей десятью. После того, как это будет сделано, блок, следующий за блоком GENERATE, может при определенных условиях отказать во входе транзактам-покупатслям, тем самым будет нарушена последовательность интервалов прихода травз- актов. Такого нарушения можно избежать, если ввести между блоками GENERATE и ENTER блок ADVANCE. Операнды этого блока должны быть определены по умолчанию. б). Введите в начало сегмента ] модели на рис. 4В.2 следующую группу блоков: GENERATE 75,FN$XPDIS ADVANCE TRANSFER BOTH..THINK WAIT ENTER CARTS TRANSFER HMA1N THINK TRANSFER .65. .WAIT TERMINATE MAIN TRANSFER .25„TRY2 Далее следует продолжать сегмент I модели, который изображен на рис. 4В.2, начиная с оператора 4. 4.12. Упражнения 1.6). В общем случае это утверждение неверно. Даже при том, что уровень приоритетного траизакта не изменится, последний переместится в цепи текущих событий в консп своего приоритетного класса. Это меняет порядок, в котором в дальнейшем будут обработаны транзактм, имеющие уровень приоритета 3. Если ни один траизакт в цепи текущих событий пе имеет уровень приоритета, равный трем, то относительное расположение траизакта в этой цени прн проходе его через блок PRIORITY не меняется. И тем ие менее, после того как продвижение траизакта будет завершено, интерпретатор возобновляет просмотр испи текущих событий от начала (поскольку последним был обработан блок PRIORITY). Без этого возобновление просмотра от начала ие имело бы места. 2.а). Нет. Блок PRIORITY ие отказывает во входе транзактам. Таким образом, если этот блок будет размещен за блоком TRANSFER, работающим в режиме BOTH, ни один транзакт-автомобнль не пойдет ия метку BYBYE. б). Блок PRIORITY можно располагать в любом из трех перечисленных мест. Желаемый эффект во всех случаях будет иметь место. В смысле экономия времени использования центрального процессора наилучшим местом для блока PRIORITY явлистся место между блоками LEAVE и ADVANCE. Еслн блок PRIORITY стоит именно на этом месте, то ожидающие транзакты имеют уровень приоритета, равный нулю. Когда возникает событие завершения обслуживания» то приоритетный трзнзакт, завершивший обслуживание, перемещается в цепь текущих событий и становится там перед ждущими транзактами. На фазе просмотра цепи ои будет первым обработан ин- териретатором. Если транзакты. находящиеся в состоянии ожидания, уже будут ияеть единичный уровень приоритета, то завершивший обслуживание транэакт будет помещен в цепь текущих событий позади них. На фазе просмотра внтерпретатор должен будет проделать путь через ожидающие транзакты для того, чтобы добраться до траизакта, только что завершившего обслуживание, а иа это уйдет время работы центрального процессора. в). Если блок PRIORITY поместить после блока ADVANCE, то траизакт. завершивший обслуживание, останется с нулевым уровнем приоритета в момент, когда он будет возвращен в цепь текущих событий из цепи будущих. Предположим, что событие прихода также запланировано на этот момеит модельного времени и что планирование события прихода предшествовало планированию события завершения обслуживания. В этом случае прибывающий транзакт будет стоять в цепи текущих событий перед транзактом, завершившим обслуживание. Если вся площадка для ожидания заполнена, то прибывающий автомобиль пойдет па метку BYBYE. Тогда а момент полного завершения обработки траизакта он повысит свой уровень приоритета до единицы, но будет уже поздно н, следовательно, желаемый эффект достигнут не будет. З.а). Причина здесь та же, что и в упражнении 2в. б). Уровень приоритета траизакта надо поднять до единицы где-нибудь до того, как он входит в цепь текущих событий и пытается в следующий раз занять кран. Когда ПРИХОД ПОКУПАТЕЛЕЙ ИЗБЕЖАТЬ НАРУШЕНИЯ ПОСЛЕДОВАТЕЛЬНОСТИ ПОПЫТКА ВЗЯТЬ КОРЗИНУ ВЗЯТЬ КОРЗИНУ ПЕРЕЙТИ К ОСНОВНОЙ ЧАСТИ МОДЕЛИ ОСТАЛЬНЫЕ 35% УХОДЯТ ХОТЯТ КУПИТЬ У ПРИЛАВКА 1 транзакт выводится из блока «ADVANCE 30,5», он ие пытается еще раз занять край. Потребность его в занитии храпа выражается записью блока «ENTER CRANS» в операторе 4 на рис. 4С.2. До того, как транэакт попадает в этот блок, он снова попадет в цепь будущих событий (войдя в блок «ADVANCE FN$PR0C1» в операторе 9 иа рис. 4С.2). Теперь ясно, что блок PRIORITY будет логично расположить между блоками ADVANCE 30,5» и «ADVANCE FN$PR0C1». в). Многоканальное устройство BUSY ие моделирует пи одно из ограничений системы. Его использование объясняется желанием определить загрузку машины. Последняя определяется интерпретатором автоматически, поскольку это одно из устройств модели. Ни одив из блоков «ENTER. BUSY» не откажет во входе транзакту, поскольку емкость устройства BUSY совпадает С числом транзак- тов, циркулирующих в данном сегменте модели. г). Предположим, что две системы с соотношением 5 : I работают бок1 о бок и что совместное нспользовапне кранов этих систем недопустимо. Тогда вполне возможна ситуация, что кран в одной из систем будет свободен, а в другой системе кран необходим, и наоборот. Такой вид простоя крана и агрегата может быть исключен при разрешении совместного использования кранов двумя системами, иначе творя, прн переходе от систем с соотношением 5 ; 1 к системе с соотношением 10:2. В результате, конечно же, поднимется загрузка и кранов, и агрегатов. 4.19. Упражнения l.a). «SELECT E 7. 2, 7, 0, QZ» б). «SELECT L 1, 8, 11, 3, 5, RUTE 4» и). «SELECT G P7, I, 5, 10, FC, BYPAS» г). «SELECT MIN 1, 4, 9,, FR» д). «SELECT MAX 3, 2, 3,, R» с). «SELECT iMIN 12. 1, 10„ Р> ж). «SELECT MIN 5, PI, Р2„ QT» З.б). Переопределение и сокращение числа приборов до 20 при доступпой памяти 64К высвобождает 420 байт. Эти 420 байт можно использовать для введения восьми дополнительных многокапа.тьннх устройств. Это предполагает, что в блоках ENTER и LEAVE операнд В ие будет использован для этих восьми устройств (см. замечание в таблице приложения F). Карта REALLOCATE, с помощью которой выполняется такое перераспределение, записывается как «REALLOCATE FAC,20,STO,43». в). Транзакт, имеющий десять параметров, размещаемых в полных словах, требует, чтобы из области COMMON ему было выделено 60 байт. Если в области COMMON при доступной памяти 64К все 5600 байт могут быть ие» 532
пользованы для трапзактов, то и модели может одновременно существовать 93 таких транзакта. 5. Предположим, что в банке нзходится восемь или более клиентов в рассматриваемый момент времени. Для модели с одной очередью это означает, что все восемь кассиров запиты обслуживанием. В модели же с несколькими очередями, однако, один или более кассиров могут в таких условиях оказыватьсн свободными. (Некоторые клиенты могут стать в очередь к кассиру, который уже занят обслуживанием. Модель недостаточно сложна, чтобы передать этих клиентов кассирам, которые остаются сво- боднымв в момент, когда клиенты идут в очередь к занятым кассирам.) Если ври этих условиях в банк входит еще один клиент, то он может «сделать» нулевое вхождение е очередь в случае модели с несколькими очередями, но этого ие произойдет в модели с одной очередью. 6. Если сначала возникает событие прихода транзакта, прибывшей траизакт-клиент присоединяется к очереди, стоящей к первому кассиру. Если же сначала возникает событие еаьч'ршеиия обслуживания, то вошедший клиент сразу же занимает четвертого кассира. 7.а). Когда в примере моделирования 4D обрабатывается событие прихода, соответствующий транзакт-клиент осуществляет полное число обращений к своему генератору случайных чнеел. Следовательно, состояние генератора в конце моделируемого дня зависит только от того, сколько клиентов пришло, а ие от того, сколько из них попало иа обслуживание. Это означает, что состояние генератора в конце моделируемого дня ие зависит от дисциплины обслуживания, реализуемой в модели. {Последнее утверждение неявно указывает пи тот факт, что если событие прихода запланировано на момент завершения моделирования в примере моделирования 4D, то моделирование завершается прежде, чем обрабатывается событие прихода, независимо от дисциплины обслуживания очереди в модели.) В противовес сказанному о примере моделирования 4D, состояние генераторов RN1, RN2, RN3 и RN4 в конце моделируемою дня в примере моделирования ЗС не являемся независимым от дисциплины обслуживания очереди в модели. В примере ЗС любой рабочий, который еще не попал на обслуживание до конца моделируемого дня, не сделал всех обращений к генератору случайных чисел, указанному в соответствующем блоке ADVANCE (RN2 илп RN4). Белее того, если приход запланирован на момент завершения моделирования в примере ЗС, событие прихода обрабатывается до завершения моделирования, если дисциплиной обслуживания очереди является «первой обслуживается самая' короткая заявка», что ле имеет места при реализации дисциплины «первым пришел — первым обслужен» (см. решение задачи упражнения 1.ви ].е параграфа 3.21). Это, в свою очередь, означает, что состояние RN1 и (или) RN3 в конце заданного дня моделирования может зависеть от дисциплины обслуживания очереди в модели. В заключевис, таким образом, следует сказать, что карта RMULT призвана в примере моделирования ЗС обеспечить идентичность состояний различных генераторов в начале каждого дня моделирования для двух исследуемых дисциплин обслуживания. 8. GAMMA и BETA получают значения 2 и 5 соответственно. 9. Числовым эквивалентом имени прибора DELTA является число 3. Числовым эквивалентом имени очереди DELTA является число 1. 10. a). «SLIPS EQU 10, S». б). Предположим, что единственной парой блоков, в воле операндов которых используется ссылка на многоканальное устройство с номером 1 и модели, является пара «ENTER РЗ» и «LEAVE РЗ», когда третий параметр принимает значение 1. Предположим далее, что емкость многоканального устройства 1 определена с помощью карты вида «STORAGE S 1,7». В этих условиях во время выполнения фазы ввода моделирования интерпретатор ие исключит число 1 из списка номеров, допустимых для нумерации многоканальных устройств. Если в модель входят блоки вида «ENTER TAGS» и «LEAVE TAGS», и если имя TAGS является первым элементом списка символических имен многоканальных устройств, создаваемого иа этапе выполнения фазы вподз, то число I будет эквивалентно имени TAGS. в). 2) посмотрите в список символических имен многоканальных устройств, выдаваемый на печать в качестве стандартной выходной формы. Посмотрите этот список на предмет выявления, есть ли в нем многоканальное устройство, имеющее символическое имя, которому эквивалентно число, предназначенное для идентификации другого многоканального устройства в модели. Если такие числа появились в списке символических имей, то в модели имеет место избыточность. 12. Переместите блок «DEPART Р2» в модели и поместите его либо непосредственно до, либо сразу после блока «R ELEASE P2». Если это будет сделано, то транзакт- клиент, который только что занял кассира, будет продолжать оставаться в соответствующей очереди. Это означает, что блок «SELECT Е 2, 1, 8, 0, F, QUEUP» можно заменить блоком «SELECT MIN 2, 1, 8„ Q», а блоки, являющиеся операторами 13 и 14 в модели на рис. 4D, могут быть изъяты из модели. 4.21. Упражнение l.a). Временем входа транзакта в модель считается значение таймера абсолютного времени, при котором транз- акт входит в блок, следующий за блоком GENERATE. 2.а). Р3= 31. б).Р5= 15. З.г). Значение Ml вычисляется для активного транзакта как рааность текущего значения таймера абсолютного времени и значении отметки времени. Значение же МР1 вычисляется как разность текущего значения таймера абсолютного времени и значения параметра 1 активного транзакта. д). Если Р7 имеет значение, равное пулю, то значение МР7 совпадает со значенвем таймера абсолютного времени, pro дает нам указание иа косвенный способ получения значения таймера абсолютного времени в процессе выполнения моделировании.) 4.а). Р6= 5. б). Р4 = 20. в). R$JOE уменьшается на 5. 5. Предположим, что параметр 6 обнулен, тогда занятие прибора можно осуществить с помощью блока «SEIZE МР6». 6- Поместите блок «MARK25» после блока QUEUE. Поместите блок «ASSIGN 5, МР25» после блока DEPART. 7.а). Поместите транэакт вначале в блок «MARK 2», а затем в блок «ASSIGN 2-K 50». 4.25. Упражнение l.a). Число внутренних интервалов таблицы на два меньше, чем число, задаваемое в карте определения таблицы в операнде D. в). Самый левый интервал таблицы JOE покрывает диапазон значений от —2 147 483 648 до —50 включительно. Третий интервал покрывает диапазон значения от —24 до 0 включительно. г). Значепне 25 приходится па четаертый интервал таблицы. д). Наименьшим числом, которое может войтн в таблицу SOFAR, является ноль, поскольку аргументом таблицы является атрнбут Ml и он не может принимать значения, меньшие нуля. 2. Очевидно пользователь при создании таблиц хотел иметь относительно грубую табуляцию значений, касающихся параметра Q$LONG, приходящихся на диапазон значений 0—20 с длиной интервола 5 единиц, и в то же время хотел иметь относительно точную табуляцию зкаче- 533
BLOCK NUMBER • IOC * I AT 0,125/ COMPI COMP2 OPERATION A,B,C,D,E,F,G FUNCTION DEFINITIONS) COMMENTS FUNCTION RN1,C8 SHIP INTERARRIVAL TIME DISTRIBUTION . 1,175/. 22,225/. i»,27S/. 55,325/. 78,375/. 9,»25/l,l»75 STORAGE CAPACITY DEFINITIONS) STORAGE STORAGE 2 6 PROVIDE 2 BERTHS IN COMPLEX 1 PROVIDE 6 BERTHS IN COMPLEX 2 NEW OLD 16 17 18 19 20 21 22 23 20 25 26 27 28 29 OLD TABLE DEFINITION(S) TABLE TABLE PI,0,30,50 PI,0,30,50 MODEL SEGMENT 1 GENERATE TRANSFER ENTER SEIZE ASS IGN ADVANCE RELEASE ADVANCE MARK SEIZE ASSIGN TABULATE RELEASE LEAVE TERMINATE ENTER SEIZE ASSIGN AOVANCE RELEASE ADVANCE MARK SEIZE ASSIGN TABULATE AOVANCE RELEASE LEAVE TERMINATE FN$IAT,,, .7,,OLD COMPI TUG 1,M1 30,10 TUG Ш0,1Ьк 2 TUG 1*,MP2 NEW TUG COMPI COMP2 TUG 1,H1 30,10 TUG 2160,288 2 TUG 1»,MP2 OLD 15,5 TUG COMPI DELAY TABLE FOR NEW SHIPS DELAY TABLE FOR OLD SHIPS SHIPS ARRIVE ROUTE OLD SHIPS NONSEQUENTIALLY GET A BERTH IN COMPLEX 1 GET THE TUG SET PI - DELAY THUS FAR (IF ANY) BERTHING TIME ELAPSES FREE THE TUG UNLOADING TIME ELAPSES SET P2 - ABSOLUTE CLOCK GET THE TUG SET PI - PI ♦ 2ND DELAY COMPONENT TABULATE TOTAL DELAY TIME FREE THE TUG FREE THE BERTH LEAVE THE HARBOR GET A BERTH IN COMPLEX 2 GET THE TUG SET PI - DELAY THUS FAR (IF ANY) BERTHING TIME ELAPSES FREE THE TUG UNLOADING TIME ELAPSES SET P2 - ABSOLUTE CLOCK GET THE TUG SET PI - PI ♦ 2ND DELAY COMPONENT TABULATE TOTAL DELAY TIME DEBERTHING TIME ELAPSES FREE THE TUG FREE THE BERTH LEAVE THE HARBOR CARD NUMBER 1 2 3 * 5 6 7 8 9 10 11 12 13 Ik 15 16 17 18 19 20 21 22 23 2* 25 26 27 28 29 30 31 32 33 31» 35 36 37 38 39 40 kl kt *3 k4 kS «6 *7 Рис У8, a 534
BLOCK NUMBER *LOC OPERATION A,B,C,D,E,F,G SIMULATE • FUNCTION DEFINITIONS) COMMENTS IAT FUNCTION RNl,C8 SHIP INTERARRIVAL TIME DISTRIBUTION 0,125/.1,175/.22,225/.«»,275/.55,325/.78,375/. 9,I» 25/1,1» 75 MEAN FUNCTION PI,02 MEAN UNLOADING TIME VALUES l,lt»<»0/2,2160 SPftEO FUNCTION P1,D2 SPREAD MODIFIERS FOR UNLOADING TIMES 1 Ш/2 288 STYРЕ FUNCTION RN1.D2 SHIP CODE: 1 -> NEW; 2 -> OLD .3,1/1,2 * • STORAGE CAPACITY DEFIN1TIDNCS) ■* PROVIDE 2 BERTHS IN COMPLEX 1 PROVIDE 6 BERTHS IN COMPLEX 2 DELAY TABLE FOR NEW SHIPS DELAY TABLE FOR OLD SHIPS SHIPS ARRIVE SET-PI - SHIP-TYPE CODE GET A BERTH GET THE TUG SET P2 * DELAY THUS FAR (IF ANY) BERTHING TIME ELAPSES FREE THE TUG SET PS - SPREAD MODIFIER FOR UNLOADING UNLOADING TIME ELAPSES SET P3 - ABSOLUTE CLOCK GET THE TUG SET P2 - P2 * 2ND DELAY COMPONENT TABULATE TOTAL DELAY TIME DEBERTMING TIME ELAPSES FREE THE TUG FREE THE BERTH LEAVE THE HARBOR I 2 3 It 5 6 7 8 9 10 11 12 13 Ik 15 16 17 Рис" 1 2 • 1 2 • У8, 6 STORAGE STORAGE TABLE DEFI TABLE TABLE 2 P 6 P NITION(S) P2;0,30,50 P2,0,30,50 MODEL SEGMENT 1 GENERATE ASSIGN ENTER SEIZE ASSIGN ADVANCE RELEASE ASSIGN ADVANCE MARK SEIZE ASSIGN TABULATE ADVANCE RELEASE LEAVE TERMINATE FN$tAT,.,,,,F 1,FN$STYPE PI TUG 2, Ml 30,10 TUG 3,FN$SPRED FN*MEAN,P3 3 TUG 2*,MP3 PI 15,5 TUG PI CARD NUMBER 1 i 5 6 7 8 9 10 11 12 13 11» 15 16 17 18 19 20 21 22 23 21» 25 26 27 28 29 30 31 32 33 31» 35 36 37 38 39 ItO 41 t»2 535
BLOCK NUMBER •LOC OPERATION SIMULATE A,B,C,D,E,F,G COMMENTS FUNCTION DFFINITION(S) 1 FUNCTION RN1,C2 ,1296/1,1585 2 FUNCTION RN1,C2 , 1872/1, 21H»9 COIN FUNCTION RN1,C2 ,20/1,1*1 QOOUT FUNCTION RN1,C2 ,10/1,21 IAT FUNCTION RN1,C8 SHIP INTERARRIVAL TIME DISTRIBUTION ,125/. 1,175/ .22,225/ Л,275/.55,525/.78,375/ .9,U2S/1,H5 STYPE FUNCTION RN1,D2 SHIP CODE: 1 -> NEW; 2 «> OLD 3,1/1,2 UNLOADING TIME DISTRIBUTION, NEW SHIPS UNLOADING TIME DISTRIBUTION, OLD SHIPS BERTHING TIME DISTRIBUTION DEBERTHING TIME DISTRIBUTION 1 2 3 if s G / S s 10 11 12 13 14 15 16 17 18 19 Рис. У8, e STORAGE CAPACITY DEFINITION(S) STORAGE STORAGE TABLE DEFINITION(S) TABLE TABLE P5,0,30,SO PS,0,30,50 PROVIDE 2 BERTHS IN COMPLEX 1 PROVIDE 6 BERTHS IN COMPLEX 2 DELAY TABLE FOR NEW SHIPS DELAY TABLE FOR OLO SHIPS MODEL SEGMENT 1 GENERATE ASSIGN ASS IGM ASSIGN ASSIGN ENTER SEIZE ASSIGN ADVANCE RELEASE ADVANCE MARK SEIZE ASSIGN TABULATE ADVANCE RELEASE LEAVE TERMINATE PN$IAT,,,,,,F 1,FN$STYPE 2,1,PI 3,FN$G0IN fc,FN$GODUT PI TUG 5,Ml P3 TUG P2 6 TUG 5*,MP6 PI Рк TUG PI SHIPS ARRIVE SET PI » SHIP-TYPE CODE SET P2 « UNLOADING TIME SET P3 - BERTHING TIME SET Pit - DEBERTHING TIME GET A BERTH GET THE TUG SET P5 - OELAY THUS FAR (IF ANY) BERTHING TIME ELAPSES FREE THE TUG UNLOADING TIME ELAPSES SET P6 - ABSOLUTE CLOCK GET THE TUG SET P5 - P5 ♦ 2ND DELAY COMPONENT TABULATE TOTAL DELAY TIME DEBERTHING TIME ELAPSES FREE THE TUG FREE THE BERTH LEAVE THE HARBOR CARD NUMBER 1 2 3 It 5 6 7 8 9 10 11 12 13 Ik 15 16- 17 1* 19 20 21 22 23 2<r 25 26 27 28 29 30 31 32 33 3<t 35 36 37 38 39 t»o i»l I» 2 1(3 I» I» t>5 06 U7 b8 ний того же параметра, приходящегоси иа диапазон 0—8 с длиной интервала 1. 3. Когда транзакт-клнент приходит в точку А, его надо ввести в блок «MARK 9» непосредственно перед тем, как он начнет ждать освобождения занятого ресурса, и затем ввести его В блок «ASSIGN 2, МР9» сразу после того, как он получит этот ресурс. Позднее, когда транзакт-кляент дойдет до точки В, его иадо ввести в блок «MARK 9» снова непосредственно перед тем, как ои начнет ждать освобождения занятого ресурса. Сразу после получения этого ресурса транзакт надо пропустить через блоки «ASSIGN 2+, МР9» и TABULATE SUM, а операндом А карты определения таблицы SUM сделать параметр Р2. 8. На рис. V8, а, У8, б и У8, в приведены распечатки программ моделей, соответствующие вопросам 8.а, б и е, 2) этого упражнения соответственно. Перед тем, как использовать эти модели, к иим падо добавить карты управления моделированием. 4.27. Упражнения 1.а). 44,6%. б). Надо просто добавить в модель карту QTABLE со значением 10 в качестве операнда А. 2.а). Поместите блок «TABULATE IAT» вслед за блоком «ADVANCE 16,4» и добзвьте в модель карту «1АТ TABLE IA, 12, 1, 15». (Выбор значений операндов В, С и D в карте таблицы сделан произвольно.) б). Поместите блок «TABULATE RATE» вслед за блоком «ADVANCE 16,4» и внесите в модель карту «RATE TABLE RT О, 1, 5, 60». (Выбор значений операндов В, С, D и Е сделай произвольно.) в). Поставьте блок «MARK 1» между блоками «DEPART JOEQ» н «ADVANCE 10,2». Поставьте блок «TABULATE TIS» вслед за блоком «ADVANCE 18,6э. Добавьте в модель карту «TIS TABLE MP1, 20, 1, 18л. 536
г). Поместите блок «TABULATE IAT» непосредственно за блоком «GENERATE 420,360 ,,, 1». Поместите аналогичный блок TABULATE непосредственно за блоком «GENERATE 360,240 ,„ 2». Добавьте в модель карту «IAT TABLE 1А,0,60,20». К главе б 6.4. Упражнения 1. V$VARI= 1 V$VAR2 = 2 V$VAR3 = 3 V$VAR4 ^ 0 2. Целые и действительные переменные отличаются друг от друга тремя деталями: 1) в поле операции карты определения для целой переменной (в отличие от действительной переменной) используется VARIABLE (а не FVARIABLE); 2) при вычислении выражения, определяющегося пелоЙ переменной (в отлнчис от действительной), используется целочисленная арифметика (а не действительная); 3) если в выражении, определяющем целую переменную, используются ссылки на функции, то в вычислениях принимает участие только целая часть функции; при вычислении действительных переменных используется полное значение функции. Целые и действительные переменпые аналогичны друг другу в следующих трех аспектах: Ц и те и другие имеют целые значения; 2) ссылки на них производятся посредством V$j или V$ нмя: 3) н те, и другие являются частью одного элемента GPSS — арифметической переменной. Это означает, чти в данной модели >ш одна действительная переменная не может иметь то же имя, что и целая переменная, и наоборот. З.а). «SUM VARIABLE R$SHIPS + S$SHIPS -(- -I- R$fTUGS -|- SSTUGS» 6). «AVG FVARIABLE (Q5 + Q7 + Q$LONG)/3 + _!_ I/O в). «XPDIS FVARIABLE 75*FN$XPD1S» r). «GNORM FVARIABLE 2 * FN$SNORM. -J- 10» д). «PARTE VARIABLE 16*RN7/1000» e).«PARTF VARIABLE I -h 15wRN4/1000» {Почему не «WOOPS VARIABLE 1 + RN4@15*?] Ж). «PARTG VARIABLE 7 + 12wRN6/l000» |По- чему не «WOOPS VARIABLE 7 -f RN6@I2»?] 3). «PARTH VARIABLE 5 -}- (P2—4)*RN1/1000» [Почему ие «WOOPS VARIABLE 5 -f + RN1@(P2-4)»?I 4. «STEP VARIABLE PR—1@PR». 5. На рис. 5.9 показано решение аналогичной задачи, б.а). В выражения, используемые для определения переменных, но могут входить десятичные дроби. IB GPSS/360 десятичные дроби можно использовать только в двух случаях: I) в качестве первого символа в операнде А блока TRANSFER, работающего в режиме статистической передачи; 2) в картах определения функции. 1 б). Заменить 0,4 на 4/10 или 2/5. в). Использовать в качестве блока ADVANCE «ADVANCE P1.V$SPRED», определив переменвую SPRED выражением «Р1*75/100» или «Р1*3/4». 7. В процессе моделирования в блоке ADVANCE может быть получено отрицательное время задержки, поскольку нри вычислении функции SNORM возможно получение числа, равного —5. Если это произойдет, процесс моделирования остановится и иа печать будет выдано сообщение GPSS/360 об ошибке с номером 505. 8.а). В точку А следует поместить блок «HERE ASSIGN 5, V$ADD1», где переменная ADD1 определяется выражением N8HERE +Ь. б). В точку А следует поместить блок «HERE ASSIGN 5, V$CYCLE», где переменная CYCLE определяется выражением «N$HERE@10 + 1». 9. Следует использовать такой блок GENERATE: «GENERATE FN$ROTAT„l», где в качестве аргумента функции ROT AT используется персмеппая CYCLE. Определения функции и переменной даются следующим образом: CYCLE VARIABLE Cl@24 ROTAT FUNCTION VSCYCLE, D4 1,3/4,6/10,4/14, II 11. Неуссченное значение функции участвует в вычислениях в случаях, когда функция используется или в операнде В блока GENERATE, или в операнде С блока ASSIGN, или если функция используется в качестве части выражения, определяющего действительную переменную. 12.а). Знак «минус» не может быть использован в качестве унарного оператора в GPSS/360. б). V$ BETA = 0. и). Знак «минус» ие может быть использован в качестве унарного оператора в GPSS/360. г). В выражении, использующем действительную переменную, нсльзи использовать операцию деления по модулю- 6.7. Упражнения I.г). «CLEAR XHI, ХН5, Х4 — Х6»; или «CLEAR Х4 — Х6, ХШ, ХНб». д). Если в GPSS/360 в качестве неличины операнда блока используется коисганта, то она не может содержать более шести знаков. Эту ошибку можно обойти, используя кар-rv «INITIAL X$rIOLD, 4500000» и блок «ADVANCE X$HOLD». 2.6). 1) если н модели не используются блоки «SAVEVALUE 2» я для полпословных сохраняемых величин яе используются карты EQU, то BETA и ALHPA как и однословные сохраняемые величины будут эквивалентны соответственно номерам I и 2, вводя тем самым иехселательную избыточность для второго полиословного сохраняемого значения. Для того чтобы избежать этого. следует либо ввести в молель один или несколько «SAVEVALUE 2», либо использовать карту EQU для задания соответствия между ALPHA н любым номером полиословной сохраняемой величины, отличным от 1, 2 или 4. (Обратите внимание иа то, что, если для установления эквивалентности между ALPHA и 1 как вол нос доеными сохраняемыми аеличипами был" использована карта EQU, то при отсутствии блока «SAVEVALUE 2» BETA была бы эквивалентна второй полиословной сохраняемой величине.) •••:$ 2) если в модели используются блоки «SAVEVALUE 1» и ие используются блоки «SAVEVALUE 2» и если отсутствует карта EQU. устанавливающая соответствие между BETA и любой другой сохраняемой величиной с номером, отличным от 2, то интерпретатор поставит вмени BETA соответственно номер 2 в качестве номера полиословной сохраняемой величины; 3) см. ответ к п. 1. З.а). В момент, когда будет воспринята карта CLEAR, сохраняемые величины MEAN и SPI?ED будут обяулены и затем эти нулевые значения будут использованы при планирования события первого прибытия п блох GENERATE. (Вспомните, что одной из частей операции очистки является планирование события прихода в каждый блок GENERATE в модели). Это неотвечает заданным требовнииям. „.„.„ б). При воздействии избирательной карты ы.ьак для планирования события нового прихода в блок GENERATE будут использованы старые значения сохра- 537
ляемых величин MEAN и SPPED. Это не отвечает заданным требованиям. в). Карта INITIAL вызывает установку сохраняемых величин MEAN и SPPED равной их новым значениям, а именно 60 и 30 соответственно. При воздействии после этого избирательной карты CLEAR для планирования события первого прихода в блок GENERATE будут использованы именно эти новые значения. Это как раз то, что и требуется. д). Такой блок ошибочен потому, что в GPSS/36 нельзя использовать выражения в операндах блока. Сна чала нужно определить переменную SUM с помощью выражения cQl 4- Q2», а затем использовать блок «TEST LE V$SUM, Q3, BYPAS». е). Отедует поместить в точку А блок «TEST E V$SUM, О, LOC2», где переменная SUM определяется выражением «Q$ONE -f Q$TWO+ Q$THREE». Пусть блок, следу- ющий за этим блоком TEST, имеет имя LOCI; в противном MULT FUNCTION 0.0/1.1000000 LOCI GENERATE SAVEVALUE TERMINATE START RNI.C2 N$L0C1, FNSMULT I 10 УМНОЖЕНИЕ RNI HA 1000000 ОБЕСПЕЧИТЬ НУЖНОЕ ЧИСЛО ТРАНЗАКТОВ ЗАПИСАТЬ RNI* 1000000 В СЛЕДУЮЩУЮ СОХРАНЯЕМУЮ ВЕЛИЧИНУ УМЕНЬШИТЬ СЧЕТЧИК ЧИСЛА ЗАВЕРШЕНИЙ НА I ЗАКОНЧИТЬ МОДЕЛИРОВАНИЕ ПОСЛЕ 10 ЗА- ВЕРШЕНИЙ 8. Пусть приборы с 1 по 6-й имитируют соответственно прилавки с 1 по 6-й, где происходит проверка; очереди с 1 по 6-ю имитируют очереди, формирующиеся соответственно у этих прилавков; в полнослонные сохраняемые величины с 1 по 6-ю записывается общее число единиц товара в корзинках в очередях соответственно с 1 по 6-ю. Определим переменную / с помощью выражения «X//Q/ -+• Q/» для / — 1. 2, 3, 4, 5 и 6, затем используем следующую последовательность блоков. случае за блоком TEST нужно поставить блох «TRANSFER , BLOKI». ж). В точку А следует поместить блок «TEST LE RNI, 350, В1-ОК2». При этом 1гужно, чтобы за этим блоком TEST следовал блок с именем BLOKI; в противном случае за блоком TEST необходимо поставить блок «TRANSFER, BLOKI». з). Пусть рассматриваемый прибор имеет екмиолическое имя J ЕВ. Вместо блока «SEIZE J ЕВ» следует поставить SELECT M1N SAVEVALUE QUEUE SEIZE DEPART SAVEVALUE ADVANCE RELEASE 7,1,6„V P7+.P1 P7 P7 P7 P7—,P1 10,5 P7 ПОЛОЖИТЬ Р7. РАВНЫЙ НОМЕРУ ОЧЕРЕДИ, КУДА СЛЕДУЕТ ВСТАТЬ ИЗМЕНИТЬ ДЛЯ ЭТОЙ ОЧЕРЕДИ ОБЩЕЕ ЧИСЛО ПОКУПОК В КОРЗИНКАХ ВСТАТЬ В ОЧЕРЕДЬ ЗАПЯТЬ ПРОДАВЩИЦУ, СТОЯЩУЮ НА ПРОВЕРКЕ ВЫЙТИ ИЗ ОЧЕРЕДИ ИЗМЕНИТЬ ДЛЯ ЭТОЙ ОЧЕРЕДИ ОБЩЕЕ ЧИСЛО ПОКУПОК В КОРЗИНКАХ ИДЕТ ПРОВЕРКА ОСВОБОДИТЬ ПРОДАВЩИЦУ, СТОЯЩУЮ НА ПРОВЕРКЕ 5.10. Упражнения La). «TEST L Q1.Q2, RUTE7». б). Следует поместить в точку А блок «TEST G R$ALPHA, R$BETA». в). После прибытия траизакта-посетителя следует направить его в блок «TEST LE Q$LINE,5,BYBYE», где LINE — имя, присвоенное очереди в парикмахерской, и BYBYE — имя блока, куда перейдет транзакт-поссти- тель, если посетитель не захочет ждать обслуживания. г). Следует поместить в точку А блок «TEST G FR$GRANE,500». следующую последовательность из двух блоков: TEST E X$JEB, 0 SAVEVALUEJEB, I Вместо блока «RELEASE ЛЕВ» следует поставить блох «SAVEVALUE ЛЕВ, 0». Недостатком имитации прибора сохраняемой величиной является тот факт, что относительно рассматриваемого прибора не будет собрало Никакой статистики. Кроме того, будет сэкономлено процессорное время, требующееся для сбора згой статистики. Однако, если возникает блокировка, такая экономия времени процессора может не возмещаться, поскольку дли блока «TEST E Х$ЛЕВ, 0» может, по существу, потребоваться больше процессорного времени, чем для блока «SEIZE ЛЕВ». (Причина этого явления объяснена в параграфах 7.2 и 7.3 книги:) к). SETUP GENERATE ASSIGN TEST NE PRINT TRANSFER ,„1 l.CI PI,CI „C .SETUP ЗАГРУЗИТЬ СЕГМЕНТ МОДЕЛИ ПОМЕСТИТЬ В PI ЗНАЧЕНИЕ ОТНОСИТЕЛЬНОГО ВРЕМЕНИ ЖДАТЬ. ПОКА НЕ ИЗМЕНИТСЯ ВЕЛИЧИНА ОТНОСИТЕЛЬНОГО ВРЕМЕНИ РАСПЕЧАТАТЬ НОВУЮ ВЕЛИЧИНУ ОТНОСИТЕЛЬНОГО ВРЕМЕНИ ПЕРЕЙТИ К ОЖИДАНИЮ СЛЕДУЮЩЕГО ИЗМЕНЕНИЯ ВРЕМЕНИ 538
л). В решении п. к заменить блок «PRINT ,, С» блоком «TABULATE DELCI», где операндом А в карте определения таблицы с именем DELC1 будет V$DELTA, а переменная DELTA определяется выражением «CI — Р1». м). Для п. к решепие таково: Для получения решения, соответствующего п. л, нужно заменить блок «PRINT „О блоком «TABULATE DELAC», где операндом А карты определения таблицы с именем DELAC будет величина MPI. (Вспомним, что до тех пор, пока не появится карта RESET, величины относительного в абсолютного времени совпадают. Заметим также, что блок «PRINT ,,0 вызывает выдачу на печать и относительного, н абсолютного времени. Таким образом, основное отлнчие части п. м от пп. кил является логическим, а ие численным.) З.а). Через сегмент 1 модели попеременно проходят трапзакты с номерами I и 3. В сегменте 2 модели на протяжении всего процесса моделирования циркулирует транзакт 2. б). Прежде всего, следует убрать операнд Е из блока GENERATE в сегменте 1 модели. Если бы это было единственным изменением, то в день прибытия заявки на пополнение транзакт из сегмента 2 модели находился бы в цени текущих события пепосредствеппо перед началом се просмотра впереди транзакта из сегмента 1 модели. Прн этом был бы достигнут именно тот эффект, которого желательно избежать. Для того чтобы обойти этот эффект, следует изменить приведенное время с 6, 7, 8, 9 и 10 соответственно на 7. 8, 9, 10 и II. Это приведет к тому, что содержимое наличного запаса не изменится от прибытия заявки на пополнение до тех пор, пока не наступит день, непосредственно следующий за днем ее поступления, по перед тем, как происходит определение потребностей в товаре па этот день. Логически в рассматриваемом примере модель ведет себя именно так. Если ввести в модель оба предложенных изменения и проводить моделирование в такой видоизмененной форме, то результаты будут совпадать с результатами, приведенными в примере. В указанном выше решении функция J.TIME и переменная DMND определены так же, как н в примере 5В, аргументом таблицы LTD является Р2 (Р2 используется в качестве операнда А карты определения этой таблицы.) 5.12. Упражнения 2. ТС$ТАВ1.4 = 5; TB$TABL4 = 4 (а именно 19/5) и первым символом в операнде D карты определения таблицы TABL4 должен быть символ «W». (Что касается TC$TABL4 и TB$TABL4. следует обратить внимание на парвграф 5.11 книги, где сказано, что величины стандартных числовых атрибутов для таблиц высчитываются па основании певзвешениых входов в таблицу.) З.б). Приоритеты других транзактов (за исключением транзакта-таймера) могут лежать в диапазоне от 2 до 127. Приоритет транзакта-таймера может быть равен либо 1, либо 0. в). Это утверждение верно. Преднамеренно сделано так, чтобы транзакт-иаблюдатель всегда был последним в цепи текущих событий (за исключением момепта прекращения моделирования, когда транзакт-таймер переводится из цепи будущих событий в цепь текущих событий). Транза- кт-иаблюдатель при своем движении не оказывает никакого влияния, за исключением того, что он вызывает возобновление просмотра цепи текущих событий. Как следствие, транзакт-иабдюдатель обрабатывается интерпретатором ровно один раз при каждой фазе просмотра. 4.д). Если трапзакт-наблюдатель находится п начале цепи текущих событий, он будет обработан (и продвинут) интерпретатором в начале каждой фазы просмотра, а затем вновь обработан (но не продвинут) всякий раз, когда будет возобновляться просмотр рассматриваемой фазы. Такие повторные обработки, не имеющие логической основы, отнимают процессорное время. Как следствие, относительно более выгодным решением является помещение транзакта-няблюлатсля в конец цепи текущих событий, как это сделано па рис. 5.21. (Тем ие менее, в примере 7D рассмотрены обстоятельства, при которых транзакт-иа- блюдатель умышленно ставится в начало цепи текущих событий.) 6. Следует просто заменить блок ASSIGN на рис. 5.21: вместо блока «ASSIGN 2,Q$ONF.i поставить блок «ASSIGN 2,S$TELRS» и дополнить модель, показанную иа рис. 4D.2,a, измененным указанным выше образом сегментом с рис. 5.21 (и картой определения таблицы) GENERATE .„I ЗАГРУЗИТЬ СЕГМЕНТ МОДЕЛИ SETUP MARK 1 ПОМЕСТИТЬ В Р1 ЗНАЧЕНИЕ АБСОЛЮТНОГО ВРЕМЕНИ TEST NE MP1.0 ЖДАТЬ. ПОКА НЕ ИЗМЕНИТСЯ ЗНАЧЕНИЕ АБСОЛЮТНОГО ВРЕМЕНИ PRINT „С РАСПЕЧАТАТЬ НОВУЮ ВЕЛИЧИНУ АБСОЛЮТНОГО ВРЕМЕНИ TRANSFER .SETUP ПЕРЕЙТИ К ОЖИДАНИЮ СЛЕДУЮЩЕГО ИЗМЕНЕНИЯ ВРЕМЕНИ 6. BAKUP GENERATE ASSIGN ASSIGN ASSIGN TEST E TABULATE TERMINATE START 1,FN$LTIME 2+,V$DMND 1-,I Pl.O.BAKUP LTD 1 1000 ОБЕСПЕЧИТЬ НУЖНОЕ ЧИСЛО ТРАНЗАКТОВ УСТАНОВИТЬ PI РАВНЫМ СЛУЧАЙНОМУ ЗНАЧЕНИЮ ПРИВЕДЕННОГО ВРЕМЕНИ УВЕЛИЧИТЬ Р2 НА ВЕЛИЧИНУ ЗАПРОСА ДЛЯ ОДНОГО ДНЯ В ТЕЧЕНИЕ ПРИВЕДЕННОГО ВРЕМЕНИ ИЗМЕНИТЬ ЧИСЛО ОСТАВШИХСЯ ДНЕЙ В ПРИВЕДЕННОЕ ВРЕМЯ ВЕРНУТЬСЯ В СЛУЧАЕ, ЕСЛИ В ИНТЕРВАЛЕ ПРИВЕДЕННОГО ВРЕМЕНИ ЕЩЕ ЕСТЬ ДНИ ПОМЕСТИТЬ В ТАБЛИЦУ СЛУЧАЙНУЮ ВЕЛИЧИНУ ЗАПРОСА В ТЕЧЕНИЕ ПРИВЕДЕННОГО ВРЕМЕНИ УМЕНЬШИТЬ СЧЕТЧИК ЧИСЛА ЗАВЕРШЕНИЙ НА I ЗАВЕРШИТЬ МОДЕЛИРОВАНИЕ ПОСЛЕ ИСТЕЧЕНИЯ 1000 ПРИВЕДЕННЫХ ВРЕМЕН 539
9. Следует дать блоку ADVANCE, изображенному на рис. -1D.2, я, имя BYPAS. Затем вставить между бло ками DEPART и ADVANCE на рис. 4D.2, о следующую uapv блоков: TESTNE Ml,0, BYPAS TABULATE QTIME Наконец, в качестве аргумента таблицы QTIME использовать MPI. 5.17. Упражнения l.a). Разность между общим числом входов будет равна числу работ в цеху в первую моделируемую педелю. Затем перед началом моделирования второй недели используется карта RESET. При этом общее число входов во все блоки модели обнуляется. При моделировании второй недели трвпзакты, оставшиеся в модели от первой недели, будут вносить вклад в общий счетчик числа входов в блок TERMINATE в процессе моделирования второй недели, по не будут вносить вклад в общий счетчик числа входов в блок GENERATE. Таким образом, при моделирования второй недели и после се завершения разность общего числа входов ие будет равна числу работ в цеху. 4.а). При Р1 = — 3 FN$GRUPS = 4. При Р1 = 12 FNSGRUPS = 5. б). Если списковая функция GRUPS будет вычисляться лрн значении лервого параметра, отлвчного от ], 2 или 3, возникнет ошибка. В GPSS/360 номер этой ошибки равен 509: «Неверно вычислен индекс для функции спискового типа». в). При вычислении списковой функции интерпретатор делает проверку величины ее аргумента с тем, чтобы убедиться, что он не выходит за диапазон. Если аргумент выходит за диапазон, возникает неисправимая ошибка. В случае дискретных функций подобной проверки аргумента не происходит. 5.24. Упражнения I. GENERATE CYCLE LOGIC S ADVANCE LOGIC R ADVANCE TRANSFER 2. «REALLOCATE «REALLOCATE «INITIAL „120,1 LIGHT 180 LIGHT 120 .CYCLE LOG, 100». LOG,I00.COM,6200». LS$ALPHA/LS$BETA/LS7» остановится в блоке GATE, оставаясь в цепи текущих- событий в заблокированном состоянии. б). Это утверждение ложно. См. ответ к п. а. в). Это утверждение ложно. Трашакт может остановиться в своем движении как в блоке GATE, работающем в режиме отказа, тек и в блоке GATE, работающем в режиме условной передачи, по причине, указанной в п. а. г). Это утверждение ложно. Следующий блок, куда перейдет транзакт, определяется в момент входа транзакта в блок GATE, работающий в режиме условной передачи. Если условие в блоке GATE выполняется, то блоком, куда перейдет транзакт, будет блок, непосредственно следующий за блоком GATE. Если условие в блоке GATE ие выполняется, то транзакт будет направлен в блок, соответствующий указанному выходу из блока GATE. 4. *). «GATE LS MARK» 6). «GATE NU 9» в). «GATE SE TUGS» 5. a). «GATE LR JOE. BYPAS» 6). «GATE U CRANE, BYPAS» в). «GATE SNF 21.BYPAS» 6.а). Все указанные условия соответствуют следующим логическим указателям "блока GATE: U, NU, SF, SNF, SE и SNE. В случае выбора между блоками GATE и TEST следует всегда использовать блок GATE, поскольку при втом достигается экономии времени процессора, б). 1) «GATE SNF SLIPS» 2) «GATE U CPU. BYPAS> 31 «GATE SNF 10» 7. a). «SELECT U 12. I, 10» 6). «SELECT E 12, I, 10, I, F» в) В различных случаях блока SELECT логические уиаэатели U, NU, SF.SNF, SE и SNE можпо заменять операторами отношения. Во всех этих случаях при наличии выбора более естественным выглядит, пожалуй, использование логических указателей, а не операторов отношений. г). «SELECT LS 1, б, 8.„SHUKS» 8.а). Следует заменить блок TEST блоком «GATE SE 1». По причинам, указанным в ответе к упражнению 6г ВВОД ТРАНЗАКТА СПУСТЯ 2 МИН ПЕРЕКЛЮЧИТЬ СВЕТ НА КРАСНЫЙ СВЕТ ОСТАЕТСЯ КРАСНЫМ В ТЕЧЕНИЕ 3 МИН ПЕРЕКЛЮЧИТЬ СВЕТ НА ЗЕЛЕНЫЙ СВЕТ БУДЕТ ЗЕЛЕНЫМ В ТЕЧЕНИЕ 2 МИН ПЕРЕЙТИ К НОВОМУ ПЕРЕКЛЮЧЕНИЮ СВЕТА НА КРАСНЫЙ данного параграфа, блок GATE лучше, чем блок TEST. Однако в примере б блок TEST был использован преднамеренно, а именно для того, чтобы в примере 6Е, где представлено вторичное рассмотрение примера 5Е, использовать этот блок аналогичным образом. (В примере 6Е ло- г). Утверждение неверно. Карта CLEAR вызывает перевод всех логических переключателей в положение «сброшено». Более того, для логических переключателей, в отличие от сохраняемых величин, отсутствует понятие избирательной карты CLEAR. д). Интерпретатор возобновит просмотр цепи текущих событий. е). Если травзакт пребывает в пассивном состоянии, его внутренний флаг находятся в положении «взведено». Когда интерпретатор встречает в иепи текущих событий пассивный транзакт, ои не пытается продвинуть этот транзакт и модели. Если транзакту отказано во входе и блох «GATE LR 7» н этот транзакт переведен в пассивное состояние, то последний вновь станет активным только после выполнения блока «LOGIC R 7». З.а), Это утверждение ложно. Предположим, что блок GATE, работающий в режиме отказа, доступен транзакту в тот момент, когдв блок, следующий за этим блоком GATE, отказывает во входе. В этом случае транзакт входит в блок GATE, а следующий блок, кула он попытается войти, будет блок, идущий за GATE. При этом транзакт б). Номер обращения к RN1 I 2 3 4 б 6 7 Блок, из которого происходит обращение GENERATE GENERATE GENERATE ASSIGN GENERATE GENERATE ASSIGN и т. д. Вычисляемая при этом функция IAT IAT IAT STIME IAT IAT STIME Основное использование величины функции Время прибытия первой машины «Пропадает» Время прибытия второй машины Время обслуживания первой машины «Пропадает» Время прибытия третьей машины Время обслуживании второй машины 540
BLOCK NUMBER 1 2 3 I» 5 6 7 8 9 10 11 12 13 1ч 15 16 17 18 19 20 21 *L0C OPERATION A,B,C,D,E,F,6 SIMULATE * • FUNCTION DEFINITION(S) COMMENTS SNORM FUNCTION RN1,C25 STANDARD NORMAL DISTRIBUTION FUNCTION 0, -5/. 00003, -<t/. 00135, -3/. 00621, -2. 5/. 02275, -2 . 06681,-1.5/.11507,-1.2/.15866,-1/.21186,-.8/. 27*2S,-. 6 ,3«l»58,-.i»/.4207J»,-.2/.5.0/.57926,.2/.655l»2,.li . 72575,. 6/.78811», .8/. 8U3U, l/.88<»93,1.2/. 93319,1.5 .97725, 2/.99379,2.5/.99865,3/.99997,d/1,5 XPDIS FUNCTION RN1,C2U EXPONENTIAL DISTRIBUTION FUNCTION 0,0/.l,.10«t/.2,.222/.3,.3SS/.-l»,.509/.5,.69/.6,.915/.7,1.2/.75,1.38 .8.1.6/.81»,1.83/.88,2.12/.9,2.3/.92,2.52/.9*,2.81/.95,2.99/.96,3.2 .97.3.5/.98,3.9/.99, «».6/.995,5.3/.998,6.2/.999,7/.9998, 8 * * SAVEVALUE INITIALIZATION(S) * INITIAL «PARTS, 3 CONFIGURE FOR CASE OF 3 PARTS * VARIABLE DEFINITION(S) LTIME RTIME FVARIABLE FVARIABLE 700*FN$SNORM*3500 5»FN$SNORM+80 PART LIFETIME DISTRIBUTION PART REPAIR TIME DISTRIBUTION MODEL SEGMENT 1 SHELF GENERATE GATE LR LOGIC S ADVANCE SEIZE ADVANCE RELEASE ADVANCE LOGIC R SEIZE ADVANCE RELEASE TRANSFER ,,,X$PARTS NEED NEED 60 CHINE V$LTIHE CHINE l»0 " NEED FIXER V$RTIME FIXER ,SHELF PROVIDE ALL THE PARTS WAIT UNTIL A PART IS NEEDED CLOSE THE "NEED1' GATE INSTALLATION TIME ELAPSES TURN ON THE MACHINE (THE FACILITY IS USED TO PROVIDE A UTILIZATION MEASURE) PART»S LIFETIME ELAPSES TURN OFF THE MACHINE REMOVAL TIME ELAPSES OPEN THE "NEED" GATE TO THE NEXT PART CAPTURE THE REPAIRMAN REPAIR TIME ELAPSES FREE THE REPAIRMAN PART IS READY TO O'J AGAIN MODEL SEGMENT 2 GENERATE ADVANCE SEIZE ADVANCE. RELEASE TERMINATE 90,FN$XP01S,,,1 FIXER 80, fcO FIXER OTHER FAILED IVCMS ACTIVE AVOID INTERARRIUAL TIME DISTORTIONS CAPTURE THE REPAIRMAN REPAIR TIME fcLAKSES FREE THE REPAIRMAN REPAIRED PART LEAVES MODEL SEGMENT 3 GENERATE TERMINATE UbOOO 1 CONTROL CARD(S) START 1 END TIMER ARRIVES AFTER 5 YEARS TURN OFF THE SIMULATION START THE SIMULATION RETURN CONTROL TO OPERATING SYSTEM CARD NUMBER 1 2 3 I» 5 6 7 8 9 10 11 12 13 It 15 16 17 18 19 20 21 22 23 21» 25 26 27 28 29 30 31 32 33 3d 35 3i 37 38 59 UC ti 1*2 hi Ьэ 1*6 '»7 08 1*9 50 51 52 53 Sk 55 S6 57 5S 59 Рис. У9 гика модели такова, что блок TEST не может быть так просто заменен блоком GATE.) в). I) в состоянии ожидапия для случаев одного, двух к трех служащих должны находиться соответственно первая, вторая и третья машины (наличие ожидающих машин, конечно же, подразумевает, что в любом случае служащие заняты): 2) нужно определить переменную ITSOK, следующим образом: «ITSOK VARIABLE SI |-RI>; 3) предпочтительней использовать блок cTEST E QI, SI, BYBYF», поскольку для вычисления S1 требуется меньше процессорного времени, чем для вычисления переменной ITSOK. г). Перед тем, как моделирование может быть зявер- шеио, очередь должна быть пустой и ие должно быть ни одной машины на обслужввании; Q1 .может быть равным 541
нулю, по прн этом счетчик текущего содержимого блока ADVANCE в сегменте I модели не обязательно будет тоже иметь нулевое значение. д). Такая замена будет справедливой. Когда проверяющий транзакт из сегмепта 2 модели определит, что W$GOTEAi равно нулю, латка модели говорит, что QI также обязательно равно нулю. (Если читатель с этим не согласен, ему предлагается составить по собственному усмотрению композицию цепей текущих и будущих событий для некоторой гипотетической ситуации, а затем проследить шаг за шагом весь оставшийся процесс моделирования.) 9. Модель для этого упражнения дана в виде подробной распечатки программы на рис. У9. Указанная модель ле обеспечивает дублирование состязания между другими изделиями н отказавшими деталями на ремонтном пупктс. Для того чтобы обеспечить указанное дублирование, следует просто заменить аргумент функции XPDIS с RN1 на, например, RN2. Кроме того, если необходимо последовательно рассматривать случаи различного числа запасных датслей при одном полном прогоне, следует использовать карту RMULT для восстановления начального значения мплжлтеля для второго генератора случайных чисел (если по умолчанию, то I н GPSS/360 и 37 в GPSS V, нли до любого другого значения, заданного программистом первоначально). 6.26. Упражнения 1.а). Предположим, что в автобус садится последний пассажир. Соответствующий ему траизакт-пассажир находится в блоке ADVAN'CE в сегменте I модели и в цени будущих событий. Траизакт-автобус вошел в блок «TEST Е Q$WAIT, 0»; следующий блок, кула он будет пытаться войти,— «TEST E W$GETON, 0», и он единственный, находящийся в цепи текущих событий. Теперь постулируется, что следующим событием будет прибытие еще одного пассажира. Этот транзакт-пассажир входит в блок QUEUE в сегмепте 1 модели и остается там в заблокированном состоянии. Если его приоритет выше, чем приоритет тралзакта-автобуса, то в цепи текущих событий он Судет находиться впереди последнего. Предположим теперь, что подошло время завершения посадки в автобус. Прослеживая шаг аа шагом действия, предпринимаемые янтерлретятореш в период зтапа просмотра, можно увидеть, что транзакту-пассажиру, находящемуся и блоке QUEUE, дается возможность попасть в автобус, что совпадает с одним из условий задачи. Если же, напротив, траизакт-пассажир будет иметь тот же приоритет, что и траизакт-автобус, транзакт в блоке QUEUE (сегмент 1 модели) будет находиться в цепи текущих событий позади транз- акта-автобуса. Отслеживание шагов этапа просмотра при таких условиях показывает, что такой траизакт-пассажир будет лишен возможности сесть в автобус, что противоречит одному из условий задачи. б). По причине, указанной в п. а, прибывающий пассажир будет лишеп возможности сесть в автобус, если возникает временной узел между готовым к отходу автобусом и прибывающим пассажиром при равенстве рассматриваемых приоритетов. Тем не менее, несмотря на это, модель будет справедлива. Прослеживание необходимых шагов этапа просмотра приводит к заключению, что рассматриваемый пассажир будет ждать прихода следующего автобуса. в). В операнде Е блока GENERATE, стоящего в сегменте 1 модели, следует использовать V$MIX, где переменная MIX определяется выражением «I |- RNl@127». В результате приоритеты траазактов-пассажиров будут случайными числами, лежащими между 1 и 127 включительно. Это приведет к тому, что транзакты-пассажиры в цепи текущих событий будут бороться за место относительно друг друга, что, в свою очередь, означает, что пассажиры садятся в автобус в случайном порядке (заметим, что тот факт, садятся лн пассажиры в автобус в случайном порядке или нет, влцяет только на статистику очереди в примере 5Е, ио никак ис отражается на общей логике модели). г). Этот человек при указанном положении модельного времени начнет посадку в антобус. Траизакт-автобус обязательно находится я цепи текущих событий позади транз- актов-пассажиров. После выхода из цикла траизакт-автобус переходит в блок LOGIC, где останавливается в своем дальнейшем движепии. После этого интерпретатор возоб- иовлиет просмотр цепи текущих событий (поскольку выполнилась подпрограмма блока LOGIC). При возобновлении просмотра первый трапзакт-пассажир продвигается в блок ADVANCE в сегменте 1 модели, где имитируется посадка этого первого транзакта-пассажир а п автобус. д) Единственной возможностью пребывания в очереди в тсчевие пулевого отрезка времени является возникновение временного узла между событиями «прибытие следующего потенциального пассажира» и «завершепие последней процедуры посадки». При возникновении такой ситуации модель примера 5Е позволяет только что прибывшему пассажиру либо совершить посадку (если в автобусе есть место), либо уйти. Из распечатки не видпо, какая судьба постигла этого потенциальпого пассажира. е). В постановке задачи требуется, чтобы для потенциальных пассажиров иа автобусной остановке собиралась статистика об очереди. Тем самым возникает необходимость в использовании элемента «очередь». Поскольку пассажиры входит и выходят из очереди п различные моменты модельного времени, отдельные потенциальные пассажиры должны неизбежно имитироваться отдельными транзактамн. Для тех пассажиров, которые хотят сойти с автобуса, не требуется сбор соответствующей статистики. Исходя из этого, пет необходимости устанавливать индивидуальное соответствие для выходящих пассажиров. 2.а). Когда траизакт-автобус выходит иа цикла, никто еще ие начал посадку в автобус. Как следствие, счетчик текущего содержимого блока ADVANCE в сегменте I модели равен нулю. Если из сегмента 2 модели убрать блок «TEST E Q$WAIT,0». тракзакт-автобуе пройдет последовательно весь спой путь до блока TERMINATE. При этом ни один пассажир ие сможет сесть в автобус. б). Предположим, что последний пассажир па остановке может сесть в автобус. В момент, когда он начинает посадку, величина Q$WAIT принимает значение, равное нулю. Если бы в сегменте 2 модели отсутствовал блок «TEST E W$GETON,0», то в этот момент времени траизакт-автобус проделал бы весь свой путь до блока TERMINATE. Этп эквивалентно тому, что автобус уезжает. Несколькими моделируемыми секундами позже последний садящийся в автобус пассажир выйдет из блока ADVANCE в сегменте I модели, пройдя через блок SAVEVALUE и LOGIC до блока TERMINATE. Проход этого транзакта через блок LOGIC пызовст открытие клапана в сегменте 1 модели. В результате прибывшие па остановку пассажиры будут пытаться сесть в автобус, несмотря на то, что следующий автобус еще не подошел к остановке. Начиная с этого момента, дальнейшее поведепие модели будет лишено всякого смысла. 4.а). Следует убрать из сегмента 1 модели два блока LOGIC и блок ADVANCE. В сегменте 2 модели нужно убрать последовательность блоков ADVANCE-SAVE- VALUE-LOOP и заменить блок «ASSIGN I,FN$OFF» блоком «SAVEVALUE NOWON-,FN$OFb». К главе 6 6.4. Упражнения 1. a). «PARTA BVARIABLE Q7'NE'0 * Q6'E'0» б). «PARTB BVARIABLE SE$TUG-f Q*SHIP'G'3» в). «SUMUP VARIABLE Ql |-Q2» «PARTC BVARIABLE V$SUMUP'L'Q3»
г). В GP5S в булевых выражениях нельзя использовать арифметические операторы. Требуемое арифметическое действие (или действия) необходимо выполнить посредством ввода арифметической переменной (или арифметических переменных), а затем ссылаться на эту переменную (или эти переменные) в булевом выражении. В п. в показано, какое решение может быть предложено для рассматриваемой задачи. зования этого многоканального устройства будет равен доле времени, в течение которого стоянки используются непосредственно для операции заправки нефтью. 7. Требуемая модель представлена иа рис. У7 п виде полной распечатки программы. Единица модельного времени выбрана равной 0,1 мин. Комментарии и приводимые ниже замечании облегчают понимание модели. При рассмотрении модели, представленной на рис У7, д). «MOD24 VARIABLE Cl@24» «РСПО VARIABLE TB$DDLT/10» «PARTE BVARIABLE TD$DDLT'L'V$PCTI0*TC$DDLT'G'250* VgMOD24'E'0» e). cPARTF BVARIABLE Q$ONE'F.'0*(Q$TWO'G'0-f-R$THREE'L'2)» ж). «PARTG BVARIABLE LS$AMBER-fSF$CROSS+X$RTIME'E'0» 2. Прп указанных условиях блоки на рис. У2 представляют собой бесконечный цикл. Если транзэкт выходит из какого-либо блока иа рис. У2 по альтернативному пучм, то он будет продолжать свое движение в этом сегменте без остановки. Это означает, что интерпретатор GPSS будет оставаться иа этане просмотра до тех пор, пока модель не будет выведена яз системы. Преследуемая программистом цель может быть достигпута посредством замены сегмента, показанного иа рис. У2, при применении блока «TEST E BV$DOUBL,l», где булева переменная DOUBL определяется выражением «LS*BETA*R$MEN'GE'3». 3. Нужно, чтобы соответствующие траизакты проходили через следующую последовательность из трех блоков: OUEUE TEST E DEPART 7 BV$TRIPL,I 7 Булеву переменную TRIPL следует определить выражением «FNU5*SNF3*LR2». 4. Следует использовать такой блок TEST: «TEST E BV$SCANU,JUMP», где блок, идущий за блоком TEST, будет «SEIZE JOE», а блоку «SEIZE PETE» присвоено имя JUMP («JUMP SEIZE PETE»). Булева переменная SCAN определяется следующим выражением: «FNU$JOE *FU$PETE -f FR$JOE'I.'FR$PETE * (FNU$JOE *FNU&PETE 4- FU$JOE *FU$PETE).» 5.a). Вдобавок к отказу от блока ADVANCE нужно просто заменить блок GENERATE с «GENERATE ,„5» иа блок «GENERATE 48., 1.5». (Обратите внимание, что в сегменте 2 модели (см. рис. 6А. I) пять транзаитов выходят из блока ADVANCE в моменты времени, равные соответственно 1, 49,97,145 и 193, поскольку они пс вводятся в модель до тех пор, пока показание модель юго времени не будет равно 1. Использование I в операнде С блока «GENE- PATE 48,, 1,3» обеспечивает тем самым решение в точном соответсгвии с моделью примера 6А.) б). Следует изменить .месторасположение блока «ASSIGN 2,FN$SPRED», поместив его между блоками «ASSIGN 1,FN$TYPE» и «PORT TEST E BV$G01N,I». в). Следует ввести новые блоки «ENTER LTIME» н «LEAVE LTIME», поставин их соответственно впереди и позади блока «ADVANCE FN$MEAN, P2». (Блок ENTER можно поставить либо сразу же перед блоком «ASSIGN 2,FN$SPRF.D», либо сразу же перед блоком «RELEASE TUG». Емкость многоканального устройства LTIME следует задать ровной 3. В этом случае коэффипиепт исполь- полезио отметить, что для деталей, ожидающих занятия станка, установлены следующие приоритеты: Тип детали I 2 3 Относительная частота появления, % 35 30 15 Среднее время обработки, мии 20 30 40 Приоритет (время ожидания не превысило 3 2 1 90 мнн) Приоритет (время ожидания равно или пре- 6 5 4 высило 90 мии) Следует обратить внимание иа следующие особенности решения. 1. Обслуживаемые траизакты-детали имеют самый низкий уровень приоритета, равный нулю. Тем самым гарантируется, что в момент завершения обслуживания у всех транзактов-деталей, ожидающих завершения обслуживания, будет изменен приоритет (если время, в течение которого они ждут, вынуждает производить это изменение) перед тем, как вот-иот готовый освободиться станок будет отдай в распоряжение какой-либо из ожидающих деталей. Другими словами, перед тем, как определить, какую деталь нужно обслуживать следующей, происходит перс смотр относительного порядка ожидагопдех деталей. (Какая нежелательная ситуации может произойти, если приоритет обслуживаемых дгталей-транзактов не будет падать до нуля, а будет просто оставаться на «старом» уровне ?) 2. Блок GATE (блок № 4) может быть исключен из модели, представленной ип рис. У7, без ущерба для правильности решения. Его присутствие делает логику более наглядной, но этот блок не требуется. (Нет ничего страшного в том, что приоритет некритических деталей будет повышаться непосредственно перед занятием станка. Все равно перед непосредственпым входом в блок ADVANCE их приоритет падает до нуля.) 3. Из модели на рис. У7 можно исключить булеву переменную. Для этого нужно заменить блок TEST (блок № 3) иа блок «TRANSFER BOTH, ZAPEM. AGE», а блок GATE (блок ЛЬ 4) блоком «AGE TEST GE Ml,900». (Это означает, что дапиое упражнение можно было поместить в гл 5 после ввода блока TEST) 543
BLOCK NUMBER *LOC OPERATION SIMULATE A,8,C,D.:E,F,G FUNCTION DEHNtTiON(S) COMMENTS • OTYPE FUNCTION PR,L3 1,3/2,2/3,1 MEAN FUNCTION P1,L3 1, 200/2,300/3,1» 00 SETPR FUNCTION RN1,D3 .55,3/.85,2/1,1 XPDIS FUNCTION- RN1,C24 EXPONENTIAL DISTRIBUTION FUNCTION G,0/.l,.10l»/.2, . 222/.3.. 355/.«»,.509/. 5,.6?/.6,. ?15/. 7,1.2/. 75, 1.38 .8,1.6/. 81», 1.83/. 88, 2.12/.9, 2.3/.92, 2.52/.91», 2. 81/. 95,2.99/.96, 3.2 .97,3.5/.98,3,9/.99,U.6/.995,5.3/.998,6.2/, S-»S, 7/. 5998, 8 • MAP PR INTO J03-TYPE NUMBER MAP JOB-TYPE NUMBER IMTO MEAM SERVICE TIME SET PRIORITY 0? ARRIVING JOBS AT RANDOM TABLE DEFINITIONS) TABLE Ml,300,300,15 TABLE Ml,300,300,IS TABLE Ml,300,600,20 VARIABLE DEFINITIONS) RESIDENCE ТГМЕ TABLE, JOB TYPE 1 RESIDENCE TIME TABLE, JOB TYPE 2 RESIDENCE TIME TABLE, JOB TYPE 3 DOUBL BVARIABLE FNUSMAC+Ml'GE'900 1 2 3 it S 6 7 8 9 10 11 • • ZAPEM • MODEL SEGMENT 1 GENERATE 300,fM$XPD«S,,,FMiSETPR ASSIGN 1,FN$JTYPE TEST E 3V$D0UBL,1 GATE U MAC, ZAPEM PRIORITY V$BOOST SFIZE MAC PRIORITY 0 ADVANCE FN$MEAN,FN$XPDIS RELEASE MAC TABULATE Pi TERMINATE 1 CONTROL CARO(S) START 100 ENO TRUE »> WAITING JOB CAN CAPTURE, OR HAS NOW TURNED "CRITICAL" ADDS 3 TO PR OF "CRITICAL" JOB JOKS ARRIVE SET PI = JOB-TYPE NUMBER WAIT FOR A REASON TO MOVE ON GO CAPTURE NOW IF POSSIBLE ELSE, GtT A PRIORITY BOOST еАРТУЯЕ THE MACHINE SERVICE COMPLETION MAS LOW PR MACHINING TIME ELAPSES J-'REE THE MACHINt TABULATE JOB'S IN-SHOP TIME FINISHED JOB LEAVES THE SHOP SIMULATE FOR 105> JOBS RETURN CONTROL TO THE SYSTEM CARD NUMBER 1 2 3 I» 5 « 7 8 9 ID 11 12 13 II» IS 16 17 18 19 20 21 22 23 2U 25 26 27 28 29 30 31 32 33 3fc 35 36 37 38 39 t»0 l»l t»2 i»3 Kk I» 5 Рис. У7 6,7. Упражнения I.a). Трапзакт-библиотекарь, имеющий нулевой приоритет, в цепц текущих событий всегда стоит последним. б). В рассматриваемый момент модельного времени только что пришедший транэакт находятся в цепи текущих событий впереди транзакта-библиотекаря (поскольку приоритет библиотекари ниже). Следовательно, перед тем, как уйти б хранилище, библиотекарь возьмет листок и у только что подошедшего посетители - в). Если библиотекарь и посетители будут иметь одинаковый приоритет, модель будет неверна. Рассмотрим, как это проявится в начале моделирования. В момент модельного врмееии, равный ], траизакт-бвблиотекарь будет переведен из цепи будущих п цепь текущих событий и окажется заблокированным в блоке TEST (в предположении, что событие, заключающееся б поступлении первого посетителя, еще не произошло). Следующим событием в модели будет приход первого посетителя. Модельные часы будут передвинуты на указанное время, и транзакт-посетитель будет переведев из цепи будущих в цепь текущих событий, где ои встанет позади транзакга-библиотекаря. Затем начнется просмотр цепи текущих событий.Выбраа вначале транэакт, который имитирует библиотекаря, интерпретатор обнаружит, что в блоке TEST блокирующее условие еще остается в силе. Перейдя к транэакту-посетителю, интерпретатор выведет его из блока GENERATE и поместит в блок QUEUE, где транзакт остановится в своем движении (клапан SLIP закрыт]. На этом просмотр цени текущих событии завершится (не было исполнено ни одного блока, вызывающего возобновление просмотра). После этого интерпретатор передвинет модельные часы на событие, заключающееся в приходе следующего посетителя, что ошибочно, поскольку библиотекарю ле дали возможности начать обслуживание первого посетителя. (Обратите внимание, что даже в случае, если бы просмотр был возобновлен перед следующим передвижением часов, модель вес равно не была бы верна. Можете ли Вы объяснить почему?) г). Транаакты-посетители могут быть заблокированы в период ожидания библиотекаря, инициализирующего их обслуживание. Этн транзакты будут размещаться в блоке cBI.OCA QUEUE DESK», а блоком, куда они будут пы- таться войти, является блок «BLOKB GATE LS SLIP». 544
Транзакты-посстители будут заблокированы в период, пока библиотекарь будет приносить книги из хранилища. Такие транзакты будут находиться в блоке «BLOKB GATE LS SLIP» а пытаться войти в блок «GATE LS BOOK» л). Посетитель будет заблокирован в течение ненулевого отрезка имитационного времени только один раз либо в случае, если он приходит в тот момент, когда библиотекарь свободен, либо в случае, когда библиотекарь только что вернулся из хранилища (и, таким образом, готов забрать листки у ждущих посетителей). е). Вместо измерении отрезка времени, в течение которого посетители ожидают начала обслуживания, статистика очереди в модели на рнс. 6.4. указыаает полное время, требуемое посетителям для получения книги (время ожидания начала обслуживания плюс время ожидания завершении обслуживания). Для того чтобы определить время ожидапия посетителями начала обслуживания, необходимо изменить на рис. 6.4 положение блока «DEPART DESK», поместив его между блоками «BLOKB GATE LS SI.IP» u «GATE LS BOOK». ж). Для того чтобы измерить занятость библиотекаря, можно поместить блок «SEIZE BUSY» после блока «BACK TEST G W$Bl.OKA,0», но перед блоком «ADVANCE FN$FETCH», и блок «RELEASE BUSY» после блока tADVAKCE FN$FETCH», но перед блоком «TRANSFER, BACK». Коэффициент загрузки этого прибора указывает, таким образом, степень занятости библиотекаря. Заметим, однако, что статистика прибора NUMBER ENTRIES (ЧИСЛО ВХОДОВ) в данном случае указывает, сколько раз библиотекарь ходил в хранилище (а не общее число обслуженных посетителей), а статистика AVERAGE TIME'TRANS (СРЕДНЕЕ ВРЕМЯ-ТРАНЗЛКТ) указывает на то, сколько и среднем времени было нроведеио в хранилище за один заход (а не времени, затраченного па одного посетителя). з). Величина W$BLOKA измеряет число посетителей, ожидающих обслуживания. Когда библиотекарь пытается продвинуться в блок TEST, величина Q$DESK также измеряет число ожидающих обслуживания посетителей (посетитель или посетители, для которых обслуживание только что закончилось, уже прошли через блок «DEPART DESK», в то время как библиотекарь переходит и блок TEST). Таким образом, величина Q$DESK может быть использована в блоке TEST вместо величины W$BLOKA, и при этом модель останется справедливой. Заметим, что в случае, когда на выдаче работают два или более библиотекарей, было бы неверно заменить в блоке TEST W$BLOKA иа QSJDESK- Если изменить условия указанным образом, величина W$BLOKA продолжала бы измерять число посетителей, ожидающих начала обслуживания, тогда как для величины Q$DESK это било бы уже несправедливо (посетители, для которых обслуживание уже началось, ио еще пе закончено, впосят вклад в величину Q$DESK. а не в величину W$BLOKA). В примере 6В, где стол выдачи обслуживают несколько библиотекарей, дли того чтобы определить, ожидает ли кто-нибудь обслуживания, проверяется счетчик текущего содержимого блока, идущего за порождающим посетителей блоком GENERATE. и). Предлагаемая замена блока GENERATE ие приведет к желаемому результату. Предположим, например, что в данный момент времени оба библиотекаря находятся в хранилище. Когда один из них возвращается из хранилища, он открывает клапан BOOK, а затем помещается в буфер. При возобповлеинн просмотра все посетители, ждущие книг, проходят через блок «GATE LS BOOK», тогда как на самом деле должны пройти только те, которые связаны с данным библиотекарем. (В примере 6В показано, как придать библиотекарям индивидуальность и как посетители могут определить, что именно их библиотекарь вернулся из хранилища.) к). Если из модели представленной на рис. 6.4, убрать оба блока BUFFER, то ни один посетитель не будет обслужен. Онн будут стоять в блоке «Bl.OKA QUEUE DESK». 11очему? Потому что после того, как транзакт-библнотекарь откроет клапан SLIP посредством входа в блок «LOGIC 35 т. Дж. Шрайбер 8 SLIP», он вновь немедленно закроет этот клапан, войдя в блок «LOGIC R SLIP». Транзактам-посетителям никогда ие удастся перейти из «BLOKA QUEUE DESK» в «BLOKB GATE LS SLIP». (Для дальнейшего обсуждения заметим, что это означает равепство нулю величины W$BLOKB в течение всего времени моделирования.) Каким же образом будет аавершена имитация такой модели? Это зависит от того, равно лн нулю время задержки транзакта-библиотекаря в блоке «ADVANCE FN$FETCH» или нет. (Вспомним, что FNSFETCH имеет в качестве аргумента нулевую величину W$BLOKB.) Если время задержки в блоке ADVANCE отлично от нуля, то в блоке «BLOKA QUEUE DESK» будет скапливаться большое число вводимых в модель транзактов, что в результате приведет к прекращению прогона с выдачей сообщения об ошибке № 599 «Превышены границы памяти области COMMON в GPSS/360» Если же время задержки п блоке будет равно пулю, то транзакт-бнблиотекарь, будучи однажды приведенным в движение, будет безостановочно циркулировать в сегменте 2 модели до тех пор, пока задание* не будет снято по времени. (Заметим, что еелл бы операнд А блока ADVANCE в сегменте 2 модели был равен VJGNORM, как в примере 6В, то время задержки в блоке ADVANCE было бы равным нулю и завершение прогона осуществилось бы иосредстаом аттия по вречепн.) л). Следует в сегменте I модели поместить блок «LOGIC- R SLIP» между двумя блоками GATE и убрать из сегмента 2 модели блок «LOGIC R SLIP». После таких изменений посетитель, проходя через клапан SLIP, будет закрывать его за собой. Вследствие этого библиотекарь будет одновременно забирать только один листок. (Обратите внимание, что, если библиотекарь будет одновременно брать только один листок, система выродится в простую систему обслуживания с одной очередью и одним обслуживающим прибором и может быть промоделирована значительно проще с помощью подхода, указанного в примере 2А, см. также упражнение 5, параграф 6.7.) 2.а). В сегменте 1 модели следует заменить блок ADVANCE с именем WAIT блоком «SAVEVALUE LY- NUP + ,1» н после блока «GATE LS SLIP» поместить блок «SAVEVALUE LYNUP—,1». Затем в сегменте 2 модели нужно заменить блок «BLOKB TEST G W$WAIT,0» блоком «BLOKB TEST G X$WAIT,0». Делать эти изменения нецелесообразно, поскольку при этом увеличивается как число блоков в модели, так и число исполнений блокои в данной имитации. н). См. обсуждение упражнения к) в данном параграфе. в). В первом участке модели следует поместить блок «PRIORITY V$MIX» между блоками «GATE LS SLIP» u «ASSIGN l.XJCLERK», где переменная MIX определяется выражением« 2+RNI@126». В результате приоритеты посетителей будут перемешаны случайным образом s диапазоне от 2 до 127 включительно. Это аналогично тому, что посетители, ожидающие возвращения своего библиотекаря из хранилища, будут бороться за относительное место в цепи текущих событий. Это, в свою очередь, означает, что библиотекарь осуществляет дисциплину обслуживания в случайном порядке при завершении процедуры выдачи. 3. Блок «TEST E Q$WAIT,0» можно заменить блоком BUFFER. Затем после того, как все желающие сойдут с автобуса, транзакт-автобус в блоке «LOGIC S BUS» откроет клапан BUS н, войдя в блок BUFFER, вызовет возобновление просмотра. Первый ожидающий посадки пас сажнр будет введен в блок «GETON ADVANCE 8,4». Далее, начиная с этого момента, транзакт-автобус будет заблокировал в блоке «TEST E W$GETON,0» до тех пор, пока не сядут все пассажиры (или до тех пор, пока некоторые сядут, а другие уйдут), что удовлетворяет логике модели. 4. Включение в модель сегмента, показанного иа рис.У4,будет инициировать интерпретатор GPSS, единожды просматривать цепь текущих событий непосредственно перед формированием каждого нового этапа изменения мо-
BLOCK NUMBER • LOC 1 2 3 u 5 6 7 8 9 10 11 OPERATION SIMULATE A,B,C,0,E,F,Q COMMENTS * FUNCTION DEFINITIONS) SNORM FUNCTION RN1,C25 STANDARD NORMAL DISTRIBUTION 0,-5/.00003,-Ц/.00135,-3/.00621,-2.5/.02275,-2 .06681,-1.5/Л1507,-1.2/. 15866,-1/.211в6,-.8(.27«|25/-.Ь .3*ч58,-.1»/.ч207»,-.2/.5,О/.57926,.2/.б55ч2, ,U .72575,.6/.7B81U, .8/.8l»13l»,l/.ee«»93,1.2/.93319,1.5 .97725,2/.99379, 2.5/.99865,3/.99997,11/1, 5 XPDIS FUNCTION RN1,C2U EXPONENTIAL DISTRIBUTION 0,0/.1,.10*/.2,.222/.3,.355/.U,.509/.5,.69/.6,.915/.7,1.2/.75Л.38 .8,1.6/.8U,1.85/. 88,2Л2/.9,2.3/.92,2.52/.9k,2.81/.95,2.99/.96,3.2 .97,3.5/.98,3.9/.99,k.6/.995,5.3/.998,6.2/.999,7/.9998, 8 VARIABLE DEFINITIONS) GNOftM FVARIABLE (FN$SNORM/S+l)*180*Pl MODEL SEGMENT 1 BOOK FETCH TIME DISTRIBUTION GENERATE BLOK2 QUEUE GATE NU TEST E ASSIGN » SEIZE PRIORITY ADVANCE RELEASE DEPART 300,FN$XPDIS,,,1 DESK CLERK W$BLDK2,0,EXIT 1,Q$DESK CLERK О VtGNORM CLERK PI EXIT TERMINATE PI CONTROL CARO(S) START 100 END CUSTOMERS ARRIVE CHECK INTO THE QUEUE WAIT UNTIL THE CLERK IS AVAILABLE IF NOT LAST IN GROUP, GO TERMINATE LAST IN CURRENT GROUP; SET PI - NO. OF PEOPLE IN THIS GROUP THE GROUP'S REP CAPTURES THE CLERK SET LOW PR FOR SERVICE COMPLETION FETCH TIME ELAPSES FREE THE CLERK GROUP'S REP CHECKS ALL IN THE GROUP OUT OF THE QUEUE DECREMENT THE TERM'N COUNTER BY PI STOP WHEN PEOPLE SERVED >« 100 RETURN CONTROL TO OPERATING SYSTEM CARD NUMBER 1 2 3 b 5 6 7 8 9 16 11 12 U 1M 15 16 17 18 I? 20 21 22 23 21» 25 26 27 28 29 30 31 32 :s 3b 55 36 37 38 39 Ряс. WS, m дельного времениЛЕсля в модели непосредственно перед каждым следующим изменением времени были проделаны все операции, то в ней не будет травзактов, которые можно было бы продвинуть в процессе таких заключительных просмотров цепи текущих события (конечно же, за единственным исключением тргнзакта, циркулирующего а сегменте иа рис. У4). Если же в этот период будут дополнительные продвижения транзактов, то это говорит о том, что модель не былв полностью отработана и содержит какие-то логические просчеты. Тем самым предлагается, использование сегмента, показанного иа рис. У4. ■> *• После того, как модель построена и считается, что она работает верно, нужно использовать} ее (не включая в нее указанный сегмент) для получении одного или нескольких результатов моделирования. Затем повторить эти прогоны, включив на этот раз сегмент, показанный;, на рве. У4. Соответствующие наборы результатов должны быть одинаковыми. Если результаты не совпадают, в модели что-то неверно. [Короче говоря, разработчику моделей ва GPSS не дается автоматической гарантии того, что следующий этап изменения времени происходит обязательно лишь тогда, когда все траизакты в цепи текущих событий не могут быть продвинуты дальше в модели. Идея автоматического возобновления просмотра, связанная с исполнением блоков SEIZE, RELEASE, ENTER, LEAVE, PRIORITY u LOGIC (а также других блоков, которые будут введены в книге позже), вносит значительный г вклад в обеспечение такой гарантии, но в некоторых моделях этого может оказаться недостаточно. В конечном счете ответственность зато, чтобы модель была полностью отработана перед тем, как будет произведено каждое очередное продвижение времени, ложится иа программиста. Пример, показывающий, что может произойти, если программист не позаботится об этом, приведен в упражнениях Зв и Зг параграфа 6.10.] 5. На рис. У5, а приведено одно решение этого упражнения в виде расширенной распечатки программы, на рис. У5, б дано другое решение этого же упражнения. Комментарии, включенные bj распечатки, дают полное объяснение решения. Следует сказать несколько слов о том, как было получено выражение, определяющее переменную IGNORM в обоих решениях. Эта переменная нычисляст время, в течение которого приносят книгу. Случайная переметши «время, в течение которого приносят книгу», распределена по нормальному закону. Обозначим среднее этого закона через MU, а стандартное отклонение аерез SIGMA. Из. постановки задачи следует: MU=(3 мин/книгу) * (число приносимых книг) SIGMA=MU/5 546
BLOCK NUMBER 1 2 3 U s < 7 8 9 20 11 •LOC OPERATION SIMULATE A,8,C,D,E,F,G COMMENTS FUNCTION DEFINITIONS) SNORM FUNCTION RN1.C25 STANDARD NORMAL DISTRIBUTION 0,-5/.00003,»!»/. 00135,-3/. 00621,-2.5/. 02275,-2 .06681.-1.5/.11507,-1.2/.15866.-1/.21186,-.8/.27»25,-.6 ,31»ч58,-.1»/. 1,207ч,-.2/. 5,0/. 57926,. 27.655*2,.* .72575,t6/. 78811»,. 8/. 8»13ч,1/.88*93,1. 2/. 93319,1.5 .97725,2/,99379,2.5/.99865,3/.99997,*/!,5 XPOIS FUNCTION RN1,CS2* EXPONENTIAL DISTRIBUTION O,0/.l,.10*/.2,.222/.3,.355/.*,.509/.5,.69/.6,.915/.7,1.2/.75,1.38 . B,1.6/.8*,1.83/.88,2,12/.9,2.3/.92,2.52/.9*,2.81/.95,2,99/.96,3.2 .97,3.5/.98,3.9/.99,*.6/.995,5.3/.998,6.2/.999,7/.9998,8 * »' VARIABLE DEFINITIONS) к SNORM FVARIABLE (FN$SNORM/5*1)*180*P1 BOOK FETCH TIME DISTRIBUTION MODEL SEGMENT 1 GENERATE BLOK2 QUEUE GATE NU TEST E ASSIGN к SEIZE PRIORITY ADVANCE RELEASE DEPART 300,FN$XPDI$,,,1 DESK CLERK W$BLOK2,0,EXIT 1,Q$DESK CLERK 0 V$GNORM CLERK DESK,PI EXIT TERMINATE Pi к » CONTROL CARD(S) START END 100 CUSTOMERS ARRIVE CHECK INTO THE QUEUE WAIT UNTIL THE CLERK IS AVAILABLE IF NOT LAST IN GROUP, GO TERMINATE LAST IN CURRENT GROUP; SET. PI - NO. OF PEOPLE IN THIS 6WJUP THE GROUP'S REP CAPTURES THE CLERK SET LOW PR FOR SERVICE COMPLETION FETCH TIME ELAPSES FREE THE CLERK GROUP'S REP CHECKS ALL IN THE GROUP OUT OF THE QUEUE .DECREMENT THE TERM*N COUNTER BY PI STOP WHEN PEOPLE SERVED >- 100 RETURN CONTROL TO OPERATING SYSTEM CARD NUMBER 1 2 3 * 5 6 7 8 9 10 11 12 13 1* 15 16 17 18 19 20 21 22 23 2* 25 26 27 28 29 30 31 32 33 3* 35 36 37 38 39 Ряс. У5, б В обоих представленных решениях число приносимых книг записано в первом параметре транзакта, представляющего группу посетителей, обслуживаемых на данном этапе. Единица времен в в обеих моделях равна 1 с. Собирая все эти даяние вместе, получим: MU=I80*PI SIGMA •= 180* Р1/5 Окончательно-. Значение выборки времени обслуживания =» =* (FN$SNORM) • SIGMA+MU = (FN$SNORM) * (180* *Р1/5)+ 180*pi ■=(FN$SNORM/5+l)*180*PI. 6.10. Упражнения 1. В точку А модели следует поместить блок «SPLIT 1.PAUSE». Затем блоху cADVANCE 15,7* обеспечить имя PAUSE. Наконец, пусть блок, непосредственно следующий за этим блоком ADVANCE, имеет имя THERE. 2. Одной нз возможностей является следующая последовательность блоков: GENERATE ,„1 ВВЕСТИ ЕДИНСТВЕННЫЙ ТРЛНЗАКТ NEXT ADVANCE 10,3 ИМИТАЦИЯ ВРЕМЕНИ МЕЖДУ ПОСТУПЛЕНИЯМИ SPLIT 35» 1.NEXT ОТОСЛАТЬ ПОТОМКА НА ИМИТАЦИЮ СЛЕДУЮЩЕГО ПРИБЫТИЯ (ДАЛЬШЕ РОДИТЕЛЬ ПРОХОДИТ КАК ВНОВЬ ПРИБЫВШИЙ) 547
В указанной последовательности есть ошибка, заключающаяся в том, что самое раннее и самое позднее возможное время первого прибытия равно соответственно 8 и 14, а не 7 и 13, как предполагает распределение времени между прибытиями 10 й: 3. Указанная ниже последовательность исправляет эту ошибку, но в ней используется четыре блока, а не три. NEXT MAIN GENERATE 10,3„J SPLIT 1.MAIN ADVANCE 10,3 TRANSFER .NEXT ... следующий блок ... З.а). В качестве блока TABULATE следует просто использовать «TABULATE BETA». В операнде А карты, используемой для определения таблицы BETA, нужно использовать Q * 7. б). Использовать решение, показанное в упражнении 3, а, но перед блоком TABULATE поставить блок «ASSIGN 7.ХН7». ВВЕСТИ ЕДИНСТВЕННЫЙ ТРАНЗАКТ ПУСТЬ ПОТОМОК БУДЕТ ВНОВЬ ПРИБЫВШИМ ИМИТАЦИЯ ВРЕМЕН МЕЖДУ ПОСТУПЛЕНИЯМИ ПЕРЕЙТИ К ВВОДУ СЛЕДУЮЩЕГО ТРАНЗАКТЛ З.б). Если бы первый и третий генераторы случайных чисел были установлены в одну и ту же печальную точку, модель была бы неверной. При одинаковых начальных точках для пычисления случайной неличшпл, равной времени ремонта (в блоке «ADVANCE V$FIX»), будет использовано то же значение, что и для вычисления времени жизни детали(в блоке «ADVANCE VI»),Следовательно,всякий раз. когда данная деталь проходит последовательность использование — ремонт, время жизни и время ремонта будут связаны через обш,ес значение случайного числа. В реальной системе предполагается отсутствие подобной связи, в этом случае модель будет неверна. в) Логика модели верна. В рассматриваемый момент модельного времени транзакт, проходящий через блок «SAVEVALUE l-f-,1». проходит также и через блок «RELEASE FIXER». Поскольку блок RELEASE был выполнен, то после того, как транзакт, вызвавший его исполнение, остановится в своем движении в модели, просмотр цепи текущих событий будет возобновлен (см. ниже упражнение 3). г). Прежде всего из всей модели следует убрать сегмент 2. Вдобавок к этому, из сегмента 1 модели следует вывести блоки «SEIZE FIXER» u «RELEASE FIXER». Но, поскольку эти блоки будут выведены и могут возникнуть условия, описанные в упражнении 3,в, модифицированная модель будет неверной. (Деталь сможет выйти из ремонтного цеха, но нового просмотра не произойдет, и поэтому рабочий, ожидающий деталь, ие заметит, что она уже готова.) Эту неточность можно, однако, устранить, поставив за блоком «SAVEVALUE 1-(-,1» блок BUFFER идя поместив перед блоком «ADVANCE V$FIX» блок «PRIORITY I». д). Пусть емкость многоканального устройства с именем PARTS будет определена равной общему числу имеющихся в системе деталей. В 1-м сегменте модели после блока GENERATE следует поместить блок «ENTER PARTS». Войдя в модель, первый оператор пройдет через блок ENTER, изменив тем самым величину R$PARTS. {Здесь предполагается, что R$PARTS равна числу годных х использованию запасных деталей и в это число ие включена деталь (если она имеется), находящаяся в данный момент в станке. ] Затем заменить блок «FETCH TEST G X1,0» блоком «FETCH ENTER PARTS», а блок «SAVEVALUE l+.l» блоком «LEAVE PARTS». e). Нужно воспользоваться взвешенной таблицей, как указано в параграфе 5.11. 6.12. Упражнения l.a). Величина Q5 равна текущему содержимому пятой очереди. Величина Q * 5 равна текущему содержимому очереди, номер которой находится в пятом параметре акткв- пого транзакта. • б). Величина Р20 равна содержимому 20-го параметра активного транзакта. Величина Р * 20 равна содержимому параметра, номер которого записан в 20-м параметре активного транзакта. 2.а). — 18. б). 5. 5.а). Оставшаяся емкость рассматриваемого многоканального устройства будет равна его емкости, определенной пользователем, так как выполнение блока «LEAVE P7,S *7» уменьшает текущее содержимое этого многоканального устройства до нуля. б). Оставшаяся . емкость рассматриваемого многоканального устройства будет равна нулю, так как выполнение блока «ENTER P1Q.R * 10» увеличит текущее содержимое этого многоканального устройства до содержимого, определенного пользователем. 6. a). SELECT MIN 1.U0..X ADVANCE X*l б). Параметру 6 будет назначена величина, равная 6 о). SELECT MIN U.10„Q QUEUE PI Пуякт упражнения а б в г А Измеряемые параметр 4 4. 1 1 4 Новое значение параметра 3 3 3 1 8 Измеряемая сохраняемая величина 3 2 1 \ 4 Новое сохраняемой толччяяы 3 2 2 1 1 8. Одно из возможных решений этого упражнения таково. Следует изменить операнд А карты определения таблицы с FR * 1 на Р2, а затем воспользоваться следующей последовательностью блоков. ITIS6 1T1S6 IT1S4 IT1S3 ITIS2 TAB SELECT MIN TEST NE TEST NE TEST NE TEST NE ASSIGN TRANSFER ASSIGN TRANSFER ASSIGN TRANSFER ASSIGN TRANSFER ASSIGN TABULATE I.2.6..FR P1.2.ITIS2 P1.3.ITIS3 P1.4.ITIS4 P1.5.ITIS5 2.FR6 .TAB 2.FR5 JAB 2.FR4 .TAB 2,FR3 .TAB 2.FR2 ALPHA Ниже приведено другое возможное решение, которое, строго говоря, не использует возможность косвенной адресации в GPSS. Вначале следует заменить операнд А карты определения таблицы с FR * 1 иа MX I (1 .PI). Затем использовать последовательность из пяти блоков MSAVEVALUE для записи FR/ в MX 1 (1.Д для / .-= 2, 3, 4, 5 и 6. Наконец, воспользоваться следующей последовательностью блоков: SELECT MIN 1.2.6..FR TABULATE ALPHA 12. Решение представлено указанной ниже последовательностью блоков: 548
ASSIGN NEXT GATE U LOOP ASSIGN ASSIGN AGAIN TEST G ASSIGN 1.3 P*1.LINE l.NEXT 1.3 22 Q*1,Q*2,BYPAS 1.P2 ПОЛОЖИТЬ PI РАВНЫМ НАИБОЛЬШЕМУ НОМЕРУ ПРИБОРА ПЕРЕЙТИ НА ЗАНЯТИЕ ПРИБОРА. НОМЕР КОТОРОГО НАХОДИТСЯ В PI (ЕСЛИ ОН НЕ ИСПОЛЬЗУЕТСЯ) В ПРОТИВНОМ СЛУЧАЕ ПЕРЕЙТИ К ПРОВЕРКЕ СЛЕДУЮЩЕГО ПРИБОРА (ЕСЛИ ОН ЕЩЕ ЕСТЬ) ВСЕ ПРИБОРЫ ЗАНЯТЫ; ПОЛОЖИТЬ Р1 РАВНЫМ НАИБОЛЬШЕМУ НОМЕРУ ОЧЕРЕДИ ПОЛОЖИТЬ Р2 РАВНЫМ СЛЕДУЮЩЕМУ НАИБОЛЬШЕМУ НОМЕРУ ОЧЕРЕДИ ПРОПУСТИТЬ СЛЕДУЮЩИЙ БЛОК. ЕСЛИ ПЕРВЫЙ ПАРАМЕТР НЕ УДОВЛЕТВОРЯЕТ ИЗМЕНЕНИЮ В ПРОТИВНОМ СЛУЧАЕ ИЗМЕНИТЬ ПЕРВЫЙ ПАРАМЕТР BYPAS LINE LOOP QUEUE 2.AGAIN PI ДРУГОЙ ПУТЬ; ПЕРЕЙТИ К ПРОВЕРКЕ СЛЕДУЮЩЕГО КАНДИДАТА (ЕСЛИ ОН ЕЩЕ ЕСТЬ) ТЕПЕРЬ ПРОДОЛЖАТЬ ТАК. КАК УКАЗАНО НА РИС. У12 КНИГИ 6.15 Упражнения 1.а).1) использовать такую последовательность из двух блоков: SELECT ADVANCE MIN 6,1,5„Р Р*6 2) определить функцию MIN таким образом: MIN FUNCTION P6.MS ^риг.рг/з.Рзм.р^'й.Ра Затем воспользоваться следующей последовательностью из двух блоков: SELECT MIN 6,I,5..P ADVANCE FN$MIN Способ, описанный в п. 2, по всей видимости, хуже, поскольку при этом необходимо определять фувкцию MIN, а для этого требуется дополнительная память. 2.а). «FLIP VARIABLE Р3@2+Ь б). В сегмеяте 1 модели следует изменять блок «ADVANCE 40» на блок «ADVANCE FN$REMOV». определив при этом функцию REMOV следующим образом: REMOV FUNCTION P3.L2 1,40/2.70 в) В сегменте I модели перед блоком ADVANCE следует дставить блок. «ASSIGN 4,FN$SPRED*, где функция SPRED определена так: SPRED FUNCTION P3.L2 1,20/2,30 Затем заменить блок «ADVANCE 40» на блок «ADVANCE FN4REMOV.P4», где функция RliMOV определена так, как указано выше в п. б. г). Модель будет вести себя так, как будто в реальной системе происходит следующее. Когда станок перестает работать, вначале проверяется деталь типа А, для того чтобы определить, произошел ли отказ по се вине. Если это так, то для проверки того факта, отказала ли также и деталь типа В, не предпринимается никаких действий. Если обе детали отказали одновременно, то это выяснится только после того, как будет сделала попытка вновь включить станок после замены детали типа А. Выявится это потому, что п данный момент времени станок не заработает; время задержки в блоке «ADVANCE P*3» будет равно нулю. После этого будет вынута деталь типа В, отправлена па ремонт и т. д. В случае одновременной поломки деталей модель будет справедлива только в том случае, если эта процедура в реальной системе происходит именно так, как опнсаио выше. [Предположим, что в реальной системе справедливы следующие условия- 1. Если станок перестает работать, проверяют обе детали, дли того чтобы определить возможный двойной отказ. 2. При одновременном отказе передача пеисправпых деталей происходит одновременно, а не последовательно. 3. Вместо последовательной вставки запасных деталей такую замену можно осуществлять одновременно (до той степени, насколько это возможно п смысле наличия запасной детали). Можете ли вы показать, как следует модифицировать модель примера 6D, чтобы она удовлетворяла этим условиям?] д). Если станок ожидает деталь типа А, то не имеет смысла занимать прибор FIXER деталью типа В, потому что в этом случае деталь типа А будет ожидать у ремонтного пункта очень долго. То же относится и к детали типа В. Можете ля вы показать, как модифицировать модель примера 6В так, чтобы у ремонтного пункта при назначении относительных приоритетов для сломанных деталей типов А и В принимались во внимание величины XI и Х2 (а именно, текущее число деталей, готовых к возвращению)? (Указание: лучше это осуществить с помощью цепей пользователя, которые рассмотрены в гл. 7.) 4. Ниже приведена модель этого упражнения (рис. У4) В виде расширенной распечатки программы. Включенные в модель комментарии объясняют различные детали этой модели. Заметим, что перед тем, как просчитывать модель, необходимо добавить к ней сегмент управления проговом, 549
BLOCK CARD NUMBER *LOC OPERATION A,B,C,0,E,F,0 COMMENTS NUMBER SIMULATE 1 * 2 * EQUIVALENCE DECLARATIONS 3 * h ALIFE EQU l,K SAVEVALUE FOR PART 'A' LIFETIME SAMPLE S BLIFE EQU Z*K SAVEVALUE FOR PART ,B' LIFETIME SAMPLE % AOK EQU l,L ON ■> 'A' INSTALLED AND SET TO RUN 7 BOK EQU 2,L ON «> 'B* INSTALLED AND SET TO RUN * * 9 * FUNCTION DEFINITIONS) 10 * 11 BFIX FUNCTION RN2,C5 REPAIR TINE FOR A 'B1 PART 12 0,50/.22,60/.57,707.85,80/1,90 13 * Ik FLIP FUNCTION P1,L2 NUMBER OF "LARGEST-LIFETIME" PARAMETER 15 1,2/2,1 16 * 17 SNORM FUNCTION RN2,C25 STANDARD NORMAL DISTRIBUTION 18 0,-5/.00003,-%/.00135,-3/.00621,-2.5/.02275,-2 19 . 06681,-1.5/.11507,-1.2/.15866,-1/.21186,-.8/.27*25,-.6 20 .3ki»58,-.l»/.*2O7li,-.2/.5,0/.57926,.2/.6S5li2,.4 21 .72575,.6/. 7881*,.8/.«i,m,l/. 88*93,1.2/.93319,1.5 22 .97725,2/.99379,2.5/.99865,3/.99997,<»/l, 5 23 * 24 XPOIS FUNCTION RN2,C2li EXPONENTIAL DISTRIBUTION 25 0,0/.1,.104/.2,.2Z2/.3,.35S/.fc,.5G9/.5,.69/.6,.915/.7,1.2/.75,1.38 26 .8,1.6/.8li,1.8)/.88,2.12/.9,2.3/.92,2.52/.94,2.81/.95,2.99/.96,3.2 27 .97,3.5/.98,3.9/.99,k.6/.995,5.3/.998.6.2/.999,7/.9998,В 28 * 29 SAVEVALUE INITIALIZATIONS) 30 * 31 INITIAL X$AEXTR,0 SET EXTRA 'A' PARTS - 0 FOR FIRST RUN 32 INITIAL X$BEXTR,0 SET EXTRA lB( PARTS - 0 FOR FIRST RUN 33 * (NOTE: THE ABOVE INITIAL CARDS ARE SHOWN ONLY FOR EXPLICITNESS) 34 * 35 * VARIABLE OEFlNlTIONCS) 36 37 ALLOK BVARIABLE LS$AOK*LS$BOK TRUE -> MACHINE CAN RUN 38 1 FVARIABLE 7O0*FN$SNORM+3S0O LIFETIME OF AN 'A' PART 39 2 FVARIABLE 900*FN$SNORM+05DO LIFETIME OF A 'B' PART «»Q AFIX FVARIABLE S*FN$SN0RM+80 .REPAIR TIME FOR AN 'A1 PART U Ряс. У4, a 550
MODEL SEGMENT 1 (SEGMENT IN WHICH 'A* PARTS CIRCULATE) 16 17 18 19 20 21 22 23 24 25 26 27 21 29 30 31 32 55 54 55 36 37 58 31 M GENERATE TRANSFER GENERATE AREOV GATE LS LOGIC R ADVANCE LYF4A SAVEVALUE LOGIC S GATE LR ADVANCE LOGIC S SEIZE ADVANCE RELEASE TRANSFER ,,,1 PROVIDE THE *AT IN THE MACHINE INITIALLY ,LYF4A GO SET UP FOR FIRST MACHINE USE ,,,X$AEXTR PROVIDE THE TYPE *A' SPARES NEEDA WAIT UNTIL AN 'A' IS NEEDED NEEDA SHUT THE GATE ON REMAINING "A'S" 60 INSTALL THE 'A' ALIFE,V1 SET X$ALIFE - PART'S LIFETIME АО К SIGNAL THAT THE 'A' IS SET TO GO АО К WAIT UNTIL THE 'A1 FAILS 40 REMOVE THE FAILED •A' NEEDA SIGNAL THAT ANOTHER 'A' IS NEEDED FIXER CAPTURE THE REPAIRMAN VSAFIX REPAIRTIME ELAPSES FIXER FREE THE REPAIRMAN ,AREDY PART IS NOW READY FOR RE-USE MODEL SEGMENT 2 (SEGMENT IN WHICH 'B* PARTS CIRCULATE) GENERATE TRANSFER GENERATE BREDY GATE LS LOGIC R ADVANCE LYF4B SAVEVALUE LOGIC S GATE LR ADVANCE LOGIC S SEIZE ADVANCE RELEASE TRANSFER ,,,1 PROVIDE THE 'B' IN THE NACHINE INITIALLY ,LYF4B GO SET UP FOR FIRST MACHINE USE ,,,X$BEXTR PROVIDE THE TYPE 'B« SPARES NEEDB WAIT UNTIL A 'B' IS NEEDED NEEDB SHUT THE GATE ON REMAINING "B'S" 60 INSTALL THE 'B* BLIFE,V2 SET XSBL1FE ■ PART'S LIFETIME ВОК SIGNAL THAT THE 'B" IS SET TO GO BOK WAIT UNTIL THE «B' FAILS 40 REMOVE THE FAILED 'B' NEEDB SIGNAL THAT ANOTHER 'B' IS NEEDED FIXER CAPTURE THE REPAIRMAN FN$BFIX REPAIRTIME ELAPSES FIXER FREE THE REPAIRMAN * ,BREOY PART IS NOW READY FOR RE-USE MODEL SEGMENT 3 (SEGMENT IN WHICH A MACHINE-OVERSEER CIRCULATES) GENERATE WATCH TEST E SELECT MIN * SEIZE ADVANCE RELEASE SAVEVALUE BV$ALLOK,l J,ALIFE,BLIFE,,X MAC X*l MAC FN$FLIP-,X*1 LOGIC R TRANSFER GENERATE PI ,WATCH 1000 BRING IN THE OVERSEER WAIT UNTIL THE MACHINE CAN RUN SET P3 « NO. OF SAVEVALUE CONTAINING THE SMALLEST LIFETIME TURN THE MACHINE ON SMALLEST LIFETIME ELAPSES TURN THE MACHINE OFF UPDATE REMAINING LIFE OF NON-FAILED PART SIGNAL WHICH PART HAS FAILED GO WAIT UNTIL MACHINE CAN RUN AGAIN • 12 *3 kk 45 «6 47 18 «9 50 51 52 53 St 55 56 57 58 59 60 61 62 63 61» .65 66 67 68 69 70 71 72 73 7* 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 Ряс. У4, б 551
BLOCK NUMBER • LDC OPERATION SIMULATE A,B,C,D,E,F,6 COMMENTS INITIALIZE MULTIPLIERS FOR RANDOM NUMBER GENERATOR(S) RMULT ,,,8%95?.S<t953,eii9S3 FUNCTION DEFINITIONS) RS*lyC2 ASSEMBLY-TIME DISTRIBUTION RN»2,C2 OVEN-TIME DISTRIBUTION ASSEM FUNCTION 0,2S/1,36 FIRE FUNCTION 0,6/1,9 VARIABLE OEFINITION(S) ADD) VARIABLE P1*J MORE VARIABLE PI*2 PROFT VARIABLE NO. OF THE R«G DEDICATED TO THE OVEN FOR THE PI CONFIGURATION NO. OF ADDITIONAL ASSEMBLERS NEEDED FOR THE PI CONFIGURATION FC*l-l-30*(Pl+3)-iO AVERAGE DAILY PROFIT FOR THE PI CONFIGURATION MODEL SEGMENT 1 1 2 3 * S 6 7 8 9 10 11 12 13 Рис. BLOKA BLOKB • BLOKC * У4, в GENERATE „,I SPLIT 2,BLDKA,1 ASSIGN 2,V4AD03 SPLIT V$MORE,BLOKB ADVANCE FN$ASSEM SEIZE PI ADVANCE FH$F1RE RELEASE PI TRANSFER BLOKB MODEL SEGMENT 2 GENERATE 2*00 SPLIT 2,BLOKC,l SAVEVALUE Pl,V$PROFT TERMINATE 1 CONTROL CARD(S) START 3 END SEED THE SEGMENT PROVIDE 1 TRANSACTION PER CONFIGURATION (PI CODE: 1, 2, 3 -> ч, S, 6 ASSEMBLER CASES, RESPECTIVELY) SET P2 » I», 5, OR 6, FOR LATER USE IN INDIRECT ADDRESSING PROVIDE THE REMAINING ASSEMBLERS FOR EACH CONFIGURATION ASSEMBLY TIME ELAPSES CAPTURE THE OVEN FIRING TIME ELAPSES FREE THE OVEN GO DO THE NEXT ASSEMBLY TIMER ARRIVES AFTER 5 DAYS PROVIDE 1 TRANSAC'N PER CONFIGURATION COMPUTE AND SAVE THE PERTINENT CONFIGURATION'S PROFIT LEAVE; DECREMENT TERM'N COUNTER BY 1 START THE SIMULATION RETURN CONTROL TO OPERATING SYSTEM CARD- NUMBER 1 i •• 5 5 6 7 8 10 11 12 13 Ik 15 16 17 IS 19 20 21 22 23 2k 25, 2Б 27 28 29 30 51 32 55 5k 35 36 37 38 39 <»0 U ii2 i»3 kk <»5 ttS k7 kb k9 50 6.20. Упражнения I. В блоке SPLIT величина четвертого параметра трак- закта-родителя увеличится с 5 до 6. Затем а блоке ASSIGN величина шестого параметра родителя устанавливается равной —2. Величина четвертого параметра траиэакта-по- томка в блоке SPLIT станет равной 7, ватсм в блоке ASSIGN седьмому параметру (потомку) будет назначена величина, равная 18. 4. Решение п. б этого упражнения приведено на рис. У4, б в виде расширенной распечатки программы. Вставленные комментарии детально разъясняют приводимую модель. 7. Ниже приведена расширенная распечатка программы, где показано решение этого упражнения, состоящее из 55 блоков. Все блоки снабжены комментариями, что позволяет понять модель при непосредственном изучении этой распечатки. Следует отметить, что единица модельного времени подразумевается равной 1 мин. CJ « I соответствует 8 ч утра первого дня, О = 1441 соответствует 8ч утра второго'дня и т. д. (в 24-часовом дне содержится 1440 мни). Представленная модель разработана для случая работы пяти грузовиков и охватывает 10 имитируемых"дней с промежуточной печатью результатов в конце каждого дня. При выполнении прогона этой модели требуется 16305 обращений к блокам. Общее время занятости процессора, потребовавшееся на моделирование случая с пятью грузовиками на Мичиганской ЭВМ 360/G7, составило 17,5 с. (В это время включаются 2 с на ассемблирование, 9,3 с на исполнение н 4,2 с на выдачу результатов.) В среднем из исполнение одного блока потребовалось 0,570 мс. В копце каждого дня модель вычисляет чистую прибыль за этот день и записывает эту величину в таблицу DANET. Ниже приведены результаты» взятью из таблицы DANET 552
в нойте 10-го дня моделирований при наличии пяти грузовиков, а также четырех, шести и семи грузовиков. Число грузовиков 4 5 6 7 Средняя дневная прибыль, доллар 244,90 363,30 350.30 292,00 Стандартное отклонение, доллар 51,50 i 9.50 28,0 28.94 В качестве последнего комментария к данному -упражнению заметим, что в п. а параграфа «Дальнейшие вопросы для обсуждения» затронут вопрос, будет ли данная модель функционировать верно, когда два или более грузовика одновременно заняты перевозкой контейнеров для одного и того же склада? Представленная здесь модель справедлива при этих обстоятельствах. Ниже в таблице приведены четыре постоянных набора данных, которые следует использовать для проверки работы предлагаемой модели при условии «число грузовиков превышает число складов», причем эту таблицу следует понимать как расширение рис. У7, в, помещенной в книге. В следующее таблице прнведепы величины ежедпевной прибыли для случая с пятью и шестью грузовиками. Величины прибыли на рассматриваемый день нельзя попарно сравппвать друг с другом так, как это было сделано в в табл. ЗС.1 или в табл. 5.4, поскольку модель не обеспечивает точного репродуцирования условий эксперимента в смысле нсзависимпсти от числа имеющихся грузовиков. Исходя из приведенной информации, нельзя с высокой степенью достоверности утверждать, что наличие пяти грузовиков лучше, чем наличие шести грузовиков. щ 9 10 И 12 Величины независимых случайных переменных 1 15 16 \5 15 2 20 21 22 23 3 15 15 \5 15 4 15 15 15 15 Число грузовиков 12 12 12 12 День 1 2 3 4 5 Дневная прибыль. доллар Пять грузовиков 360 370 373 373 357 Шесть грузовиков 335 384 356 374 368 День 6 7 8 9 10 Дневнак прибыль, доллар Пять грузовиков 368 349 362 357 350 Шесть Грузовиков 363 293 307 356 357 Ниже дана таблица, в которой использован тот же способ записи, что и в табл. У7, г; здесь приведены верные результаты, аютнетствугощпе указанным выше четырем наборам данных: Номер набора данных 9 10 11 12 дневная прибыль. доллар День 1 460 480 500 520 2 764 832 800 788 ! » 764 832 760 732 BLOCK NUMBER *L0C OPERATION SIMULATE A,B,C,D,E,F,G COMMENTS DICTIONARY FDR ABBREVIATIONS SOMETIMES USED IN THE COMMENTS DEL: DELIVERY PCKG: PACKAGE REQ'D: REQUIRED XACT: TRANSACTION EQUIVALENCE DECLARATlON(S) IDNUM EQU LATE EQU REVNU EQU TRKMl EQU 9,X 10,X 11,X 12,X X$IDNUM X$LATE • XJREVNU X$TRKM1 • N0. OP TRUCK NOW DROPPING OFF A PCKG N0. OF LATE-DEL DAYS FOR CURRENT PCKG • CURRENT DAY'S REVENUE • "NUMBER Of TRUCKS, MINUS 1" FUNCTION OEFINITION(S) AMAVG FUNCTION P1,L8 AVG. ND. OF PCKGS IN AN A.M. GROUP 1,5/2,9/3,11/fc,7/5,12/6,6/7, 8/8,10 • AMDEV FUNCTION PI,L8 STD. DCV. OF N0. OF PCKGS IN AN A.M. GROUP 1,1/2, 1/3, 2/1», 1/5, 2/6, 1/7, 1/8, 2 BREAK FUNCTION P2,D2 1,211/301,511 TIME WITHIN DAY AT WHICH NEXT BREAK BEGINS DTIME FUNCTION V*CLOCK,C10 MEAN DRIVING TIME TO DELIVER A PCKG 1,20/61,20/121,15/181,12/2ч1,18/301,22/361,19/t»21,15/U81,18/5ч1,35 NXHAF FUNCTION P2,D2 1,301/301,1 TIME WITHIN DAY WHEN NEXT HALF-DAY BEGINS CARD NUMBER 1 2 3 it 5 6 7 8 9 10 11 12 13 1ч 15 16 17 18 19 20 21 22 23 2 ч 25 26 27 28 29 30 31 32 Рис. У7, a 553
PMAVG FUNCTION PI, LB AVG. NO. OF PCKGS IN A P.H. GROUP 1,7/2,5/3,8/4,7/5,6/6,6/7,9/8,7 PMDEV FUNCTION Pl,L8 STD. DEV. OF NO. OF PCKGS IN A P.H. GROUP 1,1/2,1/3,1/4,1/5,1/6,1/7,1/8,I ■» SNORM FUNCTION RN2,C2S STANDARD NORMAL DISTRIBUTION FUNCTION 0,-5/.00003,-*/.00135,-3/.00621,-2.5/.02275,-2 .06681,-1.5/.11507,-1.2/.15866,-1/.21186,-.8/.27*25,-.6 .34458,-.4/.42074.-.2/.5,0/.57926,.2/.6S542,.4 .72575,.6/.78814,.8/.84134,1/.8849Э,1.2/.93329,1.5 .97725.2/.99379,2.5/.99865,3/.99997,4/1,5 * • SAVEVALUE I N1T1ЛЦ ZATION(S) INITIAL X$TRKM1,4 CDNFIGURE FOR CASE DF 5 TRUCKS . STORAGE CAPACITY DEFINITION(S) TRUKS 1 I 2 3 1» 5 6 7 8 DANET STORAGE 5 DUMMY TA3LE DEFINITION(S) TABLE TABLE TABLE T/9LE TABLE TABLE TABLE ' TABLE TABLE Ml,0,770,10 Ml,0,770,10 Ml,0,770,10 Ml,0,770,10 . Ml,0,770,10 Ml,0,770,10 Ml,0,770,10 Ml,0,770,10 V$NET,-100,100,10 STORAGE TD MEASUI TIME REQ'O TO TIME REQ'O TO TIME REQ'D TO TIME REQ'D TO TIME REQ'D TO TIME REQ'D TO TIME REQ'O TO TIME REQ'O TO DAY'S REVENUE IE TRUCK UTII DEL STORE 1 DEL STORE 2 DEL STORE 3 DEL STORE 4 DEL STORE 5 DEL STORE 6 DEL STORE 7 OEL STORE 8 MINUS TRUCK .IZATH PCKGS PCKGS PCKGS PCKGS PCKGS PCKGS PCKGS PCKGS COSTS * VARIABLE DEFINITIONS) t * V$AMNUM « NO. OF PCKGS IN AM A.M. GROUP AMNUM FVARIABLE FN$SNORM*FN$AMDEV*FN$AMAVG * ► V$CLOCK > CLOCK TIME WITHIN THE CURRENT DAY CLOCK VARIABLE Cl@1440 » ► VSDAY - NO. OF THE CURRENT DAY OAY VARIABLE C1/144D+1 * ► BVSDUBL » "TRUE" -> DON'T START ANOTHER DELIVERY NOW DUBL BVARIABLE P4»E*0*V$CLOCK»G'FN$BREAK к » VSLATE - NO."OF LATE-DELIVERY DAYS FOR CURRENT PACKAGE LATE* VARIABLE V$DAY-P2 » ► V$NET - CURRENT DAY'S REVENUE MINUS TRUCK COSTS NET VARIABLE X$REVNU-70*(X$TRKM1+1) t » V$PMNUM - NO. OF PCKGS IN A P.M. GROUP * (NOTE THAT FN$PMDEV « 1 FOR THIS OATA SET, AND SO ISN'T REALLY ► NEEDED AS A FACTOR IN THE VARIABLE-DEFINING EXPRESSION) PMNUM FVARIABLE FN$SNORM*FN$PMOEV*FN$PMAV« к » V»REVNU » AMOUNT BILLED BY CURRENT TRUCK AFTER LATE-DEL OEDUCTIOK REVNU VARIABLE <(MP5-1)/15+1)*5-P6 53 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 '66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 Рис. У7, в 554
MODEL SEGMENT 1 (SEGMENT THROUGH WHICH PACKAGE-GROUP XACTS MOVE; EACH XACT REPRESENTS ALL THE PCKGS IN A GIVEN A.M. OR P.M. GROUP/ FOR A GIVEN STORE) GENERATE ASSIGN SPLIT BLOKA ASSIGN GENERATE ASSIGN SPLIT BLOKB ASSIGN к COMON TEST NE SAVEVALUE к GATE LS SAVEVALUE » ASSIGN BLOKC GATE LS LOGIC R 1UQ,,1,,2,* 2,V$DAY 7,BLOKA,1 «I,VSAMNUM TRANSFER ,COMON l»»«»0,,301,,2,li г, v$oay 7,BLOKB,1 U,V$PMNUM Pk,0,OUT Pl*,P«i PI P1,0 3,X$IDNUM P5 P3 SAVEVALUE LATE,V»LATE TABULATE LOOP OUT TERMINATE PI (i,8L0KC A MASTER XACT ARRIVES DAILY AT 8 A.M. SET P2 - DAY OF ARRIVAL 1 XACT PER STORE; SET PI » STORE NO. SET PU - NO. OF PCKGS IN THIS A.M.'S GROUP AT STORE PI GO TO SUBSEGMENT IN COMMON WITH P.M. PACKAGE-GROUPS A MASTER XACT ARRIVES DAILY AT 1 P.M. SET P2 - DAY OF ARRIVAL 1 XACT PER STORC; SET PI = STORE HO. SET PI» - NO. OF PCKGS IN THIS P.M.'S GROUP AT STORE PI GO OUT IF NO PCKGS IN THIS GROUP ELSE, UPQATE COUNT OF PCKGS ON STORE PI'S LDADING DOCK WAIT FOR A TRUCK TO START FDR STORE Pi SET X(P1) - 0 -> A TRUCK IS NOW COMING FOR THESE PACKAGES SET P3 - NO. OF TRUCK PICKING UP THIS GROUP OF PACKAGES WAIT FOR NEXT PACKAGE DROPOFF CLOSE GATE UNTIL THIS TRUCK IS READY TO DROP OFF ITS NEXT PACKAGE SET X$LATE - NO. OF DAYS CURRENT PCKG WAS DELIVERED LATE OF ANY) TABLE TIME REQ'D TO DEL CURRENT PCKG LOOP IF MORE PCKGS IN THIS GROUP ELSE, TERMINATE 94 95 96 97 98 99 100 101 102 105 101» 105 106 107 ioe' 109 no 111 112 113 11»» IIS 116 117 118 119 120 121 122 123 12V 125 126 127 555
MODEL SEGMENT 2 (SEGMENT IN WHICH TRUCK-TRANSACTIONS CIRCULATE) BRING IN A MASTER TRUCK SET P2 - TIME FIRST HALF-DAY STARTS INITIALIZE P3 FOR SERIALIZED SPL/T BRING IN THE OTHER TRUCKS; SET P3 - TRUCK NO. (1ST, 2ND, 3R0, «.. TRUCKS ARE NUMBERED 9, 10, 11, ,..) WAIT UNTIL THE NEXT HALF-DAY BEGINS UPDATE MEASURE OF TRUCK UTILIZATION GO TO MORE IF THIS TRUCK HAS PCKGS ABOARD YET TO BE DELIVERED ELSE, SCAN FOR MOST PCKGS TO BE PICKED UP SET PU - PCKG COUNT FOR NEXT PICKUP GO IDLE IF NO STORE HAS ANY PCKGS ELSE, OPEN GATE FOR STORE PI'S PACKAGE-GROUP(S) SET X$IDNUM - NO. OF THIS TRUCK RE-START SCAN TO MOVE STORE PI'S PACKAGE-GROUP(S) FORWARD CLOSE THE GATE AGAIN SET P5 - BILLING START-TIME TRUCK TRAVELS TO THE STORE TRUCK GOES TO NEXT PCKG DROPOFF POINT OPEN THIS TRUCK'S DROPOFF GATE RE-START SCAN TO MOVE' ONE PCKG-GROUP THROUGH THIS TRUCK'S DROPOFF GATE ACCUMULATE LATE-DEL PENALTY (IF ANY) UPDATE COUNT OF PCKGS STILL ON TRUCK GO START NEXT DELIVERY UNLESS TRUCK IS EMPTY OR BREAK IS IMMINENT ELSE, BILL FOR DELIVERIES JUST MADE RESET TRUCK»S PENALTY ACCUMULATOR TRAVEL BACK TO DISPATCHING POINT t,NXSTD IF BREAK NOT IMMINENT, GO CHECK FOR MORE WORK ELSE, UPDATE TRUCK UTILIZATION MEASURE SET P2 - TIME NEXT HALF-DAY WILL BEGIN NOW WAIT FOR NEXT HALF-DAY TO BEGIN SET P5 - BILLING STAKT-TIME GO RESUME DELIVERING PCKGS STILL ON THE TRUCK TABULATE-TIMER ARRIVES DAILY AT 6 P.M. TABULATE THE DAY'S NET SET REVENUE ACCUMULATOR BACK TO ZERO DECREMENT TERMINATION COUNTER 21 22 23 2k 25 26 27 28 29 30 31 32 33 Зч 35 36 37 38 39 40 Ml I» 2 Jib AS *6 47 да l»9 50 51 52 S3 5>t 55 Рис. У7, г л а • • BLOKD NXSTO NXDEL * IDLE MORE • • • * г в е 7 GENERATE ASSIGN ASSIGN SPLIT TEST E EMTER TEST E SELECT MAX ASSIGN TEST G LOGIC S SAVEVALUE BUFFER LOGIC R MARK ADVANCE ADVANCE LOGIC S BUFFER ASSIGN ASSIGN TEST E SAVEVALUE ASSIGN ADVANCE TEST G LEAVE ASSIGN TRANSFER MARK TRANSFER ,,,1,1,6 2,1 3,8 X$TRKM1,BL0KD,3 P2,V»CLOCK TRUKS PH,0,MDRE 1,1,8,,X *,X»1 PU,0,IDLE PI IDNUM,P3 PI 5 15,5 FN$DTIMfc«4 P3 6+,X$LATF *-,l BV(DUBL,l,NXOEL REVNU+,V$REVNU 6,0 15,5 V$CLOCK,FN$BREA TRUKS 2,FN$NXHAF ,BLOKD S ,NXDEL MODEL SEGMENT 3 (TIMER SEGI GENERATE TABULATE SAVEVALUE TERMINATE 111 1»0, ,601 DANET REVNU,0 1 CONTROL CARD(S) START END 10,,1,1 GET OAILY SNAP RETURN CONTROL PRINTOUTS FOR 10 DAYS TO THE OPERATING SYSTEM 128 229 130 131 132 133 13t 135 136 137 138 139 1I»0 141 11*2 143 144 lt»S 1Ц 6 H7 148 U9 150 1S1 152 153 154 155 156 157 158 159 160 161 162 163 164 165 16ft 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 18b К 7.11. Упражнения J .а). При введения указанных изменений логика останется верной. Благодаря тому, что используется цепь пользователя, любой транзакт, проходящий через блок DEPART, в тот же момент модельного времени проходит и через блок SEIZE. Относительное расположение этих блоков не имеет значения. б). Перестановка блоков RELEASE u UNLINK не будет влиять на логику модели, показанной на рис. 7.7. 2. Для этого нужно в качестве операнда в блоке LINK использовать LJFO, а в блоке UNLINK в операнде D поставить блок BACK- З.а). Блок QUEUE следует поставить впереди блока LINK, а блоку DEPART назначить символическое имя AIOVIN. б). Блок QUEUE ггужио поместить либо впереди, либо позади блока «PRIORITY 1», а блок DEPART — после блока «ENTER I». 4.а). Если планирование события ухода происходит в более ранний момент времени, чем планирование события последующего прихода, и возникнет временной узел, то транзакт, осуществляющий событие ухода, будет находиться 556
в цеп к текущих событий впереди трапзакта, имитирующего событие прихода (при этом утверждении предполагается, что приоритеты обоих транзактов равны). б). В такой измеленной модели временные узлы не будут нарушать дисциплину обслуживания «первым пришел — первым обслужен». При отсутствии цепи пользователя все транзакты, ожидающие продвижения в блок ENTER, упорядочены и цепи текущих событий в порядке поступления. Даже в случае возникновения временного узла между событиями, заключающимися в одновременном приходе и окончании обслуживания, для прибывшего транзакта нет возможности встать впереди заблокированных транзактов в цепи текущих событий {в предположении, что вес транзакты имеют одинаковый приоритет). Таким образом, в момент выбора на фазе просмотра траызакта, осуществляющего событие прихода, свободное устройство обслуживания уже нанято самым «старым» транзактом-по- сетителем из числа ожидавших. 5. Предположим, что возникают следующие условия. — станок используется; — цепь пользователя QUE ие пуста; — в момент планнровапня окончания обслуживания детали, занимающей станок, происходит приход еще одной детали; — транзакт, имитирующий событие прихода, стоит в цепи текущих событий позади транзакта, осуществляющего событие окончания обслуживания; — величина Р2 поступающего транзакта меньше, чем у транзакта, стоящего первым в цепи пользователя. Если при указанных условиях блок «PRIORITY PR, BUFFER» отсутствует, то следующим транзактом, занимающим станок, будет транзакт, стоящий первым в цени пользователя, тогда как должен попасть на обработку только что прибывший транзакт. 6. Ниже приведена последовательность блоков, дающая нужное решение: 3,TAKEM.l,„TRY5 .GOON 5,TAKEM,I,BACK Следующий блох для транзакта — инициатора вывода... 7. При просмотре цепи пользователя с иачала до конца величины первого параметра у транзактов будут соответственно равны 2, 1, 4, 3 и 5. 8.а). Дисциплиной обслуживании будет закон: «первым пришел — первым обслужен вне зависимости от приоритета». (Обратите внимание, что в модели, показанной па рис. У8, пе учитывается приоритет транзактов ни в случае помещения их в цепь пользователя, ни в случае вывода их нэ цепи пользователя.) б). Для этого следует перед блоком LINK поставить блок «ASSIGN 1-,PR» н заменить операнд В блока J.LNK на Р1. Других изменений в модели делать не требуется. Транзакты в цепи пользователя будут располагаться в но- UNLINK TRANSFER TRY5 UNLINK GOON ... DUMP GRAB ODDNO MAIN LINK SEIZE ADVANCE PRIORITY RELEASE TEST E UNLINK TRANSFER UNLINK UNLJNK UNLINK CHAIN, FIFO.GRAB ODD FNSUPP2U PR.BUFFER ODD BV$PLOY,l,ODDNO CHAIN.GRAB,] .MAIN CHA1N,DUMP,V$HALF CHAIN.GRAB. I CHAIN,DUMP,ALL .Следующий блок для транзакта-ипици атор з 557 рядке убывания приоритета, считая от начала этой депи. И, наконец, в случае конфликта одинаковых приоритетов транзакты, пришедшие позже, попадут в кояец своего приоритетного класса, что и означает, что для разрешения таких конфликтов недольэуется дисциплина «первым лрн- шел — первым обслужен». (Заметим, что было бы неверным поместить блок «ASSIGN 1,PR» перед блоком LINK, заменить операнд В блока LINK, па PI в заменить операнд D блока UNLINK на BACK. Если бы было сделано так, то внутри каждого приоритетного класса дисциплина обслуживания была бы «первым пришел — последним обслужен».) 9. Решение для этого упражнения совершенно анало- ' гично решению для упражнении 8, б. 10.0). В моделях на рис. 7.11 и 7.15 не может быть транзактов с нулевым временем пребывании в пени пользователя. На фазе просмотра событиям ирихода дан низкий приоритет. Как следствие, состояние обслуживающего устройства к моменту обработки событий прихода полностью определено. Это означает, что прибывающая транзакт вовсе пе помещается в цель пользователя, если устройство обслуживания свободно. н). Для этого следует поместить между блоками DEPART и ADVANCE блок «PRIORITY I». Пря этой в случае возникновения временного узла событие, заключающееся в завершении обслуживания, будет происходить рапьгас, чем событие прихода. Это означает, что, если устройство обслуживания должно быть доступно для только что прибывшего посетителя, то он сможет пемедленно его занять, а не вставать в цепь пользователя в ожидании (в течение нулевого интервала имитационного времени) обработки события завершения обслуживания. 11. Моделирование такого нспользонаиня прибора осуществляется следующей последовательностью блоков: LINK JOESQ,FIF0.2APEM ZAPEM SEIZE JOE ADVANCE FNftSTIME RELEASE JOE UNLINK .IOESQ,BAKON,V$GOBAK UNLINK JOESQ.I.ZAPEM ...Следующий блок для транзакта—инициатора вывода... Функция STI.ME описывает распределение времени обслуживания на приборе JOE- Переменная GOBAK определяется выражением «RN1@CH$J0ESQ». Имя BAKON присвоено блоку «LINK JOESQ.FIFO». (Вспомните из гл.5, чтоесляBETA равно пулю, то ALPHA@BETA равно пулю. Следовательно, если в момент входа транзакта в блок «UNLINK JOESQ,BAKON,V$GOBAK» Цепь пользователя будет пустой, при делении по модулю ошибка возникать не будет.) 12. Ниже приведена последовательность блоков, дающая искомое решение: ЕСЛИ МОЖНО, ЗАНЯТЬ; ИНАЧЕ ВСТАТЬ В ЦЕПЬ ЗАНЯТЬ ПРИБОР ИСПОЛЬЗОВАТЬ ПРИБОР ДАТЬ ВОЗМОЖНОСТЬ ПРИБЫВШИМ ВСТАТЬ В ЦЕПЬ ОСВОБОДИТЬ ПРИБОР В СЛУЧАЕ НЕЧЕТНОГО ЧИСЛА В ЦЕПИ ПЕРЕЙТИ К ДРУГОМУ БЛОКУ ИНАЧЕ ПОСЛАТЬ НА ПРИБОР ТРАНЗАКТ ИЗ НАЧАЛА ЦЕПИ ДЕЛО СДЕЛАНО; ПЕРЕЙТИ К ДРУГИМ ДЕЛАМ ВЫВЕСТИ ПЕРВУЮ ПОЛОВИНУ ЦЕПИ ДЛЯ ОСВОБОЖДЕНИЯ СРЕДНЕГО ТРАНЗАКТА ПОСЛАТЬ СРЕДНИЙ ТРАНЗАКТ НА ПРИБОР ВЫВЕСТИ ВТОРУЮ ПОЛОВИНУ ЦЕПИ ДЛЯ СОХРАНЕНИЯ ПРЕЖНЕГО ПОРЯДКА вывода...
В приведенном решении булева переменная PLOY определяется выражением «V$TRYME'E'CH2», где переменная TRYME задаетси как «TRYME VARIABLE CH2/2»2». Переменная HALF определена таким образом: «HALF VARIABLE CH2/2». 13. На рис. У13, а показано решение для п. а этого упражнения, на рве. У13, б— решение для п. б. Оба решения представлены в виде полной распечатки программы. В обе распечатки включены комментарии, полностью объясняющие каждую модель. Следует отметить, что все результаты, получаемые при прогоне одной модели, полностью соответствуют результатам другой модели (здесь результаты не приведены). И, как и следовало ожидать, эти результаты, в свою очередь, полностью соответствуют результатам, полученным при прогоне первоначальной модели примера 2С для дисциплины обслуживания по динамическому приоритету (не- я следовало ожидать, результат, получаемый при прогоне модели, приведенной на рис. У16, полиостью совпадает с результатом моделирования примера 5Е (здесь результат ие приведен). 18. Одним из возможных решений было бы введение после каждого блока GENERATE, через которые в модель поступают рассматриваемые транэактьг, блока «MARK 1». В этом случае первый параметр каждого такого транзахта содержит время рождения этого транзакта. После этого в том месте, где происходит занятие прибора, нужво использовать последовательность из двух блоком «LINK TOMSQ.Pl,GETOM» u «GETOM SEIZE ТОМ», а в качестве соответствующего блока UNLINK использовать блон «UNLINK TOMSQ,GETOM,l». Другим вариантом решения будет такая последовательность блоков, расположенная в точке, где происходит занятие прибора: MARK GETOM ASSIGN LINK SEIZE l.BIRTH TOMSQ.P1,GETOM TOM ЗАПИСАТЬ В ПЕРВЫЙ ПАРАМЕТР АБСОЛЮТНОЕ ВРЕМЯ PI —ВРЕМЯ РОЖДЕНИЯ ВСТАТЬ В ЦЕПЬ ИЛИ ЗАНЯТЬ ПРИБОР ЗАНЯТЬ ОБСЛУЖИВАЮЩЕЕ УСТРОЙСТВО которые из этих результатов приведены на рис. 2С.5, а). 16- На рис. У16 приведено решение этого упражнения в виде полной распечатки программы. Смотрящие влево стрелки в поле комментария на распечатке указывают на блоки, которые либо добавлены, либо иаменены по сравнению с исходной моделью примера 5Е (см. рис. 5Е.2). Как BLOCK NUMBER 1 2 3 k 5 Б 7 * 9 10 11 12 13 11» IS 16 17 *L0C • OPERATION A,B,C,D,E,F,G SIMULATE FUNCTION OEFINITION(S) MEAN FUNCTION PR,12 M, 1,300/2,100 • * •JOIN GRAB • * * MODEL SEGMENT 1 GENERATE «20,360,,,1 ASSIGN 1-,PR ASSIGN 2,90 QUEUE LINE LINK CHAIN,PI,GRAB SEIZE CLERK 0EPART LINE ADVANCE FN$MEAN,P2 RELEASE CIERK UNLINK CHAIN,GRAB, 1 TERMINATE MODEL SEGMENT 2 GENERATE 360,2*0,,,2 ASSIGN 1-,PR ASSIGN 2,30 TRANSFER ,JOIN MODEL SEGMENT 3 GENERATE 28800 TERMINATE 1 CONTROL CARD(S) START 1 END В качестве соответствующего блока UNLINK используется блок «UNLINK TOMSQ,GETOM,I». Переменная BIRTH определяется выражением «PI-MI». 19. Показанное здесь решение обеспечивает следующую дисциплину обслуживания. Если освободится кассир с номером / и к нему нет очереди, то клиент, стоящий послед. COMMENTS PR INTO MEAN SERVICE-TIME REQUIREMENT CATEGORY 1 MECHANICS ARRIVE SET PI - -PR SET P2 —SERVICE-TIME SPREA0 CHECK INTO THE LINE GO CAPTURE CLERK IF FREE; ELSE, LINK CAPTURE THE CLERK CHECK OUT OF THE LINE SERVICE T!M£ ELAPSES FREE THE CLERK SEND NEXT MECHANIC (IF ANY) TO CAPTURE LEAVE THE TOOL CRIB AREA CATEGORY 2 MECHANICS ARRIVE SET PI • -PR SET P2 ■ SERVICE-TIME SPREAD NOW GO TO THE COMMON BLOCK SEQUENCE TIMER ARRIVES AT EN0 OF 8-HOUR 0AY SHUT OFF THE SIMULATION START THE SIMULATION RETURN CONTROL TO OPERATING SYSTEM CAR0 NUMBER 1 2 3 if 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2k 23 26 27 28 29 30 31 32 33 Э* 35 36 37 Ряс. У13, a 558
BLOCK NUMBER 1 2 3 1» 5 6 7 S 9 11 11 12 13 1« 15 16 17 IS 19 2» 21 22 Рис У13, *L0C • OPERATION SIMULATE ' A,B,C,D,E,F,G FUNCTION DEFINITIONS) MEAN FUNCTION 1,300/2,100 * GRAB EMTEE ONT01 * tfONT02 * ♦ * 6 PR ,12 МД MODEL SEGMENT 1 GENERATE ASSIGN QUEUE GATE NU SEIZE DEPART ADVANCE PRIORITY RELEASE UNLINK TERMINATE UNLINK TERMINATE LINK ч20,ЗВ0,,,1 1,90 LINE CLERK,ONT01 CLERK LINE FN$MEAN,P1 0,BUFFER CLERK CAT2,GRAB,1,,, CAT1,GRA8,1 CAT1,F1FO MODEL SEGMENT 2 GENERATE ASS 1 GN - QUEUE GATE NU TRANSFER LINK 360,2*0,,,2 1,30 LINE CLERIC, ONT02 ,GRAB CAT2,FIF0 MODEL SEGMENT 3 GENERATE TERMINATE 2 MOO 1 CONTROL CARD(S) START 1 COMMENTS MAP PR INTO MEAN SERVICE-TIME REQUIREMENT CATEGORY 1 MECHANICS ARRIVE SET PI - SERVICE-TIME SPREAD CHECK INTO THE LINE 60 SEIZE CLERK IF FREE; ELSE, ЦНК. CAPTURE THE CLERK CHECK OUT OF THE LINE SERVICE TIME ELAPSES PAUSE WHILE ARRIVAL EVENT (IF ANY) IS PROCESSED FREE THE CLERK EMTEE SEND CAT 2 MECH (IF ANY) TO CAPTURE; ELSE, GO TRY CAT 1 MECHS LEAVE THE TOOL CRIB AREA SEND NEXT CAT 1 MECHANIC TO CAPTURE LEAVE THE TOOL CRIB AREA GO ONTO USER CHAIN FOR CAT 1 MECHS CATEGORY 2 MECHANICS ARRIVE SET PI - SERVICE-TIME SPREAD CHECK INTO THE LINE 60 SEIZE CLERK IF FREE; ELSE, LINK NOW GO TO THE COMMON BLOCK SEQUENCE GO ONTO USER CHAIN FOR CAT 2 MECHS TIMER ARRIVES AFTER S HOURS SHUT OFF THE RUN START THE «UN RETURN CONTROL TO OPERATING SYSTEM P3 ним и очереди с номером / — 1, быстро выходит из своей очереди и занимает /-то кассира. Если ц* — 1) очередь пуста, то клиент, стоящий в (/ + И очереди, выходит из нее и занимает /-го кассира. Если же (/ -J- ]) очередь также пуста, то клиент, стоящий в очереди с номером (/ — 2) покидает ее и занимает /-го кассира и т. д. Естественно, что при работающих восьми кассирах нет такого номера /, при котором число очередей слева от него равнялось бы числу очередей справа. Фактически, для (концевых кассиров» (с номерами 1 и 8) очереди существуют только с одной стороны. Таким образом, возникает яопрос, какой алгоритм следует выбрать для обеспечения верной последовательпости перебора очередей для /-го кассира при / = 1,2, .... 8. В приводимом решении последовательность просмотра очередей сведена в таблицу. Ниже приведена эта таблица и виде первой матрицы сохраняемых величин размером в полуслово. Элементы таблицы указывают номер следующей очереди при попытке найти клиента, которого можно направить к /-му кассиру. Последовательность просмотра для кассира с номером / расположепа в ;-й строке таблицы для / от 1 до 8. CARD NUMBER 1 2 3 5 6 7 8 9 1» 11 12 13 1ч 15 16 \7 18 15 20 21 22 23 2ч 25 26 27 2» 2» 30 31 32 33 3« 3$ 36 37 3« 39 *• « 42' 1 2 3 4 Р2 5 6 7 8 1 8 в 8 8 1 1 1 1 2 7 7 7 7 8 2 2 2 » 6 6 6 1 2 3 3 3 « 5 5 5 6 7 8 4 4 б 4 4 I 2 3 4 5 5 б 3 3 4 5 6 7 8 6 7 2 1 2 3 4 б 6 7 1-я матрица сохраняемых величин размером в полуслово Все последовательности записаны в таблице справа налево для удобства использования в модели блока LOOP. (Подобный способ записи последовательностей справа налево был использован в книге в примере 6С.) Например, просмотр элементов третьей строки таблицы справа налево 559
BLOCK NUMBER 1 2 3 5 Б 7 8 9 10 11 12 13 111 15 16 17 18 19 20 21 22 23 24 *L0C OPERATION SIMULATE A,B,C,D,E,F,G COMMENTS FUNCTION DEFINITIONS) XPDIS FUNCTION RN1,C24 EXPONENTIAL DISTRIBUTION FUNCTION Q,0/.l,.104/.2,.222/.3,.355/.*,.509/.5,.Б9/.Б,.915/.7,1.2/.75,1.38 .8,1.6/.84,1.83/.88,2.12/.9,2.3/.92,2.52/.94,2.81/.95,2,99/.96,3.2 .97, 3.5/.98,3.9/.99,4.Б/.995,5.3/.998,Б.2/.999,7/.9998,8- ONBUS FUNCTION RN1,C2 0,20/1,51 OFF FUNCTION RN1,C2 0,3/1,8 DISTRIBUTION OF PEOPLE ON ARRIVING 8US DISTRIBUTION OF PEOPLE GETTING OFF 8US TABLE OEFINITION(S) INQUE QTABLE MAD TABLE MODEL SEGMENT 1 LINE,300,300, X$MAD,0,1,10 TRY GENERATE QUEUE LINK DEPART TEST L GETDN AOVANCE SAVEVALUE TERMINATE MAD SAVEVALUE TERMINATE 150,FN$XPDIS,,,1 LINE UNE,FJFO LINE X$N0WON,5O,MAD «,4 NOWON+,1 MAD+,1 TIME SPENT WAITING AT BUS STOP PEOPLE NOT SERVED PER BUS PEOPLE ARRIVE AT BUS STOP JOIN WAITING LINE < <_, MODEL SEGMENT 2 GENERATE AOVANCE SAVEVALUE ASSIGN NEXT ADVANCE SAVEVALUE LOOP AGAIN UNLINK BUFFER TEST E TRANSFER MTEE TABULATE SAVEVALUE TERMINATE CONTROL CARDS IS THERE ROOM LEFT ON THE BUS? IF NOT, GO AWAY MAO CLIMB ABOARD THE BUS UPDATE THE ND. NOW ON THE BUS CURRENT PERSON IS NOW ABOARD UPDATE THE "MAD" COUNTER GO AWAY MAO 1800 90,90 NOWDN,FNSDNBUS l,FN$OFF N0W0N-,1 1,NEXT LINE,TRY,1,,, MTEE W$GETON,0 ,AGAIN MAO MAO.O 1 BUS APPROACHES EVERY 30 MINUTES ANY DELAY HERE MEANS THE BUS IS LATE SET XSNOWON - NO. NOW DN THE BUS SET PI ■ NO. WHO WANT TO GET OFF NEXT PERSON GETS OFF UPDATE THE NO. NOW ON THE BUS OOP BACK TO LET NEXT OFF «IF ANY) ZERO-OUT THE "MAD" THE BUS OEPARTS COUNTER START END 25 START THE RUN RETURN CONTROL TO OPERATING SYSTEM CARD NUMBER 1 2 3 5 6 7 8 9 10 11 12 13 14 15 16- 17 18 19 20 21 22 23 21» 25 26 27 28 29 30 31 32 33 34 35 36 37 3« 39 40 41 42 43 4 К 45 46 *7 ki 49 50 51 52 53 Рнс. У16 показывает, что лрп попытке найти клиента для третьего кассира очереди будут проверяться в следующем порядке: вторая очередь, четвертая очередь, первая очередь, пятая очередь, шестая очередь, седьмая очередь и, наконец, если необходимо, восьмая очередь. Как предложено в указанной выше таблице, второй и третий параметры активного травзакта используются в мо- ALLOK EMPTY UNLINK TERMINATE PRIORITY GATE NU P2.GRAB.1.,,EMPTY O.BUFFER P2.ALLOK дели в качестве указателей строки и соответственно столбца таблицы. Ниже приведена сама модель, которую можно рассматривать как расширение рис. 7А.2, б (первые два блока приводимой последовательности соответствуют блокам 11 и 12 па рис. 7А.2, б, все остальные блоки являются дополнительными для данного рисунка). ПЕРЕЙТИ К «FMPTY». ЕСЛИ В ЦЕПИ «Р2> НЕТ КЛИЕНТОВ ДЛЯ КАССИРА «Р2» ИНАЧЕ УЙТИ ИЗ СИСТЕМЫ ДАТЬ ВОЗМОЖНОСТЬ ПРИБЫВШЕМУ КЛИЕНТУ (ЕСЛИ ЕСТЬ) ЗАНЯТЬ КАССИРА «Р2» ЕСЛИ КАССИРА «Р2» ЗАНЯЛИ, ПЕРЕЙТИ К УХОДУ ИЗ СИСТЕМЫ 560
NEXT NOLUK OETNO ASSIGN UNLINK SAVEVALUE TERMINATE LOOP TERMINATE ASSIGN TRANSFER S.7 MHI {(P2,P3),GETNO,I. BACK»NOLUK 1.P2 3.NEXT 2.X 1 .GRAB ИНАЧЕ ЗАДАТЬ ПАРАМЕТР ЦИКЛА ПОПЫТАТЬСЯ ВЫВЕСТИ ИЗ ЦЕПИ ДЛЯ СЛЕДУЮЩЕЙ ОЧЕРЕДИ В ПОСЛЕДОВАТЕЛЬНОСТИ, В СЛУЧАЕ НЕУДАЧИ ПЕРЕЙТИ К NOLUK ИНАЧЕ ПЕРЕДАТЬ НОМЕР СВОБОДНОГО КАССИРА ТОЛЬКО ЧТО ПРИШЕДШЕМУ КЛИЕНТУ ЗАДАЧА ВЫПОЛНЕНА; МОЖНО УХОДИТЬ ПЕРЕЙТИ К ПРОВЕРКЕ СЛЕДУЮЩЕЙ ОЧЕРЕДИ (ЕСЛИ ЕСТЬ) ИНАЧЕ ДЛЯ ЭТОГО КАССИРА НЕТ КЛИЕНТА. УЙТИ ВЫБРАННЫЙ КЛИЕНТ ЗАПИСЫВАЕТ НОМЕР СВОБОДНОГО КАССИРА ВЫБРАННЫЙ КЛИЕНТ ИДЕТ НА ОБСЛУЖИВАНИЕ 21. Как и требовалось в этом упражнении, для прогона на ЭВМ системы 360/67 были выполнены три отдельные модели, основанные на рис. 7.15, и для каждой из них было измерено общее время работ» процессора. Для каждого из трех вариантов модели, приведенной на рис, 7.15, были сделали следующие изменения: — вместо .блока «GENERATE 7,3» был поставлен блок «GENERATE ,,,,100»; — в операнде А каждого из двух блоков TERMINATE была введена величина, равная I; ' — в качестве карты START использовали квоту «START 100». Ниже приведена таблица, описывающая другие изменения в модели (если есть) ч соответствующие замеренные времена процессора: Описание используемой модели Больше никаких изменений Из модели пзъята цепь пользователя х Из модели выведена цепь пользователя и блок TEST Затраченное время процессора, с 2,06 8,23 6,20 1 Это означает, что следует убрать операнд С в блоке TEST н изъять оба блоке UNLINK. 7.13. Упражнения 1. В предлагаемом пижа решении используется следующая логика. После освобождения прибора, но перед выбором следующей детали, поступающей на станок, транзакт, освобождающий прибор, должен выделить из цепи пользователя с именем QUE те детали, которые являются критическими, и поместить их затем обратно в цепь пользователя в соответствии с величиной РЗ (а именно, упорядочить ях в цепи пользователя так, чтобы при ее просмотре с начала до конца эти детали располагались в порядке возрастания моментов прибытия К прибору). В общем случае переупорядоченные критические детали перемешиваются а цепи пользователя с некритическими. Затем трэлзакт. освобождающий прибор, выберет ближайшую к началу цепи пользователя критическую деталь и пошлет се па занятие станка. Как и ранее, при отсутствии критических деталей стаиок будет занят деталью, находящейся о начале цепи пользователя (если такая деталь есть). Описанная выше логика легко осуществляется добавлением трех блоков к модели на рис. 7.17. Прежде всего, между блоками «RELEASE MAC» и «UNLINK QUE,TIEUP,l,BV$CRJOB.,NONE», показанными в модели, на рис, 7.17, нужно добавить следующие два блока: «UNLINK QUE.SHUFL.ALL.BV $ CRJOS..NONE» и «PRIORITY PR,BUFFER». Затем сразу же после любого блока TERMINATE в общей модели (или, например, пусть это будет самый первый блок в модели) нужно поставить блок «SHUFL LINK QUE.P3». Новый блок UNLINK служит для вывода нэ цепи пользователя всех критических деталей и перевода их в блок с именем SHUFL. (Если критических деталей нет, то транзакт, осуществляющий вывод из цепн, переходит к Имеющемуся блоку с именем NONE, где отправляет на занятие прибора некритическую деталь.) Конечно же, выведенные из цепи критические деталп, просто помещенные в данном месте модели в цепь текущих событий, еще не обработаны интерпретатором. Поэтому транзакт, осуществивший вывод из цепя, входит в блок «PRIORITY PR,BUFFER», давая тем самым возможность ввести выведенные из цепи критические детали в блок LINK, имеющий имя SHUPL, где они будут снова помещены в цепь пользователя, но уже в порядке возрастания моментов их прибытия к станку. Когда интерпретатор вновь приходит к транзакту. осуществившему вывод из цепи, он продвягает его в имеющийся блок «UNLINK QUE.TIEUP,l,BV$CRJOB,,NONE», в результате чего на станок поступит самая «старая» критическая деталь. 2. Решение этого упражнения показано в виде полной распечатки программы на рис. У2. Комментарии, сопровождающие распечатку, полностью объясняют логику модели. Все результаты, получаемые в процессе моделирования (здесь результаты не приведены), полностью совпадают с результатами, полученными при прогоне «одели, представленной в качестве решения упражнения 7 параграфа 6.4. 3. Ниже показана последовательность блоков, дающая решение для этого упражнения. Булева переменная TRYI0 определяется выражением «P5'GE'10»: 2ЧРР LINK SEIZE ADVANCE PRIORITY RELEASE UNLINK CHAIN.FIFO.ZAPP CHECK EN$UPP2U PR.BUFFER CHECK CHAIN.ZAPP.I, ПРИБЫТИЕ КЛИЕНТОВ ЕСЛИ МОЖНО. ПОЙТИ НА ИНАЧЕ ВСТАТЬ В ЦЕПЬ ЗАНЯТЬ ПРИБОР ИСПОЛЬЗОВАТЬ ПРИБОР ПРИОСТАНОВИТЬСЯ, ЧТОБЫ ДАТЬ НОСТЬ ПРИБЫВАЮЩИМ КЛИЕНТАМ ЦЕПЬ ПОЛЬЗОВАТЕЛЯ ОСВОБОДИТЬ ПРИБОР ПОСЛАТЬ НА ОБСЛУЖИВАНИЕ КЛИЕНТА 1-ГО ОБСЛУЖИВАНИЕ. ВОЗМОЖ- ВОЙТИ В 36 Т. Дж. Шрзйбер 561
NOTEN MAIN TRANSFER UNLINK BV$TRY10„NOTEN •MAIN CHAIN.ZAPP.I ТИПА. ЕСЛИ ИХ НЕТ, ПЕРЕЙТИ К ДРУГОМУ- БЛОКУ ВСЕ СДЕЛАНО, УЙТИ ДАЛЬШЕ ПОСЛАТЬ НА ОБСЛУЖИВАНИЕ КЛИЕНТА 2-ГО ТИПА БЛОК. КУДА ПЕРЕХОДИТ ТРАНЗАКТ, ОСУЩЕСТВИВШИЙ ВЫВОД ИЗ ЦЕПИ BLOCK NUMBER «LOC 10 11 12 OPERATION SIMULATE A,B,C,0,E,F,G COMMENTS FUNCTION DEFINITIONS) MAP SAVED -PR INTO MEAN SERVICE TIME MAP SAVEO «PR INTO JOB-TYPE NUMBER SET PRIORI TV OF ARRIVING JOBS AT RANDOM * * * MEAN FUNCTION P1,D3 -3,200/-2,300/-l,liOO POINT FUNCTION PI,03 -3,l/-2,2/-l,3 SETPR FUNCTION RN1,D3 .55,3/.85,2/1,1 XPOIS FUNCTION RNl,C2k EXPONENTIAL DISTRIBUTION 0,0/.l,.10U/.2,.222/.3,.355/.li;.509/.5,.6S/.6,.915/.7,l.2/.75,1.3e .8,1.6/. Bit, I.83/.88, 2.12/. 9,2.3/.9.2, 2.52/. 91», 2.81/.95, 2. 99/. 96, 3.2 .97, 3. 5/.98, 3.9/.99,1», 6/. 995, 5.3/.998,6.2/.999,7/. 9998, 8 • * TABLE DEFINITIONS) * RESIDENCE TIME TABLE, JOB TYPE 1 RESIDENCE TIME TABLE, JOB TYPE 2 RESIDENCE TIME TABLE, JOB TYPE 3 > ► VARIABLE DEFINITIONS) i CRJOB 3VARIABLE Ml'GE'900 TRUE *> JOB IN QUESTION IS "CRITICAL" t » MOOEL SEGMENT 1 1 2 3 TABLE TABLE TA8LE «1,300,300,15 Ml,300,300,15 Ml,300,&00,20 GENERATE ASSIGN ZAPEM SEIZE PRIORITY ADVANCE RELEASE TABULATE UNLINK 300,FN$XPDIS,,,FN$SETPR 1-,PR LINE,PI,ZAPEM MAC 0 FN$MEAN,FNSXPDIS MAC FN$P01NT JOBS ARRIVE SET PI - -PR SEIZE IF POSSIBLE, ELSE LINK CAPTURE THE MACHINE SERVICE COMPLETION HAS LOW PR MACHINING TIME ELAPSES FREE THE MACHINE TABULATE JOB'S TIME IN SHOP NONE TERMINATE UNLINK TERMINATE CONTROL CARD(S) START 100 F.N0 LINE,ZAPEM,1,BV$CRJ0B,,NONE SEND "CRITICAL" JOB (IF ANY) TO CAPTURE; ELSE, GO SCAN FOR NONCRITICAL JOB 1 fINISHEO JOB LEAVES THE SHOP LINE,ZAPEM, 1 SEND NONCRITICAL JOB OF ANY) TO CAPTURE 1 FINISHEO JOB LEAVES THE SHOP START THE SIMULATION RETURN CONTROL TO THE SYSTEM CARO NUMBER 1 2 3 <• 5 6 7 8 9 10 11 12 13 l"» IS 16 17 18 19 20 21 22 23 21» 2S 26 27 28 29 30 31 32 33 3k 35 36 37 38 39 1*0 i»l U2 i»3 i» it i»5 t>6 I» 7 Рис. У2 В приведением выше решении предполагается, что все транзакты, использующие прибор, имеют одинаковый приоритет. Если это предположение не выполняется, следует заменить блок tPRIORITY PR.BUFFER» блоком «PRIORITY 0.BUFFER». Если введено такое изменение и необходимо восстанавливать первоначальный приоритет тран- закта-ниициатора вывода из цепи пользователя, необходимо где-либо (например, в одном из параметров этого траи- закта или в сохраняемой величине) записать прежнее значение приоритета, чтобы впоследствии в соответствующем блоке PRIORITY этот транзакт смогнновь получить прежний приоритет. 4. Решение этого упражнении аналогично решению упражнения 3 данного параграфа. 5. На рис. У5 приведено решепие этого упражнения в виде полной распечатки программы. Для указания блоков, которые являются либо новыми, либо измененными по сравнению с исходпой моделью 6В, в поле комментариев использованы стрелки, смотрящие вправо. Для экономии места из рис. У5 исключены некоторые управляющие 562
BLOCK NUMBER *LOC OPERATION A,B,C,D,E,F,G SIMULATE FUNCTION DEFINITION(S) COMMENTS SNORM FUNCTION RN1,C25 STANOARO NORMAL DISTRIBUTION FUNCTION ,-5/. 00003, -■»/. 00135,-3/. 00621,-2.5/. 02275, -2 06681,-1.5/.11507,-1.2/.15866,-1/.21186,-.8/.27*25,-.6 >ь»»58,-.к/.ч207и,-.2/.5,О/.57926,.2/.655ч2,Л 72575,.6/. 7881 k, .3/.8kl3<»,l/.8BI»93, 1.2/.93319,1.5 97725,2/.99379, 2.5/.99865,3/.99997, <»/l,5 XPDIS FUNCTION RN1,C2U EXPONENTIAL DISTRIBUTION FUNCTION , 0/.1,.10k/.2,.222/.3,.355/.U,.509/.5,.69/.6,.915/.7,1.2/.75, 1.38 8,1.6/. 8U, 1.83/.88, 2. 12/. 9, 2.3/.92, 2.52/. 9"», 2.81/.95, 2.99/.96,3.2 97,3.5/.98,3.9/.99,k.6/.995,5.3/.998,6.2/.999,7/.9998,8 STORAGE CAPACITY OEFfNITION(S) STORAGE S(BUSY,3 TABLE OEFINITION(S) DELAY TABLE SLIPS TABLE Ml,360,60,26 P2,1,1,5 SET STORAGE CAPACITY FOR 3-CLERK RUN TIME SPENT AT CHECKOUT DESK VARIABLE DEFINITIONS) GNORM FVARIABLE (FN8SNORM/5+1)*180»P2 MODEL SEGMENT 1 1 2 3 It 5 6 7 8 9 ■ 10 11 12 13 1U 15 16 17 18 19 20 21 22 23 GETIO TABU * BLOKA BLOKB BLOKO BLOKC GENERATE LINK ASSIGN LINK TABULATE TERMINATE 120,FN$XPOIS,,, LINE1,FIF0 1,X$CLERK LINE2,FIFO DELAY 1 MODEL SEGMENT 2 GENERATE ASSIGN TEST NE EHTER SAVEVALUE UNLINK ASSIGN BUFFER TABULATE AUVANCE ADVANCE АОVANCE ADVANCE UNLINK LOOP LEAVE TRANSFER l,N»BLOKA CH$LINE1,0 BUSY CLERK,PI LINE1,GETID,k 2,W$8LOKD SLIPS 60,30 VtGNORM 60,30 120,60 LINE2,TABU,1,1 2,BLOKC BUSY ,BLOKB LEAVE THE CHECKOUT DESK PROVIDE 3 CLERKS SET PI => CLERK 1.0. NO. <— YES; ENTER BUSY STATUS COMMUNICATE CLERK 1.0. NO. TO PEOPLE ABOUT TO BE SERVEO < < RE-START SCAN TO PROCESS THE UNLINKED CUSTOMER-TRANSACTIONS RECORD NO. OF SLIPS PICKEO UP TRAVEL INTO THE STACKS LOCATE THE BOOKS RETURN FROM THE STACKS FINISH CHECKING OUT NEXT PERSON <-? LOOP BACK TO FINISH CHECKING OUT NEXT PERSON (IF ANY) OTHERWISE, CLERK LEAVES BUSY STATUS GO START NEXT SERVICE CYCLE CONTROL CARDS, BLOCK OPERANO RE-DEFS, AND STG CAPACITY RE-DEFS START 100 START THE 3-CLERK RUN CABD NUMBER 1 2 3 b 5 6 7 8 9 10 11 12 13 lit 15 16 17 18 19 20 21 22 23 2k 25 26 27 2B 29 30 31 -32 33 31» 35 36 37 38 39 kO kl I» 2 k3 I» I» I» 5 кб k7 k8 t>9 50 51 52 53 51» 55 56 57 58 59 60 61 62 Рис. У5 арты. Отсутствующие девять карт идентичны картам с ио- юрами от 80 до 88 в исходной модели (см. рис. бВ.2). При прогоне полной модели (рис. У5) получаются ре- улътаты, полпостью совпадакнцяе с результатами моделирования исходного примера 6В. (Результаты прогона модели здесь не приведены.) б. Решение этого упражнения дается следующей последовательностью блоков: к«я
TRYIT PRIORITY TEST GE ENTER ADVANCE LEAVE UNLINK V$PLUS1 rIsTORE.P2,WAIT STORE.P2 FN$UPP2U STORE.P2 LINE.TRYIT.ALL ПРИБЫТИЕ ТРАНЗАКТОВ К МНОГОКАНАЛЬНОМУ УСТРОЙСТВУ УВЕЛИЧИТЬ ПРИОРИТЕТ НА 1 ПОЙТИ, ЕСЛИ ВОЗМОЖНО. НА ОБСЛУЖИВАНИЕ, ИНАЧЕ ПРИСОЕДИНИТЬСЯ К ЦЕПИ ПОЛЬЗОВАТЕЛЯ ЗАНЯТЬ ТРЕБУЕМЫЕ ОБСЛУЖИВАЮЩИЕ УСТРОЙ- СТВА ИСПОЛЬЗОВАТЬ УСТРОЙСТВА ОБСЛУЖИВАНИЯ ОСВОБОДИТЬ УСТРОЙСТВА ОБСЛУЖИВАНИЯ ДАТЬ ВОЗМОЖНОСТЬ ВСЕМ ОЖИДАЮЩИМ ТРАН- ЗАКТАМ ЛОПАСТЬ НА ОБСЛУЖИВАНИЕ СЛЕДУЮЩИЙ БЛОК ДЛЯ ТРАНЗАКТА — ИНИЦИАТОРА ВЫВОДА ИЗ ЦЕПИ Блок с именем WAIT, не включенный в укаэанпую последонательносп,, должен иметь вид «WAIT UNLINK LINE, FIFO». (Этот блок можно поместить после любого блока TERMINATE в обшей модели или непосредственно в самом начале модели.) Переменная PLUS1 задается выражением «PR+l», 'В приведенном выше решении предполагается, что все транзакты, использующие многоканальное устройство имеют одинаковый приоритет и что этот приоритет можно поднять на 1 при поступлении тряпзакта на многоканаль ное устройство (при необходимости первоначальный при оритет может быть сохранен и впоследствии восстановлен) Увеличение приоритета включено в модель для зашиты от возможного временного узла, который может воз никнуть при некоторых обстоятельствах. В качестве специфического примера такой возможности предположим, что выполняются следующие условия: — в начале цепи пользователя стоит транзакт с величиной Р2, равной 2; — оставшаяся емкость многоканального устройства равна 1; — существует временной узел между событием следующего поступления и событием окончания обслуживания; — событие, заключающееся в окончании обслуживания, освободит еше одно обслуживающее устройство; — приходящий транзакт нуждается в одном устройстве обслуживания. При этих условиях следующим, кто займет устройства обслуживании, имитируемые многоканальным устройством, должен быть транзакт. стоящий в яачале цепи пользователя. Предлагаемое решение учитывает этот факт и поступает соответствующим образом. Легко убедиться в том, что, если бы в модель не было включено увеличение приоритета, то в многоканальное устройство вошел бы пришедший транзакт, а не тот, который стоит в яачале цепи пользователя (даже если между блоками ADVANCE и LEAVE или между блоками LEAVE и UNLINK был бы поставлен блок «PRIORITY PR.BUF- FER», происходил бы тот же самый эффект). Все другие предлагаемые решения этого упражнения следует проверить, для того чтобы убедиться, работают ли они верно при наличии указанного выше набора условий или других условий, аналогичных этим. 7. Если транзакты в упражнении 6 не помещаются в цепь пользователя, а просто остаются в цепи текущих событий в заблокированном состоянии, то дисциплина об» служивания будет в точности такой же, как описано в упражнении 6. При одинаковом приоритете пользователей многоканального устройства, во при разном количестве требуемых для них обслуживающих устройств, имитируемых этим многоканальным устройством, это не что иное, как исходная дисциплина обслуживания многоканального устройства. (В конце концов, указанное в упражнении 6 хитроумное манипулирование приоритетами показывает, что моделирование исходной дисциплины обслуживания с помощью цепей пользователи не такое уж простое дело!) 7.18. Упражнения l.a) «Первым пришел — первым обслужен» б). «Первым пришел — первым обслужен». в). Заменить оба блока «RELEASE JOE» па блоки «RETURN JOE». Затем заменить оба блока «SEIZE JOE» на блоки «PREEMPT JOE» или заменить оба блока «SEIZE JOE» па блоки «PREEMPT JOE.PR», или заменить любой из блоков «SEIZE JOE» блоком «PREEMPT JOE», а другой — блоком «PREEMPT JOE.PR». г). 1) «первым пришел — первым обслужен внутри своего приоритетного класса»; 2) операторы второй категории обслуживаются только тогда, когда полностью отсутствуют операторы первой категории. (Если обслуживается оператор второй категория и приходит оператор первой категории, то оператор второй категории будет немедленно смещен. Если операторы первой и второй категорий ожидают, когда оператор первой категории закончит свои дела с кладовщиком, то оператор второй категории займет прибор, но после этого в в тот же момент модельного времени оператор первой категории его захватит.) 3) «первым пришел — первым обслужен внутри своего приоритетного класса»; 4) «первым пришел — перпым обслужен внутри своего приоритетного класса», аа исключением того, что оператором второй категории разрешается смещать операторов первой категории (операторы первой категории ие обслуживаются, если присутствует хотя бы одни оператор второй категории); 5) то же, что и в п. 4; 6) то же, что и в п. 4. 2.6). Логика модели не изменится. в). В сегменте 1 модели следует заменить блоки SEIZE и RELEASE блоками PRЕЕМРТ (используя или не используя символ PR) я RETURN. В сегменте 2 модели в операнде В блока PREEMPT использовать PR. Изменить операнды Е блоков GENERATE в сегментах 2 и 3 модели соответственно с 2 на 3 н с 3 иа 4. г). Если машинам, находящимся па плановом ремонте, был бы назначен приоритет, равный 1, то логика модели осталась бы верной. При этом соответствующие транзакты в цепи текущих событий всегда находились бы после тран- закта-наблюдателя из сегмента 4 модели, но, поскольку этот факт не влияет на величину QJTRUBL, полученные результаты останутся прежними. д). Прежде всего транзакт-хозяин возвратит смотровую яму для машины, поставленной на плановый ремонт. Это означает, что из Цепи прерываний выводится соответствующий транзакт и вновь помещается в цепь текущих событий, где по плану он будет занимать яму в течение предварительно вычисленного оставшегося временя задержки. Продолжая просмотр Цепи текущих событий, интерпретатор столкнется с транэактом, имитирующим внеплановую полицейскую машину. Этот транзакт находится в блоке «QUEUE TRUBL» и следующим блоком, куда ои 564
попытается войти, будет блок «PREEMPT BAY». Этоттран- закт войдет в указанный блок PREEMPT, заставив интерпретатор вывести из Цепи будущих событий транзакт, имитирующий плановый ремонт, н снова поместить его в цепь npepiroanttft. Затем трэизакт-иолиценская мвшииа продолжит свое движение вперед будучи при этом продвинут в блок ADVANCE и переведен в цепь будущих событий квк пользователь-захватчик смотровой ямы- е). В сегменте 3 модели следует либо до, либо после блока PREEMPT вставить блок «TABULATE OUTOS» я в операнде А карты определения таблицы OUTOS использовать величину Q$TRUBL. 6. В приводимой ниже решении единиц* времени такова, что в 24-часовом дне содержится 450 единиц времени. При таком выборе время между прибытием клиентов и ьреыя обслуживания клиента равно соответственно 100 и 90 единиц времени. Для дисциплин обслуживания с различающимися приоритетами клиентам 1, 2 и 3-го типа соответственио назначаются приоритеты 3, 2 и I. Соответствующие относительные частоты появления клиентом типов 1, 2 и 3 равны 0,333 (1,5из 4,5), 0,445 (2 из 4,5) и 0,222 (1 из 4. 5). Эта информация собрана в определении функции, используемой при случайном назнаценки приоритета клиента (и, таким образом, косвенно и типа клиента). Эта функция, нмя которой SETPR, показана пюке: SETPR FUNCTION RN1.D3 .333,а/.778.2/1,1 На модели 1 показана последовательность блоков, используемая для моделирования дисциплины обслуживания, позволяющей два уровня захвата: GENERATE QUEUE PREEMPT DEPART ADVANCE RETURN TERMINATE 10Q,FN$XPDIS,„FN$SETPR PR MAC.PR PR 90,FN$XPDIS MAC Модель 3 Наконец, дано решение для обыкновенной дисциплины «первым пришел — первым обслужен», как требовалось в упражнении 6 параграфа 3.17. (В этом решении для компактности также используются понятия, аводимые после гл. 3.) GENERATE 100,FN$XPD1S ASSIGN 1,FN$SETPR QUEUE PI SEIZE MAC DEPART PI ADVANCE 90,FN$XPDIS RELEASE MAC TERMINATE Модель 4 Поскольку все решения очевидны, в последовательности блоков комментарии не включены. Необходимо отметить следующие моменты. 1. В моделях 1, 2 и 3 клиенты вводятся с уже установленными соответствующими приоритетами. (Это значит, что величина PR транзакта-клиеита назначается в процессе планирования события прихода клиента, когда транзакт выводится из латентного буфера и помещается в цепь будущих событий.) В противном случае назначение приоритета можно было было бы выполнить так, как показано ниже, с использованием в качестве примера модели 3. GENERATE PRIORITY QUEUE SEIZE DEPART ADVANCE PRIORITY RELEASE TERMINATE JOO.FNJXPDIS FNfcSETPR PR MAC PR 90,FN$XPDIS O.BUFFER MAC Mow» i В модели 2 приведена последовательность блоков, ис- шмьзуеная для моделирования дисциплины обслуживания, при которой позволен один уровень захвата: G0IN 00OUT GENERATE QUEUE TEST L PREEMPT DEPART ADVANCE RETURN TERMINATE I00.FN$XPDIJ PI? V$PLNOW,l MACPR PR 90.FN$XPDIS MAC Модель 2 Далее, как требовалось в упражнении б параграфа 3.17, приведено решение, реализующее диспипляну обслуживают «первым пришел — первым обслужен в своем классе приоритета». (Для компактности записи в атом решении «пользуются понятия, введенные и книге после гл. 3-) UENERATE QUEUE SEIZE DEPART ADVANCE RELEASE TERMINATE 100,FN$XPDIS,„FN$SETPR PR MAC PR 90,FN$XPDIS MAC 1-й вариант модели 3 Вновь используя модель Э в качестве примера, ниже приведен еще один вариант назначения приоритета. IQO.FNfXPDlS, FN$SETPR PR MAC PR 0 90,FN$XPDIS MAC GENERATE IQ0.FN$XPDIS,„4 PRIORITY QUEUE SEIZE DEPART PRIORITY ADVANCE RELEASE TERMINATE 2-й вариант модели З В случае возникновения временного узла между событиями прибытия и завершения обслуживания и 1-й, и 2-й варианты позволяют закрепить за прибывающим траязактом- клиентом нужный приоритет (и, таким образом, поставив его, возможно, Даже в начало очереди ожидающих обслуживания клиеятов-транзактов) перед тем, как будет прилито решение относительно того, какой клиент попадет в а обслуживание. В модели 3 тот же самый эффект обеспечивается «немедленно», поскольку каждый поступающий транзакг-клиент уже несет в себе нужное авачение приоритета непосредственно в момент своего первого попадания в цепь текущих событий. Ясно, что модель 3 лучше, чем оба ее варианта, поскольку для пес требуется двумя блоками меньше я соответственно меньше процессорного времени. 565
2. Во всех четырех моделях очереди с номерами 3, 2 и 1 соответствуют клиентам 1, 2 и 3-го типа. 3. В модели 2 непосредственно используются указания логики захвата «5-й категории», рассмотренной в параграфе 7.16 книги н показанной на рис. 7.20. Это означает, что в модели 2 переменная PLNOW определяется выражением «N$GOIN—N$GOOUT-1». 4. В моделях 1 и 2 среднее время пребывания в очереди ищется для времени, проведенном в ожидании начала обслуживания. Естествептю, что в этих моделях, где разрешен захват, клиентам приходится дополнительно ждать, если они смещены с прибора перед тем, как их обслуживание заканчивается. В моделях \ к 2 это ожидание не учитывается. Модели, и которых такое ожидание учитывается, построить можно, ш> дли этого следует основываться на понятиях, которые в книге вводятся позже (в параграфе 7.21). (Построение подобных моделей было бы хорошим упражнением после изучения материала параграфа 7.21J 5. В модели можно было бы включить карты QTABLE для оценки распределения случайной величины времени ожидания. 6. Все модели приводятся в виде, ле предусматривающем останова пмитапии. 7. Трапзакты, захваченные у прибора, не впосят вклад в счетчик текущего содержимого блока ADVANCE в период их пребывания в кепи прерываний. Следовательно, счетчик текущего содержимого блока ADVANCE не может быть использован как косвенный указатель количества имеющихся в настоящий момент уровней захвата. 9. Подход, использующий вторую категорию, позволяет один уровень захвата впе зависимости от приоритета. При подходе с использованием пятой категории также разрешен один уровень захвата, но только в том случае» когда приоритет потенциального захватчика превышает приоритет текущего пользователя. 10. Решение дат следующей последовательностью блоков, предназначенной для замены рис. 7.20: Вдобавок к указавной последовательности в любом подходящем месте (например, сразу же после любого блока TERMINATE) общей модели необходимо дополнительно поставить следующие два блока*. SINK ASSIGN 2-.PR LINK LIMBO.P2 Для приведенного решения переменные оп1>еделсны таким образом: POINT VARIABLE N$GOIN-N$GOOUT TR1PL BVARIABLE V$PLNOW'L' XSPLMAX * PR'G'X * * 1 * W$SCNOW'E'0 Значения величии V$PLNOW, X$PLMAX, «A» u FN$HOLD в этом решении такие же, как и и сегменте модели: показанном на ряс. 7.20. Вдобавок предполагается, что величина второго параметра всех приходящих к прибору транзактов равна нулю. Наилучшим методом понимания приводимого решения будет, пожалуй, внимательное изучение показанной последовательности блоков с учетом комментариев к ним и затем создание различных ситуаций с последующей нх обработкой согласно логике этой последовательности. Полезны будут также и следующие указания. Прежде всего, заметим, что все трапзакты, ожидающие начала обслуживания на приборе, находятся в цели пользователя LIMBO. (Трапзакты. смещенные с прибора в период их обслуживания, конечно же, находятся в цепи прерываний.) В цепи пользователя транзакты стоят в порядке убывания приоритетов, считая от се начала, используя дисциплину «первым пришел — первым обслужен» для разрешения возможных приоритетных конфликтов. (Если такая организация цепи пользователя не вполне понятна, следует обратиться к решению упражнения 8, б параграфа 7.11.) При приходе трапзакта к прибору, если прибор пе используется, транзакт может попасть на обслуживание немедленно (посредством альтернативного выхода из блока GATE). В противпом случае происходит проверка с целью выявления возможности смещения с обслуживания текущего пользователя прибором. (Такая возможность допускается только в случае, если еще не достигнуто максимальное число разрешенных урон ней прерывания и его приоритет превышает приоритет текущего транзакта-пользователя и если его времи прибытия не совпадает с плановым временем окончания обслуживания. Ниже об этом последнем условии еще будет идти речь.) Если оказалось возможным,, этот транзакт переходит к следующему блоку для смещения, в противном случае он по альтернативному выходу встает в соответствующее место цепи пользователя. Когда текущий пользователь заканчивает пользование прибором и выходит из блока ADVANCE, он помещается в конец цепи текущих событий, а затем инициирует возобновление просмотра (благодаря блоку «PRIORITY O.BUFFER»). Зачем? Это сделано для того, чтобы убедиться, что в случае временного узла между событиями следующего прихода к прибору и окончанием обслуживания поступивший транзакт попал в цель пользователя. Это необходимо сделать перед тем, как будет принято решетгие, какой из транзактов в цени пользователя более всего подходит для перевода в цепь текущих событий с целью совершения попытки попасть на прибор для обслуживания (заметим, что при подобной ситуации прибывший транзакт выберет TRYIT GOIN SCNOW GOOUT GATE 1 ASSIGN TEST E PREEMPT SAVEVALUE ADVANCE PRIORITY RETURN UNLINK WUGOIN I.V$POINTj BV$TRIPL,1.SINK «A»,PR V$POINT.PR FNSHOLD O.BUFFER LIMBO.TRYIT.l ПРИХОД ТРАНЗАКТОВ К ПРИБОРУ ЗАНЯТЬ ПРИБОР, ЕСЛИ ОН СВОБОДЕН ИНАЧЕ ВЫПОЛНИТЬ ПРИГОТОВЛЕНИЯ ДЛЯ КОСВЕННОЙ АДРЕСАЦИИ ВЕЛИЧИНЫ ПРИОРИТЕТА ТЕКУЩЕГО ПОЛЬЗОВАТЕЛЯ ПЕРЕЙТИ, ЕСЛИ МОЖНО. К СЛЕДУЮЩЕМУ БЛОКУ ДЛЯ ЗАХВАТА, ИНАЧЕ ВСТАТЬ В ЦЕПЬ ПОЛЬЗОВАТЕЛЯ ПОПАСТЬ НА ПРИБОР ЗАПИСАТЬ ВЕЛИЧИНУ PR ДАННОГО ПОЛЬЗОВАТЕЛЯ (t-ГО ПОЛЬЗОВАТЕЛЯ, НАХОДЯЩЕГОСЯ СЕЙЧАС МЕЖДУ БЛОКАМИ PREEMPT и RETURN В /-Ю СОХРАНЯЕМУЮ ВЕЛИЧИНУ) ИСПОЛЬЗОВАТЬ ПРИБОР ПРИОСТАНОВИТЬСЯ ДЛЯ ОБРАБОТКИ БЛИЖАЙШЕГО ПРИБЫТИЯ (ЕСЛИ ОНО БУДЕТ) УЙТИ С ПРИБОРА ПОСЛАТЬ ОЖИДАЮЩИЙ ТРАНЗАКТ С НАИБОЛЬШИМ PR ПОПЫТАТЬСЯ ПОПАСТЬ НА ПРИБОР СЛЕДУЮЩИЙ БЛОК ДЛЯ ТРАНЗАКТА — ИНИЦИАТОРА ВЫВОДА ИЗ ЦЕПИ 566
альтернативный выход из блока TEST, поскольку условие W$SCNOWE'0 будет ложным). Рассмотрим, наконец, как используются полнословные сохраняемые величины, предназначенные для хранении значений PR тех транзактов, которые находятся между блоками PREEMPT и RETURN. Предположим, например, что в некоторой модели разрешено пять уровней захвата. Далее предположим, что приоритеты трех первых тратглактов, поступивших на прибор, равны соответственно i>, 7 и 18 и что ни один из иих еще не обслужился. Тогда первые два транзакта находятся в цепн прерываний, третий трапзакт является текущим пользователем и сохраняемые пеличины с номерами 1, 2 и 3 равны соответственно б, 7 и 18. В частности, в данный момент V$P01NT равна 3 и в третьей сохраняемой величине находятся копия значения PR текущего пользователя. Предположим теперь, что третий транэакт закончил пользование прибором и ушел дальше. После этого как элемент иснолиепия блока PREEMPT второй трапзакт вновь становится текущим пользователем прибора. Теперь величина V$POINT равна 2 и, конечно же, значение второй сохраняемой величины равно 7, ч го является значением PR текущего пользователя, и г. д. 7,22. Упражнения I. Рассмотрим, что происходит в момент окончания обслуживания полицейской машины. Если эта машина не смещала автомобиль, поставленный на плановый осмотр, то перед тем, как покинуть модель, ей необходимо выполнить указанный ниже шаг 1, а затем пря некотором условии шаг 2: 1) селн имеется еще одна ожидающая полицейская машина, то послать ее на смотровую яму: 2) в противном случае, послать на смотровую яму ожидающий автомобиль, предназначенный для планового ремонта (если таковой есть). С другой стороны, если вышедшая поело обслуживания полицейская машина смещала автомобиль, поставленный иа плановый осмотр, то перед тем, как покинуть модель, полицейская машина должна выполнить указанный выше шаг 1, но не должна выполнять шаг 2 даже при необходимом условии. Почему? Потому что при исполнении блока RETURN предварительно смещенный автомобиль для планового осмотра будет автоматически помещен обратно на смотровую яму. Посылать другой предназначенный для планового осмотра автомобиль сделать попытку занять прибор, про который известно, что он уже занят, не имеет смысла. Просчет в приведенной модели заключен в том, что обслуженные полицейские машины выполняют шаг 1, а затем при нужном условии — шаг 2 вне зависимости от того, происходило ли смещение с обслуживания пользователя, стоящего на плановом осмотре при захвате смотровой ямы. Шаги I и 2 обеспечиваются в модели соответствен ко блоками 18 и 7: Блок 18: UNLINK SPEC,SCAN3.1,r,NUN Блок 7: NUN UNLINK REG,SCAN1,1 Рассмотрим, что произойдет прн наличии указанной не- точности в смысле этих блоков. Предположим^ что полицейская машина, сместившая пользователя, стоящего на плановом ремонте, вышла с обслуживания и, перейдя в блок 18, обнаруживает, что цепь пользователя SPEC пуста. После этого она, пользуясь альтернативным выходом", переходит в блок 7, где |йггастся послать ожидающий планового осмотра автомобиль иа уже используемую смотровую яму. Если в блоке 7 произойдет вывод нз цепи, то выведенный автомобиль, предназначенный для планового ремонта, перейдет п блок «SCANI SELECT NU 1.1,5.„WA1T» и, обнаружив, что все смотровые ямы заняты (в противном случае он бы не стоял первым в цепи пользователя), вновь поступит в REG (посредством блока «WAIT LINK REG, FIFO»). Таким образом, предназначенный для планового, ремопта автомобиль переместился из начала цепи- REG в ее конец, нарушив тем самым дисциплину FIFO, заданную для этих автомобилей. Указанный просчет можно исправить, заменив операнд? блока 18 с NUN па CHECK и добавив к модели следующие два блока: CHECK GATE U TERMINATE PI,NUN В блоке с именем CHECK полицейская машина проверяет, был лн смещенный пользователь смотровой ямы (а именно, производит проверку с целью определить, используется ли эта яма после исполнения блока RETURN). Если яма занята, то полицейская машина переходит в следующий по порядку блок TERMINATE, в противном случае по альтернативному выходу переходит к блоку с именем NUN, где посылает автомобиль, предназначенный для планового ремонта (в случае наличия такового), на занятие смотровой ямы. 2. Если бы выведенный из цепи транзакт был направлен в блок 13 («SELECT NU 1.1,5,„SCAN3»), ои бы всегда переходил по альтернативному выходу в блок с именем SCAN3. Причина такого явления заключена в следующем. Переход из блока «SELECT NU 1,1,5„.SCAN3» в следующий по порядку блок будет происходить только в том случае, когда не заняты одна или несколько смотровых ям. Но если хотя бы одна яма была свободна, то транзакту-полиасй- ской машине было бы лекого выводить из цепи пользователя SPEC: в момент прибытия такой транзакт направлялся бы к неиспользуемому прибору сразу же без входа в цепь пользователя. 3. Из модели примера 7С можно исключить цепи пользователя, проделав следующие изменения (см. блок- схему 7С.!): Сегмент 2 модели: 1) вставить между блоками «QUEUE TRUBL» и «SELECT NU 1.1.6,,, SCAN3» блок «ENTER SURVS»; 2) задать емкость многоканального устройства SURV5, равной 5; 3) поместить между блоками RETURN и DEPART блок «LEAVE SURV5»; 4) вывести блок «UNLINK SPEC^CAN3,I,„NUN»; б) убрать операнд F из блока «SCAN3 SELECT N1 l,l.5„.NOLUK>; 6) вывести из модели блок «NOLUK LINK SPEQFIFO». Сегмент 3 подели; 1) между блоками «LOOP I,CLOSE» и «ADVANCE 960» следует вставить следующие два блока: ASSIGN ENTER l.R$SUPV5 SURV5,R$SURV5 2) вставить между блоками «ADVANCE 960» Н «ASSIGN 1, 5» блок «LEAVE SURV5.P1»; 3) вывести блок «UNLINK SPEC,SCAN3,ALL». Следует проверить, что все указанные изменения приводят к модели, логически эквивалентной модели примера 7D. 7.30. Упражнения 1. Предположим, что в один и тот же момепт модельного нремепн должны быть исполнены один или несколько блоков ENTER н LEAVE. Если бы блоки LEAVE всегда исполнялись перед блоками ENTF.R. то несоответствие в статистической величине MAXIMUM CONTENS (МАКСИМАЛЬНОЕ СОДЕРЖИМОЕ) было бы невозможно. Однако, если блоки LEAVE и ENTER выполняются в случайном порядке, то вполне возможно, что величина 567
максимального содержимого может принять новое значение, бессмысленное с той точки зрения, что эта величина справедлива только на протяжении пулевого отрезка модельного времени. 2. Следующим будет реализован подпроект 2—5, поскольку перед тем, как будет обработан транзакт-потомок, траиэакт-родитель перейдет из блока S SPLIT (см. рис. ТО. 3) в следующий за ним блок ENTER, откуда попадет затем в блок 10 ADVANCE. 3. Транзакт-наблюдатель будет стоять последним в Цепи текущих событий, если п сегменте 1 модели (см. рнс. 7D.2) операнд Е блока GENERATE изменить на I вместо значения, равного нулю по умолчанию, и в сегменте 2 модели операнд Е блока GENERATE изменить на нулевое по умолчанию вместо I. (Если указанные изменения будут сделаны, то, конечно, в сегменте 2 модели блок «ASIGN 2,S$MEN* необходимо поместить между блоками MARK я TEST, а аргумент таблицы INUSE заменить на Р2 вместо S$MEN. Эти изменения приводят второй участок модели в логическое соответствие с рис. 5.21 в параграфе 5.11 книг». При необходимости следует обратиться к параграфу 6.11 за дальнейшими разъяснениями.) При вводе указанных выше изменений возникает неточность, связанная с тем, что в конце 250-й имитации не будет проделано последнее измерение статистики «занятых людей». (260-й транзакт, вошедший в блок TERMINATE сегмента 1 модели, закончит моделирование. Если этот транзакт будет находиться в цепи текущих событий вгереди транзакта-иаблюдателя, то моделирование завершится перед тем, как будет обработан наблюдатель на этапе заключительного просмотра.) Эту неточность можно устранить, поместив в сегменте 1 модели мекду блоками «LOGIC R NEXTI» и «TERMINATED блок «PRIORITY 0.BUFFER». Когда транзакт, готовый покинуть модель, входит а этот блок PRIORITY, интерпретатор GPSS переставляет его в цепи текущих событий позади транзакта-иаблюдателя из сегмента 2 модели и затем возобновляет просмотр цепи текущих событий. Вследствие этого наблюдатель будет продвигаться в модели перед тем, как происходит всякое завершение в сегменте 1 модели, и, в частности, продвинется в непосредственно перед тем, как в сегменте 1 модели произойдет 250-е завершение, прекращающее моделирование. Введение в сегмент 1 модели блока «PRIORITY 0.BUFFER» без необходимости усложняет логику этого сегмента и вдобавок необоснованно устанавливает зависимость правильного функционирования сегмента 2 модели от изменений, сделанных для этой пели в сегменте 1. Этим объясняется, почему в примере 7D не был осуществлен такой подход. 4. И в том, и в другом случае моделирования под- проект 1—2 заканчивается в момент времени, равный 15 (не забудьте, что моделирование начинается в момент времени, равный I), а затем в момент временя, равный 15, начинает выполниться подпроект 2—5. После всех изменений в момент времени, равный 15, для случаев восьми и девяти рабочих при этом остается соответственно ноль и один свободный рабочий. После этого в момент времени, равный 21, заканчивается подпроект 1—3, высвобождая при этом трех человек для случая восьми рабочих и четы* рех для случая девяти рабочих. Для случая восьми рабочих троих свободны-; человек используют для начала выполнения подпроектов 3—6 и 3—4. При девяти рабочих четыре незанятых человека используют для начала выполнения подпроектов 3—в и 2—4. Здесь лежит первое отличие случаев с восемью и девятью рабочими. Продолжая дальше прослеживать следствия этого различия, легко определить, что комплекс работ дли случаев с восемью и девятью рабочими будет завершен в моменты времени, равные соответственно 6J и 68. 5. В модели примера 7D можно было бы реализовать одинаковые наборы условий эксперимента, если бы для каждого источника случайностей в модели использовался сиой генератор случайных чисел. Однако в модели имеются девять источников случайностей (девять блоков ADVANCE) и только восемь генераторов случайных чисел. Другим подходом можно было бы заставить транзакт, выходящий из блока GFNERATE, тут же производить выборку ид девяти соотпетствующик распределений, записывая полученные величины в девять своих параметров. (Такой подход аналогичен подходу, использованному в примере 4 «Сравнение различных дисциплин обслуживания в банке».) При вводе в модель различных потомков (а также потомков этих потомков и т. д.) последние, в свою очередь, наследуют этот набор величии параметров от своих создателей. При этом блоки ADVANCE примут вид «ADVANCE P/»y где / — номер нужного параметра. Обратите внимание, что при таком подходе можно ограничиться только одним датчиком случайных чисел. 6. Эти различия возникли благодаря случайности процесса в том смысле, что при имитации случая с 12 рабочими использовалась другая последовательность случайных величин, чем при имитации случая с 11 рабочими. Если бы у RN1 в начале имитации как случая с 11-ю. так и случая с 12-ю рабочими было одно и то же значение мпожвтеля, то можно было бы ожидать, что элементы во втором, третье» и четвертом столбцах последней и предпоследней строки табл. 7D-2 были бы одинаковыми, если только па пересечении пятого столбла » последней строк» не будет стоять 12. Если бы так произошло, это бы означало, что при Н и 12-ти рабочих последовательность событий не находилась в однозначном соответствии (см. решение упражнении I данного параграфа) и следует полагать, что полученное время выполнения комплекса работ совпадать не будет. Между прочим, в параграфе 7.25 книги после заголовка «Использование модели» ошибочно утверждается, что «одновременно могут быть использованы но более 11-и человек». На самом деле, одновременно могут быть заняты 14 человек. Такая ситуация может возникнуть, если одновременно будут выполняться аодлроекты 2—6, 2—4 it 6—7. Исследование времен заасршеяия подпроектов показывает, что такак комбинация выполнения подпроектов, хотя и с малой вероятностью, но осуществима, 7. Из существа модели видно, что транзакт-потомок не сможет занять рабочего до тех пор, пока последний не будет освобожден родителем этого потомка. Ввод блока SPHT между блоками SEIZE и ADVANCE на рис. 7.28 имеет, соответственно, результат «преждевременного» ввода потомка в модель, а именно: в момент времени, когда известно, что потомок будет находиться в цепи текущих событий в заблокированном состоянии. Лучше задержать ввод потомка в модель до тех пор, пока он не будет способен занять рабочего с первой попытки. Это соответствует помещению блока SPLIT на рис. 7.28 между блоками ADVANCE И RELEASE (или между блоками RELEASE и ASSEMBLE). в. Желаемый результат достигается вводом в модель дополнительного блока ADVANCE и двух дополнительных блоков MATCH. Сначала сразу же после блока «BLOK1 MATCH BLOK2» нужно ввести следующие два блока: BLOK3 ADVANCE MATCH 10.4 BLOK4 Затем сразу же за блоком «BLOK2 MATCH BLOK1» следует поставить блок «BLOK4 MATCH BLOK3». (Ковечво можно также поставить блок ADVANCE и между блоками BLOK2 и BLOK4, а не между блоками BLOK1 и BLOK3-) 9.э). Максимальное время задержки в блоке «ADVANCE 50,5» равно 55, тогда как минимальное время задержки в блоке «ADVANCE 70,10» равно 60. Таким образом, можно с уверенностью утверждать, что транэакт- родитель войдет в блок «ASSEMBLE 2» раньше своего потомка, б). Замепа блока «ADVANCE 70,10» па блок «ADVANCE 60,10» понизит минимальное время задержи» в этом блоке до 50. Таким образом, возможным случаем будет являться ситуация, когда потомок опережает своего 568
родителя пря входе в блок ASSEMBLE, что приведет к ошибке исполнения № 415. Возможность такой ошибки на рис- 7.35 можно обойти, заменив блок «MERGE ASSEMBLE 2» блоком «ВШКА MATCH BLOKB» н поставив вместо блока «TRANFER, MERGE» следующие два блока: BLOKB MATCH BLOKA TERMINATE 10. Для решении этого упражнения нужно в каждой из точек А, В и С поместить по два последовательных блока MATCH. Первый блок MATCH в точке А должен в качестве своего сопряженною блока иметь первый блок MATCH в точке В, и наоборот. Второй блок MATCH В точке В должен иметь в качестве своего сопряженного первый блок MATCH в точке С, и наоборот. Наконец, в качестве сопряженного блока ко второму блику MATCH в точке А выступает второй блок MATCH в точке С, и наоборот. (Заметим, что и представленном решении блоки GATE не используются.) 11. Ниже в виде (рнс. УН, а и УМ, б) полной распечатки программы покааана GPSS-модель для этой задачи. В распечатку вставлены подробные комментарии, и логику модели можно понять при рассмотрении только этой распечатки. Ниже приведены некоторые предположения, не вытекающие непосредственно на распечатки. Основная часть модели заключена в сегментах 4 и 5 модели. В этих сегментах транэакты имитируют бригадиров. Бригадиры не работают над сборкой частей; вместо этого они управляют логическим состоянием системы и назначают рабочих для выполнения различных этапов сборки, когда доступны и нужные части, н требуемое число рабочих, а также когда выполнены требования предшествования. Бригадиры осуществляют управление посредством проверки булевых переменных, которые принимают значение «истина» только тогда, когда одновременно выполняется набор условий, необходимых для качала этапа сборки. Сами рабочие имитируются в сегментах 4 я б модели многоканальным устройством POOL, емкость которого равна числу рабочих в системе. Использование элемента «многоканальное устройство» позволяет использовать в булевых переменных атрибут многоканального устройства SNF для проверки наличия доступных рабочих. Использование элемента «многоканальное устройство» приводит также к автоматическому сбору некоторой статистики о рабочих (например, среднее число рабочих, занятых работой, и максимальное число одновременно занятых рабочих). Уровень запаса частей А, В и С отслеживается в ыо- делк посредством использования многоканальных устройств с именами соответственно ASTOK. BSTOK в CSTOK- Интерпретация в каждом случае одинакова: текущее содержимое данного многокавального устройства равна числу единиц соответствующего типа частей яа складе и доступных для использования. Многоканальным устройствам ASTOK, BSTOK л CSTOK сознательно даны большие емкости (100 единиц каждому), что означает, что на складе может находиться практически неограниченное число частей Л, В и С. Доступность частей проверяется булевыми переменными с использованием стандартного числозото атрибута SNE для многоканального устройства или (когда на некотором этапе требуется более одной части данного типа) сравнением атрибута S с требуемым числом частей. Транлакт-бригаднр при необходимости выводит часть со склада посредством входа в блок LEAVE, ссылающийся на рассматриваемое многоканальное устройство; при поступлении же (когда часть прибывает) она помещается на склад посредством входа транзакта в блок ENTER, ссылающийся на соответствующее многоканальное устройство. Прибытие частей происходит и сегментах 1, 2 и 3 модели. В этих сегментах траизакт может рассматриваться как часть, которая помещает сама себя на склад, проходя через блок ENTER. Конечно, Запись уровня запаса могла быть организована иначе, а именно с помощью сохраняемых величии в качестве счетчиков. Преимущество использования многс- кавальных устройств вместо сохраняемых величин в том, что в этом случае автоматически собираются и распечатываются некоторые статнстическис данные, описывающие состояние склада. Например, при использовании элемент» «многокавальиос устройство» обеспечивается вывод таких результатов, как среднее и максимальное число частей в запасе. Дополнительным преимуществом использования многоканальных устройств, а не сохраняемых величин, является то, что время процессора, требуемое для вычисления логического атрибута SNE как части булевой переменной, меньше, чем время, требуемое для определения того, что содержимое сохраняемой величины больше нудя. Последнее, что стоит прокомментировать в модели, касается приоритетов транзактов-брнгадиров. Нрн наличии выбора лучшим вариантом представляется начать следующий этап в соединении, время завершения которого самое меньшее, а не начинать этап в соединении, время завершепия которого больше, или начать первый этап новой сборки, (Цель этой политики — минимизировать число существующих частично завершенных соединений и способствовать возможно более быстрому продвижению законченного продукта к концу линии.) По этой причине транзактам-бригаднрам назначается все больший и больший приоритет по мере их продвижения в модели. Таким образом, чем выше этап соединения, тем выше рапт бригадира (нли бригадиров), задача которого заключается в том, чтобы начать следующий этап соединения, как только позволят ресурсы. Указанная модель приведена дли случая трех рабочих, что соответствует минимальвому требуемому числу рабочих, предохраняющему от необратимого накопления частей на складе- (Для моделирования случая с тремя рабочими среднее число занятых рабочих оказалось равным 2,36.) Если имеется только двое рабочих, то система «жаждет рабочего», а в случве с четырьмя и более рабочими система «жаждет частей». Ответ «трое рабочих» на вопрос, поставленный в упражнении, можно было бы дать непосредственно, исходя из. начальных условий, заданных в самом упражнении, не прибегая к моделированию. Однако легко усложнять опи- сапие системы, введя в задачу больше реальности и сделав при этом более трудным (или просто невозможным) получение необходимых результатов, описывающих поведение системы. 569
SLOCK NUMBER A,B,C,D,E,F,6 BOOLEAN VARIABLE DEFINITIONS *LOC OPERATION A,B,C,D,E(F,6 COMMENTS SIMULATE * * * CONOl « TRUE »> STEP I CAN BE INITIATED CONDI BVARIABLE SNE$ASTOK*S(B$TOKIGEI2*SNF$POOL « * CON02 - TRUE -> STEP 2 CAN BE INITIATED COND2 8VARIABLE SNE$ASTOK*SNE$BSTOK*SNE*CSTOK*SNF$POOL * * CONDU - TRUE «> STEP I» CAN BE INITIATED C0N04 BVARIABLE SN£$BSTOK*SNF$pO«>L ■* * C0ND6 - TRUE -> STEP 6 CAN BE INITIATED CONDc? BVARIABLE SNE$BSTOK*S(CSTOK'GE'2*SNF$FOOI. * STORAGE CAPACITY DEFINITIONS » CURRENT CONTENT « NO. OF A'S CURRENTLY AVAILABLE CURRENT CONTENT - NO. OF В'5 CURRENTLY AVAILABLE CURRENT CONTENT - NO. OF C'S CURRENTLY AVAILABLE CAPACITY - NO. OF WORKERS (FOREMEN EXCLUDED) 1 2 3 If 5 Б 7 8 9 Рис. УМ, AS TO К BSTOK CSTOK POOL *. * * ♦ a STORAGE 100 STORAGE 100 STORAGE 100 STORAGE 3 MODEL SEGMENT 1 GENERATE 15,S ENTER AS ТОК TERMINATE MODEL SEGMENT 2 GENERATE 6,2 ENTER BSTOK TERMINATE MODEL SEGMENT 3 GENERATE 10,3 ENTER CSTOK TERMINATE A'S ARRIVE ADO 1 TO THE NUMBER OF MISSION ACCOMPLISHED A'S AVAILABLE B'S ARRIVE ADD 1 TO THE NUMBER OF B'S AVAILABLE MISSION ACCOMPLISHED C'S ARRIVE ADD I TO THE NUMBER OF MISSION ACCOMPLISHED C'S AVAILABLE CARD . NUMBER 1 2 3 w 5 6 7 8 9 10 11 12 13 l<t 15 16 17 18 19 20 '21 22 2U 25 26 27 28 29 30 31 32 33 3<i 35 36 37 38 39 40 ill 570
MODEL SEGMENT k 19 И 1Z 13' 1*. IS 16 17 IS 19 20 21 22 25 2u 2S 26 27 28 29 30 31 32 3} 34 35 36 37 38 GENERATE MAKED TEST E* PRIORITY" « SPLIT LEAVE LEAVE ENTER PRIORITY ADVANCE ' LEAVE DPATH MATCH ENTER PRIORITY ADVANCE LEAVE TEST E LEAVE ENTER PRIORITY ADVANCE ADVANCE LEAVE TEST E LEAVE LEAVE ENTER - ADVANCE LEAVE . TERMINATE BVtCDNDlyl 1,MAKEE ASTOK BSTOK,2 POOL 2 15,3 POOL EPATH POOL 3 5,2 POOL BV$COND4,l 6STOK POOL 4 10,2 POOL BV$COND6,l BSTOK CSTOK,2 POOL «,3 POOL 1 PROVIDE A PRODUCT FOREMAN WHENEVER THE NEXT ASSEMBLY CAN BE INITIATED WITH STEP .1 WAIT UNTIL STEP 1 CAN BE STARTED BOOST PR SO LATER OFFSPRING-FOREMAN WILL BE THE NEXT TO INITIATE A STEP 2 SEND A FOREMAN TO START STEP 2 ASAP GET 1 A GET 2 B'S GET A WORKER BOOST PR FOR STEP 3 TO COME TIME FOR STEP 1 ELAPSES FREE THE WORKER WAIT FOR STEP 2 COMPLETION (IF NECESSARY) SO STEP 3 CAN BEGIN GET A WORKER BOOST PR FOR STEP 4 TO COME TIME FOR STEP 3 ELAPSES FREE THE WORKER WAIT UNTIL STEP 4 CAN BE STARTED GET 1 8- GET A WORKER BOOST PR FOR STEP б ТО COME TIME FOR STEP 4 ELAPSES TIME FOR STEP 5 ELAPSES FREE THE WORKER WAIT UNTIL- STEP 6 CAN BE STARTED GET 1 В GET 2 C'S GET A WORKER TIME FOR STEP 6 ELAPSES -FREE THE WORKER THIS ASSEMBLY IS DONE 43 44 45 46 47 48 49 50 51 SZ 53 54 55 56 57 58- 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 39 40 41 42 43 44 45 46- 47 48 49 50 MODEL SEGMENT S GENERATE MAKEE TEST E PRIORITY SPLIT LEAVE LEAVE LEAVE ENTER ADVANCE LEAVE EPATH MATCH BV$C0№2,1 1. 1, МАК ED ASTOK 8ST0K CSTDtC POOL POOL DPATH TERMINATE jCONTROL CARDS START END 500 PROVIDE A PRODUCT FOREMAN WHENEVER THE ffEXT ASSEMBLY CAN BE INITIATED WITH STEP 2 WAIT UNTIL STEP 2 CAN BE STARTED BOOST PR SO LATER OFFSPRING-FOREMAN WILL BE THE NEXT TO INITIATE A STEP 1 SEND A FOREMAN TO START STEP 1 ASAP • GET 1 A GET I B GET 1 С GET A WORKER TIME FOR STEP 2 ELAPSES FREE THE WORKER WAIT FOR STEP 1 COMPLETION (IF NECESSARY) SO STEP 3 CAN BEGIN THIS FOREMAN IS NO LONGER NEEDEO START THE SIMULATION. RETURN CONTROL TO THE OPERATING SYSTEM 77 78 79 80 81 82 83 84 85 86 67 88 89 90 91 92 93 94 95 96 97 98 99 Рис. УН, б 571
КОММЕНТАРИИ К РАСПЕЧАТКАМ ПРОГРАММ, ПРИВЕДЕННЫК В РЕШЕНИЯХ ЗАДАЧ К ГЛАВЕ 2 Продолжение Но- карты Комментарии Номер карты Комментарии Рис. У7, о: Сегмент 2 модели Приход рабочих Отметиться в очереди Занять кладовщика Отметить выход из очереди Интервал времени обслуживания Освободить кладов- шнка Покинуть кладовую Рис. У2, а: Сегмент I модели Определить начальное состояние для печи Переход ив занятие печи Определить наличие еще трех сборщиков Рис. У2, б: Рис, У4: Сегмент 1 модели Определить одного оператора машины Злиять кран Вытащить новую деталь Установить деталь в машине Освободить кран Фаза 1 полировки Отметиться в очереди к крану Занять кран Отметить выход из очереди Поворот детали я машине Освободить кран Фаза 2 полировки Сегмент 1 модели Определить сборщике I Немедленно занкть печь Оставляется иреыя пользования печью 3 мнн Переход для освобождения печи Определить сбор- шика 2 Идти на занятие печи 13 15 16 18 20 21 9 10 11 17 11 12 13 14 16 16 17 18 19 17 18 19 20 21 22 24 26 27 28 Сегмент 2 модели Таймер приходит через 8 ч Завершение моделирования Управляющие карты Начать моделирование Вернуть управление п операционную систему Сборка очередной детали Занять печь Пользование печью Освободить печь Переход ив новую сборку Определить сбор» шика 3 Оставшееся время сборки 10 мин Идти на занятие печи Определить сборщика 4 Сборка очередной детали Занять печь Пользование печью Освободить печь Переход на новую сборку Отметиться в очереди к краиу Занять кран Отметить выход из очереди Вытащить обработанную деталь Уложить обработанную деталь Перейти на выборку следующей детали Сегмент 2 модели Другие виды обслуживания Исключить задержку Получить кран Номер карты 29 30 31 33 35 36 ■ ' Комментарии Пользование краном Освободить кран Обслуживание завершено Сегмент 3 модели Таймер приходит через 400 ч Завершить моделирование ПО- Мер кпр1ы 38 40 41 Комментарии Упрапляющие карты Начать моделирование Вернуть управление в операционную систему Рис. УН: 3 5 6 7 9 11 12 13 14 15 16 17 Определение емкостей устройств Определить одно место па площадке между станциимн Определить три канала станции Точное значение загрузки станции 1 Сегмент 1 модели Поступления машин Отметиться в очереди 1 Занять канал станции I Отметить вихоД из очереди 1 Изменить статистику занятости станции 1 Обслуживание па станции 1 Изменить статистику занятости станции Рнс. У1б: 18 19 20 21 22 23 24 25 26 28 30 31 3 5 6 7 9 11 12 13 14 15 16 17 18 19 Определение емко- 1 стеи многоканальных устройств Задать шесть причалов для кораблей типа 1 Задать трн причала для кораблей типа 2 Определить наличие двух буксиров Сегмент 1 модели Приход кораблей типа 1 Отметка прибытия в порт Занять причал Получить буксир J Ввод корабля в порт Освободить буксир Разгрузка корабля , Получить буксир Отчаливание и вывод из порта 2? 21 23 24 26 28 29 30 31 32 за 34 35 36 Войти, если можно, на площадку Ослободить канал станции 1 Отметиться в очереди 2 Занять прибор станции 2 Отметить выход из очереди 2 Освободить площадку Обслуживание на стаиоин 2 Освободить прибор станции 2 Выйти из системы Управляющие карты Начать моделирование Вернуть управление в операционную систему Освободить буксир Освободить причал (считается, что причал занят до полного выгода корабля из порта) Отметить выход из порта Выйти Сегмент 2 модели Приход кораблей типа 2 Отметка прибытия в порт Занять причал Получить два буксира Ввод корабля в порт Освободить буксир Разгрузка корабля Получить два буксира Отчаливание и выход из порта с?л
Продолжение Продолжение Номер карты 37 38 Комяент&ркк Номер карты Комментарии Номер корты Освободить бук- | 39 сиры | Освободить причал || 40 Рис. У12, о: I 2 3 4 5 6 7 Сегмент I модели Приход клиентов Переход на BYBYE, если нет] свободных мест Иначе присоеди- питьс.н к очереди Если необходимо, то проверить, какой Из двух парикмахерш евоби..-i'H Занять парикмахера Рнс. У12. б: I 2 3 Сегмент 1 модели Приход клиентов Переход на BYBYE, если нет свободного места Иначе присоединиться к очереди Если необходимо, то проверить, какой Ия двух парикмахеров свободен Теиерь использовали имя Рве. У16: 1 2 3 4 5 6 7 8 Сегмент 1 модели Приход клиентов Переход ва THINK, если в Очереди ие хватает места Иначе присоединиться к очереди Занять парикмахе- Выйти из очереди Стрижка К ГЛАВ Е 3 Рис У4: 8 9 10 11 12 13 J4 13 16 8 9 10 1! 12 13 14 15 16 10 И 12 13 14 Отмстить выход нз порта Выйти Выйти из очереди Стрнжка Освободить парикмахера I Уйти из парикмахерской Занять парикмахера 2 Уйти из очереди Стрижка Осиободить парикмахера 2 Уйти из парикмахерской Выйти из очереди Стрижка Освободить парикмахера 1 Уйти из парикмахерской Занять парикмахера 2 Уйти нз очереди Стрижка Освободить парикмахера 2 Уйти из парикмахерской Освободить парикмахера Выйти из парикмахерской Перейти на BYBYE с вероятностью 0,6 Иначе подумай еще Проверь длину очереди Еще раз 3 5 10 12,13 15 Определение функ- i пии Функция экспоненциального распределения Определение емкости устройства Среднее содержимое в NOWON равно числу работающих станков в среднем Сегмент 1 модели 17 18 19 20 21 22 23 24 Определить трех рабочих Ввести станок в действие Станок находится в работе Станок выходит из строя Занять монтера Ремонт станка Освободить монтера Станок снова готоп к эксплуатации Комментарии Номер карты Комментарии РИС. У2: 3 5 2,7 9 12 14 15 16 17 18 19 20 22 24 25 27 29 Рнс. У 1 2 3 4 5 6 7 8 к гл Рнс. У1 Задать начальные значения множителей генераторов случайных чисел Установить нестандартное значение множителя Определение функции Врем» обслуживания для кладовщика за 4 доллара Сегмент 1 модели Приход рабочих Отметиться в очереди Занять кладовщика Отметить выход из очереди Обслуживание Освободить кладовщика Уйти из кладовой Сегмент 2 модели Таймер приходит через 8 ч Запершить моделирование Управляющие карты Моделирование первого дия 4: Сегмент 1 модели Приход автомобилей Если площадка занята, перейти на PAUSE Иначе въехать на площадку Занять моечную машину Выехать с площадки Автомобиль обслуживается моечной машиной Освободить моечную машину АВ Е 4 3,й: 30 31 32 33 34 35 36 37 38 39 40 41 42 1 ( 9 10 11 12 13 14 15 16 Очистка для второго дня Установка множителя Для RN2 второго ДНЯ Моделирование второго дня Очистка для третьего дия Установка множителя RN2 третьего дня Моделирование третьего дня Очистка для четвертого ДНЯ Устдвовка множителя RN2 четвертого ДНЯ Моделирование четвертого дня Очистка для первого дня Установка множителя RN2 пятого дня Моделирование питого дни Вернуть управление, в операционную систему Выйти нз системы Здесь ждать освобождения машины При стандартной дисциплине обслуживания FIFO Занять моечную ма- шнву Получить от RNI значение Время занятия машины нулевое Освободить моечную машину Выйтя пэ системы Определение функ- | Ю ПИИ I Распределение интервалов времени II 12 прихода кораблей I Определение емко- 14 стей устройств Определить наличие двух причалов 15 комплекса I [ Определить пали чие шести причалов комплекса 2 Определение таблиц Таблица ожидания современных кораблей Таблица ожидания старых кораблей 573
Продолжение Продолжение к Номер Карты 17 19 20 21 22 23 24 26 27 28 29 30 31 32 33 Комментарии Сегмент 1 модели Приход кораблей Передать старые корабли Занять причал комплекса 1 Занять буксир Установить Р1 равным имеющейся задержке (если есть) Освободить буксир Разгрузка-нагрув- ка Установить Р2 равным таймеру абсолютного времени Занять буксир Установить PI равным Р1 илюс время второй задержки Табулировать время суммарной задержки Освободить буксир Освободить причал Выйти из порта Номер карты 34 35 36 37 Ч 39 40 41 42 j 43 44 45 46 47 Комментарии Занять причал комплекса 2 Занять буксир Установить Р1 равным имеющейся задержке (если она есть) Буксировка к причалу Освободить буксир Разгр узка-погр узка Установить Р2 равным таймеру абсолютного времени Занять буксир Установить Р1 равным Р1 плюс время второй задержки Табелировать время суммарной задержки Буксировка от причала Освободить буксир Освободить иричал Выйти из порта Рис. У8, б: 11 14 16 17 19 21 22 24 26 Определение функций Распределение интервалов времени прихода кораблей Среднее значение времени погрузки» разгрузки Модификатор размаха времени погрузки-разгрузки Кодировка кораблей: 1 — современные; 2 — старые Определение емкостей устройств Определить наличие двух причалов комплекса 1 Определить наличие шести причалов комплекса 2 Определение таблиц Таблица ожидания дли современных кораблей Таблица ожидания для старых кораблей Сегмент 1 модели Приход кораблей 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 Рис У8, в: Определение функции Распределение времени разгрузочных работ для современных Установить Р1 равным коду корабля Занять причал Занять буксир Установить Р2 равным времени задержки (если оив была) Буксировка к причалу Освободить буксир Установить РЗ равным модификатору размаха погрузки- разгрузки Нагрузкз-р азгруз- ка Установить РЗ равным таймеру абсолютного времени Занять буксир Установить Р2 равным Р2 плюс время второй задержки Таблнровать время суммарной задержки Буксировка от причала Освободить буксир Освободить причал Выйти из порта Распределение времени разгрузочных работ для старых кораблей Номер карты 9 11 13 15 18 20 21 23 25 26 28 30 31 Комментарии Распределение времени подхода к причалу Распределение времени отхода от иричал а Распределение ин- тервалов времени прихода нораблей Код корабля: 1 — современный; 2 — старый Определение емкостей устройств Определить два причала комплекса 1 Определить шесть причалов комплекса 2 Определение таблиц Таблица ожндаикя для современных кораблей Таблица ожидания для старых кораблей Сегмент 1 модели Приход кораблей Установить Р1 равным коду корабля Номер карты 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 Комментарии Установить Р2 равным времени разгрузочных работ Установить РЗ рав- иым времени подхода к причалу Установить Р4 равным времени отхода от причала Запять причал Запять буксир Установить Р5 равным времени задержки (если она есть) Подход к причалу Освободить причал Разгрузочные работы Установить Рб равным таймеру абсолютного времени Занять буксир Установить Р5 равным времени второй задержки Табулировать время суммарной задержки Отход от причала Освободить буксир 1 Освободить причал [ Выйти из порта Упражнения 5.24 Рис. У9: 3 5 11 16 18 20 22 23 25 27 28 29 3Q Определение функций Функция стандартного нормального распределения Функция экспоненциального распределения Инициализация сохраняемых величин Задать случай трех запасных деталей Определение переменных Распределение времени жизнн детали Распределение времени ремонта детали Сегмент 1 модели Ввести все детали Ждать, пока не понадобится деталь Закрыть клапан NEED Происходит вставление детали 31.32 33 36 37 10 42 44 45 46 47 48 49 Включить станок (прибор используется для измерения коэффициента использования) Продолжительность времени жизни детали Открыть клепан NEED для следующей детали Занять механика Деталь снова годна для использования Сегмент 2 модели Прибытие других неисправных изделий Во избежание искажений времени между прибытиями Запить механика Идет ремонт Освободить механика Отремонтированная деталь покидает модель 574
Продолжение Продолжение Покер карты 51 53 54 56 Комментарии Сегмент 3 модели Таймер приходит через 5 лет Прекратить моделирование Управляющие карты номер карты 58 59 Комментарии Начать моделирование Передать управление операционной системе Упражнения 6.4 Рнс. У7: 11 16 18 19 20 22 24,25 Определение функций Установить соответствие между приоритетом и типом детали Установить соответствие между типом детали и средним временем обслуживания Установить случайный закон назначения приоритета иоступающнх деталей Экспоненциальная функция распре деления Определение таблиц Таблица времен пребывания деталей 1-го типа Таблица времен пребывания деталей 2-го типа Таблица времен пребывания деталей 3-го типа Определение пере мениых Истина, есля ожидающая деталь может попасть на обслуживание или 26 28 30 31 32 33 34 35 36 37 38 39 40 42 44 45 попала в разряд «критических» Добавить 3 к приоритету «критической детали» Сегмент 1 модели Прибытие деталей Положить Р1 равным типу детали Ожидать возможности дальнейшего продвижения Занять станок, если возможно В противном случае повысить приоритет Занять станок Завершение обслуживания имеет низкий приоритет Идет время обработки детали Освободить станок Протабулировать время нахождения детали в цехе Обработанная деталь покидает цех Управляющие карты Моделирование для 100 деталей Передать управление операционной системе Упражнения 6.7 Рис. У5, а: 3 5 11 16 18 20 22 Определение функций Стандартное нормальное распределение Экспоненциальное распределение Определение иере- мепных Распределение времени приноса книг Сегмент 1 модели Прибытие посетителей 23 24 25 26,27 28 Встать в очередь Ждать освобождения библиотекаря Выйти из модели, если в группе не последний Последний в группе, установить Р1 рапным числу читателей в данной группе Занять библиотекари групповым запросом Номер карты 29 30 31 32,33 34 1 Комментарии Установить низкий приоритет для завершения обслуживания Идет время поиска Освободить библиотекаря Все запросы группы удовлетворены, вс» груипа выходит из очереди Уменьшить на Р1 Помер карты 36 38 39 Комментарии счетчик числа эа- прршениД Управляющие карты Остановиться, когда число обслуженных читателей больше или равво 100 Передать управление операционной системе Рис. Уб, б: Определение функции Стандартное нормальное распределение 11 Экспоиепциальиое распределение 16 Определение переменных 18 Распределение времени приноса книг 20 Сегмент 1 модели 22 Прибытие посетителей 23 Встать в очередь 24 Ждать освобождения библиотекаря 25 Выйти из модели, если в группе не последний 26, 27 Последний в группе, установить Р1 равным числу читателей в данной группе 28 Занять библиотекаря групповым запросом Упражнения 6.15 Рис. У4, а, б: ' 29 30 31 32,33 34 36 38 39 Устаповить низкий приоритет для завершения обслуживания Идет время поиска Освободить библиотекаря Все запросы группы удовлетворены, вся группа выходит из очереди Уменьшить на Р1 счетчик числа завершений Управляющие карты Остановиться, когда число обслуженных читателей больше или равно 100 Передать управление операционной системе 3 5 6 7 8 10 12 Установление экви- | валентности Сохраняемая величина для записи времени жизни детали типа Л Сохраняемая величина для записи времени жизни детали типа В Если взведен А, вставлена и начата работа Если взведен В, вставлена и начата работа Определение функций Время ремонта детали типа В 15 18 25 30 32 33 Номер параметра с «большим временем жизни» Стандартная нормальная функция распределения Экспоненци ал ьпое распределение Задание начальных значений сохраняемым величинам Положить число запасных деталей типа А рапным 0 для перного прогопа Положить число запасных деталей типа В равным 0 для первого прогопа 575
Продолжение Продолжение Номер нарты 34 36 38 39 40 41 43 45 46 47 48 49 50 51 52 33 54 55 56 57 58 59 61 63 | Комментарии Замечание: указанные выше карты INITIAL даются только в целях наглядное™ Определение переменных Истина, когда станок может работать Время жизни детали типа А Время жизни детали типа В Время ремонта детали тала А Сегмент 1 модели (сегмент, в котором циркулируют детали типа Л) Обеспечить начальную деталь типа А в стайке Перейти к первому запуску станка Ввести запасные детали типа А Ожидать, пока понадобится деталь типа А Звкрыть хлапап для оставшихся деталей типа А Вставить деталь типа А Установить 1 X$ALIFE равным времени жизни детали Отметить, что деталь типа А готова к работе Ожидание отказа детали типа А Вытащить сломанную деталь типа Л Указать, что требуется другая деталь типа А Запять механика Идет ремонт Освободить механика Деталь готова к повторному использованию Сегмент 2 модели (сегмент, в котором циркулируют детали топа В) Обеспечить начальную деталь типа В п станке 1 1 Но- пер I картм 64 65 66 67 68 69 70 ' 71 1 72 1 74 1 75 76 77 79 81 82 83,84 85 86 87 88.89 90 91 Комментария Перейти к первому запуску станка Ввести запасные детали типа В Ожидать, пока понадобится деталь типа В Закрыть клапан для оставшихся деталей типа В Вставить деталь типа В Установить X$DL1FE равным времени жизни детали Отметить, что деталь типа В готова к работе Ожидание отказа детали Вытащить сломанную деталь типа В Занять механика Идет ремонт Освободить механика Деталь готова к повторному использованию Сегмент 3 модели (сегмент, где циркулирует станок- яаблюдатель) Ввести наблюдателя Ожидать, пока станок будет работоспособен Положить РЗ равным номеру сохраняемой величины. в которой записано наименьшее время жизни Включить станок Продолжительность наименьшего времени жизни Выключить станок Иэмепить оставшееся время Жизни неоткаэавшей детали Указать, какая именно деталь отказала Перейти к ожиданию нового запуска станка Упражнения 6.20 Рве У4, б: 3 11 14 16,17 18, 19 20,21 23 25 26,27. 28 29,30 Задание множителей для генераторов случайных чисел Определение функций Распределение времени сборки Распределение времени обжига Определение пере мекных Число пользователей печью при конфигурации Р1 Необходимое число дополнительных сборщиков при кои- Фигурации PI редкая дпевиая выручка для конфигурации Р1 Сегмент 1 модели Загрузка сегмента Ввести по 1 трап- |j закту иа конфигурацию (величина Р1 = 1. 2, 3 соответствует случаям 4, 5 н 6 сборщиков) Положить Р2 = 4, 5 нлн 6 для дальнейшей косвенной адресации 31,32 33 34 35 36 37 39 41 42 43.44 45 47 49 50 Обеспечить для каждой конфигурации оставшееся количество сборщиков Идет время сборки Запять печь Идет обжиг Освободить лечь Перейти к следующем сборке Сегмент 2 модели Приход таймера спустя 5 дней Обеспечить по 1 трапзакту на конфигурацию Вычислить и аапи- сать соответствующую прибыль для каждой конфигурации Покинуть систему, счетчик числа завершений уменьшается на I Управляющие кар- TV* Начать моделирование Передать управление операционной системе Рис. У7. а—г: 3 5 6 7 8 10 12 13 14 15 17 19 Словарь сокращений, используемых в тексте Дост. — доставка 1 К-р — контейнер Треб требуемый Тр-кт — трапзакт Установление эквивалентности X$IDNOM равно числу грузовиков. сгрузивших к-ры на данный момент ХЦ.АТЕ равно числу дней ожидания при доставке текущего к-р а X$REVNU равно доходу за текущий день XSTRKMI равно числу грузовиков минус 1 Определение функции Среднее число к-роз в утренней группе 22 25 28 31 34 37 40 47 . Стандартное отклонение чнела к-ров и утренней группе Время начала пере puna в середине дяя Среднее время доставки к-ра машиной Время начала следующей половины дня Среднее число к-ров в вечерней группе Стандартное отклонение числа к-ров а вечерней группе Стандартная нормальная функция распределения Задание начальных значений сохраняемым величинам Сконфигури ровать для случая пяти грузовиков R7A
Продолжение Продолжение Номер карты Комментария Номер карты Комментария Номер карты Комментария Номер карта Комментарии Определение емкости многоканальных устройств Фиктнаное многоканальное устройство для измерения использования грузовиков Определение таб- лип Затраты времени иа доставку к-ров на первый склад Затраты временя на доставку к-ров на второй склад Затраты времени на доставку к-ров ва третий склад Затраты времени на доставку к-ров на четвертый склад Затраты временя на доставку к-ров и а пятый склад Затраты времени на доставку к-ров на шестой склад Затраты времени иа доставку к-ров иа седьмой склад Затраты временв на доставку к-ров иа восьмой склад Дневной доход минус стоимость грузовиков Определение переменных V$AMNUM равно числу к-ров в дневной группе VSCLOCK равно времени суток текущего дня VJDAY равно номеру текущего дня BV$DUBL равно «истина» не начинать сейчас другую доставку V$LATE рапно числу дней задержки при доставке данного контейнера V$NET равно доходу за текущий День минус стоимость грузовиков V$PMNUM равно числу к-ров в вечерней группе Заметим, что для этого лабора данных FN$PMDEV = I, к поэтому на самом 92 95. 96, 97 99 100 101 102. 103 104. 105 107 108 109 ПО, 111 112 113, 114 116 116. 117 118, 119 деле не нуждается в выражении, определяющем пере меиную VSREVNU равно расходам, которые несет данный грузовик после определения задержки в доставке Сегмент I модели {сегмент, через который проходят тр-кты, имитирующие группу контейнеров; каждый тр-кт представляет все к-ры н данной группе (утренней или вечерней) дли данного склада] Главный тр-кт прибывает ежедневно в 8 ч утра Положить Р2 равным номеру для прибытия По одному тр-кту на склад Р1 равно номеру склада Р4 равно числу к-ров в данной утренней группе для склада с номером Р1 Перейти к участку, общему для дневных и вечерних груил Главный тр-кт прибывает ежедневно в 1 ч дня Положить Р2 равным номеру дня прибытия По одному тр-кту на склад, PI равен комеру склада Р4 равно числу к-ров в данной вечерней группе для склада с номером Р1 Выйти, если в данной группе нет к-ров Иначе изменить число к-роь на грузовой платформе склада Р1 Ожидать грузовика на складе Р1 Положить X (Р1) = = 0 -* грузовик приходит за этими контейнерами РЗ равен номеру 120 121, 122 123, 124 125 126 127 129 131 132 133 134 135, 136 137 138 139, 140 141, 142 143 144 145, грузовика, забирающего эту группу контейнеров Ожидание следующей разгрузки контейнеров Закрыть клапан. пока грузовик не будет готов сгрузить контейнеры Положить X$LATE равным числу дней, на которые данный хон- тейиер опоздал с доставкой (если они есть) Таблица затрат времени при доставке даппого к-ра Если в данной группе есть еще к-ры, сделать цикл В противном случае выйти из модели Сегмент 2 модели (сегмент, где проходят транзакты- груэовики) Ввести основной грузовик Р2 равен времени начала первой половины дня Подготовить РЗ для сериального расщепления Ввести остальные грузовики РЗ равен номеру грузолика (1, 2, 3-й, ... пронумерованы как 9. 10, 11, .О Ждать, пока не пот- негся следующая половина дня Изменить число используемых грузовиков Перейти к MORE, если данный грузовик уже нагружен к-рами дли доставим В противном случае найти наибольшее число к-ров для погрузки Р4 ранен числу к-ров в следующей погрузке Уйти пустым, если ни иа одном складе нет к-ров В противном слу- 146 147 148, 149 150 151 152 153 154 155, 156 157 158 159. 160 161 162 163 164, 165 166 167 168 170 чае открыть клапан для группы контейнеров на складе Р1 X$IDNUM равен номеру этого грузовика Возобновить просмотр для продвижения группы контейнеров со склада Р1 вперед Вновь закрыть клапан Р5 равен времени начала расхода Грузовик едет на склад Грузовик едет к следующей точке выгрузки к-ров Открыть клапан выгрузки для этого грузовика Возобновить просмотр для продвижения одной группы к-ров через клапан выгрузки для этого грузовика Накопление штрафа за опоздание в доставке (если есть) Изменить число к-ров, еще находящихся на грузовике Перейти к началу следующей доставки, если грузовик не пуст илн не будет перерыва Иначе зз писать расходы за только что проделанные доставки Сбросить пакопи- тель штрафов для грузовика Поехать назад на диспетчерский пункт Если не наступил перерыв, перейти к проверке, есть ли еще работа Иначе изменить число используемых грузовиков Р2 равен времени начала следующей половины дня Ожидать начала следующей половины ДНИ Р5 равен времени начала расходов '37 т. Дж. Шрайбер 577
Продолжение Продолжение Номер карты 171. 172 174 176 177 178 Комыевтарян Перейти к возобновлению доставки к-ров, находящихся еще на грузовике Сегмент 3 модели (сегмент таймера) Ежедневный приход таймера-табулятора в 6 ч вечера Вычислить чистый дневной доход Вновь обнулить накопитель прибыли 1 Но- иер | карты 179 181 183 184 Комментария Уменьшить счетчик числа завершений Управляющие карты Установить ежедневную выдачу результатов в течение 10 дней Передать управление операционной системе Упражнения 7.11 Рис. У13, а: Определение функции Отображение связи приоритета с требующимся средним временем обслуживания Сегмент 1 модели Приход операторов 1-й категории Р1 равен PR Р2 равен разбросу времени обслуживания Встать в очередь Пойти к кладовщику, если он сво- бодеп, иначе присоединиться к цела Занять кладовщика Выйти из очереди Идет время обслуживания Освободить кладовщика Послать на занятие следующего оператора (если есть) Рис У13,б: Определение функций Отображение связи приоритета с требующимся временем обслуживания Сегмент 1 модели Приход операторов 1-й категории Р1 равен раабросу времени обслуживания Встать в очередь Пойти к кладовщику, если он свободен; иначе присоединиться к цепи 20 22 24 25 26 27 29 31 32 34 36 37 14 15 16 17. 18 19 20.21 Уйти из инструментального склада Сегмент 2 модели Приход операторов 2-й категории Р1 равен PR Р2 равен разбросу времени обслуживания Перейти к общей последовательности блоков Сегмент 3 модели Приход таймера в конце восьмичасового дня Завершить моделирование Управляющие карты Начать моделирование Передать управление операционной системе < Занять кладовщика Выйти из очереди Идет время обслуживания Подождать обработки события прихода (если будет) Освободить кладовщика Послать на занятие оператора 2-й категории (если есть), иначе перейти к попытке послать оператора 1-й категории Номер карты 22 23 24 25 27 29 30 31 32 Комментарии Уйти из инструментального склада Послать на занятие следующего оператора 1-й категории Уйти из инструментального склада Встать в цепь пользователя для 1-й категории операторов Сегмент 2 модели Приход операторов 2-й категории Р1 равен разбросу времени обслуживания Встать в очередь Пойти к кладовщику, если он свобо- 1 Номер карты 33 34 36 38 39 41 43 44 Комментарии деи, иначе присоединиться к цепи Перейти к общей последовательности блоков Встать в цепь пользователя для 2-й категории операторов Сегмент 3 модели Приход таймер» в конце восьмичасового дня Закончить прогон Управляющие карты Начать прогон Передать управление операционной системе Рис. У16: 3 И 14 16 17 19 21 22 25,26 27 28 29 30 Определение функций Экспоненциальная функция распре деления Распределение числа пассажиров, ожидающих прибытия автобуса Распределение числа пассажиров, сходящих с автобуса Определение таблиц Время, проведенное в ожидании на остановке автобуса Число пассажиров, не обслуженных автобусом Сегмент 1 модели Приход пассажиров на остановку автобуса Присоеди ниться к очереди Есть ли еще место в автобусе? Если нет, уйти Забраться в автобус Изменить число пассажиров в автобусе Этот пассажир закончил посадку Изменить счетчик ушедших 31 33 35 36 37 38 39 40 41 47 48 50 52 53 Пассажир уходит Сегмент 2 модели Автобус приходит каждые 30 мин Любая задержка здесь означает, что автобус опаздыпэст Положить X$NOWON равным числу пассажиров в автобусе PI равен числу желающих сойти Сходит следующий пассажир Изменить число пассажиров в автобусе Вернуться, чтобы дать возможность сойти следующему пассажиру (если таковой есть) Обнулить счетчик ушедших Автобус уезжает Управляющие карты Начать прогон Передать управление операционной системе 578
Продолжение Продолжение Номер карты Комментарии Номер карты Комментарии Упражнения 7.13 Рис. У2: Ооределение функций Установить соответствие между —PR и средним временем обслуживания Установить соответствие между —PR и типом детали Установить случайный закон назначения приоритета поступающих деталей Экспоненциальное распределение Опреаелевне таблиц Таблица времен пребывания деталей 1-го типа Таблица времен пребывания деталей 2-го типа Таблица времен пребывания деталей 3-го типа Определение переменных Истина, если рассматриваемая деталь «критическая* Сегмент 1 модели Прибытие деталей 29 30 31 32 33 34 35 36, 37, 38 39 40,41 42 45 46 47 Р1 равен —PR Если можно, пойтн на занятие, иначе встать в цепь Занять станок Завершение обслуживания имеет низкий приоритет Идет время обработки детали Освободить станок Протабулировать время нахождения детали в цехе Послать на занятие стайка «критическую» деталь (если таковая имеется), иначе перейти к выбору некритической детали Обработанная деталь покидает цех Послать на занятие некритическую деталь (если она есть) Обработанная деталь покидает цех Управляющие карты Начать моделирование Передать управление операционной системе Рис. У5: 2 4 10 15 17 19 21 24 28 30 35 Определение функций Стандартная нормальная функция распределения Экспоненциальная функция распределения Определение емкости многоканальных устройств Установить емкость многоканального устройства для прогона с тремя библиотекарями Определение таблиц Время, проведенное у стола выдачи Определение переменных Сегмент 1 модели Приход читателей к столу выдачи Уйти от стола вы- 37 39 40 42 43,44 47.48 49 50 51 52 дачи Сегмент 2 модели Ввести грех библиотекарей Р1 равен порядковому номеру библиотекаря Да: войти в состояние занятости Связать порядковый номер библиотекаря с читателями, ждущими обслуживания Возобновить просмотр для обработки ныпеденных из цепи транааетов- чктателей Записать число взятых листков Уйти в хранилище Найти книги Вернуться на хранилища Номер карты 53 55,56 57 Комментарии Закончить обслуживание следующего читателя Вернуться для завершения обслуживания следующего читателя (если таковой есть) Иначе библиотекарь освобождается | Номер j карты 58 60 62 Комментарии Перейти к началу следующего цикла обслуживания Управляющие карты, переопределение операндоо блоков н емкостей многоканальных устройств Начать прогон для трех библиотекарей Упражнения 7.30 Рис УМ, а, б: 3 5 8 11 14 17 19 20 21 22 25 27 28 29 31 33 34 35 37 39 40 41 43 Определение булевых переменных CONDI-истина -*■ можно начать 1-й этап; СОШ2-истина -»• можно качать 2-й этан СОЫШ-истина -+ можно начать 4-й этап COND6-HCTHHa -»■ можно начать 6-й этап Определение емкостей многоканальных устройств Текущее содержимое, равное числу доступных частей А Текущее содержимое, равное числу доступных частей В Текущее содержимое, равное числу доступных частей С Емкость равна числу рабочих (не считая бригадиров) Сегмент 1 модели Приходят части А Добавить I к числу доступных частей А Дело сделано Сегмент 2 модели Приходят части В Добавить 1 к числу доступных пастей В Дело сделано Сегмент 3 модели Приходят части С Добавить 1 к числу доступных пастей С Дело сделано Сегмент 4 модели 45,46 47 48,49 50 51 52 53 54 55 56 57,58 59 60 61 62 63 64 65 66 67 68 69 70 71 Ввод бригадира проекта всякий раз, когда можно начать следующее соединение с 1-го этапа Ждать, пока можно начать 1-й этап Увеличить приоритет, так как позже бригадир-потомок будет jew, кто начнет 2-й этап Послать брнгаднра начать по мере возможности 2-й этап Взять 1А Взять 2В Взять рабочего Поднять приоритет для последующего 3-го этапа Идет время 1-го этапа Освободить рабочего Ждать (если нужно) завершения 2-го этапа, чтобы начать 3-й этап Взять рабочего Поднять PR для 4-го этапа Идет время 3-го этана Освободить рабочего Ждать, пока можно начать 4-й этап Взять 1В Взять рабочего Поднять PR для fi-го этапа Идет время 4-го этапа Идет время 5-го этана Освободить рабочего Ждать возможности начать 6-й этап Взять 1В 37* 579
Продолжение Номер карты 72 73 74 75 76 78 80,81 82 83,84 Комментарии Номер карты Взять 2С А 85 Взять рабочего | Идет время 6-го | „- этапа U jj° Освободить рабо- | дд чего | да Это соединение за- | 90 вершено | Сегмент 5 модели | 91 Ввод бригадира | проекта всякий Л 92, 93 раз, когда нужно | начать следующее | соединение со | 2-го этапа | Подождать воз- Л можностй - начала U ад 2-го этапа 1 яо Поднять PR. так 1 gg как позднее брига- Я дир-потомок будет | 99 тем, кто начнет П 1-й этап U Конкмггарин Послать бригадира начать 1-й этап по мере возможности Взять 1А Взять 1В Взять 1С Взять рабочего Идет время 2-го этапа Освободить рабочего Ждать (если нужно) эапершения 1-го этаиа, чтобы можно было начать 3-Й этап Этот бригадир больше не нужен Управляющие карты Начать моделирование Передать управление операционной системе
Указатель использования свойств GPSS в примерах моделирования Свойстоа GPSS Блоки1 ASSEMBLE ASSIGN BUFFER GATE MARK PRIORITY SELECT SPLIT TEST TRANSFER: безусловный режим ВОТН-режнм статистический режим Элементы * Логические переключателя Многоканальные устройства Очереди Переменные: булевские действительные Пример 2А + целые I го + 2С + т 2D + 2Е + + 2F + + •1- + ЗА + 3D + + зс + 4А + 4В + + + + 4С + ■tE + + + + + + SA + -г- 5D + + + + + 5С + + + + 5Е + + + + + + i "Г + 6Е + + 1 "Г 6Л + + + + + + + + 6В + + + + + + + + + 6С + + ~г + «U + + + + 6Е + + + + + -Н + -1- 7Л + + + + + 711 + + 1 + + 7С + + + + + + + 7D + + + + + 581
Продолжение Свойства CF'S? Приборы Сохраняемые величины типа: векторного матричного Таблицы: взвешенные неззвешенные Функции тала: С D L М Цепи пользователя Управляющие карты : CLEAR EQU RESET RMULT Пример 2А + 2В + 2С + iV + 2Е гг- + ЗА + + + зв зс + 1 + + + + + А4 + + 4В + + + 4С 4D + + + + ЬА + + + 6В + + + + + + 5С + + + + + 5D + + + + 6Т=1 вА + + + + + + 6В + + + + + + 6С + + + + + 611 + + + + + + + ъь + + + + 7А + + + + + 7В + + + 7С i -г + + 4- 7D + + 1 Использование блока ASSIQN подразумевает использование параметров траиэакта. * Блока, соогветствуюшие элемента*, не укачаны. Например, поскольку под заголовком «Элементы» находите* очереди, под заголовком «Блони» блоки QUEUE и DEPART не приведены. Блоки GENERATE. ADVANCE и TERMINATE пспользуется в наждои ирв- мере, поэтому они также исклювенм из приведенного перечня блоков. ' Управляющие карты 51MULA1TE, START и END используются в каждом примере, поэтому их пе ввели в этот перечень. Карты REALLOCATE и JOB не былк использованы ни в одном примере.
Абсолютное аремя, 62 влияние карты CLEAR, 103 влияние карты RESET, 121 значение, через блок MARK, 233 использование для вычисления времени пребывания, 231 использование для вычисления премеии прохождения, 232 пример, в выдаче результата, 60 Адресация данных см. Непосредственное определение, косвенное определение, косвенная адресация Активность пря просмотре, 294, 372 Арифметические операторы, 249, 314 Арифметические переменныеа, 247 вычисление действительных значений, 250 использование для выборки из нормального распределении, 251 небольшие примеры, 250 определение, 250 вычисление целых значений, 248 небольшие примеры, 248, 249 определение, 248 уровни предшествования для используемых операторов, 249 Атрибутивно-значимые функции см. Функции, атрибутивно-значимые Атрибуты см. Стандартные числовые атрибуты, Логические атрибуты, см. также Приложение 1, 481 Библиография, дли GPSS, приложение В, 470 общая, 32 Ближайшие события см. Событие Блоки "• ь адресуемые атрибуты, см. также Приложение I, 48) счетчик входов, 62, 182 использование блока PRINT для распечатки, 131 использованный в примерах 5D (297), 6В (325), 6Е (359) пример в выдаче результатов, 60 хронология изменения, 254, 322 счетчик текущего содержимого, 62, 182 использование блока PRINT для распечатки, 131 использованный в примерах 5D (297), 6В (325) пример в выдаче результатов, 60 исполняемые из любого места см. EXECUTE блок как точка вызова подпрограммы, 38 карта определения, 45, 46 (указана также во всех примерах) Эти ссылки имеют отношение; ко всему предметному ука- аггелю. 0 См. также Приложение L, с. 487. * См. тикже указатель использования cboBctb*GPS3 njnpa. мерах моделирования, с. 612. едметный указатель переопределение операндов, 102 см. также Переопределение использование в примерах 2Е (113), ЗА (148), ЗС (174), 4С (201), 6В (325) первый пример использования, 105 посредством модификации сохраняемых величия; пример 5А, 258 типа, 102 динамическое см. CHANGE блок свойства, вспомогательный оператор, 41, см. также Вспомогательные операторы поле имени, 40 доле операндов, 41 поле операции, 41 сопряженные см. Сопряженный блок стандартные числовые атрибуты см. Блоки, адресуемые атрибуты условно отказывающие во входе см. ENTER, GATE (в режиме отказа). PREEMPT, SEIZE и TEST (в режиме отказа) блоки Блок-схемы, 36, 40 (приводятся также во всех примерах) Булевские переменные *, 312 использование блока TEST с булевскими переменными, 315 использование булевских операторов. 313 использование операторов отношения, 312 см. также Приложение J, 483 логические операторы, 312 см. также Приложение J, 483 небольшие примеры, 314 определение, 313 уровня предшествования для булевских операторов, Будущих событий цепь см. Цепи Вероятностные распределения см. Распределения Взвешенные таблицы см. Таблицы, взвешенные Временные узлы, 20, 33 см. также Одновремениые события Время, абсолютное, 62 единица измерения, 39 задержка, 17, 68, 71, 72 модельное, 13, 17, 39 относительное, 62 переменное приращение, 17, 39 с плавающей запятой, 17 фиксированное приращение, 17 целое, 17, 39 Время выхода из блока см. Транзакты, неадресуемые атрибуты Время исполнения 224 см. также Время процессора Время между прибытиями, 12, 42 нулевое см. GENERATE блок Время пребывания см. Транзакты, адресуемые атрибута Время процессора для GPSS-имктедия, 224, 294, 31», 583
359, 37), 372, 376, 389, 468, 463 см. также примеры 6Е (359) и 7А (392) Вспомогательные операторы, 41 см. также Приложение I, 481 для блока GATE, ссылающегося па логические переключатели, 294 многоканальные устройства, 295 приборы, 295 транзакты, 461 для блока LOGIC, 293 для блока SELECT, 428 в логическом режиме со ссылкой на логические переключатели, 2% многоканальные устройства, 296 приборы 296 в режиме МАХ, 21! в режиме MIN, 211 для блока TEST, 264 Вхождение вулевое в очередь, 54, 64 в цепь пользователя, 384 Выборка, величины временя обслуживания перед поступлением на обслуживание, 192 из распределений, 21 см. также Распределения использование в примерах 4D (213), SD (297). 6Е (359), 7А (392) с использованием блока ASSIGN, 192, 439 Выводимый иэ цепи (траязакт), 379 Выводящий из цепи (транзакт), 379 Выдачи промежуточный интервал, 129, 130 Выхода время см. Транзакты, иеадресуемые атрибуты Генераторы случайных чисел, И, 33, 140 алгоритм построения, 21 в GPSS, 22 длина, 23 имена в GPSS, 140 множитель, 22 ограничение на начальные значения в GPSS, 23, 169 период, 23 предназначение, 22 пример сгенерированных зпачемий в GPSS, 141 проблема терминологии, 22 проверка пригодности в GPSS/360, 32 псевдп, 23 свойства воспроизведения, 23 ядро, 22 Графический вывод в GPSS, 237 пример, 238 Динамический приоритет см. Дисциплина обслуживания Дискретные функции а см. Функции дискретные Дисциплина обслуживания, 52 первым пришел — первым обслужен, 52 первым пришел — первым обслужен в своем классе приоритета, 52, 95 по динамическому приоритету, 31 использование в примерах 2С (91), ЗС (177), 4С (201) обеспечение с помощь» цели пользователя, 391, 405 по умолчанию в GPSS, 52 Длительность прогона см. Останов прогона Замечаний карта си. Комментариев карта Захват приборов, 407 идея, 407 обеспечение в GPSS, 410, 436 судьба ээхвачеиных транэактов, 408, 436 Звездочка, в первом столбце карты, 46, 62 использование в качестве арифметического оператора, 247 использование в качестве булевского оператора, 313 использование при косвенной адресации, 344 Избирательная карта CLEAR, 258 Избирательная карта RESET, 121 Избыточность в именах элементов, 225 Имена, блоков, 41 символические, 41 правило построения, 41 числовые, 41, 61 неблочных элементов GPSS, символические, 48, 225 правило построения, 48 числовые, 48, 225 ограничения на величину, 48 определение по контексту, 225 см. также Приложение С, 479 Инициализация, матриц сохраняемых величин, 281 моделирования, 15, 19, 105, 125 положения логических переключателей, 292 сохраняемых величин. 256 счетчика числа завершений, 46 Индикатор задержки, 464 см. также Приложение Т), 475 просмотра, 371, 411 см. также Приложение D, 475 связи, 378 см. также Приложение D, 475 трассировки, 463 см. также Приложение D, 475 цепи, 403 см. также Приложение D, 475 Интерпретатор GPSS, 35 Карта заголовка для функции, 144 Карта определения блока см. Блоки, карта определения Карты определения см. Формат карты Карты следования функции, 144 КМР, 72, 79 Комментариев карта, 46, 59. 60 Копстанты см. также Непосредственное определение использование с префиксом К, 183, 479 ограничение на использование, в качестве операндов блока, 41, 255, 256 в составе арифметических переменных, 248, 258 Косвенней адресация, 311, 344 использование в примерах 6D (348), 6Е (359) небольшие примеры, 345 Косвенное определение, 180, 311 Логические атрибуты см. также Приложение J, 483 для логических переключателей, 294 для многоканальных устройста, 295 для приборов, 295 для транэактов, 458 Логические операторы, использование в булевских переменных, 312, 426 см. твкже Приложение J, 483 Логические переключателя, воздействие карты CLEAR, 293 воздействие карты RESET, 293 изменение состояния блоком LOGIC, 293 карта INITIAL, 292 начальное положение по умолчанию, 292 отсутствие избирательной карты CLEAR, 293 проверка состоянии с помощью блока GATE. 293 состояние, использование блока PRINT для распечатки, 293 Логические указатели см. также Приложение J, 483 в качестве вспомогательных операторов в блоках GATE для логических иереключателей, 294 для многоканальных устройств, 295 для приборов, 295, 425 для транзактоа, 458 в качестве вспомогательных операторов в блоках SELECT для логических переключателей, 296 для многоканальных устройств, 296 для приборов, 296, 425
Макро, 464 Максимальные количества элементов GPSS, 223, см. также Приложение F, 478 Матряца сохраняемых величин *, 279 см. также Сохраняемые величяпы воздействие карты CLEAR, 282 воздействие карты RESET, 282 использование блока PRINT дли распечатки, 281 карта INITIAL, 281 карта MATRIX, 280 начальное значение по умолчэпию, 281 определение размеров, 280 отсутствие избирательной карты CLEAR, 282 пример, в распечатке, 281 Матрицы см. Матрица сохраняемых величии Машинное время, требующееся для моделирования на OPSS см. Время процессора Мнемонические указатели см. Логические указатели, Указатели переопределения, Мнемонические указатели эквивалентности, Мнемонические указатели операнда С блока PRINT Мнемонические указатели эквивалентности, 228 см. также Приложение Н, 480 Мвотоканальные устройства Ь, 107 величина емкости но умолчанию, ПО определение емкости, 109, ПО стандартные числовые атрибуты, 181 см. также Приложение 1, 48) статистика при распечатке результатов, пример, 117 Множитель см. Генераторы случайных чисел Модели фаза ввода см. Фаза ввода Модификатор размаха в операнде В ADVANCE блока, 162 GENERATE блока, 160 Модификатор функции, примеры использования, в операнде В блока ADVANCE, 162 в операнде В блока GENERATE, 160 Нагрузка, см. также Приложение 1, 481 многоканальных устройств, Н9 стандартный числовой атрибут, 180 приборов, 62 стандартный числовой атрибут, 180 Неизбежный захват, 409 Неоднозначное определение символов, 105 предупредительное сообщение, 105 пример в распечатке программы, 104 Непосредственное определение, 180 Непрерывные функции *, см. Функции, непрерывные Номера, блоков см. Имена блоков неблочных элементов GPSS см. Имела, неблочных элементов Нормальное распределение см. Распределения Кулевое время пребывания в очереди, 20 Обслуживания время, 12, 50 Одновременные события, 20, 29, 75, 78, 81, 84, 139, 167, 199, 216. 297. 304, 386, 387, 391, 400, 402, 405, 408, 435 Однозначные блокирующие условия, 371, 411, 426 Операпды см. Блоки, свойства Оператора формат см. Формат карты Оптимизация, 118 Останов моделировании, 18, 30 в GPSS. 46 Отметка времени см. Транэакты, иеадресуемые атрибуты Относительное время, воздействие карты CLEAR, 103 воздействие карты RESET, 121 пример в выдаче результатов, 60 стандартный числовой атрибут, 182, см. также Приложение I, 481 Отношения операторы, см. также Приложение J, 483 использование в булевских переменных, 312 использование в качестве вспомогательных операторов, a SELECT блоке. 210 в TEST блоке, 264 Очереди «, 52, 55 стандартные числовые атрибуты, 180 см. также Приложение 1, 481 статистика в выдаче результатов, примеры, 60, 63 Параллельное моделирование альтернативных конфигураций, 359 см. также Пример 6Е, 359 Параметры см. Траиэакты, адресуемые атрибуты Парности условие, 445, см. также Приложение D, 475 и Транэакты, условие парности Парности цепь см. Цепи Пары взаимодополняющих блоков, 50 Пассивность при просмотре, 294, 372, 411 Пассивный буфер. 69 графическая интерпретация, 69 Переменные см. Арифметические переменные, Булевские перемепные Переопределение см. также Блоки, переооределение блоков с ненулевым текущим счетчиком, L02 GENERATE блоков, 102 емкости многоканального устройства, 110 Переопределение операнда блока см. Блоки, переопределение Переопределение тина блока см. Блоки, переопределение Перераспределение элементов GPSS, 223 Перераспределения мнемонические указатели, 223 см. также Приложение F, 478 Повторение условий эксперимента, 174» использование в примерах, ЗС (177), 4D (213), 5D (297), 6С (336), 6Е (359). 7А (392) Пользователя цепн см. Цепи Помещаемый в буфер транзакт, 324 Прекращение моделирования см. Останов моделирования Прерывания цепи см. Цепи Приборы 6, 48 вахват, 410 ошибка в случае оспобсокдення другим траизактом, 49 стандартные числовые атрибуты, 181 см. также Приложение 1, 481 статистика в распечатке, примеры, 60, 62 использование блока PRINT для распечатки, 131 Примеры, специальный указатель по использованию свойств языка, 512 Приоритета класс, см. синоним. Приоритета уровень Приоритета уровень см. Транэакты, адресуемые атрибуты Проверка правильности модели, частичная, с постоянными величинами, 29, 370 Промежуточная выдача результатов, 129 использование в примерах, 2F<133), 4А (184), 5С (283) Прохождения время см. Траязакты, адресуемые атрибуты Пуассоновское распределение см. Распределения Равномерное распределение см. Распределения Различие между GPSS/360 и GPSSV, Приложение А, 466 Распечатка программы, 57 первый пример, 59 (приводится также во всех примерах) Распределение оперативной памяти машниы см. Распределение памяти Распределение памяти, 222, см. также Приложепие F, 478 Распределения см. также Время между прибытиями, Время обслуживания нормальное, 33, 251 оценка в GPSS см. Таблицы пуассоновское, 158 равномерпое, 21, 33 выборка неявная, в GPSS, 143 с действительными переменными, 251 с дискретными функциями, 154 с непрерывными функциями, 155 точная, 21
неяввое в блоках ADVANCE, 50, 142 неявное в блоках GENERATE, 42, 142 поле допуска, 21 экспоненциальное, 39, 192, 251 эмпирическое, 157 Распределения таблицы см. Таблицы Распределения функции, 143 Редактор вывода, 237, 465 пример графической выдачи, 238 Режим BUFFER см. PRIORITY блок Символические имена см, Имена, символические Системы с очередями, несколько очередей, несколько обслуживающих приборов, 207 использование в примерах, 4D (213), 7А (392) одна очередь, несколько обслуживающих приборов, LIX использование в примерах, 4D (213), 7А (392), 7С (427) одна очередь, один обслуживающий прибор, 12 без различия приоритетов, использование в первом примере, 2А (57) с различием приоритетов, использование в первом примере, 2С (91) Событие, ближайшее, 17, 33 вспомогательное, 13 завершения моделировании, 18 завершения обслуживания, 14 запланированное, 14 одновременные см. Одвовремеиные события основное, 13 поступления, 14 Сокращения для слов, обозначающих операцию в GPSS, 41 Сообщения об ошибках, Приложение С, 471 Сообщения предупредительные, перечень, Приложение С, 471 примеры возникновевня, 56, 105 Сопряженный блок, 455 Сохраняемые величины &, 255, см. также Матрицы сохраняемых величин воздействие карты CLEAR, 258 воздействие карты RESET, 258 использование блока PRINT, 256 использование избирательной карты CLEAR, 258 карта INITIAL, 256 начальное значение по умолчанию, 256 пример в выдаче результатов, 261, 262 Списковые функции * см. Функции, дискретные (L-типа) и атрвбутивво-значимые (М-типа) Стандартная документация для примеров, 56 Стандартные числовые атрибуты, 180, см. также Приложение I, 481 Статистика см. Приборы, Очереди, Многоканальные устройства, Таблицы, Цепн пользователя см. также Приложение I, 481 СЧА см. Стандартные числовые атрибуты Счетчяки блоков см. Блоки, адресуемые атрибуты Счетчик прерываний, 422, см. также Приложение D, 475 Счетчик промежуточной выдачи, 129 использование в примерах, 2F (133), 4А (184), 6С (283) Счетчик числа завершений, 46 Таблицы, 233 взвешенные, 273 примеры использования, 278 небольшие примеры использовании, 235, 236, 244, 274, 278 определение картой TABLE, 234, 274 примеры в распечатке, 236, 237, 244, 278 специальные режимы, 241 IA, 241 QTABLE, 243 RT, 242 стандартные числовые атрибуты, 238, 278 см. также Приложение I, 481 Таймера обслуживание, 17, 67, 68 Текущего содержимого счетчик см. Блоки, адресуемые атрибуты Текущих событий цепь см. Цепи Транзакты, 37 см. также Приложение D, 475 адресуемые атрибуты, см. также Приложение I, 481 время пребывания в модели, 231 пример использонавин, 235 время прохождения между двумя точками модели, 232 использование блока MARK *. 232 параметры, 189 допустимый диапазон значений, 189 изменение значений, блоком ASSIQN Ь, 190 блоком MARK. 232 блоком SPLIT, 358 использование при косвенной адресации, 344 начальное значение, 190 предупредительные сообщения, Приложение С, 471 размер слова, 189 уровень приоритета, 43, 91, 198 величина по умолчанию, 43 допустимый диапазон величин, 43, 199 изменение величины блоком PRIORITY, 198 как критерий упорядочения в цепи текущих событий, 67 начальное значение, 33 небольшой пример использования, 200 активность при просмотре, 294, 372 выводимый из цепи, 379 выводящий из цепн, 379 неадресуемые атрибуты, время выхода, 68,79 см.также синоним Времи движения как критерий расположения в цепи будущих событий, 67 КМР, 72. 79 время движения из блока, 79, 382 см. также сннонны Время выхода как время, оставшееся до конца обслуживания на приборе, 422 индикатор просмотра, 372 номер, 68 отметка времени, 231 отрицательная аеличняа, 231 SET, 445 следующий блок для входа, 68 счетчик числа захватов, 422 текущий блок, 68 НЕТ, 71, 81 условие парности, 445, 455, 459 использование блока GATE для проверки, 458 Флаг захвата, 422 пассивность при просмотре, 294, 372, 411 помещение в буфер, 324 потомок см. SPLIT блок примеры в распечатке, 80 пустые, для RT-таблиц, 242 расположение в пассивном буфере, 69 родитель см. SPLIT блок Транзакты-потомки см. SPLIT блок Управление прогоном см. Останов моделирования Управление условиями эксперимента см. Повторение условий эксперимента Управляющие карты, внешние по отношению к GPSS, 64, 223 внутренние в GPSS Ь, см. CLEAR, END, EQU, JOB, REALLOCATE, RESET, RMULT и SIMULATE карты Условия в блоке, неоднозначные, 371, 458 однозначные, 371, 411, 426 Фаза, ввода, 71 блок-схема, 72 586
коррекции времеви, 67 блок-схема, 68 просмотра, 68, 373 блок-схемы, 68, 373 Фактор выбора, Приложение D, 475 Флаг захвата, 422, 437, 438, 459 см. такясе Приложение D, 475 Флаг изменения состонння, 373, 380, 411, 426, 437, 455 Формат карты, см. также Приложение К, 484 избирательная карта CLEAR, 258 изображение блока, 45 карта комментариев в GPSS, 46 BVARIABLE карта, 313 CLEAR карта, 102, 258 END карта, 59, 61 EQU карта, 229 FUNCTION карта, 144 FVARIABLE карта, 250 INITIAL карта, для логических переключателей, 292 для матрицы сохраняемых величии, 279 для сохраняемых величин, 255 'JOB карта, 132 MATRIX карта, 279 QTABLE карта, 243 REALLOCATE карта, 223 RESET карта, 121, 122 RMULT карта, 169 SIMULATE карта, 59, 61 START карта, 46, 47, 59, 61 STORAGE карта, 109, ПО TABLE карта, 234, 274 VARIABLE карта, 248 Функции атрибутивно-значимые (Е-типа), 347 выход аргумента за диапазон, 348 небольшие примеры, 347 атрибутивно-значимые (М-типа), 348 выход аргумента за диапазон, 348 небольшие примеры, 348 дискретные (D-типа), 143 выход аргумента за диапазон, 184 использование в блоках ADVANCE, 147 в блоках GENERATE, 146 для задания номеров блоков. 356, 358 небольшие примеры, 145, 155 дискретные (L-типа), 289 выход аргумента аа диапазон, 289 небольшие примеры, 289 непрерывные (С-типа), 155, 184 выход аргумента за диапазон, 160 использование в операнде С блока ASSIGN, 191 в операнде В блока ADVANCE. 162 в операнде А блока GENERATE, 156 в операнде В блоке GENERATE, 160 в определении FVARIABLE, 251 в определении VARIABLE, 250 для выборки из равномерного распределения, 155 нормированного нормального распределения, 251 экспоненциального распределения, 160, 191, 250 эмпирических распределений, 157 небольшие примеры, 155, 156, 157 Функция, карта заголовка, 144 Цепи, см. также Приложение D, 475 будущих событий, 66 использование блока PRINT для распечатки, 130 использование в чистовых примерах, 68, 86, 95 использование операнда D карты START для распечатки, 79 критерий упорядочения, 67 примеры в выдаче результатов, 80 задержки, 372 парности, 443, 458 использование блока PRINT для распечатки, 459 использование операнда D карты START для распечатки, 459 порядок расположения транзактов, 452, 458 примеры в выдаче результатов, 444, 454 пользователя *, 375 использование блока PRINT для распечатки, 377 использование операнда D карты START для распечатки, 377 небольшие примеры использования, 381, 385, 387, 389, 391, 404 порядок расположения транзактов, 378 примеры в выдаче результатов, 383, 398 стандартные числовые атрибуты, 391 см. также Приложение I, 481 статистика в выводимых результатах, примеры, 383 прерывания, 408 использование блока PRINT для распечатки, 409 • использование операнда D карты START для распечатки, 409 критерий упорядочения, 409 примеры в выдаче результатов, 419, 433 текущих событий, 66 использование блока PRINT для распечатки, 130 использование в числовых примерах, 68, 86, 95 использование операнда D карты START для распечатки, 79 критерий упорядочения, 67 примеры в выдаче результатов, 80 Экспоненциальное распределение см. Распределения, экспоненциальное Элемент «группа», 461 Элементы GPSS Ь, перечень, Приложение F, 478 Элементы оборудования, 312 Ядро см. Гевераторы случайных чисел ADVANCE блока «, 50 использующий функции, в операнде А, 147 в операнде В, 162 небольшие примеры, 51, 54 пустой, использование в примерах, 6В (325), 6С (336), 6D (348) с нулевым временем задержки, 51, 63 ALTER блок, 462 ASSEMBLE блок «.*, 442 небольшие примеры, 443, 455 ASSIGN блок «■*, 190 использование для выборки яз экспоненциального распределения, 192 небольшие примеры, 191, 192 ограничение я а вид операнда С 192 режим накопления, 191 режим уменьшения, 191 BUFFER блок а*. 323 небольшие примеры использования, 324, 325, 388 BVARIABLE карта, 313 см. также Приложение К, 484 CHANGE блок, 464 CLEAR карта, 102 действие на абсолютное премя, 103 блоки GENERATE, 102, 103 логический переключатель, 293 матрицы сохраняемых величин, 282 относительное время, 102 положение генераторов случайных чисел, 105 сохраняемые величины, 258 цепи пользователи, 392 избирательная форма, 258
первый пример использования, 104 положение относительно карты RMULT, 169, 176 COUNT блок, 462 DEPART блок а.Ь, 53, 54 с использованием необязательного операнда В, 54, 64, 183 END карта, 59, 61 ENDMACRO карта, 464 ENTER блок a. ft, 107 небольшой пример, Ш с использованием необязательного операнда В, 108, 183 EQU карта, 228 см. также Приложение Н, 480 EXAMINE блок, 461 EXECUTE блок, 464 FVARIABLE карта, 250 GATE блок в, *, 293. 425, 468 вспомогательные операторы для блока GATE см. Вело? могательные операторы использование для логических переключателей, 294 многоканальных устройств, 295 приборов, 295, 425 транзактов, 458 режим отказа, 294, 425, 458 режим условной передачи, 294, 425, 458 GATHER блок, 452 небольшой пример, 453 GENERATE блок, 42 использование модификатора функции, 160 небольшие примеры, 42, 43 нулевое время между прибытиями, иа этапе ввода, 71, 72 ва этапе просмотра, 105 особенность обработки, 178 переопределевве, 103, 170, 176 планирование события следующего поступления, 73 GPSS, 11, 35, 36 см. также Предисловие и Приложения А (466) я В (470) HELP блок, 461 ссылка на пример использования, 128 INDEX блок, 463 INITIAL карта «, для логических переключателей, 292 для матриц сохраняемых величин, 281 для сохраняемых .величин, 256 JOB карта, 132 JOIN блок, 461 К (стандартный числовой атрибут), 183 потенциальная проблема избыточности при использовании, 479 LEAVE блок а.ь, 107 использование необязательного операнда В, J08, 182 небольшие примеры использования, 111 LINK блок «.б, 377 небольшие примеры использования, 381. 385, 386, 388, 389, 390, 404 LOGIC блок о.*, 293 вспомогательные операторы, 293 см, также Приложение J, 483 LOOP блок, 289 небольшой пример, 289 MACRO карта, 464 MARK блок «■*, 232 MATRIX карта, 280 MATCH блок о.», 455 небольшой пример, 456 MSAVEVALUE блок а.ь, 282 режим накопления, 282 режим уменьшения, 282 PREEMPT блок «.*, 410, 436 небольшие примеры, 437, 439 PRINT блок а, 130 мнемонические указатели для операнда С, 131 см. также Приложение Е, 477 небольшой пример, 131 PRIORITY блок*.*, 198 использование в режиме BUFFER, 389 небольшой пример, 200 Q-таблииы, 243 пример в выдаче результатов, 244 пример использования, 243 QTABLE карта, 243 QUEUE блок «.*, 53. 55 использование необязательного операнда В, 54, 64, 182 REALLOCATE карта, 223 см. также Приложение F, 478 RELEASE блок а.ь, 49 небольшие примеры, 51, 54 ошибка в случае вхождения неверного транзакта, 49 REMOVE блок, 461 RESET карта, 120 действие на абсолютное время, 121 генераторы случайных чисел, 121 матрицы сохраняемых величин, 282 относительное время, 121 положение логических переключателей, 293 сохраняемые величины, 258 счетчиии входов блоков, 121 счетчики текущего содержимого блоков, 121 цели пользователя, 392 избирательная форма, 121 пример использования, 122, 123 RETURN блок а.Ь, 410 небольшие примеры, 437, 440 RMULT карта, 168 см. также Приложение К&484 небольшие примеры, 169 „, ограничения на величины операндов, 24, 169 расположение относительно CLEAR карты, 169, 176 GENERATE блока, 169, 176 SAVEVALUE блок а.Ь, 257 небольшие примеры, 258 режим накопления, 258 Ьежим уменьшения, 258 SCAN блок, 462 SEIZE блок а. 6, 49 небольшие примеры, 51, 54 SELECT блок о.*, 209 см. также Вспомогательные операторы, для блока SELECT выход в альтернативный блок, 210, 211 логический режим, 296 режим МАХ, 211 режим MIN, 211 режим оиераюра отношения, 210 SET, 445, см. также Приложение D, 475 SIMULATE карта, 59, 61 SPLIT блоке,*, 335, 357 возможность упорядочения, 357 роль в создании ансамблей, 442 транзакты-потомки, 335, 357 величины параметров, 336, 358 значение параметра упорядочении, 358 число параметров, 336, 358 -- число потомков, 335 отметка времени, 336 следующий блок для входа, 336, 358
уровень приоритета, 336 траиззкт-родитель, 335 авачение параметра упорядочения, 358 следующий блок для входа, 336 START карта, 46, 61 см. также Приложение К, 484 операнд Л (начальное значение счетчика числа завершений), 46 операнд В (подавление печати), 132 операнд С (промежуточная выдача результатов), 130 операнд D (распечатка цепей), 79, 377, 409, 459 первый пример использований, 60 STARTMACRO карта, 464 STORAGE карта, 109, ПО TABLE иарта, 234, 274 TABULATE блок я, 235 использование необязательного операнда В, 274 TERMINATE блок а, 46 TEST блок «.Л, 264 вспомогательные операторы, 264 см. также Приложение J, 483 использование с булевскими переменными, 315 небольшие примеры, 265 режим отказа, 264 режим условной передачи, 265 предупреждение о предпринимаемом выходе, 205 TRACE блок, 463 см. также Приложение D, 475 TRANSFER блок, безусловный режим а А 98 режим ALL, 463 режим BOTH «Л 137 режим PICK, 463 режим FN, 463 режим Р. 463 режим SBR. 463 режим S1M, 464 см. также Приложение D, 475 статистический режим о.6, 132 UNLINK блока.*, 377, 403 небольшие примеры использования, 381, 385, 386, 387, 389, 391, 405 UNTRACE блок, 463 см. также Приложение D, 475 VARIABLE карта, 248 WRITE блок, 464
Предисловие к русскому изданию 6 Предисловие 8 1 Вопросы моделирования систем ' массового обслуживания 1.1. Введение 11 1.2. Система обслуживания с одним прибором и очередью 12 1.3. Элементы процедуры решения 13 1.4. Логические особенности генератора случайных чисел 22 J.5. Алгоритмизация модели 24 1.6. Упражнения 27 1.7. Список литературы 32 1.8. Заключение 33 А Основные концепции "' моделирования на GPSS 2.1. Некоторые предварительные рассуждения . . 35 2.2. Методы создания моделей с использованием GPSS 36 2.3. Динамические элементы моделей GPSS. Тран- закты 37 2.4. Таймер модельного времени 39 2.5. Основные сведения о блоках, используемых в блок-схемах GPSS-моделей 40 2.6. Внесение траиэактов в модель. Блок GENERATE (ГЕНЕРИРОВАТЬ) 42 2.7. Упражнения 44 2.8. Перфокарты, соответствующие блокам GPSS 45 2.9. Удаление транзактов из модели. Блок TERMINATE (ЗАВЕРШИТЬ) 46 2.10. Упражнения 47 2.11. Элементы, символизирующие обслуживающие лриборы 48 2.1? Занятие свободных приборов. Блоки SEIZE (ЗАНЯТЬ) и RELEASE (ОСВОБОДИТЬ) 49 2.13. Реализация задержки во времени. Блок ADVANCE (ЗАДЕРЖАТЬ) 50 2.14. Ожидание обслуживания: где и при каких условиях происходит ожидание транзакта 51 2.15. Сбор статистики при ожидании. Блоки QUEUE (СТАТЬ В ОЧЕРЕДЬ) и DEPART (ПОКИНУТЬ ОЧЕРЕДЬ) 62 2.16. Описание стандартов для записи примеров моделирования 56 2. J 7. Пример моделирования 2А. О/стена с одним прибором и очередью 57 Оглавление 2.18. Внешние управляющие карты, необходимые для выполнения моделирования на GPSS . . 64 2.19. Упражнения 65 2.20. Логика работы интерпретатора 66 2.21. Первый пример использования цепей текущих и будущих событий 68 2.22. Порядок обработки одновременных событий, возникающих при моделировании 75 2.23. Упражнения 76 2.24. Распечатка цепей текущих и будущих событий 78 2.25 Упражнения 81 2.26. Пример моделирования 2В. Расширение системы обслуживания с одинм прибором н очередью 81 2.27. Второй пример использования цепей текущих и будущих событий 86 2.28. Упражнения 89 2.29. Пример моделирования 2С. Измененная дисциплина обслуживания в системе с одним прибором и очередью 91 2.30. Третий пример использования цепей текущих и будущих событий 95 2.31. Упражнения 97 2.32. Переход транзактов в блок, отличный от последующего. Блок TRANSFER (ПЕРЕДАТЬ) 98 2.33. Пример моделирования 2D. Система обслуживания с прибором, очередью и обратной связью 98 2.34. Управляющие карты GPSS. Карта GLEAR (ОЧИСТИТЬ) . . 102 2.35. Упражнения 105 2.36. Моделирование многоканальных устройств 107 2.37. Использование параллельно работающих каналов. Блоки ENTER (ВОЙТИ) и LEAVE (ВЫЙТИ) 107 2.38. Многоканальная система массового обслуживания с очередью Ш 2.39. Пример моделирования 2Е. Задача об управлении производством ИЗ 2.40. Управляющие карты GPSS. Карта RESET (СБРОСИТЬ) 120 2.41. Упражнения 125 2.42. Печать в процессе моделирования 129 2.43. Управляющие карты GPSS. Карта JOB (ПРОДОЛЖИТЬ) 132 2.44. Переход траиэакта случайным образом в один нз двух блоков 132 2.45. Пример моделирования 2F. Станция технического контроля производственной линии 133 2.46. Условная передача транзактов в одни из двух блоков 137 2.47. Упражнения 138
ше распределении ЗИсполь»«1 g в GPSS • вероятен ' 140 3.1. Введение н'.люмерно распределенных слу- 5.2. Генераторы \ 140 чайных чисел равномерных распределений 3.3. Испапьзованн-ERATE я ADVANCE ... 141 в блоках GEltaua случайных чисел для ди- 3.4. Метод розыгрвномерных распределений . . 143 скретиых несекретных функций GPSS 143 3.5. Определение* дискретных функций в бло- 3.6. ИспользоватТЕ и ADVANCE 146 ках GENEInMpoDaHHH ЗА. Второе обраще- 3.7. Пример мо»у 2D 148 ние к ирнм '51 3.8. Упражнени/чайных переменных. Целые н 3.9 Значения счения 153 дробные зке случайные переменные, рас- 3.10. Непрерывие как дискретные 154 сматривае<« непрерывных функций .... 155 3.11. Определе;1шя статистических данных в тер- 3.12. Интерпреэерывных функций 157 минах нсание пуассоиовских потоков . . ■ 158 3.13. Моделирня 161 3.14. Упражнваняе экспоненциально распреде- 3.15. Моделирнтервалов времени обслуживания 162 ленных юделнрования ЗВ. Пуассоновский 3.16. Пример поток и прибор с экспоненциаль- аходяш ужнваннем 163 ным обния 167 3.17. Упражощие карты GPSS. Карта RMULT 3.18. Управ.ОВИТЬ ЗНАЧЕНИЯ ГЕНЕРА- (УСТ/>; 168 ТОРО звленне условий моделирования . ■ 170 3.19. Восст моделирования ЗС. Второе обращение 3.20. Прим.ру 2С 174 к пр1'ения 177 3.21. Упра юсть обработки блока GENERATE 178 3.22. Особ [ения 179 3.23. Упр! роение более сложных моделей. 4Псъ I • Ч п .'«е 180 4.1. Вв( артные числовые атрибуты .... 181 4.2. Ст 1ьзовапне стандартных числовых атри- 4.3. Ис . 183 у бу .ер моделирования 4А. Влияние длины 4.4. П ли на среднюю интенсивность обслужи- О' я 184 * шнення 187 4.5. ' аметры транзактов 189 4.6. енение значений параметров. Блок 4.7. .1GN (НАЗНАЧИТЬ) 190 ■мер моделирования 4В. Модель продо- 4.8. ьствеиного магазина 192 ражнения 196 4.9. ленение уровня приоритета транзакта. "4.10 ок PRIORITY (НАЗНАЧИТЬ ПРИОРИ- • П) 198 / г1имер моделирования 4С. Задача о балансе 4.1 Ърудовання 201 1 пражиения 206 4. / лстема обслуживания с несколькими при- 4. .орами и очередями 207 Зыбор элементов по их состояниям. Блок 4,j SELECT (ВЫБРАТЬ) 209 , Пример моделирования 4D. Сравнение аль- д-7 терыативных вариантов систем обслуживания в банке 213 Использование памяти ЭВМ при моделировании 221 Бремя моделирования 224 4.19. 4.20. 4.21. 4.22. 4.23. 4.24. 4.25. 4.26. 4.27. vsua\.nut.iD, пилип лающая и свизи с одновременным использованием символических и числовых имен в GPSS 225 Упражнения 229 Резидентное и транзитное время транзактов 231 Упражнения 233 Использование таблиц в GPSS 233 Определение и использование таблиц. Карта TABLE (ТАБЛИЦА) и блок TABULATE (ТАБУЛИРОВАТЬ) 234 Стандартные числовые атрибуты таблиц 238 Упражнения 239 Дополнительные режимы использования таблиц 241 Упражнения 245 5 Построение более сложных моделей. ■ Часть II 5.1. Введение 246 5.2. Арифметические переменные 247 5.3. Выборка из нормального распределения 251 5.4. Упражнения imiti'aJ ' 5.5 Сохраняемые величины. Карта INITIAL (ИНИЦИАЛИЗИРОВАТЬ) и блок SAVEVA- LUE (СОХРАНИТЬ ВЕЛИЧИНУ). ... 255 5.6. Пример моделирования 5А. Третье обращение к примеру 2D 25» 5.7. Упражнения • • • • • • • ■** 6.8. Проверка числовых выражений. Блок I ЬЫ (ПРОВЕРИТЬ) ж'• " " 6.9. Пример моделирования 5В. Задача об управ- лекии запасами г~ 5.10. Упражнения ,* 6.11. Концепция использования взвешенных тао- лиц 278 6.12. Упражнения • • " 5.13. Матрячные сохраняемые величины, карта MAfRIX (ЗАДАТЬ МАТРИЦУ), карта INITIAL и блок MSAVEVALUE (СОХРА- НИТЬ ЗНАЧЕНИЕ ЭЛЕМЕНТА МАТРИЦЫ) 279 5.14. Пример моделирования 5С. Модель производственного цеха 283 5.15. Списковые функции . • • • • ;•.,;„.' " 289 5.16. Блок LOOP (ОРГАНИЗОВАТЬ ЦИКЛ) 289 5.17. Упражнения _• " ' 290 5.18. Элементы, моделирующие управление, логн- ческие переключатели • 291 5.19. Управление логическими перммючэтелями. Карта INITIAL и блок №К<ВОЗ№Я- СТВОВАТЬ НА ЛОГИЧЕСКИЙ ПЕРЕ- КЛЮЧАТЕЛЬ) ■ • ' М* 5.20. Проверка состояния логических переключате- лей. блок GATE (ВПУСТИТЬ) . . • • ■ 293 5.21. Использование блока GATE с приборами и многоканальными устройствами • • • • • 295 5.22. Использование блока SELECT в логическом ПРЖИ Мб »••••"• ZWJ 5.23. Пример моделирования 5D. Задача о запра- вочной станции ~!| 5.24. Упражнения • • ■ ■ • • " Wl 5.25. Пример моделирования 5Е. Модель авто- бусной остановки *™ 5.26. Упражнения Jlu 6 Дальнейшее развитие концепций • моделирования на GPSS. Часть I 6.1. Введение - 3{1 6.2. Булевские переменные • • • /• ali 6.3. Пример моделирования 6А. Обслуживание танкеров в порту 315 591
6.4. 6.5. 6.6. 6.7. 6.8. 6.9. 6.10. 6.П. 6.12. 6.13. 6.14. 6.15. 6.16. 6.17. 6.18. 6.19. 6.20. 7.1. 7.2. 7.3. 7.4. 7.5. 7.6. 7.7. 7.8. 7.9. 7.10. 7.11. 7.12. 7.J3. 7.14. 1Л5. 7Л6. 7.17. 7.18. 7.19. 7.20. 7.21. 7.22. 7.23. 7.24. Упражнения 322 Управление просмотром цепи текущих событий. Блок BUFFER (ВОЗОБНОВИТЬ ПРОСМОТР) 323 Пример моделирования 6В. Задача о библиотеке 325 Упражнения 334 Расщепление транзактов. Блок SPLIT (РАСЩЕПИТЬ) 335 Пример .моделирования 6С. Задача о запасных деталях 336 Упражнения 342 Косвенная адресация в GPSS 344 Упражнения 345 Атрибутивно-значимые функции 347 Пример моделирования 6D. Второе обращение к примеру 6С 348 Упражнения 355 Функция, значения которых являются именами блоков 356 Возможность упорядочения в блоке SPLIT 357 Параллельное (исделнрованпе различных конфигураций системы 359 Пример моделирования 6Е. Второе обращение к примеру 5D 359 Упражнения 364 Дальнейшее развитие концепций моделирования на GPSS. Часть П Введение 370 Дополнительные сведения о просмотре пепн текущих событий 371 Замечания об экономны процессорного времени 374 Цепи пользователя 375 Вход н выход трвнзактов нз цепи пользователя. Блоки LINK (ВВЕСТИ В ЦЕПЬ) н UNLINK (ВЫВЕСТИ ИЗ ЦЕПИ) ... 377 Применение Цепи пользователя с приборами и многоканальными устройствами ... 381 Блок PRIORITY (НАЗНАЧИТЬ ПРИО- РИТЕТ) в режиме BUFFER 389 Дополнительные примеры применения цепей пользователя 389 Стандартные числовые атрибуты цепей пользователя 391 Пример моделирования 7А. Второе обращение к примеру 4D 392 Упражнения 400 Условный вывод транзактов из цепей пользователя 403 Упражнения 405 Понятие о захвате прибора 407 Захват прибора. Блоки PREEMPT (ЗАХВАТИТЬ) и RETURN (ВЕРНУТЬ) 410 Методы использования приборов 411 пример моделирования 7В. Модель гаража 414 Упражнения 423 Проверка логического состояния приборов, подлоднцих захвату 425 Прнмй>моделирования 7С. Второе обращение к пример 7В 427 Поведение^хваченных транзактов .... 436 Упражнения 441 Понятие об ансамблях 441 Вывод членов ансамбля из модели. Блок ASSEMBLE (СОЕДИНИТЬ) 442 7.25. Прнмер моделирования 7D. В. мости рабочей силы на врем работ по сетевым графикам . jn_ „„.„„ 7.26. Накопление членов ансамбля. Е „"„"„„„* (СОБИРАТЬ) выполнения 7.27. Синхронизация движения траш ' г «turd MATCH (СИНХРОНИЗИРОВАТЬ U/UHbK « 7.28. Проверка состояния парности. ' ' * ё „',,„' 7.29. Заключительные замечания об!.кто °л . 7.30. Упражпення ^ ^Е « ансамблях Щ О Некоторые дополнителы! С "' можности GPSS/360 •je воз- 8.1. Введение i 8.2. Блок HELP (ПОМОЧЬ) .... 8.3. Блоки, обеспечивающие rpynnnpoai A 8.4. Блок COUNT (ПОДСЧИТАТЬ) . (f 8.5. Блоки TRACE (НАЧАТЬ ТРАССЬ И UNTRACE (ЗАВЕРШИТЬ ТРА<4 # 8.6. Блок INDEX ^ЙВДЁкСИРОВАТЫТ^ров'. 8.7. Дополнительные режимы работы Л № TRANSFER I" ' ' S 8.8. Блок CHANGE (ЗАМЕНИТЬ) ' ! Л'' " " 8.9. Блок EXECUTE (ВЫПОЛНИТЬ)*1^ 8.10. Блок WRITE (ЗАПИСАТЬ) . .и tf 8.11. Карты STARTMACRO (НАЧАЛО М* ' 2 ENDMACRO (КОНЕЦ МАКРО) и .1' ' J (МАКРО) Арб/ 8.12. Редактор вывода ЩСНО 8.13. Заключение \Щ ш m •' •' « Приложения Л g Приложение А. Сравнение GPSS/360 с _g_ Приложение В. Материалы фирмы IBM поТЖ - - * Приложение С. Сообщения об ошибках .^Ж у ib Ошибки программы-ассеибнЖ^ я Ошибки ввода ... ™ Ошибки выполнения Ошибки вывода щ » Предупредительные сообщетсЩ ' j. Приложение D. Название столбцов в распеч Щ ' »} «епей Л ' 1 Приложение Е. Мнемонические указатели блЛ," ' PRINT Л -U Приложение F. Информация, относящаяся к KaW ^ REALLOCATE "U -. Приложение G. Список определительных конт»^ '' стой для элементов GPSS . . <^ш ™ Приложение Н. Мнемонические обозиачення кг ты EQU № .« Приложение I. Список стандартных числовых »^ рибутов SU н« Приложение J. Список операторов отношения, nVr гическнх указателей и логичоЪ ш скнх операторов /^ Приложение К- Список операторов GPSS, не як^ ляющнхея блоками Приложение L. Список блоков GPSS l\ Приложение М. Комментарии к распечаткам npd грамм 4< Приложение N. Решение задач по моделирование"! Указатель использования своЛтв GPSS в примерах \ 'щц моделирования Предметный указатель