Опубликован: 16.11.2010 | Уровень: специалист | Доступ: свободно
Лекция 7:

Моделирование в GPSS World

Аннотация: Лекция посвящена четырем видам объектов: модель, процесс моделирования, отчет и текстовый.

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

Модель разрабатывается на языке GPSS и состоит из операторов, а объект " Модель " создается при помощи встроенного текстового редактора. Объект " Процесс моделирования " - это результат трансляции модели. Далее процесс моделирования запускается с помощью команд GPSS. По завершении моделирования, как правило, автоматически создается объект " Отчет ".

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

GPSS World предназначена для имитационного моделирования систем с дискретными и непрерывными процессами. Языком моделирования в ней является язык GPSS, улучшенный встроенным языком программирования низкого уровня PLUS. Язык GPSS построен в предположении, что модель сложной системы можно представить совокупностью элементов и логических правил их взаимодействия в процессе функционирования моделируемой системы. Набор абстрактных элементов, называемых объектами, небольшой. Также набор логических правил ограничен и может быть описан стандартными операциями. Комплекс программ, описывающих функционирование объектов и выполняющих логические операции, является основой для создания программной модели.

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

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

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

Объекты в моделируемой системе предназначены для различных целей. Совершенно не обязательно, чтобы в одной модели участвовали все типы объектов. Необходимо лишь наличие блоков и транзактов, иначе модель работать не будет.

Объекты подразделяются на 7 категорий и 15 типов, которые представлены в табл. 6.1.

Таблица 6.1. Объекты GPSS
Категории Типы объектов
Динамическая Транзакты
Операционная Блоки
Аппаратная Одноканальные устройства, памяти (многоканальные
устройства), логические ключи (переключатели)
Вычислительная Переменные, функции, генераторы случайных чисел
Статистическая Очереди, таблицы
Запоминающая Ячейки, матрицы ячеек
Группирующая Числовые группы, группы транзактов, списки

Рассмотрим назначение объектов GPSS.

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

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

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

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

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

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

  1. создание или уничтожение транзактов;
  2. изменение числового атрибута объекта;
  3. задержка транзакта на определенный период времени;
  4. изменение маршрута движения транзакта в модели. Версия GPSS, реализованная в системе GPSS World, содержит 53 типа блоков.

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

  1. Блоки, осуществляющие модификацию атрибутов транзактов:
    • генерирование и уничтожение транзактов GENERATE, SPLIT, TERMINATE, ASSEMBLE ;
    • временная задержка ADVANCE ;
    • синхронизация движения двух MATCH и нескольких GATHER транзактов;
    • изменение приоритета транзакта PRIORITY ;
    • изменение параметров транзактов ASSIGN, INDEX, MARK, PLUS.
  2. Блоки, изменяющие последовательность движения транзактов (блоки передачи управления): DISPLACE, TRANSFER, LOOP, TEST, GATE.
  3. Блоки, связанные с группирующей категорией: ADOPT, ALTER, EXAMINE, JOIN, REMOVE, SCAN.
  4. Блоки, описывающие объекты аппаратной категории:
    • одноканальные устройства (технические средства) SEIZE, RELEASE, PREEMPT, RETURN, FUNAVAIL, FAVAIL ;
    • многоканальные устройства (памяти) ENTER, LEAVE, SAVAIL, SUNAVAIL ;
    • ключи (логические переключатели) LOGIC.
  5. Блоки, сохраняющие необходимые значения для дальнейшего использования: SAVEVALUE, MSAVEVALUE.
  6. Блоки для получения статистических результатов:
    • очереди QUEUE, DEPART ;
    • таблицы TABULATE.
  7. Блоки для организации списка пользователя: LINK, UNLINK.
  8. Блоки для организации ввода-вывода:
    • открытие/закрытие файла: OPEN / CLOSE ;
    • считывание/запись в файл: READ / WRITE ;
    • установка позиции текущей строки: SEEK.
  9. Специальные блоки: BUFFER, COUNT, EXECUTE, INTEGRATION, SELECT, TRACE, UNTRACE.

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

Переменные представляют собой сложные выражения, которые включают константы, системные числовые атрибуты (СЧА), библиотечные арифметические функции, арифметические и логические операции.

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

Каждому объекту соответствуют атрибуты, описывающие его состояние в данный момент времени. Они доступны для использования в течение всего процесса моделирования и называются системными числовыми атрибутами (СЧА). Например, объект вычислительной категории - генератор случайных чисел имеет СЧА RNn - число, вычисляемое генератором равномерно распределенных случайных чисел номер n ; у объекта динамической категории - транзакта СЧА: PR - приоритет обрабатываемого в данный момент транзакта; Pi - значение i -го параметра активного транзакта и др. Всего в GPSS World имеется свыше 50 СЧА.

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

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

Кроме библиотечных арифметических функций GPSS World имеет 24 встроенных генератора случайных чисел.

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

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

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

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

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

  1. текущих событий;
  2. будущих событий;
  3. задержки ОКУ или МКУ;
  4. отложенных прерываний ОКУ;
  5. пользователя.

Одноканальное устройство имеет:

  • список отложенных прерываний - список транзактов, ожидающих занятия ОКУ по приоритету;
  • список прерываний - список транзактов, обслуживание которых данным ОКУ было прервано;
  • список задержки - список транзактов, ожидающих занятия ОКУ в порядке приоритета;
  • список повторных попыток - список транзактов, ожидающих изменения состояния ОКУ.

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

  • список задержки - список транзактов в порядке приоритета, ожидающих возможность занять освободившиеся каналы МКУ;
  • список повторных попыток - список транзактов, ожидающих изменения состояния МКУ.

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

6.2. Построение моделей с устройствами

Для представления собственно обслуживания используются определенные элементы. Такими элементами могут быть либо люди, либо какие-то предметы. Независимо от этого подобные элементы в GPSS называют объектами аппаратной категории, к которой относят одноканальные (ОКУ) и многоканальные устройства (МКУ) и логические ключи.

Рассмотрение методов построения моделей с устройствами начнем с имитации функционирования ОКУ.

При моделировании возможны следующие режимы организации функционирования ОКУ:

  • занятие ОКУ и его освобождение;
  • прерывание обслуживания ОКУ;
  • недоступность ОКУ и восстановление доступности. Прежде чем сразу рассматривать блоки, моделирующие ОКУ,

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

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

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

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

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

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

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

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

Операнд B - задает модификатор, который изменяет значения интервала генерации транзактов по сравнению с интервалом, указанным операндом А. Есть два типа модификаторов: модификатор-интервал и модификатор-функция.

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

Операнды А и B могут быть именем, положительным числом, выражением в скобках или непосредственно СЧА.

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

Когда операнды А и B задают в виде констант ( B - модификатор-интервал), они должны быть неотрицательными числами, т. е. интервал времени может быть выражен числами, например, 4.1,…,12.7. Предположим, что транзакт входит в модель - блок GENERATE - в момент модельного времени 25.6. После того, как этот транзакт попадет в следующий блок модели, планировщик GPSS разыграет случайное значение из распределения интервалов времени, равного 8.4\pm 4.3.

Пусть разыгранным значением будет число 9.7. Тогда планировщик планирует приход следующего транзакта в блок GENERATE в момент времени 25.6+9.7=35.3.

Можно выбрать для розыгрыша генератор равномерно распределенных случайных чисел. Это устанавливается на странице " Random Numbers " ( Случайные числа ) в журнале настроек модели. Нужно выбрать Edit/Settings ( Правка/Настройка ) и страницу " Random Numbers " ( Случайные числа ), на которой в поле ввода " GENERATE " ввести номер генератора - любое положительное целое число. По умолчанию используется генератор равномерно распределенных случайных чисел номер 1.

Операнды А и В не обязательно должны быть заданы. Когда один или оба операнда не указаны, по умолчанию предполагается их нулевое значение. Например, А=16.4, В=0. Поскольку операнд В=0, то интервалы времени распределены равномерно, 16.4\pm 0, т. е. интервал времени поступления равен 16.4. Это пример того, как может быть задано детерминированное значение интервалов времени.

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

При любом способе вычисления интервала времени значение операнда В не должно превышать значения операнда А, в противном случае в блоке GENERATE может быть получен отрицательный интервал времени, который вызовет останов по ошибке "Отрицательное время задержки".

Рассмотрим три дополнительных операнда: С - смещение интервалов, D - ограничитель, Е - уровень приоритета.

Смещение интервалов (первоначальная задержка) С - это момент времени, в который в блоке GENERATE должен появиться первый транзакт. После этого первого прихода все остальные приходы транзактов возникают в соответствии с распределением интервалов времени, задаваемых операндами А и B. Операнд С можно использовать как для ускорения, так и для замедления прихода первого транзакта или для указания прихода в нужный момент времени. Начальная задержка может быть меньше, равна или больше среднего времени, заданного операндом А. Когда операнд С не используется, интервалы генерирования определяются операндами А и B (они не оказывают влияния на задержку). Операнд С может быть таким же как и операнды А и B.

Операнд D задает граничное значение общего числа транзак-тов, которые могут войти в модель через данный блок GENERATE в течение времени моделирования. Когда это число достигнуто, данный блок GENERATE перестает быть активным. Если не определено граничное значение (операнд D не используется), блок GENERATE остается активным в течение всего времени моделирования, т. е. по умолчанию ограничения на количество создаваемых транзактов нет.

Операнд Е устанавливает класс приоритета каждого из транзак-тов, входящих в модель через данный блок GENERATE. Для задания приоритетов c целью повышения эффективности работы GPSS World рекомендуется использовать последовательность целых чисел 0, 1, 2, 3,… вместо, например, 37, 43, 88, 122,... Чем выше число, тем выше приоритет. Если операнд Е не используется, по умолчанию приоритет генерируемых данным блоком GENERATE транзактов равен нулю.

Операнды D и Е могут задаваться также как и операнды А, B и С, но при этом принимать значения только целых положительных и целых чисел соответственно.

В любом блоке GENERATE должен быть обязательно задан либо операнд А, либо операнд D. Нельзя использовать в качествеоперанда параметры транзактов. Необходимо также помнить, что транзакт не должен входить в блок GENERATE. Если транзакт пытается это делать, возникает ошибка выполнения. Приведем примеры записи блоков GENERATE:

  1. с операндом А
    GENERATE      38.6
    GENERATE      X$IntPostTran
    GENERATE      MX$VrPost(3,6)
    GENERATE      V$Prom
    GENERATE      (Exponential(11,0,X$Mat))
    GENERATE      IntPostTran
  2. с операндами А и B
    GENERATE      73.25,X$Otk
    GENERATE      X$Sredne,FN2
    GENERATE      Sredne,FN4
    GENERATE      (V$Post+7.1),FN$Mod
  3. с операндами А и C
    GENERATE      7.3,,4.1
    GENERATE      7.3,,X$VrSm
    GENERATE      V$IntP,,MX2(X$Stroka,X$Stolbez)
    GENERATE      (Normal(3,X$Sre,X$SreOtk)),,Sme
  4. с операндами А, B, E
    GENERATE       13.3,2.8,,,1
    GENERATE       (Normal(8,X$Sr,X$SrOtk)),Post,,1
    GENERATE       V$IntPostTran,(V1-12.3),,12

Приведенные примеры демонстрируют различные способы задания операндов блока GENERATE. Однако при этом нужно помнить следующее.

В начальный момент времени в каждом блоке GENERATE производится подготовка к выходу одного транзакта. На этой стадии модель еще полностью не инициализирована для выполнения, т. е. не все переменные получили значения. Но описанные в блоке GENERATE, должны быть уже определены - инициализированы. Поэтому в модели блоку GENERATE должны предшествовать команды определения EQU, INITIAL, FUNCTION, VARIABLE, FVARIABLE. Это делается для того, чтобы СЧА в блоке GENERATE, который ссылается на них, давали нужные для ввода транзактов в модель результаты.

Например:

SrIntPost       EQU          47.2
StanOtkl        EQU          28.6
     INITIAL    X$KolTrans,43
. . .
     GENERATE SrIntPost,StOtk,,X$KolTrans

Как видно из примера, блоку GENERATE предшествуют присвоения командой EQU именам числовых значений и командой INITIAL начального значения сохраняемой ячейке с именем Kol-Trans.

Владислав Нагорный
Владислав Нагорный

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

Спасибо!

Лариса Парфенова
Лариса Парфенова

1) Можно ли экстерном получить второе высшее образование "Программная инженерия" ?

2) Трудоустраиваете ли Вы выпускников?

3) Можно ли с Вашим дипломом поступить в аспирантуру?