Работа в GPSS

    Основные  команды системы  моделирования GPSS World.  Построение GPSS модели

 

      При запуске файла  появится Главное окно системы: 

      

      Рис. 1. Главное окно GPSS 

      Главное окно состоит из нескольких компонентов. В верхней части расположено основное меню, еще ниже – панель инструментов, еще ниже поле – клиентская область. В самой нижней части экрана размещена строка состояния: левая часть For Help показывает подсказки с информацией об используемых пунктах меню. Средняя часть строки состояния Results показывает сообщения об ошибках. Правая часть Clock используется для отображения модельного времени в процессе выполнения модели.

      Нам необходимо создать объект «Модель».

      Для обработки текста GPSS World имеет текстовый редактор. Выбираем File ►New. После этого появится меню

      

      Рис. 2. Меню выбора объекта 

      Так как нам нужно создать объект «Модель» - выбираем Model. Откроется окно текстового редактора: 

      

      Рис.3. Окно текстового редактора 

      Пример 1

      Решить  с помощью программы-иммитатора задачу 1.  

      Задача  1. Требуется построить и проверить имитационную модель (ИМ) работы ремонтного подразделения с одним каналом обслуживания. В ремонтное подразделение поступают неисправные средства связи (СС) двух типов, которые ремонтируются одними и теми же мастерами ремонтного отделения. Интервалы времени поступления СС первого типа распределены равномерно 10±5 часов. Распределение интервалов времени поступления СС второго типа 12±8 часов. Поступающие СС ремонтируются в последовательности: первым поступило – первым отремонтировано. На ремонт СС первого типа затрачивается 6±2 часа, второго типа – 8±4 часов.

      Функционирование  ремонтного подразделения моделируется двумя независимыми последовательностями блоков. В качестве единицы модельного времени берем 1 мин. Время моделирования  – 3 суток (72 часа).

      Переводим все данные в мин.:

      10 часов = 600 мин.

      5   часов = 300 мин.

      12 часов = 720 мин.

      8   часов = 480 мин.

      6   часов = 360 мин.

      2   часа = 120 мин.

      4   часа = 240 мин.

      72 часа = 4320 мин.

      При построении и проверке  ИМ используются параметры: 

      Таблица 1

Обозначение идентификатора Наименование  идентификатора Примечание
Rem1 Ремонтное подразделение  с одним каналом обслуживания  
RemQ Общая очередь  неисправных СС первого типа  
RemQ1 Общая очередь  неисправных СС второго типа  
RemQ2 Имя таблицы, в  которой будет табулироваться общее время прохождения неисправного СС в ремонте  
VrRem Имя таблицы, в  которой будет табулироваться общее  время нахождения  неисправного СС в ремонте  
VrRem1 Имя таблицы, в  которой будет табулироваться общее  время нахождения в ремонте неисправного СС первого типа  
VrRem2 Имя таблицы, в  которой будет табулироваться общее  время нахождения в ремонте неисправного СС второго типа  
 

      Модель  для решения задачи 1 начнем с заголовка, выделив его жирным шрифтом. В изменения типа шрифта воспользуемся Edit ►Font, жирный. После ввода заголовка приступаем к вводу команд определения таблиц.

    Введем  имя VrRem1. Для перехода к вводу таблицы командой TABLE следует воспользоваться клавишей [Tab]. Введем строку

«VrRem1  TABLE M1, 420, 180, 5», следующие строки-команды отличаются от первой команды только последними символами в именах переменных. Поэтому воспользуемся командамои копирования Copy и вставки Paste.

    Для ввода остальных операторов модели воспользуемся окном Edit ► Insert GPSS Blocks, в появившемся окне выбирается необходимая команда (рис. 4).

    Выберем блок GENERATE, появится окно создания блока. В операнды А и В введем данные из условия задачи: 600 и 300, соответственно. Переход от операнда к операнду осуществляется клавишей [Tab] либо мышью.  В окошке Comment вводятся комментарии к действиям, например «Источник СС 1 типа» (рис. 5).

    

    Рис. 4. Использование меню блоков GPSS 

    Рис. 5. Окно заполнения блока GENERATE 
 

      Продолжим ввод остальных операторов модели: 
 
 

; Пример 1

; Определение таблиц

VrRem1 TABLE M1,420,180,5

VrRem2 TABLE M1,420,180,5

VrRem TABLE M1,420,180,5

; Сегмент имитации  ремонта СС 1 типа

      GENERATE 600,300 ; Источник СС 1 типа

      QUEUE  RemQ ; Встать в общую очередь

      QUEUE  RemQ1 ; Встать в очередь СС 1 типа

      SEIZE  Rem1  ; Занять ремонтное подразделение

      DEPART  RemQ ; Покинуть общую очередь

      DEPART  RemQ1 ; Покинуть очередь СС 1 типа

      ADVANCE  360,120 ; Имитация ремонта

      RELEASE  Rem1  ; Освободить ремонтное подразделение

      TABULATE VrRem1 ; Данные  о СС 1 типа в таблицу

      TRANSFER  ,Met1  ; Отремонтированные СС 1 типа

; Сегмент имитации  ремонта СС 2 типа

      GENERATE 720,480 ; Источник СС 2 типа

      QUEUE  RemQ ; Встать в общую очередь

      QUEUE  RemQ2 ; Встать в очередь СС 2 типа

      SEIZE  Rem1  ; Занять ремонтное подразделение

      DEPART  RemQ ; Покинуть общую очередь

      DEPART  RemQ2 ; Покинуть очередь СС 2 типа

      ADVANCE  480,240 ; Имитация ремонта

      RELEASE  Rem1  ; Освободить ремонтное подразделение

Met1 TABULATE VrRem2 ; Данные  о СС 2 типа в таблицу

      TABULATE VrRem ; Данные  о СС обоих типов в таблицу

      TERMINATE   ; Отремонтированные сс 1 и 2 типа

; Сегмент задания  времени моделирования 

      GENERATE 4320 

      TERMINATE 1 

      Таблица 2

      Описание  блоков GPSS

Блок  Описание Примечание
GENERATE Осуществляет  модификацию атрибутов транзактов – их генерирование  
QUEUE Блок, обеспечивающий получение статистических результатов - очереди  
SEIZE Блок, описывающий  обект аппаратной категории –  однокональных устройств (технических  средств)  
DEPART Блок, обеспечивающий получение статистических результатов - очереди  
ADVANCE Блок, осуществляющий модификацию атрибутов транзактов – временная задержка  
 

      Продолжение таблицы 2

Блок  Описание Примечание
RELEASE Блок, описывающий  обект аппаратной категории –  однокональных устройств (технических  средств)  
TABULATE Блок, обеспечивающий получение статистических результатов - таблиц  
TRANSFER Блое, изменяющий последовательность движения транзактов (блок передачи управления)  
GENERATE Блок осуществляющиймодификацию  атрибутов транзактов - генерирование транзактов  
TERMINATE Блок осуществляющиймодификацию  атрибутов транзактов - уничтожение транзактов  

       

      Сохраним  объект «Модель» и приступим к  созданию объекта «Процесс моделирования», который представляет собой оттранслированный объект «Модель». Для трансляции необходимо выбрать Command ► Create Simulation. По этой команде транслятор GPSS проверяет модель на наличие синтаксических ошибок. При их отсутствии, транслятор активизирует все интерактивные команды и окна, что бы можно было следить за состоянием процесса моделирования и управлять им.

      Если  ошибки имеются, то в окне Journal транслятор выдаст список сообщений об ошибках трансляции. Для поиска ошибок и их исправления следует воспользовавться командой Search ► Next Error. При выполнении этой команды курсор помещается в строке текста модели с ошибкой. После исправления ошибок трансляция выполняется повторно Command ► Retranslate. В случае отсутствия ошибок появится сообщение (рис. 6):

12/06/10 15:35:57  Model Translation Begun.

12/06/10 15:35:57  Ready.

      

      Рис. 6.

      Теперь  можно запустить процесс моделирования. Для этого выбрать Command ► Start. Появится диалоговое окно (рис. 7):

      

      Рис. 7. Диалоговое окно Start 

      После нажатия ОК может произойти останов по ошибке выполнения, например, если в строках будет записано Rem, а не Rem1:

      ADVANCE  360,120 ; Имитация ремонта

      RELEASE  Rem1  ; Освободить ремонтное подразделение   ,

то  в окне Journal будет выдано сообщение об этом (рис. 8):

      

      Рис. 8. Окно с сообщением об ошибке выполнения 

    There are no Transactions. Check Transaction limits and blocking - означает «Попытка освободить незанятое устройство», что транзакт пытается освободить ОКУ, которое не было им занято, т.е. в блоке RELEASE в данной модели нужно было указать Rem1, а не Rem. При ошибках выполнения строка с ошибкой ищется самостоятельно, иногда номер строки с ошибкой указан в сообщении словом Line №. Перейти к строке с этим номером можно с помощью команды Search ► Go TO Line. Но будьте внимательны, иногда бывает, что  найденная строка по сообщению об ошибке ее не содержит, ошибка находится в соседних строках.

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

  1. последовательность блоков;
  2. регистрационный список процедур;
  3. список команд.

    Все это передается объекту «Процесс моделирования». Последовательность блоков и список команд сохраняются отдельно.

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

  • команды;
  • определения Plus - процедур;
  • блоки.

    Последовательность  блоков, созданная во время первоначальной трансляции, остается неизменной до следующей  повторной трансляции. Интерактивные  блоки не включаются в эту последовательность, они транслируются независимо и передаются для выполнения объекту «Процесс моделирования». Для этого после их поступления создается временной блок, который используется в режиме ручного моделирования и затем уничтожается.

    Интерактивные блоки называются операторами ручного режима моделирования. Только блоки GENERATE не могут использоваться в этом режиме. Вместо них для создания транзактов могут быть применены блоки SPLIT.

    Во  время первоначальной трансляции также  создается список команд, образующих очередь. Команды делятся на срочные и несрочные. К срочным относятся только команды HALT и SHOW. Срочные команды выполняются сразу же после того, как были переданы объекту «Процесс моделирования». Все остальные ставятся в очередь команд, которые не были еще выполнены.

    Есть  несколько способов передать оператор модели процессу моделирования:

  • использовать меню Command. Нужно выбрать Command ►Custom, набрать список команд и нажать ОК. Список команд будет оттранслирован и передан для выполнения.
  • комбинации горячих клавиш;
  • закрепить с помощью журнала установок модели оператор GPSS за функциональной клавишей;
  • можно поместить список наиболее употребляемых команд в текстовый файл. Затем применить команду INCLUDE для передачи списка команд объекту «Процесс моделирования». Закрепить команду INCLUDE за функциональной клавишей и иметь готовый список команд, выполняемый одним нажатием клавиши.

    Команды GPSS World в соответствии со своим назначением  делятся на две группы:

  • команды определения объектов GPSS;
  • команды управления процессом моделирования.

Таблица 3

Описание  команд

Команда Описание Примечание
SHOW    Предназначена для передачи объекту «Процесс моделирования» выражения для вычисления и записи результата в строку состояния окна Model. Формат команды: SHOW Х, где Х – арифметическое или логическое выражение. Переменные применяемые в выражении Х должны быть предварительно заданы с помощью команды EQU. Например, SHOW XN1 – показать номер активного транзакта; SHOW LOG(AC1) – вычислить и вывести в строку состояния натуральный логарифм абсолютного модельного времени; SHOW N$Met1/N$Met2 – показать результат деления количества транзактов в блоке с меткой Met1 на количество транзактов в блоке с меткой Met2.    SHOW является  срочной командой и выполняется немедленно.
EQU    Присваивает значение переменной пользователя.     
 

    Отладка моделей.

    Запустите процесс моделирования. Выберите Command u Create Simulation. В главном меню выберите Window u Simulation u Blocks Window (рис. 9).

Рис. 9.  Окна GPSS 

    Делаем  пошаговую отладку ИМ и исследуем некоторые показатели в процессе моделирования.

      Выберите Command u SHOW и в диалоговом окне наберите Q$RemQ и нажмите ОК.

      Закрепите команды SHOW за функциональными клавишами. Выберите Edit ►Setting ► и перейдите на вкладку Function Keys (рис. 10):

      

      Рис. 10. Страница Edit ►Setting

      Обратите  внимание на все клавиши. Рядом с клавишами [F8] и [F9] наберите две команды (рис. 11):

      SHOW       Q$RemQ1

      SHOW       Q$RemQ2

      

      Рис.11. Вкладка Function Keys 

    Нажмите ОК. Если будет допущена ошибка, после  нажатия ОК появится соответствующее сообщение. Если ошибок нет – команды закреплены за функциональными клавишами. Во время выполнения процесса моделирования можно интерактивно исследовать текущие длины очередей RemQ1 и RemQ2 нажатием одной соответствующей клавишей.

    При нажатии [F8] в строке состояния главного окна и в окне Journal отобразится длина очереди неисправных СС 1-го типа, а при нажатии [F9] – длина очереди неисправных СС второго типа. Просмотр удобнее с помощью Window u Simulation Window u Queues Window. Откроется окно с подробным обзором состояния очередей (рис. 12).

Рис. 12.Окно Queues (очереди) 

    Для наблюдения за изменением параметров очередей нажмите несколько раз [F5]. Закройте окно.

    Выберите Window u Simulation Window u Facilites Window (Окно Устройства) (рис. 13).

    Рис. 13. Окно Facilites (обслуживающие устройства (ОУ)) 

    Цвет  значка устройства может быть в двух вариантах: серого цвета – устройство свободно; красный – устройство занято. Значок можно рассмотреть покрупнее, для этого сделайте общий обзор окна командами View u Entity Details (рис. 14). Маленькая белая полосочка в правой части значка показывает небольшую очередь. Большая белая полосочка означает, что очередь превышает 10 транзактов. Закройте окно.

    

    Рис. 14. Окно Entity Details 

      Откройте окно Window u Simulation Window u Expression Window (окно процесса моделирования). В строке Label введите комментарий Вероятность ремонта; в строке Expression (редактор выражений) (N$Met1/QC$RemQ) нажмите кнопки View и Memorize и ОК. Вы увидите вероятность ремонта СС (рис. 16).

      

      Рис. 15. Окно Expression 

Рис. 16. Определена вероятность ремонта  СС 

      Построение  графиков и диаграмм.

      Запустите процесс моделирования Command u Create Simulation. Выберите Window u Simulation Window u Table Window (окно таблица). В окне Open Table

Рис. 17. Окно Table 

выберите  VRREM и нажмите ОК. Запустите процесс моделирования Command u START1 и вместо 1 поставьте 10 прогонов:

Рис. 18. Установка 10 прогонов для ИМ  

    Понаблюдайте  за изменением диаграммы.  По завершению 10 прогонов, в появившейся гистрограмме (рис. 19) видно, что среднее время ремонта СС обоих типов составляет 5490,823 мин со стандартным отклонением 2521,028. 

Рис. 19. Окно Table 

    График  постром так же для 10 прогонов. Запустите процесс моделирования Command u Create Simulation.

    Для каждого графика должен быть указан интервал времени. Для 10 прогонов заданное время 4320 умножим на количество прогонов и введем в поле Time Rang  после того, как выберите Window u Simulation Window u Plot Window (редактор графика):

    В поле Label ставим метку – пояснения к графику, в нашем примере это – Вероятность ремонта (рис. 20), в поле Expression вводим первую переменную для построения графика:

    (N$Met1/QC$RemQ).

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

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

    Вероятность выполнения ремонта & Время ремонта

    Временной интервал для оси Х мы уже ввели  в Time Rang – 43200. Для оси Y сами устанавливаем конец интервала 10  (по умолчанию интервал от 0 до 100). Нажмите кнопки Plot и Memorize. 

Рис. 20. Диалоговое окно редактора графика 

      Вводим  вторую переменную (для второго графика). В поле Label ставим метку (рис. 21):

      Время ремонта

    В поле Expression вводим переменную для построения второго графика:

      ((QT$RemQ+FT$Rem1)/1000)

    Это среднее время ремонта, определяемое как сумма среднего времени пребывания в очереди и среднего времени пребывания непосредственно в ремонте. Так как вероятность не может быть больше 1, а время ремонта может превысить 1000 мин, то для времени ремонта ввели масштабный множитель 1/1000, что бы рассмотреть оба графика на одном поле (в одном окне). Нажмите кнопки Plot и Memorize.

      Нажмите ОК.

Рис. 21. Заполнение полей окна графика информацией о втором графике 

      Теперь  запустите процесс моделирования Command u START1 и вместо 1 поставьте 10 прогонов (рис. 22).

Рис. 22. Окно Plot 

      По  завершению указанного числа прогонов график можно будет рассмотреть, прокручивая линейку внизу графика (рис. 23): 
 

      Рис. 23. Окно Plot с двумя построенными графиками

Работа в GPSS