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

Вводные сведения

Литература:
1. Боев В.Д. Моделирование систем. Инструментальные средства GPSS World: Учеб. пособие. - СПб.: БХВ-Петербург, 2004.

Пакет моделирования:
GPSS World Student Version
Можно взять на сетевом диске T:\Kabanov\Моделирование\


Лабораторная работа № 1.
МОДЕЛИРОВАНИЕ ПРОСТЫХ ИНФОРМАЦИОННЫХ ПРОЦЕССОВ НА КОМПЬЮТЕРЕ

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

Краткие сведения о GPSS World

Система имитационного моделирования общего назначения GPSS (General Purpose Simulation System) предназначена для описания и исследования дискретных моделей систем массового обслуживания (СМО). Программа GPSS World разработана компанией Minuteman Software. Используемая для лабораторных работ GPSS World Student Version является свободно распространяемой и ее можно скачать с официального сайта разработчика www.minutemansoftware.com или в папке с заданием.

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

Описание некоторых блоков GPSS

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

Блоки генерации и удаления транзактов

GENERATE A,B,C,D,E - блок генерации транзактов
    A  - средний интервал времени между последовательными транзактами;
    B  - разброс интервала времени относительно A;
    C  - время начальной задержки;
    D  - количество генерируемых транзактов, по умолчанию неограничено;
    E  - приоритет транзактов, по умолчанию 0.
TERMINATE A - блок удаления транзакта
    A  - величина уменьшение счетчика числа завершений.
      

Блоки занятия и освобождения приборов

SEIZE A - блок занятия прибора
    A  - имя прибора, подлежащего занятию транзактом.
RELEASE A - блок освобождения прибора
    A  - имя освобождаемого прибора.

Блок задержки транзактов

ADVANCE A,B - блок задержки транзакта в цепи будущих событий
    A  - средний интервал времени задержки;
    B  - разброс интервала времени относительно A;

Операторы и блоки вычислительной категории

Name VARIABLE X - оператор описания целой переменной
Name FVARIABLE X - оператор описания действительной переменной
Name BVARIABLE X - оператор описания логической переменной
    Name  - имя переменной;
    X  - выражение соответствующего типа.

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

Компиляция и запуск имтации

Для того чтобы создать модель необходимо запустить GPSS World. Выбрать пункт меню File->New и указать, что новый файл будет моделью (Model). После чего набрать текст программы на языке GPSS и откомпилировать ее, вызвав Command->Create Simulation. Если компилятор выдал сообщение об успешной компиляции:
    Model Translation Begun.
    Ready.
то можно запустить имитацию Command->Start.

Пример 1:

Процесс прохождения заявок, поступление которых подчиняется равномерному закону со средним значением 8 и интервалом [6,10] единиц времени, а обработка - равномерному закону со средним 5 и интервалом [2,8], можно описать программой:

      GENERATE  8,2  ; генерация транзактов
      SEIZE     DEV  ; занятие прибора
      ADVANCE   5,3  ; задержка транзакта
      RELEASE   DEV  ; освобождение прибора
      TERMINATE  1   ; уничтожение транзакта

Комментарии.

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

Используемое имя DEV обозначает название устройства. При компиляции этому имени автоматически будет присвоен номер. Важно, чтобы это имя не совпадало с зарезервированными именами GPSS.

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

Блоки занятия и освобождения очереди

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

QUEUE A,B - блок занятия очереди
    A  - имя очереди;
    B  - количество мест в очереди, занимаемое транзактом.
DEPART A,B - блок освобождения очереди
    A  - имя очереди;
    B  - количество мест в очереди, освобождаемое транзактом.
Блок QUEUE может быть помещен перед любым блоком модели, в котором может возникнуть задержка. Отметим, что очередь к занятому устройству автоматически организуется пакетом моделирования независимо от того, есть в программе блок QUEUE или нет.

Пример 2:

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

      GENERATE    8,2
      QUEUE       SER
      SEIZE       DEV
      DEPART      SER
      ADVANCE     5,3
      RELEASE     DEV
      TERMINATE    1

Комментарии.

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

Построение гистограмм

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

Name TABLE A,B,C,D - команда описания таблицы частотного распределения
    Name - имя таблицы,
    A  - имя переменной, значение которой табулируется, 
    B  - левая граница первого интервала таблицы,
    C  - ширина интервалов,
    D  - количество интервалов.

Name QTABLE A,B,C,D - команда описания таблицы времени пребывания в очереди
    Name - имя таблицы,
    A  - имя очереди, 
    B  - левая граница первого интервала таблицы,
    C  - ширина интервалов,
    D  - количество интервалов.

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

TABULATE A,B - блок табулирования
    A  - имя таблицы, в которую заносится табулируемая величина,
    B  - весовой коэффициент, задающий число раз занесения величины
          в таблицу при каждом входе в блок.

Пример 3:

Получить таблицу распределения интервалов заявок по равномерному закону в интервале от 0 до 100:

AAA1  VARIABLE    C1-X1 ; вычисление значения переменной ААА1 как разность 
                        ; текущего значения времени моделирования (C1) и предыдущего,
                        ; сохраняемого в ячейке 1 (X1)
      GENERATE    50,50 ; генерация транзактов по равномерному закону
      TABULATE    TAB1  ; блок табулирования времени
      SAVEVALUE   1,C1  ; cохранение в ячейке 1 текущего времени
      TERMINATE   1     ; удаление транзакта
TAB1  TABLE       V$AAA1,10,10,11 ; формирование таблицы частоты попадания
                        ; интервалов генерации транзактов в интервалы временной оси
                        ; от 0 до 100 с шагом 10

Комментарии.

Генерируемые в данном примере транзакты ничего не делают, только появляются (GENERATE), заносят значения в таблицу (TABULATE), сохраняют значения текущего времени (SAVEVALUE) и уничтожаются (TERMINATE).

Используемые имена: AAA1 - имя переменной, которая отвечает за вычисление разности текущего времени и предыдущего сохраненного; TAB1 - имя таблицы, в которую заносятся значения; C1 - текущее модельное время (зарезервировано в GPSS); X1 - обращение к первой ячейке, значение в которую сохранялось блоком SAVEVALUE.

При описании таблицы используются следующие значения: 0 - начало отсчета, 10 - шаг таблицы, 11 - количество интервалов.

Чтобы построить графическое представление гистограммы, необходимо выбрать Windows -> Simulation Window -> Table Window. Появится новое окно с гистрограммой.

Статистика имитации

В процессе выполнения программы собирается стандартная статистическая информация, которая автоматически выводится на печать по окончании моделирования. Содержание стандартного отчета:

  • Заголовок содержит название модели, дату и время запуска модели.
  • Начало (START TIME) и конец (END TIME) модельного времени, количество блоков (BLOCKS), устройств (FACILITIES) и памятей (STORAGES) в модели.
  • Список имен введенных в модели, где каждому имени (NAME) приписывается число (VALUE). Значения начинаются с 10000.000.
  • Список блоков, содержащий следующую информацию:
    • LABEL - метка блока,
    • LOC - позиция блока в модели (Location),
    • BLOCK TYPE - название блока на языке GPSS,
    • ENTRY COUNT - количество вошедших в блок транзактов с момента последней команды CLEAR или RESET,
    • CURRENT COUNT - количество транзактов в данный момент в блоке,
    • RETRY - количество транзактов, ожидающих входа в блок.
  • Список устройств, содержащий информацию:
    • FACILITY - название или номер устройства,
    • ENTRIES - количество транзактов, занимавших это устройство блоками SEIZE или PREEMPT с момента применения команд CLEAR или RESET,
    • UTIL. - коэффициент использования устройства,
    • AVE.TIME - среднее время одного обслуживания,
    • AVAIL. - доступность устройства в момент окончания имитации (AVAIL.),
    • OWNER - количество транзактов, находящихся на устройстве,
    • PEND - количество транзактов, ожидающих устройство для захвата по блоку PREEMPT,
    • INTER - количество транзактов, прерванных при обработке блоками PREEMPT,
    • RETRY - количество транзактов, ожидающих по разным причинам освобождения устройства,
    • DELAY - количество транзактов, ожидающих освобождения устройства в режиме приоритетного входа по блоку PREEMPT.
  • Список очередей с информацией:
    • QUEUE - название или номер очереди,
    • MAX - максимальное количество транзактов, содержащихся в очереди за весь период сбора статистики,
    • CONT. - текущее количество транзактов в момент окончания имитации,
    • ENTRY - общее количество входов в очередь,
    • ENTRY(0) - количество транзактов, вышедших из очереди без ожидания,
    • AVE.CONT. - среднее значение транзактов в очереди,
    • AVE.TIME - среднее время ожидания в очереди,
    • AVE.(-0) - среднее время ожидания, исключая транзакты, которые не задерживались в очереди,
    • RETRY - количество транзактов, ожидающих вход в очередь по некоторым причинам.
  • В таблицах печатается информация: имя таблицы (TABLE), среднее значение аргумента (MEAN), стандартное отклонение (STD.DEV); а также табличные значения: диапазон интервала (RANGE), частота попадания в интервал (FREQUENCY), накопленная относительная частота (CUM.%).
    • TABLE - имя или номер таблицы или Q-таблицы,
    • MEAN - среднее значение табулируемой величины,
    • STD.DEV - средне-квадратичное отклонение,
    • RANGE - левый и правый конец интервалов. Интервалы с нулевыми значениями не отображаются,
    • RETRY - количество транзактов, ожидающих по некоторым причинам в блоке TABULATE,
    • FREQUENCY - количество элементов, попавших в этот интервал,
    • CUM.% - накопительный процент, попавших элементов.

    Практическое задание

    На выбор предлагается одна из трёх задач: на оценку "удовлетворительно", "хорошо" или "отлично" (зависит от сложности задачи).

    Задача на "удовлетворительно"

    Задача на "хорошо"

    Задача на "отлично"


    Главная страница