Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
gpss_Методич_пособие_Дорошенко.doc
Скачиваний:
21
Добавлен:
01.04.2025
Размер:
363.52 Кб
Скачать

Раздел II. Объекты системы моделирования

В языке gpss применяются два класса объектов:

- статические объекты, которые объявляются в тексте программы: УСТРОЙСТВА (FACility), ПАМЯТИ (STOrage), ОЧЕРЕДИ (QUEue), ЛОГИЧЕСКИЕ КЛЮЧИ (LOGic), ПЕРЕМЕННЫЕ (VARiable), ЯЧЕЙКИ (полнословные FSV, полусловные HSV), ФУНКЦИИ (FUNction), ТАБЛИЦЫ (TABle);

- Динамические, порождаемые в процессе моделирования: транзакты (xac).

Примечания.

1. В тексте GPSS-программы допускается сокращение идентификаторов до первых трех букв. В скобках приведены сокращения имен объектов, используемые в программе. Например, управляющий оператор REАLLOCATE, задающий максимальное количество объектов данного типа, которое может использоваться в конкретной программе, записывается так:

REA XAC,150,STO,3,LOG,2

2. Оператор REA располагается в первой строчке программы, до оператора

SIMULATE.

Далее рассматриваются типы объектов, используемые в GPSS.

2.1. ТРАНЗАКТЫ – ДИНАМИЧЕСКИЕ ОБЪЕКТЫ МОДЕЛИ

2.1.1. СОЗДАНИЕ И УДАЛЕНИЕ ТРАНЗАКТОВ

ТРАНЗАКТЫ (заявки, запросы, сообщения) - это динамические объекты, которые в процессе моделирования порождаются в блоке GENERATE , перемещаются по функциональным блокам модели, имитирующим структуру и алгоритм работы моделируемой системы, и удаляются из модели в блоке TERMINATE.

Правила порождения транзактов и свойства порождаемых транзактов задаются полями A,…,G блока GENERATE:

GENERATE A,B,C,D,E,F,G

где A – среднее значение интервала времени, через которое создается транзакт;

B – отклонение от среднего, задающее диапазон (А - В, А + В) значений интервала времени появления транзакта с равновероятным распределением;

C – задержка времени появления первого транзакта (фаза смещения);

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

E – уровень приоритета каждого транзакта (от 0 до 127, по умолчанию – 0);

F – число параметров (по умолчанию – 12);

G – тип параметра (F - полнословный, т.е. для современного компьютера - 32-разрядный, с плавающей точкой , H - полусловный , целочисленный).

Структура блока TERMINATE имеет вид:

TERMINATE A

где в поле А указывается целое число (по умолчанию – 0), на которое с приходом транзакта в этот блок уменьшается значение числа, записанное в поле А управляющего оператора

START A

Транзактам могут соответствовать, в зависимости от природы моделируемой ДС и детальности ее представления в модели, различные динамические объекты ДС:

  • в ЭВМ, вычислительных системах и сетях - программы или фрагменты программ, команды на запуск программы, сигналы в схемах,

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

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

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

ТРАНЗАКТ реализуется в GPSS в виде упорядоченного набора данных, включающих:

  • номер транзакта;

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

  • номер следущего блока;

  • время перехода в следующий блок;

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

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

Все объекты GPSS имеют числовые характеристики, называемые стандартными числовыми атрибутами (СЧА), за которыми закреплены соответствующие обозначения. Некоторые объекты имеют стандартные логические атрибуты (СЛА).

Транзакты имеют четыре СЧА:

PR$ - приоритет;

P$j - параметр с номером j; по умолчанию транзакт имеет 12 параметров (j = 1… 12);

M$1 - время прохождения транзактом участка модели;

MP$j - промежуточное время, записываемое в параметре j;

X$j - номер j - го транзакта.

Примечание.

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

2.1.2. CПИСКИ ТРАНЗАКТОВ

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

Различаются следующие типы списков:

  1. список текущих событий – содержит транзакты, которые должны перемещаться в текущий момент модельного времени; все транзакты этого списка имеют одинаковое время и если их приоритеты равны, то они выбираются из списка для перемещения по модели по правилу FIFO (First-In-First-Out) – обслуживание в порядке поступления транзакта (заявки) в очередь;

  2. список будущих событий – содержит транзакты, которые будут перемещаться по модели в будущие моменты времени; в этот список попадают транзакты, входящие в блоки задержки ADVANCE, и транзакты, генерируемые блоками GENERATE;

  3. список прерываний – содержит транзакты , обслуживание которых прервано блоком прерывания PREEMPT. После снятия прерывания в блоке RETURN прерванные транзакты из этого списка возвращаются в список будущих событий;

  4. список синхронизации содержит транзакты , ожидающие объединения с другими транзактами в блоках GATHER и ASSEMBLE или находящихся в блоках MATCH . После выполнения условия синхронизации в этих блоках транзакты возвращаются в список текущих событий;

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

2.1.3. АЛГОРИТМ ПЕРЕМЕЩЕНИЯ ТРАНЗАКТОВ – АЛГОРИТМ МОДЕЛИРОВАНИЯ В СИСТЕМЕ GPSS

Процесс моделирования ДС во времени проводится по шагам и начинается с установки в ноль таймера (счетчика модельного времени) и генерации (порождения) транзактов в блоках GENERATE (присваивание значений СЧА транзакту выполняется автоматически в соответствии с описанием работы этого блока - см. ниже).

На каждом шаге все транзакты, имеющие одинаковое минимальное модельное время (равное нулю в начальный момент - при запуске модели на выполнение, или минимальное время, равное текущему модельному времени - в процессе моделирования), помещаются в список текущих событий, а транзакты с временем больше минимального - в список будущих событий. Транзакты во всех списках сортируются, во-первых, по возрастанию времени, а во-вторых, при равных значениях времени (транзакты с списке текущих событий всегда имеют равные времена) - по убыванию приоритета транзакта. Затем производится просмотр списка текущих событий, в результате которго выбирается один транзакт, имеющий минимальное время и максимальный приоритет. Этот транзакт становится активным (текущим транзактом) и алгоритм моделирования "пытается" переместить его в следующий блок модели. Если транзакт может войти в следующий блок, выполняется программа, соответствующая данному блоку. Если дальнейшее продвижение транзакта невозможно, то он перестает быть активным, что может случиться по следующим причинам:

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

  • из-за блокировки в одном из блоков SEIZE, TEST, GATE, тогда транзакт остается в списке текущих событий, но из-за блокировки переводится в пассивное состояние до снятия условия блокировки;

  • из-за невыполнения условия синхронизации в одном из блоков ASSEMBLE, GATHER, MATCH , тогда транзакт переписывается в список синхронизации и возвращается в список текущих событий при выполнении условий синхронизации.

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

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

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

Примечания.

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

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

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

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

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

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

А. Ситуации, приводящие к аварийному останову:

  • В МОДЕЛИ НЕТ НИ ОДНОГО ТРАНЗАКТА или

  • СПИСОК ТЕКУЩИХ СОБЫТИЙ ПУСТ, А ОСТАЛЬНЫЕ ТРАНЗАКТЫ - в других списках - ЗАБЛОКИРОВАНЫ, т.е. не могут перемещаться по блокам модели, или

  • КОЛИЧЕСТВО ТРАНЗАКТОВ В МОДЕЛИ ПРЕВЫШАЕТ ДОПУСТИМОЕ, принятое по умолчанию – 100 или задаваемое исследователем в модели с помощью управляющего оператора REALLOCATE (ПЕРЕРАСПРЕДЕЛЯТЬ), располагаемого в начале описания модели и имеющего следующий формат

REA объект, количество, объект, количество, … , объект, количество

где объектами могут быть устройства FACILITY - (FAC,20), память STORAGE - (STO,20), функции FUNCTION- (FUN,20), очереди QUEUE - (QUE,35), логические ключи LOGIC - (LOG,100), таблицы TABLE - (TAB,15), переменные VARIABLE - (HSV,20), ячейки для записи чисел в форме с фиксированной точкой (FSV,100) или с плавающей точкой (FSV,100), транзакты (XAC,100).

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

Примечание.

Ситуации 1 и 2 возникают, если модель содержит логические ошибки.

Ситуация 3 возникает часто при неверном соотношении интенсивности входных потоков и обслуживания транзактов в модели. Поэтому рекомендуется до начала моделирования на ЭВМ ориентировочно оценивать загрузку оборудования моделируемой системы и подобрать отношение "интенсивности входного потока к интенсивности обслуживания" не более 0.95.

Б. Нормальное завершение работы модели - счетчик числа завершений, задаваемый полем А управляющего оператора START A принимает значение 0 или меньше нуля.

Исходя из условия нормального завершения процесса моделирования, возможно задать два критерия останова:

  • ОСТАНОВ ПО КОЛИЧЕСТВУ ТРАНЗАКТОВ, ПРОШЕДШИХ ПО МОДЕЛИ.

Это достигается тем, что во всех блоках TERMINATE А, участвующих в подсчете числа транзактов, проходящих по модели, задается значение А=1 и в процессе моделирования при входе транзакта в блок TERMINATE 1 содержимое поля А оператора STARТ А (счетчик числа завершений) уменьшается на 1. Процесс моделирования останавливается при нулевом значении счетчика числа завершений, т.е. после прохождения через все блоки TERMINATE 1 общего количества транзактов, равного числу А, записанному в поле управляющего оператора STАRT A.

  • ОСТАНОВ ПО ВРЕМЕНИ МОДЕЛИРОВАНИЯ.

Это достигается тем, что в модели, во-первых, все блоки удаления транзактов имеют в поле А=0 (по умолчанию опускается, т.е. записывается блок TERMINATE без поля), и, во-вторых, добавляеется еще один сегмент, содержащий только два блока – генерации и удаления транзактов, а счетчик числа завершений равен 1:

GENERATE ТМMAX

TERMINATE 1

START 1

где ТМMAX - максимальное время моделирования, по истечении которого генерируемый транзакт поступает в блок TERMINATE 1 и уменьшает значение поля А=1 оператора STARТ 1 до нуля. При этом останов системы моделирования происходит также по нулевому значению счетчика завершений, но при наступлении текущего времени моделирования, равного TMMAX. Очевидно, что если в операторе START поле A больше 1, то длительность времени моделирования будет равна А* ТМMAX.

2.2. УСТРОЙСТВА

Устройство (FACILITY) в системе GPSS представляет собой объект, в котором могут выполняться операции обработки транзакта (обслуживания заявок). Особенность устройства состоит в том, что в любой данный момент времени оно может быть занято лишь одним транзактом. Если устройство занято и текущий транзакт не может войти в устройство, то транзакт прекращает перемещение по модели (становится заблокированным) и ожидает освобождения данного устройства. Занятие и освобождение устройства моделируют соответственно блоки

SEIZE A

RELEASE А

где A – имя или номер устройства.

Как правило, обработка связана с затратами времени. В системе моделирования длительность обработки отображается блоком задержки транзакта, имеющим вид:

ADVANCE A,B

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

B – разброс времени задержки транзакта относительно среднего значения А с равновероятным распределением в интервале (А-В, А+В). Очевидно, что В должно быть меньше или равно A.

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

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

Приоритет называется относительным, если из множества заявок, пытающихся войти в устройство, такое право предоставляется той заявке, которая имеет наибольший приоритет. При этом выбор следующей заявки для обслуживания в данном устройстве происходит после освобождения устройства от обслуживания предыдущей заявки, имеющей произвольное значение приоритета. Заявки, имеющие одинаковые приоритеты, обслуживаются в устройстве в порядке поступления в очередь к данному устройству (дисциплина обслуживания FIFO – First-In-First-Out). В GPSS есть два способа задания относительного приоритета транзакта – в блоке GENERATE (см. 2.1.1) и в блоке PRIORITY (см. 2.9).

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

PREEMРT A

RETURN A

Таким образом, работа устройства в GPSS-модели отображается тремя блоками:

SEIZE A ; занять устройство

ADVANCE A, B ; задержать транзакт

RELEASE A ; освободить устройство

или

PREEMPT A ; захватить устройство с прерыванием

ADVANCE A,B ; задержать транзакт

RETURN A ; освободить устройство с дообслуживанием

С устройствами связаны следующие СЧА:

SF$j – состояние j-го устройства: равно 0, если устройство свободно, и равно 1,

если устройство занято;

FR$j – коэффициент использования устройства j;

FC$j – число входов в устройство j;

FT$j – среднее время использования j -го устройства одним транзактом.

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

U – устройство занято; NU – устройство свободно;

I – устройство прервано; NI – не прервано.

Проверка состояния устройства осуществляется блоком GATE (структура блока описана в 3.2), который в зависимости от значения проверяемого СЛА либо беспрепятственно пропускает транзакты (если СЛА = "истина" ), либо (если СЛА = "ложь") задерживает их в блоке GATE – при отсутствии поля С, а при наличии поля С направляет транзакты по другому маршруту – по метке, указанной в поле С.

2.3. ПАМЯТЬ

Память (STORAGE) представляет собой объект GPSS, обладающий определенной емкостью. Объекту STORAGE системы GPSS в реальных моделируемых системах могут соответствовать:

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

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

В теории массового обслуживания памяти соответствует многоканальное устройство обслуживания.

Ёмкость памяти задаётся в разделе объявлений GPSS-программы:

num STORAGE A

где num - имя или номер памяти;

А - ёмкость памяти (целое без знака), по умолчанию А = 32767.

Работа памяти с именем, указанным в поле А, отображается блоками

ENTER A, B; войти в память

LEAVE A, B; выйти из памяти

Входящий в блок ENTER транзакт занимает в памяти часть емкости, указанную в поле B. При переходе в блок LEAVE память освобождается на величину, определяемую полем B и не обязательно равную при входе в блок ENTER. По умолчанию принимается В = 1.

С объектом STORAGE связаны следующие СЧА:

S$j – ёмкость памяти j;

R$j – свободная емкость памяти j;

SR$j – коэффициент использования памяти j;

SM$j – максимальное заполнение памяти j;

SA$j – среднее заполнение памяти j;

SC$j – число входов в память j;

ST$j – среднее время пребывания транзакта в памяти j.

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

SE$j – память j пуста; NE$j – память j не пуста;

SF$j – память j заполнена; SNF$j – память j не заполнена.

Проверка состояния памяти осуществляется блоком GATE аналогично проверке состояния устройства: если СЛА = "истина", то блок GATE беспрепятственно пропускает транзакт в следующий блок, если СЛА = "ложь", то при отсутствии поля С в блоке GATE транзакт задерживается в этом блоке, а при наличии поля С в блоке GATE транзакт направляется на ветку программы, указанную меткой в поле С.

2.4. ОЧЕРЕДИ

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

  • SEIZE ( если ранее вошедший в этот блок транзакт не вошел в блок RELEAZE),

  • ENTER ( если требуемая текущим транзактом емкость памяти больше емкости свободного участка данной памяти),

  • GATE и TEST (если в этих блоках не указан альтернативный выход и проверяемое условие не выполняется).

При поступление транзактов на вход задерживающих блоков образуются очереди. Для сбора статистики об очереди в местах задержки транзактов ставят блок входа в очередь QUEUE A, B , где А - имя или номер очереди, В - число элементов, добавляемых в очередь транзактом, по умолчанию В=1. Этот блок сам по себе не создает очереди, а лишь являются средством ее регистрации. При входе в блок QUEUE текущая длина очереди получает приращение на величину, задаваемую полем В. Блок выхода из очереди имеет вид DEPART A, B , где А - имя или номер очереди, B - число элементов, удаляемых из очереди транзактом.

Таким образом, работа очереди в GPSS-модели отображается двумя блоками:

QUEUE A, B

DEPART A, B

Очереди имеют следующие СЧА:

Q$j – текущая длина очереди j;

QM$j – максимальная длина очереди j;

QA$j – средняя длина очереди j;

QC$j – число входов в очередь j;

QZ$j – число входов в очередь с нулевым временем пребывания

(транзакт прошел через блок QUEUE, не задерживаясь в очереди);

QT$j – среднее время пребывания в очереди j, включая нулевые входы;

QXSj – среднее время пребывания в очереди j без нулевых входов.

2.5. ЛОГИЧЕСКИЕ КЛЮЧИ

Имитация процессов коммутации в GPSS выполняется с использованием логических ключей, имеющих два состояния "Включено" - "Выключено". Работа логических ключей отображается блоком LOGIC_r A, где А - имя логического ключа, r - внутренний оператор, принимающий значения I - переключить, R - выключить, S - включить. При входе транзакта в блок LOGIC происходит срабатывание соответствующего ключа. Ключи не имеют СЧА. Их состояния задаются только стандартными логическими атрибутами:

LS$j - ключ j включен; LR$j - ключ j выключен.

Проверка состояния ключа осуществляется блоком GATE. Начальное состояние ключа по умолчанию принимается “ выключено” (RESET). Для принудительного начального включения группы ключей (для установки в состояние SET) применяется управляющий оператор

LINITIAL KL1,KL2,…,KL6; KL1,KL2,…,KL6 – имена ключей.

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

Примеры.

LINITIAL 1,2, KL1, KL3; устанавливаются ключи 1 и 2, ключи KL1, KL3

LOGIC_S 5 ; включается логический ключ 5 при входе транзакта в данный блок

LOGIC_R KL3 ; выключается логический ключ KL3 при входе транзакта в данный блок

LOGIC _I P$4 ; переключается в противоположное состояние логический ключ, номер которого хранится в параметре 4 транзакта, вошедшего в данный блок.

2.6. ЯЧЕЙКИ

Ячейки используются для записи и хранения в процессе моделирования текущих значений СЧА. Занесение информации в ячейку производится блоком SAVEVALUE, имеющим формат

SAVEVALUE A,B,C

где А – имя ячейки (может сопровождаться в конце знаком плюс + или минус -), В – присваиваемое значение, С – тип ячейки. Если после А стоит знак + или -, то значение поля В прибавляется или вычитается из текущего содержимого ячейки А. Если знак не указан, то значение поля В присваивается ячейке А. Поле С определяет тип ячейки и может принимать значения: ХН – полусловная, ХF – полнословная, XL – с плавающей точкой. При отсутствии поля С по умолчанию принимается полнословная ячейка.

Начальное значение ячейки по умолчанию равно нулю. Для изменения начального значения применяется оператор инициализации

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]