МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РЕСПУБЛИКИ КАЗАХСТАН

Некоммерческое акционерное общество

«Алматинский университет  энергетики и связи»

 

 

 

Э.М. Лещинская, С.А. Калиева 

ПРИМЕНЕНИЕ ПАКЕТА GPSS ПРИ МОДЕЛИРОВАНИИ СИСТЕМ ТЕЛЕКОММУНИКАЦИЙ

 

Учебное пособие

 

 

Алматы 2010

 

                                                                                                                                       

УДК  004.94:621.394/397(075.8)

ББК 32.882я73

Л54:Применение пакета GPSS при моделировании систем телекоммуникаций.

Учебное пособие. Э.М.Лещинская, С.А. Калиева, АУЭС. Алматы, 2010. – 73с.

 

 

ISBN 978-601-7098-69-8

 

 

В учебном пособии рассматриваются вопросы моделирования  телекоммуникационных систем с использованием  системы моделирования GPSS World. Изложены  основы построения и принципы функционирования  моделирующей системы  GPSS World.  На примерах показаны методы построения имитационных моделей  телекоммуникации с применением GPSS World.

Табл. 3, ил. 20, библиогр. – 9 названий.

 

 

 

РЕЦЕНЗЕНТЫ: КазНТУ, д-р. техн. наук, проф.А.А.Лисенков,

        АУЭС, докт. техн. наук Г.П.Данилина.

 

                                                                                                              ББК 32.882я73

 

 

 

 

Печатается по плану издания НАО «Алматинский институт энергетики и связи» на 2010 г.

 

 

 

ISBN 978-601-7098-69-8

 

 

 

 

© НАО «Алматинский университет энергетики и связи», 2010 г.                      

Содержание

 

Введение

 5

1     Система имитационного моделирования GPSS World

 7

1.1  Основы построения моделирующей системы   GPSS WORLD

 7

1.2  Синтаксис языка GPSS

 8

1.3  Объекты имитационной модели            

9

1.4  Структура модели

12

2      Организация процесса моделирования в GPSS WORLD

14

2.1  Транзакты - динамические объекты системы

14

2.2  Системные числовые атрибуты

15

2.3  Модельное время

18

2.4  Списки

19

2.5  Внутренняя организация GPSS

21

2.6  Библиотечные генераторы случайных чисел

25

2.7  Запуск и завершение процесса моделирования

26

3      Команды GPSS

27

3.1  Команды описания и управления

27

3.2  TABLE

28

3.3  QTABLE

28

3.4  STORAGE

29

3.5  VARIABLE

29

3.6  FUNCTION

30

3.7  HALT

31

3.8  CONTINUE

31

3.9  INCLUDE

31

3.10 SHOW

31

3.11 RESET

32

3.12 CLEAR

32

3.13 REPORT

32

3.14 STOP

32

3.15 STEP

33

4       Операторы блоков

33

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

33

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

37

4.3 Блоки, предназначенные для сбора статистических данных

39

4.4 Блоки, изменяющие маршрут

40

5      GPSS-модели систем телекоммуникации

43

5.1  Имитационная модель простой телефонной системы

44

5.2 Исследование на имитационной модели работы телефонной сети

49

5.3 Моделирование работы переговорного пункта

53

5.4 Модель частной телефонной станции

56

5.5 Имитационное моделирование сети  Ethernet

63

5.6 Модель вычислительной системы с несколькими абонентскими  пунктами (АП)

69

Список литературы

72

 

 

Введение 

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

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

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

Методологически математическое моделирование разбивается на два вида: аналитическое и имитационное моделирование.

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

Имитационная модель в принципе позволяет воспроизвести весь процесс функционирования ТС с сохранением логической структуры, связи между явлениями и последовательности протекания их во времени.

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

Для имитационного моделирования разработаны специальные системы моделирования. Системы моделирования имеют специализированные средства, позволяющие организовать модельные эксперименты на компьютере, учитывающие в моделях фактор времени. В них имеются языки моделирования, ориентированные на определенную предметную область.

 

В настоящем пособии рассмотрены вопросы имитационного моделирования информационных телекоммуникационных систем на основе моделирующей системы GPSS (GENERAL PURPOSE SIMULATIONS SYSTEM). Система направлена на решение задач статистического моделирования  процессов с дискретными событиями. Такими процессами хорошо описывается функционирование систем массового обслуживания произвольной структуры и сложности: систем   связи, систем обработки данных,  а также функционирование вычислительных систем и разного рода автоматизированных систем.  

Система имитационного моделирования GPSS World является одной из наиболее известных и широко используемых для работы на персональных компьютерах под управлением ОС Windows. Система обладает специальными средствами, которые делают процесс моделирования эффективным и наглядным. GPSS World включает в себя языки программирования GPSS и PLUS и компилятор.

Основными объектами системы имитационного моделирования GPSS World, которые всегда используются при моделировании, являются:

программа, написанная на языке GPSS (GPSS-модель), исполняемый объект, создаваемый в результате трансляции GPSS-модели и реализующий процесс моделирования на ЭВМ, отчёт с результатами моделирования.

GPSS-модель представляет собой последовательность операторов, описывающих логику работы моделируемой системы, которые могут быть разбиты на две группы: GPSS-операторы и PLUS-операторы.

Реализация процесса моделирования заключается в перемещении в модели транзактов, которые последовательно переходят от блока к блоку в заданной алгоритмом моделирования последовательности. Одной из самых сильных сторон GPSS World является автоматически создаваемый объект – отчет,  в котором представлены результаты  работы модели, а также приведена информация   о всех объектах,  приведенных в модели.

          Цель пособия - раскрыть основы построения, принципы функционирования системы моделирования GPSS World и ее возможности при имитационном моделировании телекоммуникационных систем.

Пособие состоит из пяти разделов. В первом разделе  раскрыты основы построения системы моделирования GPSS World, показаны особенности языка моделирования. Второй раздел посвящен проблемам организации  процесса моделирования в среде GPSS.  Команды GPSS рассмотрены в третьем разделе. В четвертом разделе описаны основные блоки системы. Применение системы моделирования GPSS  World для моделирования, анализа и исследования различных систем телекоммуникации представлено в пятом разделе.  Пособие ориентировано на студентов и магистрантов специальности «Радиотехника, электроника и телекоммуникации», изучающих курс «Моделирование систем телекоммуникаций».

 

 

     1  Система имитационного моделирования GPSS World

 

         1.1 Основы построения системы моделирования GPSS World

 

GPSS (General Purpose Simulation System) – это  система имитационного моделирования, которая  предназначена для разработки моделей сложных систем с дискретным  характером функционирования.  Система дает возможность проведения экспериментов с целью изучения свойств и закономерностей процессов, протекающих в них, а также выбора наилучшего  решения среди нескольких возможных вариантов.

Одной из наиболее  известных версий GPSS  является GPSS World, предназначенная для работы на персональных компьютерах под управлением ОС Windows. Учебную версию GPSS World  можно получить на портале www.minutaimansoftware.com/downloard.  

GPSS World содержит специальные средства для моделирования большого класса дискретных систем со стохастическим характером функционирования.

В состав системы имитационного моделирования GPSS World входят:

          - язык GPSS -  язык имитационного модели­рования высокого уровня;

          - язык PLUS  - язык программирования низкого уровня, встроенный в GPSS;

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

GPSS World является объектно-ориентированным языком. В совокупность его объектов входят объекты «Модель», используемые для создания объектов «Процесс моделирования». Объекты «Процесс моделирования» используются, в свою очередь, для осуществления процесса моделирования и создания объектов «Отчет». Текстовые объекты могут применяться в качестве подключаемых файлов для совместного использования в различных моделях и для создания библиотеки исходных текстов пользователя.

         «Модель»  - программа, которая написана на языке GPSS и  представляет    собой последовательность операторов, соответствующих логике работы моделируемой системы. Каждый  оператор реализует определенную  функцию.

В  результате трансляции модели,  после выполнения команды Create Simulation (создать процесс моделирования) формируется объект GPSS World «Процесс моделирования».

          Результаты моделирования содержатся в объекте «Отчёт», который создается автоматически после завершения процесса моделирования. Текстовый файл, служащий для упрощения разработки больших моделей и формирования библиотеки исходных текстов, формирует «Текстовый объект». 

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

 

1.2 Синтаксис языка GPSS

                

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

Язык  GPSS World содержит следующие элементы:

           - символы:  цифры от 0 до 9, а также прописные и строчные латинские буквы от «А» до «Z»;

           - имя - совокупность алфавитно-цифровых символов (от 1 до 200), всегда начинающаяся с буквы  латинского алфавита;  рекомендуется   использовать символ «_» (подчеркивание), чтобы избежать совпадения имени со служебными терминами; примеры  имен: АС_34, R71, CАNAL, W5F, Q_Ne22;

           -  метка - имя, расположенное в поле метки оператора для обозначения местоположения блока или задания имени объекта GPSS-модели;

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

- арифметические операторы - задают арифметические операции (перечислены в порядке приоритетности выполнения операций):

1) ^ (возведение в степень);

2) # (умножение);

         3)  / (деление);

         4) \ (целочисленное деление);

         5) @ (остаток от деления);

6) + (сложение),

7) - (вычитание);

- системные числовые атрибуты (СЧА) - переменные, описыва­ющие состояния процесса моделирования, автоматически поддерживаемые в GPSS и доступные в течение всего процесса моделирования;

- операторы отношения задают логические условия (перечислены в порядке приоритетности выполнения операций):

1) > или 'G' (больше);

2) >= или 'GE' (больше или равно);

3) < или 'L' (меньше);

4) <= или 'LE' (меньше или равно);

5) = или 'E' (равно);

6) != или 'NE' (не равно);

- логические операторы задают логические операции (перечислены в порядке приоритетности выполнения операций):

& или 'AND' (логическое «И»);

| или 'OR' (логическое «ИЛИ»);

- выражения - часть языка PLUS: представляют собой совокуп­ность переменных, чисел и СЧА, связанных арифметическими оператора­ми, логическими операторами и операторами отношения; могут исполь­зоваться в операндах операторов GPSS и в PLUS-процедурах; всегда заключаются в круглые скобки;

- процедуры - программы на языке PLUS (PLUS-процедуры), встроенные в GPSS World (стандартная процедура) или созданные поль­зователем (пользовательская процедура); обращение к процедуре осущест­вляется путем задания в качестве операнда GPSS-операторов имени процедуры с её параметрами; библиотека стандартных процедур включает:

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

         - математические процедуры: ABS (абсолютное значение), EXP (степень экспоненты), INT (целая часть), LOG (натуральный логарифм), SQR (квадратный корень), SIN (синус), COS (косинус), TAN (тангенс), ATN (арктангенс);

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

         - строковые процедуры для операций со строками;

         - процедуры потоков данных для управления потоками данных

внутри PLUS-процедуры;

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

         - вероятностные распределения.

 

          1.3  Объекты имитационной модели

 

          Объекты в моделируемой системе предназначены для различных целей. Выбор объектов зависит от характеристик модели и от разработчика программы. Объекты подразделяются на 7 категорий и 15 типов.

 Основными объектами, без которых не может быть построена GPSS-модель, являются:

1) блоки -  объекты GPSS-модели, определяющие совокупность действий, которая должна быть выполнена в модели в соответствии с заданными в операторе параметрами;

2)    транзакты - динамические объекты, движущиеся в GPSS-модели от одного оператора (блока) к другому в заданной последовательности.

 

 

         Объекты GPSS модели:

 

                         КАТЕГОРИИ

                                ТИПЫ ОБЪЕКТОВ

ДИНАМИЧЕСКАЯ

ТРАНЗАКТЫ

ОПЕРАЦИОННАЯ

БЛОКИ

АППАРАТНАЯ

ОДНОКАНАЛЬНЫЕ УСТРОЙСТВА, ПАМЯТИ(МНОГОКАНАЛЬНЫЕ УСТРОЙСТВА), ЛОГИЧЕСКИЕ КЛЮЧИ

ВЫЧИСЛИТЕЛЬНАЯ

ПЕРЕМЕННЫЕ, ФУНКЦИИ, ГЕНЕРАТОРЫ СЛУЧАЙНЫХ ЧИСЕЛ

СТАТИСТИЧЕСКАЯ

ОЧЕРЕДИ, ТАБЛИЦЫ

ЗАПОМИНАЮЩАЯ

ЯЧЕЙКИ, МАТРИЦЫ ЯЧЕЕК

ГРУППИРУЮЩАЯ

ЧИСЛОВЫЕ ГРУППЫ, ГРУППЫ ТРАНЗАКТОВ, СПИСКИ

 

               Рисунок 1.1 - Классификация объектов GPSS-модели

 

Объектами аппаратной категории являются:

- одноканальные устройства - объекты, которые мо­гут находиться в одном из двух состояний: свободном или занятом;  занятие и освобождение прибора транзактом выполняется в GPSS-модели с помощью операторов SEIZE и RELEASE;

- многоканальные устройства - объекты, состоящие из множества элементов, которые занимаются и освобождаются транзактами, при этом один транзакт может занять один или несколько элементов памяти, но не более чем её ёмкость; при моделировании систем массового обслуживания «память» используется для имитации процессов занятия и освобождения приборов многоканальных СМО; ёмкость памяти задается в области описания GPSS-модели с помощью оператора STORAGE, а занятие и освобождение элементов «памяти» транзактом - с помощью операторов ENTER и LEAVE;

- логические ключи - объекты, которые могут находиться только в двух состояниях: «включен» или «выключен»; включение, выключение или инвертирование ключа осуществляется с помощью оператора LOGIC.

- очереди - объекты, используемые для накапливания транзактов, находящихся в состоянии ожидания какого-то события, например, освобо­ждения прибора или памяти; при моделировании систем массового обслу­живания «очередь» используется для имитации процессов ожидания перед обслуживающими приборами; следует иметь в виду, что понятие «очередь» весьма относительное, поскольку в действительности транзакты, ожидающие освобождения прибора или памяти, заносятся в «список задержки» соответствующего прибора или памяти, при этом формирова­ние списков задержки, то есть занесение в очередь и удаление из очереди, происходит автоматически, независимо от наличия операторов QUEUE и DEPART; последние используются только с целью сбора статистики по очередям путем фиксирования моментов поступления транзакта в очередь и удаления его из очереди;

К числовым объектам GPSS-модели относятся:

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

         - матрицы - объекты для хранения массивов элементов размерно­сти от 2 до 6;

переменные - объекты для хранения величин, значения которых вычисляются на основе некоторого заданного выражения; переменные описываются с помощью операторов VARIABLE (арифметическая переменная), FVARIABLE (арифметическая переменная c плавающей точкой), BVARIABLE (булева переменная);

         - функции - объекты, позволяющие вычислять значения в зависимости от некоторого аргумента; функции описываются с помощью оператора FUNCTION;

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

Генераторы случайных (точнее, псевдослучайных) чисел представля­ют собой объекты GPSS-модели, которые можно разделить на три группы:

         - встроенные генераторы равномерно распределённых в интерва­ле (0; 1) случайных чисел, основанные на мультипликативном конгруэнт­ном методе, с длиной периода 2 147 483 646; количество таких генераторов равно 999, причём номер генератора (от 1 до 999) определяет начальное число для запуска генератора; при обращении к генератору с помощью системного числового атрибута (СЧА) RNj, где j - номер генератора, вырабатываются целочисленные случайные величины в интервале (0; 999);

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

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

Кроме перечисленных объектов, при разработке больших сложных GPSS-моделей дополнительно могут использоваться групповые списки, включающие в себя:

         - списки пользователя;

         - числовые группы;

         - группы транзактов,

         - потоки данных.

 

Объекты в GPSS-модели могут формироваться автоматически, либо должны объявляться с использованием специальных команд - операторов описания. К объявляемым объектам относятся: памяти, переменные, матрицы, таблицы, функции, а также параметры транзактов.

 

1.4 Структура модели на GPSS WORLD

 

Модель системы на GPSS можно представить совокупностью операторов,  объединенных в соответствии с логикой работы реальной  системы. Оператор модели в GPSS WORLD - это или оператор GPSS или PLUS - оператор. Операторы GPSS могут быть операторами блоков, которые создают блоки, или командами,  которые не образуют блоков.

Различают команды описания и управления. Первые служат для определения (описания) ряда объектов, таких, как памяти, переменные, функции, матрицы, таблицы. Команды управления  служат для  запуска, остановки, продолжения и завершения процесса моделирования, сброса статистики,  и т.д.).

Кроме того,  все команды подразделяют на срочные и несрочные. Срочные команды выполняются в момент их появления. Несрочные же команды заносятся в очередь команд и выполняются последовательно в порядке сложившейся очередности.

Операторы блоков (блоки) являются исполняемыми операторами и  служат для выполнения в процессе моделирования определенных функций, предписанных этими операторами. Если набрать в главном меню GPSS: Window/Simulation Window/Blocks Window, то в окне «BLOCK ENTITIES) можно увидеть изображение этих блоков  и движение транзактов в ходе моделирования.  К числу операторов описания можно отнести следующие операторы: STORAGE, FUNCTION, TABLE. Примерами исполняемых операторов являются GENERATE, QUEUE, SEIZE, DEPART, ADVANCE, RELEASE, TERMINATE.

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

Чтобы построить GPSS модель, нужно выбрать требуемые блоки (их общее количество превышает 50) и выстроить их в логической последовательности.

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

[<Метка>] <Операция>  <Операнды> <;Комментарии>

Как было сказано выше, метка - это последовательность символов, начинающаяся с буквы.  Не для всех блоков метка является обязательным элементом. В поле метки оператора описания указывается имя описываемого объекта (памяти, таблицы, функции и т.д.).

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

В поле <Операнды> задаются данные, необходимые для выполнения операции и представляющие собой параметры (операнды) оператора, разделяемые запятыми или пробелами.  В блоках не может быть использовано более 7 операндов.  Операнды обозначаются символами А, В, С, D, E, F, G.

Некоторые операнды являются обязательными, то есть должны быть всегда заданы, а другие - необязательными, то есть могут быть опущены при записи оператора. Операнды отделяются друг от друга запятыми или одним пробелом. Если операнд опущен, то вместо него ставится запятая. Между операндами не должно быть более одного пробела. Чаще всего операторы содержат  один или два операнда.

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

          Необязательным полем являются <Комментарии>, которые отделяются от поля операндов символом «;». В том поле могут быть использованы как латинские, так и русские буквы или другие символы.  Операторы записываются в одну строку, которая  может содержать не более 250 символов.


           2  Организация процесса моделирования в GPSS WORLD

 

           2.1  Транзакты - динамические объекты системы

 

 С использова­нием пунктов меню Command / Create Simulation осуществляется трансляция  GPSS-модели и создаётся  объект, реализующий процесс моделирования.

     Посредством команды START осуществляется запуск процесса моделирования.  Эта команда  может задаваться интерактивно после трансляции модели или же  находиться в GPSS-модели в качестве последнего оператора.

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

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

Транзакты  создаются и  уничтожаются  в  модели  с помощью операторов (блоков): GENERATE и TERMINATE.

В начале моделирования в GPSS-модели нет ни одного транзакта. В процессе моделирования транзакты формируются в модели в определен­ные моменты времени в соответствии с условиями, заданными с помощью блока GENERATE. Транзакты покидают модель (уничтожаются), попадая в блок TERMINATE. В общем случае, в модели может находиться множество транзактов, однако, в один и тот же момент времени продвигается только один транзакт. Транзакт, попадая в определенный блок, вызывает к исполнению совокупность действий, предписанных соответствующим оператором, и затем пытается войти в следующий по порядку блок. Такое продвижение транзакта продолжается до тех пор, пока не произойдет одно из следующих событий:

транзакт входит в блок, функцией которого является задержка транзакта на некоторое заданное время (блок ADVANCE); транзакт пытается войти в блок, который "отказывается" принять его до тех пор, пока в модели не изменятся некоторые условия (например, блоки SEIZE, ENTER); транзакт входит в блок, функцией которого является удаление транзакта из модели (блок TERMINATE).

 

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

Для изменения последовательности движения транзактов использу­ются условные и безусловные операторы, такие, как TRANSFER, TEST, SELECT.

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

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

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

 

2.2    Системные числовые атрибуты

 

          В процессе моделирования используют числовые и строковые переменные,  называемые атрибутами. Атрибуты могут использоваться в операндах операторов GPSS и в выражениях.

Числовые атрибуты, автоматически поддерживаемые в GPSS и дос­тупные в течение процесса моделирования, называются системными числовыми атрибутами (СЧА) (System Numerical Attributes - SNA). Их значения могут изменяться в процессе моделирования и доступны пользо­вателю за счет использования специальных наименований этих атрибутов.

В последних версиях GPSS используется более 35 системных числовых атрибутов.

В GPSS используются СЧА трёх типов:

          - СЧА объектов, описывающие состояние таких объектов GPSS-модели, как приборы (одноканальные устройства), памяти (многоканаль­ные устройства), очереди, таблицы и др.;

          - СЧА системы, описывающие состояние модели в целом;

          - СЧА транзактов, описывающие их свойства и параметры.

Имя СЧА объектов состоит из двух частей:

первая часть указывает групповое имя, идентифицирующее тип объекта (прибор, многоканальное устройство, очередь, таблица) и тип информации (количество входов в объект, загрузка объекта, среднее время занятия объекта и т.д.);

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

Если конкретный член группы задан в виде имени, то вторая часть имени СЧА отделяется от первой (группового имени) символом $. Таким образом, имя СЧА может иметь вид:

<Групповое имя><Число> или <Групповое имя>$<Имя>.

Например: FR$Canal, SR$Old_System, F10, Q47.

Групповые имена (наименования) и значения основных СЧА объектов таких, как приборы, многоканальные устройства, очереди и таблицы приведены ниже в таблицах 1-3.

 

Т а б л и ц а 1 – Групповые имена

СЧА приборов

Групповое имя

Значение

F

1, если прибор занят; 0, если свободен

FC

Число занятий прибора транзактами

FR

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

FT

Среднее время занятия прибора транзактом

 

Т а б л и ц а  2 - СЧА многоканальных устройств    

Групповое имя

Значение

R

Количество незанятых приборов (каналов)

S

Количество занятых приборов (каналов)

SA

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

SC

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

SM

Максимальное количество занятых приборов (максимальное значение Sj или S$ имя)

SR

Загрузка многоканального устройства, выраженная в

долях тысячи

ST

Среднее время нахождения транзакта в устройстве.

 

Т а б л и ц а  3 - СЧА очередей     

Групповое имя

Значение

Q

Текущее значение длины очереди

QA

Среднее значение длины очереди

QC

Количество входов в очередь (увеличивается на величину операнда B блока QUEUE)

QM

Максимальное значение длины очереди

QT

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

QX

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

QZ

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

ТВ $<Имя> - Среднее значение элементов таблицы;

TC $<Имя> - Количество учтенных в таблице элементов;

TD $<Имя> - Стандартное отклонение элементов таблицы

СЧА функции:

РШ<Имя> - результат вычисления функции;

СЧА переменной:

V$<Имя> - результат вычисления переменной.

Примеры СЧА объектов:

FR1 - возвращает значение загрузки прибора с номером 1;

FT$A_Master - возвращает среднее время занятия транзактом прибора с именем A Master;

S44 - возвращает количество занятых приборов в многоканальном устройстве с номером 44;

SM$Kassa_5m - возвращает максимальное количество занятых приборов в многоканальном устройстве с именем Kassa_5m;

V$F_8 - возвращает значение переменной F_8.

К СЧА системы относятся такие глобальные переменные, как:

АС1 - значение абсолютного модельного времени (с момента начала моделирования или последней команды CLEAR);

С1 - значение относительного модельного времени (с момента последней команды RESET);

TG1 - текущее значение счетчика завершения;

Z1 - свободная оперативная память ЭВМ в байтах.

К СЧА транзактов относятся:

MP< Число> или MP$<Имя> - транзитное время транзакта (абсолютное модельное время минус значение, содержащееся в параметре <Число> или <Имя>);

P<Число> или P$<Имя> - значение параметра <Число> или <Имя>;

PR - приоритет транзакта;

M1 - резидентное время транзакта (абсолютное модельное время минус время появления транзакта в модели);

XN1- номер активного транзакта.

 

 2.3 Модельное время

 

Работа реальных систем протекает во времени, для отображения которого в GPSS-модели используется таймер модельного времени. Изменение модельного времени происходит путем его продвижения до ближайшего события, связанного с изменением состояния моделируемой системы. При моделировании СМО и СеМО такими событиями являются:

- поступление заявок в систему;

- завершение обслуживания заявок в узле СеМО (обслуживающем приборе).

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

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

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

Рассмотрим более подробно механизм изменения таймера модель­ного времени и логику процесса моделирования на примере моделирова­ния системы массового обслуживания с неоднородным потоком заявок. Для формирования неоднородного потока заявок GPSS-модель будет содержать несколько операторов GENERATE по числу классов заявок.

В начале моделирования значение таймера модельного времени устанавливается в 0. Для всех классов заявок, поступающих в моделируе­мую систему, в каждом из блоков GENERATE определяется по одному ближайшему моменту появления транзакта, что соответствует моменту поступления очередной заявки данного класса. Очевидно, что число таких моментов будет равно количеству классов заявок. Среди всех этих моментов определяется момент с наименьшим значением, то есть момент, соответствующий ближайшему событию, и значение таймера модельного времени устанавливается равным значению (продвигается до) этого момента. Такое изменение значения таймера модельного времени приводит к тому, что соответствующий транзакт с моментом поступления, равным значению таймера, начинает движение в модели от блока GENERATE к следующему по порядку блоку. Движение транзакта в модели продолжается до тех пор, пока он не попадет в блок, функцией которого является задержка на некоторое заданное время, или в блок, который "отказывается" принять его до тех пор, пока в модели не изменятся некоторые условия. В последнем случае транзакт остаётся в предыдущем блоке. Если транзакт входит в блок, функцией которого является удаление транзакта из модели, то этот транзакт уничтожается.

Если в модели имеется ещё транзакт с таким же моментом формирования, то начинается его продвижение, причем значение таймера модельного времени не изменяется. Изменение таймера модельного времени происходит только в том случае, если в модели больше нет ни одного транзакта с таким же моментом формирования.

 

          2.4 Списки

 

 Продвижение транзактов в GPSS-модели реализуется с помощью так называемых списков или цепей (Chain).

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

Такими списками в GPSS-модели являются:

- список текущих событий (СТС) - содержит транзакты, которые могут продвигаться в модели в текущий момент модельного времени;

- список будущих событий (СБС) - содержит транзакты, ожидаю­щие наступления более позднего момента модельного времени;

- списки повторных попыток (СПП) - содержат транзакты, не удовлетворяющие условиям входа в блок, причем каждый объект GPSS-модели имеет свой СПП;

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

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

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

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

-  список повторных попыток;

-  списки памяти (многоканального устройства), включающие:

-  список задержки,

-  список повторных попыток;

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

         В любой модели всегда формируется один список текущих и один список будущих событий. Остальные списки формируются по мере необходимости.

В каждый момент модельного времени последовательно один за дру­гим продвигаются только те транзакты, которые находятся в СТС, причем только один транзакт, который продвигается в данный момент реального времени, является активным. Продвижение каждого транзакта осущест­вляется до тех пор, пока это возможно. Например, если транзакт попадает в блок ADVANCE, функцией которого является задержка на некоторое время, то он переводится в СБС. Транзакт будет находиться в СБС до тех пор, пока модельное время не станет равным моменту, когда он может покинуть блок ADVANCE. В этом случае транзакт будет переведён в СТС.

Транзакты, расположенные в СТС с учётом их приоритетов, выбираются последовательно один за другим. Когда в СТС не остаётся транзактов, которые могут быть продвинуты в текущий момент модельного времени, происходит изменение модельного времени, которое продвигается до ближайшего запланированного момента времени для транзакта, находящегося первым в СБС. Этот, а также все другие транзакты, движение которых может быть возобновлено в тот же момент модельного времени, переносятся из СБС в СТС, где размещаются в порядке убывания приоритетов.

Каждый транзакт может иметь множество параметров, называемых атрибутами транзакта, которые сопровождают его в течение «жизни» в модели. К ним, в частности, относятся:

- параметры, закрепляемые пользователем за каждым транзактом, число которых не ограничено; идентификатором параметра может служить его номер (целое положительное число) или имя; параметры транзакта должны быть определены, до того как они будут востребованы;

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

- время входа транзакта в систему - значение абсолютного времени в момент первого входа транзакта в модель или в блок MARK без операнда А;

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

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

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

ACTIVE - транзакт находится в СТС и является активным;

SUSPENDED - транзакт находится в СБС   или в СТС и

ожидает возможности стать активным;

PASSIVE - транзакт находится в состоянии ожидания: в списке пользователя, списке задержки или списке отложенных прерываний;

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

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

 

2.5 Внутренняя организация GPSS

 

Система GPSS в целом как программный продукт состоит из ряда модулей, из которых только модуль управления (симулятор) находится постоянно в ОЗУ и осуществляет процесс имитации. Динамика  функционирования симулятора основана фактически на схеме событий,  при этом событием считается любое изменение состояния моделируемой системы. Основной функцией симулятора является поддержание  правильного хода часов системного времени и выяснение возможностей продвижения транзактов в программе модели. Симулятор оперирует с рядом информационных структур, основными из которых являются: список будущих событий (FEC), список текущих событий (CEC), список прерываний, список задержанных транзактов и другие списки.

Работа симулятора разделяется на три основные фазы:

1) изменение значения системного времени;

2) просмотр списка текущих событий;

3) движение сообщений.

Фаза «Изменение значения системного времени» (см. рисунок 2.1) выполняется симулятором всегда, когда на текущий момент системного времени ни одно из активных сообщений, находящихся в CEC, не может быть продвинуто в программе модели и, кроме того, состояние системы не может быть изменено.

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

 Фаза «Просмотр списка текущих событий» (см. рисунок 2.2). Установив флаг изменения состояния системы в ноль, симулятор в зависимости от значения индикатора просмотра сообщения (транзакта) — 0 или 1 — решает вопрос: передать сообщение на третью  фазу  или нет. На фазу «Движение сообщений» (см.рисунок 2.3) передаются только активные сообщения,  индикатор просмотра которых равен нулю. Пассивные сообщения находятся в состоянии задержки, например, по причине занятости имитируемого оборудования. Такие сообщения не попадут на третью фазу  до тех пор, пока соответствующее оборудование не будет освобождено, т.е. пока не изменится состояние системы.

На фазе «Движение сообщений» активные сообщения симулятор пытается продвинуть как можно дальше по программе модели. Если при этой передвижке меняется состояние системы, все пассивные сообщения, находящиеся в CEC и задержанные по той или иной причине, получают статус активных. Их индикаторы просмотра устанавливаются в “0”. Если же при передвижке сообщений явно задана задержка, то сообщение перемещается в FEC. Таким образом, на третьей фазе происходит передвижка активных сообщений, изменение состояния системы, пересмотр индикаторов сообщений и планирование будущих событий (перемещение в FEC).

 

 

 

 

 

 

 

 

 

Рисунок 2.2 – Фаза «Просмотр списка текущих событий»

 

 

Рисунок  2.2 – Фаза «Движение сообщений»


.

2.6 Библиотечные генераторы случайных чисел

 

Встроенная библиотека процедур GPSS World содержит более 20 вероятностных распределений, в том числе:

- равномерное (Uniform);

- экспоненциальное (Exponential);

- геометрическое (Geometric);

- Пуассона (Poisson);

- Бета (Beta);

- Гамма (Gamma);

- биномиальное (Binomial);

- дискретно-равномерное (Discrete Uniform);

- треугольное (Triangular);

- нормальное (Normal);

- Парето (Pareto); ...

Для обращения к вероятностному распределению необходимо указать имя библиотечной процедуры и её параметры, заключённые в круглые скобки и отделённые друг от друга запятой:

<Имя процедуры>^,А,В, ...).

Здесь G - номер генератора равномерно распределённых случайных чисел (от 1 до 999), используется в качестве аргумента для формирования случайных величин с заданным законом распределения. Остальные параметры A, В, ., количество которых для разных распределений составляет от 1 до 4, задают непосредственно параметры вероятностного распределения.

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

         Равномерное распределение:

UNIFORM (G,Min,Max), где Min и Max - соответственно минимальное и максимальное значение равномерно распределённой случайной величины.

         Экспоненциальное распределение:

EXPONENTIAL (G,Min,Mean), где Mean - математическое ожидание (среднее значение) случайной величины, распределённой по экспоненциальному закону;

Min - смещение распределения относительно нуля (минимальное значение

случайной величины).

         Распределение Пуассона:

POISSON (G,Mean), где Mean - математическое ожидание (среднее значение) случайной величины.

         Геометрическое распределение:

GEOMETRIC (G,P),

где P - параметр распределения, принимающий значения в интервале (0;1).

 

Библиотечные процедуры вероятностных распределений могут использоваться в выражениях, в том числе арифметических, а также в качестве операнда A в операторах GENERATE и ADVANCE. В последнем случае они рассматриваются как выражения языка PLUS и должны быть заключены в круглые скобки.

 

2.7 Запуск и завершение моделирования

 

          Процесс моделирования запускается командой START. При этом задействуется пункт меню Command / Create Simulation. Команда START является несрочной командой. Когда объект «Процесс моделирования» принимает ее, она становится в очередь команд.

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

В GPSS World завершение процесса моделирования может быть реализовано:

- принудительно с помощью срочной команды HALT, задаваемой из подменю COMMAND; использование этой команды позволяет принуди­тельно остановить процесс моделирования в любой момент времени;

- по некоторому условию, задаваемому командой STOP, которая может находиться в GPSS-модели;

- по достижению содержимого «счётчика завершений» значения меньше или равного нулю.

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

Начальное значение «счётчика завершений» устанавливается с помощью команды START, которая запускает процесс моделирования. В процессе моделирования всякий раз при попадании транзакта в какой-либо блок TERMINATE (таких блоков в модели может быть несколько) из содержимого «счётчика завершений» вычитается значение, указанное в качестве параметра в соответствующем блоке TERMINATE. При достиже­нии нулевого или отрицательного значения «счётчика завершений» процесс моделирования останавливается. Отметим, что при отсутствии параметра в блоке TERMINATE содержимое «счётчика завершений» не изменяется. Если во всех блоках TERMINATE отсутствуют параметры или их значения равны нулю, содержимое «счётчика завершений» не будет изменяться, и процесс моделирования (при отсутствии в модели команды STOP) будет длиться до тех пор, пока не будет введена команда HALT.

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

По завершению процесса моделирования формируется и выводится на экран стандартный отчет, содержащий основные результаты моделиро­вания, в том числе характеристики основных объектов - очередей, приборов, многоканальных устройств и т.д. Состав включаемых в отчёт результатов моделирования может быть изменён на вкладке Reports меню EDIT/SETTINGS.

Кроме отчета, содержащего числовые значения характеристик моделируемых систем, GPSS World предоставляет возможность получения результатов в графическом виде, в частности, путём формирования гистограмм плотностей распределений вероятностных характеристик. Для этого в GPSS-модели используются команды TABLE и QTABLE.

Более подробно результаты моделирования, представленные в отчете и в виде гистограмм, рассматриваются ниже при описании GPSS-моделей систем телекоммуникации.

 

          3  Команды GPSS

 

          3.1  Команды описания и управления

   

             Последняя версия  GPSS World включает 25 команд. Они предназначены для определения объектов GPSS и управления процессом моделирования.

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

Операторы (команды) описания: TABLE, QTABLE, STORAGE, VARIABLE, FUNCTION.

Операторы (команды) управления: CLEAR, CONTINUE, HALT, INCLUDE, REPORT, RESET, SHOW, START, STEP, STOP.

 

Команды управления используются в процессе моделирования для интерактивного взаимодействия пользователя с GPSS-моделью и управления процессом моделирования.

Команды, как и операторы блоков, могут быть без операндов или содержать от 1 до 5-и операндов, некоторые из которых могут быть необязательными. В последнем случае значения необязательных операндов принимаются по умолчанию. При изображении структуры оператора необязательные операнды заключены в квадратные скобки.

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

 

 

3.2            TABLE   

 

Команда TABLE  (ТАБЛИЦА) служит для описания таблицы, используемой в модели для накопле­ния частоты попадания некоторой случайной величины в заданные частот­ные интервалы и построения гистограммы плотности распределения.

Формат:

<Имя>    TABLE A,B,C,D

Здесь: <Имя> - имя таблицы (не более 32-х алфавитно-цифровых символов).

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

A - имя случайной величины (СЧА), значения которой должны учитываться в таблице; операнд А игнорируется дисперсионным анализом, но должен быть определен, когда используется блоками TABULATE;

B - ширина первого частотного интервала;

C - ширина всех промежуточных частотных интервалов;

D - количество частотных интервалов таблицы, включая левый и правый (целое положительное число).

Пример:

SETS   TABLE M1,5,10,3

D таблице с именем SETS будет накапливаться частота попаданий значений резидентного времени транзактов в три (D=3) частотных интервала шириной 5 единиц времени для первого интервала и 10 - для остальных трёх интервалов: 0-5; 5-15; 15-25; 25-35; когда активный транзакт попадает в блок TABULATE SETS, в соответствии с операндом А в команде TABLE, заданным в виде СЧА M1, вычисляется время нахождения этого транзакта в модели как разница между текущим моментом модельного времени и моментом поступления транзакта в модель; в зависимости от полученного значения резидентного времени прибавляется единица к накапливаемому значению соответствующего частотного интервала; для всех значений, превышающих правую границу последнего частотного интервала, единица добавляется в последний интервал.

 

         3.3  QTABLE  

 

QTABLE   (ТАБЛИЦА ОЧЕРЕДИ) предназначена для описания таблицы плотности распределения времени пребывания в очереди (Q-таблицу),

 

Формат:

<Имя>    TABLE A,B,C,D

Здесь: <Имя> - имя таблицы (не более 32-х алфавитно-цифровых символов), в которой будут накапливаться значения частот. Значения операндов:

A - имя очереди, для которой формируется таблица;

B - ширина первого частотного интервала;

C - ширина всех промежуточных частотных интервалов;

D - количество частотных интервалов таблицы, включая левый и правый (целое положительное число).

Пример:

NAME    TABLE Ocher,10,10,50

в таблице с именем NAME будет накапливаться частота попаданий значе­ний времени нахождения транзактов в очереди с именем Ocher в пятидесяти (D=50) частотных интервалах шириной по 10 единиц времени, то есть охватывается временной интервал от 0 до 500 единиц времени; значения, превышающие 500 единиц времени, попадут в последний интервал.

 

          3.4    STORAGE  

 

          Команда STORAGE (МНОГОКАНАЛЬНОЕ УСТРОЙСТВО) предназначена для  описания ёмкости многоканального устройства (памяти).

 

Формат:

<Имя>   STORAGE A.

Здесь: <Имя> - имя многоканального устройства.

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

A - количество приборов (каналов) в многоканальном устройстве.

 

3.5 VARIABLE

 

 Команда VARIABLE (АРИФМЕТИЧЕСКАЯ ПЕРЕМЕННАЯ) служит для описания арифметической переменной.

 

Формат:

<Имя>   VARIABLE X.

Здесь: <Имя> - имя арифметической переменной.

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

X - арифметическое выражение для вычисления значения переменной <Имя>.

Пример:

Var1     VARIABLE 5#EXP(V$Grad+2)

Переменная рассчитывается, когда активный транзакт попадает в блок, в котором используется пере­менная Var1, (точнее, ссылка на эту переменную в виде СЧА: V$Var1).

Например:

 

ADVANCE V$Var1.

 

Вычисляется значение переменной Var1 в соответствии с заданным ариф­метическим выражением.

 

 

3.6 FUNCTION

 

Команда FUNCTION (ФУНКЦИЯ) служит для описания функции.

 

Формат:

<Имя>     FUNCTION  A,B Здесь: <Имя> - имя функции.

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

A - аргумент функции;

B - задаёт тип функции и количество пар данных в виде: <тип функции> <количество пар данных>, где    <тип функции> может принимать следующие значения:

C -непрерывная  функция; 

D - дискретная  функция;

E  - дискретная атрибутивно-значимая функция;

L - списковая числовая функция;

M -списковая атрибутивно-значимая функция.

         

            <Количество пар данных> определяет количество пар данных (аргумента и соответствующего ему значения функции) в списке данных функции, который располагается после оператора с первой позиции новой строки и может занимать несколько строк; каждая пара данных определяет значение аргумента X и значение функции Y (или СЧА), разделённые запятой.

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

В частности, в предыдущих   версиях   GPSS   для   генерирования   случайных чисел, распределённых по экспоненциальному закону, использовался табличный генератор, заданный в виде следующей функции:

 

 EXP1 FUNCTION     RN100, C24

0,0/.1, .104/.2, .222/.3, .335/.4, .509/.5, .69/.6, .915/.7, 1.2/.75, 1.38/.8, 1.6/.84, 1.83/.88, 2.12/.9, 2.3/.92, 2.52/.94, 2.81/.95, 2.99/.96, 3.2/.97,

3.5/.98, 3.9/.99, 4.6/.995, 5.3/.998, 6.2/.999, 7/.9997, 8

 

Здесь:

EXP1 - имя табличной функции, которое используется в СЧА класса FN при обращении к функции: FN$EXP1;

RN100 - генератор равномерно распределённых случайных чисел с номером 100, используемый в качестве аргумента функции для вычисления значений экспоненциально распределённых случайных величин; путём изменения номера генератора равномерно распределённых случайных чисел (от 1 до 999) можно создавать множество генераторов экспоненциально распределённых случайных величин;

C24 - тип функции - C, означающий, что значения функции для любого значения аргумента определяются с использованием линейной интерполяции; таблица содержит 24 пары значений аргумента и функции, причём каждая пара отделена от другой наклонной чертой.

 

        3.7 Команда        HALT

 

        Команда      HALT (ОСТАНОВИТЬ)  прерывает процесс моделирования и очищает очередь команд. Является срочной командой, выполняется немедленно, вызывая останов процесса моделирования.

 

Формат команды:

HALT

 Операнды отсутствуют.

 

3.8                   CONTINUE

 

Команда CONTINUE (Продолжить) предназначена для возобновления прерванного процесса моделирования. Это несрочная команда.

 

Формат команды:

CONTINUE

Операнды отсутствуют.

 

       3.9       INCLUDE

 

          Команда    INCLUDE (ВКЛЮЧИТЬ) предназначена для

трансляции файла с операторами модели.

 

Формат команды:

INCLUDE А

A - полный путь доступа к указанному файлу.

Если А - имя файла (без указания пути доступа), то предполагается, что вставляемый файл находится в той же папке, что и исходная модель.

 

        3.10    SHOW

 

Команда     SHOW (ПОКАЗАТЬ)  отображает значение выражения в строке состояния окна «Model».

 

Формат команды:

         SHOW Х

где Х – выражение.

 

3.11      RESET

 

Команда RESET (СБРОСИТЬ) сдужит для сброса в ноль статистики и  атрибутов системы.

 

Формат команды:

RESET

Операнды отсутствуют.

 

3.12  CLEAR

 

          Команда             CLEAR (ОЧИСТИТЬ) предназначена ддя возврата процесса моделирования в исходное состояние с возможностью сохранения значений некоторых объектов GPSS-модели.

 

Формат команды:

CLEAR [A]

Операнд A может принимать только два значения: ON или OFF; необязательный операнд [по умолчанию - ON].

Когда операнд А равен OFF, ячейки, логические ключи и элементы матриц остаются без изменений. Команда    CLEAR является несрочной командой. Она сбрасывает всю зарегистрированную статистику,  удаляет все транзакты из процесса моделирования и заполняет все блоки GENERATE первым транзактом.

Содержимое всех блоков становится нулевым.

 

3.13  REPORT  

 

          Команда    REPORT   (СОЗДАТЬ ОТЧЁТ) используется в тех случаях,  когда необходимо  немедленно создать отчет.

 

Формат команды:

REPORT

 

3.14  STOP

 

          Команда STOP (ОСТАНОВИТЬ) предназначена для установления или снятия условия остановки.

 

Формат команды:

STOP [A], [В], [С];

А - номер транзакта;

В – номер блока;

С -  может принимать только два значения: ON или OFF.

Все операнды необязательные.

 

3.15  STЕP

 

Команда STЕP  предназначена для выполнения процессом моделирования определенного количества входов транзактов в блоки.

 

Формат команды:

STЕP А

Операнд А определяет количество входов в блок, обязательный операнд.

 

           4 Операторы блоков

 

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

 

            В GPSS  есть блоки, которые предназначены для создания,  уничтожения,  задержки транзактов, изменения их атрибутов и создания копий транзактов.       Для генерирования    транзактов,  входящих  в  модель,  служит  блок GENERATE (генерировать), имеющий следующий формат:

GENERATE [A],[B],[C],[D],[E]

Операнды блока имеют следующие значения:

A – среднее значение интервала времени между моментами поступления  в модель двух последовательных транзактов. Если этот интервал постоянен,  то поле B не используется. В поле А может быть заключённое в круглые скобки вероятностное распределение интервала из встроенной библиотеки процедур;

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

Модификатор-интервал используется,  когда интервал поступления транзактов является случайной величиной с равномерным законом распределения вероятностей. В этом случае в поле B может быть задан любой  СЧА,    а диапазон изменения интервала поступления имеет границы A-B, A+B.

               Так, блок

                        GENERATE    200,50

создает транзакты  через  случайные  интервалы времени,  равномерно распределенные на отрезке [150;250].

С - смещение - момент поступления в модель первого транзакта.      Момент появления  первого транзакта определяется операндами A и B,    если это поле пусто или равно 0.

D  - количество генерируемых данным оператором транзактов; (по умолчанию - не ограничено).

Е - уровень приоритета, присваиваемый генерируемым транзактам  (чем больше номер, тем выше приоритет). По умолчанию транзакты имеют нулевой приоритет.

 

В операторе GENERATE обязательно должен использоваться один из   операндов: A или  D.

Примеры:

GENERATE 40; промежуток времени между генерируемыми транзактами - величина постоянная, равная 40, количество генерируемых транзактов не ограничено.

GENERATE 40,15; интервал времени между транзактами - величина случайная, равномерно распределенная в интервале (40±15), т.е. от 25 до 55.

GENERATE ,,,40; операнды A, В и C не используются,  их значения равны нулю по умолчанию; это означает, что в нулевой момент времени будут сгенерированы ровно 40 транзактов.

GENERATE 40,15,150,1000,3; интервал времени между транзактами - равномерно распределенная величина в интервале от 25 до 55; момент формирования первого транзакта равен 150 единицам модельного времени; всего за время моделирования этим оператором будет сгенерировано 1000 транзактов, после чего формирование транзактов прекратится; всем сгенерированным транзактам будет присвоен приоритет, равный 3.

GENERATE (Exponential(1,0,100)); интервал времени между транзактами - величина случайная, распределенная по экспоненциальному закону со средним значением 100.

 

Следует обратить внимание, что в последнем примере имя библио­течной процедуры с параметрами Exponential(1,0,100) заключается в круг­лые скобки. Параметры процедуры Exponential имеют следующий смысл: первый параметр - номер встроенного генератора равномерно распреде­лённых в интервале (0; 1) случайных чисел (может иметь значения от 1 до 999); второй и третий параметры - соответственно смещение (минимальное значение) и среднее значение (математическое ожидание) случайной величины, распределённой по экспоненциальному закону.

 

Для  удаления транзактов из модели предназначен блок  TERMINATE (ЗАВЕРШИТЬ).

 

Формат блока:

TERMINATE [A]

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

A - указатель уменьшения счетчика завершений (целое положи­тельное число); [по умолчанию - ноль].

Примеры:

TERMINATE 1; транзакт, поступивший в данный блок, удаляется из модели, и счетчик завершения процесса моделирования, начальное значение которого устанавливается командой START, уменьшается на 1.

 

TERMINATE; транзакт удаляется из модели, при этом значение счетчика завершения процесса моделирования не изменяется.

Задержка транзакта на заданное время производится с помощью блока ADVANCE (ЗАДЕРЖАТЬ).

Формат оператора:

ADVANCE [A],[B]

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

A - среднее время задержки или вероятностное распределение из встроенной библиотеки процедур, заключённое в круглые скобки; [по умолчанию - ноль];

В - величина полуинтервала равномерно распределенного интервала задержки или модификатор таблично заданной функции; [по умолчанию -ноль].

Примеры:

ADVANCE 50; поступивший транзакт задерживается в данном блоке на 50 единиц времени.

ADVANCE 50,10; время задержки транзакта - величина случай­ная, равномерно распределенная в интервале от 40 до 60 (50 ± 10).

ADVANCE 50,FN$Erl_1; время задержки транзакта - величина случайная, распределенная по закону, заданному в виде табличной функции Erl_1, со средним значением 50.

ADVANCE (Exponential(33,10,50)); время задержки - величина случайная, распределенная по экспоненциальному закону (из встроенной библиотеки процедур) со средним значением 50; номер встроенного генератора равномерно распределённых случайных чисел равен 33; смещение равно 10, то есть случайная величина, распределённая по экспоненциальному закону, принимает значения, начиная от 10.

          Изменение уровня приоритета активного транзакта в процессе моделирования осуществляется посредством блока   PRIORITY   (НАЗНАЧИТЬ ПРИОРИТЕТ).

 

Формат оператора:

PRIORITY A,[B]

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

A - уровень приоритета, присваиваемый активному транзакту;

B - может принимать только одно значение: BU (задает специальный режим, при котором активный транзакт помещается в список текущих событий позади транзактов с таким же приоритетом); [по умолчанию -Транзакт помещается перед транзактами с таким же приоритетом].

 

Для назначения и изменения параметра транзакта предназначен блок ASSIGN (НАЗНАЧИТЬ).

 

Формат оператора:

ASSIGN A,B,[C]

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

A - номер модифицируемого параметра и вид модификации: присвоение, увеличение (+), уменьшение (-);

B - величина, используемая для модификации; C - номер функции для модификации.

Примеры:

ASSIGN     4,10.5;  параметру с номером 4 присваивается значение

10.5.

ASSIGN 4+,10.5; значение параметра с номером 4 увеличивается на величину 10.5.

ASSIGN 4-,10.5; значение параметра с номером 4 уменьшается на величину 10.5.

ASSIGN     3+,5,7; 1) рассчитывается значение функции 7; 2) это значение умножается на 5; 3) целая часть этого произведения прибавляется к значению параметра 3 вошедшего (активного) транзакта.

ASSIGN 3+,5,FN7; в отличие от предыдущего примера сначала рассчитывается значение функции 7, целая часть которого будет использоваться как C, то есть номер функции.

ASSIGN 3+,5,Erl; 1) рассчитывается значение функции с именем Erl; 2) это значение умножается на 5; 3) целая часть этого произведения прибавляется к значению параметра 3 вошедшего (активного) транзакта.

Три последних примера показывают, что в качестве операнда С может использоваться номер функции или её имя (без FN или FN$). Если же операнд С содержит FN или FN$, то это означает косвенное опреде­ление номера функции для модификации.

 

          Блок  RETURN   (ВЕРНУТЬ) предназначен для освобождения прибора активным транзактом и выбора нового транзакта.

 

Формат оператора:

RETURN A

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

A - идентификатор (число или имя) прибора, подлежащего освобождению.

 В прибор новый транзакт выбирается из списков прибора в строго определённой последовательности: сначала выбирается транзакт из списка отложенных прерываний; если он пуст, то транзакт выбирается из списка прерываний и, наконец, если и список прерываний пуст, то транзакт выбирается из списка задержки.

 

Оператор  MARK (ОТМЕТИТЬ) служит для записи значения абсолютного времени в качестве одного из параметров активного транзакта (отметка транзакта).

 

Формат оператора:

MARK [A]

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

A - номер параметра, в который записывается значение таймера абсолютного времени; [по умолчанию - Значение абсолютного времени помещается на место ранее записанного времени входа транзакта в модель].

 

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

 

        Для   занятия транзактом одноканального устройства служит блок

SEIZE (ЗАНЯТЬ).

 

Формат оператора:

SEIZE A

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

A - идентификатор (число или имя) занимаемого прибора.

Примеры:

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

 

SEIZE Pribor_Disk; транзакт пытается занять прибор с именем PriborDisk; далее по аналогии с предыдущим примером.

 

Удаление транзакта из прибора (освобождение прибора) осуществляется посредством блока  RELEASE (ОСВОБОДИТЬ).

 

Формат оператора:

RELEASE A

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

A - идентификатор (число или имя) освобождаемого прибора.

Примеры:

RELEASE  4; транзакт освобождает прибор с номером 4. RELEASE  Pribor_Disk; транзакт освобождает прибор с именем PriborDisk.

 

          Захват   прибора   вновь прибывшим транзактом осуществляется с помощью блока  PREEMPT (ЗАХВАТИТЬ).

 

Формат оператора:

PREEMPT A,[B],[C],[D],[E]

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

A - идентификатор (число или имя) прибора, подлежащего захвату;

B - определяет условие, при котором разрешён захват прибора: PR -приоритетный режим: захват разрешён, если активный транзакт имеет более высокий приоритет, чем обслуживаемый транзакт; [по умолчанию -Режим прерывания: захват разрешён, если обслуживаемый транзакт не является захватчиком];

C - метка блока, в который направляется транзакт, вытесненный из прибора более высокоприоритетным транзактом; [по умолчанию -Транзакт помещается в СБС];

D - номер параметра вытесненного транзакта, в который записывается оставшееся время обслуживания в приборе, если транзакт направляется к блоку С; используется совместно с операндом C;

E - может принимать только одно значение: RE, означающий режим удаления: вытесненный транзакт удаляется из состязания за прибор; [по умолчанию - вытесненный транзакт не удаляется из состязания за прибор].

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

 

       Вход транзакта в многоканальное устройство осуществляется с помощью блока  ENTER (ВОЙТИ).

 

Формат оператора:

ENTER A,  [В]

 

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

A - идентификатор (число или имя) многоканального устройства;

В - количество занимаемых приборов многоканального устройства; [по умолчанию - один].

Примеры:

ENTER   5; транзакт поступает в многоканальное устройство с номером 3 и занимает один прибор (по умолчанию).

 

ENTER MANY,4; транзакт, поступая в многоканальное устрой­ство с именем MANY, занимает 4 прибора.

 

Назначение оператора LEAVE (ВЫЙТИ): удаление транзакта из многоканального устройства.

Формат оператора:

LEAVE A,[B]

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

A - идентификатор (число или имя) многоканального устройства;

B   -   количество   освобождаемых   приборов многоканального устройства; [по умолчанию - один].

Примеры:

LEAVE 5; транзакт покидает многоканальное устройство с номером 5 и освобождает 1 прибор (по умолчанию).

LEAVE MANY,4; транзакт, покидая многоканальное устройство с именем MANY, освобождает 4 прибора.

 

Для изменения   состояния логического ключа предназначен блок  LOGIC (ИЗМЕНИТЬ).

 

Формат оператора:

LOGIC     X A

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

A - идентификатор (число или имя) логического ключа;

X - логический оператор, указывающий тип операции изменения состояния: R - сбросить (выключить), S - установить (включить).

 

       4.3  Блоки, предназначенные для сбора статистических данных

 

       Для  занесения транзакта в очередь (точнее - регистрация статистики очереди, связанная с фиксацией момента поступления транзакта в очередь и увеличением ее длины) предназначен блок QUEUE   (СТАТЬ В ОЧЕРЕДЬ).

 

Формат оператора:

QUEUE A,[B]

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

A - идентификатор (число или имя) очереди;

В - количество элементов, на которое должна увеличиться длина очереди; [по умолчанию - один].

Примеры:

QUEUE 3; присоединение транзакта к очереди с номером 3 и увеличение ее длины на 1 (по умолчанию).

 

QUEUE Jeck,5; присоединение транзакта к очереди с именем Jeck и увеличение ее длины на 5.

 

Удаление транзакта из очереди (точнее - регистрация статистики очереди, связанная с уменьшением ее длины и фиксацией момента удаления транзакта из очереди с целью определения времени ожидания) производится блоком  DEPART   (ПОКИНУТЬ ОЧЕРЕДЬ).

 

Формат оператора:

DEPART     A, [В]

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

A - идентификатор (число или имя) очереди;

В - количество элементов, на которое должна уменьшиться длина очереди; [по умолчанию - один].

Примеры:

DEPART 3; удаление транзакта из очереди с номером 3 и уменьшение ее длины на 1 (по умолчанию).

 

DEPART Jeck,5; удаление транзакта из очереди с именем Jeck и уменьшение ее длины на 5.

 

Блок  TABULATE   (ТАБУЛИРОВАТЬ) предназначен для занесения значений в статистическую таблицу, предварительно определенную оператором TABLE.

 

Формат оператора:

TABULATE A,[B]

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

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

TABLE;

B - весовой коэффициент; [по умолчанию - Коэффициент равен 1].

При попадании активного транзакта в оператор TABULATE обновляется статистика, связанная с таблицей, указанной в операнде A.

 

        4.4  Блоки, изменяющие маршрут

 

        Назначение блока   TEST (ПРОВЕРИТЬ) состоит в проверке значения (обычно СЧА) и передаче активного транзакта в блок, отличный от последующего, если указанное условие не выполняется.

 

Формат оператора:

TEST    Х A,B,[C],

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

A - проверяемое значение;

B - контрольное значение;

C - имя (метка) блока назначения C;

 [по умолчанию – Режим альтернативного выхода и проверяемое условие не выполняется, транзакт передается блоку, указанному в операнде С.

          Когда транзакт пытается войти в блок TEST в режиме отказа (при отсутствии операнда С) и заданное условие не выполняется, транзакт блокируется до тех пор, пока условие не будет выполнено.

Примеры:

TEST LE Q1,5,Otk_1; если проверяемое условие «длина очереди 1 меньше или равна 5?» выполняется, то активный транзакт передается следующему оператору, в противном случае он направляется к оператору с меткой Otk_1.

 

TEST G Q1,5; если проверяемое условие «длина очереди 1 больше 5?» выполняется, то активный транзакт передается следующему оператору, в противном случае он блокируется до тех пор, пока условие не будет выполнено.

 

         Назначение оператора   TRANSFER (ПЕРЕДАТЬ): передача транзакта в блок, отличный от последующего.

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

- режим безусловной передачи;

- режим статистической передачи;

- режим BOTH (ОБА);

- режим ALL (ВСЕ);

- режим PICK (выборочный);

- режим FN (функциональный);

- режим P (параметрический);

- режим SBR (подпрограммный);

- режим SIM (одновременный).

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

Режим безусловной передачи

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

 

Формат оператора:

TRANSFER ,B

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

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

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

Пример:

TRANSFER ,UZEL_3; всякий раз активный транзакт будет направляться к блоку с меткой UZEL_3.

 

 

Режим статистической передачи

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

 

Формат оператора:

TRANSFER A,[B],C

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

A - частота (вероятность) передачи транзакта в блок C;

B - имя блока B; [по умолчанию - Следующий по порядку блок];

C - имя блока C.

 Частота (вероятность) передачи транзакта в операнде А может быть указана двумя способами:

- в виде вероятности - дробного числа с десятичной точкой, принимающего значения строго меньше 1;

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

Заметим, что значение операнда А, равное 1, будет соответствовать вероятности 0,001, а не 1, поскольку транслятор воспринимает любое целое число как долю от 1000.

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

Примеры:

TRANSFER 250,UZEL_2,UZEL_3; активный транзакт с вероятностью 250/1000 = 0,25 будет направляться к блоку с меткой UZEL_3 и с вероятностью 0,75 - к блоку с меткой UZEL_2 .

 

TRANSFER  25,UZEL_2,UZEL_3;    активный    транзакт с

вероятностью 25/1000 = 0,025 будет направляться к блоку с меткой UZEL_3 и с вероятностью 0,975 - к блоку с меткой UZEL_2 .

 

TRANSFER .95,,BOX7; активный транзакт с вероятностью 0,95 будет направляться к блоку с меткой BOX7 и с вероятностью 0,05 - к следующему по порядку блоку (по умолчанию).

 

Назначение блока GATE (ВПУСТИТЬ): изменение маршрута движения транзактов в зависимости от состояния некоторого объекта.

 

Формат оператора:

GATE    X A,[B]

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

A - идентификатор (число или имя) проверяемого объекта;

B - номер блока, к которому переходит транзакт, если объект находится в положении, не отвечающем условию проверки; [по умолчанию - Проверка происходит в режиме отказа];

X - условный оператор, содержащий условие, которому должен удовлетворять объект для успешного завершения теста; может принимать множество значений, в соответствии с которыми проводится проверка состояния некоторого объекта (прибора, многоканального устройства, логического ключа), в том числе:

FV - прибор доступен;

FNV - прибор недоступен;

I - прибор в прерванном состоянии;

NI - прибор в непрерванном состоянии;

U - прибор используется;

NU - прибор не используется;

SE - многоканальное устройство пусто;

SNE - многоканальное устройство не пусто;

SF - многоканальное устройство заполнено;

SNF - многоканальное устройство не заполнено;

SV - многоканальное устройство доступно;

SNV - многоканальное устройство не доступно;

LS - логический ключ установлен (включен);

LR - логический ключ сброшен (выключен).

 

5 GPSS-модели систем телекоммуникации

 

В данном разделе будет рассмотрена возможность применения системы GPSS для моделирования и исследования некоторых систем телекоммуникаций. Будут рассмотрены : модель простой телефонной системы,  имитационная модель работы телефонной сети, модели работы переговорного пункта,  частной телефонной станции, выполнено моделирование сети  Ethernet в среде GPSS WORLD и представлена модель вычислительной системы с несколькими абонентскими пунктами. В каждом случае будет сначала приведена постановка конкретной задачи, затем показан вариант соответствующей ей модели на GPSS WORLD и выполнен  последующий анализ работы телекоммуникационной системы. При выполнении анализа показана технология работы с пакетом GPSS WORLD, позволяющая проводить исследования телекоммуникационных систем.

 

5.1 Имитационная модель простой телефонной системы

 

5.1.1 Постановка задачи

Телефонная система имеет две внешние линии. Внешние звонки поступают каждые 100±60 секунд. Если линия занята, то звонок повторяется через 5±1 минуты до тех пор, пока не будет обслужен. Звонок длится 3±1 минуты. Нужно занести в таблицу распределение времени, не­обходимого для выполнения успешных звонков. Сколько времени потребуется для заверше­ния 200 звонков?

 

5.1.2 Листинг  программы

*************************************************************

 

* Модель телефонной системы

* Время в минутах

*************************************************************

Sets                  STORAGE 2

Transit              TABLE M1,.5,1,20              ;Транзитное время

                         GENERATE 1.667,1                  ;Входящие звонки

Again                GATE SNF Sets,Occupied          ;Попытка занять линию

                          ENTER Sets                         ;Установление соединения

                          ADVANCE 3,1              ;Разговор, длящийся 3±1 минуты

                          LEAVE Sets                          ;Освобождение линии

                          TABULATE Transit    ;Занесение в таблицу тр. времени

                          TERMINATE 1                     ;Удаление транзакта

Occupied           ADVANCE 5,1           ;Ожидание в течение 5±1 мин

                          TRANSFER ,Again              ;Повторная попытка

 

5.1.3 Анализ работы модели

 

Чтобы создать процесс моделирования, выберем Command / Create Simulation.

После этого выберем Command / START. В диалоговом окне заменим 1 на 200 и нажмем ОК.

Процесс моделирования завершится, когда 200 транзактов войдут в блок TERMINATE. Это соответствует 200 завершенным звонкам.

После завершения процесса моделирования GPSS World выводит отчет в файл отчета, за­данного по умолчанию. 

Этот отчет  автоматически выводится в окне. Если  закрыть окно, повторно его можно будет открыть с помощью команды главного меню File / Open. Затем в выпа­дающем списке «Files of type» («Тип файла»)надо  выбрать Report (Отчет). 

Из значения End Time в стандартном отчете видно, что к моменту, когда 200 звонков были завершены, прошло 359.16 минуты. Таблица с именем Transit дает более детальную информацию о том, сколько времени потре­бовалось звонящим для совершения звонков. Хотя большинство звонящих уложились мень­ше чем в 9.5 минут, большое количество звонков заняло больше времени. Возможно, именно в этом будет источник неудовлетворенности потребителя.

Теперь исследуем конечное состояние процесса моделирования, сгенерировавшего стандар­тный отчет. Воспользуемся окном «Expression» («Выражения») для просмотра некоторых стандартных числовых атрибутов. Во-первых, подтвердим время окончания процесса моделирования. Выберем Window / Simulation Window / Expression Window .

Для ввода значения в пустое поле диалогового окна необходимо поместить указатель мыши в его начало и нажать один раз левую кнопку. Для перемещения от поля к полю можно использовать клавишу [Tab]. Теперь в поле «Label» («Метка») диалогового окна наберем «Время», а в поле «Expression» («Выражение») – АС1.

Это позволит  просмотреть текущее время. Нажмем View (Просмотр) и Memorize (Запом­нить).

Если выражение было запомнено, то можно закрыть это окно, позже открыть его снова и восстановить все значения. При сохранении процесса моделирования значения в окне «Expression» («Выражения») сохраняются вместе с ним в том случае, когда они были запом­нены ранее.

Теперь посмотрим на коэффициент использования телефонных линий (в долях от тысячи). В поле «Label» («Метка») заменим текущее значение на «Коэффициент использования». Так­же заменим текущее значение в поле «Expression» («Выражение») на SR$Sets. Нажмем View (Просмотр) и Memorize (Запомнить).

Наконец, добавим среднее время использования телефонной линии. В поле «Label» («Мет­ка») заменим текущее значение на «Сред. длит. Звонка», а в поле «Expression» («Выраже­ние») - на ST$Sets. Нажмем View (Просмотр) и Memorize (Запомнить), затем ОК.

Коэффициент использования выражается в долях от тысячи. Линии используются на 84% от их пропускной способности. И хотя имеется некоторый запас пропускной способности, задер­жки в очереди могут стать недопустимыми.

Теперь откроем некоторые графические окна. Выберем Window / Simulation Window / Storages Window .

 

Рисунок 5.1 – Окно «Storages»

 

Это подробный обзор окна «Storages» («Памяти»).   Загрузка составила 84%. Из минимального и максимального значений использования памяти видно, что иногда в процессе моделирования были заняты 0, 1 или 2 линии.

Если открыть окно «Table» («Таблицы»), то можно увидеть диаграмму длительностей завер­шенных звонков. Выберем Window / Simulation Window / Table Window (Окно / Окно процесса моделирования / Окно «Таблица»). Так как в этой модели есть только одна таблица, то в выпа­дающем списке вы сразу увидим TRANSIT. Нажмем ОК.

Удостоверимся, что размер  окна «Table» («Таблицы») достаточно велик, чтобы пра­вильно отобразить таблицу. Здесь приводится та же информация, что и в стандартном отче­те. Как показывает СЧА ST в окне «Expression» («Выражения»), среднее время разговора равно 3 минутам, однако, как видно из окна «Table» («Таблицы»), среднее время, включая повторные звонки, составляет 14.27 минуты. Звонящие затрачивают слишком много времени на повторные звонки.

 

 

Рисунок 5.2– Вид таблицы TRANSIT

 

Давайте посмотрим, где находятся транзакты. Выберем Window / Simulation Window / Blocks Window (Окно / Окно процесса моделирования / Окно «Блоки»). Это окно «Blocks» («Блоки»).

Видно, что 15 человек ждут, чтобы перезвонить. Посмотрим на историю входов в блоки в столбце «Entry Count» («Количество входов»).

 

 

Рисунок 5.3 – Окно «Blocks» («Блоки»), показывающее блок TRANSFER

 

Обратим внимание на число транзактов, входивших в блок ADVANCE. Все они ждали, чтобы перезвонить, т.е. 561. При этом было сделано только 200 звон­ков. Нажмем 15 или 20 раз функциональную клавишу [F5], по­зволяющую сделать один шаг в процессе моделирования.ее. Многие звонящие при повторном звонке снова обнаруживают, что все линии заняты и снова должны ждать, чтобы перезвонить.

Вернемся к просмотру процесса моделирования с помощью графических окон. Закроем все от­крытые окна за исключением окон «Blocks» («Блоки»), «Journal» («Журнал») и «Model» («Модель»).

Повторно откроем окно «Expression» («Выражения») со значениями, которые  сохранили ранее, и добавим номер звонка, который также является номером активного транзакта. Выберем Window / Simulation Window / Expression Window (Окно / Окно процесса моделирования / Окно «Выражения»). Заменим текущее значение в поле «Label» («Метка») диалогового окна на «Номер звонка»,  а в поле «Expression» («Выражение») - на XN1. Нажмем View (Просмотр) и Memorize (Запомнить).

Прежде чем открыть это окно,  необходимо восстановить все запомненные выражения, которые были введены, когда мы открывали окно в первый раз. Выберем каждое выражение и нажмемView (Просмотр).

Наконец, когда все выражения будут восстановлены, нажмем ОК.

Теперь удалим транзакты и сбросим собранную статистику. Из главного меню выберем Command / CLEAR, затем выберем Command / Custom. Наберем rmult 1.

Мы сбрасываем генератор случайных чисел номер 1, так как команда CLEAR этого не делает. Это необходимо, если мы хотим обеспечить исходную точку потока. Таким образом, даже если были использованы другие команды, не перечисленные в пособии, то после использова­ния команды CLEAR мы будем видеть в течение этого процесса моделирования одни и те же результаты. В окне «Blocks» («Блоки») наведем указатель мыши на последний блок в модели (блок TRANSFER). Щелкнем на значке блока TRANSFER и на значке «Place» («Поместить»).

Далее расположим окна «Blocks» («Блоки»), «Journal» («Журнал») и «Expression» («Выраже­ния») так, чтобы они все были видны. Выберем Command / START. В диа­логовом окне заменим 1 на 1000 ,NP и нажмем ОК.

Процесс моделирования останавливается при первой попытке транзакта войти в блок TRANSFER. Это указывает на то, что данный звонящий не может дозвониться. Продолжим выполнение процесса моделирования. Нажмем [F2]. Выполним данную операцию еще 4 раза, каждый раз процесс моделирования будет приостанавливаться из-за условия остановки.

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

Теперь удалим условие остановки. В окне «Blocks» («Блоки») щелкнем на значке блока TRANSFER и нажмем кнопку «Remove» («Удалить»). Затем закроем окна «В1оскз»(«Блоки») и «Expression» («Выражения»).

Теперь  будем наблюдать за выполнением процесса моделирования с помощью окна «Storages» («Памяти») в режиме общего обзора. Из главного меню выберем Window/Simulation Window / Storages Window (Окно / Окно процесса моделирования / Окно «Памяти»), затем, чтобы отключить подробный обзор, выберем View / Entity Details (Вид / Подробности).

Теперь посмотрим, как строится диаграмма задержки звонков. Выберем Window / Simulation Window / Table Window (Окно / Окно процесса моделирования / Окно «Таблица»). В данном случае имеется только одна таблица, поэтому ее имя уже находится в выпадающем списке. Нажмем ОК.

Продолжим выполнение процесса моделирования. Нажмем [F2].

Таблица с именем Transit фактически является динамической диаграммой, которая может быть просмотрена в любое время. Она показывает, что большинство людей не обслуживает­ся сразу же. Очевидно, что люди, обнаруживающие, что линии заняты, рады не будут. Что если мы увеличим количество линий? Давайте промоделируем четыре линии вместо двух.

Прежде чем переопределить объект, необходимо использовать команду CLEAR. Выберем Command/ CLEAR (Команда / CLEAR), затем выберем Command / Custom... (Коман­да/Ввести...). В диалоговом окне наберем Sets Storage 4 и нажмем [Enter], в следующей строке наберем rmult 1 и нажмем ОК.

Таким способом переопределяется количество телефонных линий. Давайте посмотрим, что произойдет. Выберем Command / START (Команда / START). В диа­логовом окне заменим 1 на 1000,Np и нажмем ОК.

Коэффициент использования телефонных линий стал намного меньше. Посмотрим диаграм­му длительности звонков. Выберем Window / Simulation Window / Table Window (Окно / Окно процесса моделирования / Окно «Таблица»). Так как мы имеем только одну таблицу, то ее имя уже выбрано в выпадающем списке. Нажмем ОК.

В окне «Blocks» («Блоки») при подробном обзоре видно, что входов в блок TRANSFER не было, а это означает, что не было ни одного повторного звонка. Четыре линии намного лучше, чем две. 

Можно изменить число линий на 3 и сравнить результаты. Быстрое изучение отчета показывает, что только 57 звонящих были вынуждены перезвонить. 

 

5.2 Исследование на имитационной модели работы телефонной сети

 

          5.2.1 Постановка задачи

       Телефонная сеть имеет 50 абонентских линий связи, причем одновременно может быть задействовано не более 10 связей между абонентами. Каждый абонент может соединиться с остальными, если  свободны его входная линия связи и входная линия вызываемого абонента. Из 50 линий для организации связи могут использоваться любые две свободные линии. Необходимо промоделировать работу телефонной сети для 1000 вызовов. Интервалы между вызовами и длительность разговора распределены по экспоненциальному закону. Предусматривается, что первые 15 вызовов  образуют переходной процесс в сети и эти данные не нужно учитывать при моделировании.

 

 

5. 2. 2 Листинг программы

 

*******************************************************************

*        Модель  телефонной сети

*

******************************************************************

          POISS    FUNCTION RN1,C24

0.0,0.0/0.1,0.104/0.2,0.222/0.3,0.355/0.4,0.509/0.5,0.69/     ; Функция интервалов

0.6,0.915/0.7,1.2/0.75,1.38/0.8,1.6/0.84,1.83/0.88,2.12/        ; между вызовами

0.9,2.3/0.92,2.52/0.94,2.81/0.95,2.99/0.96,3.2/0.97,3.5/

0.98,3.9/0.99,4.6/0.995,5.3/0.998,6.2/0.999,7/0.99997,8 

                    GENERATE         12,FN$POISS                       ; Генерация вызова

                   TEST  G                V$FREELN,2,ABND          ; Система заполнена?

ASN1         ASSIGN                 1,V$LINE       ;  Номер входной линии

                    GATE LR             *1,ASN1           ; Проверка занятости инии

ASN2         ASSIGN                                           2,V$LINE         ;Выбор адресата связи

                   TEST NE               P1,P2,ASN2     ; Адресат совпадает со входной?

                   LOGIC S                *1                   ;Установить входную занятой.

                   TRANSFER          BOTH,,BLKD   ; Дождаться связи

GETL         ENTER                  LNKS               ; Установить связь

                   GATE LR             *2,BUSY           ; Проверка занятости

                   LOGIC S               *2                      ; Установить адресат занятым

                   ADVANCE            120,FN$POISS  ; Разговор

                   LOGIC R                *1                    ; Установить входную свободной

                   LOGIC R                *2                    ; Установить адресат свободным

                   LEAVE                    LNKS            ; Освободить связь

CKCH         TEST G                  CH$WAIT,0,MTRM  ;Есть ли ожидающие?

                   GATE LR               1,GETF            ; Свободна ли входная?

                   UNLINK                WAIT,GETL,1,2,1   ;Проверить список

MTRM        TERMINATE         1

GETF         UNLINK                 WAIT,GETL,1  ;Подключить первый из списка

                   TRANSFER             ,MTRM             

ABND         TERMINATE                                    ; Отказаться от вызова

BLKD         LINK                        WAIT,P1          ; Добавить в список

BUSY         LOGIC R                  *1              ; Освободить линию

                   LEAVE                     LNKS        ; Освободить связь

                   TRANSFER             ,CKCH       ;

LNKS          STORAGE                   10               ; Количество связей

LINE           VARIABLE       X$NRLINES#RN1/1000+1  ; Выбор линии

FREELN     VARIABLE  X$NRLINES-2#S$LNKS-CH$WAIT  ; Номер свободной линии

                     INITIAL   X$NRLINES,50  ; Количество линий для связи

                     START     15,NP                   ; 15 проходов

                     RESET                                   ; Сброс статистики

                    

 

5.2.3 Анализ работы телефонной системы

Чтобы создать процесс моделирования, выберем Command / Create Simulation, затем выберем  Command / START. Когда появится диалоговое окно, заменим значение 1 на 1000 и нажмем OK.

 Отчет будет автоматически выведен в окно. Из значения End Time в стандартном отчете можно увидеть, что к моменту, когда  1000 вызовов поступят в сеть, прошло 14975.179 минуты. Повторное моделирование благодаря использованию случайных чисел даст немного другие значения.

Поскольку в сети одновременно могут быть задействованы 10 связей, количество одновременных связей представлено как многоканальное устройство (МКУ) LNKS и описано оператором STORAGE.

Запустим снова процесс моделирования. Выберем Window/Simulation Window/Storages Window. Затем выберем  Command / START. Когда появится диалоговое окно, заменим значение 1 на 1000 и нажмем OK.  Экран  выглядит, как на рисунке 5.4.

Перед нами подробный обзор окна «Storages» («Памяти»).  Загрузка составила 64%. Здесь же можно определить минимальное, максимальное и среднее число использованных линий. 

 

 

                       Рисунок 5.4 – Окно «Storages»

Для того чтобы вывести на экран график изменения заданного параметра во времени, необходимо выполнить следующие действия:

1) Выбрать Command / Create Simulation.

2) Выбрать Window/Simulation Window/Plot Window.

3) Заполнить диалоговое окно и нажать OK.

4)Запустить процесс имитационного моделирования, выбрав Command / START. Когда появится диалоговое окно, заменить значение 1 на 1000 и нажать OK.

Например, если необходимо установить зависимость между числом связей и текущим временем, то необходимо заполнить диалоговое окно как на рисунке 5.5.

Из значения End Time в стандартном отчете мы видим, что к моменту, когда  1000 вызовов поступят в сеть, прошло 14975.179 минуты. Поэтому в диалоговом окне значение Time Range выбираем равным 16000 мин.  Время у нас будет изменяться по оси  абсцисс, предельное значение - 16000. На оси ординат будет отложено число связей за время моделирования, нам известно, что максимальное число связей равно 10. В диалоговом окне установим Min Value – 0, а Max Value – 10. После того, как будет выполнен пункт 4, экран буде выглядеть, как на рисунке 5.6.

Теперь необходимо ещё раз создать процесс моделирования. Выберем Command / Create Simulation.

Затем выберем  Command / START. Когда появится диалоговое окно, заменим значение 1 на 1000 и нажмем OK. После этого  будем наблюдать процесс моделирования в окне «Plot».

 

 

          Рисунок 5.5 – Диалоговое окно «Plot Window»

 

                               Рисунок 5.6. -  Окно «Edit Plot»

 

 

Рисунок 5.7 – График изменения параметра во времени

 

 

5.3 Моделирование работы переговорного пункта

 

          5 .3.1 Постановка задачи

          Работает переговорный пункт для четырех абонентов. Интервал между прибытиями абонентов колеблется в пределах 1.85±1 мин. Время оплаты каждого разговора составляет 1.5±0.5 мин., а время разговора по телефону составляет 4.4±1.35 мин. Поток посетителей, приходящих в переговорный пункт, равномерный. Время ожидания вызова абонента составляет 3.5±1.1 мин.  Время разговора абонентов, оплаты разговора и ожидания вызова абонента подчиняется равномерному закону распределения. Если все телефоны переговорного пункта заняты, то посетитель ожидает освобождения одного из них.

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

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

 

5. 3. 2 Листинг программы

 

Punkt         STORAGE     4

Transit       TABLE           M1,0.5,1,30

                   GENERATE  1.85, 1

Povtor        GATE  SNF   Punkt, Zanyt

                   ENTER          Punkt

                   QUEUE         Ocher_kassir

                   SEIZE           Kassir

                   DEPART      Ocher_kassir

                   ADVANCE   1.5, 0.4

                   RELEASE     Kassir

                   ADVANCE   4.4, 1.35

                   LEAVE        Punkt

                   TABULATE  Transit

                   TERMINATE

Zanyt         ADVANCE   3.5,1.1

                   TRANSFER       , Povtor

                   GENERATE   480

                   TERMINATE 1

                    START 1

 

5.3.3 Анализ работы модели

Перед началом моделирования  установим  вывод необходимых параметров моделирования. Для этого выберем Edit/Settings. Появится диалоговое окно, в котором можно установить нужные выходные параметры. Для имитационной модели переговорного пункта  диалоговое окно можно представить, как на рисунке 5.8. Наличие галочки говорит о том, что эта информация будет выведена в окне результатов моделирования. Для нас необходима информация о следующих объектах: об очереди, каналах обслуживания, многоканальном устройстве (МКУ) и гистограммах.

 

 

                                Рисунок 5.8 – Окно «SETTINGS»

 

Теперь создадим процесс моделирования. Выберем Command / Create Simulation. Начнется трансляция исходной модели, а затем ее выполнение, поскольку в программе имеется управляющая  команда START, обеспечивающая автоматическое выполнение программы.

После завершения процесса моделирования GPSS World выводит отчет в файл отчета, заданного по умолчанию. 

Этот отчет будет автоматически выведен в окно. Из значения End Time в стандартном отчете мы видим, что время моделирования составило 480 мин., как было задано в программе. Число посетителей, оплативших разговор, составило 260. Повторное моделирование благодаря использованию случайных чисел даст немного другие значения.

Для того чтобы получить  гистограмму Transit о распределении иремени пребывания посетителей в переговорном пункте, необходимо ввести Window / Simulation Window / Table Window.

Появится диалоговое окно с названием гистограммы для базовой модели (см. рисунок 5.9)

 

 

                 Рисунок 5.9. – Окно «Open Table Window»

 

Если щелкнуть по кнопке ОК, на экране появится гистограмма Transit (см. рисунок 5.10).

 

 

Рисунок 5.10 – Гистограмма «Transit»

 

 

5.4. Модель частной телефонной станции

 

5.4.1 Постановка задачи

На частном узле телефонной связи имеются 200 параллельных телефонов, 30 внутренних линий, 30 внешних линий, 8 сигнализаторов и 1 оператор. В среднем телефонные звонки длятся 150 секунд и распределены по нормальному закону со стандартным отклонением в 30 секунд. Время между поступлением внешних звонков обратно пропорционально количе­ству параллельных телефонов (2500 разделить на количество параллельных телефонов) и распределено по экспоненциальному закону. Время между поступлением внутренних звон­ков обратно пропорционально количеству свободных параллельных телефонов (1260 раз­делить на количество свободных параллельных телефонов плюс 1). Направление этих звон­ков может быть внутренним (66.6%) и внешним (33,3%). Для звонков, поступающих с внутренних телефонов, оператор не нужен. Для внутренних звонков требуется сигнализа­тор и внутренняя линия, для внешних звонков - внешняя линия.

При звонке 15% параллельных телефонов занято, 20% - не отвечают.

Время, требуемое для сигнализации, равно 7±2 секунд, для звонка через параллельный те­лефон - 6±2 секунд. Звонящий слушает сигнал «занято» 4+1 секунду. Работа оператора зани­мает 9±3 секунды.

Необходимо смоделировать работу частного узла телефонной связи в течение 1 часа, а также       определить коэффициент использования оператора, сигнализаторов, внутренних и внешних линий, параллельных телефонов; определить количество внутренних и внешних звонков, обрабатываемых каждую минуту; определить, достаточно ли внутренних и внешних линий, сигнализаторов.

 

5. 4. 2 Листинг программы

*******************************************************************

*        Модель частной телефонной системы

*        Время в секундах

*******************************************************************

Transit        TABLE Ml,20,20,20

*******************************************************************

Extensions   STORAGE 200

Extlines       STORAGE 30

Intlines        STORAGE 30

Signals        STORAGE 8

Operator      STORAGE 1

*******************************************************************

* Определение переменных

Internal           VARIABLE 1260/(l+R$Extensions)

External          VARIABLE 2500/(R$Extensions+S$Extensions)

*

* Таблицы количества звонков

Callsint           TABLE S$Intlines,2,2,20

Callsext           TABLE S$Extlines,2,2,20

******************************************************************** Генерируются звонки, поступающие с внутренних телефонов.

                    GENERATE   (Exponential (1,0 ,V$Internal)), 0 ,20   ;Вн. звонки.

          ENTER          Extensions                 ;Снята трубка телефона.

          QUEUE           Inside                       ;Очередь на сигнализатор.

          ENTER          Signals                       ;Занимается сигнализатор.

          DEPART         Inside                         ;Выход из очереди.

          ADVANCE     7,2                            ;Время для сигнализации.

         LEAVE                 Signals         ;Сигнализатор освобождается.

         TRANSFER     .333,,Intout      ;44% звонков на внешние   линии.                                                 

Intint           TEST GE         R$Intlines,1,Breakoff ;Проверка доступности.

          ENTER           Intlines                   ;Занимается внутренняя линия.

          ADVANCE      4,1                  ;Проводится проверка, занят ли телефон.

          TRANSFER     .15,,Busy       ;Некоторые парал. телефоны заняты.

Aline            ENTER            Extensions                ;Другие  не заняты.

          ADVANCE       6,2              ;Время для звонка по парал.  телефону.

          TRANSFER        .2,,Nogood                  ;20% не отвечают.

          ADVANCE (Normal (2,150,30))    ;Продолжительность звонка.

Nogood       LEAVE                  Extension        ;Парал. телефон освобождается.

Busy            LEAVE                  Intlines         ;Внутренняя линия освобождается.

          TRANSFER        ,Breakoff

* Модель звонков с внутренних телефонов на внешние линии.

Intout          TEST GE    R$Extlines, 1 ,Breakoff ;Доступна ли внешняя линия?

         ENTER                   Extlines                 ;Занимается внешняя линия.

         ADVANCE 4,1               ;Время для проверки на занятость.

         TRANSFER         .200,,Nobody              ;20% заняты.

          ADVANCE           6,2                            ;Время для ответа.

         TRANSFER         .200,,Nobody               ;20% не отвечают.

         ADVANCE (Normal (2,150 ,30) )  ;Продолжительность звонка.

         TABULATE         Transit               ;Запись транзитного времени.

Nobody       LEAVE                  Extlines  ,         ;Внешняя линия освобождается.

Breakoff      LEAVE                   Extensions       ;Паралл. телефон свободен.

         TERMINATE

*******************************************************************

* Обработка внешних звонков.

        GENERATE (Exponential(1,0,V$External))         ;Внешние звонки.

        TEST GE     R$Extlines,1,Nonefree   ;Доступна ли внешняя линия?

        ENTER                    Extlines                    ;Занимается внешняя линия.

        QUEUE                    Outsider                       ;Очередь к оператору.

        ENTER                    Operator                       ;Занимается оператор.

        DEPART                   Outsider               ;Выход из очереди.

        ADVANCE             9,3                   ;Оператор обслуживает звонок.

        LEAVE                    Operator          ;Оператор освобождается.

        ADVANCE             4,1                            ;Заняты ли телефоны?

        TRANSFER            .15,,Engaged    ;Некоторые парал. заняты.

        ENTER                    Extensions            ;Занимается парал. телефон.

        ADVANCE              6,2                           ;Время для звонка.

        TRANSFER   .200,,Noperson             ;20% не отвечают.

        ADVANCE  (Normal(2,150,30))      ;Время звонка.

        TABULATE             Transit              ;Запись транзитного времени.

Noperson   LEAVE                    Extensions        ;Паралл. телефон освобождается

Engaged    LEAVE                     Extlines             ;Внешняя линия освобождается.

Nonefree  TERMINATE

       GENERATE              3600                        ;Транзакт каждый час.

       TERMINATE            1                    ;Счетчик завершения.

       GENERATE               60                 ;Транзакт каждую минуту.

       TABULATE               Callsint         ;Количество внутренних звонков.

       TABULATE               Callsext         ;Количество внешних звонков.

       TERMINATE

******************************************************************

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

 

5.4.3 Анализ работы модели

Выберем Command / Create Simulation (Ко­манда / Создать процесс моделирования) и Command / START (Команда / START). Так как мы хотим использовать 1 в качестве значения счетчика завершения, в диалоговом окне нажмем ОК.

Процесс моделирования завершится, когда транзакт войдет в блок TERMINATE 1, что пред­ставляет 1 час работы.

После завершения процесса моделирования GPSS World выводит отчет в файл отчета, за­данного по умолчанию. Сделаем анализ полученным результатам.

Коэффициенты использования оператора, сигнализаторов, внутренних и внешних линий, па­раллельных телефонов составили 69%, 12%, 41%, 44% и 15% соответственно.

Среднее количество внутренних звонков составило 9.47, а внешних - 14.17 (выборка произ­водилась каждую моделируемую минуту). Информация взята из раздела стандартного отче­та, посвященного таблицам.

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

Теперь исследуем конечное состояние процесса моделирования, сгенерировавшего стандар­тный отчет. Откроем несколько графических окон. Выберем Window / Simulation Window / Table Window (Окно / Окно процесса моделирования / Окно «Таблица»). В выпадающем списке диалогового окна выберем TRANSIT. Нажмем ОК.

Каждое окно «Table» («Таблица») дает информацию об одной из таблиц или Q-таблиц, определенных в модели. Таблица GPSS с именем TRANSIT показывает распределение времени выполнения звонков. Оно составило в среднем 174 секунды. Посмотрим на сле­дующую таблицу.

 

Рисунок 5.11Таблица TRANSIT

 

Выберем Window / Simulation Window / Table Window (Окно / Окно процесса моделирования / Окно «Таблица»). В выпадающем списке диалогового окна выберите CALLSINT.

 

Рисунок 5.12 – Таблица CALLSINT

Таблица GPSS с именем CALLSINT показывает распределение внутренних звонков в процес­се моделирования. Выберите Window / Simulation Window / Table Window (Окно / Окно процесса моделирования / Окно «Таблица»), Таблица CALLSEXT уже выбрана в выпадающем блоке диалогового окна, нажмем ОК.

 

Рисунок 5.13 – Таблица CALLSEXT

 

Таблица GPSS, которую назвали CALLSEXT, показывает распределение внешних звонков в процессе, моделирующем каждую минуту.

Теперь посмотрим на использование ресурсов. Выберите Window /Simulation Window /Storages Window (Окно / Окно процесса моделирования / Окно «Памяти»). Окно «Storages» («Памяти») показывает статистику, связанную с оператором, параллельными телефонами, внешними и внутренними линиями, сигнализаторами. Из всего оборудования больше всего использовал­ся набор внешних линий. Вы можете увеличить размер окна, чтобы увидеть всю информа­цию. Память, представляющая оператора, показывает нам, что оператор был занят 69% времени (обведено    на   рисунке 5.14).

 

Рисунок 5.14 – Окно памяти

Посмотрим, как изменяются очереди по мере поступления звонков. Выберем Window / Simulation Window / Blocks Window (Окно / Окно процесса моделирования / Окно «Блоки»).

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

Выберем Window / Simulation Window / Expression Window (Окно / Окно процесса моделирования / Окно «Выражения»). Открывается окно «Edit Expression» («Редактор выражения»).

Для ввода значения в пустое поле диалогового окна необходимо поместить указатель мыши в его начало и нажать один раз левую кнопку. Для перемещения от поля к полю можно использовать клавишу [Tab]. Теперь в поле «Label» («Метка») диалогового окна наберем «Время», а в поле «Expression» («Выражение») - АС1.

Нажмем кнопки View (Просмотр) и Memorize (Запомнить).

Если выражение было запомнено, то можно закрыть это окно, позже открыть его снова и восстановить все значения. Если процесс моделирования был сохранен, значения в окне «Expression» («Выражения») сохраняются вместе с ним, если ранее они были запомнены.

В поле «Label» («Метка») вместо текущего значения наберем «Внутренние линии», в поле «Expression» («Выражения») вместо текущего значения наберем S$Intlines.

В поле «Label» («Метка») вместо текущего значения введем « Внешние  линии». В поле «Expression» («Выражения») вместо текущего значения введем S$Extlines. Нажимаем кнопки View (Просмотр) и Memorize (Запомнить).

Также мы будем наблюдать за параллельными телефонами. В поле «Label» («Метка») вместо текущего значения вводим «Параллельные  телефоны». В поле «Expression» («Выражения») вместо текущего значения введем S$Extensions.

Теперь запустим процесс моделирования и проследим за значениями в окне «Expression» («Выражения»), а также за количеством входов в блоки в окне «Blocks» («Блоки»). Убедимся, что  поместили окна так, чтобы могли видеть соответствующие части обоих окон. Для этого лучше всего свернуть окно «Model» («Модель»), А затем окно «Expression» («Выражения») поместить в нижнем левом углу поверх окна «Blocks» («Блоки»).

Выбираем Command / START (Команда / START), в диалоговом окне вместо 1 вводим 15. Нажимаем ОК. Когда  изучим параметры модели в достаточной степени, останавливаем про­цесс моделирования. Для этого нажимаем  F4.

 

 

 

 

        5.5  Имитационное моделирование сети Ethernet

        5.5.1 Постановка задачи

    Исследуется 10-мегабитная сеть Ethernet. Сеть Ethernet с сотней подключенных в данный момент рабочих станций рабо­тает удовлетворительно. Было определено, что сетевой трафик состоит из двух классов со­общений, которые генерируются с одинаковой пропорцией во всех узлах.

  Общая структура входящего потока сообщений в час пик может быть смоделирована как пуассоновский процесс со случайным выбором отдельных рабочих станций.

  Сообщения поступают экспоненциально и бывают двух типов: короткие и длинные. Выбирается узел и удерживается в течение передачи сообщения и всех выдержек времени в случае коллизии. Каждый узел Ethernet может быть занят одним сообщением до тех пор, пока оно не будет отправлено или пока не произойдет некоторое количество коллизий (во время попыток передачи другими узлами), после чего объявляется постоянная ошибка и узел освобождается. Время измеряется в миллисекундах. Подразумевается, что отдельные узлы отстоят друг от друга на 2,5 м. При расчете окна коллизии для определения разделяющего расстояния используется идентификационный номер узла. Задержки распространения между смежными узлами равны 0,01 микросекунды. Каждый бит перемещается за 0,1 микросекунды. Межкадровый интервал моделируется путем задержки сети передающим узлом на некоторое дополнительное время, после того как он передал свое сообщение. Сообщения представлены транзактами GPSS. Узлы и сеть представлены устройствами GPSS. Дополнительное устройство используется во время передачи преднамеренных помех для предотвращения начала передачи нового сообщения. Коллизия возникает из-за нескольких одновременных попыток передачи 2 или более узлов. Задержка распространения сигнала препятствует одновременному распознаванию узлов друг другом, тем самым приводя к возможности коллизии. Интервал времени, в течение которого сигнал из другого узла может быть обнаружен, называется «окном коллизии». Коллизия представлена лишением передающего транзакта права занимать Ethernet и отправкой его в подпрограмму выдержки времени. Новый занимающий транзакт передает преднамеренные помехи в Ethernet и затем сам выдерживает некоторый временной интервал. Когда отправляется сообщение транзакта, транзакт занимает устройство Ethernet с приоритетом 0 и может быть вытеснен (PREEMPT) только транзактом с приоритетом 1. Когда транзакт передает преднамеренные помехи, он занимает устройство Ethernet с приоритетом 1 и не может быть вытеснен.

 

 

5.5.2 Листинг  программы

* Аргументы:

* 1. Node__Count - Количество узлов, отстоящих друг от друга на 2.5 м.

* 2. Min_Msg - Минимальное сообщение (бит).

* 3. Max_Msg - Максимальное сообщение (бит).

* 4. Fraction_ Short_ Msgs — Доля коротких сообщений (в долях от тысячи)

* 5. Intermessage_Time - Общий интервал между сообщениями.

*   Исходные данные:

Node_Count  = 100 - Общее число узлов Ethernet.

* Intermessage_Time = 1.0 - Среднее значение общего количества   сообщений, поступающих каждую миллисекунду.

 *   Min_Msg  =  512 - Минимальное сообщение в битах.

* Max_Msg  = 12144 - Максимальное сообщение в битах.

* Fraction Short Msgs = 600  - Короткие сообщения (в долях от тысячи).

* Slot_time   =  0.0512  - Время прохождения 512 битов.

* Jam_Time   =  0.0032  - Время прохождения 32 битов.

* Backoff_Limit   =  10 - Не больше, чем 10 повторов в случае коллизии.

* Interframe_Time  = 0.0096 - Время прохождения 96 битов.

 

*******************************************************************

Node_Count             EQU 100          

Intermessage_Time   EQU 1.0 

                

Min_Msg                   EQU 512                    

Max_Msg                  EQU 12144         

Fraction_Short_Msgs  EQU 600        

Slot_Time                EQU 0.0512        

Jam_Time              EQU 0.0032     

Backoff_Limit       EQU 10              

Interframe_Time    EQU 0.0096       

********************************************************************

* Определение функций и переменных GPSS

*

*******************************************************************Backoff_Delay   VARIABLE Slot_Time#V$Backrandom    

Backrandom       VARIABLE 1+(RN4@((2AV$Backmin)-1))

Backmin         VARIABLE (10#(10'L'P$Retries))+(P$Retries#(10'GE'P$Retries))

Node_Select       VARIABLE 1+(RN3@Node_Count)

Collide                VARIABLE ABS ((X$Xmit_Node-P$Node_ID)/100000)'GE' (ACl-X$Xmit_Begin)

Msgtime         VARIABLE (0.0001)#V$Msgrand

Msgrand         VARIABLE Min_Msg+(RN1'G'Fraction_Short_Msgs)#(Max_Msg-Min_Ms)

*******************************************************************

*

*        Диаграмма задержки сообщений
*

*******************************************************************

Msg_Delays         QTABLE Global_Delays,1,1,20

*******************************************************************

*

*        Главная часть модели
*

*******************************************************************   

         Генерация сообщений             

*******************************************************************

               GENERATE       (Exponential(1,0,Intermessage_Time))

                                                                                

               ASSIGN              Node_ID,V$Node_Select          

               ASSIGN              Message_Time,V$Msgtime        

               ASSIGN              Retries,0

*******************************************************************

 

*******************************************************************             

               QUEUE              Global_Delays 

                SEIZE                 P$Node_ID                   

Try_To_Send    PRIORITY         1                                       

                 SEIZE                Jam                               ;

                 RELEASE          Jam      

                 TEST E               F$Ethernet,l,Start_Xmit   

 

*******************************************************************

*

* Ethernet занят. Проверим, находимся ли мы в окне коллизии передающего узла.

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

* будет обнаружена. В этом случае мы должны инициировать коллизию.

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

*******************************************************************

                          TEST E    V$Collide,I,Start_Xmit    

                                                                              

* * * * * * * * * * * * * * * *   Коллизия  * * * * * * * * * * * * * * * * * * * * * *
Collision        PREEMPT  Ethernet,PR,Backoff ,,RE             

            SEIZE                   Jam                                     

            ADVANCE        Jam_Time                

            RELEASE         Jam                       

            RELEASE         Ethernet                

            PRIORITY        0                            

Backoff         ASSIGN           Retries+,1                

            TEST LE          P$Retries,Backoff_Limit,Xmit_Error 

            ADVANCE      V$Backoff_Delay       

            TRANSFER     ,Try_To_Send             

*******************************************************************

                 Занятие Ethernet и начало передачи.

*******************************************************************

 

Start_ Xmit      SEIZE                Ethernet               

             SAVEVALUE   Xmit_Node,P$Node_ID    

             SAVEVALUE   Xmit_Begin,AC1       

             PRIORITY         0     

             ADVANCE        P$Message_Time      

             ADVANCE        Interframe_Time       

             RELEASE          Ethernet                  

Free_ Node    RELEASE          P$Node_ID                   

             DEPART            Global_Delays          

             TERMINATE                                      

*******************************************************************

Xmit_Error    SAVEVALUE   Error_Count+, 1       

                      TRANSFER       ,Free_Node                  

*******************************************************************

*

*        Сегмент таймера

*

*******************************************************************

         GENERATE       1000                          

         TERMINATE     1

******************************************************************

 

 

5.5.3 Запуск модели

 

Выбираем Command / Create Simulation (Команда / Создать процесс моделирования).

Откроем диаграмму задержки сообщений, выбирая Window / Simulation Window / Table Window (Окно / Окно процесса моделирования / Окно «Таблица»), в выпадающем списке диалогового окна уже выбрана таблица MSG_DELAYS. Нажмем ОК.

Расположим это окно так, чтобы  можно было одновременно видеть и окно «Journal» («Жур­нал»), и диаграмму в окне «Table» («Таблица»), Теперь запустим процесс моделирования. Выберем Command / START (Команда / START), так как нам нужен счетчик завершения, рав­ный 1, в диалоговом окне нажмем ОК.

Когда сообщения проходят через Ethernet, в Q-таблице Msg_Delays регистрируется продол­жительность их передачи, и мы можем наблюдать их накопление в диаграмме (см. рисунок 5.15).

 

Рисунок 5.15 – Q-таблица в конце процесса моделирования

Процесс мо­делирования завершится, когда будет смоделирована 1 секунда работы. В окне «Table» («Таб­лица») мы можем видеть, что среднее время задержки сообщений составило немногим меньше одной миллисекунды.

Когда процесс моделирования закончится, GPSS World запишет отчет в файл отчета с име­нем Ethernet. 1.1 (по умолчанию).

 

 5.5.4 Анализ результатов базовой модели

 

Сейчас взглянем на отчет. Двигаемся вниз к разделу, посвященному устройству, которое пред­ставляет сеть Ethernet. Оно использовалось в среднем на 48%. Посмотрим на количество входов в блок с меткой Collision. В течение процесса моделирования было 3 коллизии. То есть на одно сообщение приходится 0.003 коллизии. Закроем окно «Report» («Отчет»), при этом  не нужно сохранять отчет.

Очевидно, что сеть действует удовлетворительно. Теперь посмотрим на эффект добавления N = 100 дополнительных рабочих станций.

Щелкнем на окне «Journal» («Журнал»), убедимся, что оно удобного для просмотра размера. Выберем Command / CLEAR (Команда / CLEAR). Теперь  изменим некото­рые параметры эксперимента.  Сделаем это с помощью интерактивной команды. Сначала изменим количество рабочих станций. Выберем Command / Custom... (Команда / Ввести...), наберем Node_Count EQU 100. Нажмем [Enter].

Теперь другой параметр - общий интервал между поступлением сообщений. Во второй стро­ке набираем Intermessage_Time EQU 1.0# (100/200).

 

Рисунок 5.16 – Q-таблица для 200 рабочих станций в сети

 

Нажмем ОК. Запустим процесс моделирования с новыми условиями. Выберем Command / START (Команда / START). Так как нам нужен счетчик завершения, равный 1, в диалого­вом окне нажмем ОК.

Как можно увидеть, в окне «Table» («Таблица») большое количество сообщений задерживается из-за временных задержек в случае коллизий. Средняя задержка сообщения увеличивается до 14 миллисекунд.

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

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

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

После завершения процесса моделирования GPSS World выводит отчет в файл отчета, за­данного по умолчанию (Ethernet 1.1). Расширения имен файлов отчета будут изменяться в зависимости от сохраненных процессов моделирования и ранее существовавших отчетов. Предположим, что процесс моделирования был создан и запущен в первый раз, поэтому расширение будет равно 1.1.

Этот отчет будет автоматически выведен в окне. Если закрыть окно, повторно его можно будет открыть с помощью команды главного меню File / Open (Файл / Открыть). Затем в выпадающем списке «Files of type» («Тип файла») надо выбрать Report (Отчет). Отчеты GPSS World записываются в специальном формате. Если необходимо отредакти­ровать отчет, следует скопировать его содержимое в буфер обмена, а оттуда - в текстовый редактор. Нельзя открыть этот файл непосредственно из текстового редактора.

Посмотрим на статистику нового стандартного отчета. Мы видим, что коэффициент использо­вания устройства Ethernet вырос до 98%, за моделируемое время произошло 413 коллизий. У многих транзактов произошло несколько коллизий.

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

Вся эта информация доступна в окнах «Facilities» («Устройства») и «Blocks» («Блоки»).

 

 

5.6 Модель вычислительной системы с несколькими абонентскими 

 пунктами (АП)

 

Пусть ЭВМ обслуживают 5 АП. Программа управления каналом связи опрашивает АП в соответствии со списком опроса. Если у опрашиваемого АП имеется сообщение для передачи, оно посылается в ЭВМ. После завершения передачи данных канал освобождается, и как только выходное сообщение от ЭВМ готово, оно занимает канал связи для передачи, т.е. выходного сообщения (от ЭВМ). Выходное сообщение имеет приоритет перед входным (от АП).

Исходные данные:

1) опрос циклический;

2) время, затрачиваемое на опрос одного АП — 100 мс;

3) интервалы времени между опросами —10 мс;

4) передача информации происходит со скоростью 300 символов/сек.;  

5) сообщение может содержать от 6 до 60 сотен символов;

6) интервалы времени между возникающими сообщениями от АП распределены экспоненциально со средним значением 50 мс;

7) время обработки сообщения от ЭВМ — 500 мс.

Определим вычислительные объекты:

функция ОPR имитирует список опроса: аргумент — параметр Р1, при условии, что в него будет записываться номер опрашиваемого АП;

      функция NAP определяет случайным образом номер АП, на котором возникло сообщение для ЭВМ;

      функция SMV определяет число символов во входном сообщении;

      переменная TZAN определяет время занятия канала связи, равное длине сообщения, разделенное на скорость передачи. (Время переведено в мс):

 

Программа:

SIMULATE

OPR  FUNCTION  P1,D5

1,2/2,3/3,4/4,5/5,1

NAP   FUNCTION  RN1,D5  

.2,NAP1/.4,NAP2/.6,NAP3/.8,NAP4/1,NAP5

SMV  FUNCTION  RN2,C2

.0,6/1.0,61

GOOPR  FUNCTION  P1,D5 

1,VAR1/2,VAR2/3,VAR3/4,VAR4/5,VAR5

TZAN  VARIABLE  FN$SMV*1000/3

GENERATE  50*FN$XPDIS        возникновение сообщения от АП

TRANSFER , FN$NAP                              определение номера АП

NAPSAVEVALUE 1+,1

TERMINATE

NAPSAVEVALUE 2+,1

TERMINATE

NAPSAVEVALUE 3+,1

TERMINATE

NAPSAVEVALUE 4+,1

TERMINATE

NAPSAVEVALUE 5+,1

TERMINATE

* опрос абонентских пунктов

GENERATE  ,,,1                                   циклический опрос от ЭВМ

ASSIGN  1,1

POLL  ASSIGN  1,FN$OPR                 определяется очередной АП

SEIZE  CAN                                          занять канал под опрос

ADVANCE  100

TRANSFER  ,FN$GOOPR                    определение номера АП

VAR1  IF  X1=0,PROD                         если нет сообщения — про- 

                                                                должать опрос

 SAVEVALUE  1–,1

SPLIT  1,XMIT                                    передача сообщения в ЭВМ

TRANSFER ,PROD

VAR2  IF  X2=0,PROD

SAVEVALUE  2–,1

SPLIT  1,XMIT

TRANSFER ,PROD

VAR3  IF  X3=0,PROD

SAVEVALUE  3–,1

SPLIT  1,XMIT

TRANSFER  ,PROD

VAR4  IF  X4=0,PROD

SAVEVALUE  4–,1

SPLIT  1 ,XMIT

TRANSFER  ,PROD

VAR5  IF  X5=0,PROD

SAVEVALUE  5–,1

SPLIT  1,XMIT

PROD  RELEASE  CAN                       освободить канал от опроса

ADVANCE  10                                      задержка между опросами

TRANSFER  ,POLL                              продолжение опроса

* передача и обработка сообщения 

XMIT  SEIZE  CAN                                передача к ЭВМ

ADVANCE  V$TZAN

RELEASE  CAN

ADVANCE  500                                    обработка сообщения

PRIORITY  1

SEIZE  CAN                                          передача от ЭВМ

ADVANCE  V$TZAN

RELEASE  CAN

TERMINATE

* таймер

GENERATE  10000

TERMINATE  1

START  1

END

 

В программе при возникновении сообщения от АП в ячейку с соответствующим номером заносится единица. При опросе АП ячейка с соответствующим номером проверяется на ненулевое значение: если содержимое ячейки равно нулю, то сообщения от АП нет, в противном случае сообщение передается к ЭВМ.   

Список литературы 

1. Советов Б.Я., Яковлев С.А. Моделирование систем. - М.: Высшая школа, 1998.

2. Шварц М. Сети связи: Протоколы, моделирование и анализ. - М.: Наука, 1992.

3. Боев В.Д. Моделирование систем. Инструментальные средства GPSS World: Учеб. пособие. – СПб.: БХВ-Петербург, 2004.

4. Кудрявцев Е.М. GPSS World. Основы имитационного моделирования различных систем. – М.: ДМК Пресс, 2004.

5. Томашевский В., Жданова Е. Имитационное моделирование  в среде  GPSS. - М.: Бестселлер, 2003.

6. Учебное пособие по GPSS World. /Перевод с английского /.- Казань:  «Мастер Лайн», 2002.

7. Шелухин О.И., Теняшев А.М., Осин А.В. Моделирование информационных систем. Учебное пособие.-М.: Радиотехника, 2005.

8. Туманбаева К.Х., Лещинская Э.М. Моделирование систем телекоммуникаций. Метод. указания к выполнению лабораторных работ для студентов спец. 050719 – Радиотехника, электроника и телекоммуникации. – Алматы: АИЭС, 2009.

9. Туманбаева К.Х.  Моделирование систем телекоммуникаций: Учебное пособие. - АИЭС, Алматы,  2006.