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


Категории:

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






БЛОКИ, СВЯЗАННЫЕ С ТРАНЗАКТАМИ GPSS

К динамической категории GPSS относятся транзакты, которые в процессе моделирования создаются, размножаются, собираются и уничтожаются. Каждому транзакту соответствует набор параметров, число которых может достигать 1020. Если число параметров не определено, то вводится 12 параметров формата «полуслово» для каждого транзакта. Параметры могут иметь формат: «слово», «полуслово», «байт», «плавающая точка». Транзактам присваивается приоритет от 0 до 127. Если приоритет не назван, то он принимается равным минимальному приоритету, т. е. 0.

С динамической категорией GPSS связаны следующие группы блоков: 1) задержки транзактов по заданному времени; 2) создания и уничтожения транзактов; 3) изменения параметров транзактов; 4) создания копий транзактов; 5) синхронизации движения транзактов.

1. Группа блоков задержки транзактов по заданному времени. Из четырех типов событий, которые могут произойти при прохождении транзакта через блок, простейшим является задержка транзактов в течение определенного периода времени. Задать его можно только в блоке ADVANCE. Этот блок задает среднее время выполнения операции в моделируемой системе S, а также разброс времени относительно среднего. В блоке производится определение числа единиц времени, на которое транзакт будет задержан. Это время может выражаться любым целым положительным числом, в том числе и нулем. Если время равно 0, то транзакт в блоке ADVANCE не задерживается и переходит в следующий блок блок-диаграммы.

Для задания времени пребывания в блоке ADVANCE пользователь указывает среднее время в поле А, а модификатор — в поле В. Если время задержки постоянно, поле В может быть пустым, а если время задержки нулевое, то и поле А может быть пустым. Модификаторы могут быть двух типов: интервал и функция.

Модификатор-интервал используется, когда время задержки транзактов распределено равномерно в некотором заданном диапазоне. Например, если времена распределены равномерно в интервале (10 ± 5), то среднее—10, интервал—5. В результате с равной вероятностью получаем целые числа от 5 до 15.

Например:

ADVANCE 10,5

(т. е. при использовании модификатора-интервала имеет место задержка на (10 ± 5) единиц времени).

Модификатор-функция используется, если времена задержки транзактов распределены не равномерно, а более сложным образом. При обращении к функции определяется некоторое число — значение функции, и время задержки в блоке определяется умножением среднего на это число (если результат — не целое число, то берется его целая часть).

Например:

ADVANCE 500,FN2

(т. е. при использовании модификатора-функции получается задержка на 500*FN2 единиц времени).

2. Группа блоков создания и уничтожениятранзактов. В эту группу входят блоки GENERATE, TERMINATE, SPLIT и ASSEMBLE.

Функцией блока GENERATE является создание транзактов, водящих в систему. В поле А задается среднее время между поступлением отдельных транзактов. Как и в блоке ADVANCE, это время может быть модифицировано с помощью модификатора в поле В (интервала или функции). В поле может быть записан «0». Если при вычислении времени появления в системе первого транзакта оно получилось равным 0, то симулятор полагает его равным 1. Среднее время принимается равным 1, если поле В пусто, а в поле А описан модификатор-функция. Задаваемый модификатор-интервал не должен превосходить среднего, записанного в поле А, чтобы не получались отрицательные интервалы между моментами появления транзактов.

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

В поле С записывается начальная задержка. Заданное в этом поле число (без модификации) определяет интервал времени до создания данным блоком первого транзакта. Это число может быть меньше, равно или больше, чем среднее, заданное в поле А.

Поле D задает число транзактов, которое должно быть создано блоком GENERATE. Если это поле пусто, то блок генерирует неограниченное число транзактов.

В поле Е задается приоритет (от 0 до 127), присваиваемый генерируемым транзактам. Если в этом поле значение приоритета не задано, генерируемые транзакты имеют нулевой приоритет.

Поля F—1 резервируют для транзакта необходимое число типов параметров. Максимально допустимое число параметров —1020, т. е. по 255 параметров каждого формата: «слово», «полуслово», «байт», «плавающая точка». Поскольку параметры не кодируются в определенной последовательности, то для определения типа их необходимо использовать индексы. Допустимыми индексами являются: РН — параметр формата «полуслово»; PF — параметр формата «слово»; РВ — параметр формата «байт»; PL— параметр формата «плавающая точка». Если поля пусты, то транзакту выделяется 12 параметров формата «полуслово». Если в поле F записан «0», то у транзакта нет параметров. Первоначальные значения параметров равны 0.

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

GENERATE 10,3,100,l6,5,5PB,20PH,3PL,4PF

(транзакты создаются через каждые (10 ± 3) единиц времени, причем первый транзакт создан в момент времени, равный 100, всем 16 транзактам, созданным в этом блоке, присваивается приоритет 5; каждый транзакт имеет по пять параметров формата «байт», по 20 параметров формата «полуслово», по три параметра формата «плавающая точка» и по четыре параметра формата «слово»).

GENERATE 10,2,1000,10,4

(транзакты генерируются через каждые (10 ± 2) единиц времени, причем первый из десяти генерируемых этим блоком транзактов создан в момент времени, равный 1000; всем транзактам присваивается приоритет 4, и все они имеют по 12 параметров формата «полуслово», так как поля, задающие число параметров, пусты).

GENERATE 100,FN$EXPON,,100

(транзакты создаются через интервал времени, равный произведению 100 на значение функции EXPON; в этом блоке генерируется только 100 транзактов, которые имеют по 12 параметров формата «полуслово», и всем им присвоен приоритет 0).

GENERATE 54,FN$NORM,,,7

(транзакты генерируются через 54 единицы времени, модифицированные функцией NORM, и имеют приоритет 7 и по 12 параметров формата «полуслово»).

GENERATE 10,FN$EXPON,,,,10PF

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

Блок TERMINATE удаляет транзакты из системы. Он используется для изображения окончания пути транзакта в системе (например, в момент прибытия транзакта в пункт назначения). Поле А блока TERMINATE указывает, изменяет ли этот блок содержимое счетчика завершения TG1 в момент поступления транзакта и, если изменяет, то на сколько единиц. В приведенном ниже примере в поле А записано 2. Это значит, что каждый раз, когда транзакт входит в этот блок, из счетчика завершений вычитается 2. Если содержимое этого счетчика задано (специальной картой START) равным 1000 и во всей модели один блок TERMINATE, то до завершения счета через этот блок пройдет 500 транзактов. Если поле не определено, то оно считается равным 0, и транзакты, проходящие через такой блок, не уменьшают содержимого счетчика завершений. Соответственно, модели должен быть хотя бы один блок TERMINATE, у которого поле А не меньше 1, чтобы процесс моделирования закончился Если в модели такого блока нет, то счет будет продолжаться до тех пор, тока задачу не остановит оператор.

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

TERMINATE

(удаляет транзакт, счетчик TG1 не изменяется);

TERMINATE 2

(уменьшается счетчик TG1 на 2).

3. Группа блоков изменения параметров транзактов. Каждый транзакт может иметь от 0 до 1020 параметров, Интерпретация смысла параметров произвольная. В момент генерации транзакта все его параметры нулевые. Блок ASSIGH[15] является основным средством для задания значений параметров транзактов. В поле А указывается, какой параметр поступившего транзакта должен быть изменен. Следующий непосредственно за номером параметра символ указывает, что нужно сделать с записанным в поле B целым числом: прибавить его к текущему значению параметра, вычесть его из текущего значения параметра; заменить текущее значение этим числом. Эти операции соответственно обозначаются п+ , n-, п, где п — номер параметра.

Если в поле С указано какое-либо значение, оно интерпретируется как номер функции. Производится определение значения функции, а результат используется для модификации целого числа, указанного в поле В. Произведение помешается в параметр, указанный в поле А.

В поле D задается тип изменяемого параметра. Допускайте следующие записи: РН, PF, РВ, PL, соответствующие параметрам формата: «полуслово» «слово», «байт» и «плавающая точка». Если модификатор-функция не задан, то вместо поля D можно использовать поле С. Например:

ASSIGN 1,475,РН

(т. е. первому параметру формата «полуслово», входящему в блок ASSIGN транзакта, нужно присвоить значение 475).

ASSIGN 12+,45,РВ

(т. е. текущему значению 12-го параметра формата «байт» прибавить число 45).

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

ASSIGN 1—7,5„PH

(здесь текущее значение параметров с 1-го по 7-й включительно (формата «полуслово») заменяется числом 5).

Если же число 5 следует прибавить к текущему значению этих параметров, то блок следует закодировать так:

ASSIGN l-7+,5„PH

Если в поле С задан модификатор-функция и предполагается функция 1, то в поле С должна быть такая запись:

ASSIGN 3,5,1РН

но не такая:

ASSIGN 3,5,FNl,PH

(здесь номер функции определяется вычислением значения функции 1; результат будет одинаковым в том случае, если значение FN1 равно 1).

Пример 5. Построить программу модели процесса прохождения 70 деталей, пос­тупающих с интервалом времени 12 ± 2 единицы и обрабатываемых одним рабочим по пяти последовательно идущим друг за другом операциям, времена выполнения которых распределены в интервале 2 ± 1 единица времени. Распределение всех времеи в ука­занных интервалах равномерно. В результате моделирования требуется определить коэффициент занятости рабочего.

Программа имеет вид:

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

GENERATE 12,2 Поступление деталей

ASSIGN 2.5„PB Счетчик операций

SEIZE 1 Запуск детали

WAIT ADVANCE 2.1 Операция

LOOP PB2,WAIT Переход к следующей операции

RELEASE 1 Выпуск детали

TERMINATE 1

START 70

END

4. Группа блоков создания копий транзактов. Блок SPLIT[16], так же как блок GENERATE предназначен для создания транзактов. Но в отличие от GENERATE блок SPLIT не создает самостоятельных транзактов, а лишь генерирует заданное число копий входящего в него транзакта. Получаемые копии идентичны исходному транзакту. Число копий задается в поле А. После прохождения блока SPLIT исходный транзакт направляется в следующий блок, а все копии пересылаются по адресу, указанному в поле В (в том числе и к следующему блоку). Таким образом, если в поле А задано число i, то из блока выйдут i+1 транзакт. Далее исходное сообщение и копии являются равноправными и могут проходить снова через любое число блоков SPLIT. Все транзакты, полученные копированием, а также копии копий принадлежат к одному ансамблю и далее к этому ансамблю можно применять специальные блоки, осуществляющие обработку ансамб­лей транзактов (например, MATCH, ASSEMBLE, GATHER).

Получаемый ансамбль транзактов может быть пронумерован. Для этого в поле С записывается номер параметра транзакта, в котором будет произведена нумерация. Если в исходном транзакте значение этого параметра было равно k, то после нумерации исходный транзакт получит значение k + 1, первая копия — k + 2 и т. д,

Так как копии транзакта могут иметь параметры разных типов, то необходимо использование индекса для указания типа параметра, который берется при объединении в серии. Допуска­ются индексы: РН — параметр формата «полуслово»; PF — параметр формата «слово»; РВ — параметр формата «байт». Исходный транзакт и копии объединяются в серии по заданному параметру. В приведенном ниже примере рассматривается случай, когда параметр 10 формата «байт» имеет значение N при входе транзакта в блок SPLIT. При выходе из блока значение его станет N+1, а значения параметра 10 (формата «байт») транзактов копий соответственно будут: N+ 2, ...

SPLIT 6,NEXTY,10PB

Копии, полученные в блоке SPLIT, могут иметь число и типы параметров, отличные от исходного транзакта.

В полях D, Е, F и G блока SPLIT определяются число и типы параметров, присваиваемых копиям. Эти поля, начиная с поля D, можно задавать в любом порядке. В каждом поле должен быть указан индекс параметра для определения его типа (используются те же индексы, что и в блоке GENERATE). В копии переносятся значения только тех параметров исходного транзакта, для которых есть соответствующие номера. Если поля D, F, Е и G пусты, параметры копий такие же, как и у исходного транзакта. В приведенном ниже примере каждая из восьми копий будет иметь по восемь параметров формата «плавающая точка» и четыре параметра формата «байт». Если исходный транзакт имеет соответствующие параметры, содержимое параметров будет передано копиям:

SPLIT 8.NEXTZ„8PL,4PB

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

5. Группа блоков синхронизации движения транзактов. Блок ASSEMBLE используется для объединения определенного числа транзактов, являющихся членами одного ансамбля. Число объединяемых ансамблей указывается в поле А. Транзакты, принадлежащие одному ансамблю, будут задерживаться в блоке ASSEMBLE до тех пор, пока не поступит заданное число транзактов этого ансамбля. В результате на выходе блока появляется один (первый) транзакт ансамбля, а остальные транзакты уничтожаются. В одном блоке ASSEMBLE могут накапливаться транзакты разных ансамблей, транзакты одного ансамбля могут накапливаться в разных блоках ASSEMBLE. Если число собираемых членов ансамбля задается с помощью косвенной адресации, то для его установления используется параметр первого пришедшего транзакта. Рассмотрим примеры использования блока ASSEMBLE:

ASSEMBLE 5

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

ASSEMBLE *1

(т. е. собирается число транзактов, равное значению параметра «1» первого транзакта ансамбля).

Пример 6. Построить программу модели процесса прохождения 100 деталей, поступление которых подчиняется равномерному закону в интервале (8 ± 2) единицы времени и обработка производится параллельно двумя рабочими, каждый из которых выполняет свою операцию независимо друг от друга со временем (5 ± 3) единицы, распределенным равномерно. В результате моделирования требуется определить ко­эффициент занятости рабочих.

Программа имеет вид:

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

GENERATE 8,2 Приход деталей

SPLIT l,THIS Начало обработки детали

SEIZE 1 Первый рабочий

ADVANCE 5,3

RELEASE 1

TRANSFER ,THAT

THIS SEIZE 2 Второй рабочий

ADVANCE 5,3

RELEASE 2

THAT ASSEMBLE 2 Окончание обработки детали

TERMINATE 1

START 100

END

Действие блока GATHER аналогично действию блока ASSEMBLE. Отличие состоит в том, что после накопления в блоке числа транзактов, указанного в поле А, они все передаются в следующий блок. Блок GATHER позволяет синхронизировать движение транзактов одного ансамбля при их движении по одному пути. Приведем пример использования блока GATHER:

GATHER 3

(т. е. после прихода трех транзактов они поступают в следующий блок).

Пример 7. Построить программу модели процесса прохождения 80 деталей. На производственный участок сборки подшипников поступают обоймы и шарики с. интервалом времени (25 ± 4) единицы. На контроль обоймы затрачивается (4 ± 1) единица времени; контроль шариков производится последовательно со временем (2 ± 1) единица времени на шарик. Операция сборки требует одновременного поступления обоймы и всех шариков и производится со временем (4 ± 2) единицы. Все процессы подчиняются равномерному закону. В результате моделировании требуется определить коэффициенты занятости paбочих участка.

Программа имеет вид:

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

GENERATE 25,4

SPLIT 8,THAT Разделение обоймы и шариков

SEIZE 1

ADVANCE 4,1 Контроль обоймы

RELEASE 1

TRANSFER ,FINAL

THAT SEIZE 2

ADVANCE 2,1 Контроль шариков

RELEASE 2

GATHER 8

FINAL ASSEMBLE 9 Комплектация

SEIZE 3

ADVANCE 4,2 Сборка

RELEASE 3

TERMINATE 1

START 80

END 3

 

Блок MATH предназначен для синхронизации продвижения двух транзактов одного ансамбля, движущихся по разным путям. Для синхронизации необходимы два блока MATCH, находящиеся в соответствующих местах блок-диаграммы и называемые сопряженными. В поле А каждого блока MATCH указывается метка сопряженного ему блока. При подходе транзакта к блоку MATCH проверяется наличие в сопряженном ему блоке транзакта из того же ансамбля. Если в обоих блоках имеются транзакты одного ансамбля, то они одновременно пропускаются через блоки MATCH. Если в сопряженном блоке нет ни одного транзакта данного ансамбля, то поступивший транзакт будет ожидать поступления транзакта того же ансамбля в сопряженный блок MATCH, после чего они оба будут пропущены в следующие за блоками MATCH блоки.

Одна и та же пара блоков MATCH может одновременно синхронизировать любое число пар транзактов из разных ансамблей. Транзакты одного ансамбля также могут синхронизировать в любом числе пар блоков MATCH. Следует отметить, что блок MATCH может быть сопряжен сам себе. При этом его действие будет аналогично действию блока GATHER с параметром 2 в поле А. Рассмотрим соответствующие примеры использования блока MATCH

ААА MATCH BBB

…..

ВВВ MATCH ААА

(в этом случае транзакт ААА будет ожидать прихода члена того же ансамбля в блок MATCH с меткой ВВВ);

ССС MATCH CCC

(здесь транзакт будет ждать прихода члена того же ансамбля в этот же блок MATCH).

Пример 2.8. Построить программу модели прохождения 500 деталей. Детали поступают с интервалом времени (300 ± 50) единиц. Обработку производят двое рабочих, которые выполняют по две операции. После первой операции, выполняемой первым рабочим со временем (70 ± 20) единиц и вторым со временем (60 ± 30) единиц, производится операция сверки, время выполнения которой принимается равным нулю. После сверки выполняется вторая операция первым рабочим со временем (20 ± 10) единиц и вторым — (50 ± 20) единиц. Затем третий рабочий производит сборку изделия из этих деталей со временем (50 ± 20) единиц. Все процессы подчиняются равномерному закону. В результате моделирования необходимо определить коэффициенты занятости рабочих.

Программа имеет вид:

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

GENERATE 300,50 Поступление деталей

MANA SEIZE 1

ADVANCE 70,20 Первый рабочий, первая операция

HERE MATCH THERE Сверка

ADVANCE 20,10 Первый рабочий, вторая операция

RELEASE 1

TRANSFER ,MANC

MANB SEIZE 2

ADVANCE 60,30 Второй рабочий, первая операция

THERE MATCH HERE Сверка

ADVANCE 30,20 Второй рабочий, вторая операция

RELEASE 2

MANC ASSEMBLE 2

SEIZE 3

ADVANCE 50,20 Сборка

RELEASE 3

TERMINATE 1

START 500

END

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

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