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

Вид материалаДокументы
Использование операнда В в блоках QUEUE и DЕРАRТ.
QUEUE и DЕРАRТ
Некоторые замечания о неверном использовании регистратора очереди
ТЕМА № 9"Описание стандартов для записи примеров моделирования"
Таблица определений.
ТЕМА № 10"Пример моделирования 2А.Система с одним прибором и очередью"
START. Это объясняет, почему карта должна стоять в конце программы-модели (карта 20). Цифра 1 должна быть помещена как операнд А
Подобный материал:
1   2   3   4   5   6   7   8   9   10   11

Использование операнда В в блоках QUEUE и DЕРАRТ.


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


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

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

Операнд

Значение

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

А

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

Ошибка

В

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

Еденица

На рис.8.2 именно это значение и используется. Лучше всего проследить влияние операнда В при рассмотрении поведения интерпретатора во время выполнения подпрограмм блоков QUEUE и DЕРАRТ. При выполнении подпрограммы QUEUE происходит следующее:
  1. Увеличивается значение счетчика входов сооветствующей очереди на число, равное значению операнда В.
  2. Увеличивается значение счетчика содержимого очереди на число, равное значению операнда В.
  3. Транзакту приписывается имя очереди.
  4. Транзакту приписывается текущее значение модельного времени.

Пп. 3 и 4 были пояснены ранее. Пп. 1 и 2 показывают влияние использования операнда В на значение содержимого очереди. Очевидно, что если в блоке QUEUE использован операнд В, отличный от 1, то значение счетчика входов не будет равно числу транзактов, вошедших в этот блок. Подобным образом, содержимое очереди не будет совпадать с числом транзактов, которые привязаны к данной очереди. Например, когда транзакт переходит в блок "QUEUE LINE,2", то и счетчик входов и счетчик содержимого очереди, названной LINЕ, увеличивается на 2, но суммарное число транзактов, присоединившихся к очереди, увеличивается только на 1,и число транзактов, находящихся в очереди, также увеличивается на 1.

Рассмотрим теперь выполнение подпрограммы DЕРАRТ.
  1. Значение счетчика содержимого очереди уменьшается на число, определяемое операндом В.
  2. Используя значение времени, приписанное транзакту при вхождении в блок QUEUE, определяют, является ли данный транзакт транзактом с нулевым вхождением. Если транзакт вызвал нулевое вхождение в очередь, то счетчик нулевых вхождений увеличивается на число, определяемое операндом В блока DЕРАRТ.
  3. Связь транзакта, показывающая принадлежность к данной очереди, разрывается.

Для иллюстрации п. 2 предположим, что транзакт входит в блок "QUEUE QUEUE,5" и что в то же значение модельного времени он проходит в блок "DЕРАRТ QUEUE,5". По определению транзакт вызывает нулевое вхождение в очередь. Следует помнить, что интерпретатор обрабатывает элементы информации очереди в единицах содержимого, а не в транзактах. Следовательно, в этом примере число нулевых вхождений в очередь увеличится на 5, а не на 1.

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

В заключение скажем, что существует однозначное точное соответствие между счетчиком содержимого очереди и числом транзактов, рассматриваемых как элементы очереди только в том случае, если операнд В блоков QUEUE и DЕРАRТ равен 1 (заданный в явном виде или по умолчанию). Необходимость использования операнда В возникает крайне редко, поэтому почти всегда существует точное однозначное соответствие. В этой книге нет случаев возникновения необходимости использования операнда В в блоках QUEUE и DЕРАRТ.

Некоторые замечания о неверном использовании регистратора очереди


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

Первой ошибкой является то, что многие считают, будто регистраторы очереди необходимо использовать в модели всюду, где могут возникать очереди. Часто думают, что если регистратор очереди не записан, то не обеспечивается возможность ожидания обслуживания. Это неверно. Использование регистратора очереди совершенно необязательно. При использовании регистратора интерпретатор собирает статистику об ожидании; если регистратор не используется, статистика не собирается, но всюду, где должно возникать ожидание, оно возникает. Например, на рис. 8.2 независимо от того, находится ли блок SEIZЕ между парой QUEUE - DEPART или нет, транзакт не войдет в блок SEIZЕ, если прибор JОЕ занят. Ожидание является следствием состояния прибора, а не следствием использования регистратора очереди.

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

Для иллюстрации на рис. 8.4 изображена система, в которой в шести различных местах могут возникать очереди. Разработчик модели может принять решение собрать статистику во всех шести местах или не собирать ее вовсе; может принять решение собирать статистику в некоторых из этих мест модели или, например, собирать статистику в точках 2, 4, 5 и 6 и не собирать ее в точках 1 и 3.В данной книге дано много примеров, где в местах возникновения очереди статистика об очереди не собирается. В четвертом и пятом примерах этой главы приведены такие случаи.



Второй общей ошибкой, касающейся использования регистраторов очереди, является мнение, будто транзакт не является элементом очереди, если он не находится в блоке QUEUE. Это неверно. Транзакт просто отмечает факт своего присутствия в очереди входом в блок, где осуществляется привязка к очереди по имени и времени входа в очередь. Независимо от того, остается транзакт в блоке QUEUE или нет, он остается элементом очереди до тех пор, пока не войдет в блок DEРАRТ соответствующей очереди. В зависимости от того, каким образом построена модель, транзакт в общем случае может некоторое время находиться в различных частях модели после того, как он покинет блок QUEUЕ, и прежде, чем он войдет в соответствующий ему блок DEРАRТ.

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

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

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

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

ТЕМА № 9

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


В данном руководстве для иллюстрации различных возможностей GPSS будут рассмотрены примеры моделирования. Ниже указаны элементы описания примеров.
  1. Постановка задачи. Она включает детальное описание задачи. Такое описание достаточно для того, чтобы по нему можно было строить модель и выполнять ее прогоны (т. е. моделировать систему).
  2. Метод построения модели. Здесь описывают и поясняют, каким образом задачу можно интерпретировать в терминах GPSS. Сделана попытка объяснить, почему избран именно такой подход.
  3. Таблица определений. Таблица определений является списком различных элементов GPSS , использованных в модели, с краткой характеристикой тех частей системы, которые описываются этими элементами. В начале этой таблицы записывается принятая в модели единица времени. Затем записывается представление транзактов. Далее в алфавитном порядке описываются все прочие элементы модели и части моделируемой системы.
  4. Блок-схема.В определенном смысле блок-схема и есть модель. Подробная блок-схема может оказаться трудночитаемой. По этой причине рядом с блоком в блок-схеме пишут пояснения (или комментарии). Комментариями являются краткие сведения, указывающие, что моделирует или чем помогает моделированию данный блок.
  5. Распечатка программы. В процессе чтения строк, представляющих собой вариант модели, интерпретатором GPSS выполняются следующие три этапа:
    • присваивается номер каждому блоку модели (т. е. номер его месторасположения);
    • присваивается номер каждой считываемой строке;
    • по каждой строке на печатающем устройстве распечатываются:
      • номер блока (если строка представляет собой блок);
      • информация, находящаяся в полях имени, операции и операндов строки, а также комментарии, если они есть;
      • номер строки ??( номер расположения этой карты в колоде).

Интерпретатор выдает распечатку исходной программы. Поскольку номер блока и номер строки не входят в исходный текст, а добавляются интерпретатором в распечатку, ее можно называть расширенной распечаткой программы.
  1. Выходные данные программы. Распечатка результатов, выдаваемая в процессе моделирования, показывает, чего фактически достиг разработчик своими силами.Она служит основой для обсуждения. Часто представляют лишь части выходных данных. Это сделано для экономии места и для сосредоточения внимания читателя на той части выходных данных, которая для него наиболее интересна. В некоторых случаях вместо непосредственной распечатки просто представляют выводы.
  2. Обсуждение. Сюда входит обсуждение логики моделирования, использования модели и распечатки результатов.

Логика моделирования. Здесь рассматривают особенности блок-схемы и ее соотношение с самой задачей или дают конкретный метод интерпретации задачи в терминах GPSS .

Использование модели. Перфокарточная версия модели содержит карты блоков,а также карты, имеющие прочую информацию. Например, карта SТАRТ, рассмотренная в параграфе 3, должна обязательно быть включена как элемент модели.В блок-схеме не существует блока, который соответствовал бы карте SТАRТ. Есть и другие возможности включения информации, в явном виде не присутствующей в блок-схеме. При необходимости такая информация будет появляться в распечатке программы и будет обсуждена нами.

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

ТЕМА № 10

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


Для установления периода моделирования используется сегмент таймера из двух блоков. На рис.2.10 уже был представлен сегмент, требуемый в нашем случае, в предположении, что единицей времени выбрана 1 мин. Его мы и используем в модели.


Рис.2.10

Логика моделирования. В представленной модели не выполняется никаких дополнительных действий для вывода клиентов из парикмахерской, когда моделирование завершается при значении таймера 480. Если бы в модели был настоящий парикмахер, то он после восьмичасового рабочего дня ушел бы с работы. Если, наоборот, была бы настоящая модель, то моделировалось бы закрытие дверей через 8 ч работы, а моделирование не прерывалось пока все клиенты, находящиеся в парикмахерской в этот момент времени, не были бы обслужены. Как это записывается на GPSS, будет показано дальше.

Использование модели. Бланк, на котором записана перфокарточная версия модели, показан на рис.2А.2, а. Соответствующая ей распечатка программы показана на рис.2А.2, б.

Рис.2A.2. Пример моделирования 2A.
Модель и распечатка программы:
а - заполненный бланк для перфорации модели;
б - распечатка программы для модели, представленной в части а.

На банке показаны поля имени (LOCATION), операции (OPERATION) и операндов (помечено символами А,В,С,D,Е,F,G). На распечатке по- ле имени отмечено символами * LOC.

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

4 6

 

 

 

 

 

S

I

M

U

L

A

T

E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

*

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

*

 

 

 

 

M

O

D

E

L

 

S

E

G

M

E

N

T

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

*

 

 

 

 

G

E

N

E

R

A

T

E

 

1

8

,

6

 

П

Р

И

Х

О

Д

 

К

Л

И

Е

Н

Т

О

В

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Q

U

E

U

E

 

 

 

 

J

O

E

Q

 

П

Р

И

С

О

Е

Д

И

Н

Е

Н

И

Е

 

К

 

О

Ч

Е

Р

Е

Д

И

 

 

 

 

 

 

 

 

 

S

E

I

Z

E

 

 

 

 

J

O

E

 

 

П

Р

И

Х

О

Д

 

В

 

К

Р

Е

С

Л

О

 

П

А

Р

И

К

М

А

Х

Е

Р

А

 

 

 

 

 

D

E

P

A

R

T

 

 

 

J

O

E

Q

 

У

Х

О

Д

 

И

З

 

О

Ч

Е

Р

Е

Д

И

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A

D

V

A

N

C

E

 

 

1

6

,

4

 

О

Б

С

Л

У

Ж

И

В

А

Н

И

Е

 

У

 

П

А

Р

И

К

М

А

Х

Е

Р

А

 

 

 

 

 

 

R

E

L

E

A

S

E

 

 

J

O

E

 

 

О

С

В

О

Б

О

Ж

Д

Е

Н

И

Е

 

П

А

Р

И

К

М

А

Х

Е

Р

А

 

 

 

 

 

 

 

 

T

E

R

M

I

N

A

T

E

 

 

 

 

 

У

Х

О

Д

 

И

З

 

П

А

Р

И

К

М

А

Х

Е

Р

С

К

О

Й

 

 

 

 

 

*

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

*

 

 

 

 

M

O

D

E

L

 

S

E

G

M

E

N

T

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

*

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

G

E

N

E

R

A

T

E

 

4

8

0

,

1

 

Т

А

Й

М

Е

Р

 

П

Р

И

Х

О

Д

И

Т

 

В

 

М

О

М

Е

Н

Т

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В

Р

Е

М

Е

Н

И

,

Р

А

В

Н

Ы

Й

 

4

8

0

 

 

 

 

 

 

 

T

E

R

M

I

N

A

T

E

 

1

 

 

 

 

З

А

В

Е

Р

Ш

Е

Н

И

Е

 

П

Р

О

Г

О

Н

А

 

 

 

 

 

 

 

 

*

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

*

 

 

 

 

C

O

N

T

R

O

L

 

C

A

R

D

S

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

*

 

 

 

 

S

T

A

R

T

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

E

N

D

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 




BLOCK

NUMBER *LOG OPERATION A,B,C,D,E,F,G COMMENTS

SIMULATE

*

* MODEL SEGMENT 2

*

1 GENERATE 460 TIMER ARRIVES AT TIME 460

2 TERMINATE 1 SMUT OFF THE RUN

*

* MODEL SEGMENT 1

*

3 GENERATE 16,6 CUSTOMERS ARRIVE

4 QUEUE JOEQ ENTER THE LINE

5 SEIZE JOE CAPTURE THE BARBER

6 DEPART JOEQ LEAVE THE LINE

7 ADVANCE 16,4 USE THE BARBER

8 RELEASE JOE FREE THE BARBER

9 TERMINATE LEAVE THE SHOP

*

* CONTROL CARDS

*

START 1 START THE RUN

END RETURN CONTROL TO OPERATING SYSTEM

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

Комментарии используют для документации модели.Карты 2,3,4,12,13,14,17,18 и 19 на рис.2А.2, б являются комментариями и не являются частью сегментов модели или управляющими картами. Символ * в первой колонке (см. рис.2А.2, а) указывает на то, что карта является комментарием. Карты-блоки также могут быть прокомментированы в поле операнда. Эти комментарии аналогичны тем, которые были рассмотрены ранее и стояли рядом с блоками на рис.2A.1.

На рис.2А.2,б первой картой является карта SIMULATE (МОДЕЛИРОВАТЬ). Если разработчик намерен выполнить прогон модели, то обычно эта карта стоит в начале колоды. На карте записано одно слово SIMULATE, помещенное в поле операции. Если эта карта отсутствует, то интерпретатор проверяет правильность записи модели на языке GPSS, но прогона модели не выполняет.

Моделирование начинается после того, как интерпретатором в модели найдена карта START. Это объясняет, почему карта должна стоять в конце программы-модели (карта 20). Цифра 1 должна быть помещена как операнд А карты START.

После того, как прогон модели завершен, работа ЭВМ над моделью еще не заканчивается. У разработчика остается много возможностей для продолжения работы. Независимо от того, используются ли эти возможности, существует некоторая точка в модели, перед которой помещены все команды управления прогонами. Здесь должна быть размещена карта END (ЗАКОНЧИТЬ). Эта карта побуждает интерпретатор вернуть управление в операционную систему. Карта END следует после карты START на рис.2А.2, б. Она состоит из слова END, занесенного в поле операции.

Для модели в целом очень важен порядок, в котором располагаются карты сегментов модели, но порядок расположения сегментов безразличен. Например, сегмент таймера может располагаться до основного сегмента на рис.2А.2 без какого-либо влияния на результат моделирования. Распечатка программы в этом случае будет такой, как показано на рис. 2А.4.

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