Моделирование систем и сетей связи на GPSS

Загрузить архив:
Файл: 240-0996.zip (44kb [zip], Скачиваний: 66) скачать

              МИНИСТЕРСТВО СВЯЗИ РОССИЙСКОЙ ФЕДЕРАЦИИ

           Московский ордена Трудового Красного Знамени

_технический университет связи и информатики

       Кафедра вычислительной математики и программирования

             Методические указания для слушателей ФПКП

         по моделированию систем и сетей связи на GPSS/PC

                              Часть 1

                  ОСНОВЫ МОДЕЛИРОВАНИЯ НА GPSS/PC

                            Москва 1993

.

                                        План УМД на 1993/94 уч. г.

             Методические указания для слушателей ФПКП

         по моделированию систем и сетей связи на GPSS/PC

                              Часть 1

                  ОСНОВЫ МОДЕЛИРОВАНИЯ НА GPSS/PC

        Составители: Л.А.Воробейчиков, Г.К.Сосновиков

     Ил. 24, список лит. 8 назв.

     Издание утверждено на заседании кафедры вычислительной

    математики и программирования 11 марта 1993 г., протокол N6

     Рецензент Васильев В.К., канд. техн. наук, доцент

.

                             ВВЕДЕНИЕ

     Процессы функционирования различных систем и сетей связи могут

бытьпредставлены  тойилииной  совокупностьюсистем массового

обслуживания (СМО) - стохастических, динамических, дискретно-непре-

рывных математических моделей. Исследование характеристик таких мо-

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

имитационного моделирования [1-6].

     Имитационная модель отображаетстохастическийпроцесс  смены

дискретных состояний СМО в непрерывном времени в форме моделирующе-

го алгоритма.При его реализации наЭВМ  производитсянакопление

статистических данных по тем атрибутам модели, характеристики кото-

рых являются предметом исследований. По окончании моделирования на-

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

лучаются в виде выборочных распределений исследуемых величин или их

выборочных моментов.Таким образом, при имитационном моделировании

систем массового обслуживания речьвсегдаидет  остатистическом

имитационном моделировании [5;6].

     Сложные функции моделирующего алгоритма могут быть реализованы

средствами универсальных языков программирования (Паскаль, Си), что

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

использовании модели.Однако подобная гибкость приобретается ценой

больших усилий,затрачиваемыхна  разработкуипрограммирование

весьмасложных моделирующих алгоритмов,оперирующих со списковыми

структурами данных. Альтернативой этому является использование спе-

циализированных языков имитационного моделирования [5-7].

     Специализированные языки имеют средства описанияструктурыи

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

легчает и упрощает программирование имитационных моделей, поскольку

основныефункциии моделирующего алгоритма при этом реализуются ав-

томатически. Программыимитационныхмоделей на специализированных

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

естественном языке, что позволяет конструировать сложные имитацион-

ные модели пользователям,не являющимся профессиональными програм-

мистами.

     Одним из  наиболее эффективных и распространенных языков моде-

лирования сложных дискретных систем является в настоящее время язык

GPSS[1;4;7].  Онможет быть с наибольшим успехом использован для

моделирования систем,формализуемых в виде систем массового обслу-

живания. В качестве объектов языка используются аналоги таких стан-

дартных компонентов СМО, как заявки, обслуживающие приборы, очереди

                              - 3 -


и т.п. Достаточный набор подобных компонентов позволяет конструиро-

вать сложные имитационные модели,сохраняя привычнуютерминологию

СМО.

     На персональныхкомпьютерах (ПК) типа IBM/PC язык GPSS реали-

зован в рамках пакета прикладных программ GPSS/PC [8]. Основной мо-

дульпакета  представляет собой интегрированную среду,включающую

помимо транслятора со входного языка средства ввода и  редактирова-

ния текста модели, ее отладки и наблюдения за процессом моделирова-

ния,графические средства отображения атрибутовмодели,а  также

средстванакопления  результатовмоделирования в базе данных и их

статистической обработки.Кроме основного модуля всостав  пакета

входит модуль создания стандартного отчета GPSS/PC, а также ряд до-

полнительных модулей и файлов.

     В данном издании,состоящем из двух частей, излагаются основы

моделирования систем и сетей связи с использованием пакета GPSS/PC.

В первой части рассматриваются основные понятия и средства GPSS/PC,

приемыконструирования GPSS-моделей и технология работы с пакетом.

Изложение материала сопровождается небольшими  учебнымипримерами.

Относительно   подробное   рассмотрение   языка   GPSS/PC   вызвано

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

     Во второй части рассматриваются примеры GPSS-моделей различных

систем и сетей массового обслуживания,используемых для формализа-

циипроцессов  функционированиясистем и сетей связи.Приводится

также ряд примеров моделирования систем и сетей связи с использова-

нием GPSS/PC. Подробно комментируются тексты GPSS-моделей и резуль-

таты моделирования.

                    1. ОБЩИЕ СВЕДЕНИЯ О GPSS/PC

     Исходная программа на языке GPSS/PC,как и программа на любом

языке программирования,представляет собой последовательность опе-

раторов. Операторы GPSS/PC записываются и вводятся в ПК в следующем

формате:

         1номер0_1строки имя операция операнды ; комментарии

     Все операторыисходной  программыдолжныначинаться с 1номе-

1ра0_1строки 0- целого положительного числа от 1 до 9999999. После вво-

да операторов они располагаются в исходной программе в соответствии

с нумерацией строк.Обычно нумерация производится с некоторымша-

гом, отличным от 1, чтобы иметь возможность добавления операторов в

нужное место исходной программы.Некоторые операторыудобно  вво-

дить,не включая их в исходную программу. Такие операторы вводятся

                              - 4 -


без номера строки.

     В настоящем издании при описании формата операторов и в приме-

рах моделей номера строк будутопускатьсядля  лучшейчитаемости

текста.

     Отдельные операторы могут иметь 1имя 0для ссылки на эти операто-

ры в других операторах. Если такие ссылки отсутствуют, то этот эле-

мент оператора не является обязательным.

     В поле 1операции 0записывается ключевое слово (название операто-

ра), указывающее конкретную функцию, выполняемую данным оператором.

Этополе  оператора является обязательным.  У некоторых операторов

поле операции включает в себя также 1вспомогательный операнд0.

     В полях 1операндов 0записывается информация,  уточняющая и конк-

ретизирующая выполнение функции,определенной в поле операции. Эти

поля в зависимости от типа операции  содержатдосеми  операндов,

расположенныхвопределеннойпоследовательностии  обозначаемых

обычно первыми буквами латинского алфавита отAдо  G.Некоторые

операторывообще не имеют операндов,а в некоторых операнды могут

быть опущены,при этом устанавливаются их стандартные значения (по

умолчанию).При записи операндов используется позиционный принцип:

пропуск операнда отмечается запятой.

     Необязательные 1комментарии 0в случае их присутствияотделяются

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

букв русского алфавита.

     Операторы GPSS/PCзаписываются,  начиная с первой позиции,в

свободном формате, т.е. отдельные поля разделяются произвольным ко-

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

среде GPSS/PC размещение отдельных полей операторов с  определенным

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

     Каждый оператор GPSS/PC относится к одному изчетырехтипов:

операторы-блоки, операторы определения объектов, управляющие опера-

торы и операторы-команды.

     1Операторы-блоки 0формируютлогикумодели.  ВGPSS/PC имеется

около 50 различных видов блоков,каждый из которых выполняетсвою

конкретную функцию. За каждым из таких блоков стоит соответствующая

подпрограмма транслятора,а операнды каждого блока служат парамет-

рами этой подпрограммы.

     1Операторы определения об0ъ1ектов 0служат для описанияпараметров

некоторыхобъектов  GPSS/PC (о самих объектах речь пойдет дальше).

Примерами параметров объектов могут быть количество каналов вмно-

гоканальнойсистеме  массовогообслуживания,количество  строк и

столбцов матрицы и т.п.

                              - 5 -


     1Управляющие операторы0служат для управления процессом модели-

рования (прогоном модели).1Операторы-команды0позволяютуправлять

работой интегрированной среды GPSS/PC. Управляющие операторы и опе-

раторы-команды обычно не включаются в исходную  программу,авво-

дятсянепосредственнос  клавиатурыПК в процессе интерактивного

взаимодействия с интегрированной средой.

     После трансляцииисходной программы в памяти ПК создается так

называемая 1текущая модель,0являющаяся совокупностьюразноготипа

1объектов0,каждый  изкоторыхпредставляет  собой некоторый набор

чисел в памяти ПК,описывающих свойства и текущее состояние объек-

та.Объекты GPSS/PC можно разделить на семь классов: динамические,

операционные, аппаратные, статистические, вычислительные, запомина-

ющие и группирующие.

     Динамические объекты,   соответствующие   заявкам  всистемах

массового обслуживания, называются в GPSS/PC 1транзактами0. Они "соз-

даются" и "уничтожаются" так, как это необходимо по логике модели в

процессе моделирования. С каждым транзактом может быть связано про-

извольноечисло параметров,несущих в себе необходимую информацию

об этом транзакте. Кроме того, транзакты могут иметь различные при-

оритеты.

     Операционные объекты GPSS/PC, называемые 1блоками0, соответству-

ют операторам-блокам исходной программы.Они,как уже говорилось,

формируют логику модели, давая транзактам указания: куда идти и что

делать дальше. Модель системы на GPSS/PC можно представить совокуп-

ностью блоков,объединенных в соответствии с логикой работы реаль-

нойсистемы  в так называемую 1блок-схему0.Блок-схема модели может

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

ков в процессе моделирования.

     Аппаратные объекты GPSS/PC - это абстрактные элементы,на ко-

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

системы.К ним относятся 1одноканальные 0и 1многоканальные устройства

и 1логические переключатели.  0Многоканальное устройство иногда назы-

вают 1памятью0.

     Одноканальные и многоканальные устройства соответствуют обслу-

живающим приборам вСМО.  Одноканальное  устройство1,0котороедля

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

вать одновременно только один транзакт.  Многоканальноеустройство

(МКУ)может  обслуживать одновременно несколько транзактов.Логи-

ческие переключатели (ЛП) используются для  моделированиядвоичных

состоянийлогического  илифизического характера.ЛП может нахо-

диться в двух состояниях: включено и выключено. Его состояние может

                              - 6 -


изменяться в процессе моделирования,а также опрашиваться для при-

нятия определенных решений.

     Статистические объектыGPSS/PC  служатдля сбора и обработки

статистических данных о функционировании модели.Книмотносятся

1очереди 0и 1таблицы0.

     Каждая очередь обеспечивает сбор и обработку данных о транзак-

тах, задержанных в какой-либо точке модели,например перед однока-

нальным устройством.Таблицы используются для получения выборочных

распределений некоторых случайных величин,например времени пребы-

вания транзакта в модели.

     К вычислительнымобъектам GPSS/PC относятся 1переменные 0(ариф-

метические и булевские) и 1функции0.Они используются для вычисления

некоторых величин, заданных арифметическими или логическими выраже-

ниями либо табличными зависимостями.

     Запоминающие объекты GPSS/PC обеспечивают хранение в памяти ПК

отдельных величин,используемых в модели,а также массивовтаких

величин. К ним относятся так называемые 1сохраняемые величины 0и 1мат-

1рицы сохраняемых величин.

     К объектам  группирующего класса относятся 1списки пользователя

и 1группы. 0Списки пользователя используются для организации очередей

сдисциплинами,  отличнымиотдисциплины "раньше пришел - раньше

обслужен". Группы в данном издании рассматриваться не будут.

     Каждому объектутого  или иного класса соответствуют 1числовые

1атрибуты0, описывающие его состояние в данный момент модельного вре-

мени.Кроме того,  имеется ряд так называемых 1системных атрибутов,

относящихся не к отдельным объектам,а к модели в целом.Значения

атрибутов всех объектов модели по окончании моделирования выводятся

в стандартный отчет GPSS/PC. Большая часть атрибутов доступна прог-

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

1(СЧА), 0которые могут использоваться в качестве операндов операторов

исходной программы. Все СЧА в GPSS/PC являются целыми числами.

     Каждый объект GPSS/PC имеет 1имя 0и 1номер0. Имена объектам даются

в различных операторах исходной программы, а соответствующие им но-

мера транслятор присваивает автоматически. Имя объекта представляет

собой начинающуюся с буквы последовательность букв латинского алфа-

вита, цифр и символа "подчеркивание". При необходимости имени любо-

го объекта, кроме имени блока, можно поставить в соответствие любой

номер с помощью оператора описания EQU, имеющего следующий формат:

                        1имя0    EQU    1номер

Блокам присваиваютсяих порядковые номера в исходной программе (не

путать с номерами строк!).

                              - 7 -


     Для 1ссылки0на какой-либо стандартный числовой атрибут некото-

рого объекта соответствующий операнд оператора  исходнойпрограммы

записывается одним из следующих способов:

       Ш1

                              1СЧА0$1имя0                      ;

       Ш1.5

                              1СЧАj0                         ,

где 1СЧА 0- системное обозначение (название) конкретного стандартного

числового атрибута данного объекта;1имя 0- имя объекта;1j 0-номер

объекта; $ - символ-разделитель.

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

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

симулятором (от английского SIMULATE - моделировать,  имитировать).

Работа GPSS-модели под управлением симулятора заключается в переме-

щении транзактов от одних блоков к другим,аналогично тому,как в

моделируемой СМО перемещаются заявки, соответствующие транзактам.

     В начальный момент времени в GPSS-модели нет ниодноготран-

закта.В  процессемоделирования симулятор генерирует транзакты в

определенные моменты времени в соответствии с теми логическими пот-

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

образом транзакты покидают модель в определенные моменты времени  в

зависимости от специфики моделируемой системы. В общем случае в мо-

дели одновременно существует большоечислотранзактов,  однаков

каждый момент времени симулятор осуществляет продвижение только ка-

кого-либо одного транзакта.

     Если транзакт начал свое движение,он перемещается от блока к

блоку по пути, предписанному блок-схемой. В тот момент, когда тран-

закт входит в некоторый блок, на исполнение вызывается подпрограмма

симулятора,соответствующая типу этого блока,а после ее выполне-

ния, при котором реализуется функция данного блока, транзакт "пыта-

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

ется до тех пор, пока не произойдет одно из следующих возможных со-

бытий:

     1) транзакт входит в блок, функцией которого является удаление

транзакта из модели;

     2) транзакт входит в блок, функцией которого является задержка

транзакта на некоторое определенное в модели время;

     3) транзакт "пытается" войти вследующийблок,  однакоблок

"отказывается"принять его.  В этом случае транзакт остается в том

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

в следующий блок.Когда условия в модели изменятся,такая попытка

может оказаться успешной, и транзакт сможет продолжить свое переме-

щение по блок-схеме.

                              - 8 -


     Если возникло одно из описанных выше условий, обработка данно-

готранзакта прекращается,и начинается перемещение другого тран-

закта.Таким образом, выполнение моделирования симулятором продол-

жается постоянно.

     Проходя через блоки модели, каждый транзакт вносит вклад в со-

держимое1счетчиков блоков0.Значения этих счетчиков доступны прог-

раммисту через СЧА блоков: W - текущее содержимое блока и N - общее

количество входов в блок.

     Каждое продвижение транзакта в модели является событием, кото-

рое должно произойти в определенный момент модельного времени.Для

того,чтобы поддерживать правильнуювременную  последовательность

событий, симулятор имеет 1таймер 0модельного времени, который автома-

тически корректируется в соответствии с логикой,  предписанноймо-

делью.

     Таймер GPSS/PC имеет следующие особенности:

     1) регистрируютсятолько целые значения (все временные интер-

валы в модели изображаются целыми числами);

     2) единица модельного времени определяется разработчиком моде-

ли,который задает все временные интервалы в одних и тех же,выб-

ранных им единицах;

     3) симулятор не анализирует состояние модели в каждыйследую-

щий момент модельного времени (отстоящий от текущего на единицу мо-

дельного времени),а продвигает таймер кмоменту  времени,когда

происходит ближайшее следующее событие.

     Значения таймера доступны программисту через системные СЧАC1

(1относительное время0) и AC1 (1абсолютное время0).

     Центральной задачей, выполняемой симулятором, является опреде-

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

модели, когда его предшественник прекратил свое продвижение. С этой

целью симулятор рассматривает каждый транзакт как элемент некоторо-

го списка.В относительно простых моделяхиспользуются  лишьдва

основных списка: 1список текущих событий 0и 1список будущих событий0.

     Список текущих событий включает в себя те транзакты, планируе-

моевремя продвижения которых равно или меньше текущего модельного

времени (к последним относятсятранзакты,движение  которыхбыло

заблокировано ранее).Он организуется в порядке убывания приорите-

тов транзактов,а в пределах каждого уровня приоритета - в порядке

поступления транзактов.

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

времяпродвижения которых больше текущего времени,т.е.события,

связанные с продвижением этих транзактов,должны произойти в буду-

                              - 9 -


щем.Этот  списокорганизуется в порядке возрастания планируемого

времени продвижения транзактов.

     Симулятор GPSS/PCпомещает транзакты в зависимости от условий

в модели в тот или иной список и переносит транзакты  изспискав

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

ботки,корректирует таймер модельного времени после обработки всех

транзактов в списке текущих событий.

       2. ОСНОВНЫЕ БЛОКИ GPSS/PC И СВЯЗАННЫЕ С НИМИ ОБЪЕКТЫ

                2.1. Блоки, связанные с транзактами

     С транзактамисвязаны блоки создания,уничтожения,  задержки

транзактов, изменения их атрибутов и создания копий транзактов.

     Для создания   транзактов,  входящихвмодель,  служитблок

GENERATE (генерировать), имеющий следующий формат:

                   1имя0    GENERATE    A,B,C,D,E

     В поле A задается среднее значение интервала времени между мо-

ментами поступления в модель двух последовательных транзактов. Если

этот интервал постоянен,то поле B не используется. Если же интер-

вал поступления является случайной величиной,то в поле B указыва-

ется модификатор среднего значения, который может быть задан в виде

модификатора-интервала или модификатора-функции.

     Модификатор-интервал используется,когда интервал поступления

транзактов является случайной величиной с равномерным законом расп-

ределения вероятностей. В этом случае в поле B может быть задан лю-

бойСЧА,  кроме ссылки на функцию,а диапазон изменения интервала

поступления имеет границы A-B, A+B.

     Например, блок

                        GENERATE    100,40

создает транзактычерезслучайные  интервалы времени,равномерно

распределенные на отрезке [60;140].

     Модификатор-функция используется, если закон распределения ин-

тервала поступления отличен от равномерного. В этом случае в поле B

должнабыть записана ссылка на функцию (ее СЧА),описывающую этот

закон,и случайный интервал поступленияопределяется,  какцелая

часть произведения поля A (среднего значения) на вычисленное значе-

ние функции.

     В поле C задается момент поступления в модель первого транзак-

та.Если это поле пусто или равно 0,то момент появленияпервого

транзакта определяется операндами A и B.

                              - 10 -


     Поле D задает общее число транзактов, которое должно быть соз-

дано блоком GENERATE. Если это поле пусто, то блок генерирует неог-

раниченное число транзактов до завершения моделирования.

     В поле E задается 1приоритет0,присваиваемый генерируемым тран-

зактам. Число уровней приоритетов неограничено, причем самый низкий

приоритет - нулевой.Если поле E пусто,то генерируемые транзакты

имeют нулевой приоритет.

     Транзакты имеют ряд стандартных числовых атрибутов.Например,

СЧА с названием PR позволяет ссылаться на приоритет транзакта.  СЧА

с названием M1 содержит так называемое 1резидентное время 0транзакта,

т.е. время, прошедшее с момента входа транзакта в модель через блок

GENERATE.СЧА с названием XN1 содержит внутренний 1номер транзакта0,

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

закт от другого.В отличие от СЧА других объектов,СЧА транзактов

не содержат ссылки на имя или номер транзакта.  Ссылка на СЧА тран-

закта всегда относится к активному транзакту, т.е. транзакту, обра-

батываемому в данный момент симулятором.

     Важными стандартными числовыми атрибутами транзактовявляются

значенияих параметров.Любой транзакт может иметь неограниченное

число параметров,содержащих те или иные числовые значения. Ссылка

наэтот  СЧАтранзактоввсегда относится к активному транзакту и

имеет вид P1j 0или Р$1имя0,  где 1j 0и 1имя 0- номер и имя параметрасоот-

ветственно.Такая ссылка возможна только в том случае,если пара-

метр с указанным номером или именем существует, т.е. в него занесе-

но какое-либо значение.

     Для присваиванияпараметрам  начальных значений или изменения

этих значений служит блок ASSIGN(присваивать),имеющий  следущий

формат:

                      1имя0    ASSIGN    A,B,C

     В поле  Aуказывается номер или имя параметра,в который за-

носится значение операнда B. Если в поле A после имени (номера) па-

раметра стоит знак + или -,то значение операнда B добавляется или

вычитается из текущего содержимого параметра.В поле С можетбыть

указано имя или номер функции-модификатора,действующей аналогично

функции-модификатору в поле B блока GENERATE.

     Например, блок

                        ASSIGN    5,0

записывает в параметр с номером 5 значение 0, а блок

                        ASSIGN   COUNT+,1

добавляет 1 к текущему значению параметра с именем COUNT.

                              - 11 -

.

     Для записи текущего модельноговремени  взаданныйпараметр

транзакта служит блок MARK (отметить), имеющий следующий формат:

                         1имя0    MARK    A

     В поле A указывается номер или имя параметра транзакта,в ко-

торый заносится текущее модельное время при входе этого транзакта в

блок MARK.Содержимое этого параметра может быть позднее использо-

вано для определения 1транзитного времени 0пребывания транзакта в ка-

кой-то части модели с помощью СЧА с названием MP.

     Например, если на входе участка модели поместить блок

                          MARK    MARKER                   ,

то навыходе  этого участка СЧА MP$MARKER будет содержать разность

между текущим модельным временем и временем,  занесенным в параметр

MARKER блоком MARK.

     Если поле A блока MARK пусто,то текущее времязаносится  на

местоотметки  времени входа транзакта в модель,  используемой при

определении резидентного времени транзакта с помощью СЧА M1.

     Для изменения приоритета транзакта служит блок PRIORITY (прио-

ритет), имеющий следующий формат:

                      1имя0    PRIORITY    A,B

     В поле A записывается новый приоритет транзакта.В поле B мо-

жетсодержаться ключевое слово BU,при наличии которого транзакт,

вошедший в блок,помещается в списке текущихсобытий  послевсех

остальныхтранзактов  новой приоритетной группы,и список текущих

событий просматривается с начала.Использование такойвозможности

будет рассмотрено ниже.

     Для удаления транзактов из модели служит блокTERMINATE(за-

вершить), имеющий следующий формат:

                       1имя0    TERMINATE    A

   Значение поляA указывает,  на сколько единиц уменьшается со-

держимое так называемого счетчика завершений при входе транзактав

данный блок TERMINATE.Если поле A не определено, то оно считается

равным 0,и транзакты,  проходящие через такой блок,не уменьшают

содержимого счетчика завершений.

     Начальное значение счетчика завершений устанавливаетсяуправ-

ляющим оператором START (начать),предназначенным для запуска про-

гона модели.Поле A этого операторасодержит  начальноезначение

счетчика завершений(см.разд.  3).Прогон модели заканчивается,

когда содержимое счетчика завершений обращается в 0. Таким образом,

вмодели  должен быть хотя бы один блок TERMINATE с непустым полем

A, иначе процесс моделирования никогда не завершится.

                              - 12 -

.

     Текущее значение счетчика завершений доступно программисту че-

рез системный СЧА TG1.

     Участок блок-схемы    модели,   связанный   с   парой   блоков

GENERATE-ТERMINATE,называется  сегментом.Простыемодели  могут

состоять из одного сегмента, в сложных моделях может быть несколько

сегментов.

     Например, простейшийсегмент модели,состоящий всего из двух

блоков GENERATE и TERMINATE и приведенный на рис. 1, в совокупности

с управлящим оператором START моделирует процесс создания случайно-

го потока транзактов,поступащих в модель со средним интерваломв

100 единиц модельного времени,и уничтожения этих транзактов.На-

чальное значение счетчика завершений равно 1000.Каждыйтранзакт,

проходящийчерез блок TERMINATE,вычитает из счетчика единицу,и

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

транзакт войдет в блок TERMINATE.При этом точное значение таймера

в момент завершения прогона непредсказуемо. Следовательно, в приве-

денномпримере продолжительность прогона устанавливается не по мо-

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

дель.

       Ш1

                        GENERATE    100,40

                        TERMINATE   1

                        START       1000

       Ш1.5

                              Рис. 1

     Если необходимоуправлять  продолжительностьюпрогона по мо-

дельному времени, то в модели используется специальный сегмент, на-

зываемый сегментом таймера.

       Ш1

                        GENERATE    100,40

                        TERMINATE

                        GENERATE    100000

                        TERMINATE   1

                        START       1

       Ш1.5

                              Рис. 2

     Например, в модели из двух сегментов,приведенной на рис.2,

первый (основной) сегмент выполняет те же функции, что и в предыду-

щем примере.Заметим,  однако, что поле A блока TERMINATE в первом

сегменте пусто, т.е. уничтожаемые транзакты не уменьшают содержимо-

госчетчика  завершений.Во втором сегменте блок GENERATE создаст

                              - 13 -


первый транзакт в момент модельного времени, равный 100000. Но этот

транзакт окажется и последним в данном сегменте,так как,войдя в

блок TERMINATE,он обратит в0  содержимоесчетчиказавершений,

установленное оператором START равным 1.Таким образом, в этой мо-

дели гарантируется завершение прогона в определенный момент модель-

ного времени,а точное количество транзактов,прошедших через мо-

дель, непредсказуемо.

     В приведенных примерах транзакты, входящие в модель через блок

GENERATE,в тот же момент модельного времени уничтожались вблоке

TERMINATE.В моделях систем массового обслуживания заявки обслужи-

ваются приборами (каналами) СМОвтечение  некоторогопромежутка

времени прежде, чем покинуть СМО. Для моделирования такого обслужи-

вания, т.е. для задержки транзактов на определенный отрезок модель-

ноговремени,  служит блок ADVANCE (задержать),  имеющий следующий

формат:

                       1имя0    ADVANCE    A,B

     Операнды в полях A и B имеют тотже  смысл,чтои  всоот-

ветствующих полях блока GENERATE.Следует отметить, что транзакты,

входящие в блок ADVANCE,переводятся из списка текущихсобытийв

список будущих событий, а по истечении вычисленного времени задерж-

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

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

0,то транзакт в тот же момент модельного времени переходит в сле-

дующий блок, оставаясь в списке текущих событий.

     Например, в сегменте, приведенном на рис. 3, транзакты, посту-

пающиев модель из блока GENERATE через случайные интервалы време-

ни, имеющие равномерное распределение на отрезке [60;140], попадают

вблок ADVANCE.  Здесь определяется случайное время задержки тран-

закта,имеющее равномерное распределение наотрезке  [30;130],и

транзакт переводится в список будущих событий. По истечении времени

задержки транзакт возвращается в список текущих событий и входит  в

блок TERMINATE, где уничтожается. Заметим, что в списке будущих со-

бытий, а значит и в блокеADVANCEможет  одновременнонаходиться

произвольное количество транзактов.

       Ш1

                        GENERATE    100,40

                        ADVANCE     80,50

                        TERMINATE   1

       Ш1.5

                              Рис. 3

                              - 14 -

.

     В рассмотренных выше примерах случайные интервалы времени под-

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

чения случайных величин с другими распределениями в GPSS/PC исполь-

зуются вычислительные объекты: переменные и функции.

     Как известно,произвольная случайная величина связана со слу-

чайнойвеличиной  R,имеющей равномерное распределение на отрезке

[0;1],через свою обратную функциюраспределения.Для  некоторых

случайныхвеличин уравнение связи имеет явное решение,и значение

случайной величины сзаданнымраспределениемвероятностей  может

быть вычислено через R по формуле.Так, например, значение случай-

ной величины E с показательным (экспоненциальным) распределением  с

параметром d вычисляется по формуле:

                         E= -(1/d) * ln(R)

Напомним, чтопараметр d имеет смысл величины,обратной математи-

ческому ожиданию E, а, следовательно, 1/d - математическое ожидание

(среднее значение) случайной величины E.

     Для получения случайной величины R с равномерным распределени-

ем на отрезке [0;1] в GPSS/PC имеются встроенные генераторы случай-

ных чисел.Для получения случайного числа путем обращения к такому

генератору достаточно записать системный СЧА RN с номером генерато-

ра, напримерRN1.  Правда,встроенныегенераторы случайных чисел

GPSS/PC дают числа не на отрезке [0;1],а целыеслучайные  числа,

равномернораспределенныеот 0 до 999,  но их нетрудно привести к

указанному отрезку делением на 1000.

     Проще всегоописанные  вычислениявGPSS/PC  выполняютсяс

использованием1арифметических переменных0.Они могут быть целыми и

действительными.1Целые переменные 0определяются перед началом моде-

лированияс  помощьюоператора определения VARIABLE (переменная),

имеющего следующий формат:

                   1имя0    VARIABLE    1выражение

Здесь 1имя 0- имя переменной, используемое для ссылок на нее, а 1выра-

1жение 0- арифметическое выражение,  определяющее переменную. Арифме-

тическоевыражение представляет собой комбинацию операндов,в ка-

честве которых могут выступать константы,СЧАи  функции,знаков

арифметическихопераций  и круглых скобок.Следует заметить,что

знаком операции умножения в GPSS/PC является символ # (номер).  Ре-

зультат каждой промежуточной операции в целых переменных преобразу-

ется к целому типу путем отбрасывания дробной части, и, таким обра-

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

     1Действительные переменные0определяютсяперед началом модели-

рования с помощью оператора определения FVARIABLE,  имеющего тот же

                              - 15 -


формат,что и оператор VARIABLE. Отличие действительных переменных

от целых заключается в том,что вдействительныхпеременных  все

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

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

расыванием дробной части.

     Арифметические переменные обоих типов имеют единственный СЧА с

названием V, значением которого является результат вычисления ариф-

метического выражения, определяющего переменную. Вычисление выраже-

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

СЧА V с именем переменной.

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

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

ления.Пусть  в модели из примера на рис.3 распределения времени

поступления транзактов и времени задержки должны иметь  показатель-

ный закон. Это может быть сделано так, как показано на рис. 4.

       Ш1

           TARR    FVARIABLE     -100#LOG((1+RN1)/1000)

           TSRV    FVARIABLE     -80#LOG((1+RN1)/1000)

                   GENERATE     V$TARR

                   ADVANCE       V$TSRV

                   TERMINATE     1

       Ш1.5

                              Рис. 4

     Переменная с именем TARR задает выражение длявычисленияин-

тервалапоступления со средним значением 100,вторая переменная с

именем TSRV - для вычисления времени задержки со средним  значением

80.Блоки  GENERATEиADVANCE  содержат в поле A ссылки на соот-

ветствующие переменные,при этом поле B не используется, так как в

поле A содержится случайная величина, не нуждающаяся в модификации.

     Большинство случайных величин неможет  бытьполученочерез

случайную величину R с помощью арифметического выражения. Кроме то-

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

обращения к математическимфункциям,вычисление  которыхтребует

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

использование вычислительных объектов GPSS/PC типа 1функция0.

     Функции используются для вычисления величин,заданных таблич-

ными зависимостями. Каждая функция определяется перед началом моде-

лирования с помощью оператора определения FUNCTION (функция), имею-

щего следующий формат:

                      1имя0    FUNCTION    A,B

Здесь 1имя 0- имя функции,используемое для ссылок на нее; A - стан-

                              - 16 -


дартный числовой атрибут,являющийся аргументом функции;B -тип

функции и число точек таблицы, определяющей функцию.

     Существует пять типов функций.Рассмотрим вначале 1непрерывные

1числовые функции, 0тип которых кодируется буквой C. Так, например, в

определении непрерывной числовой функции,таблица которой содержит

24 точки, поле B должно иметь значение C24.

     При использовании непрерывной функции длягенерированияслу-

чайныхчисел ее аргументом должен быть один из генераторов случай-

ных чисел RNj. Так, оператор для определения функции показательного

распределения может иметь следующий вид:

                    EXP    FUNCTION    RN1,C24

Особенностью использованиявстроенныхгенераторов случайных чисел

RNj в качестве аргументов функций является то,что ихзначенияв

этом контексте интерпретируются как дробные числа от 0 до 0,999999.

     Таблица с координатами точек функции располагается встроках,

следующихнепосредственноза  оператором FUNCTION.Эти строки не

должны иметь поля нумерации. Каждая точка таблицы задается парой Xi

(значение аргумента) и Yi (значение функции),  отделяемыхдругот

друга запятой. Пары координат отделяются друг от друга символом "/"

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

ность значений аргумента Xi должна быть строго возрастающей.

     Как уже отмечалось,при использовании функции в поле B блоков

GENERATE и ADVANCE вычисление интервала поступления или времени за-

держкипроизводится путем умножения операнда A на вычисленное зна-

чение функции.Отсюда следует, что функция, используемая для гене-

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

описывать зависимость y=-ln(x),представленную втабличномвиде.

Оператор FUNCTION с такой таблицей, содержащей 24 точки для обеспе-

чения достаточной точности аппроксимации, имеет следующий вид:

       Ш1

         EXP    FUNCTION    RN1,C24

        0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

        .7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3

        .92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9

       Ш1.5

        .99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8

     Вычисление непрерывной функции производится следующим образом.

Сначала определяется интервал (Xi;Xi+1), на котором находится теку-

щее значение СЧА-аргумента (в нашем примере - сгенерированноезна-

чение RN1). Затем на этом интервале выполняется линейная интерполя-

ция с использованием соответствующих значений Yi и Yi+1.Результат

интерполяции усекается (отбрасыванием дробной части) и используется

в качестве значения функции. Если функция служит операндом B блоков

GENERATEили  ADVANCE,то усечение результата производится только

                              - 17 -


после его умножения на значение операнда A.

     Использование функций для получения случайных чисел с заданным

распределением дает хотя и менее точный результат за  счетпогреш-

ностей аппроксимации,но зато с меньшими вычислительными затратами

(несколько машинных операций на выполнение линейной  интерполяции).

Чтобы к погрешности аппроксимации не добавлять слишком большую пог-

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

распределений должно быть достаточно большим (не менее 50). Эта ре-

комендация относится и к использованию переменных.

     Функции всех типов имеют единственный СЧА с названием FN, зна-

чением которого является вычисленное значение  функции.Вычисление

функции производится при входе транзакта в блок,  содержащий ссылку

на СЧА FN с именем функции.

     Заменим в примере на рис.4 переменные TARR и TSRV на функцию

EXP (рис. 5).

     Поскольку в обеих моделях используется один и тот же генератор

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

GENERATE и ADVANCE, должны получиться весьма близкими, а может быть

и идентичными.При большом количестве транзактов, пропускаемых че-

резмодель (десятки и сотни тысяч),разница в скорости вычислений

должна стать заметной.

       Ш1

         EXP    FUNCTION    RN1,C24

        0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

        .7,1.2/.75,1.38/.8,1.6/.84,1.85/.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.6/.995,5.3/.998,6.2/.999,7/.9998,8

                GENERATE    100,FN$EXP

                ADVANCE     80,FN$EXP

                TERMINATE   1

       Ш1.5

                              Рис. 5

     Особенностью непрерывных функций является то, что они принима-

ют "непрерывные" (но только целочисленные) значения в диапазонеот

Y1 до Yn , где n - количество точек таблицы. В отличие от них 1диск-

1ретные числовые функции0, тип которых кодируется буквой D в операнде

B оператора определения функции,принимают только отдельные (диск-

ретные) значения,заданные координатами Yi в строках, следующих за

оператором определения FUNCTION.При вычислении дискретной функции

текущее значениеСЧА-аргумента,указанного  вполеA  оператора

FUNCTION,сравнивается по условию <= последовательно со всеми зна-

чениями упорядоченных по возрастанию  координатXiдо  выполнения

                              - 18 -


этогоусловия при некотором i.Значением функции становится целая

часть соответствующего значения Yi.

     Если последовательность значений аргумента таблицы с координа-

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

(1,2,3,...,n), тотакую дискретную функцию с целью экономии памяти

и машинного времени удобно определить как 1списковую числовуюфунк-

1цию 0(тип L).

     Пусть в модели на рис.5 заявки,  моделируемые транзактами, с

равнойвероятностью 1/3 должны относиться к одному из трех классов

(типов) 1,2 и 3,а среднее время задержки обслуживания заявок каж-

доготипа должно составлять соответственно 70,80 и 90 единиц мо-

дельного времени. Это может быть обеспечено способом, показанным на

рис. 6.

     В блоке  ASSIGN в параметр TYPE каждого сгенерированного тран-

закта заносится тип заявки, получаемый с помощью дискретной функции

CLASS. Аргументом функции является генератор случайных чисел RN1, а

координаты ее таблицы представляют собой обратную функцию распреде-

лениядискретной  случайнойвеличины "класс заявки" с одинаковыми

вероятностями каждого из трех значений случайной величины.

     Поле A  блокаADVANCEсодержит  ссылкуна списковую функцию

MEAN, аргументом которой служит параметр TYPE входящих в блок тран-

зактов.В  зависимостиотзначений этого параметра (типа заявки)

среднее время задержки принимает одно изтрехвозможных  значений

функции MEAN: 70, 80 или 90 единиц.

       Ш1

         EXP    FUNCTION    RN1,C24

        0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

        .7,1.2/.75,1.38/.8,1.6/.84,1.85/.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.6/.995,5.3/.998,6.2/.999,7/.9998,8

         CLASS  FUNCTION    RN1,D3

        .333,1/.667,2/1,3

         MEAN   FUNCTION    P$TYPE,L3

        1,70/2,80/3,90

                GENERATE    100,FN$EXP

                ASSIGN      TYPE,FN$CLASS

                ADVANCE     FN$MEAN,FN$EXP

                TERMINATE   1

       Ш1.5

                              Рис. 6

    Следует отметить,что в  данномпримереможно  былобыне

использоватьпараметр  TYPEи обойтись одной дискретной функцией,

возвращающей с равной вероятностью одно из трех возможных  значений

среднего времени задержки. Однако использование параметров дает не-

                              - 19 -


которые дополнительные возможности,которые будут рассмотрены поз-

же.

     Транзакты могутвходить  вмодельне  только   через   блок

GENERATE,нои путем создания копий уже существующих транзактов в

блоке SPLIT (расщепить), имеющем следующий формат:

                       1имя0    SPLIT    A,B,C

     В поле A задается число создаваемых копий исходноготранзакта

(родителя),входящего  вблок SPLIT.После выхода из блока SPLIT

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

ты-потомки поступают в блок, указанный в поле B. Если поле B пусто,

то все копии поступают в следующий блок.

     Транзакт-родитель и его потомки, выходящие из блока SPLIT, мо-

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

вполе  C.Если у транзакта-родителя значение этого параметра при

входе в блок SPLIT было равно k,то при выходе из блока оно станет

равнымk+1,а значения этого параметра у транзактов-потомков ока-

жутся равными k+2, k+3 и т.д.

     Например, блок

                        SPLIT    5,MET1,NUM

создает пять копий исходного транзакта и направляет  ихвблокс

именемMET1.  Транзакт-родитель и потомки нумеруются в параметре с

именем NUM.Если, например, перед входом в блок значение этого па-

раметрау транзакта-родителя было равно 0,то при выходе из блока

оно станет равным 1, а у транзактов-потомков значения параметра NUM

будут равны 2, 3, 4, 5 и 6.

           2.2. Блоки, связанные с аппаратными объектами

     Все примеры моделей, рассматривавшиеся выше, пока еще не явля-

ются моделями систем массового обслуживания, так как в них не учте-

наосновная  особенность СМО:конкуренция заявок на использование

некоторых ограниченных ресурсов системы.Все транзакты, входящие в

этимодели  черезблок GENERATE,немедленно получают возможность

"обслуживания" в блоке ADVANCE,которыйникогда  не"отказывает"

транзактамво входе, сколько бы транзактов в нем не находилось.

     Для моделированияограниченных  ресурсовСМО в модели должны

присутствовать аппаратные объекты: одноканальные или многоканальные

устройства. 1Одноканальные устройства 0создаются в текущей модели при

использовании блоков SEIZE (занять) и RELEASE (освободить), имеющих

следующий формат:

                              - 20 -

.

       Ш1

                        1имя 0   SEIZE      A

       Ш1.5

                        1имя0   1 0RELEASE    A

     В поле A указывается номер или имя устройства.Еслитранзакт

входит в блок SEIZE,то устройство, указанное в поле A, становится

занятым и остаётся в этом состоянии до тех пор,  пока этот же тран-

зактне  пройдётсоответствующийблок  RELEASE,освобождая уст-

ройство. Если устройство, указанное в поле A блока SEIZE, уже заня-

то каким-либо транзактом, то никакой другой транзакт не может войти

в этот блок и остаётся в предыдущем блоке.  Транзакты,задержанные

(заблокированные) перед блоком SEIZE, остаются в списке текущих со-

бытий и при освобождении устройства обрабатываются с учетом приори-

тетов и очередности поступления.

     Каждое устройство имеет следующиеСЧА:  F-состояние  уст-

ройства (0 - свободно,1 - занято); FR - коэффициент использования в

долях 1000; FC - число занятий устройства; FT - целая часть средне-

го времени занятия устройства.

     Воспользуемся блоками SEIZE и RELEASE для моделированияодно-

канальной СМО с ожиданием (рис.7).Теперь блок ADVANCE находится

между блоками SEIZE и RELEASE, моделирующими занятие и освобождение

устройства с именем SYSTEM, и поэтому в нем может находиться только

один транзакт. Транзакты, выходящие из блока GENERATE в моменты за-

нятости устройства, не смогут войти в блок SEIZE и будут оставаться

в блоке GENERATE, образуя очередь в списке текущих событий.

       Ш1

         EXP    FUNCTION    RN1,C24

        0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

        .7,1.2/.75,1.38/.8,1.6/.84,1.85/.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.6/.995,5.3/.998,6.2/.999,7/.9998,8

                GENERATE    100,FN$EXP

                SEIZE       SYSTEM

                ADVANCE     80,FN$EXP

                RELEASE     SYSTEM

                TERMINATE   1

      Ш1.5

                              Рис. 7

     Для моделирования1захвата(прерывания)  0одноканальногоуст-

ройства вместоблоковSEIZE и RELEASE используются соответственно

блоки PREEMPT (захватить) и RETURN (вернуть).  БлокPREEMPTимеет

следующий формат:

                   1имя 0   PREEMPT      A,B,C,D,E

     В поле  Aуказываетсяимя или номер устройства,подлежащего

захвату.В поле B кодируется условие захвата. Если это поле пусто,

                              - 21 -


тозахват  возникает,если обслуживаемый транзакт сам не является

захватчиком.Если же в поле B записан операнд PR, то захват возни-

кает,если  приоритет  транзакта-захватчикавыше,чем  приоритет

обслуживаемого транзакта.

     Поля C,  Dи E определяют поведение транзактов,обслуживание

которых было прервано.Поле C указывает имя блока, в который будет

направлен прерванный транзакт. В поле D может быть указан номер или

имя параметра прерванного транзакта,в который записывается время,

оставшеесяэтому  транзактудозавершения  обслуживанияна уст-

ройстве.При отсутствии операнда в поле E прерванный транзакт сох-

раняетправо  наавтоматическоевосстановлениена устройстве по

окончании захвата.Если же в поле E указан операнд RE, то транзакт

теряет такое право.

     Блок RETURN имеет единственный операнд A,содержащий имяили

номер устройства, подлежащего освобождению от захвата.

     Блоки PREEMPT и RETURN могут быть использованы для моделирова-

ния СМО с абсолютными приоритетами. В простейших случаях, при одном

уровне захвата,в блоке PREEMPT используется единственныйоперанд

A.При  этом прерванный транзакт переводится симулятором из списка

будущих событий в так называемый 1список прерываний 0устройства, а по

окончаниизахвата устройства возвращается в список будущих событий

с предварительно вычисленным временем занятия устройства  дляпро-

должения обслуживания.

     Для создания в модели 1многоканальных устройств (МКУ) 0они долж-

ныбыть предварительно определены с помощью операторов определения

STORAGE (память), имеющих следующий формат:

                        1имя 0   STORAGE    A

Здесь 1имя - 0имя МКУ,используемое для ссылок на него;A - емкость

(количество каналов обслуживания) МКУ, задаваемая константой.

     Для занятия и освобождения каналов обслуживания МКУиспользу-

ется пара блоков ENTER (войти) и LEAVE (покинуть),  имеющих следую-

щий формат:

       Ш1

                        1имя 0   ENTER    A,B

       Ш1.5

                        1имя0    LEAVE    A,B

     В поле A указывается номер или имя МКУ, в поле B 1- 0число кана-

лов МКУ,занимаемых при входе в блок ENTER илиосвобождаемых  при

входе в блок LEAVE. Обычно поле B пусто, и в этом случае по умолча-

нию занимается или освобождается один канал.

     При входе транзакта в блок ENTER текущее содержимое МКУ увели-

чивается на число единиц,указанное в поле B1.0Если свободнаяем-

кость МКУ меньше значения поля B, то транзакт не может войти в блок

                              - 22 -


ENTER и остается в предыдущем блоке, образуя очередь в списке теку-

щих событий.

     При входе транзакта в блок LEAVE текущее содержимое МКУ умень-

шается на число единиц, указанное в поле B. Не обязательно освобож-

дается такое же число каналов МКУ,какое занималось при входе дан-

ного транзакта в блок ENTER, однако текущее содержимое МКУ не долж-

но становиться отрицательным.

     Многоканальные устройства имеют следующие СЧА: S - текущее со-

держимое МКУ; R - свободная емкость МКУ; SR - коэффициент использо-

вания в долях 1000; SA - целая часть среднего содержимого МКУ; SM -

максимальное содержимое МКУ;SC - число занятий МКУ;ST  -целая

часть среднего времени занятия МКУ.

     Воспользуемся блоками ENTER-LEAVE и оператором STORAGE для мо-

делирования двухканальной СМО с ожиданием (рис.  8).Еслитекущее

содержимое МКУ с именем STO2 меньше 2,т.е.в блоке ADVANCE нахо-

дится один или ни одного транзакта, то очередной транзакт, поступа-

ющий в модель через блок GENERATE, может войти в блок ENTER и затем

в блок ADVANCE.Если же текущее содержимое МКУ равно 2, то очеред-

нойтранзакт  остается в блоке GENERATE,  образуя очередь в списке

текущих событий. По истечении задержки одного из двух обслуживаемых

транзактов в блоке ADVANCE и после входа его в блок LEAVE первый из

заблокированных транзактов сможет войти в блок ENTER.

       Ш1

         STO2   STORAGE     2

         EXP    FUNCTION    RN1,C24

        0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

        .7,1.2/.75,1.38/.8,1.6/.84,1.85/.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.6/.995,5.3/.998,6.2/.999,7/.9998,8

                GENERATE    100,FN$EXP

               ENTER       STO2

                ADVANCE     160,FN$EXP

                LEAVE       STO2

                TERMINATE   1

       Ш1.5

                              Рис. 8

     К аппаратным объектам относятся также 1логические переключатели

1(ЛП)0,которые могут находиться вдвух  состояниях:"включено"и

"выключено".В  началемоделирования все ЛП находятся в состоянии

"выключено".Отдельные переключатели могут быть установлены вна-

чальное состояние "включено" с помощью оператора INITIAL (инициали-

зировать), имеющего следующий формат:

       Ш1

                         INITIAL    LS$1имя

       Ш1.5

                         INITIAL    LS1j

                              - 23 -


Здесь 1имя 0и 1j 0- соответственно имя и номер ЛП,устанавливаемогов

начальное состояние "включено".

     Для включения, выключения и инвертирования логических переклю-

чателей в процессе моделирования служит блок LOGIC (установить ЛП),

имеющий следующий формат:

                        1имя0    LOGIC X    A

     В поле A указывается имя или номер ЛП. Вспомогательный операнд

X указывает вид операции,которая производится с логическим перек-

лючателем при входе транзакта в блок:S - включение,R - выключе-

ние, I - инвертирование. Например:

       Ш1

                          LOGIC S    9

       Ш1.5

                          LOGIC R    FLAG

     Логические переключателиимеют  единственныйСЧА с названием

LS. Значение СЧА равно 1, если ЛП включен, и 0, если он выключен.

2.3. Блоки для сбора статистических данных

     Два последнихпримера в предыдущем параграфе представляют со-

бой законченные модели одноканальной и многоканальной СМО с  ожида-

нием.Однако  такие модели разрабатываются обычно для исследования

различных характеристик,связанных с ожиданием заявокв  очереди:

длиныочереди,  времени ожидания и т.п.,а в приведенных примерах

очередь транзактов образуется в списке текущих событий и недоступна

исследователю. Для регистрации статистической информации о процессе

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

объекты: очереди или таблицы.

     Объекты типа 1очередь 0создаются вмоделипутем  использования

блоков- регистраторов очередей:QUEUE (стать в очередь) и DEPART

(уйти из очереди), имеющих следующий формат:

       Ш1

                       1имя0   1 0QUEUE     A,B

       Ш1.5

                       1имя 0   DEPART    A,B

     В поле A указывается номер или имя очереди, а в поле B - число

единиц,на которое текущая длина очереди увеличиваетсяпривходе

транзактавблок QUEUE или уменьшается при входе транзакта в блок

DEPART.Обычно поле B пусто, и в этом случае его значение по умол-

чанию принимается равным 1.

     Для сбора  статистики о транзактах,  заблокированных перед ка-

ким-либо блоком модели,блоки QUEUE и DEPARTпомещаются  переди

после этого блока соответственно.При прохождении транзактов через

блоки QUEUE и DEPART соответствующим образом  изменяютсяследующие

СЧАочередей:  Q - текущая длина очереди;QM - максимальная длина

                              - 24 -


очереди;QA - целая часть средней длины очереди;QC - общее число

транзактов,вошедших в очередь;QZ - число транзактов,прошедших

через очередь без ожидания (число "нулевых"  входов);QT-  целая

часть среднего времени ожидания с учетом "нулевых" входов; QX - це-

лая часть среднего времени ожидания без учета "нулевых" входов.

     Дополним приведенную на рис. 7 модель одноканальной СМО блока-

ми QUEUE и DEPART (рис. 9). Теперь транзакты, заблокированные перед

блоком SEIZE из-за занятости устройства SYSTEM,  находятся вблоке

QUEUE, внося свой вклад в статистику о времени ожидания, накаплива-

емую в статистическом объекте типа "очередь"  сименемLINE.  При

освобождении устройства первый из заблокированных транзактов войдет

в блок SEIZE и одновременно вблокDEPART,  прекращаянакопление

статистики об ожидании этого транзакта.

       Ш1

         EXP    FUNCTION    RN1,C24

        0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

        .7,1.2/.75,1.38/.8,1.6/.84,1.85/.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.6/.995,5.3/.998,6.2/.999,7/.9998,8

                GENERATE    100,FN$EXP

                QUEUE       LINE

                SEIZE       SYSTEM

                DEPART      LINE

                ADVANCE     80,FN$EXP

                RELEASE     SYSTEM

                TERMINATE   1

       Ш1.5

                              Рис. 9

     Очень часто исследователя интересует не только среднеезначе-

ниевремени  ожидания в очереди,но и дисперсия этого времени,а

такжестатистическоераспределение  выборки   времени   ожидания,

представляемоеобычно  графическив виде гистограммы.Имея такое

распределение,можно оценить вероятность того,что время ожидания

превыситили не превысит некоторое заданное значение.Для сбора и

обработки данных о выборочном распределении времени ожидания в оче-

реди служат статистические объекты типа 1Q-таблица0.

     Для создания в модели такой таблицы она должна бытьпредвари-

тельноопределена с помощью оператора определения QTABLE (Q-табли-

ца), имеющего следующий формат:

                     1имя 0   QTABLE    A,B,C,D

Здесь 1имя 0- имя таблицы,используемое для ссылок на нее; A 1- 0номер

или имя очереди, распределение времени ожидания в которой необходи-

мо получить;B 1- 0верхняя граница первого частотного интервала таб-

лицы; C - ширина частотных интервалов; D 1- 0количество частотных ин-

                              - 25 -


тервалов.

     Диапазон всевозможныхзначений  времениожиданияв очереди,

указанной в поле A,разбивается на ряд частотных интервалов, коли-

чествокоторых  указано в поле D.Первый из этих интервалов имеет

ширину от минус бесконечности довеличины,указанной  вполеB,

включительно. Второй интервал включает значения, большие, чем вели-

чина первой границы в поле B, но меньшие или равные B+C, и т.д. Все

промежуточныеинтервалы имеют одинаковую ширину,указанную в поле

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

последняяграница.  Значения операндов B,C и D должны задаваться

целыми константами.Операнд B может быть неположительным, хотя для

Q-таблицы это не имеет смысла,так как время не может быть отрица-

тельным. Операнды C и D должны быть строго положительными.

     При прохождении транзакта через блоки QUEUE и DEPART его время

ожидания фиксируется,и к счетчику частотного интервала таблицы, в

который попало это время, добавляется 1. Одновременно в таблице на-

капливается информация для вычисления среднего значения  исредне-

квадратического отклонения (корня из дисперсии)  времениожидания.

Поокончании моделирования среднее значение и среднеквадратическое

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

частотные интервалы выводятся в стандартный отчет GPSS/PC.

     Таблицы, как и другие объекты GPSS/PC,имеют СЧА:ТС - общее

число транзактов,вошедших в очередь,связанную с таблицей;TB -

целаячасть среднего времени ожидания в очереди;TD - целая часть

среднеквадратического отклонения времени ожидания в очереди.

     Дополним модель из примера на рис. 9 оператором QTABLE для по-

лученияраспределения  времениожиданияв  очереди с именем LINE

(рис. 10).

       Ш1

         WTIME  QTABLE      LINE,50,50,10

         EXP    FUNCTION    RN1,C24

        0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

        .7,1.2/.75,1.38/.8,1.6/.84,1.85/.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.6/.995,5.3/.998,6.2/.999,7/.9998,8

                GENERATE    100,FN$EXP

                QUEUE       LINE

    SEIZE       SYSTEM

                DEPART      LINE

                ADVANCE     80,FN$EXP

                RELEASE     SYSTEM

                TERMINATE   1

       Ш1.5

                              Рис. 10

                              - 26 -

.

     Оператор определения таблицы с именем WTIME разбивает ось вре-

мени на 10 частотных интервалов.Первый интервал включает значения

от0 до 50,  второй - от 50 до 100,третий - от 100 до 150 и т.д.

Последний,десятый,  интервал включает значения,  превышающие 450.

Если,например,  времяожиданиянекоторого  транзактав очереди

составило 145 единиц модельного времени,ток  счетчикутретьего

частотного интервала будет добавлена 1.Следует заметить,что ин-

формация в таблицу с именем WTIME заносится автоматически, при вхо-

де транзактов в блоки QUEUE и DEPART, и никаких специальных мер для

этого принимать не требуется.

     Таблицы в GPSS/PC могут использоваться в более общем случае не

только для табулирования времени ожидания в очереди, но и для полу-

чениявыборочных распределений произвольных СЧА любых объектов мо-

дели.Для определения таблиц служит оператор TABLE (таблица), фор-

мат которого совпадает с форматом оператора QTABLE. Отличие состоит

лишь в том,что в поле A оператора TABLE записываетсястандартный

числовой атрибут,выборочное распределение которого необходимо по-

лучить,а операнды B,  C и D определяют разбиение на частотные ин-

тервалы диапазона всевозможных значений этого СЧА.

     Занесение информации в таблицу, определяемую оператором TABLE,

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

Q-таблиц. Для этого используется специальный блок TABULATE (табули-

ровать), имеющий следующий формат:

                       1имя 0   TABULATE    A

     В поле A указывается номер или имя таблицы, определенной соот-

ветствующим оператором TABLE.

     При входе транзакта в блок TABULATE текущее значение табулиру-

емого аргумента таблицы,указанного в поле A оператора TABLE,за-

носится в нее в соответствии с заданным в операторе TABLE разбиени-

ем области значений аргумента на частотные интервалы.  Одновременно

корректируются текущие значения СЧА таблицы:счетчик входов в таб-

лицу TC,среднее время ожидания TB и среднеквадратическое отклоне-

ние времени ожидания TD.

     Пусть, например,в модели многоканальной СМО,приведенной на

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

системе, включающего время ожидания в очереди и время обслуживания.

Это может быть обеспечено способом, показанным на рис. 11.

     Оператор TABLEопределяет таблицу с именем TTIME,аргументом

которой служит СЧА М1 - времяпребываниятранзакта  вмодели.В

рассматриваемоймодели значение СЧА M1 одновременно будет являться

временем пребывания транзакта в СМО в том  случае,еслизанесение

                              - 27 -


информации в таблицу производить перед выходом транзакта из модели.

Поэтому блок TABULATE,заносящий информацию овремени  пребывания

каждоготранзакта  вмодели в таблицу TTIME,располагается перед

блоком TERMINATE.Диапазон возможных значенийвременипребывания

транзактав модели разбит в операторе TABLE на 12 частотных интер-

валов, ширина которых (кроме последнего) равна 100 единицам модель-

ного времени.

       Ш1

         TTIME  TABLE       M1,100,100,12

         STO2   STORAGE     2

         EXP    FUNCTION    RN1,C24

        0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

        .7,1.2/.75,1.38/.8,1.6/.84,1.85/.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.6/.995,5.3/.998,6.2/.999,7/.9998,8

                GENERATE    100,FN$EXP

                ENTER       STO2

                ADVANCE     160,FN$EXP

                LEAVE       STO2

                TABULATE    TTIME

                TERMINATE   1

       Ш1.5

                              Рис. 11

2.4. Блоки, изменяющие маршруты транзактов

     В приведенныхвыше  примерахтранзакты,выходящие из любого

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

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

зависимости от некоторых условий. Эту возможность обеспечивают бло-

ки изменения маршрутов транзактов.

     Блок TRANSFER (передать) служит для передачи входящихвнего

транзактов в блоки, отличные от следующего. Блок имеет девять режи-

мов работы,из которых рассмотрим здесь лишьтри  наиболеечасто

используемых. В этих трех режимах блок имеет следующий формат:

                     1имя 0   TRANSFER    A,B,C

Смысл операндов в полях A, B и C зависит от режима работы блока.

     В режиме 1безусловной передачи 0поля A и C пусты,авполеB

указывается имя блока,к которому безусловным образом направляется

транзакт, вошедший в блок TRANSFER. Например:

                        TRANSFER    ,FINAL

     В режиме 1статистической передачи 0операнд A определяетвероят-

ность,с которой транзакт направляется в блок, указанный в поле C.

С вероятностью 1-A транзакт направляется в блок, указанный в поле B

(в следующий, если поле B пусто).

                              - 28 -


     Вероятность в поле A может быть задананепосредственнодеся-

тичной дробью, начинающейся с точки. Например, блок

                     TRANSFER    .75,THIS,THAT

с вероятностью 0,75 направляет транзакты в блок с именем THAT,  а с

вероятностью 0,25 - в блок с именем THIS.

     Если же  поле A начинается не с десятичной точки и не содержит

одного из ключевых слов - признаков других режимов работы блока, то

егозначение рассматривается как количество тысячных долей в веро-

ятности передачи. Например, предыдущий блок TRANSFER можно записать

также в следующем виде:

                     TRANSFER    750,THIS,THAT

     В режиме  1логическойпередачи0в поле A записывается ключевое

слово BOTH (оба).Транзакт,поступающий в блок TRANSFER,сначала

пытаетсявойти  в блок,указанный в поле B (или в следующий блок,

если поле B пусто),а если это не удается,т.е. блок B отказывает

транзакту во входе,то в блок,указанный в поле C. Если и эта по-

пытка неудачна, то транзакт задерживается в блоке TRANSFER до изме-

нения условий в модели, делающего возможным вход в один из блоков B

или C,причем при одновременно возникшей возможностипредпочтение

отдается блоку B. Например:

                    TRANSFER    BOTH,MET1,MET2

     Блок TEST  (проверить) служит для задержки или изменения марш-

рутов транзактов в зависимости от соотношения двухСЧА.Он  имеет

следующий формат:

                      1имя 0   TEST X    A,B,C

     Вспомогательный операндX содержит условие проверки соотноше-

ния между СЧА и может принимать следующие значения:L (меньше); LE

(меньше или равно);E (равно);NE (не равно); GE (больше или рав-

но); G (больше). Поле A содержит первый, а поле B - второй из срав-

ниваемых СЧА.Если проверяемое условие A X B выполняется,то блок

TEST пропускает транзакт в следующий блок.Если же это условиене

выполняется,то транзакт переходит к блоку, указанному в поле C, а

если оно пусто, то задерживается перед блоком TEST.

     Например, блок

                      TEST LE    P$TIME,C1

не впускаеттранзакты,  у которых значение параметра с именем TIME

больше текущего модельного времени. Блок

                      TEST L     Q$LINE,5,OUT

направляет транзакты в блок с именем OUT, если текущая длина очере-

ди LINE больше либо равна 5.

                              - 29 -

.

     Для задержки или изменения маршрута транзактоввзависимости

от   состояния   аппаратных   объектов   модели  служитблокGATE

(впустить), имеющий следующий формат:

                       1имя 0   GATE X    A,B

     Вспомогательный операнд X содержит код состоянияпроверяемого

аппаратногообъекта,  авполе A указывается имя или номер этого

объекта. Если проверяемый объект находится в заданном состоянии, то

блок GATE пропускает транзакт к следующему блоку.  Если же заданное

в блоке условие не выполняется, то транзакт переходит к блоку, ука-

занномувполе B,а если это поле пусто,то задерживается перед

блоком GATE.

     Операнд X  можетпринимать следующие значения:U (устройство

занято);NU (устройство свободно);I (устройство  захвачено);NI

(устройство не захвачено);SE (МКУ пусто);SNE (МКУ не пусто); SF

(МКУ заполнено);SNF (МКУ не заполнено);LS (ЛП включен),LR (ЛП

выключен).

     Например, блок

                        GATE SNE    BUF3

отказывает во входе транзактам,поступающим в моменты, когда в МКУ

с именем BUF3 все каналы обслуживания свободны. Блок

                        GATE LR     4,BLOK2

направляет транзактывблок  сименемBLOK2,  еслив момент их

поступления ЛП с номером 4 включен.

     Блоки рассматриваемойгруппы  используютсяпри моделировании

различных СМО с потерями заявок.Воспользуемся,например, блоками

TRANSFER для моделирования двухканальной СМО с отказами и повторны-

ми попытками (рис. 12).

       Ш1

         STO2   STORAGE     2

         EXP    FUNCTION    RN1,C24

        0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

        .7,1.2/.75,1.38/.8,1.6/.84,1.85/.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.6/.995,5.3/.998,6.2/.999,7/.9998,8

                GENERATE    100,FN$EXP

         ENT1   TRANSFER    BOTH,,REFUS

                ENTER       STO2

                ADVANCE     160,FN$EXP

                LEAVE       STO2

                TERMINATE   1

         REFUS  TRANSFER    .1,,OUT

                ADVANCE     250,FN$EXP

                TRANSFER    ,ENT1

         OUT    TERMINATE   1

       Ш1.5

                              Рис. 12

                              - 30 -

.

     Транзакты, поступающиев  модель,попадают в блок TRANSFER с

именем ENT1,работающий в логическом режиме. Если в момент поступ-

лениятранзакта  вМКУ STO2 хотя бы один канал свободен,то блок

TRANSFER направит транзакт в следующий блок,т.е.в  блокENTER.

Если же в момент поступления оба канала МКУ заняты,и поэтому блок

ENTER отказывает во входе,тотранзакт  будетнаправленвблок

TRANSFER с именем REFUS,работающий в статистическом режиме. С ве-

роятностью 0,9 транзакты изэтогоблока  передаютсявследующий

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

TRANSFER,работающего в безусловном режиме,передаются  вновьна

входмодели в блок с именем ENT1.С вероятностью 0,1 транзакты из

блока с именем REFUS передаются в блок TERMINATE с именем  OUTдля

уничтожения.

     Следует заметить,что для уничтожения транзактов,получивших

отказв  обслуживании,понадобилсяотдельный  блок TERMINATE для

фиксации в стандартном отчете количества  потерянныхтранзактовс

помощью счетчика блока с именем OUT (СЧА N$OUT).

     Для моделирования той же СМО может быть использован также блок

TEST (рис.13).В этом варианте модели транзакт проходит  вблок

ENTER, если текущее число занятых каналов (СЧА S$STO2) меньше 2.

       Ш1

         STO2   STORAGE     2

         EXP    FUNCTION    RN1,C24

        0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

        .7,1.2/.75,1.38/.8,1.6/.84,1.85/.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.6/.995,5.3/.998,6.2/.999,7/.9998,8

                GENERATE    100,FN$EXP

         ENT1   TEST L      S$STO2,2,REFUS

                ENTER       STO2

                ADVANCE     160,FN$EXP

                LEAVE       STO2

                TERMINATE   1

         REFUS TRANSFER    .1,,OUT

                ADVANCE     250,FN$EXP

                TRANSFER    ,ENT1

         OUT    TERMINATE   1

       Ш1.5

                              Рис. 13

     При использовании блока GATE модель принимает вид,показанный

на рис.14.В этом варианте транзакт проходит в блок ENTER,  если

условие "МКУ STO2 не заполнено" истинно.

    

    

                              - 31 -

.

       Ш1

         STO2   STORAGE     2

         EXP    FUNCTION    RN1,C24

       0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

        .7,1.2/.75,1.38/.8,1.6/.84,1.85/.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.6/.995,5.3/.998,6.2/.999,7/.9998,8

                GENERATE    100,FN$EXP

         ENT1   GATE SNF    STO2,REFUS

                ENTER       STO2

                ADVANCE     160,FN$EXP

                LEAVE       STO2

                TERMINATE   1

         REFUS  TRANSFER    .1,,OUT

                ADVANCE     250,FN$EXP

                TRANSFER    ,ENT1

         OUT    TERMINATE   1

       Ш1.5

                              Рис. 14

                 2.5. Блоки, работающие с памятью

     Для храненияв  памяти отдельных числовых значений и массивов

таких значений используются сохраняемые величины и матрицы сохраня-

емых величин.

     1Сохраняемые величины 0могут использоваться в модели дляхране-

нияисходных данных,которые надо изменять при различных прогонах

модели, промежуточных значений и результатов моделирования. В нача-

лемоделирования  все сохраняемые величины устанавливаются равными

0. Для установки отличных от 0 начальных значений сохраняемых вели-

чин используется оператор INITIAL, имеющий следующий формат:

       Ш1

         INITIAL    X$1имя0,1значение

       Ш1.5

                     INITIAL    X1j0,1значение

Здесь 1имя 0и 1j 0- соответственно имя и номер сохраняемой величины,а

1значение 0- присваиваемое ей начальное значение (константа).

     Для изменениясохраняемых  величинвпроцессе моделирования

служит блок SAVEVALUE (сохранить величину),имеющий следующий фор-

мат:

                      1имя 0   SAVEVALUE    A,B

     В поле A указывается номер или имя сохраняемой величины, в ко-

торую записывается значение операнда B.Если в поле A послеимени

(номера) сохраняемой величины стоит знак + или -,  то значение опе-

ранда B добавляется или вычитается из текущего содержимого сохраня-

емой величины. Например:

       Ш1

                       SAVEVALUE    5,Q$LINE

       Ш1.5

                       SAVEVALUE    NREF+,1

                              - 32 -

.

     Сохраняемые величины имеют единственныйСЧАс  названиемX,

значением которого является текущее значение соответствующей сохра-

няемой величины.

     Изменим пример на рис. 14 таким образом, чтобы исходные данные

модели(средний  интервалпоступлениятранзактов и среднее время

обслуживания) были заданы сохраняемыми величинами,а результат мо-

делирования (количество потерянных транзактов) фиксировался также в

сохраняемой величине.Такая модель будет иметь вид,показанный на

рис. 15.

     1Матрицы 0сохраняемыхвеличин дают возможность упорядочить сох-

раняемые значения в виде матриц m*n, где m - число строк, n - число

столбцов матрицы.Каждая матрица должна быть перед началом модели-

рования определена с помощью оператора MATRIX (определить матрицу),

имеющего следующий формат:

                      1имя 0   MATRIX    A,B,C

     Поле A  операторанеиспользуется  и сохранено в GPSS/PC для

совместимости со старыми версиями GPSS.В полях B и Cуказываются

соответственно число строк и столбцов матрицы,  задаваемые констан-

тами,причем общее число элементов, равное произведению B на C, не

должно превышать 8191. Например, оператор

                      MTAB    MATRIX    ,10,2

определяет матрицусименем  MTAB,содержащую десять строк и два

столбца.

       Ш1

                INITIAL     X$TARR,100

                INITIAL     X$TSRV,160

         STO2   STORAGE     2

         EXP    FUNCTION    RN1,C24

        0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

        .7,1.2/.75,1.38/.8,1.6/.84,1.85/.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.6/.995,5.3/.998,6.2/.999,7/.9998,8

                GENERATE    X$TARR,FN$EXP

         ENT1   GATE SNF    STO2,REFUS

                ENTER       STO2

                ADVANCE     X$TSRV,FN$EXP

                LEAVE       STO2

         OUT    TERMINATE   1

         REFUS  TRANSFER    .1,,COUT

                ADVANCE     250,FN$EXP

                TRANSFER    ,ENT1

         COUT   SAVEVALUE   NREF+,1

                TRANSFER    ,OUT

       Ш1.5

                              Рис. 15

    

                              - 33 -

.

     В начале моделирования элементы всех определенных матриц уста-

навливаются равными 0. Для установки отличных от 0 начальных значе-

ний отдельных элементов матриц используется оператор INITIAL, имею-

щий следующий формат:

       Ш1

                  INITIAL    MX$1имя0(1a,b0),1значение

       Ш1.5

                  INITIAL    MX1j0(1a,b)0,1значение

Здесь 1имя 0и 1j 0- соответственно имя и номер матрицы;1a 0и 1b 0- номера

соответственно строки и столбца, задаваемые константами; 1значение 0-

присваиваемое элементу матрицы начальное значение, задаваемое также

константой.

     Для изменения значений элементов матриц в процессе моделирова-

ния служит блок MSAVEVALUE (сохранить значение  элементаматрицы),

имеющий следующий формат:

                   1имя 0   MSAVEVALUE    A,B,C,D

     В поле A указывается имя или номерматрицы,  послекоторого,

как и в блоке SAVEVALUE,может стоять знак + или -.В полях B и C

указываются номера соответственно строкиистолбца,  определяющие

изменяемый элемент матрицы.В поле D указывается величина, исполь-

зуемая для изменения заданного элемента матрицы. Например:

       Ш1

                 MSAVEVALUE    5,3,2,X1

       Ш1.5

                 MSAVEVALUE    MTAB+,P$ROW,P$COL,1

     Матрицы имеют единственный СЧА с названием MX, ссылка на кото-

рый записывается в следующем виде:

       Ш1

                       MX$1имя0(1a,b0)

       Ш1.5

                       MX1j0(1a,b)

Здесь 1имя 0и 1j 0- соответственно имя и номер матрицы;1a 0и 1b 0- номера

соответственно строки и столбца, задаваемые константами или ссылка-

ми на СЧА параметров транзактов. Например:

       Ш1

                       MX5(2,1)

       Ш1.5

                       MX$MTAB(P$ROW,P$COL)

          2.6. Блоки для работы со списками пользователя

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

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

расходуетслишком  многовремени на просмотр этого списка с целью

выбора очередного транзакта для продвижения. Для экономии машинного

временизаблокированные транзакты целесообразно помещать в так на-

зываемые 1списки пользователя 0и оставлять их там до тех пор, пока не

выполнятсяусловия,  позволяюшие дальнейшее продвижение этих тран-

зактов. Кроме того, размещение ожидающих транзактов в списках поль-

зователя позволяет организовать различные дисциплины очередей,от-

                              - 34 -


личные от дисциплины "раньше пришел - раньше обслужен", реализован-

ной в списке текущих событий.

     Списки пользователя представляют собой некоторые буферы,куда

могутвременно помещаться транзакты,выведенные из списка текущих

событий.В отличие от списков текущих и будущих событийтранзакты

вводятся в списки пользователя и выводятся из них не автоматически,

а в соответствии с логикой модели с помощью специальных блоков.

     Для ввода  транзактоввсписок пользователя служит блок LINK

(ввести в список),который может быть использован в двухрежимах:

условном и безусловном. Ограничимся рассмотрением лишь безусловного

режима, в котором блок LINK имеет следующий формат:

                        1имя 0   LINK    A,B

     В поле A задается имя или номер списка пользователя, в который

безусловнымобразом помещается транзакт,вошедший в блок.Поле B

определяет,в какое место спискапользователя  следуетпоместить

этот транзакт. Если в поле B записано ключевое слово FIFO, то тран-

закт помещается в конец списка, если LIFO - в начало списка. В дру-

гихслучаях транзакты упорядочиваются в соответствии с вычисленным

значением поля B,где обычно записывается один из СЧАтранзактов,

таких как PR,M1 или P.Если поле B содержит СЧА PR, то транзакты

упорядочиваются по убыванию приоритета.В остальных случаях произ-

водится упорядочение по возрастанию указанного СЧА.

     Например, блок

                       LINK    5,FIFO

помещает транзакты в список пользователя с номером 5 в  порядкеих

поступления в блок. Блок

                       LINK    BUFER,P$ORDER

помещает транзакты в список пользователя с именем BUFER, упорядочи-

вая их по возрастанию параметра с именем ORDER.

     Условия, прикоторых транзакт помещается в список пользовате-

ля,в безусловном режиме проверяются средствами,предусмотренными

разработчиком модели. Например, направить транзакт в список пользо-

вателя в случае занятости устройства можнотак,как  показанона

рис. 16.Если устройство с именем FAC4 занято,то  блокGATEне

впускает транзакт в блок SEIZE, а направляет его в блок LINK с име-

нем WAIT,и транзакт вводится в конец списка пользователя с именем

BUFER.

                              - 35 -

.

       Ш1

                       ....................

                       GATE NU    FAC4,WAIT

                       SEIZE      FAC4

                       ....................

               WAIT    LINK       BUFER,FIFO

                       ....................

       Ш1.5

                              Рис. 16

     Для вывода  одного или нескольких транзактов из списка пользо-

вателя и помещения их обратно в список текущих событий служитблок

UNLINK (вывести из списка), имеющий следующий формат:

                  1имя 0   UNLINK X    A,B,C,D,E,F

     В поле A указывается имя или номер списка пользователя. Поле B

содержит имя блока,в который переходят выведенные из списка поль-

зователя транзакты. В поле C указывается число выводимых транзактов

или ALL для вывода всех находящихся в списке транзактов.

     Операнды в  поляхD и E вместе со вспомогательным операндом X

определяют способ и условия вывода транзактов из списка пользовате-

ля.Если поля D и E пусты, то и операнд X не используется, а тран-

закты выводятся с начала списка пользователя.Если поле D содержит

ключевоеслово  BACK,тополеEи вспомогательный операнд X не

используются,а транзакты выводятся с концасписка.  Востальных

случаяхзначение поля D интерпретируется как номер параметра тран-

зактов,находящихся в списке пользователя,а из списка  выводится

заданноечисло тех транзактов,у которых значение этого параметра

по отношению к значению операнда в полеEудовлетворяет  условию,

заданномувспомогательнымоперандом X.  Операнд X принимает те же

значения, что и в блоке TEST.

     В поле F указывается имя блока, куда переходит транзакт, выхо-

дящий из блока UNLINK,если из списка пользователя невыведенни

один транзакт. Если это поле пусто, то выводящий транзакт переходит

в следующий блок независимо от количества выведенных транзактов.

     Например, блок

UNLINK      5,NEXT,1

выводит изсписка  пользователя с номером 5 один транзакт с начала

списка и направляет его в блок с именем NEXT. Блок

UNLINK      BUFER,ENT1,1,BACK

выводит из списка пользователя с именем BUFER один транзакт с конца

списка и направляет его в блок с именем ENT1. Блок

UNLINK E    P$UCH,MET2,ALL,COND,P$COND,MET3

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

                              - 36 -


UCH выводящего транзакта,и направляет в блок сименем  MET2все

транзакты,содержимое параметра COND которых равно содержимому од-

ноименного параметра выводящего транзакта.Если таких транзактов в

списке не окажется,то выводящий транзакт будет направлен в блок с

именем MET3, в противном случае - к следующему блоку.

     Следует отметить   следующие   особенности   выполненияблока

UNLINK.Во-первых, если поля D и E содержат ссылки на СЧА транзак-

тов, то поле D вычисляется относительно транзактов в списке пользо-

вателя,а поле E - относительноактивного  транзакта.Во-вторых,

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

продвижение транзакта с наивысшим приоритетом, а при равенстве при-

оритетов отдает предпочтение транзакту-инициатору вывода.

     Каждый списокпользователя имеет следующие СЧА:CH - текущая

длина списка;CA - средняя длина списка (целая часть); CM - макси-

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

список;CT - целая часть среднего времени пребываниятранзактав

списке.

     Воспользуемся рассмотреннымиблоками для моделирования много-

канальной СМО с ожиданием транзактов вспискепользователя  (рис.

17). Если МКУ с именем STO2 не заполнено,блок GATE впускает вновь

прибывшийтранзакт  вблок ENTER,и в МКУ занимается один канал.

Если же МКУ заполнено, то блок GATE направляет транзакт в блок LINK

сименем  WAIT,помещающий транзакт в конец списка пользователя с

именем BUFER, моделирующего очередь к МКУ. Каждый транзакт, покида-

ющийМКУ  позавершенииобслуживания и освобождающий один канал,

проходит блок UNLINK и выводит один транзакт с начала списка  (если

список не пуст),направляя его в блок с именем ENT1 на занятие ка-

нала в МКУ.

       Ш1

         STO2   STORAGE     2

         EXP    FUNCTION    RN1,C24

        0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

        .7,1.2/.75,1.38/.8,1.6/.84,1.85/.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.6/.995,5.3/.998,6.2/.999,7/.9998,8

                GENERATE    100,FN$EXP

                GATE SNF    STO2,WAIT

        ENT1   ENTER       STO2

                ADVANCE     160,FN$EXP

                LEAVE       STO2

                UNLINK      BUFER,ENT1,1

                TERMINATE   1

         WAIT   LINK        BUFER,FIFO

       Ш1.5

                              Рис. 17

                              - 37 -


     Заметим, что для изменения дисциплины обслуживанияна"позже

пришел-  раньшеобслужен" достаточно или заменить в поле B блока

LINK FIFO на LIFO, или записать в поле D блока UNLINK операнд BACK.

Следуеттакже обратить внимание на то,что блоки QUEUE-DEPART для

сбора статистики об ожидающих транзактах не используются,  таккак

почтивсе те же данные можно получить из статистики о списке поль-

зователя.

     Рассмотрим еще   один   пример,иллюстрирующийиспользование

списков пользователя для организации нестандартных дисциплин обслу-

живания.Пусть в одноканальной СМО с ожиданием требуется организо-

вать такую дисциплину, при которой приоритет отдается заявкам с на-

именьшим временем обслуживания. Такая модель будет иметь вид, пока-

занный на рис. 18.

     В параметр TSRV поступающих в модель транзактов в блоке ASSIGN

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

ванием функции EXP.Если устройство SYSTEM свободно,то блок GATE

впускает транзакт в блок SEIZE,и устройство занимаетсянавремя

P$TSRV.Если  же в момент поступления транзакта устройство занято,

то блок GATE направляет транзакт в блок LINK,который вводит тран-

       Ш1

         EXP    FUNCTION    RN1,C24

        0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

        .7,1.2/.75,1.38/.8,1.6/.84,1.85/.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.6/.995,5.3/.998,6.2/.999,7/.9998,8

                GENERATE    100,FN$EXP

                ASSIGN      TSRV,80,EXP

                GATE NU     SYSTEM,WAIT

         SFAC   SEIZE       SYSTEM

                ADVANCE     P$TSRV

                RELEASE     SYSTEM

                UNLINK      LINE,SFAC,1

                TERMINATE   1

         WAIT   LINK        LINE,P$TSRV

       Ш1.5

                              Рис. 18

зактв  списокпользователя LINE,упорядочивая транзакты по воз-

растанию времени обслуживания, записанного в параметре P$TSRV. Блок

UNLINKпо освобождении устройства выводит с начала списка транзакт

с наименьшим временем обслуживания,обеспечивая тем самым заданную

дисциплину.

    

    

                              - 38 -

.

                 3. УПРАВЛЯЮЩИЕ ОПЕРАТОРЫ GPSS/PC

     Для управления прогоном модели используются управляющие опера-

торы GPSS/PC.С одним из них - оператором START - мы уже сталкива-

лись при рассмотрении блока TERMINATE. Оператор START (начать) име-

ет следующий формат:

                         START    A,B,C,D

     Поле A содержит константу, задающую начальное значение счетчи-

ка завершений.В поле B может быть записано ключевоесловоNP-

признакподавления  формирования стандартного отчета по завершении

моделирования.Если поле B пусто,то по окончании прогонамодели

формируетсяотчет со стандартной статистической информацией о всех

объектах модели (см.разд.5). Поле C не используется и сохранено

для совместимости со старыми версиями GPSS.Поле D может содержать

1 для включения в отчет списков текущих и будущих событий. Если по-

ле D пусто,то выдача в отчет содержимого этих списков не произво-

дится.

     Оператор SIMULATE (моделировать) устанавливает предел реально-

го времени,отводимого на прогон модели. Если прогон не завершится

до истечения этого времени, то он будет прерван принудительно с вы-

дачей накопленной статистики в отчет.

     Оператор SIMULATEимеет  единственныйоперанд A,содержащий

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

Операторразмещается перед оператором START,начинающим лимитиро-

ванный прогон.

     Оператор RMULT (установить значения генераторов) позволяет пе-

ред началом прогона установить начальные значения генераторовслу-

чайных чисел RN,определяющие генерируемые ими последовательности.

Поля A-G оператора могут содержать начальные  значениягенераторов

соответственно RN1-RN7,задаваемые константами. Начальные значения

генераторов,не установленные операторами RMULT, совпадают с номе-

рами генераторов.

     Оператор RESET (сбросить) сбрасывает всю статистическую инфор-

мацию,накопленную  в процессе прогона модели.При этом состояние

аппаратных, динамических и запоминающих объектов, а также генерато-

ров случайных чисел сохраняется,и моделирование может быть возоб-

новлено с повторным сбором статистики. Оператор не имеет операндов.

     С операторомRESET  связано различие между относительным (СЧА

C1) и абсолютным (СЧА AC1) модельным временем. Таймер относительно-

го времени C1 измеряет модельное время,прошедшее после последнего

сброса статистики оператором RESET,а таймерабсолютного  времени

                              - 39 -


AC1 - модельное время, прошедшее после начала первого прогона моде-

ли.Если не использовалось ни одного оператора RESET,то значения

этихтаймеров совпадают.Оператор RESET устанавливает таймер C1 в

ноль и не влияет на таймер AC1.

     Оператор RESET используется обычно при моделировании нестацио-

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

интервалам стационарности или исключить влияние переходного периода

на собираемую статистическую информацию.

     Пусть, например,в модели, приведенной на рис. 18, необходимо

отбросить статистику,собираемую на первой тысяче транзактов.Это

может быть сделано способом, показанным на рис. 19.

     Первый оператор START начинает прогон модели длиной 1000 тран-

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

этомпериоде,  не используется,в поле B оператора указан признак

подавления формирования отчета NP. Оператор RESET сбрасывает накоп-

леннуюстатистику,  неизменяя состояния модели.Второй оператор

START начинает основной прогон модели с формированием отчета по за-

вершении прогона.

       Ш1

         EXP    FUNCTION    RN1,C24

        0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

        .7,1.2/.75,1.38/.8,1.6/.84,1.85/.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.6/.995,5.3/.998,6.2/.999,7/.9998,8

                GENERATE    100,FN$EXP

                ASSIGN      TSRV,80,EXP

                GATE NU     SYSTEM,WAIT

         SFAC   SEIZE       SYSTEM

                ADVANCE     P$TSRV

                RELEASE     SYSTEM

                UNLINK      LINE,SFAC,1

                TERMINATE   1

         WAIT   LINK        LINE,P$TSRV

                START       1000,NP

                RESET

                START       10000

       Ш1.5

                              Рис. 19

     Оператор CLEAR (очистить) очищает модель,подготавливая еек

повторному прогону.При этом сбрасывается вся накопленная в преды-

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

приводится к исходному состоянию,как перед первым прогоном. Уста-

навливаются в ноль сохраняемые величины и матрицы, что следует учи-

тыватьпри  использовании этих объектов для хранения исходных дан-

ных.Исключение составляют генераторы случайных чисел,которые не

                              - 40 -


возвращаютсяк своим начальным значениям,что позволяет повторить

прогон модели на новой последовательности случайных чисел. Оператор

не имеет операндов.

     Оператор CLEAR используется обычно для организациинескольких

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

чисел.Перед повторением прогона можно при необходимости переопре-

делить отдельные объекты модели,напримеремкости  многоканальных

устройств.

     Пусть, например,требуется повторить прогон модели, приведен-

ной на рис.17, три раза при емкости МКУ, равной 1, 2 и 3. Это мо-

жет быть выполнено так,как показанона  рис.20.После  каждой

очисткимодели оператором CLEAR оператор STORAGE устанавливает но-

вое значение емкости МКУ с именем STO2.

     Оператор END(закончить)  завершает1сеанс 0работы с GPSS/PC и

возвращает управление в операционнуюсистему.Оператор  неимеет

операндов.

       Ш1

         STO2   STORAGE     1

         EXP    FUNCTION    RN1,C24

        0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

        .7,1.2/.75,1.38/.8,1.6/.84,1.85/.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.6/.995,5.3/.998,6.2/.999,7/.9998,8

                GENERATE    100,FN$EXP

                GATE SNF    STO2,WAIT

         ENT1   ENTER       STO2

                ADVANCE     160,FN$EXP

                LEAVE       STO2

                UNLINK      BUFER,ENT1,1

                TERMINATE   1

         WAIT   LINK        BUFER,FIFO

                START       10000

                CLEAR

         STO2   STORAGE     2

                START       10000

                CLEAR

         STO2   STORAGE     3

                START       10000

       Ш1.5

                              Рис. 20

     Как правило,управляющие операторы не включаютсяв  исходную

программу,т.е.  не имеют номеров строк,а вводятся пользователем

непосредственно с клавиатуры ПК.

    

    

                              - 41 -

.

         4. НЕКОТОРЫЕ ПРИЕМЫ КОНСТРУИРОВАНИЯ GPSS-МОДЕЛЕЙ

                     4.1. Косвенная адресация

     В рассматривавшихся до сих пор примерах моделей ссылки на раз-

личныеобъекты  GPSS/PCпроизводилисьисключительно по данным им

произвольным именам.Такая 1адресация 0объектов удобна,когдаречь

идет о небольшом числе объектов каждого типа.Если же число объек-

тов некоторого типа велико, то во избежание пропорционального роста

количестваблоков  в модели используют ссылки на эти объекты по их

номерам с использованием так называемой 1косвенной адресации0.

     Идея косвеннойадресации заключается в том,что каждый тран-

закт в некотором своем параметре содержит номер того или иного объ-

екта, а в полях блоков, адресующихся к объектам, записывается ссыл-

ка на этот параметр транзакта. Проиллюстрируем применение косвенной

адресации на примере следующей модели.

       Ш1

         EXP    FUNCTION    RN1,C24

        0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

        .7,1.2/.75,1.38/.8,1.6/.84,1.85/.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.6/.995,5.3/.998,6.2/.999,7/.9998,8

         CLASS  FUNCTION    RN1,D3

        .333,1/.667,2/1,3

         MEAN   FUNCTION    P$TYPE,L3

        1,70/2,80/3,90

         PRIOT  VARIABLE    4-P$TYPE

         STO2   STORAGE     2

         WTIME  QTABLE      LINE,50,50,10

         TTIME  TABLE       M1,100,100,12

                GENERATE    100,FN$EXP

                ASSIGN      TYPE,FN$CLASS

                PRIORITY    V$PRIOT

                QUEUE       LINE

                QUEUE       P$TYPE

                ENTER       STO2

                DEPART      P$TYPE

                DEPART      LINE

                ADVANCE     FN$MEAN,FN$EXP

                LEAVE       STO2

                TABULATE    TTIME

                TERMINATE   1

       Ш1.5

                              Рис. 21

     Пусть на вход моделируемой многоканальной СМО с двумя каналами

обслуживания поступает пуассоновский поток заявок со средним интер-

валом поступления 100 единиц модельного времени.  Каждаязаявкас

равной вероятностью1/3 относится к одному из трех классов:1,2

                              - 42 -


или 3,а среднее время обслуживания заявок каждого типа составляет

соответственно70,80 и 90 единиц модельного времени.Чем меньше

среднее время обслуживания заявки, тем выше ее приоритет. Необходи-

мопостроить модель,позволяющую оценить средние значения времени

ожидания заявок каждого типа,а также распределения общего времени

ожидания в очереди и общего времени пребывания в системе. Такая мо-

дель имеет вид, показанный на рис. 21.

     Переменная PRIOTслужит  длявычисления приоритета транзакта

как функции его класса,содержащегося в параметре сименем  TYPE.

Транзакты класса 1 (P$TYPE=1) получат приоритет 3, транзакты класса

2 - приоритет 2 и транзакты класса 3 - приоритет 1.

     В блоке  ASSIGNв параметр TYPE транзактов записывается класс

заявки,разыгрываемый с помощью функции CLASS.В следующем  блоке

PRIORITY с помощью переменной PRIOT определяется приоритет транзак-

тов, первоначально равный 0 (отсутствует поле E в блоке GENERATE).

     Далее каждый транзакт "отмечается" в блоках QUEUE в двух  оче-

редях.Очередь  сименемLINE является общей для транзактов всех

классов. Входя в следующий блок QUEUE, транзакт отмечается в очере-

ди с номером 1, 2 или 3 в зависимости от класса заявки, записанного

в параметре TYPE.Аналогичным образом фиксируется уход из очередей

в блоках DEPART.Таким образом,в модели создается четыре объекта

типа "очередь":одна очередь с именем LINE и три с номерами 1, 2 и

3.При  этомтрипоследние  очереди создаются одной парой блоков

QUEUE-DEPART! В этом и заключается эффект косвенной адресации.

     Как уже отмечалось ранее,каждому имени объекта симулятор сам

ставит в соответствие некоторый номер. При ссылках на объекты одно-

гои того же типа одновременно по именам и номерам,как это имеет

место в рассматриваемом примере,существует опасность параллельной

адресации к одному и тому же объекту вместо двух разных или, наобо-

рот,к двум разным объектам вместо одного.Так, в рассматриваемой

модели мы, вообще говоря, не знаем, какой именно номер поставит си-

мулятор в соответствие имени очереди LINE. Если этот номер будет от

1 до 3,то это приведет к ошибке, так как в модели окажется не че-

тыре очереди, а три, причем в одну из них будет заноситься информа-

ция как обо всех транзактах, так и дополнительно о транзактах одно-

го из трех классов. Как избежать такой ситуации?

     К счастью,  в большинстве случаев об этом можно не заботиться,

поскольку симулятор ставит в соответствие именам объектов достаточ-

нобольшие  номера,начинаяс 10000.  При необходимости же можно

воспользоваться оператором EQU,о котором уже говорилосьвыше,и

самостоятельно сопоставить имени объекта желаемый номер.  Например,

                              - 43 -


в рассматриваемой модели для того, чтобы очередь с именем LINE име-

ла номер 4, достаточно записать оператор:

                         LINE    EQU    4

               4.2. Обработка одновременных событий

     Так как модельное время в GPSSцелочисленно,  тооказывается

вполневероятным одновременное наступление двух или более событий,

причем вероятность этого тем больше,чем крупнее выбранная единица

модельноговремени.  В некоторых случаях одновременное наступление

нескольких событий,или так называемый 1временной узел0,можетсу-

щественно нарушить логику модели.

     Рассмотрим, например,еще раз модель на рис.14. Здесь может

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

навход  модели"и"завершениеобслуживания  вМКУ".Если не-

посредственно перед завершением обслуживания были заняты оба канала

МКУ,то  обработкавременногоузла зависит от последовательности

транзактов, соответствующих событиям, в списке текущих событий.

     Предположим, что первым в списке расположен транзакт, освобож-

дающий канал МКУ. Тогда вначале будет обработан этот транзакт, т.е.

событие"завершение обслуживания в МКУ",причем условие "МКУ STO2

не заполнено", проверяемое в блоке GATE, станет истинным. Затем бу-

дет обработан транзакт,поступивший на вход модели,в блок GATE с

именем ENT1,из блока GENERATE или из блока TRANSFER в безусловном

режиме. При этом транзакт будет впущен в блок ENTER, и МКУ в тот же

момент модельного времени снова окажется заполненным.  Такая ситуа-

ция при обработке временного узла представляется естественной.

     Предположим теперь, что первым в списке текущих событий распо-

ложентранзакт,  поступающий на вход модели.Так как условие "МКУ

STO2 не заполнено" ложно,то блок GATE направитэтоттранзакт  в

блок с именем REFUS. Таким образом, в модели будет зафиксирован от-

каз в обслуживании, хотя в этот же момент модельного времени, после

обработки транзакта, освобождающего канал, МКУ станет доступным.

     Порядок расположения транзактов, соответствующих рассматривае-

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

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

В результате статистика, связанная с отказами, окажется искаженной.

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

порядокрасположения  транзактовв списке текущих событий,чтобы

транзакт, освобождающий МКУ, всегда располагался первым. Этого мож-

но добиться, управляя приоритетами транзактов (рис. 22).

                              - 44 -


       Ш1

         STO2   STORAGE     2

         EXP    FUNCTION    RN1,C24

        0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

        .7,1.2/.75,1.38/.8,1.6/.84,1.85/.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.6/.995,5.3/.998,6.2/.999,7/.9998,8

                GENERATE    100,FN$EXP

         ENT1   GATE SNF    STO2,REFUS

                ENTER       STO2

                PRIORITY    1

                ADVANCE     160,FN$EXP

                LEAVE       STO2

                TERMINATE   1

         REFUS  TRANSFER    .1,,OUT

                ADVANCE     250,FN$EXP

                TRANSFER    ,ENT1

         OUT    TERMINATE   1

       Ш1.5

                              Рис. 22

     Транзакты, поступающие в модель через блок GENERATE, имеют ну-

левой приоритет. Такой же приоритет имеют транзакты, получившие от-

каз в обслуживании, направленные в блок с именем REFUS и затем пов-

торно поступающие в блок с именем ENT1. Те же транзакты, что посту-

пают на обслуживание,повышают приоритет до 1 в блоке PRIORITY,и

после выхода из блока ADVANCEвозвращаютсяиз  спискабудущихв

список текущих событий,располагаясь в начале списка.Таким обра-

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

дет обработан правильно.

     Опасность неверной обработки временныхузловхарактерна  для

моделей со списками пользователя. Рассмотрим, например, еще раз мо-

дель на рис. 18. Здесь также возможен временной узел между события-

ми "приход транзакта" и "завершение обслуживания транзакта".

     Пусть первым в списке текущих событий располагается вновь при-

шедший транзакт. Так как устройство с именем SYSTEM занято, то блок

GATE направит этот транзакт в блок LINK, и он будет введен в список

пользователя с именем LINE.Затем будет обработан транзакт,осво-

бождающий устройство.Проходя через блок UNLINK,он выведет тран-

зактс  начала списка пользователя и направит его в список текущих

событий,где тот продвинетсяв  блокSEIZE,занимая  устройство

SYSTEM.

     Если же первым в списке текущихсобытий  располагаетсятран-

закт,освобождающий устройство,то он выведет первый из ожидающих

транзактов из списка пользователя в список текущих событий, где тот

расположится после вновь пришедшего транзакта. Поэтому первым будет

                              - 45 -


обработан вновь пришедший транзакт, который пройдет через блок GATE

и займет устройство "без очереди".  Транзакт-очередник, который был

выведен из списка пользователя,"застрянет" перед блокомSEIZEи

послеочередного  освобождения устройства займет его,  нарушая,в

свою очередь, логику работы модели.

     Проведенный анализпоказывает,  чтодля правильной обработки

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

транзактовв списке текущих событий,чтобы первым всегда распола-

гался вновь пришедший транзакт. В рассматриваемом случае этого мож-

но добиться, используя блок PRIORITY с операндом BU (рис. 23).

     Перед освобождениемустройства  обслуженный транзакт проходит

через блок PRIORITY,который,оставляя неизменным приоритет тран-

закта PR,переводит его в конец списка текущих событий.При новом

просмотре списка в случае наличия временного узла начинает  обраба-

тываться вновь поступивший транзакт. Так как устройство еще занято,

он направляется блоком GATE в списокпользователя.При  повторной

обработке обслуженного транзакта тот освобождает устройство и выво-

дит очередной транзакт из списка пользователя.Таким образом, пра-

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

       Ш1

         EXP    FUNCTION    RN1,C24

        0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915

        .7,1.2/.75,1.38/.8,1.6/.84,1.85/.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.6/.995,5.3/.998,6.2/.999,7/.9998,8

                GENERATE    100,FN$EXP

                ASSIGN      TSRV,80,EXP

                GATE NU     SYSTEM,WAIT

         SFAC   SEIZE       SYSTEM

                ADVANCE     P$TSRV

                PRIORITY    PR,BU

                RELEASE     SYSTEM

                UNLINK      LINE,SFAC,1

                TERMINATE   1

         WAIT   LINK        LINE,P$TSRV

       Ш1.5

                              Рис. 23

    

    

                              - 46 -

.

         5. КОМАНДЫ GPSS/PC И ТЕХНОЛОГИЯ РАБОТЫ С ПАКЕТОМ

                5.1. Загрузка интегрированной среды

     Пакет GPSS/PCвключает  всебядва основных модуля:модуль

GPSSPC.EXE,представляющий интегрированную среду, в которой произ-

водится ввод, редактирование, отладка и выполнение модели, и модуль

GPSSREPT.EXE,предназначенный дляполучения  стандартногоотчета

GPSS/PC. Загрузка обоих модулей производится обычным образом из ко-

мандной строки MS DOS или из программы-оболочки Norton Commander.

     После загрузкиинтегрированнойсреды  наэкранепоявляется

"заставка" с названием пакета:начинается так называемый 1сеанс 0ра-

боты с GPSS/PC.Затем заставка гасится, и появляется экран, разде-

ленный на две части:большая верхняя часть содержит так называемое

1окно данных0,меньшая нижняя часть - 1окно команд0. Окно данных в на-

чальный момент пусто,в окне командв  верхней1команднойстроке

высвеченсимвол  "приглашения"  2>0,сигнализирующий о готовности

системы принимать команды.

                      5.2. Ввод новой модели

    Если исходная программа с моделью еще не введена и не записана

на диске, то необходимо ввести ее с клавиатуры. Ввод производится в

командную строку. Сначала вводится номер строки очередного операто-

ра и нажимается клавиша 2Пробел0. Курсор автоматически перемещается к

началу следующего поля - поля имени, и в позиции курсора высвечива-

етсясимвол  2L 0,сигнализирующий о том,что вы находитесь в поле

имени (LABEL - метка).Если оператор имеет имя,необходимо ввести

его и нажать клавишу 2Пробел0, в противном случае - сразу нажать кла-

вишу 2Пробел0.В любом случае курсор переходит кначалуследующего

поля - поля операции,о чем сигнализирует символ 2V 0(VERB - глагол)

в позиции курсора.Необходимо ввести название оператораинажать

клавишу 2Пробел0.Очень удобным является то,что название оператора

не обязательно вводить полностью:как только транслятор распознает

оператор по нескольким первым буквам, он после нажатия клавиши 2Про-

2бел 0сам дополнит его до полного названия.

     При синтаксическойошибке  воператоре под командной строкой

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

вводится. Необходимо в этом случае повторить ввод символа.

                              - 47 -

.

     Аналогичным образом вводятся поля операндов,при этом в пози-

ции курсора высвечивается обозначение текущего поля (2A0, 2B0, ... ,2G0).

Для перехода к следующему полю операндов вводится запятая,  для пе-

рехода к полю комментариев - 2Пробел0.При переходе курсоравполе

комментариев в позиции курсора высвечивается символ 2;  0, сигнализи-

рующий о возможности начать ввод комментария.

     По окончании ввода последнего поля операндовиликомментария

следует нажать клавишу 2Enter0,при этом введенный оператор трансли-

руется и отображается в окне данных,а командная строка очищается,

и в ее первой позиции снова появляется символ "приглашения".

     По мере ввода новых операторов окно данных заполняется,ипо

окончании ввода в нем находится вся исходная программа в последова-

тельности ввода,необязательно совпадающейс  последовательностью

нумерации строк. Для отображения в окне данных исходной программы в

последовательности нумерации строк необходимоввестивкомандную

строку команду DISPLAY (отобразить). Эта команда, как и все осталь-

ные команды GPSS/PC,вводится без номера строки. С помощью команды

DISPLAY можно также вывести в окно данных отдельную строку,  указав

ее номер в поле A команды, или последовательность строк, указав на-

чальный и конечный номера в полях A и B соответственно.

                5.3. Редактирование текстамодели

     Удалить строки из исходнойпрограммы  можнокомандойDELETE

(удалить), указав в полях A и B начальный и конечный номера удаляе-

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

лишь поле A.

     При необходимости вставить в текстновый  оператор,поместив

его между уже введенными операторами,достаточно ввести его с про-

межуточным номером строки.Вы можете перенумеровать строки,введя

команду RENUMBER (перенумеровать), в поле A которой указывается но-

мер первой строки, а в поле B - шаг перенумерации.

     Отредактировать содержимое строки можно с помощью команды EDIT

(редактировать),в поле A которой указывается номерредактируемой

строки.При  вводе такой команды в командной строке появляется ре-

дактируемая строка. Подводя курсор к нужным позициям строки, вы мо-

жете внести в нее необходимые изменения.По окончании редактирова-

ния следует нажать клавишу 2Enter0,и отредактированная строка пере-

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

строку с этим номером.Вы можете убедиться в этом,введякоманду

DISPLAY2.

                              - 48 -


     Если редактируемый оператор короткий, а изменений в нем много,

торедактирование удобнее произвести,введя измененный оператор с

тем же номером строки.

              5.4. Запись и считывание модели с диска

     Если работа с моделью предполагается ипо  окончанииданного

сеанса,то  послеввода и редактирования исходную программу имеет

смысл записать на диск.Для этого необходимо ввестикоманду  SAVE

(сохранить),в поле A которой указывается имя файла, в который бу-

дет записана модель. Файл должен иметь расширение 2.GPS0.

     Записав модель в файл,вы сможете в следующем сеансе работы с

GPSS/PC не вводить ее заново с клавиатуры, а считать с диска, введя

команду  @1спецификация0_1файла0,где  1спецификация0_1файла 0- полное имя

файла,которое вы дали исходной программе в команде SAVE, включаю-

щеерасширение  2.GPS0.При выполнении команды 2@ 0операторы исходной

программы по мере их считывания из файла транслируются и  выводятся

в окно данных.

         5.5. Прогон модели и наблюдение за моделированием

     После того, как исходная программа модели введена с клавиатуры

или считана с диска и оттранслирована,в памяти ПК создалась теку-

щая модель, и теперь можно выполнить ее прогон. Для этого в команд-

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

полеA  соответствующееначальноезначение  счетчика завершений.

После нажатияклавиши 2Enter 0оператор START переносится в окно дан-

ных, и прогон модели начинается. Об этом сигнализирует сообщение

                      2Simulation in0 2Progress0               ,

появляющееся в нижней строке командного окна - 1строке состояния0,а

такжетак  называемый1индикатор моделирования0,мигающий в правой

стороне нижней части окна данных.

     Если прогонмодели достаточно длинный,то можно наблюдать за

процессом моделирования, открывая те или иные 1графические окна0. Это

производитсяпутем  нажатияклавиши 2Alt 0одновременно с символьной

клавишей с первой буквой названия окна.

     Например, после нажатия клавиш 2Alt+B 0в верхней части экрана на

месте окна данных появляется 1окно блоков 0(BLOCKS), изображающее ди-

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

дым блоком выводится текущее число транзактов в нем, которое обнов-

ляется в процессе моделирования. Нажав клавиши 2Alt+N0, вы можете за-

                              - 49 -


менить эту информацию на общее число  транзактов,прошедшихчерез

каждый блок.Блок,  в котором находится активный транзакт, выделен

повышенной яркостью (на цветных мониторах - другим цветом).

     Нажав клавиши   2Alt+F0,вы  можетенаблюдать1окно  устройств

(FACILITIES),в котором наглядно отображена информацияо  текущем

состоянии каждого устройства модели:его использовании, занятости,

очереди к нему.

     Аналогичную информациюо многоканальных устройствах можно по-

лучить, нажав 2Alt+S 0и открыв 1окно памятей 0(STORAGES).

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

клавиши 2Alt+T0,вы откроете 1окнотаблиц0(TABLES)с  гистограммой

распределениясоответствующегоатрибута  модели,обновляющейся в

процессе моделирования.Над гистограммой выводятсятакжетекущие

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

атрибута.

     Если в модели используются матрицы,то,  нажав клавиши 2Alt+M0,

вы откроете 1окно матриц 0(MATRICES),в котором можно наблюдатьоб-

новляющиеся в процессе моделирования значения элементов матриц.

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

тия клавиш 2Alt+L 0включить 1трассировку 0активного транзакта. При этом

в верхней части окна появляется строка, содержащая информацию о те-

кущем модельном времени, номере активного транзакта и его продвиже-

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

нажатием этих же клавиш.

     Перемещение внутри окна любого типа к тому илииномуобъекту

этоготипа осуществляется путем нажатия клавиш управления курсором

2PgUp0,2PgDn 0и 2End0. Возвращение в окно данных производится путем на-

жатия клавиш 2Alt+D0.

     Следует заметить,что наблюдение графических окон иособенно

строки трассировки существенно замедляет моделирование, и при длин-

ных прогонах моделей этой возможностью не следует злоупотреблять.

     Открытие тогоили иного окна может быть выполнено также с по-

мощью команды WINDOW (окно), в поле A которой указывается имя окна,

однако удобнее это делать так, как описано выше.

     Кроме графических окон внутри любого из них,кроме окнадан-

ных, может быть открыто до четырех 1микроокон0. Микроокна открываются

и закрываются командой MICROWINDOW (микроокно),  имеющейследующий

формат:

             MICROWINDOW    A,B,C    ; 1комментарий

     В поле A указывается номер микроокна - константа 1,2,3 или

4.Поле B содержит наблюдаемую величину - любой СЧА модели. Поле C

                              - 50 -


определяет состояние микроокна в результате выполнения команды:ON

- открыто, OFF - закрыто. Если поле C пусто, то по умолчанию коман-

да открывает заданное микроокно.В поле комментария может быть за-

дано название микроокна длиной до восьми символов.

     При открытии любого окна заданные микроокна с обновляющейся в

процессе моделирования информацией появляются в правой частисоот-

ветствующего окна. Микроокно имеет форму прямоугольника с названием

надрамкой,  еслионобыло  задановкомментарии   к   команде

MICROWINDOW.

     В процессе моделирования можно также наблюдать одновременно до

двух1графиков зависимостей 0любых СЧА модели от модельного времени.

Для этого необходимо до запуска модели ввести одну или двекоманды

PLOT (начертить), имеющие следующий формат:

                 PLOT    A,B,C,D    ; 1комментарий

     В поле  A указывается аргумент зависимости - любой СЧА модели.

Поле B должно содержать максимальное значение этого СЧА, определяю-

щеемасштаб  изображения по оси Y.Операнд B задается константой,

значение которой должно быть не менее 13. Поля C и D определяют на-

чальное и конечное значения модельного времени,  определяющие масш-

таб изображения по оси X.Эти операнды также задаются константами.

Вполе комментария может быть задан заголовок графика длиной до 34

символов.

     График обновляетсяпри  каждомизменении модельного времени,

если оно попадает в диапазон,заданный операндами C и D. Указанный

вполеA СЧА-аргумент вычисляется относительно первого транзакта,

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

     Процесс моделирования можно прервать, нажав одну из клавиш 2Esc

или 2Home0.При этом в строке состояния командногоокнапоявляется

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

в момент прерывания.Вы можете узнатьзначения  интересующихвас

стандартныхчисловых  атрибутов модели в момент прерывания,  введя

команду SHOW (показать), операндом которой служат отдельные СЧА или

выраженияиз  них.Значение заданного в команде СЧА или выражения

выводится в окно данных или другоеактивноеокно.  Введякоманду

EVENTS(события),  можноувидеть в окне данных содержимое списков

текущих и будущих событий. Команда USERCHAINS (списки пользователя)

позволяетпросматривать в окне данных содержимое списков пользова-

теля. Обе последние команды не имеют операндов.

     Инициировать прерываниемоделирования  можнотакже с помощью

команды STOP (остановить), имеющей следующий формат:

                           STOP    A,B,C

                              - 51 -


     В поле A указывается номер транзакта,вызывающего прерывание,

задаваемый константой.Если это поле пусто,то прерывание вызыва-

ется любым транзактом.В поле B задается имя или номер блока,при

входе в который происходит прерывание. Если этот операнд опущен, то

прерывание происходит при входе в любой блок.В поле C указывается

ONдля установки условия прерывания и OFF для снятия этого условия

(по умолчанию ON).

     Например, команда

                        STOP    100,MET1

устанавливает условиепрерывания моделирования при входе транзакта

с номером 100 в блок с именем MET1. Команда

                         STOP    2

будет вызывать прерывание при каждом продвижении транзакта с  номе-

ром 2, а команда

                         STOP    ,CHAIR

при каждомвходе любого транзакта в блок с именем CHAIR.Наконец,

команда

                         STOP

без операндов будет вызывать прерывание при каждом продвижениилю-

бого транзакта, а команда

                         STOP    ,,OFF

снимает все условия прерывания,установленные ранее другими коман-

дами STOP.

     Прервав моделирование,можно  такжевоспользоваться командой

STEP (выполнить шаг) для пошагового выполнения модели  сцельюее

1отладки0. Операнд в поле A команды задает количество входов активно-

го транзакта в блоки,которое производится прикаждом  выполнении

команды.Обычно этот операнд равен 1,и каждое выполнение команды

STEP приводит к продвижению активного транзакта к следующему блоку.

Отладку с использованием команды STEP удобно проводить,  находясь в

окне блоков.

     Для продолжениямоделирования после прерывания следует ввести

в командную строку команду CONTINUE (продолжить).

     Команды STEPи CONTINUE могут не только вводиться в командную

строку с клавиатуры, но и выбираться из 1меню команд0, появляющемся в

командном окне при активизации любого графического окна. Выбор про-

изводится подводом крестообразного курсора в прямоугольнуюобласть

нужнойкоманды  и нажатием клавиши 2Ins0.  В окне блоков меню команд

предоставляет также некоторые дополнительные возможности [8].

     Команды STEP,CONTINUE, а также любые другие часто используе-

мые команды удобно загрузить на функциональные клавиши 2F1-F100.Для

                              - 52 -


этогопосле  ввода загружаемой команды с клавиатуры необходимо на-

жать клавиши 2Ctrl+Fn, 0где n - номер выбранной функциональной клави-

ши.После загрузки команды на функциональную клавишу для ее выпол-

нения достаточно нажатия этой клавиши.

        5.6. Получение и интерпретация стандартного отчета

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

строке состояния появляются сообщения

     2Writing REPORT.GPS 02Simulation Complete 02Reporting ...0    ,

сигнализирующие отом,  что моделирование закончено и в данный мо-

мент производится создание отчета о прогоне модели.  Затемсистема

переходит в состояние ожидания дальнейших команд.

     Отчет, создаваемый по завершении моделирования, записывается в

файл со стандартным именем REPORT.GPS.Это имя может быть изменено

командой REPORT (создать отчет), имеющей следующий формат:

                            REPORT A,B

     В поле A указывается спецификация файла, в который должен быть

выведенотчет.  Если поле B содержит ключевое слово NOW,  то отчет

создается немедленно после ввода команды.

     Необходимо иметь ввиду,что отчет,  создаваемый автоматически

по завершении прогона модели или командой REPORT, является 1неформа-

1тированным0, т.е.непригодным для непосредственного просмотра.Для

форматированияи  созданиястандартного отчета GPSS/PC необходимо

завершить сеанс и выполнить программу 1форматирования отчета0.Выход

изинтегрированнойсреды  (завершениесеанса) производится путем

ввода управляющего оператора END (закончить). При этом производится

выход в MS DOS или в программу-оболочку Norton Commander.

     Для форматирования отчета необходимо загрузить модуль формати-

рования GPSSREPT.EXE.Послеего  загрузкинаэкране  появляется

"заставка" с названием модуля, двумя окнами в нижней части экрана и

сообщениями-подсказками. В левом окне выведено имя файла, в котором

находится   неформатированный   отчет   (по   умолчанию   это  файл

REPORT.GPS).В правом окне выведено обозначениеустройства,  куда

долженбыть  выведен форматированный отчет (по умолчанию это экран

дисплея 2SCRN:0).Форматированный отчет может быть также выведенна

печать или на диск. Для этого в правое окно надо ввести обозначение

2PRN: 0илиимя файла на диске соответственно.Для переключения окон

используется клавиша 2Enter0.Для создания отчета на выбранномуст-

ройствеследует  нажать клавишу 2Пробел0,  для выхода из программы -

клавишу 2Esc0.

                              - 53 -


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

после нажатия клавиши 2Пробел 0на экране появляется отчет о последнем

прогоне модели, выполненном перед завершением сеанса работы с моду-

лем GPSSPC.EXE. Отчет содержит следующую информацию:

     1) общие сведения о модели и ее прогоне,включающие модельное

времяначала  (2START_TIME0) и конца (2END_TIME0) прогона,количество

блоков в модели (2BLOCKS0),количество устройств (2FACILITIES), 0коли-

чество многоканальных устройств (2STORAGES0),объем памяти, оставав-

шейся свободной при прогоне модели (2FREE_MEMORY0);

     2) сведения об именах объектов модели,включающие для каждого

имениидентификатор  (2NAME0),  присвоенноеемучисловое  значение

(2VALUE0)и  типимени:0,  если числовое значение имени присвоено

пользователем с помощью оператора EQU;1,если числовое  значение

имени присвоено системой; 2, если имя является именем блока;

     3) сведения о блоках модели,включающие для каждого блока но-

мерстроки  исходной программы (2LINE0),  номер или имя блока (2LOC0),

название блока (2BLOCK_TYPE0), количество транзактов, прошедших через

блок (2ENTRY_COUNT0),текущее количество транзактов в блоке в момент

завершения моделирования  (2CURRENT_COUNT0),  количествотранзактов,

заблокированныхперед  блокомвмомент  завершения моделирования

(2RETRY0);

     4) сведения об устройствах модели, включающие для каждого уст-

ройства его имя или номер (2FACILITY0), количество занятий устройства

(2ENTRIES0), коэффициент использования (2UTIL.0), среднее время на одно

занятие (2AVE._TIME0) и ряд других данных;

     5) сведенияо  многоканальных устройствах модели,  включающие

для каждого МКУ его имя или номер (2STORAGE0),  емкость (2CAP.0), коли-

чество   свободных   каналов   вмомент  завершениямоделирования

(2REMAIN.0), наименьшее (2MIN.0) и наибольшее (2MAX.0) количество занятых

каналов в процессе моделирования, количество занятий МКУ (2ENTRIES0),

среднее количество занятых каналов (2AVE.C0.),коэффициент использо-

вания (2UTIL.0) и ряд других данных;

     6) сведения об очередях модели,включающие для каждой очереди

ее имя или номер (2QUEUE0), максимальную длину очереди в процессе мо-

делирования (2MAX.0), текущую длину очереди в момент завершения моде-

лирования (2CONT.0),общее количество транзактов, вошедших в очередь

в процессе моделирования (2ENTRIES0), и количество "нулевых" входов в

очередь(2ENTRIES(0)0),среднюю длину очереди (2AVE.CONT.0),среднее

время ожидания в очереди с учетом всех транзактов (2AVE.TIME0) ибез

учета "нулевых" входов (2AVE.(-0)0);

                              - 54 -

.

     7) сведения о статистических таблицах модели,включающиедля

каждой таблицы ее имя или номер (2TABLE0),  среднее значение (2MEAN0) и

среднеквадратическое отклонение (2STD.DEV.0)  табулируемойвеличины,

границы частотных интервалов (2RANGE0),  частоты (2FREQUENCY0) и накоп-

ленные частоты в процентах (2CUM.%0) попадания наблюдений вэти  ин-

тервалы;

     8) сведения о списках пользователя модели, включающие для каж-

дого списка его имя или номер (2USER_CHAIN0), количество транзактов в

списке в момент завершения моделирования (2CHAIN_SIZE0),среднее ко-

личество транзактов в списке (2AVE.CONT0),  общее количество транзак-

тов,вошедших в список в процессе моделирования (2ENTRIES0),макси-

мальное количество транзактов, находившихся в списке (2MAX0), среднее

время пребывания транзакта в списке (2AVE.TIME0);

     9) сведения о логических переключателях модели, включающие для

каждого ЛП его имя или номер (2LOGICSWITCH0) и состояние ЛП вмомент

завершения моделирования: 1 - "включен", 0 - "выключен";

     10) сведения о сохраняемых величинахмодели,  включающиедля

каждой сохраняемой величины ее имя или номер (2SAVEVALUE0) и значение

в момент завершения моделирования (2VALUE0);

   11) сведения о матрицах модели,включающие для каждой матрицы

ее имя или номер (2MATRIX0),а также список всех элементов матрицы в

формате: "строка" (2ROW0), "столбец" (2COLUMN0), "значение" (2VALUE0).

     Если в операторе START задан вывод в отчет списковтекущихи

будущих событий, то отчет включает в себя также сведения о транзак-

тах, находившихся в момент завершения моделирования в этих списках.

Сведенияо транзактах размещаются в отчете в соответствии с разме-

щением транзактов в каждом списке.

     Информация о списке текущих событий включает в себя для каждо-

го транзакта его номер (2XACT_NUMBER0),  приоритет (2PRI0), резидентное

время транзакта (2M10), номер текущего блока (2CURRENT0), номер следую-

щего блока (2NEXT0),а также перечень всехпараметровтранзакта  в

формате: "параметр" (2PARAMETER0), "значение" (2VALUE0).

     Информация о списке будущих событий включает для каждого тран-

зактатеже данные,однако вместо резидентного времени транзакта

(2M10) выводится запланированное время выхода транзакта из списка бу-

дущих событий (2BDT0).

     Разумеется, сведения об объектах того или иноготипапоявля-

ются в отчете только в том случае,если в модели присутствует хотя

бы один объект данного типа.Кроме того, включением в отчет сведе-

ний об объектах разных типов можно управлять с помощью так называе-

мого установочного файла SETTINGS.GPS [8].В отчетах о прогоне мо-

                              - 55 -


делей, включающих в себя другие, не рассматривавшиеся здесь объекты

GPSS/PC, появляется соответствующая информация и об этих объектах.

     На рис. 24 приведен отчет о прогоне модели примера на рис. 21.

       Ш1

START_TIME   END_TIME  BLOCKS    FACILITIESSTORAGES   FREE_MEMORY

       0       14617     12           0          1        274320

LINE   LOC     BLOCK_TYPE     ENTRY_COUNT   CURRENT_COUNT   RETRY

80     1       GENERATE150              0         0

90     2       ASSIGN              150              0         0

100    3       PRIORITY150              0         0

110    4       QUEUE               150              0         0

120    5       QUEUE               150              0         0

130    6       ENTER               150              0         0

140    7       DEPART              150              0         0

150    8       DEPART              150              0         0

160    9       ADVANCE             150              0         0

170    10      LEAVE               150              0         0

180    11      TABULATE150              0         0

190    12      TERMINATE           150              0         0

QUEUE   MAX  CONT. ENTRIES ENTRIES(0) AVE.CONT. AVE.TIMEAVE.(-0)

1       1     0      54        48     0.02        6.07     54.67

2       1     0      42        35     0.01        4.14     24.86

3       1     0      54        49     0.02        6.22     67.20

LINE     2     0     150       132     0.06        5.59     46.56

STORAGE        CAP. REMAIN. MIN.MAX.  ENTRIES AVL.AVE.C. UTIL.

STO2             2     2     0     2      150   1     0.660.328

TABLE     MEAN    STD.DEV. RETRYRANGE           FREQUENCYCUM.%

WTIME     5.59     25.23    0

                                 -        50         144      96.00

                              50 -       100           3      98.00

                             100 -       150           1      98.67

                             150 -       200           2     100.00

TTIME    69.48     70.88    0

-       100         117      78.00

                             100 -       200          23      93.33

                             200 -       300           8      98.67

                 300 -       400           2     100.00

       Ш1.5

                              Рис. 24

     Отчет выводится на экранпостранично.  Длявыводаочередной

страницынеобходимо нажать клавишу 2Пробел0,для прекращения вывода

отчета - клавишу 2Esc0.По окончании вывода отчета на экране появля-

ется сообщение

         2[SPACE] for another report 02Any other key to end

Для созданияотчета  надругом устройстве или другого отчета надо

нажать клавишу 2Пробел0,для выхода из программыGPSSREPT-  любую

другую клавишу.

    

                              - 56 -


     Помимо отчета отдельные результатымоделирования  могутбыть

такжевыведены  в 1базу данных 0GPSS/PC [8] с помощью команд RESULT.

Однофакторный 1дисперсионный анализ 0и получение 1доверительных интер-

1валов0для выведенных в базу данных характеристик модели могут быть

выполнены с помощью команды ANOVA. Рассмотрение этих команд выходит

за рамки данного издания.

                              - 57 -

.

                         СПИСОК ЛИТЕРАТУРЫ

     1. Шакин В.Н.,Воробейчиков Л.А., Шибанов С.Е., Семенова Т.И.

Моделирование систем и сетей связи: Учебное пособие/МИС.- М., 1988.

     2. Игельник Б.М.,Лившиц В.М., Шибанов С.Е. Аналитическое мо-

делирование систем связи: Учебное пособие/МИС. - М., 1989.

     3. Шакин В.Н., Лившиц В.М. Принципы построения локальных сетей

ианализ  иххарактеристик: Учебноепособие для слушателей ФПКП/

МИС. - М., 1990.

     4. Методические указания по использованию средств имитационно-

гомоделирования систем и сетей связи для слушателей ФПКП/ Л.А.Во-

робейчиков, В.Н.Шакин, С.Е.Шибанов/МИС. - М., 1990.

     5. Шеннон  Р.Имитационное моделирование систем - искусство и

наука: Пер. с англ. - М.: Мир, 1978.

     6. Максимей И.В.Имитационное моделирование на ЭВМ. - М.: Ра-

дио и связь, 1988.

     7. Шрайбер Т.Дж. Моделирование на GPSS: Пер. с англ. - М.: Ма-

шиностроение, 1980.

     8. GPSS/PC  generalpurpose simulation.Reference Manual.-

Minuteman software. P.O. Box 171. Stow, Massachusetts 01775, 1986.

                              - 58 -

.

                            ОГЛАВЛЕНИЕ

   ВВЕДЕНИЕ ....................................................3

   1. ОБЩИЕ СВЕДЕНИЯ О GPSS/PC .................................4

   2. ОСНОВНЫЕ БЛОКИ GPSS/PC И СВЯЗАННЫЕ С НИМИ ОБЪЕКТЫ ........ 10

        2.1. Блоки, связанные с транзактами .................... 10

        2.2. Блоки, связанные с аппаратными объектами .......... 20

        2.3. Блоки для сбора статистических данных ............. 24

        2.4. Блоки, изменяющие маршруты транзактов ............. 28

      2.5. Блоки, работающие с памятью ....................... 32

        2.6. Блоки для работы со списками пользователя ......... 34

   3. УПРАВЛЯЮШИЕ ОПЕРАТОРЫ GPSS/PC ............................ 39

   4. НЕКОТОРЫЕ ПРИЕМЫ КОНСТРУИРОВАНИЯ GPSS-МОДЕЛЕЙ ............ 42

        4.1. Косвенная адресация ............................... 42

        4.2. Обработка одновременных событий ................... 44

   5. КОМАНДЫ GPSS/PC И ТЕХНОЛОГИЯ РАБОТЫ С ПАКЕТОМ ............ 47

        5.1. Загрузка интегрированной среды .................... 47

        5.2. Ввод новой модели ................................. 47

        5.3. Редактирование текста модели ...................... 48

        5.4. Запись и считывание модели с диска ................ 49

        5.5. Прогон модели и наблюдение за моделированием ...... 49

        5.6. Получение и интерпретация стандартного отчета ..... 53

   СПИСОК ЛИТЕРАТУРЫ ........................................... 58