Реферат: Основные концепции моделирования на gpss


ГЛАВА 1

ОСНОВНЫЕ КОНЦЕПЦИИ МОДЕЛИРОВАНИЯ НА GPSS

Внесение транзактов в модель. Блок GENERATE (ГЕНЕРИРОВАТЬ).

Строки, соответствующие блокам GPSS.

Удаление транзактов из модели. Блок TERMINATE (ЗАВЕРШИТЬ).

Элементы, символизирующие обслуживающие приборы.

Занятие свободных приборов. Блоки SEIZE (ЗАНЯТЬ) и RELEASE (ОСВОБОДИТЬ)

Реализация задержки во времени. Блок ADVANCE (ЗАДЕРЖАТЬ).

Ожидание обслуживания: где и при каких условиях происходит ожидание транзакта.

Сбор статистики при ожидании. Блоки QUEUE (СТАТЬ В ОЧЕРЕДЬ) и DEPART (ПОКИНУТЬ ОЧЕРЕДЬ).

Описание стандартов для записи примеров моделирования.

Пример моделирования 2А. Система с одним прибором и очередью.

Внешние управляющие карты, необходимые для выполнения моделирования на GPSS.

Логика работы интерпретатора.

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

Распечатка цепей текущих и будущих событий.

Пример моделирования 2В. Расширение системы обслуживания с одним прибором и очередью.

Второй пример использования цепей текущих и будущих событий.

Пример моделирования 2С. Измененная дисциплина обслуживания в системе с одним прибором и очередью.

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

Переход транзактов в блок, отличный от последующего. Блок TRANSFER (ПЕРЕДАТЬ).

Пример моделирования 2D. Система обслуживания с прибором, очередью и обратной связью.

Моделирование многоканальных устройств.

Использование параллельно работающих каналов. Блоки ENTER (ВОЙТИ) и LEAVE (ВЫЙТИ).

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

Пример моделирования 2Е. Задача об управлении производством.

Управляющие карты GPSS. Карта RESET (СБРОСИТЬ).

Печать в процессе моделирования.

ТЕМА № 1

"Внесение транзактов в модель. Блок GЕNЕRАТЕ (ГЕНЕРИРОВАТЬ)"

GENERATE - это блок, через который транзакты входят в модель. Не существует ограничений на число различных блоков GЕNЕRАТЕ в одной модели. Интервал времени между последовательными появлениями транзактов блока GENERAТЕ называют интервалом поступления.

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

В системе обслуживания разработчик должен был построить логическую схему, необходимую для реализации процедуры планирования. При использовании GPSS интерпретатор автоматически выполняет требуемые шаги для реализации блока GENERАТЕ. Это дает возможность разработчику уделить больше внимания тем деталям моделирования, которые вызывают у него наибольшие трудности.

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

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

Блок GENERАТЕ вместе с операндами А и В изображен на рис. 1.1.


Рис. 1.1

Блок GENERATE (ГЕНЕРИРОВАТЬ) с операндами А и В:

Операнд

Значение

Значение по умолчанию

А

Средний интервал времени

Ноль

В

Половина поля допуска равномерно распределенного интервала

Ноль

Операнд А определяет среднее время между последовательными приходами транзактов в блоке GENERАТЕ.

Операнд В задает половину поля допуска (или половину размаха) интервалов времени прибытия. Когда операнды задают в виде констaнт, они должны быть неотрицательными целыми числами.В GPSS/360 существует только один единственный блок (рассмотрен ниже), для которого разрешено использование десятичной точки в операнде. Во всех остальных случаях включение десятичной точки при использовании операндов ошибочно.


Рис. 1.2. Блок GENERATE (ГЕНЕРИРОВАТЬ)
с конкретными значениями операндов А и В.

На рис. 1.2 показан пример использования блока GENERАТЕ. Операндами А и В являются соответственно 5 и 3. Интервалом времени прибытия, таким образом, является случайное число со средним значением, равным 5, и полем допуска, равным 6, т. е. интервал прихода может быть выражен целыми числами 2, 3, 4, 5, б, 7 и 8.

Напомним, что таймер GPSS регистрирует только целые значения, поэтому транзакты могут быть внесены в модель только в целые значения моментов времени. Это объясняет, почему запись 5 - 3 описывает замкнутый интервал целых значений от 2 до 8, а не непрерывный интервал между 2 и 8.

В данном примере интервалы прихода заявок могут принимать только одно из семи различных значений. Поскольку значения распределены равномерно, каждое из чисел может появляться с относительной частотой 1/7.

Для иллюстра- ции планирования событий предположим, что транзакт входит в блок GENERАТЕ, представленный на рис.1.2, в момент модельного времени 15. После того, как этот транзакт попадет в следующий блок модели, интерпретатор GPSS разыграет случайное значение времени из распределения интервалов времени, равного 5-3.Пусть разыгранным значением является число 7. Тогда интерпретатор планирует приход следующего транзакта в блок GENERАТЕ в момент времени 15 + 7,или 22. В момент, когда этот транзакт появляется в блоке GENERАТЕ и идет к следующему блоку, планируется время прихода его последователя. Эта техника аналогична той, которую использовали для планирования прихода заявок в системе обслуживания с одним прибором и очередью .

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


Рис. 1.3. Блок GЕNERАТЕ с заданием по умолчанию операнда В.

На рис. 1.3 показано, как может быть задано значение операнда В для блока GENERАТЕ по умолчанию. Операнд А равен 10. Поскольку для В предполагается нулевое значение, то интервалы времени распределены равномерно в соответствии с записью 10 - О. Иначе говоря, интервал времени прихода равен в точности 10. Это пример того, как может быть задано детерминированное (т.е. неслучайное) значение интервалов времени.

Теперь мы рассмотрим еще три дополнительных операнда. Они показаны в табл. 1.1.

^ Таблица 1.1. Значения операндов С, D и Е блока GENERАТЕ.

Значения операндов C, D, и E блока GENERATE

Операнд

Значение

Значение по умолчанию

C

Смещение интервалов

Смещение отсутствует

D

Ограничитель

Бесконечность

E

Уровень приоритета

Ноль

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

Когда операнд С не используется, все приходы в блок GENERАТЕ определяются операндами А и В. Операнд В задает гранитное значение общего числа транзактов, которые могут войти в модель через данный блок GENERАТЕ в течение времени моделирования. Когда это число достигнуто, данный блок GENERАТЕ перестанет быть активным. Если не определено граничное значение, блок GENERАТЕ остается активным в течение всего времени моделирования.

Операнд Е устанавливает уровень или класс приоритета каждого из транзактов, входящих в модель через данный блок GENERАТЕ.

Всего при моделировании на GPSS существует 128 различных уровней приоритетов. Эти уровни задают с помощью чисел от О до 127. Чем больше число, тем выше приоритет. Следовательно, наименьшим приоритетом является ноль. Как показано в табл. 1.1, транзакту присваивается именно этот наименьший приоритет, если в блоке GENERАТЕ не используется в явном виде операнд Е.

На рис. 1.4 показаны примеры блоков GENERАТЕ, в которых значения операндов С, В и Е указаны в явном виде. На рис.1.4,а моментом первого прихода является значение 10. После этого интервалы времени прибытия находят из равномерного распределения 3-3, иначе говоря, от О до 6 включительно. Однако только первые пять транзактов должны войти в модель через этот блок GENERАТЕ.



Рис. 1.4.Дополнительные примеры блока GENERATE :

а - с операндами A-D ;

б - с заданными операндами А и С;

в - с заданными значениями операндов А, В и Е.

На рис.1.4,б время первого прибытия задано числом 2.После этого приход новых транзактов будет осуществляться через каждые пять единиц времени.

^ ТЕМА № 2

"Строки, соответствующие блокам GPSS"

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

Таблица 2.1. Поля строк, в которые записывают информацию блоков.

Поля строк, в которые записывают информацию блоков

Колонки строк

Информация блока

2-6

Имя блока

8-18

Операция

19-71

Операнды

Символическое имя (если оно задано) блока нужно заполнять в последовательных колонках, но обязательно между колонками 2 и 6. Операцию блоков записывают, начиная с колонки 8. Операнды заполняют в поле, начинающемся с колонки 19. Операнды следуют один за другим, их отделяют друг от друга запятыми. Между операндами не должно быть пробелов.


Рис. 2.2.Дополнительные примеры блока GENERATE :

а - с операндами A-D ;

б - с заданными операндами А и С;

в - с заданными значениями операндов А, В и Е.

Строка имеет вид, представленный на рис.2.3. Здесь представлены примеры блоков GENERATE, изображенных на рис.2.2,а,б,в. Отметим, что поясняющие комментарии, представленные на рис. 2.3, начинаются (в данном случае) от колонки 34.

LOCATION

 

OPERATION

A,B,C,D,E,F ------------------------>

1

2

3

4

5

6

7

8

9

1 0

1 1

1 2

1 3

1 4

1 5

1 6

1 7

1 8

1 9

2 0

2 1

2 2

2 3

2 4

2 5

2 6

2 7

2 8

2 9

3 0

3 1

3 2

3 3

3 4

3 5

3 6

3 7

3 8

3 9

4 0

4 1

4 2

4 3

4 4

4 5










 

 

 

 

 

 

 

G

E

N

E

R

A

T

E

 

3

,

3

,

1

0

,

5

 

С

Т

Р

О

К

А

 

Д

Л

Я

 

Р

И

С

.

2

.

2

,

а










*

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 










 

S

P

A

W

N

 

G

E

N

E

R

A

T

E

 

5

,

,

2

 

 

 

 

 

С

Т

Р

О

К

А

 

Д

Л

Я

 

Р

И

С

.

2

.

2

,

б










*

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 










 

 

 

 

 

 

 

G

E

N

E

R

A

T

E

 

8

,

1

,

,

,

4

 

 

С

Т

Р

О

К

А

 

Д

Л

Я

 

Р

И

С

.

2

.

2

,

в










Рис. 2.3. Вид строк, соответствующих блокам, представленным на рис. 2.2.

ТЕМА № 3

"Удаление транзактов из модели. Блок ТЕRМINАТЕ (ЗАВЕРШИТЬ)"

Транзакты удаляются из модели, попадая в 6лок ТЕRМINАТЕ (ЗАВЕРШИТЬ). Блоки ТЕRМINАТЕ всегда позволяют выйти всем транзактам, которые пытаются это сделать. В модели может быть любое число блоков ТЕRМINАТЕ.


Рис.3.1. Блок ТЕRМINАТЕ (ЗАВЕРШИТЬ) с операндом А.

На рис. 3.1 изображен блок ТЕRМINАТЕ с операндом А в обычной записи. Операнд А является указателем уменьшения счетчика завершений.Иначе говоря, он задает величину, которая должна вычитаться из специального счетчика, называемого счетчиком завершений, каждый раз, когда транзакт входит в блок ТЕRМINАТЕ. Если разработчик не желает задавать операнд А блока ТЕRМINАТЕ,то по умолчанию подразумевается значение О. Вход транзакта в такой блок ТЕRМINАТЕ не вызывает уменьшения содержания счетчика завершений.

Что же такое счетчик завершений? Эта такая ячейка памяти ЭВМ, которая хранит положительное целое значение, записанное в начале моделирования. В процессе моделирования транзакты попадают в блоки ТЕRМINАТЕ, и таким образом происходит уменьшение содержания счетчика. При достижении содержанием счетчика нуля моделирование завершается.

Обратите внимание на тот факт, что хотя в модели может быть много блоков ТЕRМINАТЕ, счетчик завершений только один. Это и есть тот самый счетчик завершений, из которого происходит вычитание при вхождении транзакта в любой блок ТЕRМINАТЕ. Как уже указывалось, счетчик завершений содержит заданное значение в начале моделирования.

Интерпретатор GPSS начинает моделирование, когда встречается управляющая карта SТАRТ (НАЧАТЬ) в перфокарточном варианте модели. Для определения начального значения счетчика завершения используется операнд А карты SТАRТ (рис. 3.2).

Рис.3.2. Форма карты START (НАЧАТЬ)

LOCATION

 

OPERATION

A,B,C,D,E,F ------------------------>

1

2

3

4

5

6

7

8

9

1 0

1 1

1 2

1 3

1 4

1 5

1 6

1 7

1 8

1 9

2 0

2 1

2 2

2 3

2 4

2 5

2 6

2 7

2 8

2 9

3 0

3 1

3 2

3 3

3 4

3 5

3 6

3 7

3 8
















 

 

 

 

 

S

T

A

R

T

 

A

 

К

А

Р

Т

А

 

S

T

A

R

T

 

С

 

О

П

Е

Р

А

Н

Д

О

М

 

А
















*

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
















 

 

 

 

 

S

T

A

R

T

 

1

 

К

А

Р

Т

А

 

S

T

A

R

T

 

С

 

О

П

Е

Р

А

Н

Д

О

М

 

А
















 

 

 

 

 

 

 

 

 

 

 

 

 

Р

А

В

Н

Ы

М

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
















 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
















Слово ^ SТАRТ записывается в поле операции строки. В нижней части рис. 3.2 показан конкретный пример карты STАRТ, в которой операнд А принимает единичное значение.Рассмотрим теперь пример,в котором блок ТЕRМINАТЕ и карта SТАRТ используются для управления процессом моделирования.

Предположим, что разработчик выбрал в качестве единицы времени 1 мин. Он хочет промоделировать поведение системы в течение 8 ч, затем моделирование должно быть закончено.
Он сможет сделать это следующим образом.

В модель включают сегмент из двух блоков, изображенных на рис. 3.3.


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

Во всех прочих блоках ТЕRМINАТЕ в модели подразумевается использование операнда А по умолчанию. Это означает, что завершение моделирования, определяемое счетчиком завершений, не будет зависеть от других блоков ТЕRМINАТЕ.

В карте ^ SТАRТ в качестве операнда А должна быть использована единица.

Единичное значение операнда А карты SТАRТ вызывает запись в счетчик завершений интерпретатора единицы в качестве начального значения. В процессе моделирования завершения движений транзактов, которые происходят время от времени в других блоках ТЕRMINАТЕ, не оказывают воздействия на счетчик завершений.Следовательно, в момент модельного времени, равный 480, транзакт попадет в блок GЕNЕRАТЕ,изображенный на рис. 3.3. Он сразу же перейдет в следующий блок ТЕRМINАТЕ, вызывая тем самым подпрограмму ТЕRМINАТЕ. Поскольку операнд этого блока содержит единицу, то из счетчика завершений вычитается единица. Это уменьшает значение счетчика от единицы до нуля. В результате интерпретатор прекращает моделирование.

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

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

он вставляет в модель двухблочный сегмент, изображенный на рис. 3.4;


Рис.3.4. Другой вид сегмента из двух блоков, вызывающий завершение моделирования в момент времени, равный 480 ( выполнение двух других условий подразумевается ).

во всех прочих блоках ТЕRМINАТЕ модели подразумевается использование операнда А по умолчанию;

в качестве операнда А карты SТАRТ используется число 480.

Заметим, что в блоке GЕNЕRАТЕ (рис.3.4) в качестве интервала времени задана единица. Иначе говоря, транзакты появляются здесь в моменты времени 1, 2, 3, 4, ... , 478, 479 и 480.Каждый из этих транзактов попадает в последующий блок ТЕRMINАТЕ, где из счетчика завершений вычитается единица при удалении транзакта. Когда в блок ТЕRMINАТЕ войдет 480-й транзакт, значение счетчика завершений уже будет равно единице. 480-й транзакт вызывает уменьшение его от единицы до нуля, и моделирование завершается.

Метод завершения моделирования, представленный в первом примере, является более предпочтительным, хотя в логическом смысле они равнозначны, так как последний пример требует 480 выполнений обработки блоков GENERАТЕ и ТЕRMINАТЕ. Так как обработка каждого блока требует времени ЭВМ, то последний пример по крайней мере в 480 раз дороже предыдущего. При втором способе завершения моделирования интерпретатор GPSS пройдет все фиксированные моменты времени, поскольку таймер должен принимать значения 1, 2, 3, 4, ..., 478, 479 и 480 из-за того, что транзакты входят в модель через блок GENERATE, изображенный на рис.3.4. Это в значительной степени увеличивает число приращений значений времени к таймеру в процессе моделирования, что способствует еще большему увеличению времени моделирования.

^ ТЕМА № 4

"Элементы, символизирующие обслуживающие приборы"

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

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

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

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

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

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

Если приборам присваивают числовые имена, числа должны быть положительными целыми. Наибольшим разрешенным номером является максимальное число приборов, допустимое в модели. Это число зависит от объема памяти, доступной этой модели. Например, в GPSS/360 таким числом приборов при использовании памяти на 64К байт (т. е. 64 000 байт) является 35; при использовании 128К байт - 150; при использовании 256К байт - 300. Следовательно, при моделировании с памятью 64К, наибольший допустимый номер прибора не должен превышать 35. В приложении Р показано допустимое число различных элементов GPSS.

Если приборам присваивают символические имена, то для образования этих имен используют те же правила, что и для составления символических имен блоков. Как было указано ранее, символические имена состоят из трех - пяти алфавитно-цифровых символов, первыми тремя символами должны быть буквы. Примеры составления правильных и неправильных символических и числовых имен приведены в табл. 4.1.

Таблица 4.1. Примеры правильных н неправильных имен приборов

Примеры правильных и неправильных имен приборов

Правильно

Неправильно

GRANE

IT

26

26KEY

CPU

OS

SURVR

-5

1

94528

Было указано, что для того, чтобы символизировать некоторые элементы реальных систем, используется абстрактная концепция транзактов. Такую же концепцию используют и для приборов. Разработчик может установить, например, что прибор 9 символизирует рабочего из мастерской, а прибор, названный CPU, можно использовать для обозначения центрального процессора вычислительной системы, и т.д. Процесс создания аналогий между абстракциями GPSS и их эквивалентами в реальных системах является элементом моделирования на языке GPSS.

^ ТЕМА № 5

"Занятие свобод^ Принципы использования блоков QUЕUЕ и DЕРАRТ
В любых системах массового обслуживания число ресурсов ограничено. Это означает, что не всегда можно немедленно предоставить ресурс при каждом требовании на его использование. В парикмахерской, например, таким ограниченным ресурсом является сам парикмахер. Если он занят в момент прихода клиента, то последний вынужден ждать своей очереди. В действительности, ожидающие обслуживания требования всегда составляют очередь, что дало основание называть такие системы системами с очередями (системами массового обслуживания).

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

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

Ждем своей очереди. Ожидание происходит в течение некоторого интервала времени.

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

Сколько раз требования приходили в очередь?

Сколько пришедших требований фактически присоединилось к очереди и сколько сразу заняли прибор?

Каково было максимальное значение длины очереди?

Каково было среднее число ожидающих требований?

Каково среднее время ожидания тех требований, которым пришлось ждать?

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

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

Регистраторы очередей различают заданием имен. Условия назначения имен те же, что и условия назначения имен приборов. Имена могут быть числовыми или символическими. Если они числовые, то числа должны быть целыми и положительными. Наибольший номер, используемый в модели, должен быть равным максимальному числу регистраторов в модели. (Как и при использовании приборов, максимальное число регистраторов очередей,допустимое при моделировании, зависит от объема используемой памяти.

Максимальное число регистраторов очередей равно (О, 150 и 300 для 64К, 128К и 25бК байт памяти соответственно). Если имя символическое, оно должно содержать от трех до пяти алфавитно-цифровых символов, причем первые три символа должны быть алфавитными.

Разработчик вносит регистратор очереди в модель с помощью пары взаимодополняющих блоков. Такой парой являются блоки, моделирующие упомянутые выше события 1 и 3. Когда транзакт входит в первый из этих блоков, моделируется событие "присоединение к очереди". Подобным образом, когда транзакт входит во второй из них, моделируется событие "уход из очереди". Блоками, соответствующими событиям "присоединение" и "уход", соответственно являются QUEUE (СТАТЬ В ОЧЕРЕДЬ) и DЕРАRТ (ПОКИНУТЬ ОЧЕРЕДЬ). Эти два блока вместе с операндом А показаны на рис. 8.1.

Операнд А используют в блоках QUEUE и DЕРАRТ для указания имени соответствующей очереди. При входе транзакта в блок QUEUE выполняется обработка соответствующей подпрограммы, включающей следующие четыре действия:

"Счетчик входов" для данной очереди увеличивается на единицу.

Запись "счетчика текущего содержимого" для данной очереди также увеличивается на единицу.

Транзакт "привязывается" к очереди указанием ее имени.

Транзакт "привязывается" к очереди с запоминанием значения текущего модельного времени.


Рис. 8.1. Блоки QUEUE (СТАТЬ В ОЧЕРЕДЬ) и DEPART (ПОКИНУТЬ ОЧЕРЕДЬ) с операндами А :

Блоки QUEUE (СТАТЬ В ОЧЕРЕДЬ) и DEPART (ПОКИНУТЬ ОЧЕРЕДЬ) с операндами А:

Операнд

Значение

Значение или результат по умолчанию

А

Имя (символическое или числовое) очереди, к которой необходимо присоединиться или котороую надо покинуть

Ошибка

Когда транзакт присоединяется к очереди, устанавливается факт привязки транзакта. В этом смысле информация, указывающая, что конкретный транзакт является элементом очереди, приписывается самому транзакту. Транзакт перестает быть элементом очереди только тогда, когда он переходит в блок DЕРАRТ соответствующей очереди. Когда это происходит, интерпретатор выполняет подпрограмму обработки блока, включающую следующее:

Запись "счетчика текущего содержимого" соответствующей очереди уменьшается на единицу.

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

Ликвидируется привязка транзакта, ука- зывающая на принадлежность транзакта соответствующей очереди.

В конце моделирования интерпретатор автоматически распечатывает такие элементы статистики, как "счетчик входов", "максимальное содержимое", "среднее значение содержимого" и "счетчик текущего содержимого". Распечатывается также среднее время пребывания в очереди.

Рассмотрим подробнее значение среднего времени пребывания в очереди. Интерпретатор может накапливать эти статистические данные двумя способами. Одним из них является расчет времени пребывания в момент входа каждого из транзактов в блок DЕРАRТ (ПОКИНУТЬ ОЧЕРЕДЬ). На самом деле интерпретатор поступает иначе. Вместо того, чтобы независимо обрабатывать блок DЕРАRТ, интерпретатор отслеживает полное время нахождения в очереди, накопленное до текущего времени, получаемое суммированием значений для всех прошедших и находящихся в очереди транзактов.

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

Фактически интерпретатором рассчитываются два статистических параметра времени нахождения в очереди. Один из них является средним временем по всем входам в очередь. Обычно часть входов в очередь имеет нулевое время пребывания в очереди, т. е. им не приходится ждать. Поэтому интерпретатор также считает и статистику для среднего времени пребывания в очереди, исключая те входы, которые не вызвали ожидания. Это объясняет, для чего транзакту приписывается значение содержимого таймера при входе в блок QUEUE и для чего в блоке DЕРАRТ проверяется, не было ли время ожидания этого транзакта нулевым.

Рассмотрим теперь пример записи пары блоков ^ QUEUE и DЕРАRТ в модели. Рассмотрим снова рисунок примера последовательности ЗАНЯТЬ -ЗАДЕРЖАТЬ-ОСВОБОДИТЬ.

Пример последовательности SЕIZЕ - АDVANСЕ -RЕLЕАSЕ

Ожидание может возникнуть ввиду занятости прибора с именем ^ JОЕ. Предположим, что мы собираем статистику об этом ожидании. В сегмент модели регистратор очереди будет введен блоками QUEUЕ и DЕРАRТ (рис. 8.2). Регистратору очереди присвоено произвольное символическое имя JОЕQ.


Рис.8.2. Добавление сегмента регистратора очереди

Как же работает показанный на рисунке сегмент модели? Положим, что транзакт вошел в этот сегмент в момент, когда прибор ^ JOЕ не занят. Транзакт входит в блок QUEUE, при этом выполняется соответствующая подпрограмма. Модифицируется счетчик входов, содержимое очереди увеличивается на 1, транзакту приписывается время входа в очередь и имя очереди. Далее транзакт тут же пытается войти в блок SEIZЕ. Поскольку прибор JОЕ свободен, эта попытка оказывается успешной.

Выполняется подпрограмма ^ SEIZЕ, и состояние прибора JОЕ изменяется со "свободно" на "занято". Далее транзакт немедленно попадает в блок DЕРАRТ. Выполняется соответствующая подпрограмма, счетчик содержимого очереди уменьшается на 1, и т. д. Продолжая продвижение, транзакт попадает в блок АDVANCE. Вычисляется время задержки в соответствии с распределением 16 ± 4, и транзакт временно прекращает продвижение. Все это происходит в какой-то определенный момент модельного времени. Это означает, что хотя транзакт входит в очередь JОЕQ, время его пребывания в этой очереди равно нулю, т. е. вхождения вызваны тем простым фактом, что блок SEIZЕ располагается между блоками QUEUE и DЕРАRТ. Все транзакты, попадающие на прибор, должны пройти через пару QUEUE - DЕРАRТ, даже если прибор свободен и его можно занять.

Предположим теперь, что прибор ^ JОЕ находится в занятом состоянии, и следующий транзакт входит в сегмент модели рис. 8.2. Проходя блок QUEUE, он модифицирует значения счетчика входов и счетчика текущего содержимого. Ему приписывается имя очереди и значение таймера в момент входа в очередь.

Далее происходит отказ, поскольку прибор ^ JОЕ занят. Транзакт вынужденно перестает продвигаться, оставаясь в блоке QUEUE. Позднее, когда транзакт, находящийся на приборе, покидает его, ожидающий транзакт опять попытается войти в блок SEIZE. На этот раз попытка окажется успешной. Двигаясь дальше, транзакт войдет в блок DЕРАRТ, уменьшая значение счетчика содержимого очереди на 1, и т. д. В описанной ситуации транзакт проходит блоки QUEUE и DEРАRТ в различные моменты модельного времени. Это означает, что имеет место "ненулевое вхождение" в очередь.
^ Использование операнда В в блоках QUEUE и DЕРАRТ.
В блоках QUEUE и DEРАRТ существует возможность использования операнда В. На рис. 8.3 повторен рис. 8.1, но с использованием операнда В. Операнд В указывает на какую величину должен быть модифицирован счетчик содержимого очереди. По умолчанию для этого операнда подразумевается значение 1.


Рис.8.3. Блоки QUEUE и DEPART с операндами А и В:

Блоки QUEUE и DEPART с операндами А и В:

Операнд

Значение

Значение или результат по умолчанию

А

Имя (символическое или числовое) очереди

Ошибка

В

Число элементов, на которое должно измениться значение счетчика содеожимого очереди

Еденица

На рис.8.2 именно это значение и используется. Лучше всего проследить влияние операнда В при рассмотрении поведения интерпретатора во время выполнения подпрограмм блоков QUEUE и DЕРАRТ. При выполнении подпр
еще рефераты
Еще работы по разное