Главная Случайная страница


Категории:

ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника






БЛОКИ, ОПИСЫВАЮЩИЕ РАБОТУ ОБОРУДОВАНИЯ

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

Устройство терминологии GPSS является аналогом обслуживающего прибора системы массового обслуживания (Q-схемы) [I8]. В любой момент времени устройство может быть занято только одним транзактом. Состояние устройства меняют шесть блоков: SEIZE, RELEASE, PREEMPT, RETURN, FUNAVAIL, FAVAIL, которые используются попарно.

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

Блок RELEASE служит для освобождения устройства, которое ранее было захвачено проходившим в блоке SEIZE транзактом. При выполнении этого блока программы задержка возникнуть не может. Устройство освобождается в момент входа транзакта в блоке RELEASE. Освобождение выполняется только тем транзак­том, которым оно было занято. Если перед SEIZE задерживаются несколько транзактов, они обслуживаются в соответствии с правилом: «первым пришел — первым обслужен».

Рассмотрим пример использования блоков SEIZE и RELEASE:

SEIZE 1

ADVANCE 10,5

RELEASE 1

(т. е. происходит занятие устройства I, задержка от 5 до 15 единиц времени и освобождение устройства 1).

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

Если при выполнении блока PREEMPT оказывается, что одно прерывание уже произошло (устройство обслуживает прерывание), то блок не выполняется и соответствующий транзакт задерживается до тех пор, пока не освободится устройство. Затем обслуживается новый прерывающий транзакт» а не прерванный. Исключением из описанных выше правил является случай, когда блок PREEMPT работает в режиме приоритетов, т. е. в поле В стоит PR. При этом в действиях блока PREEMPT предусмотрен случай разрешения прерывания на основании результата анализа приоритетов транзактов.

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

· в поле С может быть описан какой-либо блок, на который будет передан прерванный транзакт. При этом прерванный транзакт продолжает претендовать на данное устройство;

· если прерванный транзакт находится в блоке ADVANCE, то вычисляется остаток времени (от момента прерывания до момента выхода из блока ADVANCE) и полученное значение помещается в параметре, описанном в поле D блока PREEMPT. В этом случае прерванный транзакт будет послан в блок, указанный в поле С блока PREEMPT. Прерванный транзакт продолжает претендовать на данное устройство;

· если в поле Е блока PREEMPT стоит запись RE, то будут производиться обычные операции, за исключением того, что прерванный транзакт не участвует больше в конфликте из-за захвата устройства.

Блок RETURN сигнализирует об окончании прерывания. При входе в блок задержка возникнуть не может, но закончить прерывание может только тот транзакт, который перед этим прошел блок PREEMPT, относящийся именно к данному устрой­ству. Прерывание заканчивается в момент входа в блок RETURN. Время, в течение которого транзакт находится в прерванном состоянии, не фиксируется. На прерывания имеются следующие ограничения: нельзя производить прерывание транзакта, за­хватившего или прервавшего обслуживание других транзактов более чем на 255 устройствах одновременно, задержка прерванного транзакта начинается с момента первого прерывания и оканчива­ется в момент окончания последнего. Неважно, занято или свободно устройство, для которого выполняется блок PREEMPT.

Рассмотрим пример использования блоков PREEMPT и RETURN:

PREEMPT 16

ADVANCE 150

RETURN 16

(т. е. реализуется прерывание на устройстве 16, задержка на 150 единиц, а затем возврат устройства).

Блок FUNAVAIL[17] выполняет операции, переводящие устройство в состояние недоступности. Недоступность устройства предупреждает занятие или прерывание устройства последующими сообщениями. При этом возможно задание специальных режимов работы блока FUNAVAIL, обеспечивающих окончание обслуживания последнего транзакта, передачу его на обслуживание к другому блоку, дообслуживание транзакта после окончания периода недоступности. Номер или диапазон номеров устройств, переводимых в состояние недоступности, записывается в поле А. Поля В...Н предназначены для задания специальных режимов.

Блок FAVAIL[18] делает доступными устройства, указанные как номер или диапазон номеров устройств в поле А. Блок FAVAIL отменяет все режимы, заданные блоком FUNAVAIL для данных устройств.

Рассмотрим пример использования блоков FUNAVAIL и FAVAIL:

FUNAVAIL 1—15

ADVANCE 30

FAVAIL 1—l0

ADVANCE 15

FAVAIL 11—15

(т. е. недоступные устройства с 1-го по 15-е становятся доступными: через 30 единиц времени — устройства с 1-го 10-е, а через 45 единиц времени — устройства с 11-го по 15-е).

Часто два и более приборов работают рядом. GPSS позволяет моделировать однородные параллельные приборы с помощью специальных средств, называемых многоканальным устройством, или памятями. Для введения в программу памяти требуется описать ее картой STORAGE, а изменение состояния памяти производится блоками ENTER, LEAVE, SUNAVAIL, SAVAIL. Блок ENTER моделирует событие «занятие одного из группы параллельно работающих приборов», LEAVE[19] – «освобождение параллельно работающего прибора».

Поле А блока ENTER интерпретируется как номер памяти, поле В — указывает число единиц памяти, занимаемых транзактом при входе в блок. При выходе транзактов из блока ENTER никаких изменений в содержимом памяти не происходит.

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

Поле А определяет номер памяти, а поле В — число единиц, которые надлежит освободить при входе транзакта в блок LEAVE. Не всегда освобождается такое же число единиц памяти,какбыло занято. Транзакт, освобождающий память, не обязательно должен был ее занимать. Однако необходимо, чтобы в сумме освобождалось столько единиц памяти, сколько было занято (иначе содержимое памяти будет возрастать и после ее заполнения в системе наступит насыщение), и чтобы содержимое памяти не стало отрицательным (т. е. не освобождалось больше единиц памяти, чем было занято). При выполнении блока LEAVE задержки не возникают. Аналогично тому, как в блоке ENTER транзакт может занять 0 единиц памяти, в блоке LEAVE он может освободить 0 единиц.

Пример 8. Построить программу модели многоканальной системы массового обслуживания с очередью. В парикмахерской три мастера, очередь к ним общая. Клиенты приходят с интервалом (10 ± 5) минут, обслуживание парикмахером клиента занимает (25 ± 10) минут. Смоделировать работу парикмахерской в течение одного рабочего дня (8 часов).

SIMULATE Начало моделирования

PARIK STORAGE 3 Три парикмахера

GENERATE 10,5 Приход клиентов

QUEUE OCHER Занятие очереди

ENTER PARIK,1 Начало стрижки

DEPART OCHER Освобождение очереди

ADVANCE 25,10 Стрижка

LEAVE PARIK,1 Завершение стрижки

TERMINATE Уход клиента

GENERATE 480 Время завершения моделирования

TERMINATE 1

START 1 Системный счетчик равен 1

Схема данной СМО аналогична схеме на рис. 3. Отметим разницу между одноканальным и многоканальным устройствами. Одноканальное устройство может заниматься или захватываться транзактом, многоканальное устройство – только заниматься.

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

 
 

Пример 9. СМО состоит из одного прибора и очереди перед ним. Обработка заявки в приборе занимает (20 ± 5) единиц времени. Очередь ограничена длиной 4. Заявки приходят каждые (15 ± 3) единиц времени и если в очереди нет свободных мест, то заявки покидают модель необслуженными. Промоделировать систему в течение 1000 единиц времени.

SIMULATE Начало моделирования

NAKOP STORAGE 4 Длина очереди – 4 заявки

GENERATE 15,3 Приход заявок

GATE SNF NAKOP,BYBYE Пропустить заявку на

*нижеследующий блок, если очередь NAKOP заполнена не полностью,

*в противном случае заявку отправить на метку BYBYE

ENTER NAKOP Поступление в очередь

SEIZE USTR Занятие устройства

LEAVE NAKOP Освобождение очереди

ADVANCE 20,5 Задержка

RELEASE USTR Освобождение устройства

BYBYE TERMINATE Уход заявки

GENERATE 1000 Время завершения моделирования

TERMINATE 1

START 1 Системный счетчик равен 1

Блок-диаграмма GPSS-модели показана на рис. 8.

Блок SUNAVAIL[20] переводит накопитель в состояние недоступности, при котором транзакты не могут войти в накопитель. Уменьшение содержимого накопителя в этот период может происходить путем прохождения транзактами блока LEAVE. Номер или диапазон номеров накопителей, переводимых в состояние недоступности, записывается в поле А.

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

Рассмотрим пример использования блоков SUNAVAIL и SAVAIL:

SUNAVAIL 2—5

TEST NE PHI,O,NEXT

SAVAIL 2—5

(т. е. недоступные накопители с 1-го по 5-й становятся доступными при появлении транзакта с ненулевым параметром 1 типа «полуслово»).

Логические ключи в GPSS предназначены для описания элементов моделируемой системы S, которые могут находиться только в двух состояниях. Статистика о работе ключей не собирается. Логические ключи не имеют СЧА, а только два логических атрибута, принимающие значения 0— при невыпол­нении и 1— при выполнении следующих условий: LR[21] — ключ в состоянии «0»; LS[22] — ключ в состоянии «1».

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

Блок LOGIC используется для установки логических ключей, состояние которых может быть запрошено в любом другом месте модели. При входе в блок LOGIC задержки не возникает. Состояние логического объекта, указанного в поле А, изменяется одним из трех способов: может быть установлен S, сброшен R или инвертирован I. Вид изменения определяется соответствующим мнемоническим обозначением, помещаемым непосредственно за блоком LOGIC.

Рассмотрим пример применения блока LOGIC:

LOGIC S 41

LOGIC R 165

LOGIC I 4

(т. е. установить ключ 41, сбросить ключ 165, инвертировать ключ 4).

ИЗМЕНЕНИЕ МАРШРУТОВ ТРАНЗАКТОВ

В GPSS поток транзактов обычно проходит блоки последова­тельно, поэтому предполагается, что, выполнив блок с номером n, транзакт переходит к выполнению блока с номером п + 1. Однако в моделируемой реальной системе S в зависимости от создавшихся условий поток транзактов может быть задержан или направление его движения изменено. Для моделирования таких ситуаций на пути потока транзактов может быть помещен блок специального типа, который реализует переход в зависимости от создавшихся условий. В зависимости от способа и условий, сложившихся в модели в данный момент, транзакт по указанию пользователя может быть задержан или направлен в блок с любым указанным номером. Например, перед входом транзакта в блоки некоторых типов (например, блок SEIZE) симулятор GPSS проверяет состояние устройства, указанного в этом блоке. Транзакт войдет в блок, когда соответствующее устройство свободно. Если транзакт не может перейти к выполнению этого блока, то симулятор предоставляет две возможности: либо транзакт может быть задержан до тех пор, пока не освободится требуемое устройство, либо направлен по другому пути. В группу изменения маршрутов сообщений входят блоки GATE, TEST, TRANSFER.

Блок GATE[23]. Этот блок используется для определения состояния объектов устройств без изменения их состояния. Блок GATE работает в двух режимах: 1) отказа или условного входа;

2) перехода или безусловного входа.

При работе в режиме отказа блок GATE не пропускает транзакты, если соответствующий объект не находится в требуемом состоянии. Если же поставленное в блоке условие удовлет­воряется, блок разрешает вход транэактов.

Если в поле В указано наименование (номер) блока, то вместо отказа блок GATE будет посылать транзакт на указанный блок. Таким образом, если поле В пустое, блок работает в режиме отказа, если не пустое — в режиме перехода.

Существует шесть условий или логических атрибутов, описы­вающих состояние устройств, памятей, ключей и условия синхронизации. Мнемонические обозначения проверяемого условия записываются непосредственно после GATE. Поле А определяет номер объекта аппаратной категории (устройства, памяти или ключа). Состояние устройства описывается следующими ус­ловиями: FNU[24] — устройство не используется, свободно; FU — устройство используется, занято (обслуживает захвативший тран­закт или прерывание); FNI —устройство работает без прерывания (свободно или обслуживает захвативший его транзакт); FI — устройство обслуживает прерывание; FV — устройство доступно; fnv — устройство недоступно.

Состояние памяти описывается следующими условиями: SE — память пуста; SNE — память не пуста; SF — память заполнена; SNF — память не заполнена; SV — память доступна; SNV — память недоступна.

Состояние ключа описывается двумя условиями: LR — логический ключ в состоянии «выключен»; LS — логический ключ в состоянии «включен».

Следующие два мнемонические обозначения подробно описаны ниже: М — блок GATE проверяет выполнение условия синхронизации в указанном блоке блок-диаграммы; NM — блок GATE проверяет невыполнение условия синхронизации в указан­ном блоке блок-диаграммы.

Рассмотрим пример использования блока GATE:

режим отказа

GATE SF 167

GATE LS 265

GATE FU 19

(т. е. выполняются следующие действия: блокировать транзакт до тех пор, пока память 167 не будет заполнена; блокировать транзакт до тех пор, пока ключ 265 не установлен, блокировать транзакт до тех пор, пока устройство 19 не освободится);

режим перехода

GATE FI 34,ALTR

(т. е. если устройство 34 прервано, то перейти к ALTR).

Блок TEST. Блок TEST описывает условие, которое проверяет при входе в него транзакта и определяет направление дальнейшего движения транзакта в зависимости от этого условия, которое записывается в виде алгебраического соотношения двух аргументов. При выполнении соотношения транзакт пропускается в следующий за блоком TEST блок. В случае невыполнения соотношений транзакт направляется в блок, метка которого указана в поле С. Если поле С пусто, то транзакт блокируется блоком до выполнения соотношения.

Проверяемое соотношение записывается в поле операций сразу за блоком TEST. При этом можно использовать следующие мнемонические обозначения операций сравнения: L — «меньше чем»; LE — «меньшеили равно»; Е — «равно»; NE — «не равно»;

G — «больше чем»; GE — «больше или равно».

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

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

TEST L S1,K10

TEST NE PF1,PF2

TEST GE Q2,FN1,CEH

Блок TRANSPER. Этот блок обычно используется для того, чтобы передать входящие в него транзакты в блоки, не следующие по номеру за ним. Передача может быть выполнена логически, статистически, условно и безусловно. Вид передачи определяется мнемоническим обозначением, указанным в поле А блока TRANSFER. При безусловной передаче указывается один следу­ющий блок (путь), а при условной передаче—два или больше путей. Выбор тогоили иного пути определяется режимом работы блока TRANSFER. Поле В определяет первый (или единственный) из следующих блоков. Если следующий блок поля В описан на следующей карте, то поле В может быть оставлено пустым. Когда симулятор ПМДС встречает карту — описание блока TRANSFER с пустым полем В, то он записывает в поле В этой карты номер следующего блока.

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

Если поле А блока TRANSFER пусто, то все транзакты, поступающие на этот блок, будут передаваться в блок, номер которого указан в поле В. Например:

TRANSFER ,NEXT

Если в поле А блока TRANSFER стоит BOTH, то каждый транзакт, поступающий на этот блок, проверяет два пути. Сначала проверяется блок, указанный в поле В, и если транзакт не может войти в этот блок, он пытается войти в блок, указанный в поле С. Если транзакт не может войти и в этот блок, он задерживается в блоке TRANSFER и повторяет опрос блоков, указанных в полях В и С, при каждом изменении текущего времени в модели, пока не находит выхода. Этот режим выбора существенно увеличивает время работы, так как если оба выхода заблокированы, опрос их состояния производится очень часто. Например:

TRANSFER BOTH„SAM

SEIZE 52

SAM SEIZE 84

(транзакт блока TRANSFER пытается войти в блок SEIZE; если соответствующее устройство занято, то он направляется в блок SAM; если транзакт не может войти в блок SAM, то он остается в данном блоке TRANSFER и повторяет описанные выше операции при каждом изменении текущего времени).

Если в поле А стоит ALL, то транзакты, входящие в блок, могут опрашивать много путей (блоков). Поле В определяет первый выбираемый блок, поле С — последний. Поле D определяет индексную константу i. Эта константа дает пользователю возможность опрашивать определенные блоки, находящиеся между теми, которые заданы в полях В и С. Транзакт, вошедший в блок TRANSFER, далее пытается выйти через блок, указанный в поле В, Если блок, указанный в поле В, занят, то транзакт пытается войти в блоки с номерами Y + i, Y +2i,..., Z, где Y— номер блока, указанного в поле В, Z — номер блока, указанного в поле С. При этом Z - Y + Мi где М — некоторое целое положительное число. Если транзакт не может войти ни в один из этих блоков, он остается в блоке TRANSFER и при изменении текущего времени повторяет все описанные выше операции. Если задан режим ALL, пользователь должен проследить за тем, чтобы номера просматриваемых блоков совпадали с номерами, присваива­емыми блокам симулятором GPSS. Например:

TRANSFER ALL,FIRST,LAST,3

FIRST SEIZE 1

ASSIGN 12,K1„PB

TRANSFER ,LAST+2

SEIZE 2

ASSIGN 12,K2,,PB

TRANSFER ,LAST+2

LAST SEIZE 3

(транзакт пытается войти в блок FIRST; если он получает отказ, что определяется типом блока FIRST, то транзакт пытается войти в блок FIRST+3; если и в этом блоке будет отказ, то транзакт пытается войти в блок FIRST+6 (LAST); если транзакт не смог войти ни в один из трех блоков, он остается в блоке TRANSFER и программа (система) переходит к обработке другого транзакта). При каждой попытке продвинуть транзакты, находящиеся в блоке TRANSFER, все проверки, перечисленные выше, производятся сначала, как и в режиме BOTH, поэтому время счета также может значительно возрасти.

Если в поле А стоит SIM, то выбирается один из двух возможных путей. Каждый входящий в блок транзакт содержит информацию для принятия решения. В каждом транзакте есть индикатор SIM, установленный в 0 или 1. Если значение индикатора SIM равно 1, то транзакт будет послан в блок указанный в поле С, а индикатор SIM будет установлен в 0. Если индикатор SIM равен 0, то транзакт может направляться по выбранному для него пути. Если транзакт получает отказ при попытке войти в какой-либо блок, этот индикатор устанавливается в 1, фиксируя тот факт, что некоторое условие не выполняется. Если одновременно должны удовлетворяться несколько условий, каждый из них может быть проверен, и если все они удовлетворяются, то индикатор SIM транзакта остается равным 0. Если не выполняется хотя бы одно из условий, индикатор SIM устанавливается в 1. В таких случаях блок, заданный в поле С, указывает блок, в котором проверялось первое условие, и транзакт выполняет проверку условий, пока все они не будут удовлетворяться одновременно. Блок ADVANCE также устанавливает индикатор SIM в 0. Проверка состояний связана с блоками, которые могут задерживать транзакты. Для проверки условий используется блок GATE, описанный ранее.

Существует режим проверки одновременного выполнения нескольких условий. В приведенном ниже примере транзакты не могут перейти к блоку SEIZE, если устройства 1, 2 и 15 не будут одновременно свободны. При входе транзактов в блок TRANSFER проверяется значение индикатора SIM этого транзакта. Если транзакт был задержан в каком-либо из блоков GATE, его индикатор установлен в 1. Когда индикатор проверяется в блоке TRANSFER, оказывается, что транзакт был задержан, и он отсылается к тому блоку, где производилась первая проверка (CPU), и вся последовательность проверок повторяется. При проверке (т. е. при прохождении блока TRANSFER) с индикатором SIM, индикатор всегда сбрасывается в 0, поэтому если транзакт повторяет последовательность проверок в тот же момент времени, т. е. без задержки, то после второй попытки он пройдет, так как индикатор SIM устанавливается в 0 при первой попытке, Например:

CPU GATE NU 1

GATE NU 2

САТЕ NU 15

TRANSFER SIM,,CPU

SEIZE 1,5

Рассмотрим статистический режим выбора. Если в поле А блока TRANSFER записана десятичная дробь, то производится случайный выбор между блоками, описанными в поле В и в поле С. Вероятность выбора блока С задается дробью. Например:

TRANSFER, 370,THIS,THAT

(т. е. режим выбора задан числом 370, при этом 37% всех транзактов, поступивших на блок TRANSFER, будет передаваться на блок поля С, а 63% — на блок поля В).

Для каждого отдельного транзакта, естественно, выбирается только один из двух путей. Выбор производится для каждого транзакта только один раз, в момент входа в блок TRANSFER. Кроме этого, пользователю предоставлены еще четыре режима выбора: PICK, SBR, FN и Р.

БЛОКИ ДЛЯ СБОРА СТАТИСТИКИ

В статистической категории GPSS используется два типа объектов: очереди и таблицы. Очереди вводятся в моделирующую программу для регистрации статистической информации о процессе ожидания. Постановка транзакта в очередь производится блоком QUEUE, а удаление транзакта из очереди — блоком DEPART. Таблицы вводятся в моделирующую программу для сбора статистических данных. Ввод производится с помощью карты TABLE, а регистрация статистических данных в таблице — при входе транзакта в блок TABULATE.

Блок QUEUE. Этот блок аналогичен блоку ENTER u извещает симулятор GPSS о том, что в данной точке блок-диаграммы нужно собирать статистику об очереди. Номер очереди, в которую пользователь хочет занести транзакт, задается в поле А блока QUEUE. При записи нового транзакта в очередь определяется длина интервала времени, в течение которого длина очереди оставалась неизменной. При входе транзакта в блок QUEUE текущая длина очереди увеличивается на число единиц, указанное в поле В, после чего симулятор сравнивает новую длину очереди с максимальной, достигнутой до сих пор. Если новое значение больше максимального, то старое максимальное значение очереди заменяется на новое. Кроме того, счетчик общего числа единиц, прошедших через очередь, увеличивается на то же число единиц. Общее число единиц используется для определения взвешенного среднего времени пребывания транзакта в очереди.

Блок DEPART. Этот блок аналогичен блоку LEAVE. Поле А интерпретируется как номер очереди. В поле В задается число единиц, на которое уменьшается длина очереди. При входе транзактов в блок DEPART число единиц, указанное в поле В, вычитается из длины очереди. Как и в блоке LBAVE, если поле В пусто, то его значение принимается равным 1.

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

Можно заносить в таблицу время пребывания транзакта в очереди. В примере, приведенном ниже, время пребывания в очереди 10 будет заноситься в таблицу QTABLE 15. В ней будет 100 интервалов: 0, 5, 10 ...490.

Рассмотрим пример использования блоков QUEUE и DEPART

QUEUE 10

SEIZE 1

DEPART 10

ADVANCE 150,5

RELEASE 1

QTABLE 10,0,5,l00

Блок TABULATE. Пользователю GPSS позволено для сбора нужных статистических данных вводить таблицы нескольких типов. Информация заносится в таблицы с помощью специального блока TABULATE в момент входа транзакта в этот блок. Пользователь должен задать ряд характеристик для каждой из таблиц, которую он хочет использовать. Характеристики таблицы задаются специальной картой описания таблицы - TABLE (QTABLE).

При входе транзакта в блок TABULATE симулятор ПМДС записывает в соответствующую таблицу определенную статистиче­скую информацию. Поле А определяет номер этой таблицы, в которой накапливается соответствующая статистическая инфор­мация. Вид заносимой информации определяется на специальной карте описания таблицы помимо способа обработки. Эта карта определяет размер, а также число и границы интервалов таблицы. В каждом блоке TABULATE может быть задано число единиц, добавляемых к числу наблюдений того интервала, в который попадает при данном обращении аргумент. Это число единиц задается в поле В. Если поле В пусто, то это число принимается равным 1. Например:

TABULATE 10

(т. е. в интервалы таблицы 10 добавляется 1);

TABULATE 48,2

(т. е. в интервалы таблицы 48 добавляется по 2 единицы).

В GPSS предусмотрено несколько специальных режимов табулирования, которые указываются в поле А карты описания таблицы. Знак «—» за величиной, записанной в поле А, указывает на то, что в таблицу заносится не само значение, а разность между текущим значением этой величины и последним значением, занесенным в таблицу. Этот режим называется разностным. Первое обращение к таблице симулятором автоматически исклю­чается.

В качестве примера приведен случай разностного режима табулирования:

16 TABLE 10-,1,A50

Таблица TABLE 16 является взвешенной, поэтому в поле D должен стоять любой буквенный символ и за ним — число классов частоты.

Если в поле А стоит мнемоническое обозначение RT, то при входе транзакта в блок TABULATE, который связан с таблицей, заполняемой таким способом, обращение к классам частот не производится. Вместо этого число единиц,заданное в блоке TABULATE, добавляется к счетчику числа входов в таблицу. Карта описания таблицы должна содержать в поле В временной интервал. Если этот интервал равен, например, 1000, значение счетчика числа входов будет заноситься в таблицу по истечении каждых 1000 единиц времени. После занесения счетчик сбрасы­вается в 0. Таким образом, при этом способе определяется распределение числа «заявок», поступающих за 1000 единиц времени.

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

TABULATE 19

19 TABLE RT,0,10,75,1000

Если в поле А стоит мнемоническое обозначение IА, то при входе транзакта в блок TABULATE, который соответствует таблице, заполняемой таким способом, симулятор ПМДС определяет время, прошедшее с момента последнего обращения к этой таблице. Полученное значение заносится в таблицу. Как и в случае разностного режима, первое обращение к таблице исключается симулятором автоматически. Такая таблица представляет собой распределение промежутков времени между моментами поступления транзактов в данную точку программы.

Приведем пример использования режима IA:

TABULATE 26

26 TABLE IA,0,10,100

 

ОСНОВНЫЕ ВЫВОДЫ ПО ЯЗЫКУ GPSS

 

Язык GPSS представляет собой интерпретирующую языковую систему, применяющуюся для описания пространственного движения объектов. Такие динамические объекты в GPSS называются транзактами и представляют собой элементы потока. В процессе имитации транзакты "создаются" и "уничтожаются". Функцию каждого из них можно представить как движение через модель M с поочередным воздействием на ее блоки. Каждый транзакт имеет набор параметров. В GPSS также введены понятия прибора, многоканального устройства (накопителя) и очереди, которые соответствуют постоянным элементам системы.

 

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

 

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

 

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

 

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

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

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

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

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

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

Транзакты в ЦТС просматриваются до тех пор, пока ни один из них дальше обрабатываться уже не сможет. Тогда монитор опять выбирает из ЦБС транзакт с минимальным временем, изменяет значение таймера и все выше описанное повторяется. Модель заканчивает работу тогда, когда переменная модели, называемая "счетчик завершения", получит значение меньшее или равное 0. Начальное значение счетчика завершения задается при запуске модели в карте START, а изменяется блоком TERMINATE.


 

ЛИТЕРАТУРА

 

1. Армстронг Дж. Моделирование цифровых систем на языке VHDL. 1992[11]

2. Бусленко Н.П. Моделирование сложных систем. М.: Наука, 1978[12]

3. Васильев В.И.,Романов Л.Г., Червоный А.А. Основы теории систем: конспект лекций. М.: МГТУ ГА, 1994

4. Васильев В.И., Иванюк А.И., Свириденко В.А. Моделирование систем гражданской авиации. М.: Транспорт, 1988[13]

5. Веников В.А., Веников Г.В. Теория подобия и моделирования. М.: Высш. шк., 1984[14]

6. Гнеденко Б.В., Коваленко И.Н. Введение в теорию массового обслуживания. М.: Наука, 1987[15]

7. Ермаков С..М., Мелас В.Б. Математический эксперимент с моделями сложных стохастических систем. 1993

8. Калашников В.В., Рачев С.Т. Математические методы построения стохастических моделей обслуживания. М.:Наука, 1988[16]

9. Киндлер Е. Языки моделирования. М.: Энергоатомиздат, 1985[17]

10. Клейнен Дж. Статистические методы в имитационном моделировании: [в 2-х вып.] М.: Статистика, 1978[18]

11. Математическое моделирование: Методы, описания и исследования сложных систем:[Сб. ст.]/под ред. Самарского А.А. М.: Наука, 1989[19]

12. Питерсон Дж. Теория сетей Петри и моделирование систем. М.: Мир, 1984[110]

13. Полляк Ю.Г., Филимонов В.А. Статистическое машинное моделирование средств связи. М.: Радио и связь, 1988[111]

14. Прицкер А. Введение в имитационное моделирование и язык СЛАМ II. М.: Мир, 1987[К12]

15. Романцев В.В., Яковлев С.А. Моделирование систем массового обслуживания. 1995

16. Сабинин Д.Ю. Статистическое моделирование технических систем. 1993

17. Советов Б.Я., Яковлев С.А. Моделирование систем: Курсовое проектирование. М.: Высш. Шк., 1988[К13]

18. Советов Б.Я., Яковлев С.А. Моделирование систем.- М.: Высшая школа, 1995

19. Технология системного моделирования /под ред. С.В.Емельянова. М.: Машиностроение, 1988[К14]

20. Четвериков В.Н., Баканович Э.А. Стохастические вычислительные устройства систем моделирования. М.: Машиностроение, 1989[К15]

21. Шеннон Р.Ю. Имитационное моделирование систем - искусство и наука. М.: Машиностроение, 1989

22. Шрайбер Т. Дж. Моделирование на GPSS.


ПРИЛОЖЕНИЯ

ПРИЛОЖЕНИЕ 1. Условные обозначения на блок-диаграммах GPSS

Pril11
Pril12
Pril13
Pril14
Pril15


 

ПРИЛОЖЕНИЕ 2.
Основные сокращения и обозначения симулятора GPSS

TRANS - Номер транзакта
BDT - Время выхода сообщения из блока ( это либо значение абсолютного условного времени, при котором транзакт покинет блок ADVANCE, либо значение абсолютного условного времени в момент, когда сообщение вышло из последнего блока ADVANCE, либо нуль, если сообщение еще не входило ни в один блок ADVANCE )
BLOCK - Номер блока, в котором сообщение находится в данный момент времени;
PR - Уровень приоритета сообщения (0..127 );
SF - Режим выбора (определяет режим выбора следующего блока: · пробел означает переход к следующему блоку; · ”А” означает режим ALL блока TRANSFER); · “B” означает, что транзакт находится в блоке TRANSFER, работающем в режиме BO

Последнее изменение этой страницы: 2016-07-22

lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда...